[h5py] 04/08: Imported Upstream version 2.2.1

Ghislain Vaillant ghisvail-guest at moszumanska.debian.org
Tue Mar 24 19:11:13 UTC 2015


This is an automated email from the git hooks/post-receive script.

ghisvail-guest pushed a commit to branch master
in repository h5py.

commit af39b2ad2bdfef8e60aff3d1b9488725a6a8d44c
Author: Ghislain Antony Vaillant <ghisvail at gmail.com>
Date:   Tue Mar 24 18:39:19 2015 +0000

    Imported Upstream version 2.2.1
---
 ANN.rst                                 |    35 +
 MANIFEST.in                             |    11 +
 PKG-INFO                                |    37 +
 README.rst                              |    81 +
 api_gen.py                              |   198 +
 configure.py                            |   197 +
 examples/multiprocessing_example.py     |   131 +
 examples/threading_example.py           |   312 +
 h5py/__init__.py                        |    81 +
 h5py/_conv.c                            |  6014 +++
 h5py/_conv.pxd                          |    14 +
 h5py/_conv.pyx                          |   637 +
 h5py/_errors.c                          |  3254 ++
 h5py/_errors.pxd                        |   238 +
 h5py/_errors.pyx                        |   175 +
 h5py/_hdf5.pxd                          |   339 +
 h5py/_hl/__init__.py                    |     8 +
 h5py/_hl/attrs.py                       |   180 +
 h5py/_hl/base.py                        |   352 +
 h5py/_hl/dataset.py                     |   625 +
 h5py/_hl/datatype.py                    |    48 +
 h5py/_hl/dims.py                        |   127 +
 h5py/_hl/files.py                       |   244 +
 h5py/_hl/filters.py                     |   304 +
 h5py/_hl/group.py                       |   498 +
 h5py/_hl/selections.py                  |   647 +
 h5py/_hl/selections2.py                 |   114 +
 h5py/_hl/tests/__init__.py              |     8 +
 h5py/_hl/tests/common.py                |   119 +
 h5py/_hl/tests/test_attrs.py            |   156 +
 h5py/_hl/tests/test_attrs_data.py       |   252 +
 h5py/_hl/tests/test_base.py             |    87 +
 h5py/_hl/tests/test_dataset.py          |   856 +
 h5py/_hl/tests/test_datatype.py         |    50 +
 h5py/_hl/tests/test_dimension_scales.py |   197 +
 h5py/_hl/tests/test_file.py             |   525 +
 h5py/_hl/tests/test_group.py            |   869 +
 h5py/_hl/tests/test_selections.py       |   116 +
 h5py/_hl/tests/test_slicing.py          |   322 +
 h5py/_locks.pxi                         |   120 +
 h5py/_objects.c                         |  6678 +++
 h5py/_objects.pxd                       |    30 +
 h5py/_objects.pyx                       |   323 +
 h5py/_proxy.c                           |  4484 ++
 h5py/_proxy.pxd                         |    16 +
 h5py/_proxy.pyx                         |   349 +
 h5py/api_compat.h                       |    35 +
 h5py/api_functions.txt                  |   558 +
 h5py/api_types_ext.pxd                  |    74 +
 h5py/api_types_hdf5.pxd                 |   754 +
 h5py/config.pxi                         |     4 +
 h5py/defs.c                             | 81484 ++++++++++++++++++++++++++++++
 h5py/defs.pxd                           |   338 +
 h5py/defs.pyx                           |  2960 ++
 h5py/h5.c                               |  5480 ++
 h5py/h5.pxd                             |    24 +
 h5py/h5.pyx                             |   150 +
 h5py/h5a.c                              |  7487 +++
 h5py/h5a.pxd                            |    16 +
 h5py/h5a.pyx                            |   437 +
 h5py/h5ac.c                             |  5137 ++
 h5py/h5ac.pxd                           |    13 +
 h5py/h5ac.pyx                           |   187 +
 h5py/h5d.c                              |  6009 +++
 h5py/h5d.pxd                            |    16 +
 h5py/h5d.pyx                            |   338 +
 h5py/h5ds.c                             |  4142 ++
 h5py/h5ds.pxd                           |    10 +
 h5py/h5ds.pyx                           |   128 +
 h5py/h5f.c                              |  6655 +++
 h5py/h5f.pxd                            |    18 +
 h5py/h5f.pyx                            |   429 +
 h5py/h5fd.c                             |  1910 +
 h5py/h5fd.pxd                           |    73 +
 h5py/h5fd.pyx                           |    75 +
 h5py/h5g.c                              |  7629 +++
 h5py/h5g.pxd                            |    19 +
 h5py/h5g.pyx                            |   446 +
 h5py/h5i.c                              |  3566 ++
 h5py/h5i.pxd                            |    14 +
 h5py/h5i.pyx                            |   143 +
 h5py/h5l.c                              |  5584 ++
 h5py/h5l.pxd                            |    16 +
 h5py/h5l.pyx                            |   305 +
 h5py/h5o.c                              |  7518 +++
 h5py/h5o.pxd                            |    11 +
 h5py/h5o.pyx                            |   344 +
 h5py/h5p.c                              | 13550 +++++
 h5py/h5p.pxd                            |    83 +
 h5py/h5p.pyx                            |  1191 +
 h5py/h5r.c                              |  4111 ++
 h5py/h5r.pxd                            |    29 +
 h5py/h5r.pyx                            |   188 +
 h5py/h5s.c                              |  6842 +++
 h5py/h5s.pxd                            |    17 +
 h5py/h5s.pyx                            |   561 +
 h5py/h5t.c                              | 21701 ++++++++
 h5py/h5t.pxd                            |    79 +
 h5py/h5t.pyx                            |  1629 +
 h5py/h5z.c                              |  2210 +
 h5py/h5z.pxd                            |    11 +
 h5py/h5z.pyx                            |   104 +
 h5py/highlevel.py                       |    18 +
 h5py/ipy_completer.py                   |   166 +
 h5py/lowtest/__init__.py                |     8 +
 h5py/lowtest/test_h5.py                 |    48 +
 h5py/lowtest/test_h5f.py                |    72 +
 h5py/lowtest/test_h5p.py                |    91 +
 h5py/lowtest/test_h5t.py                |    36 +
 h5py/lowtest/test_objects.py            |    40 +
 h5py/numpy.pxd                          |   112 +
 h5py/utils.c                            |  4252 ++
 h5py/utils.pxd                          |    39 +
 h5py/utils.pyx                          |   213 +
 h5py/version.py                         |    49 +
 licenses/hdf5.txt                       |    69 +
 licenses/license.txt                    |    34 +
 licenses/pytables.txt                   |    33 +
 licenses/python.txt                     |    45 +
 licenses/stdint.txt                     |    25 +
 lzf/LICENSE.txt                         |    34 +
 lzf/README.txt                          |    84 +
 lzf/example.c                           |   106 +
 lzf/lzf/lzf.h                           |   100 +
 lzf/lzf/lzfP.h                          |   166 +
 lzf/lzf/lzf_c.c                         |   296 +
 lzf/lzf/lzf_d.c                         |   154 +
 lzf/lzf_filter.c                        |   261 +
 lzf/lzf_filter.h                        |    38 +
 setup.py                                |   285 +
 win_include/stdint.h                    |   232 +
 win_include/unistd.h                    |     0
 132 files changed, 240406 insertions(+)

diff --git a/ANN.rst b/ANN.rst
new file mode 100644
index 0000000..d968597
--- /dev/null
+++ b/ANN.rst
@@ -0,0 +1,35 @@
+Announcing HDF5 for Python (h5py) 2.2.1
+=======================================
+
+The h5py team is happy to announce the availability of h5py 2.2.1.  This
+release fixes a critical bug reported by Jim Parker on December 7th, which
+affects code using HDF5 compound types.
+
+We recommend that all users of h5py upgrade to avoid crashes or possible
+data corruption.
+
+
+Scope of bug
+------------
+
+The issue may affect code which modifies HDF5 compound types in-place, by
+specifying a field name or names when writing to a dataset:
+
+>>> dataset['field_name'] = value
+
+Under certain conditions, h5py can supply uninitialized memory to the HDF5
+conversion machinery, leading (in the case reported) to a segmentation fault.
+It is also possible for other fields of the type to be corrupted.
+
+This issue affects only code which updates a subset of the fields in the
+compound type.  Programs reading from a compound type, writing all fields, or
+using other datatypes, are not affected.  If you are using code that takes
+advantage of this feature, please double-check your files to ensure your data
+has not been affected.
+
+
+More information
+----------------
+
+Github issue:  https://github.com/h5py/h5py/issues/372
+Original thread: https://groups.google.com/forum/#!topic/h5py/AbUOZ1MXf3U
diff --git a/MANIFEST.in b/MANIFEST.in
new file mode 100644
index 0000000..dd2de67
--- /dev/null
+++ b/MANIFEST.in
@@ -0,0 +1,11 @@
+recursive-include h5py *.c *.h *.pyx *.pxd *.pxi *.py
+recursive-include examples *.py
+recursive-include lzf *.c *.h *.txt
+recursive-include win_include *.c *.h
+recursive-include licenses *.txt
+include h5py/api_functions.txt
+include MANIFEST.in
+include configure.py
+include api_gen.py
+include ANN.rst
+include README.rst
diff --git a/PKG-INFO b/PKG-INFO
new file mode 100644
index 0000000..b8d44a3
--- /dev/null
+++ b/PKG-INFO
@@ -0,0 +1,37 @@
+Metadata-Version: 1.1
+Name: h5py
+Version: 2.2.1
+Summary: Read and write HDF5 files from Python
+Home-page: http://www.h5py.org
+Author: Andrew Collette
+Author-email: andrew dot collette at gmail dot com
+License: UNKNOWN
+Download-URL: http://code.google.com/p/h5py/downloads/list
+Description: 
+        The h5py package provides both a high- and low-level interface to the HDF5
+        library from Python. The low-level interface is intended to be a complete
+        wrapping of the HDF5 API, while the high-level component supports  access to
+        HDF5 files, datasets and groups using established Python and NumPy concepts.
+        
+        A strong emphasis on automatic conversion between Python (Numpy) datatypes and
+        data structures and their HDF5 equivalents vastly simplifies the process of
+        reading and writing data from Python.
+        
+        Supports HDF5 versions 1.8.3 and higher.  On Windows, HDF5 is included with
+        the installer.
+        
+Platform: UNKNOWN
+Classifier: Development Status :: 5 - Production/Stable
+Classifier: Intended Audience :: Developers
+Classifier: Intended Audience :: Information Technology
+Classifier: Intended Audience :: Science/Research
+Classifier: License :: OSI Approved :: BSD License
+Classifier: Programming Language :: Python
+Classifier: Topic :: Scientific/Engineering
+Classifier: Topic :: Database
+Classifier: Topic :: Software Development :: Libraries :: Python Modules
+Classifier: Operating System :: Unix
+Classifier: Operating System :: POSIX :: Linux
+Classifier: Operating System :: MacOS :: MacOS X
+Classifier: Operating System :: Microsoft :: Windows
+Requires: numpy (>=1.0.1)
diff --git a/README.rst b/README.rst
new file mode 100644
index 0000000..a6e5ee8
--- /dev/null
+++ b/README.rst
@@ -0,0 +1,81 @@
+.. image:: https://travis-ci.org/h5py/h5py.png
+   :target: https://travis-ci.org/h5py/h5py
+
+HDF5 for Python
+===============
+
+Websites
+--------
+
+* Main website: http://www.h5py.org
+* Source code: http://github.com/h5py/h5py
+* Mailing list: h5py at googlegroups
+
+Prerequisites
+-------------
+
+You need, at a minimum:
+
+* HDF5 1.8.3 or later on Linux (On Windows, h5py ships with HDF5)
+* Python 2.6, 2.7, 3.2 or 3.3
+* Any modern version of NumPy
+
+Optionally:
+
+* Cython 0.13 or later, to build from a git checkout
+* If using Python 2.6, unittest2 is needed to run the tests
+
+Installing from release tarball
+-------------------------------
+
+Run the following commands::
+
+   python setup.py build [--hdf5=/path/to/hdf5]
+   python setup.py test   # optional
+   [sudo] python setup.py install
+
+Installing via easy_install
+---------------------------
+
+Run the following commands::
+ 
+   export HDF5_DIR=/path/to/hdf5   # optional
+   [sudo] easy_install h5py
+
+Building from a Git checkout (UNIX)
+-----------------------------------------
+
+We have switched development to GitHub.  Here's how to build
+h5py from source:
+
+1. Clone the project::
+   
+      git clone https://github.com/h5py/h5py.git
+
+2. Build the project (this step also auto-compiles the .c files)::
+  
+      python setup.py build [--hdf5=/path/to/hdf5]
+
+3. Run the unit tests (optional)::
+  
+      python setup.py test
+
+If you add new functions to api_functions.txt, remember to run the script
+api_gen.py to update the Cython interface.  See the developer guide at
+http://www.h5py.org for more information.
+
+Reporting bugs
+--------------
+
+* Bug reports are always welcome at the GitHub tracker.  Please don't be
+  offended if it takes a while to respond to your report... we value user
+  input and take all bugs seriously.
+
+* If you're not sure you have a bug, or want to ask any question at all
+  about h5py or HDF5, post to the mailing list (h5py at Google Groups).
+  This list is read by the main developers of h5py, as well as the user
+  community.  As a bonus, posting to the list means that other people with
+  similar problems can find your question and the responses.
+
+* You're always free to email the author directly at [andrew dot collette
+  at gmail dot com].
diff --git a/api_gen.py b/api_gen.py
new file mode 100644
index 0000000..cec89ed
--- /dev/null
+++ b/api_gen.py
@@ -0,0 +1,198 @@
+import re
+import warnings
+import os.path as op
+
+class BadLineError(Exception):
+    pass
+
+class UnknownCodeError(Exception):
+    pass
+
+
+# The following files are used to talk to the HDF5 api:
+#
+# (1) hdf5.pxd:         HDF5 function signatures    (autogenerated)
+# (2) hdf5_types.pxd:   HDF5 type definitions       (static)
+# (3) defs.pxd:         HDF5 function proxy defs    (autogenerated)
+# (4) defs.pyx:         HDF5 function proxies       (autogenerated)
+
+function_pattern = r'(?P<mpi>(MPI)[ ]+)?(?P<version>([0-9]\.[0-9]\.[0-9]))?([ ]+)?(?P<code>(unsigned[ ]+)?[a-zA-Z_]+[a-zA-Z0-9_]*\**)[ ]+(?P<fname>[a-zA-Z_]+[a-zA-Z0-9_]*)[ ]*\((?P<sig>[a-zA-Z0-9_,* ]*)\)'
+sig_pattern = r'(unsigned[ ]+)?(?:[a-zA-Z_]+[a-zA-Z0-9_]*\**)[ ]+[ *]*(?P<param>[a-zA-Z_]+[a-zA-Z0-9_]*)'
+
+fp = re.compile(function_pattern)
+sp = re.compile(sig_pattern)
+
+raw_preamble = """\
+include "config.pxi"
+from api_types_hdf5 cimport *
+from api_types_ext cimport *
+
+"""
+
+def_preamble = """\
+include "config.pxi"
+
+from api_types_hdf5 cimport *
+from api_types_ext cimport *
+
+"""
+
+imp_preamble = """\
+include "config.pxi"
+from api_types_ext cimport *
+from api_types_hdf5 cimport *
+
+cimport _hdf5
+
+from _errors cimport set_exception
+
+include "_locks.pxi"
+
+rlock = FastRLock()
+"""
+
+class FunctionCruncher2(object):
+
+    def __init__(self, stub=False):
+        self.stub = stub
+
+    def run(self):
+
+        # Function definitions file
+        self.functions = open(op.join('h5py', 'api_functions.txt'), 'r')
+
+        # Create output files
+        self.raw_defs =     open(op.join('h5py', '_hdf5.pxd'), 'w')
+        self.cython_def =   open(op.join('h5py', 'defs.pxd'), 'w')
+        self.cython_imp =   open(op.join('h5py', 'defs.pyx'), 'w')
+
+        self.raw_defs.write(raw_preamble)
+        self.cython_def.write(def_preamble)
+        self.cython_imp.write(imp_preamble)
+
+        for line in self.functions:
+            if not line or line[0] == '#' or line[0] == '\n':
+                continue
+            try:
+                self.handle_line(line)
+            except BadLineError:
+                raise
+                warnings.warn("Skipped <<%s>>" % line)
+
+        self.functions.close()
+        self.cython_imp.close()
+        self.cython_def.close()
+        self.raw_defs.close()
+
+    def handle_line(self, line):
+        """ Parse a function definition line and output the correct code
+        to each of the output files. """
+
+        if line.startswith(' '):
+            line = line.strip()
+            if line.startswith('#'):
+                return
+
+            m = fp.match(line)
+            if m is None:
+                raise BadLineError(
+                    "Signature for line <<%s>> did not match regexp" % line
+                    )
+            function_parts = m.groupdict()
+            if function_parts['mpi'] is not None:
+                function_parts['mpi'] = True
+            if function_parts['version'] is not None:
+                function_parts['version'] = tuple(int(x) for x in function_parts['version'].split('.'))
+
+            self.raw_defs.write('  '+self.make_raw_sig(function_parts))
+            self.cython_def.write(self.make_cython_sig(function_parts))
+            self.cython_imp.write(self.make_cython_imp(function_parts))
+        else:
+            inc = line.split(':')[0]
+            self.raw_defs.write('cdef extern from "%s.h":\n' % inc)
+
+    def add_cython_if(self, function_parts, block):
+        """ Wrap a block of code in the required "IF" checks """
+        def wrapif(condition, code):
+            code = code.replace('\n', '\n    ', code.count('\n')-1) # Yes, -1.
+            code = "IF %s:\n    %s" % (condition, code)
+            return code
+
+        if function_parts['mpi']:
+            block = wrapif('MPI', block)
+        if function_parts['version']:
+            block = wrapif('HDF5_VERSION >= %s' % (function_parts['version'],), block)
+
+        return block
+
+    def make_raw_sig(self, function_parts):
+        """ Build a "cdef extern"-style definition for an HDF5 function """
+
+        raw_sig = "%(code)s %(fname)s(%(sig)s) except *\n" % function_parts
+        raw_sig = self.add_cython_if(function_parts, raw_sig)
+        return raw_sig
+
+    def make_cython_sig(self, function_parts):
+        """ Build Cython signature for wrapper function """
+
+        cython_sig = "cdef %(code)s %(fname)s(%(sig)s) except *\n" % function_parts
+        cython_sig = self.add_cython_if(function_parts, cython_sig)
+        return cython_sig
+
+    def make_cython_imp(self, function_parts, stub=False):
+        """ Build a Cython wrapper implementation. If stub is True, do
+        nothing but call the function and return its value """
+
+        args = sp.findall(function_parts['sig'])
+        if args is None:
+            raise BadLineError("Can't understand function signature <<%s>>" % function_parts['sig'])
+        args = ", ".join(x[1] for x in args)
+
+        # Figure out what conditional to use for the error testing
+        code = function_parts['code']
+        if '*' in code or code in ('H5T_conv_t',):
+            condition = "==NULL"
+            retval = "NULL"
+        elif code in ('int', 'herr_t', 'htri_t', 'hid_t','hssize_t','ssize_t') \
+          or re.match(r'H5[A-Z]+_[a-zA-Z_]+_t',code):
+            condition = "<0"
+            retval = "-1"
+        elif code in ('unsigned int','haddr_t','hsize_t','size_t'):
+            condition = "==0"
+            retval = 0
+        else:
+            raise UnknownCodeError("Return code <<%s>> unknown" % self.code)
+
+        parts = function_parts.copy()
+        parts.update({'condition': condition, 'retval': retval, 'args': args})
+
+        # Have to use except * because Cython can't handle special types here
+        imp = """\
+cdef %(code)s %(fname)s(%(sig)s) except *:
+    cdef %(code)s r
+    with rlock:
+        r = _hdf5.%(fname)s(%(args)s)
+        if r%(condition)s:
+            if set_exception():
+                return <%(code)s>%(retval)s;
+        return r
+
+"""
+
+        stub_imp = """\
+cdef %(code)s %(fname)s(%(sig)s) except *:
+    with rlock:
+        return hdf5.%(fname)s(%(args)s)
+
+"""
+        imp = (stub_imp if self.stub else imp) % parts
+        imp = self.add_cython_if(function_parts, imp)
+        return imp
+
+
+def run(stub=False):
+    fc = FunctionCruncher2(stub)
+    fc.run()
+
+if __name__ == '__main__':
+    run()
diff --git a/configure.py b/configure.py
new file mode 100644
index 0000000..16faecb
--- /dev/null
+++ b/configure.py
@@ -0,0 +1,197 @@
+
+"""
+    Implements discovery of environment vars and command-line "superoptions".
+    
+    Also manages persistence via pickle files.
+
+    Currently defined settings (Key: Value):
+
+    "hdf5": <path to HDF5>
+    "mpi": bool, should we build in mpi mode
+    "hdf5_version": 3-tuple (major, minor, release)
+"""
+
+import os, sys
+
+
+def printerr(what):
+
+    sys.stderr.write(str(what)+'\n')
+    sys.stderr.flush()
+
+
+def loadpickle(name):
+    """ Load object from pickle file, or None if it can't be opened """
+
+    import pickle
+
+    try:
+        f = open(name,'r')
+    except IOError:
+        return None
+    try:
+        return pickle.load(f)
+    except Exception:
+        return None
+    finally:
+        f.close()
+
+
+def savepickle(name, data):
+    """ Save to pickle file, ignoring if it can't be written """
+    import pickle
+    try:
+        f = open(name, 'wb')
+    except IOError:
+        return
+    try:
+        pickle.dump(data, f)
+    finally:
+        f.close()
+
+
+def parse_hdf5_version(vers):
+    """ Split HDF5 version string X.Y.Z into a tuple.  ValueError on failure.
+    """
+
+    try:
+        vers = tuple(int(x) for x in vers.split('.'))
+        if len(vers) != 3:
+            raise ValueError
+    except Exception:
+        raise ValueError("Illegal value for HDF5 version")
+
+    return vers
+
+
+def scrape_eargs():
+    """ Locate settings in environment vars """
+
+    settings = {}
+
+    hdf5 = os.environ.get("HDF5_DIR", '')
+    if hdf5 != '':
+        settings['hdf5'] = hdf5
+
+    api = os.environ.get("HDF5_API", '')
+    if api != '':
+        printerr("HDF5_API environment variable ignored (Support for HDF5 1.6 dropped)")
+
+    vers = os.environ.get("HDF5_VERSION", '')
+    if vers != '':
+        try:
+            vers = parse_hdf5_version(vers)
+        except ValueError:
+            printerr("Invalid format for $HDF5_VERSION (must be X.Y.Z)")
+        else:
+            settings['hdf5_version'] = vers
+
+    return settings
+
+def scrape_cargs():
+    """ Locate settings in command line or pickle file """
+
+    settings = loadpickle('h5py_config.pickle')
+    if settings is None: settings = {}
+
+    for arg in sys.argv[:]:
+
+        if arg.find('--hdf5=') == 0:
+            hdf5 = arg.split('=')[-1]
+            if hdf5.lower() == 'default':
+                settings.pop('hdf5', None)
+            else:
+                settings['hdf5'] = hdf5
+            sys.argv.remove(arg)
+
+        if arg.find('--mpi') == 0:
+            if arg in ('--mpi','--mpi=yes'):
+                settings['mpi'] = True
+            elif arg == '--mpi=no':
+                settings['mpi'] = False
+            else:
+                raise ValueError("Invalid option for --mpi (--mpi or --mpi=[yes|no])")
+            sys.argv.remove(arg)
+
+        if arg.find('--hdf5-version=') == 0:
+            vers = arg.split('=')[-1]
+            if vers.lower() == 'default':
+                settings.pop('hdf5_version', None)
+            else:
+                try:
+                    vers = parse_hdf5_version(vers)
+                    settings['hdf5_version'] = vers
+                except ValueError:
+                    raise ValueError('Illegal option "%s" for --hd5-version (must be "default" or "X.Y.Z")' % vers)
+            sys.argv.remove(arg)
+
+        if arg.find('--api=') == 0:
+            printerr("--api option ignored (Support for HDF5 1.6 dropped)")
+            sys.argv.remove(arg)
+
+    savepickle('h5py_config.pickle', settings)
+    return settings
+
+
+# --- Autodetection of HDF5 library via ctypes --------------------------------
+
+def autodetect(libdirs):
+    """
+    Detect the current version of HDF5, and return it as a tuple
+    (major, minor, release).
+
+    If the version can't be determined, prints error information to stderr
+    and returns None.
+
+    libdirs: list of library paths to search for libhdf5.so.  The first one
+    which can be successfully loaded will be used.
+    """
+
+    import os
+    import sys
+    import os.path as op
+    import re
+    import ctypes
+    from ctypes import byref
+
+    if sys.platform.startswith('win'):
+        regexp = re.compile('^hdf5.dll$')
+    elif sys.platform.startswith('darwin'):
+        regexp = re.compile(r'^libhdf5.dylib')
+    else:
+        regexp = re.compile(r'^libhdf5.so')
+
+    try:
+        path = None
+
+        for d in libdirs:
+            try:
+                candidates = [x for x in os.listdir(d) if regexp.match(x)]
+                if len(candidates) != 0:
+                    candidates.sort(key=lambda x: len(x))   # Prefer libfoo.so to libfoo.so.X.Y.Z
+                    path = op.abspath(op.join(d, candidates[0]))
+            except Exception:
+                pass   # We skip invalid entries, because that's what the C compiler does
+
+        if path is None:
+            path = "libhdf5.so"
+
+        lib = ctypes.cdll.LoadLibrary(path)
+
+        major = ctypes.c_uint()
+        minor = ctypes.c_uint()
+        release = ctypes.c_uint()
+
+        lib.H5get_libversion(byref(major), byref(minor), byref(release))
+
+        vers = (int(major.value), int(minor.value), int(release.value))
+
+        printerr("Autodetected HDF5 version %s" % ".".join(str(x) for x in vers))
+
+        return vers
+
+    except Exception as e:
+
+        printerr(e)
+        return None
+
diff --git a/examples/multiprocessing_example.py b/examples/multiprocessing_example.py
new file mode 100644
index 0000000..fd9bd43
--- /dev/null
+++ b/examples/multiprocessing_example.py
@@ -0,0 +1,131 @@
+# This file is part of h5py, a Python interface to the HDF5 library.
+#
+# http://www.h5py.org
+#
+# Copyright 2008-2013 Andrew Collette and contributors
+#
+# License:  Standard 3-clause BSD; see "license.txt" for full license terms
+#           and contributor agreement.
+
+"""
+    Demonstrates how to use h5py with the multiprocessing module.
+
+    This module implements a simple multi-process program to generate
+    Mandelbrot set images.  It uses a process pool to do the computations,
+    and a single process to save the results to file.
+
+    Importantly, only one process actually reads/writes the HDF5 file.
+    Remember that when a process is fork()ed, the child inherits the HDF5
+    state from its parent, which can be dangerous if you already have a file
+    open.  Trying to interact with the same file on disk from multiple
+    processes results in undefined behavior.
+
+    If matplotlib is available, the program will read from the HDF5 file and
+    display an image of the fractal in a window.  To re-run the calculation,
+    delete the file "mandelbrot.hdf5".
+
+"""
+
+from __future__ import print_function
+
+import numpy as np
+import multiprocessing as mp
+import h5py
+
+# === Parameters for Mandelbrot calculation ===================================
+
+NX = 512
+NY = 512
+ESCAPE = 1000
+
+XSTART = -0.16070135 - 5e-8
+YSTART =  1.0375665 -5e-8
+XEXTENT = 1.0E-7
+YEXTENT = 1.0E-7
+
+xincr = XEXTENT*1.0/NX
+yincr = YEXTENT*1.0/NY
+
+# === Functions to compute set ================================================
+
+def compute_escape(pos):
+    """ Compute the number of steps required to escape from a point on the
+    complex plane """
+    z = 0+0j;
+    for i in xrange(ESCAPE):
+        z = z**2 + pos
+        if abs(z) > 2:
+            break
+    return i
+
+def compute_row(xpos):
+    """ Compute a 1-D array containing escape step counts for each y-position.
+    """
+    a = np.ndarray((NY,), dtype='i')
+    for y in xrange(NY):
+        pos = complex(XSTART,YSTART) + complex(xpos, y*yincr)
+        a[y] = compute_escape(pos)
+    return a
+
+# === Functions to run process pool & visualize ===============================
+
+def run_calculation():
+    """ Begin multi-process calculation, and save to file """
+
+    print("Creating %d-process pool" % mp.cpu_count())
+
+    pool = mp.Pool(mp.cpu_count())
+
+    f = h5py.File('mandelbrot.hdf5','w')
+
+    print("Creating output dataset with shape %s x %s" % (NX, NY))
+
+    dset = f.create_dataset('mandelbrot', (NX,NY), 'i')
+    dset.attrs['XSTART'] = XSTART
+    dset.attrs['YSTART'] = YSTART
+    dset.attrs['XEXTENT'] = XEXTENT
+    dset.attrs['YEXTENT'] = YEXTENT
+    
+    result = pool.imap(compute_row, (x*xincr for x in xrange(NX)))
+
+    for idx, arr in enumerate(result):
+        if idx%25 == 0: print("Recording row %s" % idx)
+        dset[idx] = arr
+
+    print("Closing HDF5 file")
+
+    f.close()
+
+    print("Shutting down process pool")
+
+    pool.close()
+    pool.join()
+
+def visualize_file():
+    """ Open the HDF5 file and display the result """
+    try:
+        import pylab as p
+    except ImportError:
+        print("Whoops! Matplotlib is required to view the fractal.")
+        raise
+
+    f = h5py.File('mandelbrot.hdf5','r')
+    dset = f['mandelbrot']
+    a = dset[...]
+    p.imshow(a.transpose())
+
+    print("Displaying fractal. Close window to exit program.")
+    try:
+        p.show()
+    finally:
+        f.close()
+
+if __name__ == '__main__':
+    if not h5py.is_hdf5('mandelbrot.hdf5'):
+        run_calculation()
+    else:
+        print('Fractal found in "mandelbrot.hdf5". Delete file to re-run calculation.')
+    visualize_file()
+
+
+
diff --git a/examples/threading_example.py b/examples/threading_example.py
new file mode 100644
index 0000000..b081f27
--- /dev/null
+++ b/examples/threading_example.py
@@ -0,0 +1,312 @@
+# This file is part of h5py, a Python interface to the HDF5 library.
+#
+# http://www.h5py.org
+#
+# Copyright 2008-2013 Andrew Collette and contributors
+#
+# License:  Standard 3-clause BSD; see "license.txt" for full license terms
+#           and contributor agreement.
+
+"""
+    Demonstrates use of h5py in a multi-threaded GUI program.
+
+    In a perfect world, multi-threaded programs would practice strict
+    separation of tasks, with separate threads for HDF5, user interface,
+    processing, etc, communicating via queues.  In the real world, shared
+    state is frequently encountered, especially in the world of GUIs.  It's
+    quite common to initialize a shared resource (in this case an HDF5 file),
+    and pass it around between threads.  One must then be careful to regulate
+    access using locks, to ensure that each thread sees the file in a
+    consistent fashion.
+
+    This program demonstrates how to use h5py in a medium-sized
+    "shared-state" threading application.  Two threads exist: a GUI thread
+    (Tkinter) which takes user input and displays results, and a calculation
+    thread which is used to perform computation in the background, leaving
+    the GUI responsive to user input.
+
+    The computation thread calculates portions of the Mandelbrot set and
+    stores them in an HDF5 file.  The visualization/control thread reads
+    datasets from the same file and displays them using matplotlib.
+"""
+
+import Tkinter as tk
+import threading
+
+import numpy as np
+import pylab as p
+from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
+from matplotlib.figure import Figure
+
+import h5py
+
+
+file_lock = threading.RLock()  # Protects the file from concurrent access
+
+t = None  # We'll use this to store the active computation thread
+
+class ComputeThread(threading.Thread):
+
+    """
+        Computes a slice of the Mandelbrot set, and saves it to the HDF5 file.
+    """
+
+    def __init__(self, f, shape, escape, startcoords, extent, eventcall):
+        """ Set up a computation thread.
+
+        f: HDF5 File object
+        shape: 2-tuple (NX, NY)
+        escape: Integer giving max iterations to escape
+        start: Complex number giving initial location on the plane
+        extent: Complex number giving calculation extent on the plane
+        """
+        self.f = f
+        self.shape = shape
+        self.escape = escape
+        self.startcoords = startcoords
+        self.extent = extent
+        self.eventcall = eventcall
+
+        threading.Thread.__init__(self)
+
+    def run(self):
+        """ Perform computations and record the result to file """
+        
+        nx, ny = self.shape
+
+        arr = np.ndarray((nx,ny), dtype='i')
+        
+        xincr = self.extent.real/nx
+        yincr = self.extent.imag/ny
+
+        def compute_escape(pos, escape):
+            """ Compute the number of steps required to escape """
+            z = 0+0j;
+            for i in xrange(escape):
+                z = z**2 + pos
+                if abs(z) > 2:
+                    break
+            return i
+
+        for x in xrange(nx):
+            if x%25 == 0: print "Computing row %d" % x
+            for y in xrange(ny):
+                pos = self.startcoords + complex(x*xincr, y*yincr)
+                arr[x,y] = compute_escape(pos, self.escape)
+
+        with file_lock:
+            dsname = "slice%03d" % len(self.f)
+            dset = self.f.create_dataset(dsname, (nx, ny), 'i')
+            dset.attrs['shape'] = self.shape
+            dset.attrs['start'] = self.startcoords
+            dset.attrs['extent'] = self.extent
+            dset.attrs['escape'] = self.escape
+            dset[...] = arr
+
+        print "Calculation for %s done" % dsname
+
+        self.eventcall()
+
+class ComputeWidget(object):
+
+    """
+        Responsible for input widgets, and starting new computation threads.
+    """
+
+    def __init__(self, f, master, eventcall):
+
+        self.f = f
+
+        self.eventcall = eventcall
+
+        self.mainframe = tk.Frame(master=master)
+
+        entryframe = tk.Frame(master=self.mainframe)
+
+        nxlabel = tk.Label(entryframe, text="NX")
+        nylabel = tk.Label(entryframe, text="NY")
+        escapelabel = tk.Label(entryframe, text="Escape")
+        startxlabel = tk.Label(entryframe, text="Start X")
+        startylabel = tk.Label(entryframe, text="Start Y")
+        extentxlabel = tk.Label(entryframe, text="Extent X")
+        extentylabel = tk.Label(entryframe, text="Extent Y")
+
+        self.nxfield = tk.Entry(entryframe)
+        self.nyfield = tk.Entry(entryframe)
+        self.escapefield = tk.Entry(entryframe)
+        self.startxfield = tk.Entry(entryframe)
+        self.startyfield = tk.Entry(entryframe)
+        self.extentxfield = tk.Entry(entryframe)
+        self.extentyfield = tk.Entry(entryframe)
+        
+        nxlabel.grid(row=0, column=0, sticky=tk.E)
+        nylabel.grid(row=1, column=0, sticky=tk.E)
+        escapelabel.grid(row=2, column=0, sticky=tk.E)
+        startxlabel.grid(row=3, column=0, sticky=tk.E)
+        startylabel.grid(row=4, column=0, sticky=tk.E)
+        extentxlabel.grid(row=5, column=0, sticky=tk.E)
+        extentylabel.grid(row=6, column=0, sticky=tk.E)
+
+        self.nxfield.grid(row=0, column=1)
+        self.nyfield.grid(row=1, column=1)
+        self.escapefield.grid(row=2, column=1)
+        self.startxfield.grid(row=3, column=1)
+        self.startyfield.grid(row=4, column=1)
+        self.extentxfield.grid(row=5, column=1)
+        self.extentyfield.grid(row=6, column=1)
+
+        entryframe.grid(row=0, rowspan=2, column=0)
+
+        self.suggestbutton = tk.Button(master=self.mainframe, text="Suggest", command=self.suggest)
+        self.computebutton = tk.Button(master=self.mainframe, text="Compute", command=self.compute)
+
+        self.suggestbutton.grid(row=0, column=1)
+        self.computebutton.grid(row=1, column=1)
+
+        self.suggest = 0
+
+    def compute(self, *args):
+        """ Validate input and start calculation thread.
+
+        We use a global variable "t" to store the current thread, to make
+        sure old threads are properly joined before they are discarded.
+        """
+        global t
+
+        try:
+            nx = int(self.nxfield.get())
+            ny = int(self.nyfield.get())
+            escape = int(self.escapefield.get())
+            start = complex(float(self.startxfield.get()), float(self.startyfield.get()))
+            extent = complex(float(self.extentxfield.get()), float(self.extentyfield.get()))
+            if (nx<=0) or (nx<=0) or (escape<=0):
+                raise ValueError("NX, NY and ESCAPE must be positive")
+            if abs(extent)==0:
+                raise ValueError("Extent must be finite")
+        except (ValueError, TypeError), e:
+            print e
+            return
+        
+        if t is not None:
+            t.join()
+
+        t = ComputeThread(self.f, (nx,ny), escape, start, extent, self.eventcall)
+        t.start()
+        
+    def suggest(self, *args):
+        """ Populate the input fields with interesting locations """
+
+        suggestions = [(200,200,50, -2, -1, 3, 2),
+                       (500, 500, 200, 0.110, -0.680, 0.05, 0.05),
+                       (200, 200, 1000, -0.16070135-5e-8, 1.0375665-5e-8, 1e-7, 1e-7),
+                       (500, 500, 100, -1, 0, 0.5, 0.5)]
+
+        for entry, val in zip((self.nxfield, self.nyfield, self.escapefield,
+                self.startxfield, self.startyfield, self.extentxfield,
+                self.extentyfield), suggestions[self.suggest]):
+            entry.delete(0, 999)
+            entry.insert(0, repr(val))
+
+        self.suggest = (self.suggest+1)%len(suggestions)
+
+
+class ViewWidget(object):
+
+    """
+        Draws images using the datasets recorded in the HDF5 file.  Also
+        provides widgets to pick which dataset is displayed.
+    """
+
+    def __init__(self, f, master):
+
+        self.f = f
+
+        self.mainframe = tk.Frame(master=master)
+        self.lbutton = tk.Button(self.mainframe, text="<= Back", command=self.back)
+        self.rbutton = tk.Button(self.mainframe, text="Next =>", command=self.forward)
+        self.loclabel = tk.Label(self.mainframe, text='To start, enter values and click "compute"')
+        self.infolabel = tk.Label(self.mainframe, text='Or, click the "suggest" button for interesting locations')
+
+        self.fig = Figure(figsize=(5,5), dpi=100)
+        self.plot = self.fig.add_subplot(111)
+        self.canvas = FigureCanvasTkAgg(self.fig, master=self.mainframe)
+        self.canvas.show()
+
+        self.loclabel.grid(row=0, column=1)
+        self.infolabel.grid(row=1, column=1)
+        self.lbutton.grid(row=2, column=0)
+        self.canvas.get_tk_widget().grid(row=2, column=1)
+        self.rbutton.grid(row=2, column=2)
+
+        self.index = 0
+
+        self.jumptolast()
+
+    def draw_fractal(self):
+        """ Read a dataset from the HDF5 file and display it """
+
+        with file_lock:
+            name = self.f.keys()[self.index]
+            dset = self.f[name]
+            arr = dset[...]
+            start = dset.attrs['start']
+            extent = dset.attrs['extent']
+            self.loclabel["text"] = 'Displaying dataset "%s" (%d of %d)' % (dset.name, self.index+1, len(self.f))
+            self.infolabel["text"] = "%(shape)s pixels, starts at %(start)s, extent %(extent)s" % dset.attrs
+
+        self.plot.clear()
+        self.plot.imshow(arr.transpose(), cmap='jet', aspect='auto', origin='lower',
+                         extent=(start.real, (start.real+extent.real),
+                                 start.imag, (start.imag+extent.imag)))
+        self.canvas.show()
+
+    def back(self):
+        """ Go to the previous dataset (in ASCII order) """
+        if self.index == 0:
+            print "Can't go back"
+            return
+        self.index -= 1
+        self.draw_fractal()
+
+    def forward(self):
+        """ Go to the next dataset (in ASCII order) """
+        if self.index == (len(self.f)-1):
+            print "Can't go forward"
+            return
+        self.index += 1
+        self.draw_fractal()
+
+    def jumptolast(self,*args):
+        """ Jump to the last (ASCII order) dataset and display it """
+        with file_lock:
+            if len(self.f) == 0:
+                print "can't jump to last (no datasets)"
+                return
+            index = len(self.f)-1
+        self.index = index
+        self.draw_fractal()
+
+
+if __name__ == '__main__':
+
+    f = h5py.File('mandelbrot_gui.hdf5','a')
+
+    root = tk.Tk()
+
+    display = ViewWidget(f, root)
+
+    root.bind("<<FractalEvent>>", display.jumptolast)
+    def callback():
+        root.event_generate("<<FractalEvent>>")
+    compute = ComputeWidget(f, root, callback)
+
+    display.mainframe.grid(row=0, column=0)
+    compute.mainframe.grid(row=1, column=0)
+
+    try:
+        root.mainloop()
+    finally:
+        if t is not None:
+            t.join()
+        f.close()
+
diff --git a/h5py/__init__.py b/h5py/__init__.py
new file mode 100644
index 0000000..59bbf47
--- /dev/null
+++ b/h5py/__init__.py
@@ -0,0 +1,81 @@
+# This file is part of h5py, a Python interface to the HDF5 library.
+#
+# http://www.h5py.org
+#
+# Copyright 2008-2013 Andrew Collette and contributors
+#
+# License:  Standard 3-clause BSD; see "license.txt" for full license terms
+#           and contributor agreement.
+
+from h5py import _errors
+_errors.silence_errors()
+
+from h5py import _conv
+_conv.register_converters()
+
+from h5py import h5a, h5d, h5ds, h5f, h5fd, h5g, h5r, h5s, h5t, h5p, h5z
+
+h5s.NULL = h5s._NULL  # NULL is a reserved name at the Cython layer
+h5z._register_lzf()
+
+from h5py.highlevel import *
+
+from h5py.h5 import get_config
+from h5py.h5r import Reference, RegionReference
+from h5py.h5t import special_dtype, check_dtype
+
+# Deprecated functions
+from h5py.h5t import py_new_vlen as new_vlen
+from h5py.h5t import py_get_vlen as get_vlen
+from h5py.h5t import py_new_enum as new_enum
+from h5py.h5t import py_get_enum as get_enum
+
+from h5py import version
+
+__version__ = version.version
+
+__doc__ = \
+"""
+    This is the h5py package, a Python interface to the HDF5
+    scientific data format.
+
+    Version %s
+
+    HDF5 %s
+""" % (version.version, version.hdf5_version)
+
+
+def enable_ipython_completer():
+    import sys
+    if 'IPython' in sys.modules:
+        ip_running = False
+        try:
+            from IPython.core.interactiveshell import InteractiveShell
+            ip_running = InteractiveShell.initialized()
+        except ImportError:
+            # support <ipython-0.11
+            from IPython import ipapi as _ipapi
+            ip_running = _ipapi.get() is not None
+        except Exception:
+            pass
+        if ip_running:
+            from . import ipy_completer
+            return ipy_completer.load_ipython_extension()
+
+    raise RuntimeError('completer must be enabled in active ipython session')
+
+def run_tests(verbosity=1):
+    import sys
+    py_version = sys.version_info[:2]
+    if py_version == (2,7) or py_version >= (3,2):
+        import unittest
+    else:
+        try:
+            import unittest2 as unittest
+        except ImportError:
+            raise ImportError(
+                "unittest2 is required to run tests with python-%d.%d"
+                % py_version
+                )
+    suite = unittest.TestLoader().discover('h5py')
+    result = unittest.TextTestRunner(verbosity=verbosity).run(suite)
diff --git a/h5py/_conv.c b/h5py/_conv.c
new file mode 100644
index 0000000..2d43d56
--- /dev/null
+++ b/h5py/_conv.c
@@ -0,0 +1,6014 @@
+/* Generated by Cython 0.18 on Mon Dec  9 16:00:33 2013 */
+
+#define PY_SSIZE_T_CLEAN
+#include "Python.h"
+#ifndef Py_PYTHON_H
+    #error Python headers needed to compile C extensions, please install development version of Python.
+#elif PY_VERSION_HEX < 0x02040000
+    #error Cython requires Python 2.4+.
+#else
+#include <stddef.h> /* For offsetof */
+#ifndef offsetof
+#define offsetof(type, member) ( (size_t) & ((type*)0) -> member )
+#endif
+#if !defined(WIN32) && !defined(MS_WINDOWS)
+  #ifndef __stdcall
+    #define __stdcall
+  #endif
+  #ifndef __cdecl
+    #define __cdecl
+  #endif
+  #ifndef __fastcall
+    #define __fastcall
+  #endif
+#endif
+#ifndef DL_IMPORT
+  #define DL_IMPORT(t) t
+#endif
+#ifndef DL_EXPORT
+  #define DL_EXPORT(t) t
+#endif
+#ifndef PY_LONG_LONG
+  #define PY_LONG_LONG LONG_LONG
+#endif
+#ifndef Py_HUGE_VAL
+  #define Py_HUGE_VAL HUGE_VAL
+#endif
+#ifdef PYPY_VERSION
+#define CYTHON_COMPILING_IN_PYPY 1
+#define CYTHON_COMPILING_IN_CPYTHON 0
+#else
+#define CYTHON_COMPILING_IN_PYPY 0
+#define CYTHON_COMPILING_IN_CPYTHON 1
+#endif
+#if PY_VERSION_HEX < 0x02050000
+  typedef int Py_ssize_t;
+  #define PY_SSIZE_T_MAX INT_MAX
+  #define PY_SSIZE_T_MIN INT_MIN
+  #define PY_FORMAT_SIZE_T ""
+  #define CYTHON_FORMAT_SSIZE_T ""
+  #define PyInt_FromSsize_t(z) PyInt_FromLong(z)
+  #define PyInt_AsSsize_t(o)   __Pyx_PyInt_AsInt(o)
+  #define PyNumber_Index(o)    ((PyNumber_Check(o) && !PyFloat_Check(o)) ? PyNumber_Int(o) : \
+                                (PyErr_Format(PyExc_TypeError, \
+                                              "expected index value, got %.200s", Py_TYPE(o)->tp_name), \
+                                 (PyObject*)0))
+  #define __Pyx_PyIndex_Check(o) (PyNumber_Check(o) && !PyFloat_Check(o) && \
+                                  !PyComplex_Check(o))
+  #define PyIndex_Check __Pyx_PyIndex_Check
+  #define PyErr_WarnEx(category, message, stacklevel) PyErr_Warn(category, message)
+  #define __PYX_BUILD_PY_SSIZE_T "i"
+#else
+  #define __PYX_BUILD_PY_SSIZE_T "n"
+  #define CYTHON_FORMAT_SSIZE_T "z"
+  #define __Pyx_PyIndex_Check PyIndex_Check
+#endif
+#if PY_VERSION_HEX < 0x02060000
+  #define Py_REFCNT(ob) (((PyObject*)(ob))->ob_refcnt)
+  #define Py_TYPE(ob)   (((PyObject*)(ob))->ob_type)
+  #define Py_SIZE(ob)   (((PyVarObject*)(ob))->ob_size)
+  #define PyVarObject_HEAD_INIT(type, size) \
+          PyObject_HEAD_INIT(type) size,
+  #define PyType_Modified(t)
+  typedef struct {
+     void *buf;
+     PyObject *obj;
+     Py_ssize_t len;
+     Py_ssize_t itemsize;
+     int readonly;
+     int ndim;
+     char *format;
+     Py_ssize_t *shape;
+     Py_ssize_t *strides;
+     Py_ssize_t *suboffsets;
+     void *internal;
+  } Py_buffer;
+  #define PyBUF_SIMPLE 0
+  #define PyBUF_WRITABLE 0x0001
+  #define PyBUF_FORMAT 0x0004
+  #define PyBUF_ND 0x0008
+  #define PyBUF_STRIDES (0x0010 | PyBUF_ND)
+  #define PyBUF_C_CONTIGUOUS (0x0020 | PyBUF_STRIDES)
+  #define PyBUF_F_CONTIGUOUS (0x0040 | PyBUF_STRIDES)
+  #define PyBUF_ANY_CONTIGUOUS (0x0080 | PyBUF_STRIDES)
+  #define PyBUF_INDIRECT (0x0100 | PyBUF_STRIDES)
+  #define PyBUF_RECORDS (PyBUF_STRIDES | PyBUF_FORMAT | PyBUF_WRITABLE)
+  #define PyBUF_FULL (PyBUF_INDIRECT | PyBUF_FORMAT | PyBUF_WRITABLE)
+  typedef int (*getbufferproc)(PyObject *, Py_buffer *, int);
+  typedef void (*releasebufferproc)(PyObject *, Py_buffer *);
+#endif
+#if PY_MAJOR_VERSION < 3
+  #define __Pyx_BUILTIN_MODULE_NAME "__builtin__"
+  #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) \
+          PyCode_New(a, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
+#else
+  #define __Pyx_BUILTIN_MODULE_NAME "builtins"
+  #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) \
+          PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
+#endif
+#if PY_MAJOR_VERSION < 3 && PY_MINOR_VERSION < 6
+  #define PyUnicode_FromString(s) PyUnicode_Decode(s, strlen(s), "UTF-8", "strict")
+#endif
+#if PY_MAJOR_VERSION >= 3
+  #define Py_TPFLAGS_CHECKTYPES 0
+  #define Py_TPFLAGS_HAVE_INDEX 0
+#endif
+#if (PY_VERSION_HEX < 0x02060000) || (PY_MAJOR_VERSION >= 3)
+  #define Py_TPFLAGS_HAVE_NEWBUFFER 0
+#endif
+#if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND)
+  #define CYTHON_PEP393_ENABLED 1
+  #define __Pyx_PyUnicode_READY(op)       (likely(PyUnicode_IS_READY(op)) ? \
+                                              0 : _PyUnicode_Ready((PyObject *)(op)))
+  #define __Pyx_PyUnicode_GET_LENGTH(u)   PyUnicode_GET_LENGTH(u)
+  #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i)
+  #define __Pyx_PyUnicode_READ(k, d, i)   PyUnicode_READ(k, d, i)
+#else
+  #define CYTHON_PEP393_ENABLED 0
+  #define __Pyx_PyUnicode_READY(op)       (0)
+  #define __Pyx_PyUnicode_GET_LENGTH(u)   PyUnicode_GET_SIZE(u)
+  #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i]))
+  #define __Pyx_PyUnicode_READ(k, d, i)   ((k=k), (Py_UCS4)(((Py_UNICODE*)d)[i]))
+#endif
+#if PY_MAJOR_VERSION >= 3
+  #define PyBaseString_Type            PyUnicode_Type
+  #define PyStringObject               PyUnicodeObject
+  #define PyString_Type                PyUnicode_Type
+  #define PyString_Check               PyUnicode_Check
+  #define PyString_CheckExact          PyUnicode_CheckExact
+#endif
+#if PY_VERSION_HEX < 0x02060000
+  #define PyBytesObject                PyStringObject
+  #define PyBytes_Type                 PyString_Type
+  #define PyBytes_Check                PyString_Check
+  #define PyBytes_CheckExact           PyString_CheckExact
+  #define PyBytes_FromString           PyString_FromString
+  #define PyBytes_FromStringAndSize    PyString_FromStringAndSize
+  #define PyBytes_FromFormat           PyString_FromFormat
+  #define PyBytes_DecodeEscape         PyString_DecodeEscape
+  #define PyBytes_AsString             PyString_AsString
+  #define PyBytes_AsStringAndSize      PyString_AsStringAndSize
+  #define PyBytes_Size                 PyString_Size
+  #define PyBytes_AS_STRING            PyString_AS_STRING
+  #define PyBytes_GET_SIZE             PyString_GET_SIZE
+  #define PyBytes_Repr                 PyString_Repr
+  #define PyBytes_Concat               PyString_Concat
+  #define PyBytes_ConcatAndDel         PyString_ConcatAndDel
+#endif
+#if PY_VERSION_HEX < 0x02060000
+  #define PySet_Check(obj)             PyObject_TypeCheck(obj, &PySet_Type)
+  #define PyFrozenSet_Check(obj)       PyObject_TypeCheck(obj, &PyFrozenSet_Type)
+#endif
+#ifndef PySet_CheckExact
+  #define PySet_CheckExact(obj)        (Py_TYPE(obj) == &PySet_Type)
+#endif
+#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type)
+#if PY_MAJOR_VERSION >= 3
+  #define PyIntObject                  PyLongObject
+  #define PyInt_Type                   PyLong_Type
+  #define PyInt_Check(op)              PyLong_Check(op)
+  #define PyInt_CheckExact(op)         PyLong_CheckExact(op)
+  #define PyInt_FromString             PyLong_FromString
+  #define PyInt_FromUnicode            PyLong_FromUnicode
+  #define PyInt_FromLong               PyLong_FromLong
+  #define PyInt_FromSize_t             PyLong_FromSize_t
+  #define PyInt_FromSsize_t            PyLong_FromSsize_t
+  #define PyInt_AsLong                 PyLong_AsLong
+  #define PyInt_AS_LONG                PyLong_AS_LONG
+  #define PyInt_AsSsize_t              PyLong_AsSsize_t
+  #define PyInt_AsUnsignedLongMask     PyLong_AsUnsignedLongMask
+  #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask
+#endif
+#if PY_MAJOR_VERSION >= 3
+  #define PyBoolObject                 PyLongObject
+#endif
+#if PY_VERSION_HEX < 0x03020000
+  typedef long Py_hash_t;
+  #define __Pyx_PyInt_FromHash_t PyInt_FromLong
+  #define __Pyx_PyInt_AsHash_t   PyInt_AsLong
+#else
+  #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t
+  #define __Pyx_PyInt_AsHash_t   PyInt_AsSsize_t
+#endif
+#if (PY_MAJOR_VERSION < 3) || (PY_VERSION_HEX >= 0x03010300)
+  #define __Pyx_PySequence_GetSlice(obj, a, b) PySequence_GetSlice(obj, a, b)
+  #define __Pyx_PySequence_SetSlice(obj, a, b, value) PySequence_SetSlice(obj, a, b, value)
+  #define __Pyx_PySequence_DelSlice(obj, a, b) PySequence_DelSlice(obj, a, b)
+#else
+  #define __Pyx_PySequence_GetSlice(obj, a, b) (unlikely(!(obj)) ? \
+        (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), (PyObject*)0) : \
+        (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_GetSlice(obj, a, b)) : \
+            (PyErr_Format(PyExc_TypeError, "'%.200s' object is unsliceable", (obj)->ob_type->tp_name), (PyObject*)0)))
+  #define __Pyx_PySequence_SetSlice(obj, a, b, value) (unlikely(!(obj)) ? \
+        (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), -1) : \
+        (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_SetSlice(obj, a, b, value)) : \
+            (PyErr_Format(PyExc_TypeError, "'%.200s' object doesn't support slice assignment", (obj)->ob_type->tp_name), -1)))
+  #define __Pyx_PySequence_DelSlice(obj, a, b) (unlikely(!(obj)) ? \
+        (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), -1) : \
+        (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_DelSlice(obj, a, b)) : \
+            (PyErr_Format(PyExc_TypeError, "'%.200s' object doesn't support slice deletion", (obj)->ob_type->tp_name), -1)))
+#endif
+#if PY_MAJOR_VERSION >= 3
+  #define PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, self) : PyInstanceMethod_New(func))
+#endif
+#if PY_VERSION_HEX < 0x02050000
+  #define __Pyx_GetAttrString(o,n)   PyObject_GetAttrString((o),((char *)(n)))
+  #define __Pyx_SetAttrString(o,n,a) PyObject_SetAttrString((o),((char *)(n)),(a))
+  #define __Pyx_DelAttrString(o,n)   PyObject_DelAttrString((o),((char *)(n)))
+#else
+  #define __Pyx_GetAttrString(o,n)   PyObject_GetAttrString((o),(n))
+  #define __Pyx_SetAttrString(o,n,a) PyObject_SetAttrString((o),(n),(a))
+  #define __Pyx_DelAttrString(o,n)   PyObject_DelAttrString((o),(n))
+#endif
+#if PY_VERSION_HEX < 0x02050000
+  #define __Pyx_NAMESTR(n) ((char *)(n))
+  #define __Pyx_DOCSTR(n)  ((char *)(n))
+#else
+  #define __Pyx_NAMESTR(n) (n)
+  #define __Pyx_DOCSTR(n)  (n)
+#endif
+
+
+#if PY_MAJOR_VERSION >= 3
+  #define __Pyx_PyNumber_Divide(x,y)         PyNumber_TrueDivide(x,y)
+  #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceTrueDivide(x,y)
+#else
+  #define __Pyx_PyNumber_Divide(x,y)         PyNumber_Divide(x,y)
+  #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceDivide(x,y)
+#endif
+
+#ifndef __PYX_EXTERN_C
+  #ifdef __cplusplus
+    #define __PYX_EXTERN_C extern "C"
+  #else
+    #define __PYX_EXTERN_C extern
+  #endif
+#endif
+
+#if defined(WIN32) || defined(MS_WINDOWS)
+#define _USE_MATH_DEFINES
+#endif
+#include <math.h>
+#define __PYX_HAVE__h5py___conv
+#define __PYX_HAVE_API__h5py___conv
+#include "stdlib.h"
+#include "string.h"
+#include "time.h"
+#include "unistd.h"
+#include "stdint.h"
+#include "api_compat.h"
+#include "lzf_filter.h"
+#include "hdf5.h"
+#include "H5Cpublic.h"
+#include "hdf5_hl.h"
+#ifdef _OPENMP
+#include <omp.h>
+#endif /* _OPENMP */
+
+#ifdef PYREX_WITHOUT_ASSERTIONS
+#define CYTHON_WITHOUT_ASSERTIONS
+#endif
+
+#ifndef CYTHON_INLINE
+  #if defined(__GNUC__)
+    #define CYTHON_INLINE __inline__
+  #elif defined(_MSC_VER)
+    #define CYTHON_INLINE __inline
+  #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+    #define CYTHON_INLINE inline
+  #else
+    #define CYTHON_INLINE
+  #endif
+#endif
+#ifndef CYTHON_UNUSED
+# if defined(__GNUC__)
+#   if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
+#     define CYTHON_UNUSED __attribute__ ((__unused__))
+#   else
+#     define CYTHON_UNUSED
+#   endif
+# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER))
+#   define CYTHON_UNUSED __attribute__ ((__unused__))
+# else
+#   define CYTHON_UNUSED
+# endif
+#endif
+typedef struct {PyObject **p; char *s; const long n; const char* encoding; const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; /*proto*/
+
+#define __Pyx_PyBytes_FromUString(s) PyBytes_FromString((char*)s)
+#define __Pyx_PyBytes_AsUString(s)   ((unsigned char*) PyBytes_AsString(s))
+#define __Pyx_Owned_Py_None(b) (Py_INCREF(Py_None), Py_None)
+#define __Pyx_PyBool_FromLong(b) ((b) ? (Py_INCREF(Py_True), Py_True) : (Py_INCREF(Py_False), Py_False))
+static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*);
+static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x);
+static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*);
+static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t);
+static CYTHON_INLINE size_t __Pyx_PyInt_AsSize_t(PyObject*);
+#if CYTHON_COMPILING_IN_CPYTHON
+#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x))
+#else
+#define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x)
+#endif
+#define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x))
+
+
+#ifdef __GNUC__
+  /* Test for GCC > 2.95 */
+  #if __GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))
+    #define likely(x)   __builtin_expect(!!(x), 1)
+    #define unlikely(x) __builtin_expect(!!(x), 0)
+  #else /* __GNUC__ > 2 ... */
+    #define likely(x)   (x)
+    #define unlikely(x) (x)
+  #endif /* __GNUC__ > 2 ... */
+#else /* __GNUC__ */
+  #define likely(x)   (x)
+  #define unlikely(x) (x)
+#endif /* __GNUC__ */
+    
+static PyObject *__pyx_m;
+static PyObject *__pyx_b;
+static PyObject *__pyx_empty_tuple;
+static PyObject *__pyx_empty_bytes;
+static int __pyx_lineno;
+static int __pyx_clineno = 0;
+static const char * __pyx_cfilenm= __FILE__;
+static const char *__pyx_filename;
+
+
+static const char *__pyx_f[] = {
+  "_conv.pyx",
+  "h5r.pxd",
+};
+
+/*--- Type declarations ---*/
+struct __pyx_obj_4h5py_3h5r_Reference;
+struct __pyx_obj_4h5py_3h5r_RegionReference;
+union __pyx_t_4h5py_3h5r_ref_u;
+
+/* "h5r.pxd":17
+ *   ctypedef unsigned char hdset_reg_ref_t[12]
+ * 
+ * cdef union ref_u:             # <<<<<<<<<<<<<<
+ *     hobj_ref_t         obj_ref
+ *     hdset_reg_ref_t    reg_ref
+ */
+union __pyx_t_4h5py_3h5r_ref_u {
+  hobj_ref_t obj_ref;
+  hdset_reg_ref_t reg_ref;
+};
+struct __pyx_t_4h5py_5_conv_conv_size_t;
+typedef struct __pyx_t_4h5py_5_conv_conv_size_t __pyx_t_4h5py_5_conv_conv_size_t;
+struct __pyx_t_4h5py_5_conv_conv_enum_t;
+
+/* "h5py/_conv.pyx":60
+ *     return H5PY_OBJ
+ * 
+ * ctypedef int (*conv_operator_t)(void* ipt, void* opt, void* bkg, void* priv) except -1             # <<<<<<<<<<<<<<
+ * ctypedef herr_t (*init_operator_t)(hid_t src, hid_t dst, void** priv) except -1
+ * 
+ */
+typedef int (*__pyx_t_4h5py_5_conv_conv_operator_t)(void *, void *, void *, void *);
+
+/* "h5py/_conv.pyx":61
+ * 
+ * ctypedef int (*conv_operator_t)(void* ipt, void* opt, void* bkg, void* priv) except -1
+ * ctypedef herr_t (*init_operator_t)(hid_t src, hid_t dst, void** priv) except -1             # <<<<<<<<<<<<<<
+ * 
+ * # Generic conversion callback
+ */
+typedef herr_t (*__pyx_t_4h5py_5_conv_init_operator_t)(hid_t, hid_t, void **);
+
+/* "h5py/_conv.pyx":140
+ * # Generic conversion
+ * 
+ * ctypedef struct conv_size_t:             # <<<<<<<<<<<<<<
+ *     size_t src_size
+ *     size_t dst_size
+ */
+struct __pyx_t_4h5py_5_conv_conv_size_t {
+  size_t src_size;
+  size_t dst_size;
+  int cset;
+};
+
+/* "h5py/_conv.pyx":468
+ * # Enum to integer converter
+ * 
+ * cdef struct conv_enum_t:             # <<<<<<<<<<<<<<
+ *     size_t src_size
+ *     size_t dst_size
+ */
+struct __pyx_t_4h5py_5_conv_conv_enum_t {
+  size_t src_size;
+  size_t dst_size;
+  hid_t supertype;
+  int identical;
+};
+
+/* "h5r.pxd":21
+ *     hdset_reg_ref_t    reg_ref
+ * 
+ * cdef class Reference:             # <<<<<<<<<<<<<<
+ * 
+ *     cdef ref_u ref
+ */
+struct __pyx_obj_4h5py_3h5r_Reference {
+  PyObject_HEAD
+  union __pyx_t_4h5py_3h5r_ref_u ref;
+  int typecode;
+  size_t typesize;
+};
+
+
+/* "h5r.pxd":27
+ *     cdef readonly size_t typesize
+ * 
+ * cdef class RegionReference(Reference):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+struct __pyx_obj_4h5py_3h5r_RegionReference {
+  struct __pyx_obj_4h5py_3h5r_Reference __pyx_base;
+};
+
+#ifndef CYTHON_REFNANNY
+  #define CYTHON_REFNANNY 0
+#endif
+#if CYTHON_REFNANNY
+  typedef struct {
+    void (*INCREF)(void*, PyObject*, int);
+    void (*DECREF)(void*, PyObject*, int);
+    void (*GOTREF)(void*, PyObject*, int);
+    void (*GIVEREF)(void*, PyObject*, int);
+    void* (*SetupContext)(const char*, int, const char*);
+    void (*FinishContext)(void**);
+  } __Pyx_RefNannyAPIStruct;
+  static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL;
+  static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); /*proto*/
+  #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL;
+#ifdef WITH_THREAD
+  #define __Pyx_RefNannySetupContext(name, acquire_gil) \
+          if (acquire_gil) { \
+              PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); \
+              __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__); \
+              PyGILState_Release(__pyx_gilstate_save); \
+          } else { \
+              __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__); \
+          }
+#else
+  #define __Pyx_RefNannySetupContext(name, acquire_gil) \
+          __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__)
+#endif
+  #define __Pyx_RefNannyFinishContext() \
+          __Pyx_RefNanny->FinishContext(&__pyx_refnanny)
+  #define __Pyx_INCREF(r)  __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_DECREF(r)  __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_GOTREF(r)  __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_XINCREF(r)  do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0)
+  #define __Pyx_XDECREF(r)  do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0)
+  #define __Pyx_XGOTREF(r)  do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0)
+  #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0)
+#else
+  #define __Pyx_RefNannyDeclarations
+  #define __Pyx_RefNannySetupContext(name, acquire_gil)
+  #define __Pyx_RefNannyFinishContext()
+  #define __Pyx_INCREF(r) Py_INCREF(r)
+  #define __Pyx_DECREF(r) Py_DECREF(r)
+  #define __Pyx_GOTREF(r)
+  #define __Pyx_GIVEREF(r)
+  #define __Pyx_XINCREF(r) Py_XINCREF(r)
+  #define __Pyx_XDECREF(r) Py_XDECREF(r)
+  #define __Pyx_XGOTREF(r)
+  #define __Pyx_XGIVEREF(r)
+#endif /* CYTHON_REFNANNY */
+#define __Pyx_CLEAR(r)    do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0)
+#define __Pyx_XCLEAR(r)   do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0)
+
+static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name); /*proto*/
+
+static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb); /*proto*/
+
+static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb); /*proto*/
+static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb); /*proto*/
+
+static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause); /*proto*/
+
+#ifndef __PYX_FORCE_INIT_THREADS
+  #define __PYX_FORCE_INIT_THREADS 0
+#endif
+
+static CYTHON_INLINE void __Pyx_ExceptionSave(PyObject **type, PyObject **value, PyObject **tb); /*proto*/
+static void __Pyx_ExceptionReset(PyObject *type, PyObject *value, PyObject *tb); /*proto*/
+
+static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_hid_t(hid_t);
+
+static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_htri_t(htri_t);
+
+static CYTHON_INLINE unsigned char __Pyx_PyInt_AsUnsignedChar(PyObject *);
+
+static CYTHON_INLINE unsigned short __Pyx_PyInt_AsUnsignedShort(PyObject *);
+
+static CYTHON_INLINE unsigned int __Pyx_PyInt_AsUnsignedInt(PyObject *);
+
+static CYTHON_INLINE char __Pyx_PyInt_AsChar(PyObject *);
+
+static CYTHON_INLINE short __Pyx_PyInt_AsShort(PyObject *);
+
+static CYTHON_INLINE int __Pyx_PyInt_AsInt(PyObject *);
+
+static CYTHON_INLINE signed char __Pyx_PyInt_AsSignedChar(PyObject *);
+
+static CYTHON_INLINE signed short __Pyx_PyInt_AsSignedShort(PyObject *);
+
+static CYTHON_INLINE signed int __Pyx_PyInt_AsSignedInt(PyObject *);
+
+static CYTHON_INLINE int __Pyx_PyInt_AsLongDouble(PyObject *);
+
+static CYTHON_INLINE unsigned long __Pyx_PyInt_AsUnsignedLong(PyObject *);
+
+static CYTHON_INLINE unsigned PY_LONG_LONG __Pyx_PyInt_AsUnsignedLongLong(PyObject *);
+
+static CYTHON_INLINE long __Pyx_PyInt_AsLong(PyObject *);
+
+static CYTHON_INLINE PY_LONG_LONG __Pyx_PyInt_AsLongLong(PyObject *);
+
+static CYTHON_INLINE signed long __Pyx_PyInt_AsSignedLong(PyObject *);
+
+static CYTHON_INLINE signed PY_LONG_LONG __Pyx_PyInt_AsSignedLongLong(PyObject *);
+
+static void __Pyx_WriteUnraisable(const char *name, int clineno,
+                                  int lineno, const char *filename); /*proto*/
+
+static int __Pyx_check_binary_version(void);
+
+#if !defined(__Pyx_PyIdentifier_FromString)
+#if PY_MAJOR_VERSION < 3
+  #define __Pyx_PyIdentifier_FromString(s) PyString_FromString(s)
+#else
+  #define __Pyx_PyIdentifier_FromString(s) PyUnicode_FromString(s)
+#endif
+#endif
+
+static PyObject *__Pyx_ImportModule(const char *name); /*proto*/
+
+static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name, size_t size, int strict);  /*proto*/
+
+static int __Pyx_ImportFunction(PyObject *module, const char *funcname, void (**f)(void), const char *sig); /*proto*/
+
+typedef struct {
+    int code_line;
+    PyCodeObject* code_object;
+} __Pyx_CodeObjectCacheEntry;
+struct __Pyx_CodeObjectCache {
+    int count;
+    int max_count;
+    __Pyx_CodeObjectCacheEntry* entries;
+};
+static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL};
+static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line);
+static PyCodeObject *__pyx_find_code_object(int code_line);
+static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object);
+
+static void __Pyx_AddTraceback(const char *funcname, int c_line,
+                               int py_line, const char *filename); /*proto*/
+
+static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); /*proto*/
+
+
+/* Module declarations from 'h5py.api_types_ext' */
+
+/* Module declarations from 'h5py.api_types_hdf5' */
+
+/* Module declarations from 'h5py.defs' */
+static hid_t (*__pyx_f_4h5py_4defs_H5Tcreate)(enum H5T_class_t, size_t); /*proto*/
+static hid_t (*__pyx_f_4h5py_4defs_H5Tcopy)(hid_t); /*proto*/
+static htri_t (*__pyx_f_4h5py_4defs_H5Tequal)(hid_t, hid_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Tlock)(hid_t); /*proto*/
+static size_t (*__pyx_f_4h5py_4defs_H5Tget_size)(hid_t); /*proto*/
+static hid_t (*__pyx_f_4h5py_4defs_H5Tget_super)(hid_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Tclose)(hid_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Tconvert)(hid_t, hid_t, size_t, void *, void *, hid_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Tset_size)(hid_t, size_t); /*proto*/
+static H5T_cset_t (*__pyx_f_4h5py_4defs_H5Tget_cset)(hid_t); /*proto*/
+static htri_t (*__pyx_f_4h5py_4defs_H5Tis_variable_str)(hid_t); /*proto*/
+static hid_t (*__pyx_f_4h5py_4defs_H5Tenum_create)(hid_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Tset_tag)(hid_t, char *); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Tregister)(H5T_pers_t, char *, hid_t, hid_t, H5T_conv_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Tunregister)(H5T_pers_t, char *, hid_t, hid_t, H5T_conv_t); /*proto*/
+
+/* Module declarations from 'h5py.h5r' */
+static PyTypeObject *__pyx_ptype_4h5py_3h5r_Reference = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5r_RegionReference = 0;
+
+/* Module declarations from 'h5py._conv' */
+static hid_t __pyx_v_4h5py_5_conv_H5PY_OBJ;
+static hid_t __pyx_f_4h5py_5_conv_get_python_obj(int __pyx_skip_dispatch); /*proto*/
+static herr_t __pyx_f_4h5py_5_conv_generic_converter(hid_t, hid_t, H5T_cdata_t *, size_t, size_t, size_t, void *, void *, hid_t, __pyx_t_4h5py_5_conv_conv_operator_t, __pyx_t_4h5py_5_conv_init_operator_t, H5T_bkg_t); /*proto*/
+static herr_t __pyx_f_4h5py_5_conv_init_generic(hid_t, hid_t, void **); /*proto*/
+static int __pyx_f_4h5py_5_conv_conv_vlen2str(void *, void *, void *, void *); /*proto*/
+static int __pyx_f_4h5py_5_conv_conv_str2vlen(void *, void *, void *, void *); /*proto*/
+static herr_t __pyx_f_4h5py_5_conv_init_vlen2fixed(hid_t, hid_t, void **); /*proto*/
+static herr_t __pyx_f_4h5py_5_conv_init_fixed2vlen(hid_t, hid_t, void **); /*proto*/
+static int __pyx_f_4h5py_5_conv_conv_vlen2fixed(void *, void *, void *, void *); /*proto*/
+static int __pyx_f_4h5py_5_conv_conv_fixed2vlen(void *, void *, void *, void *); /*proto*/
+static int __pyx_f_4h5py_5_conv_conv_objref2pyref(void *, void *, void *, void *); /*proto*/
+static int __pyx_f_4h5py_5_conv_conv_pyref2objref(void *, void *, void *, void *); /*proto*/
+static int __pyx_f_4h5py_5_conv_conv_regref2pyref(void *, void *, void *, void *); /*proto*/
+static int __pyx_f_4h5py_5_conv_conv_pyref2regref(void *, void *, void *, void *); /*proto*/
+static herr_t __pyx_f_4h5py_5_conv_vlen2str(hid_t, hid_t, H5T_cdata_t *, size_t, size_t, size_t, void *, void *, hid_t); /*proto*/
+static herr_t __pyx_f_4h5py_5_conv_str2vlen(hid_t, hid_t, H5T_cdata_t *, size_t, size_t, size_t, void *, void *, hid_t); /*proto*/
+static herr_t __pyx_f_4h5py_5_conv_vlen2fixed(hid_t, hid_t, H5T_cdata_t *, size_t, size_t, size_t, void *, void *, hid_t); /*proto*/
+static herr_t __pyx_f_4h5py_5_conv_fixed2vlen(hid_t, hid_t, H5T_cdata_t *, size_t, size_t, size_t, void *, void *, hid_t); /*proto*/
+static herr_t __pyx_f_4h5py_5_conv_objref2pyref(hid_t, hid_t, H5T_cdata_t *, size_t, size_t, size_t, void *, void *, hid_t); /*proto*/
+static herr_t __pyx_f_4h5py_5_conv_pyref2objref(hid_t, hid_t, H5T_cdata_t *, size_t, size_t, size_t, void *, void *, hid_t); /*proto*/
+static herr_t __pyx_f_4h5py_5_conv_regref2pyref(hid_t, hid_t, H5T_cdata_t *, size_t, size_t, size_t, void *, void *, hid_t); /*proto*/
+static herr_t __pyx_f_4h5py_5_conv_pyref2regref(hid_t, hid_t, H5T_cdata_t *, size_t, size_t, size_t, void *, void *, hid_t); /*proto*/
+static int __pyx_f_4h5py_5_conv_enum_int_converter_init(hid_t, hid_t, H5T_cdata_t *, int); /*proto*/
+static void __pyx_f_4h5py_5_conv_enum_int_converter_free(H5T_cdata_t *); /*proto*/
+static int __pyx_f_4h5py_5_conv_enum_int_converter_conv(hid_t, hid_t, H5T_cdata_t *, size_t, size_t, size_t, void *, void *, hid_t, int); /*proto*/
+static herr_t __pyx_f_4h5py_5_conv_enum_int_converter(hid_t, hid_t, H5T_cdata_t *, size_t, size_t, size_t, void *, void *, hid_t, int); /*proto*/
+static herr_t __pyx_f_4h5py_5_conv_enum2int(hid_t, hid_t, H5T_cdata_t *, size_t, size_t, size_t, void *, void *, hid_t); /*proto*/
+static herr_t __pyx_f_4h5py_5_conv_int2enum(hid_t, hid_t, H5T_cdata_t *, size_t, size_t, size_t, void *, void *, hid_t); /*proto*/
+static int __pyx_f_4h5py_5_conv_register_converters(int __pyx_skip_dispatch); /*proto*/
+static int __pyx_f_4h5py_5_conv_unregister_converters(int __pyx_skip_dispatch); /*proto*/
+#define __Pyx_MODULE_NAME "h5py._conv"
+int __pyx_module_is_main_h5py___conv = 0;
+
+/* Implementation of 'h5py._conv' */
+static PyObject *__pyx_builtin_ValueError;
+static PyObject *__pyx_builtin_TypeError;
+static PyObject *__pyx_builtin_MemoryError;
+static PyObject *__pyx_pf_4h5py_5_conv_get_python_obj(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
+static PyObject *__pyx_pf_4h5py_5_conv_2register_converters(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
+static PyObject *__pyx_pf_4h5py_5_conv_4unregister_converters(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
+static char __pyx_k_1[] = "PYTHON:OBJECT";
+static char __pyx_k_2[] = "";
+static char __pyx_k_3[] = "Byte string is not valid utf-8 and can't be stored in a utf-8 dataset";
+static char __pyx_k_5[] = "Unrecognized dataset encoding";
+static char __pyx_k_7[] = "VLEN strings do not support embedded NULLs";
+static char __pyx_k_9[] = "Can't convert incompatible object to HDF5 object reference";
+static char __pyx_k_11[] = "Can't convert incompatible object to HDF5 region reference";
+static char __pyx_k_13[] = "\n    Low-level type-conversion routines.\n";
+static char __pyx_k____main__[] = "__main__";
+static char __pyx_k____test__[] = "__test__";
+static char __pyx_k__enum2int[] = "enum2int";
+static char __pyx_k__int2enum[] = "int2enum";
+static char __pyx_k__str2vlen[] = "str2vlen";
+static char __pyx_k__vlen2str[] = "vlen2str";
+static char __pyx_k__TypeError[] = "TypeError";
+static char __pyx_k__ValueError[] = "ValueError";
+static char __pyx_k__fixed2vlen[] = "fixed2vlen";
+static char __pyx_k__vlen2fixed[] = "vlen2fixed";
+static char __pyx_k__MemoryError[] = "MemoryError";
+static char __pyx_k__objref2pyref[] = "objref2pyref";
+static char __pyx_k__pyref2objref[] = "pyref2objref";
+static char __pyx_k__pyref2regref[] = "pyref2regref";
+static char __pyx_k__regref2pyref[] = "regref2pyref";
+static PyObject *__pyx_kp_s_11;
+static PyObject *__pyx_kp_s_3;
+static PyObject *__pyx_kp_s_5;
+static PyObject *__pyx_kp_s_7;
+static PyObject *__pyx_kp_s_9;
+static PyObject *__pyx_n_s__MemoryError;
+static PyObject *__pyx_n_s__TypeError;
+static PyObject *__pyx_n_s__ValueError;
+static PyObject *__pyx_n_s____main__;
+static PyObject *__pyx_n_s____test__;
+static PyObject *__pyx_k_tuple_4;
+static PyObject *__pyx_k_tuple_6;
+static PyObject *__pyx_k_tuple_8;
+static PyObject *__pyx_k_tuple_10;
+static PyObject *__pyx_k_tuple_12;
+
+/* "h5py/_conv.pyx":45
+ *     void Py_XDECREF(PyObject* obj)
+ * 
+ * cdef object objectify(PyObject* o):             # <<<<<<<<<<<<<<
+ *     Py_INCREF(o)
+ *     return <object>o
+ */
+
+static PyObject *__pyx_f_4h5py_5_conv_objectify(PyObject *__pyx_v_o) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("objectify", 0);
+
+  /* "h5py/_conv.pyx":46
+ * 
+ * cdef object objectify(PyObject* o):
+ *     Py_INCREF(o)             # <<<<<<<<<<<<<<
+ *     return <object>o
+ * 
+ */
+  Py_INCREF(__pyx_v_o);
+
+  /* "h5py/_conv.pyx":47
+ * cdef object objectify(PyObject* o):
+ *     Py_INCREF(o)
+ *     return <object>o             # <<<<<<<<<<<<<<
+ * 
+ * # Create Python object equivalents
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(((PyObject *)__pyx_v_o));
+  __pyx_r = ((PyObject *)__pyx_v_o);
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/_conv.pyx":52
+ * cdef hid_t H5PY_OBJ = 0
+ * 
+ * cpdef hid_t get_python_obj():             # <<<<<<<<<<<<<<
+ *     global H5PY_OBJ
+ *     if H5PY_OBJ <= 0:
+ */
+
+static PyObject *__pyx_pw_4h5py_5_conv_1get_python_obj(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static hid_t __pyx_f_4h5py_5_conv_get_python_obj(CYTHON_UNUSED int __pyx_skip_dispatch) {
+  hid_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  hid_t __pyx_t_2;
+  herr_t __pyx_t_3;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_python_obj", 0);
+
+  /* "h5py/_conv.pyx":54
+ * cpdef hid_t get_python_obj():
+ *     global H5PY_OBJ
+ *     if H5PY_OBJ <= 0:             # <<<<<<<<<<<<<<
+ *         H5PY_OBJ = H5Tcreate(H5T_OPAQUE, sizeof(PyObject*))
+ *         H5Tset_tag(H5PY_OBJ, "PYTHON:OBJECT")
+ */
+  __pyx_t_1 = (__pyx_v_4h5py_5_conv_H5PY_OBJ <= 0);
+  if (__pyx_t_1) {
+
+    /* "h5py/_conv.pyx":55
+ *     global H5PY_OBJ
+ *     if H5PY_OBJ <= 0:
+ *         H5PY_OBJ = H5Tcreate(H5T_OPAQUE, sizeof(PyObject*))             # <<<<<<<<<<<<<<
+ *         H5Tset_tag(H5PY_OBJ, "PYTHON:OBJECT")
+ *         H5Tlock(H5PY_OBJ)
+ */
+    __pyx_t_2 = __pyx_f_4h5py_4defs_H5Tcreate(H5T_OPAQUE, (sizeof(PyObject *))); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_v_4h5py_5_conv_H5PY_OBJ = __pyx_t_2;
+
+    /* "h5py/_conv.pyx":56
+ *     if H5PY_OBJ <= 0:
+ *         H5PY_OBJ = H5Tcreate(H5T_OPAQUE, sizeof(PyObject*))
+ *         H5Tset_tag(H5PY_OBJ, "PYTHON:OBJECT")             # <<<<<<<<<<<<<<
+ *         H5Tlock(H5PY_OBJ)
+ *     return H5PY_OBJ
+ */
+    __pyx_t_3 = __pyx_f_4h5py_4defs_H5Tset_tag(__pyx_v_4h5py_5_conv_H5PY_OBJ, __pyx_k_1); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+    /* "h5py/_conv.pyx":57
+ *         H5PY_OBJ = H5Tcreate(H5T_OPAQUE, sizeof(PyObject*))
+ *         H5Tset_tag(H5PY_OBJ, "PYTHON:OBJECT")
+ *         H5Tlock(H5PY_OBJ)             # <<<<<<<<<<<<<<
+ *     return H5PY_OBJ
+ * 
+ */
+    __pyx_t_3 = __pyx_f_4h5py_4defs_H5Tlock(__pyx_v_4h5py_5_conv_H5PY_OBJ); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  /* "h5py/_conv.pyx":58
+ *         H5Tset_tag(H5PY_OBJ, "PYTHON:OBJECT")
+ *         H5Tlock(H5PY_OBJ)
+ *     return H5PY_OBJ             # <<<<<<<<<<<<<<
+ * 
+ * ctypedef int (*conv_operator_t)(void* ipt, void* opt, void* bkg, void* priv) except -1
+ */
+  __pyx_r = __pyx_v_4h5py_5_conv_H5PY_OBJ;
+  goto __pyx_L0;
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("h5py._conv.get_python_obj", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_5_conv_1get_python_obj(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static PyObject *__pyx_pw_4h5py_5_conv_1get_python_obj(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_python_obj (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_5_conv_get_python_obj(__pyx_self);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/_conv.pyx":52
+ * cdef hid_t H5PY_OBJ = 0
+ * 
+ * cpdef hid_t get_python_obj():             # <<<<<<<<<<<<<<
+ *     global H5PY_OBJ
+ *     if H5PY_OBJ <= 0:
+ */
+
+static PyObject *__pyx_pf_4h5py_5_conv_get_python_obj(CYTHON_UNUSED PyObject *__pyx_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_python_obj", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_to_py_hid_t(__pyx_f_4h5py_5_conv_get_python_obj(0)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py._conv.get_python_obj", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/_conv.pyx":72
+ * # likely small compared to the cost of the Python-side API calls required to
+ * # implement the conversions.
+ * cdef herr_t generic_converter(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,             # <<<<<<<<<<<<<<
+ *                     size_t nl, size_t buf_stride, size_t bkg_stride, void *buf_i,
+ *                     void *bkg_i, hid_t dxpl, conv_operator_t op,
+ */
+
+static herr_t __pyx_f_4h5py_5_conv_generic_converter(hid_t __pyx_v_src_id, hid_t __pyx_v_dst_id, H5T_cdata_t *__pyx_v_cdata, size_t __pyx_v_nl, size_t __pyx_v_buf_stride, size_t __pyx_v_bkg_stride, void *__pyx_v_buf_i, void *__pyx_v_bkg_i, CYTHON_UNUSED hid_t __pyx_v_dxpl, __pyx_t_4h5py_5_conv_conv_operator_t __pyx_v_op, __pyx_t_4h5py_5_conv_init_operator_t __pyx_v_initop, H5T_bkg_t __pyx_v_need_bkg) {
+  int __pyx_v_command;
+  __pyx_t_4h5py_5_conv_conv_size_t *__pyx_v_sizes;
+  int __pyx_v_i;
+  char *__pyx_v_buf;
+  char *__pyx_v_bkg;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  H5T_cmd_t __pyx_t_1;
+  int __pyx_t_2;
+  herr_t __pyx_t_3;
+  htri_t __pyx_t_4;
+  H5T_cset_t __pyx_t_5;
+  size_t __pyx_t_6;
+  int __pyx_t_7;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("generic_converter", 0);
+
+  /* "h5py/_conv.pyx":77
+ *                     init_operator_t initop, H5T_bkg_t need_bkg) except -1:
+ * 
+ *     cdef int command = cdata[0].command             # <<<<<<<<<<<<<<
+ *     cdef conv_size_t *sizes
+ *     cdef int i
+ */
+  __pyx_t_1 = (__pyx_v_cdata[0]).command;
+  __pyx_v_command = __pyx_t_1;
+
+  /* "h5py/_conv.pyx":81
+ *     cdef int i
+ * 
+ *     cdef char* buf = <char*>buf_i             # <<<<<<<<<<<<<<
+ *     cdef char* bkg = <char*>bkg_i
+ * 
+ */
+  __pyx_v_buf = ((char *)__pyx_v_buf_i);
+
+  /* "h5py/_conv.pyx":82
+ * 
+ *     cdef char* buf = <char*>buf_i
+ *     cdef char* bkg = <char*>bkg_i             # <<<<<<<<<<<<<<
+ * 
+ *     if command == H5T_CONV_INIT:
+ */
+  __pyx_v_bkg = ((char *)__pyx_v_bkg_i);
+
+  /* "h5py/_conv.pyx":84
+ *     cdef char* bkg = <char*>bkg_i
+ * 
+ *     if command == H5T_CONV_INIT:             # <<<<<<<<<<<<<<
+ * 
+ *         cdata[0].need_bkg = need_bkg
+ */
+  __pyx_t_2 = (__pyx_v_command == H5T_CONV_INIT);
+  if (__pyx_t_2) {
+
+    /* "h5py/_conv.pyx":86
+ *     if command == H5T_CONV_INIT:
+ * 
+ *         cdata[0].need_bkg = need_bkg             # <<<<<<<<<<<<<<
+ *         return initop(src_id, dst_id, &(cdata[0].priv))
+ * 
+ */
+    (__pyx_v_cdata[0]).need_bkg = __pyx_v_need_bkg;
+
+    /* "h5py/_conv.pyx":87
+ * 
+ *         cdata[0].need_bkg = need_bkg
+ *         return initop(src_id, dst_id, &(cdata[0].priv))             # <<<<<<<<<<<<<<
+ * 
+ *     elif command == H5T_CONV_FREE:
+ */
+    __pyx_t_3 = __pyx_v_initop(__pyx_v_src_id, __pyx_v_dst_id, (&(__pyx_v_cdata[0]).priv)); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_r = __pyx_t_3;
+    goto __pyx_L0;
+    goto __pyx_L3;
+  }
+
+  /* "h5py/_conv.pyx":89
+ *         return initop(src_id, dst_id, &(cdata[0].priv))
+ * 
+ *     elif command == H5T_CONV_FREE:             # <<<<<<<<<<<<<<
+ * 
+ *         free(cdata[0].priv)
+ */
+  __pyx_t_2 = (__pyx_v_command == H5T_CONV_FREE);
+  if (__pyx_t_2) {
+
+    /* "h5py/_conv.pyx":91
+ *     elif command == H5T_CONV_FREE:
+ * 
+ *         free(cdata[0].priv)             # <<<<<<<<<<<<<<
+ *         cdata[0].priv = NULL
+ * 
+ */
+    free((__pyx_v_cdata[0]).priv);
+
+    /* "h5py/_conv.pyx":92
+ * 
+ *         free(cdata[0].priv)
+ *         cdata[0].priv = NULL             # <<<<<<<<<<<<<<
+ * 
+ *     elif command == H5T_CONV_CONV:
+ */
+    (__pyx_v_cdata[0]).priv = NULL;
+    goto __pyx_L3;
+  }
+
+  /* "h5py/_conv.pyx":94
+ *         cdata[0].priv = NULL
+ * 
+ *     elif command == H5T_CONV_CONV:             # <<<<<<<<<<<<<<
+ * 
+ *         sizes = <conv_size_t*>cdata[0].priv
+ */
+  __pyx_t_2 = (__pyx_v_command == H5T_CONV_CONV);
+  if (__pyx_t_2) {
+
+    /* "h5py/_conv.pyx":96
+ *     elif command == H5T_CONV_CONV:
+ * 
+ *         sizes = <conv_size_t*>cdata[0].priv             # <<<<<<<<<<<<<<
+ * 
+ *         if H5Tis_variable_str(src_id):
+ */
+    __pyx_v_sizes = ((__pyx_t_4h5py_5_conv_conv_size_t *)(__pyx_v_cdata[0]).priv);
+
+    /* "h5py/_conv.pyx":98
+ *         sizes = <conv_size_t*>cdata[0].priv
+ * 
+ *         if H5Tis_variable_str(src_id):             # <<<<<<<<<<<<<<
+ *             sizes.cset = H5Tget_cset(src_id)
+ *         elif H5Tis_variable_str(dst_id):
+ */
+    __pyx_t_4 = __pyx_f_4h5py_4defs_H5Tis_variable_str(__pyx_v_src_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 98; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (__pyx_t_4) {
+
+      /* "h5py/_conv.pyx":99
+ * 
+ *         if H5Tis_variable_str(src_id):
+ *             sizes.cset = H5Tget_cset(src_id)             # <<<<<<<<<<<<<<
+ *         elif H5Tis_variable_str(dst_id):
+ *             sizes.cset = H5Tget_cset(dst_id)
+ */
+      __pyx_t_5 = __pyx_f_4h5py_4defs_H5Tget_cset(__pyx_v_src_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 99; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_v_sizes->cset = __pyx_t_5;
+      goto __pyx_L4;
+    }
+
+    /* "h5py/_conv.pyx":100
+ *         if H5Tis_variable_str(src_id):
+ *             sizes.cset = H5Tget_cset(src_id)
+ *         elif H5Tis_variable_str(dst_id):             # <<<<<<<<<<<<<<
+ *             sizes.cset = H5Tget_cset(dst_id)
+ * 
+ */
+    __pyx_t_4 = __pyx_f_4h5py_4defs_H5Tis_variable_str(__pyx_v_dst_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (__pyx_t_4) {
+
+      /* "h5py/_conv.pyx":101
+ *             sizes.cset = H5Tget_cset(src_id)
+ *         elif H5Tis_variable_str(dst_id):
+ *             sizes.cset = H5Tget_cset(dst_id)             # <<<<<<<<<<<<<<
+ * 
+ *         if bkg_stride==0: bkg_stride = sizes[0].dst_size;
+ */
+      __pyx_t_5 = __pyx_f_4h5py_4defs_H5Tget_cset(__pyx_v_dst_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_v_sizes->cset = __pyx_t_5;
+      goto __pyx_L4;
+    }
+    __pyx_L4:;
+
+    /* "h5py/_conv.pyx":103
+ *             sizes.cset = H5Tget_cset(dst_id)
+ * 
+ *         if bkg_stride==0: bkg_stride = sizes[0].dst_size;             # <<<<<<<<<<<<<<
+ * 
+ *         if buf_stride == 0:
+ */
+    __pyx_t_2 = (__pyx_v_bkg_stride == 0);
+    if (__pyx_t_2) {
+      __pyx_t_6 = (__pyx_v_sizes[0]).dst_size;
+      __pyx_v_bkg_stride = __pyx_t_6;
+      goto __pyx_L5;
+    }
+    __pyx_L5:;
+
+    /* "h5py/_conv.pyx":105
+ *         if bkg_stride==0: bkg_stride = sizes[0].dst_size;
+ * 
+ *         if buf_stride == 0:             # <<<<<<<<<<<<<<
+ *             # No explicit stride seems to mean that the elements are packed
+ *             # contiguously in the buffer.  In this case we must be careful
+ */
+    __pyx_t_2 = (__pyx_v_buf_stride == 0);
+    if (__pyx_t_2) {
+
+      /* "h5py/_conv.pyx":111
+ *             # of a larger size.
+ * 
+ *             if sizes[0].src_size >= sizes[0].dst_size:             # <<<<<<<<<<<<<<
+ *                 for i from 0<=i<nl:
+ *                     op( buf + (i*sizes[0].src_size),    # input pointer
+ */
+      __pyx_t_2 = ((__pyx_v_sizes[0]).src_size >= (__pyx_v_sizes[0]).dst_size);
+      if (__pyx_t_2) {
+
+        /* "h5py/_conv.pyx":112
+ * 
+ *             if sizes[0].src_size >= sizes[0].dst_size:
+ *                 for i from 0<=i<nl:             # <<<<<<<<<<<<<<
+ *                     op( buf + (i*sizes[0].src_size),    # input pointer
+ *                         buf + (i*sizes[0].dst_size),    # output pointer
+ */
+        __pyx_t_6 = __pyx_v_nl;
+        for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_6; __pyx_v_i++) {
+
+          /* "h5py/_conv.pyx":116
+ *                         buf + (i*sizes[0].dst_size),    # output pointer
+ *                         bkg + (i*bkg_stride),           # backing buffer
+ *                         cdata[0].priv)                  # conversion context             # <<<<<<<<<<<<<<
+ *             else:
+ *                 for i from nl>i>=0:
+ */
+          __pyx_t_7 = __pyx_v_op((__pyx_v_buf + (__pyx_v_i * (__pyx_v_sizes[0]).src_size)), (__pyx_v_buf + (__pyx_v_i * (__pyx_v_sizes[0]).dst_size)), (__pyx_v_bkg + (__pyx_v_i * __pyx_v_bkg_stride)), (__pyx_v_cdata[0]).priv); if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        }
+        goto __pyx_L7;
+      }
+      /*else*/ {
+
+        /* "h5py/_conv.pyx":118
+ *                         cdata[0].priv)                  # conversion context
+ *             else:
+ *                 for i from nl>i>=0:             # <<<<<<<<<<<<<<
+ *                     op( buf + (i*sizes[0].src_size),
+ *                         buf + (i*sizes[0].dst_size),
+ */
+        for (__pyx_v_i = __pyx_v_nl-1; __pyx_v_i >= 0; __pyx_v_i--) {
+
+          /* "h5py/_conv.pyx":122
+ *                         buf + (i*sizes[0].dst_size),
+ *                         bkg + (i*bkg_stride),
+ *                         cdata[0].priv)             # <<<<<<<<<<<<<<
+ *         else:
+ *             # With explicit strides, we assume that the library knows the
+ */
+          __pyx_t_7 = __pyx_v_op((__pyx_v_buf + (__pyx_v_i * (__pyx_v_sizes[0]).src_size)), (__pyx_v_buf + (__pyx_v_i * (__pyx_v_sizes[0]).dst_size)), (__pyx_v_bkg + (__pyx_v_i * __pyx_v_bkg_stride)), (__pyx_v_cdata[0]).priv); if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        }
+      }
+      __pyx_L7:;
+      goto __pyx_L6;
+    }
+    /*else*/ {
+
+      /* "h5py/_conv.pyx":127
+ *             # alignment better than us.  Therefore we use the given stride
+ *             # offsets exclusively.
+ *             for i from 0<=i<nl:             # <<<<<<<<<<<<<<
+ *                 op( buf + (i*buf_stride),
+ *                     buf + (i*buf_stride),   # note this is the same!
+ */
+      __pyx_t_6 = __pyx_v_nl;
+      for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_6; __pyx_v_i++) {
+
+        /* "h5py/_conv.pyx":131
+ *                     buf + (i*buf_stride),   # note this is the same!
+ *                     bkg + (i*bkg_stride),
+ *                     cdata[0].priv)             # <<<<<<<<<<<<<<
+ *     else:
+ *         return -2   # Unrecognized command.  Note this is NOT an exception.
+ */
+        __pyx_t_7 = __pyx_v_op((__pyx_v_buf + (__pyx_v_i * __pyx_v_buf_stride)), (__pyx_v_buf + (__pyx_v_i * __pyx_v_buf_stride)), (__pyx_v_bkg + (__pyx_v_i * __pyx_v_bkg_stride)), (__pyx_v_cdata[0]).priv); if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+    }
+    __pyx_L6:;
+    goto __pyx_L3;
+  }
+  /*else*/ {
+
+    /* "h5py/_conv.pyx":133
+ *                     cdata[0].priv)
+ *     else:
+ *         return -2   # Unrecognized command.  Note this is NOT an exception.             # <<<<<<<<<<<<<<
+ * 
+ *     return 0
+ */
+    __pyx_r = -2;
+    goto __pyx_L0;
+  }
+  __pyx_L3:;
+
+  /* "h5py/_conv.pyx":135
+ *         return -2   # Unrecognized command.  Note this is NOT an exception.
+ * 
+ *     return 0             # <<<<<<<<<<<<<<
+ * 
+ * # =============================================================================
+ */
+  __pyx_r = 0;
+  goto __pyx_L0;
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py._conv.generic_converter", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/_conv.pyx":145
+ *     int cset
+ * 
+ * cdef herr_t init_generic(hid_t src, hid_t dst, void** priv) except -1:             # <<<<<<<<<<<<<<
+ * 
+ *     cdef conv_size_t *sizes
+ */
+
+static herr_t __pyx_f_4h5py_5_conv_init_generic(hid_t __pyx_v_src, hid_t __pyx_v_dst, void **__pyx_v_priv) {
+  __pyx_t_4h5py_5_conv_conv_size_t *__pyx_v_sizes;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  size_t __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("init_generic", 0);
+
+  /* "h5py/_conv.pyx":148
+ * 
+ *     cdef conv_size_t *sizes
+ *     sizes = <conv_size_t*>malloc(sizeof(conv_size_t))             # <<<<<<<<<<<<<<
+ *     priv[0] = sizes
+ *     sizes[0].src_size = H5Tget_size(src)
+ */
+  __pyx_v_sizes = ((__pyx_t_4h5py_5_conv_conv_size_t *)malloc((sizeof(__pyx_t_4h5py_5_conv_conv_size_t))));
+
+  /* "h5py/_conv.pyx":149
+ *     cdef conv_size_t *sizes
+ *     sizes = <conv_size_t*>malloc(sizeof(conv_size_t))
+ *     priv[0] = sizes             # <<<<<<<<<<<<<<
+ *     sizes[0].src_size = H5Tget_size(src)
+ *     sizes[0].dst_size = H5Tget_size(dst)
+ */
+  (__pyx_v_priv[0]) = __pyx_v_sizes;
+
+  /* "h5py/_conv.pyx":150
+ *     sizes = <conv_size_t*>malloc(sizeof(conv_size_t))
+ *     priv[0] = sizes
+ *     sizes[0].src_size = H5Tget_size(src)             # <<<<<<<<<<<<<<
+ *     sizes[0].dst_size = H5Tget_size(dst)
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Tget_size(__pyx_v_src); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  (__pyx_v_sizes[0]).src_size = __pyx_t_1;
+
+  /* "h5py/_conv.pyx":151
+ *     priv[0] = sizes
+ *     sizes[0].src_size = H5Tget_size(src)
+ *     sizes[0].dst_size = H5Tget_size(dst)             # <<<<<<<<<<<<<<
+ * 
+ *     return 0
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Tget_size(__pyx_v_dst); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  (__pyx_v_sizes[0]).dst_size = __pyx_t_1;
+
+  /* "h5py/_conv.pyx":153
+ *     sizes[0].dst_size = H5Tget_size(dst)
+ * 
+ *     return 0             # <<<<<<<<<<<<<<
+ * 
+ * # =============================================================================
+ */
+  __pyx_r = 0;
+  goto __pyx_L0;
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py._conv.init_generic", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/_conv.pyx":158
+ * # Vlen string conversion
+ * 
+ * cdef int conv_vlen2str(void* ipt, void* opt, void* bkg, void* priv) except -1:             # <<<<<<<<<<<<<<
+ * 
+ *     cdef PyObject** buf_obj = <PyObject**>opt
+ */
+
+static int __pyx_f_4h5py_5_conv_conv_vlen2str(void *__pyx_v_ipt, void *__pyx_v_opt, void *__pyx_v_bkg, void *__pyx_v_priv) {
+  PyObject **__pyx_v_buf_obj;
+  PyObject **__pyx_v_bkg_obj;
+  char **__pyx_v_buf_cstring;
+  PyObject *__pyx_v_temp_obj;
+  __pyx_t_4h5py_5_conv_conv_size_t *__pyx_v_sizes;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  PyObject *__pyx_t_2;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("conv_vlen2str", 0);
+
+  /* "h5py/_conv.pyx":160
+ * cdef int conv_vlen2str(void* ipt, void* opt, void* bkg, void* priv) except -1:
+ * 
+ *     cdef PyObject** buf_obj = <PyObject**>opt             # <<<<<<<<<<<<<<
+ *     cdef PyObject** bkg_obj = <PyObject**>bkg
+ *     cdef char** buf_cstring = <char**>ipt
+ */
+  __pyx_v_buf_obj = ((PyObject **)__pyx_v_opt);
+
+  /* "h5py/_conv.pyx":161
+ * 
+ *     cdef PyObject** buf_obj = <PyObject**>opt
+ *     cdef PyObject** bkg_obj = <PyObject**>bkg             # <<<<<<<<<<<<<<
+ *     cdef char** buf_cstring = <char**>ipt
+ *     cdef PyObject* temp_obj = NULL
+ */
+  __pyx_v_bkg_obj = ((PyObject **)__pyx_v_bkg);
+
+  /* "h5py/_conv.pyx":162
+ *     cdef PyObject** buf_obj = <PyObject**>opt
+ *     cdef PyObject** bkg_obj = <PyObject**>bkg
+ *     cdef char** buf_cstring = <char**>ipt             # <<<<<<<<<<<<<<
+ *     cdef PyObject* temp_obj = NULL
+ *     cdef conv_size_t *sizes = <conv_size_t*>priv
+ */
+  __pyx_v_buf_cstring = ((char **)__pyx_v_ipt);
+
+  /* "h5py/_conv.pyx":163
+ *     cdef PyObject** bkg_obj = <PyObject**>bkg
+ *     cdef char** buf_cstring = <char**>ipt
+ *     cdef PyObject* temp_obj = NULL             # <<<<<<<<<<<<<<
+ *     cdef conv_size_t *sizes = <conv_size_t*>priv
+ * 
+ */
+  __pyx_v_temp_obj = NULL;
+
+  /* "h5py/_conv.pyx":164
+ *     cdef char** buf_cstring = <char**>ipt
+ *     cdef PyObject* temp_obj = NULL
+ *     cdef conv_size_t *sizes = <conv_size_t*>priv             # <<<<<<<<<<<<<<
+ * 
+ *     # When reading we identify H5T_CSET_ASCII as a byte string and
+ */
+  __pyx_v_sizes = ((__pyx_t_4h5py_5_conv_conv_size_t *)__pyx_v_priv);
+
+  /* "h5py/_conv.pyx":168
+ *     # When reading we identify H5T_CSET_ASCII as a byte string and
+ *     # H5T_CSET_UTF8 as a utf8-encoded unicode string
+ *     if sizes.cset == H5T_CSET_ASCII:             # <<<<<<<<<<<<<<
+ *         if buf_cstring[0] == NULL:
+ *             temp_obj = PyBytes_FromString("")
+ */
+  __pyx_t_1 = (__pyx_v_sizes->cset == H5T_CSET_ASCII);
+  if (__pyx_t_1) {
+
+    /* "h5py/_conv.pyx":169
+ *     # H5T_CSET_UTF8 as a utf8-encoded unicode string
+ *     if sizes.cset == H5T_CSET_ASCII:
+ *         if buf_cstring[0] == NULL:             # <<<<<<<<<<<<<<
+ *             temp_obj = PyBytes_FromString("")
+ *         else:
+ */
+    __pyx_t_1 = ((__pyx_v_buf_cstring[0]) == NULL);
+    if (__pyx_t_1) {
+
+      /* "h5py/_conv.pyx":170
+ *     if sizes.cset == H5T_CSET_ASCII:
+ *         if buf_cstring[0] == NULL:
+ *             temp_obj = PyBytes_FromString("")             # <<<<<<<<<<<<<<
+ *         else:
+ *             temp_obj = PyBytes_FromString(buf_cstring[0])
+ */
+      __pyx_t_2 = PyBytes_FromString(__pyx_k_2); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_v_temp_obj = __pyx_t_2;
+      goto __pyx_L4;
+    }
+    /*else*/ {
+
+      /* "h5py/_conv.pyx":172
+ *             temp_obj = PyBytes_FromString("")
+ *         else:
+ *             temp_obj = PyBytes_FromString(buf_cstring[0])             # <<<<<<<<<<<<<<
+ *     elif sizes.cset == H5T_CSET_UTF8:
+ *         if buf_cstring[0] == NULL:
+ */
+      __pyx_t_2 = PyBytes_FromString((__pyx_v_buf_cstring[0])); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_v_temp_obj = __pyx_t_2;
+    }
+    __pyx_L4:;
+    goto __pyx_L3;
+  }
+
+  /* "h5py/_conv.pyx":173
+ *         else:
+ *             temp_obj = PyBytes_FromString(buf_cstring[0])
+ *     elif sizes.cset == H5T_CSET_UTF8:             # <<<<<<<<<<<<<<
+ *         if buf_cstring[0] == NULL:
+ *             temp_obj = PyUnicode_DecodeUTF8("", 0, NULL)
+ */
+  __pyx_t_1 = (__pyx_v_sizes->cset == H5T_CSET_UTF8);
+  if (__pyx_t_1) {
+
+    /* "h5py/_conv.pyx":174
+ *             temp_obj = PyBytes_FromString(buf_cstring[0])
+ *     elif sizes.cset == H5T_CSET_UTF8:
+ *         if buf_cstring[0] == NULL:             # <<<<<<<<<<<<<<
+ *             temp_obj = PyUnicode_DecodeUTF8("", 0, NULL)
+ *         else:
+ */
+    __pyx_t_1 = ((__pyx_v_buf_cstring[0]) == NULL);
+    if (__pyx_t_1) {
+
+      /* "h5py/_conv.pyx":175
+ *     elif sizes.cset == H5T_CSET_UTF8:
+ *         if buf_cstring[0] == NULL:
+ *             temp_obj = PyUnicode_DecodeUTF8("", 0, NULL)             # <<<<<<<<<<<<<<
+ *         else:
+ *             temp_obj = PyUnicode_DecodeUTF8(buf_cstring[0], strlen(buf_cstring[0]), NULL)
+ */
+      __pyx_t_2 = PyUnicode_DecodeUTF8(__pyx_k_2, 0, NULL); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 175; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_v_temp_obj = __pyx_t_2;
+      goto __pyx_L5;
+    }
+    /*else*/ {
+
+      /* "h5py/_conv.pyx":177
+ *             temp_obj = PyUnicode_DecodeUTF8("", 0, NULL)
+ *         else:
+ *             temp_obj = PyUnicode_DecodeUTF8(buf_cstring[0], strlen(buf_cstring[0]), NULL)             # <<<<<<<<<<<<<<
+ * 
+ *     # Since all data conversions are by definition in-place, it
+ */
+      __pyx_t_2 = PyUnicode_DecodeUTF8((__pyx_v_buf_cstring[0]), strlen((__pyx_v_buf_cstring[0])), NULL); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 177; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_v_temp_obj = __pyx_t_2;
+    }
+    __pyx_L5:;
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  /* "h5py/_conv.pyx":181
+ *     # Since all data conversions are by definition in-place, it
+ *     # is our responsibility to free the memory used by the vlens.
+ *     free(buf_cstring[0])             # <<<<<<<<<<<<<<
+ * 
+ *     # HDF5 will eventuallly overwrite this target location, so we
+ */
+  free((__pyx_v_buf_cstring[0]));
+
+  /* "h5py/_conv.pyx":185
+ *     # HDF5 will eventuallly overwrite this target location, so we
+ *     # make sure to decref the object there.
+ *     Py_XDECREF(bkg_obj[0])             # <<<<<<<<<<<<<<
+ * 
+ *     # Write the new string object to the buffer in-place
+ */
+  Py_XDECREF((__pyx_v_bkg_obj[0]));
+
+  /* "h5py/_conv.pyx":188
+ * 
+ *     # Write the new string object to the buffer in-place
+ *     buf_obj[0] = temp_obj             # <<<<<<<<<<<<<<
+ * 
+ *     return 0
+ */
+  (__pyx_v_buf_obj[0]) = __pyx_v_temp_obj;
+
+  /* "h5py/_conv.pyx":190
+ *     buf_obj[0] = temp_obj
+ * 
+ *     return 0             # <<<<<<<<<<<<<<
+ * 
+ * cdef int conv_str2vlen(void* ipt, void* opt, void* bkg, void* priv) except -1:
+ */
+  __pyx_r = 0;
+  goto __pyx_L0;
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py._conv.conv_vlen2str", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/_conv.pyx":192
+ *     return 0
+ * 
+ * cdef int conv_str2vlen(void* ipt, void* opt, void* bkg, void* priv) except -1:             # <<<<<<<<<<<<<<
+ * 
+ *     cdef PyObject** buf_obj = <PyObject**>ipt
+ */
+
+static int __pyx_f_4h5py_5_conv_conv_str2vlen(void *__pyx_v_ipt, void *__pyx_v_opt, CYTHON_UNUSED void *__pyx_v_bkg, void *__pyx_v_priv) {
+  PyObject **__pyx_v_buf_obj;
+  char **__pyx_v_buf_cstring;
+  __pyx_t_4h5py_5_conv_conv_size_t *__pyx_v_sizes;
+  PyObject *__pyx_v_temp_object;
+  PyObject *__pyx_v_temp_encoded;
+  char *__pyx_v_temp_string;
+  size_t __pyx_v_temp_string_len;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  int __pyx_t_2;
+  int __pyx_t_3;
+  int __pyx_t_4;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  PyObject *__pyx_t_8 = NULL;
+  PyObject *__pyx_t_9 = NULL;
+  PyObject *__pyx_t_10 = NULL;
+  PyObject *__pyx_t_11 = NULL;
+  char *__pyx_t_12;
+  PyObject *__pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("conv_str2vlen", 0);
+
+  /* "h5py/_conv.pyx":194
+ * cdef int conv_str2vlen(void* ipt, void* opt, void* bkg, void* priv) except -1:
+ * 
+ *     cdef PyObject** buf_obj = <PyObject**>ipt             # <<<<<<<<<<<<<<
+ *     cdef char** buf_cstring = <char**>opt
+ *     cdef conv_size_t* sizes = <conv_size_t*>priv
+ */
+  __pyx_v_buf_obj = ((PyObject **)__pyx_v_ipt);
+
+  /* "h5py/_conv.pyx":195
+ * 
+ *     cdef PyObject** buf_obj = <PyObject**>ipt
+ *     cdef char** buf_cstring = <char**>opt             # <<<<<<<<<<<<<<
+ *     cdef conv_size_t* sizes = <conv_size_t*>priv
+ * 
+ */
+  __pyx_v_buf_cstring = ((char **)__pyx_v_opt);
+
+  /* "h5py/_conv.pyx":196
+ *     cdef PyObject** buf_obj = <PyObject**>ipt
+ *     cdef char** buf_cstring = <char**>opt
+ *     cdef conv_size_t* sizes = <conv_size_t*>priv             # <<<<<<<<<<<<<<
+ * 
+ *     cdef PyObject* temp_object = NULL
+ */
+  __pyx_v_sizes = ((__pyx_t_4h5py_5_conv_conv_size_t *)__pyx_v_priv);
+
+  /* "h5py/_conv.pyx":198
+ *     cdef conv_size_t* sizes = <conv_size_t*>priv
+ * 
+ *     cdef PyObject* temp_object = NULL             # <<<<<<<<<<<<<<
+ *     cdef PyObject* temp_encoded = NULL
+ * 
+ */
+  __pyx_v_temp_object = NULL;
+
+  /* "h5py/_conv.pyx":199
+ * 
+ *     cdef PyObject* temp_object = NULL
+ *     cdef PyObject* temp_encoded = NULL             # <<<<<<<<<<<<<<
+ * 
+ *     cdef char* temp_string = NULL
+ */
+  __pyx_v_temp_encoded = NULL;
+
+  /* "h5py/_conv.pyx":201
+ *     cdef PyObject* temp_encoded = NULL
+ * 
+ *     cdef char* temp_string = NULL             # <<<<<<<<<<<<<<
+ *     cdef size_t temp_string_len = 0  # Not including null term
+ * 
+ */
+  __pyx_v_temp_string = NULL;
+
+  /* "h5py/_conv.pyx":202
+ * 
+ *     cdef char* temp_string = NULL
+ *     cdef size_t temp_string_len = 0  # Not including null term             # <<<<<<<<<<<<<<
+ * 
+ *     try:
+ */
+  __pyx_v_temp_string_len = 0;
+
+  /* "h5py/_conv.pyx":204
+ *     cdef size_t temp_string_len = 0  # Not including null term
+ * 
+ *     try:             # <<<<<<<<<<<<<<
+ *         if buf_obj[0] == NULL or buf_obj[0] == Py_None:
+ *             temp_string = ""
+ */
+  /*try:*/ {
+
+    /* "h5py/_conv.pyx":205
+ * 
+ *     try:
+ *         if buf_obj[0] == NULL or buf_obj[0] == Py_None:             # <<<<<<<<<<<<<<
+ *             temp_string = ""
+ *             temp_string_len = 0
+ */
+    __pyx_t_1 = ((__pyx_v_buf_obj[0]) == NULL);
+    if (!__pyx_t_1) {
+      __pyx_t_2 = ((__pyx_v_buf_obj[0]) == Py_None);
+      __pyx_t_3 = __pyx_t_2;
+    } else {
+      __pyx_t_3 = __pyx_t_1;
+    }
+    if (__pyx_t_3) {
+
+      /* "h5py/_conv.pyx":206
+ *     try:
+ *         if buf_obj[0] == NULL or buf_obj[0] == Py_None:
+ *             temp_string = ""             # <<<<<<<<<<<<<<
+ *             temp_string_len = 0
+ *         else:
+ */
+      __pyx_v_temp_string = __pyx_k_2;
+
+      /* "h5py/_conv.pyx":207
+ *         if buf_obj[0] == NULL or buf_obj[0] == Py_None:
+ *             temp_string = ""
+ *             temp_string_len = 0             # <<<<<<<<<<<<<<
+ *         else:
+ *             if PyBytes_CheckExact(buf_obj[0]):
+ */
+      __pyx_v_temp_string_len = 0;
+      goto __pyx_L6;
+    }
+    /*else*/ {
+
+      /* "h5py/_conv.pyx":209
+ *             temp_string_len = 0
+ *         else:
+ *             if PyBytes_CheckExact(buf_obj[0]):             # <<<<<<<<<<<<<<
+ * 
+ *                 # Input is a byte string.  If we're using CSET_UTF8, make sure
+ */
+      __pyx_t_4 = PyBytes_CheckExact((__pyx_v_buf_obj[0])); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L4;}
+      if (__pyx_t_4) {
+
+        /* "h5py/_conv.pyx":213
+ *                 # Input is a byte string.  If we're using CSET_UTF8, make sure
+ *                 # it's valid UTF-8.  Otherwise just store it.
+ *                 temp_object = buf_obj[0]             # <<<<<<<<<<<<<<
+ *                 Py_INCREF(temp_object)
+ *                 if sizes.cset == H5T_CSET_UTF8:
+ */
+        __pyx_v_temp_object = (__pyx_v_buf_obj[0]);
+
+        /* "h5py/_conv.pyx":214
+ *                 # it's valid UTF-8.  Otherwise just store it.
+ *                 temp_object = buf_obj[0]
+ *                 Py_INCREF(temp_object)             # <<<<<<<<<<<<<<
+ *                 if sizes.cset == H5T_CSET_UTF8:
+ *                     try:
+ */
+        Py_INCREF(__pyx_v_temp_object);
+
+        /* "h5py/_conv.pyx":215
+ *                 temp_object = buf_obj[0]
+ *                 Py_INCREF(temp_object)
+ *                 if sizes.cset == H5T_CSET_UTF8:             # <<<<<<<<<<<<<<
+ *                     try:
+ *                         pass # disabled for Python 3 compatibility
+ */
+        __pyx_t_3 = (__pyx_v_sizes->cset == H5T_CSET_UTF8);
+        if (__pyx_t_3) {
+
+          /* "h5py/_conv.pyx":216
+ *                 Py_INCREF(temp_object)
+ *                 if sizes.cset == H5T_CSET_UTF8:
+ *                     try:             # <<<<<<<<<<<<<<
+ *                         pass # disabled for Python 3 compatibility
+ *                         #temp_encoded = PyString_AsDecodedObject(temp_object, "utf8", NULL)
+ */
+          {
+            __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+            __Pyx_XGOTREF(__pyx_t_5);
+            __Pyx_XGOTREF(__pyx_t_6);
+            __Pyx_XGOTREF(__pyx_t_7);
+            /*try:*/ {
+            }
+            __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+            __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+            __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+            goto __pyx_L16_try_end;
+
+            /* "h5py/_conv.pyx":219
+ *                         pass # disabled for Python 3 compatibility
+ *                         #temp_encoded = PyString_AsDecodedObject(temp_object, "utf8", NULL)
+ *                     except:             # <<<<<<<<<<<<<<
+ *                         raise ValueError("Byte string is not valid utf-8 and can't be stored in a utf-8 dataset")
+ *                 temp_string = PyBytes_AsString(temp_object)
+ */
+            /*except:*/ {
+              __Pyx_AddTraceback("h5py._conv.conv_str2vlen", __pyx_clineno, __pyx_lineno, __pyx_filename);
+              if (__Pyx_GetException(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L11_except_error;}
+              __Pyx_GOTREF(__pyx_t_8);
+              __Pyx_GOTREF(__pyx_t_9);
+              __Pyx_GOTREF(__pyx_t_10);
+
+              /* "h5py/_conv.pyx":220
+ *                         #temp_encoded = PyString_AsDecodedObject(temp_object, "utf8", NULL)
+ *                     except:
+ *                         raise ValueError("Byte string is not valid utf-8 and can't be stored in a utf-8 dataset")             # <<<<<<<<<<<<<<
+ *                 temp_string = PyBytes_AsString(temp_object)
+ *                 temp_string_len = PyBytes_Size(temp_object)
+ */
+              __pyx_t_11 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_4), NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 220; __pyx_clineno = __LINE__; goto __pyx_L11_except_error;}
+              __Pyx_GOTREF(__pyx_t_11);
+              __Pyx_Raise(__pyx_t_11, 0, 0, 0);
+              __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+              {__pyx_filename = __pyx_f[0]; __pyx_lineno = 220; __pyx_clineno = __LINE__; goto __pyx_L11_except_error;}
+              __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+              __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+              __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+              goto __pyx_L10_exception_handled;
+            }
+            __pyx_L11_except_error:;
+            __Pyx_XGIVEREF(__pyx_t_5);
+            __Pyx_XGIVEREF(__pyx_t_6);
+            __Pyx_XGIVEREF(__pyx_t_7);
+            __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+            goto __pyx_L4;
+            __pyx_L10_exception_handled:;
+            __Pyx_XGIVEREF(__pyx_t_5);
+            __Pyx_XGIVEREF(__pyx_t_6);
+            __Pyx_XGIVEREF(__pyx_t_7);
+            __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+            __pyx_L16_try_end:;
+          }
+          goto __pyx_L8;
+        }
+        __pyx_L8:;
+
+        /* "h5py/_conv.pyx":221
+ *                     except:
+ *                         raise ValueError("Byte string is not valid utf-8 and can't be stored in a utf-8 dataset")
+ *                 temp_string = PyBytes_AsString(temp_object)             # <<<<<<<<<<<<<<
+ *                 temp_string_len = PyBytes_Size(temp_object)
+ * 
+ */
+        __pyx_t_12 = PyBytes_AsString(__pyx_v_temp_object); if (unlikely(__pyx_t_12 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 221; __pyx_clineno = __LINE__; goto __pyx_L4;}
+        __pyx_v_temp_string = __pyx_t_12;
+
+        /* "h5py/_conv.pyx":222
+ *                         raise ValueError("Byte string is not valid utf-8 and can't be stored in a utf-8 dataset")
+ *                 temp_string = PyBytes_AsString(temp_object)
+ *                 temp_string_len = PyBytes_Size(temp_object)             # <<<<<<<<<<<<<<
+ * 
+ *             # We are given a Unicode object.  Encode it to utf-8 regardless of
+ */
+        __pyx_t_4 = PyBytes_Size(__pyx_v_temp_object); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 222; __pyx_clineno = __LINE__; goto __pyx_L4;}
+        __pyx_v_temp_string_len = __pyx_t_4;
+        goto __pyx_L7;
+      }
+
+      /* "h5py/_conv.pyx":226
+ *             # We are given a Unicode object.  Encode it to utf-8 regardless of
+ *             # the HDF5 character set.
+ *             elif PyUnicode_CheckExact(buf_obj[0]):             # <<<<<<<<<<<<<<
+ *                 temp_object = buf_obj[0]
+ *                 Py_INCREF(temp_object)
+ */
+      __pyx_t_4 = PyUnicode_CheckExact((__pyx_v_buf_obj[0])); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 226; __pyx_clineno = __LINE__; goto __pyx_L4;}
+      if (__pyx_t_4) {
+
+        /* "h5py/_conv.pyx":227
+ *             # the HDF5 character set.
+ *             elif PyUnicode_CheckExact(buf_obj[0]):
+ *                 temp_object = buf_obj[0]             # <<<<<<<<<<<<<<
+ *                 Py_INCREF(temp_object)
+ *                 temp_encoded = PyUnicode_AsUTF8String(temp_object)
+ */
+        __pyx_v_temp_object = (__pyx_v_buf_obj[0]);
+
+        /* "h5py/_conv.pyx":228
+ *             elif PyUnicode_CheckExact(buf_obj[0]):
+ *                 temp_object = buf_obj[0]
+ *                 Py_INCREF(temp_object)             # <<<<<<<<<<<<<<
+ *                 temp_encoded = PyUnicode_AsUTF8String(temp_object)
+ *                 temp_string = PyBytes_AsString(temp_encoded)
+ */
+        Py_INCREF(__pyx_v_temp_object);
+
+        /* "h5py/_conv.pyx":229
+ *                 temp_object = buf_obj[0]
+ *                 Py_INCREF(temp_object)
+ *                 temp_encoded = PyUnicode_AsUTF8String(temp_object)             # <<<<<<<<<<<<<<
+ *                 temp_string = PyBytes_AsString(temp_encoded)
+ *                 temp_string_len = PyBytes_Size(temp_encoded)
+ */
+        __pyx_t_13 = PyUnicode_AsUTF8String(__pyx_v_temp_object); if (unlikely(__pyx_t_13 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 229; __pyx_clineno = __LINE__; goto __pyx_L4;}
+        __pyx_v_temp_encoded = __pyx_t_13;
+
+        /* "h5py/_conv.pyx":230
+ *                 Py_INCREF(temp_object)
+ *                 temp_encoded = PyUnicode_AsUTF8String(temp_object)
+ *                 temp_string = PyBytes_AsString(temp_encoded)             # <<<<<<<<<<<<<<
+ *                 temp_string_len = PyBytes_Size(temp_encoded)
+ * 
+ */
+        __pyx_t_12 = PyBytes_AsString(__pyx_v_temp_encoded); if (unlikely(__pyx_t_12 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 230; __pyx_clineno = __LINE__; goto __pyx_L4;}
+        __pyx_v_temp_string = __pyx_t_12;
+
+        /* "h5py/_conv.pyx":231
+ *                 temp_encoded = PyUnicode_AsUTF8String(temp_object)
+ *                 temp_string = PyBytes_AsString(temp_encoded)
+ *                 temp_string_len = PyBytes_Size(temp_encoded)             # <<<<<<<<<<<<<<
+ * 
+ *             else:
+ */
+        __pyx_t_4 = PyBytes_Size(__pyx_v_temp_encoded); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L4;}
+        __pyx_v_temp_string_len = __pyx_t_4;
+        goto __pyx_L7;
+      }
+      /*else*/ {
+
+        /* "h5py/_conv.pyx":234
+ * 
+ *             else:
+ *                 if sizes.cset == H5T_CSET_ASCII:             # <<<<<<<<<<<<<<
+ *                     temp_object = PyObject_Str(buf_obj[0])
+ *                     temp_string = PyBytes_AsString(temp_object)
+ */
+        __pyx_t_3 = (__pyx_v_sizes->cset == H5T_CSET_ASCII);
+        if (__pyx_t_3) {
+
+          /* "h5py/_conv.pyx":235
+ *             else:
+ *                 if sizes.cset == H5T_CSET_ASCII:
+ *                     temp_object = PyObject_Str(buf_obj[0])             # <<<<<<<<<<<<<<
+ *                     temp_string = PyBytes_AsString(temp_object)
+ *                     temp_string_len = PyBytes_Size(temp_object)
+ */
+          __pyx_t_13 = PyObject_Str((__pyx_v_buf_obj[0])); if (unlikely(__pyx_t_13 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 235; __pyx_clineno = __LINE__; goto __pyx_L4;}
+          __pyx_v_temp_object = __pyx_t_13;
+
+          /* "h5py/_conv.pyx":236
+ *                 if sizes.cset == H5T_CSET_ASCII:
+ *                     temp_object = PyObject_Str(buf_obj[0])
+ *                     temp_string = PyBytes_AsString(temp_object)             # <<<<<<<<<<<<<<
+ *                     temp_string_len = PyBytes_Size(temp_object)
+ *                 elif sizes.cset == H5T_CSET_UTF8:
+ */
+          __pyx_t_12 = PyBytes_AsString(__pyx_v_temp_object); if (unlikely(__pyx_t_12 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 236; __pyx_clineno = __LINE__; goto __pyx_L4;}
+          __pyx_v_temp_string = __pyx_t_12;
+
+          /* "h5py/_conv.pyx":237
+ *                     temp_object = PyObject_Str(buf_obj[0])
+ *                     temp_string = PyBytes_AsString(temp_object)
+ *                     temp_string_len = PyBytes_Size(temp_object)             # <<<<<<<<<<<<<<
+ *                 elif sizes.cset == H5T_CSET_UTF8:
+ *                     temp_object = PyObject_Str(buf_obj[0])
+ */
+          __pyx_t_4 = PyBytes_Size(__pyx_v_temp_object); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 237; __pyx_clineno = __LINE__; goto __pyx_L4;}
+          __pyx_v_temp_string_len = __pyx_t_4;
+          goto __pyx_L19;
+        }
+
+        /* "h5py/_conv.pyx":238
+ *                     temp_string = PyBytes_AsString(temp_object)
+ *                     temp_string_len = PyBytes_Size(temp_object)
+ *                 elif sizes.cset == H5T_CSET_UTF8:             # <<<<<<<<<<<<<<
+ *                     temp_object = PyObject_Str(buf_obj[0])
+ *                     Py_INCREF(temp_object)
+ */
+        __pyx_t_3 = (__pyx_v_sizes->cset == H5T_CSET_UTF8);
+        if (__pyx_t_3) {
+
+          /* "h5py/_conv.pyx":239
+ *                     temp_string_len = PyBytes_Size(temp_object)
+ *                 elif sizes.cset == H5T_CSET_UTF8:
+ *                     temp_object = PyObject_Str(buf_obj[0])             # <<<<<<<<<<<<<<
+ *                     Py_INCREF(temp_object)
+ *                     temp_encoded = PyUnicode_AsUTF8String(temp_object)
+ */
+          __pyx_t_13 = PyObject_Str((__pyx_v_buf_obj[0])); if (unlikely(__pyx_t_13 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 239; __pyx_clineno = __LINE__; goto __pyx_L4;}
+          __pyx_v_temp_object = __pyx_t_13;
+
+          /* "h5py/_conv.pyx":240
+ *                 elif sizes.cset == H5T_CSET_UTF8:
+ *                     temp_object = PyObject_Str(buf_obj[0])
+ *                     Py_INCREF(temp_object)             # <<<<<<<<<<<<<<
+ *                     temp_encoded = PyUnicode_AsUTF8String(temp_object)
+ *                     Py_INCREF(temp_encoded)
+ */
+          Py_INCREF(__pyx_v_temp_object);
+
+          /* "h5py/_conv.pyx":241
+ *                     temp_object = PyObject_Str(buf_obj[0])
+ *                     Py_INCREF(temp_object)
+ *                     temp_encoded = PyUnicode_AsUTF8String(temp_object)             # <<<<<<<<<<<<<<
+ *                     Py_INCREF(temp_encoded)
+ *                     temp_string = PyBytes_AsString(temp_encoded)
+ */
+          __pyx_t_13 = PyUnicode_AsUTF8String(__pyx_v_temp_object); if (unlikely(__pyx_t_13 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 241; __pyx_clineno = __LINE__; goto __pyx_L4;}
+          __pyx_v_temp_encoded = __pyx_t_13;
+
+          /* "h5py/_conv.pyx":242
+ *                     Py_INCREF(temp_object)
+ *                     temp_encoded = PyUnicode_AsUTF8String(temp_object)
+ *                     Py_INCREF(temp_encoded)             # <<<<<<<<<<<<<<
+ *                     temp_string = PyBytes_AsString(temp_encoded)
+ *                     temp_string_len = PyBytes_Size(temp_encoded)
+ */
+          Py_INCREF(__pyx_v_temp_encoded);
+
+          /* "h5py/_conv.pyx":243
+ *                     temp_encoded = PyUnicode_AsUTF8String(temp_object)
+ *                     Py_INCREF(temp_encoded)
+ *                     temp_string = PyBytes_AsString(temp_encoded)             # <<<<<<<<<<<<<<
+ *                     temp_string_len = PyBytes_Size(temp_encoded)
+ *                 else:
+ */
+          __pyx_t_12 = PyBytes_AsString(__pyx_v_temp_encoded); if (unlikely(__pyx_t_12 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L4;}
+          __pyx_v_temp_string = __pyx_t_12;
+
+          /* "h5py/_conv.pyx":244
+ *                     Py_INCREF(temp_encoded)
+ *                     temp_string = PyBytes_AsString(temp_encoded)
+ *                     temp_string_len = PyBytes_Size(temp_encoded)             # <<<<<<<<<<<<<<
+ *                 else:
+ *                     raise TypeError("Unrecognized dataset encoding")
+ */
+          __pyx_t_4 = PyBytes_Size(__pyx_v_temp_encoded); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 244; __pyx_clineno = __LINE__; goto __pyx_L4;}
+          __pyx_v_temp_string_len = __pyx_t_4;
+          goto __pyx_L19;
+        }
+        /*else*/ {
+
+          /* "h5py/_conv.pyx":246
+ *                     temp_string_len = PyBytes_Size(temp_encoded)
+ *                 else:
+ *                     raise TypeError("Unrecognized dataset encoding")             # <<<<<<<<<<<<<<
+ * 
+ *         if strlen(temp_string) != temp_string_len:
+ */
+          __pyx_t_10 = PyObject_Call(__pyx_builtin_TypeError, ((PyObject *)__pyx_k_tuple_6), NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 246; __pyx_clineno = __LINE__; goto __pyx_L4;}
+          __Pyx_GOTREF(__pyx_t_10);
+          __Pyx_Raise(__pyx_t_10, 0, 0, 0);
+          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 246; __pyx_clineno = __LINE__; goto __pyx_L4;}
+        }
+        __pyx_L19:;
+      }
+      __pyx_L7:;
+    }
+    __pyx_L6:;
+
+    /* "h5py/_conv.pyx":248
+ *                     raise TypeError("Unrecognized dataset encoding")
+ * 
+ *         if strlen(temp_string) != temp_string_len:             # <<<<<<<<<<<<<<
+ *             raise ValueError("VLEN strings do not support embedded NULLs")
+ * 
+ */
+    __pyx_t_3 = (strlen(__pyx_v_temp_string) != __pyx_v_temp_string_len);
+    if (__pyx_t_3) {
+
+      /* "h5py/_conv.pyx":249
+ * 
+ *         if strlen(temp_string) != temp_string_len:
+ *             raise ValueError("VLEN strings do not support embedded NULLs")             # <<<<<<<<<<<<<<
+ * 
+ *         buf_cstring[0] = <char*>malloc(temp_string_len+1)
+ */
+      __pyx_t_10 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_8), NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L4;}
+      __Pyx_GOTREF(__pyx_t_10);
+      __Pyx_Raise(__pyx_t_10, 0, 0, 0);
+      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L4;}
+      goto __pyx_L20;
+    }
+    __pyx_L20:;
+
+    /* "h5py/_conv.pyx":251
+ *             raise ValueError("VLEN strings do not support embedded NULLs")
+ * 
+ *         buf_cstring[0] = <char*>malloc(temp_string_len+1)             # <<<<<<<<<<<<<<
+ *         memcpy(buf_cstring[0], temp_string, temp_string_len+1)
+ * 
+ */
+    (__pyx_v_buf_cstring[0]) = ((char *)malloc((__pyx_v_temp_string_len + 1)));
+
+    /* "h5py/_conv.pyx":252
+ * 
+ *         buf_cstring[0] = <char*>malloc(temp_string_len+1)
+ *         memcpy(buf_cstring[0], temp_string, temp_string_len+1)             # <<<<<<<<<<<<<<
+ * 
+ *         return 0
+ */
+    memcpy((__pyx_v_buf_cstring[0]), __pyx_v_temp_string, (__pyx_v_temp_string_len + 1));
+
+    /* "h5py/_conv.pyx":254
+ *         memcpy(buf_cstring[0], temp_string, temp_string_len+1)
+ * 
+ *         return 0             # <<<<<<<<<<<<<<
+ *     finally:
+ *         Py_XDECREF(temp_object)
+ */
+    __pyx_r = 0;
+    goto __pyx_L3;
+  }
+
+  /* "h5py/_conv.pyx":256
+ *         return 0
+ *     finally:
+ *         Py_XDECREF(temp_object)             # <<<<<<<<<<<<<<
+ *         Py_XDECREF(temp_encoded)
+ * 
+ */
+  /*finally:*/ {
+    int __pyx_why;
+    PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb;
+    int __pyx_exc_lineno;
+    __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
+    __pyx_why = 0; goto __pyx_L5;
+    __pyx_L3: __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
+    __pyx_why = 3; goto __pyx_L5;
+    __pyx_L4: {
+      __pyx_why = 4;
+      __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
+      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+      __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb);
+      __pyx_exc_lineno = __pyx_lineno;
+      goto __pyx_L5;
+    }
+    __pyx_L5:;
+    Py_XDECREF(__pyx_v_temp_object);
+
+    /* "h5py/_conv.pyx":257
+ *     finally:
+ *         Py_XDECREF(temp_object)
+ *         Py_XDECREF(temp_encoded)             # <<<<<<<<<<<<<<
+ * 
+ * # =============================================================================
+ */
+    Py_XDECREF(__pyx_v_temp_encoded);
+    switch (__pyx_why) {
+      case 3: goto __pyx_L0;
+      case 4: {
+        __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb);
+        __pyx_lineno = __pyx_exc_lineno;
+        __pyx_exc_type = 0;
+        __pyx_exc_value = 0;
+        __pyx_exc_tb = 0;
+        goto __pyx_L1_error;
+      }
+    }
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_8);
+  __Pyx_XDECREF(__pyx_t_9);
+  __Pyx_XDECREF(__pyx_t_10);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py._conv.conv_str2vlen", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/_conv.pyx":262
+ * # VLEN to fixed-width strings
+ * 
+ * cdef herr_t init_vlen2fixed(hid_t src, hid_t dst, void** priv) except -1:             # <<<<<<<<<<<<<<
+ * 
+ *     cdef conv_size_t *sizes
+ */
+
+static herr_t __pyx_f_4h5py_5_conv_init_vlen2fixed(hid_t __pyx_v_src, hid_t __pyx_v_dst, void **__pyx_v_priv) {
+  __pyx_t_4h5py_5_conv_conv_size_t *__pyx_v_sizes;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  htri_t __pyx_t_1;
+  htri_t __pyx_t_2;
+  int __pyx_t_3;
+  int __pyx_t_4;
+  size_t __pyx_t_5;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("init_vlen2fixed", 0);
+
+  /* "h5py/_conv.pyx":266
+ *     cdef conv_size_t *sizes
+ * 
+ *     if not (H5Tis_variable_str(src) and (not H5Tis_variable_str(dst))):             # <<<<<<<<<<<<<<
+ *         return -2
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Tis_variable_str(__pyx_v_src); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 266; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__pyx_t_1) {
+    __pyx_t_2 = __pyx_f_4h5py_4defs_H5Tis_variable_str(__pyx_v_dst); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 266; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = (!__pyx_t_2);
+    __pyx_t_4 = __pyx_t_3;
+  } else {
+    __pyx_t_4 = __pyx_t_1;
+  }
+  __pyx_t_3 = (!__pyx_t_4);
+  if (__pyx_t_3) {
+
+    /* "h5py/_conv.pyx":267
+ * 
+ *     if not (H5Tis_variable_str(src) and (not H5Tis_variable_str(dst))):
+ *         return -2             # <<<<<<<<<<<<<<
+ * 
+ *     sizes = <conv_size_t*>malloc(sizeof(conv_size_t))
+ */
+    __pyx_r = -2;
+    goto __pyx_L0;
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  /* "h5py/_conv.pyx":269
+ *         return -2
+ * 
+ *     sizes = <conv_size_t*>malloc(sizeof(conv_size_t))             # <<<<<<<<<<<<<<
+ *     priv[0] = sizes
+ *     sizes[0].src_size = H5Tget_size(src)
+ */
+  __pyx_v_sizes = ((__pyx_t_4h5py_5_conv_conv_size_t *)malloc((sizeof(__pyx_t_4h5py_5_conv_conv_size_t))));
+
+  /* "h5py/_conv.pyx":270
+ * 
+ *     sizes = <conv_size_t*>malloc(sizeof(conv_size_t))
+ *     priv[0] = sizes             # <<<<<<<<<<<<<<
+ *     sizes[0].src_size = H5Tget_size(src)
+ *     sizes[0].dst_size = H5Tget_size(dst)
+ */
+  (__pyx_v_priv[0]) = __pyx_v_sizes;
+
+  /* "h5py/_conv.pyx":271
+ *     sizes = <conv_size_t*>malloc(sizeof(conv_size_t))
+ *     priv[0] = sizes
+ *     sizes[0].src_size = H5Tget_size(src)             # <<<<<<<<<<<<<<
+ *     sizes[0].dst_size = H5Tget_size(dst)
+ * 
+ */
+  __pyx_t_5 = __pyx_f_4h5py_4defs_H5Tget_size(__pyx_v_src); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 271; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  (__pyx_v_sizes[0]).src_size = __pyx_t_5;
+
+  /* "h5py/_conv.pyx":272
+ *     priv[0] = sizes
+ *     sizes[0].src_size = H5Tget_size(src)
+ *     sizes[0].dst_size = H5Tget_size(dst)             # <<<<<<<<<<<<<<
+ * 
+ *     return 0
+ */
+  __pyx_t_5 = __pyx_f_4h5py_4defs_H5Tget_size(__pyx_v_dst); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 272; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  (__pyx_v_sizes[0]).dst_size = __pyx_t_5;
+
+  /* "h5py/_conv.pyx":274
+ *     sizes[0].dst_size = H5Tget_size(dst)
+ * 
+ *     return 0             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t init_fixed2vlen(hid_t src, hid_t dst, void** priv) except -1:
+ */
+  __pyx_r = 0;
+  goto __pyx_L0;
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py._conv.init_vlen2fixed", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/_conv.pyx":276
+ *     return 0
+ * 
+ * cdef herr_t init_fixed2vlen(hid_t src, hid_t dst, void** priv) except -1:             # <<<<<<<<<<<<<<
+ * 
+ *     cdef conv_size_t *sizes
+ */
+
+static herr_t __pyx_f_4h5py_5_conv_init_fixed2vlen(hid_t __pyx_v_src, hid_t __pyx_v_dst, void **__pyx_v_priv) {
+  __pyx_t_4h5py_5_conv_conv_size_t *__pyx_v_sizes;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  htri_t __pyx_t_1;
+  htri_t __pyx_t_2;
+  int __pyx_t_3;
+  int __pyx_t_4;
+  size_t __pyx_t_5;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("init_fixed2vlen", 0);
+
+  /* "h5py/_conv.pyx":280
+ *     cdef conv_size_t *sizes
+ * 
+ *     if not (H5Tis_variable_str(dst) and (not H5Tis_variable_str(src))):             # <<<<<<<<<<<<<<
+ *         return -2
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Tis_variable_str(__pyx_v_dst); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 280; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__pyx_t_1) {
+    __pyx_t_2 = __pyx_f_4h5py_4defs_H5Tis_variable_str(__pyx_v_src); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 280; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = (!__pyx_t_2);
+    __pyx_t_4 = __pyx_t_3;
+  } else {
+    __pyx_t_4 = __pyx_t_1;
+  }
+  __pyx_t_3 = (!__pyx_t_4);
+  if (__pyx_t_3) {
+
+    /* "h5py/_conv.pyx":281
+ * 
+ *     if not (H5Tis_variable_str(dst) and (not H5Tis_variable_str(src))):
+ *         return -2             # <<<<<<<<<<<<<<
+ * 
+ *     sizes = <conv_size_t*>malloc(sizeof(conv_size_t))
+ */
+    __pyx_r = -2;
+    goto __pyx_L0;
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  /* "h5py/_conv.pyx":283
+ *         return -2
+ * 
+ *     sizes = <conv_size_t*>malloc(sizeof(conv_size_t))             # <<<<<<<<<<<<<<
+ *     priv[0] = sizes
+ *     sizes[0].src_size = H5Tget_size(src)
+ */
+  __pyx_v_sizes = ((__pyx_t_4h5py_5_conv_conv_size_t *)malloc((sizeof(__pyx_t_4h5py_5_conv_conv_size_t))));
+
+  /* "h5py/_conv.pyx":284
+ * 
+ *     sizes = <conv_size_t*>malloc(sizeof(conv_size_t))
+ *     priv[0] = sizes             # <<<<<<<<<<<<<<
+ *     sizes[0].src_size = H5Tget_size(src)
+ *     sizes[0].dst_size = H5Tget_size(dst)
+ */
+  (__pyx_v_priv[0]) = __pyx_v_sizes;
+
+  /* "h5py/_conv.pyx":285
+ *     sizes = <conv_size_t*>malloc(sizeof(conv_size_t))
+ *     priv[0] = sizes
+ *     sizes[0].src_size = H5Tget_size(src)             # <<<<<<<<<<<<<<
+ *     sizes[0].dst_size = H5Tget_size(dst)
+ * 
+ */
+  __pyx_t_5 = __pyx_f_4h5py_4defs_H5Tget_size(__pyx_v_src); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 285; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  (__pyx_v_sizes[0]).src_size = __pyx_t_5;
+
+  /* "h5py/_conv.pyx":286
+ *     priv[0] = sizes
+ *     sizes[0].src_size = H5Tget_size(src)
+ *     sizes[0].dst_size = H5Tget_size(dst)             # <<<<<<<<<<<<<<
+ * 
+ *     return 0
+ */
+  __pyx_t_5 = __pyx_f_4h5py_4defs_H5Tget_size(__pyx_v_dst); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 286; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  (__pyx_v_sizes[0]).dst_size = __pyx_t_5;
+
+  /* "h5py/_conv.pyx":288
+ *     sizes[0].dst_size = H5Tget_size(dst)
+ * 
+ *     return 0             # <<<<<<<<<<<<<<
+ * 
+ * cdef int conv_vlen2fixed(void* ipt, void* opt, void* bkg, void* priv) except -1:
+ */
+  __pyx_r = 0;
+  goto __pyx_L0;
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py._conv.init_fixed2vlen", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/_conv.pyx":290
+ *     return 0
+ * 
+ * cdef int conv_vlen2fixed(void* ipt, void* opt, void* bkg, void* priv) except -1:             # <<<<<<<<<<<<<<
+ * 
+ *     cdef char** buf_vlen = <char**>ipt
+ */
+
+static int __pyx_f_4h5py_5_conv_conv_vlen2fixed(void *__pyx_v_ipt, void *__pyx_v_opt, CYTHON_UNUSED void *__pyx_v_bkg, void *__pyx_v_priv) {
+  char **__pyx_v_buf_vlen;
+  char *__pyx_v_buf_fixed;
+  char *__pyx_v_temp_string;
+  size_t __pyx_v_temp_string_len;
+  __pyx_t_4h5py_5_conv_conv_size_t *__pyx_v_sizes;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  __Pyx_RefNannySetupContext("conv_vlen2fixed", 0);
+
+  /* "h5py/_conv.pyx":292
+ * cdef int conv_vlen2fixed(void* ipt, void* opt, void* bkg, void* priv) except -1:
+ * 
+ *     cdef char** buf_vlen = <char**>ipt             # <<<<<<<<<<<<<<
+ *     cdef char* buf_fixed = <char*>opt
+ *     cdef char* temp_string = NULL
+ */
+  __pyx_v_buf_vlen = ((char **)__pyx_v_ipt);
+
+  /* "h5py/_conv.pyx":293
+ * 
+ *     cdef char** buf_vlen = <char**>ipt
+ *     cdef char* buf_fixed = <char*>opt             # <<<<<<<<<<<<<<
+ *     cdef char* temp_string = NULL
+ *     cdef size_t temp_string_len = 0  # Without null term
+ */
+  __pyx_v_buf_fixed = ((char *)__pyx_v_opt);
+
+  /* "h5py/_conv.pyx":294
+ *     cdef char** buf_vlen = <char**>ipt
+ *     cdef char* buf_fixed = <char*>opt
+ *     cdef char* temp_string = NULL             # <<<<<<<<<<<<<<
+ *     cdef size_t temp_string_len = 0  # Without null term
+ *     cdef conv_size_t *sizes = <conv_size_t*>priv
+ */
+  __pyx_v_temp_string = NULL;
+
+  /* "h5py/_conv.pyx":295
+ *     cdef char* buf_fixed = <char*>opt
+ *     cdef char* temp_string = NULL
+ *     cdef size_t temp_string_len = 0  # Without null term             # <<<<<<<<<<<<<<
+ *     cdef conv_size_t *sizes = <conv_size_t*>priv
+ * 
+ */
+  __pyx_v_temp_string_len = 0;
+
+  /* "h5py/_conv.pyx":296
+ *     cdef char* temp_string = NULL
+ *     cdef size_t temp_string_len = 0  # Without null term
+ *     cdef conv_size_t *sizes = <conv_size_t*>priv             # <<<<<<<<<<<<<<
+ * 
+ *     if buf_vlen[0] != NULL:
+ */
+  __pyx_v_sizes = ((__pyx_t_4h5py_5_conv_conv_size_t *)__pyx_v_priv);
+
+  /* "h5py/_conv.pyx":298
+ *     cdef conv_size_t *sizes = <conv_size_t*>priv
+ * 
+ *     if buf_vlen[0] != NULL:             # <<<<<<<<<<<<<<
+ *         temp_string = buf_vlen[0]
+ *         temp_string_len = strlen(temp_string)
+ */
+  __pyx_t_1 = ((__pyx_v_buf_vlen[0]) != NULL);
+  if (__pyx_t_1) {
+
+    /* "h5py/_conv.pyx":299
+ * 
+ *     if buf_vlen[0] != NULL:
+ *         temp_string = buf_vlen[0]             # <<<<<<<<<<<<<<
+ *         temp_string_len = strlen(temp_string)
+ * 
+ */
+    __pyx_v_temp_string = (__pyx_v_buf_vlen[0]);
+
+    /* "h5py/_conv.pyx":300
+ *     if buf_vlen[0] != NULL:
+ *         temp_string = buf_vlen[0]
+ *         temp_string_len = strlen(temp_string)             # <<<<<<<<<<<<<<
+ * 
+ *         if temp_string_len <= sizes[0].dst_size:
+ */
+    __pyx_v_temp_string_len = strlen(__pyx_v_temp_string);
+
+    /* "h5py/_conv.pyx":302
+ *         temp_string_len = strlen(temp_string)
+ * 
+ *         if temp_string_len <= sizes[0].dst_size:             # <<<<<<<<<<<<<<
+ *             # Pad with zeros
+ *             memcpy(buf_fixed, temp_string, temp_string_len)
+ */
+    __pyx_t_1 = (__pyx_v_temp_string_len <= (__pyx_v_sizes[0]).dst_size);
+    if (__pyx_t_1) {
+
+      /* "h5py/_conv.pyx":304
+ *         if temp_string_len <= sizes[0].dst_size:
+ *             # Pad with zeros
+ *             memcpy(buf_fixed, temp_string, temp_string_len)             # <<<<<<<<<<<<<<
+ *             memset(buf_fixed + temp_string_len, c'\0', sizes[0].dst_size - temp_string_len)
+ *         else:
+ */
+      memcpy(__pyx_v_buf_fixed, __pyx_v_temp_string, __pyx_v_temp_string_len);
+
+      /* "h5py/_conv.pyx":305
+ *             # Pad with zeros
+ *             memcpy(buf_fixed, temp_string, temp_string_len)
+ *             memset(buf_fixed + temp_string_len, c'\0', sizes[0].dst_size - temp_string_len)             # <<<<<<<<<<<<<<
+ *         else:
+ *             # Simply truncate the string
+ */
+      memset((__pyx_v_buf_fixed + __pyx_v_temp_string_len), '\x00', ((__pyx_v_sizes[0]).dst_size - __pyx_v_temp_string_len));
+      goto __pyx_L4;
+    }
+    /*else*/ {
+
+      /* "h5py/_conv.pyx":308
+ *         else:
+ *             # Simply truncate the string
+ *             memcpy(buf_fixed, temp_string, sizes[0].dst_size)             # <<<<<<<<<<<<<<
+ *     else:
+ *         memset(buf_fixed, c'\0', sizes[0].dst_size)
+ */
+      memcpy(__pyx_v_buf_fixed, __pyx_v_temp_string, (__pyx_v_sizes[0]).dst_size);
+    }
+    __pyx_L4:;
+    goto __pyx_L3;
+  }
+  /*else*/ {
+
+    /* "h5py/_conv.pyx":310
+ *             memcpy(buf_fixed, temp_string, sizes[0].dst_size)
+ *     else:
+ *         memset(buf_fixed, c'\0', sizes[0].dst_size)             # <<<<<<<<<<<<<<
+ * 
+ *     return 0
+ */
+    memset(__pyx_v_buf_fixed, '\x00', (__pyx_v_sizes[0]).dst_size);
+  }
+  __pyx_L3:;
+
+  /* "h5py/_conv.pyx":312
+ *         memset(buf_fixed, c'\0', sizes[0].dst_size)
+ * 
+ *     return 0             # <<<<<<<<<<<<<<
+ * 
+ * cdef int conv_fixed2vlen(void* ipt, void* opt, void* bkg, void* priv) except -1:
+ */
+  __pyx_r = 0;
+  goto __pyx_L0;
+
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/_conv.pyx":314
+ *     return 0
+ * 
+ * cdef int conv_fixed2vlen(void* ipt, void* opt, void* bkg, void* priv) except -1:             # <<<<<<<<<<<<<<
+ * 
+ *     cdef char** buf_vlen = <char**>opt
+ */
+
+static int __pyx_f_4h5py_5_conv_conv_fixed2vlen(void *__pyx_v_ipt, void *__pyx_v_opt, CYTHON_UNUSED void *__pyx_v_bkg, void *__pyx_v_priv) {
+  char **__pyx_v_buf_vlen;
+  char *__pyx_v_buf_fixed;
+  char *__pyx_v_temp_string;
+  __pyx_t_4h5py_5_conv_conv_size_t *__pyx_v_sizes;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("conv_fixed2vlen", 0);
+
+  /* "h5py/_conv.pyx":316
+ * cdef int conv_fixed2vlen(void* ipt, void* opt, void* bkg, void* priv) except -1:
+ * 
+ *     cdef char** buf_vlen = <char**>opt             # <<<<<<<<<<<<<<
+ *     cdef char* buf_fixed = <char*>ipt
+ *     cdef char* temp_string = NULL
+ */
+  __pyx_v_buf_vlen = ((char **)__pyx_v_opt);
+
+  /* "h5py/_conv.pyx":317
+ * 
+ *     cdef char** buf_vlen = <char**>opt
+ *     cdef char* buf_fixed = <char*>ipt             # <<<<<<<<<<<<<<
+ *     cdef char* temp_string = NULL
+ *     cdef conv_size_t *sizes = <conv_size_t*>priv
+ */
+  __pyx_v_buf_fixed = ((char *)__pyx_v_ipt);
+
+  /* "h5py/_conv.pyx":318
+ *     cdef char** buf_vlen = <char**>opt
+ *     cdef char* buf_fixed = <char*>ipt
+ *     cdef char* temp_string = NULL             # <<<<<<<<<<<<<<
+ *     cdef conv_size_t *sizes = <conv_size_t*>priv
+ * 
+ */
+  __pyx_v_temp_string = NULL;
+
+  /* "h5py/_conv.pyx":319
+ *     cdef char* buf_fixed = <char*>ipt
+ *     cdef char* temp_string = NULL
+ *     cdef conv_size_t *sizes = <conv_size_t*>priv             # <<<<<<<<<<<<<<
+ * 
+ *     temp_string = <char*>malloc(sizes[0].src_size+1)
+ */
+  __pyx_v_sizes = ((__pyx_t_4h5py_5_conv_conv_size_t *)__pyx_v_priv);
+
+  /* "h5py/_conv.pyx":321
+ *     cdef conv_size_t *sizes = <conv_size_t*>priv
+ * 
+ *     temp_string = <char*>malloc(sizes[0].src_size+1)             # <<<<<<<<<<<<<<
+ *     memcpy(temp_string, buf_fixed, sizes[0].src_size)
+ *     temp_string[sizes[0].src_size] = c'\0'
+ */
+  __pyx_v_temp_string = ((char *)malloc(((__pyx_v_sizes[0]).src_size + 1)));
+
+  /* "h5py/_conv.pyx":322
+ * 
+ *     temp_string = <char*>malloc(sizes[0].src_size+1)
+ *     memcpy(temp_string, buf_fixed, sizes[0].src_size)             # <<<<<<<<<<<<<<
+ *     temp_string[sizes[0].src_size] = c'\0'
+ * 
+ */
+  memcpy(__pyx_v_temp_string, __pyx_v_buf_fixed, (__pyx_v_sizes[0]).src_size);
+
+  /* "h5py/_conv.pyx":323
+ *     temp_string = <char*>malloc(sizes[0].src_size+1)
+ *     memcpy(temp_string, buf_fixed, sizes[0].src_size)
+ *     temp_string[sizes[0].src_size] = c'\0'             # <<<<<<<<<<<<<<
+ * 
+ *     buf_vlen[0] = temp_string
+ */
+  (__pyx_v_temp_string[(__pyx_v_sizes[0]).src_size]) = '\x00';
+
+  /* "h5py/_conv.pyx":325
+ *     temp_string[sizes[0].src_size] = c'\0'
+ * 
+ *     buf_vlen[0] = temp_string             # <<<<<<<<<<<<<<
+ * 
+ *     return 0
+ */
+  (__pyx_v_buf_vlen[0]) = __pyx_v_temp_string;
+
+  /* "h5py/_conv.pyx":327
+ *     buf_vlen[0] = temp_string
+ * 
+ *     return 0             # <<<<<<<<<<<<<<
+ * 
+ * # =============================================================================
+ */
+  __pyx_r = 0;
+  goto __pyx_L0;
+
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/_conv.pyx":332
+ * # HDF5 references to Python instances of h5r.Reference
+ * 
+ * cdef int conv_objref2pyref(void* ipt, void* opt, void* bkg, void* priv) except -1:             # <<<<<<<<<<<<<<
+ * 
+ *     cdef PyObject** buf_obj = <PyObject**>opt
+ */
+
+static int __pyx_f_4h5py_5_conv_conv_objref2pyref(void *__pyx_v_ipt, void *__pyx_v_opt, void *__pyx_v_bkg, CYTHON_UNUSED void *__pyx_v_priv) {
+  PyObject **__pyx_v_buf_obj;
+  PyObject **__pyx_v_bkg_obj;
+  hobj_ref_t *__pyx_v_buf_ref;
+  struct __pyx_obj_4h5py_3h5r_Reference *__pyx_v_ref = 0;
+  PyObject *__pyx_v_ref_ptr;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("conv_objref2pyref", 0);
+
+  /* "h5py/_conv.pyx":334
+ * cdef int conv_objref2pyref(void* ipt, void* opt, void* bkg, void* priv) except -1:
+ * 
+ *     cdef PyObject** buf_obj = <PyObject**>opt             # <<<<<<<<<<<<<<
+ *     cdef PyObject** bkg_obj = <PyObject**>bkg
+ *     cdef hobj_ref_t* buf_ref = <hobj_ref_t*>ipt
+ */
+  __pyx_v_buf_obj = ((PyObject **)__pyx_v_opt);
+
+  /* "h5py/_conv.pyx":335
+ * 
+ *     cdef PyObject** buf_obj = <PyObject**>opt
+ *     cdef PyObject** bkg_obj = <PyObject**>bkg             # <<<<<<<<<<<<<<
+ *     cdef hobj_ref_t* buf_ref = <hobj_ref_t*>ipt
+ * 
+ */
+  __pyx_v_bkg_obj = ((PyObject **)__pyx_v_bkg);
+
+  /* "h5py/_conv.pyx":336
+ *     cdef PyObject** buf_obj = <PyObject**>opt
+ *     cdef PyObject** bkg_obj = <PyObject**>bkg
+ *     cdef hobj_ref_t* buf_ref = <hobj_ref_t*>ipt             # <<<<<<<<<<<<<<
+ * 
+ *     cdef Reference ref = Reference()
+ */
+  __pyx_v_buf_ref = ((hobj_ref_t *)__pyx_v_ipt);
+
+  /* "h5py/_conv.pyx":338
+ *     cdef hobj_ref_t* buf_ref = <hobj_ref_t*>ipt
+ * 
+ *     cdef Reference ref = Reference()             # <<<<<<<<<<<<<<
+ *     cdef PyObject* ref_ptr = NULL
+ * 
+ */
+  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4h5py_3h5r_Reference)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 338; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_ref = ((struct __pyx_obj_4h5py_3h5r_Reference *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "h5py/_conv.pyx":339
+ * 
+ *     cdef Reference ref = Reference()
+ *     cdef PyObject* ref_ptr = NULL             # <<<<<<<<<<<<<<
+ * 
+ *     ref.ref.obj_ref = buf_ref[0]
+ */
+  __pyx_v_ref_ptr = NULL;
+
+  /* "h5py/_conv.pyx":341
+ *     cdef PyObject* ref_ptr = NULL
+ * 
+ *     ref.ref.obj_ref = buf_ref[0]             # <<<<<<<<<<<<<<
+ *     ref.typecode = H5R_OBJECT
+ * 
+ */
+  __pyx_v_ref->ref.obj_ref = (__pyx_v_buf_ref[0]);
+
+  /* "h5py/_conv.pyx":342
+ * 
+ *     ref.ref.obj_ref = buf_ref[0]
+ *     ref.typecode = H5R_OBJECT             # <<<<<<<<<<<<<<
+ * 
+ *     ref_ptr = <PyObject*>ref
+ */
+  __pyx_v_ref->typecode = H5R_OBJECT;
+
+  /* "h5py/_conv.pyx":344
+ *     ref.typecode = H5R_OBJECT
+ * 
+ *     ref_ptr = <PyObject*>ref             # <<<<<<<<<<<<<<
+ *     Py_INCREF(ref_ptr)  # because Cython discards its reference when the
+ *                         # function exits
+ */
+  __pyx_v_ref_ptr = ((PyObject *)__pyx_v_ref);
+
+  /* "h5py/_conv.pyx":345
+ * 
+ *     ref_ptr = <PyObject*>ref
+ *     Py_INCREF(ref_ptr)  # because Cython discards its reference when the             # <<<<<<<<<<<<<<
+ *                         # function exits
+ * 
+ */
+  Py_INCREF(__pyx_v_ref_ptr);
+
+  /* "h5py/_conv.pyx":348
+ *                         # function exits
+ * 
+ *     Py_XDECREF(bkg_obj[0])             # <<<<<<<<<<<<<<
+ *     buf_obj[0] = ref_ptr
+ * 
+ */
+  Py_XDECREF((__pyx_v_bkg_obj[0]));
+
+  /* "h5py/_conv.pyx":349
+ * 
+ *     Py_XDECREF(bkg_obj[0])
+ *     buf_obj[0] = ref_ptr             # <<<<<<<<<<<<<<
+ * 
+ *     return 0
+ */
+  (__pyx_v_buf_obj[0]) = __pyx_v_ref_ptr;
+
+  /* "h5py/_conv.pyx":351
+ *     buf_obj[0] = ref_ptr
+ * 
+ *     return 0             # <<<<<<<<<<<<<<
+ * 
+ * cdef int conv_pyref2objref(void* ipt, void* opt, void* bkg, void* priv) except -1:
+ */
+  __pyx_r = 0;
+  goto __pyx_L0;
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py._conv.conv_objref2pyref", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_ref);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/_conv.pyx":353
+ *     return 0
+ * 
+ * cdef int conv_pyref2objref(void* ipt, void* opt, void* bkg, void* priv) except -1:             # <<<<<<<<<<<<<<
+ * 
+ *     cdef PyObject** buf_obj = <PyObject**>ipt
+ */
+
+static int __pyx_f_4h5py_5_conv_conv_pyref2objref(void *__pyx_v_ipt, void *__pyx_v_opt, CYTHON_UNUSED void *__pyx_v_bkg, CYTHON_UNUSED void *__pyx_v_priv) {
+  PyObject **__pyx_v_buf_obj;
+  hobj_ref_t *__pyx_v_buf_ref;
+  PyObject *__pyx_v_obj = 0;
+  struct __pyx_obj_4h5py_3h5r_Reference *__pyx_v_ref = 0;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  int __pyx_t_2;
+  int __pyx_t_3;
+  PyObject *__pyx_t_4 = NULL;
+  hobj_ref_t __pyx_t_5;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("conv_pyref2objref", 0);
+
+  /* "h5py/_conv.pyx":355
+ * cdef int conv_pyref2objref(void* ipt, void* opt, void* bkg, void* priv) except -1:
+ * 
+ *     cdef PyObject** buf_obj = <PyObject**>ipt             # <<<<<<<<<<<<<<
+ *     cdef hobj_ref_t* buf_ref = <hobj_ref_t*>opt
+ * 
+ */
+  __pyx_v_buf_obj = ((PyObject **)__pyx_v_ipt);
+
+  /* "h5py/_conv.pyx":356
+ * 
+ *     cdef PyObject** buf_obj = <PyObject**>ipt
+ *     cdef hobj_ref_t* buf_ref = <hobj_ref_t*>opt             # <<<<<<<<<<<<<<
+ * 
+ *     cdef object obj
+ */
+  __pyx_v_buf_ref = ((hobj_ref_t *)__pyx_v_opt);
+
+  /* "h5py/_conv.pyx":361
+ *     cdef Reference ref
+ * 
+ *     if buf_obj[0] != NULL and buf_obj[0] != Py_None:             # <<<<<<<<<<<<<<
+ *         obj = <object>(buf_obj[0])
+ *         if not isinstance(obj, Reference):
+ */
+  __pyx_t_1 = ((__pyx_v_buf_obj[0]) != NULL);
+  if (__pyx_t_1) {
+    __pyx_t_2 = ((__pyx_v_buf_obj[0]) != Py_None);
+    __pyx_t_3 = __pyx_t_2;
+  } else {
+    __pyx_t_3 = __pyx_t_1;
+  }
+  if (__pyx_t_3) {
+
+    /* "h5py/_conv.pyx":362
+ * 
+ *     if buf_obj[0] != NULL and buf_obj[0] != Py_None:
+ *         obj = <object>(buf_obj[0])             # <<<<<<<<<<<<<<
+ *         if not isinstance(obj, Reference):
+ *             raise TypeError("Can't convert incompatible object to HDF5 object reference")
+ */
+    __Pyx_INCREF(((PyObject *)(__pyx_v_buf_obj[0])));
+    __pyx_v_obj = ((PyObject *)(__pyx_v_buf_obj[0]));
+
+    /* "h5py/_conv.pyx":363
+ *     if buf_obj[0] != NULL and buf_obj[0] != Py_None:
+ *         obj = <object>(buf_obj[0])
+ *         if not isinstance(obj, Reference):             # <<<<<<<<<<<<<<
+ *             raise TypeError("Can't convert incompatible object to HDF5 object reference")
+ *         ref = <Reference>(buf_obj[0])
+ */
+    __pyx_t_3 = __Pyx_TypeCheck(__pyx_v_obj, ((PyObject*)__pyx_ptype_4h5py_3h5r_Reference)); 
+    __pyx_t_1 = (!__pyx_t_3);
+    if (__pyx_t_1) {
+
+      /* "h5py/_conv.pyx":364
+ *         obj = <object>(buf_obj[0])
+ *         if not isinstance(obj, Reference):
+ *             raise TypeError("Can't convert incompatible object to HDF5 object reference")             # <<<<<<<<<<<<<<
+ *         ref = <Reference>(buf_obj[0])
+ *         buf_ref[0] = ref.ref.obj_ref
+ */
+      __pyx_t_4 = PyObject_Call(__pyx_builtin_TypeError, ((PyObject *)__pyx_k_tuple_10), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 364; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_4);
+      __Pyx_Raise(__pyx_t_4, 0, 0, 0);
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 364; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      goto __pyx_L4;
+    }
+    __pyx_L4:;
+
+    /* "h5py/_conv.pyx":365
+ *         if not isinstance(obj, Reference):
+ *             raise TypeError("Can't convert incompatible object to HDF5 object reference")
+ *         ref = <Reference>(buf_obj[0])             # <<<<<<<<<<<<<<
+ *         buf_ref[0] = ref.ref.obj_ref
+ *     else:
+ */
+    __Pyx_INCREF(((PyObject *)((struct __pyx_obj_4h5py_3h5r_Reference *)(__pyx_v_buf_obj[0]))));
+    __pyx_v_ref = ((struct __pyx_obj_4h5py_3h5r_Reference *)(__pyx_v_buf_obj[0]));
+
+    /* "h5py/_conv.pyx":366
+ *             raise TypeError("Can't convert incompatible object to HDF5 object reference")
+ *         ref = <Reference>(buf_obj[0])
+ *         buf_ref[0] = ref.ref.obj_ref             # <<<<<<<<<<<<<<
+ *     else:
+ *         memset(buf_ref, c'\0', sizeof(hobj_ref_t))
+ */
+    __pyx_t_5 = __pyx_v_ref->ref.obj_ref;
+    (__pyx_v_buf_ref[0]) = __pyx_t_5;
+    goto __pyx_L3;
+  }
+  /*else*/ {
+
+    /* "h5py/_conv.pyx":368
+ *         buf_ref[0] = ref.ref.obj_ref
+ *     else:
+ *         memset(buf_ref, c'\0', sizeof(hobj_ref_t))             # <<<<<<<<<<<<<<
+ * 
+ *     return 0
+ */
+    memset(__pyx_v_buf_ref, '\x00', (sizeof(hobj_ref_t)));
+  }
+  __pyx_L3:;
+
+  /* "h5py/_conv.pyx":370
+ *         memset(buf_ref, c'\0', sizeof(hobj_ref_t))
+ * 
+ *     return 0             # <<<<<<<<<<<<<<
+ * 
+ * cdef int conv_regref2pyref(void* ipt, void* opt, void* bkg, void* priv) except -1:
+ */
+  __pyx_r = 0;
+  goto __pyx_L0;
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("h5py._conv.conv_pyref2objref", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_obj);
+  __Pyx_XDECREF((PyObject *)__pyx_v_ref);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/_conv.pyx":372
+ *     return 0
+ * 
+ * cdef int conv_regref2pyref(void* ipt, void* opt, void* bkg, void* priv) except -1:             # <<<<<<<<<<<<<<
+ * 
+ *     cdef PyObject** buf_obj = <PyObject**>opt
+ */
+
+static int __pyx_f_4h5py_5_conv_conv_regref2pyref(void *__pyx_v_ipt, void *__pyx_v_opt, void *__pyx_v_bkg, CYTHON_UNUSED void *__pyx_v_priv) {
+  PyObject **__pyx_v_buf_obj;
+  PyObject **__pyx_v_bkg_obj;
+  hdset_reg_ref_t *__pyx_v_buf_ref;
+  struct __pyx_obj_4h5py_3h5r_RegionReference *__pyx_v_ref = 0;
+  PyObject *__pyx_v_ref_ptr;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("conv_regref2pyref", 0);
+
+  /* "h5py/_conv.pyx":374
+ * cdef int conv_regref2pyref(void* ipt, void* opt, void* bkg, void* priv) except -1:
+ * 
+ *     cdef PyObject** buf_obj = <PyObject**>opt             # <<<<<<<<<<<<<<
+ *     cdef PyObject** bkg_obj = <PyObject**>bkg
+ *     cdef hdset_reg_ref_t* buf_ref = <hdset_reg_ref_t*>ipt
+ */
+  __pyx_v_buf_obj = ((PyObject **)__pyx_v_opt);
+
+  /* "h5py/_conv.pyx":375
+ * 
+ *     cdef PyObject** buf_obj = <PyObject**>opt
+ *     cdef PyObject** bkg_obj = <PyObject**>bkg             # <<<<<<<<<<<<<<
+ *     cdef hdset_reg_ref_t* buf_ref = <hdset_reg_ref_t*>ipt
+ * 
+ */
+  __pyx_v_bkg_obj = ((PyObject **)__pyx_v_bkg);
+
+  /* "h5py/_conv.pyx":376
+ *     cdef PyObject** buf_obj = <PyObject**>opt
+ *     cdef PyObject** bkg_obj = <PyObject**>bkg
+ *     cdef hdset_reg_ref_t* buf_ref = <hdset_reg_ref_t*>ipt             # <<<<<<<<<<<<<<
+ * 
+ *     cdef RegionReference ref = RegionReference()
+ */
+  __pyx_v_buf_ref = ((hdset_reg_ref_t *)__pyx_v_ipt);
+
+  /* "h5py/_conv.pyx":378
+ *     cdef hdset_reg_ref_t* buf_ref = <hdset_reg_ref_t*>ipt
+ * 
+ *     cdef RegionReference ref = RegionReference()             # <<<<<<<<<<<<<<
+ *     cdef PyObject* ref_ptr = NULL
+ * 
+ */
+  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4h5py_3h5r_RegionReference)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 378; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_ref = ((struct __pyx_obj_4h5py_3h5r_RegionReference *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "h5py/_conv.pyx":379
+ * 
+ *     cdef RegionReference ref = RegionReference()
+ *     cdef PyObject* ref_ptr = NULL             # <<<<<<<<<<<<<<
+ * 
+ *     memcpy(ref.ref.reg_ref, buf_ref, sizeof(hdset_reg_ref_t))
+ */
+  __pyx_v_ref_ptr = NULL;
+
+  /* "h5py/_conv.pyx":381
+ *     cdef PyObject* ref_ptr = NULL
+ * 
+ *     memcpy(ref.ref.reg_ref, buf_ref, sizeof(hdset_reg_ref_t))             # <<<<<<<<<<<<<<
+ * 
+ *     ref.typecode = H5R_DATASET_REGION
+ */
+  memcpy(__pyx_v_ref->__pyx_base.ref.reg_ref, __pyx_v_buf_ref, (sizeof(hdset_reg_ref_t)));
+
+  /* "h5py/_conv.pyx":383
+ *     memcpy(ref.ref.reg_ref, buf_ref, sizeof(hdset_reg_ref_t))
+ * 
+ *     ref.typecode = H5R_DATASET_REGION             # <<<<<<<<<<<<<<
+ * 
+ *     ref_ptr = <PyObject*>ref
+ */
+  __pyx_v_ref->__pyx_base.typecode = H5R_DATASET_REGION;
+
+  /* "h5py/_conv.pyx":385
+ *     ref.typecode = H5R_DATASET_REGION
+ * 
+ *     ref_ptr = <PyObject*>ref             # <<<<<<<<<<<<<<
+ *     Py_INCREF(ref_ptr)  # because Cython discards its reference when the
+ *                         # function exits
+ */
+  __pyx_v_ref_ptr = ((PyObject *)__pyx_v_ref);
+
+  /* "h5py/_conv.pyx":386
+ * 
+ *     ref_ptr = <PyObject*>ref
+ *     Py_INCREF(ref_ptr)  # because Cython discards its reference when the             # <<<<<<<<<<<<<<
+ *                         # function exits
+ * 
+ */
+  Py_INCREF(__pyx_v_ref_ptr);
+
+  /* "h5py/_conv.pyx":389
+ *                         # function exits
+ * 
+ *     Py_XDECREF(bkg_obj[0])             # <<<<<<<<<<<<<<
+ *     buf_obj[0] = ref_ptr
+ * 
+ */
+  Py_XDECREF((__pyx_v_bkg_obj[0]));
+
+  /* "h5py/_conv.pyx":390
+ * 
+ *     Py_XDECREF(bkg_obj[0])
+ *     buf_obj[0] = ref_ptr             # <<<<<<<<<<<<<<
+ * 
+ *     return 0
+ */
+  (__pyx_v_buf_obj[0]) = __pyx_v_ref_ptr;
+
+  /* "h5py/_conv.pyx":392
+ *     buf_obj[0] = ref_ptr
+ * 
+ *     return 0             # <<<<<<<<<<<<<<
+ * 
+ * cdef int conv_pyref2regref(void* ipt, void* opt, void* bkg, void* priv) except -1:
+ */
+  __pyx_r = 0;
+  goto __pyx_L0;
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py._conv.conv_regref2pyref", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_ref);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/_conv.pyx":394
+ *     return 0
+ * 
+ * cdef int conv_pyref2regref(void* ipt, void* opt, void* bkg, void* priv) except -1:             # <<<<<<<<<<<<<<
+ * 
+ *     cdef PyObject** buf_obj = <PyObject**>ipt
+ */
+
+static int __pyx_f_4h5py_5_conv_conv_pyref2regref(void *__pyx_v_ipt, void *__pyx_v_opt, CYTHON_UNUSED void *__pyx_v_bkg, CYTHON_UNUSED void *__pyx_v_priv) {
+  PyObject **__pyx_v_buf_obj;
+  hdset_reg_ref_t *__pyx_v_buf_ref;
+  PyObject *__pyx_v_obj = 0;
+  struct __pyx_obj_4h5py_3h5r_RegionReference *__pyx_v_ref = 0;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  int __pyx_t_2;
+  int __pyx_t_3;
+  PyObject *__pyx_t_4 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("conv_pyref2regref", 0);
+
+  /* "h5py/_conv.pyx":396
+ * cdef int conv_pyref2regref(void* ipt, void* opt, void* bkg, void* priv) except -1:
+ * 
+ *     cdef PyObject** buf_obj = <PyObject**>ipt             # <<<<<<<<<<<<<<
+ *     cdef hdset_reg_ref_t* buf_ref = <hdset_reg_ref_t*>opt
+ * 
+ */
+  __pyx_v_buf_obj = ((PyObject **)__pyx_v_ipt);
+
+  /* "h5py/_conv.pyx":397
+ * 
+ *     cdef PyObject** buf_obj = <PyObject**>ipt
+ *     cdef hdset_reg_ref_t* buf_ref = <hdset_reg_ref_t*>opt             # <<<<<<<<<<<<<<
+ * 
+ *     cdef object obj
+ */
+  __pyx_v_buf_ref = ((hdset_reg_ref_t *)__pyx_v_opt);
+
+  /* "h5py/_conv.pyx":402
+ *     cdef RegionReference ref
+ * 
+ *     if buf_obj[0] != NULL and buf_obj[0] != Py_None:             # <<<<<<<<<<<<<<
+ *         obj = <object>(buf_obj[0])
+ *         if not isinstance(obj, RegionReference):
+ */
+  __pyx_t_1 = ((__pyx_v_buf_obj[0]) != NULL);
+  if (__pyx_t_1) {
+    __pyx_t_2 = ((__pyx_v_buf_obj[0]) != Py_None);
+    __pyx_t_3 = __pyx_t_2;
+  } else {
+    __pyx_t_3 = __pyx_t_1;
+  }
+  if (__pyx_t_3) {
+
+    /* "h5py/_conv.pyx":403
+ * 
+ *     if buf_obj[0] != NULL and buf_obj[0] != Py_None:
+ *         obj = <object>(buf_obj[0])             # <<<<<<<<<<<<<<
+ *         if not isinstance(obj, RegionReference):
+ *             raise TypeError("Can't convert incompatible object to HDF5 region reference")
+ */
+    __Pyx_INCREF(((PyObject *)(__pyx_v_buf_obj[0])));
+    __pyx_v_obj = ((PyObject *)(__pyx_v_buf_obj[0]));
+
+    /* "h5py/_conv.pyx":404
+ *     if buf_obj[0] != NULL and buf_obj[0] != Py_None:
+ *         obj = <object>(buf_obj[0])
+ *         if not isinstance(obj, RegionReference):             # <<<<<<<<<<<<<<
+ *             raise TypeError("Can't convert incompatible object to HDF5 region reference")
+ *         ref = <RegionReference>(buf_obj[0])
+ */
+    __pyx_t_3 = __Pyx_TypeCheck(__pyx_v_obj, ((PyObject*)__pyx_ptype_4h5py_3h5r_RegionReference)); 
+    __pyx_t_1 = (!__pyx_t_3);
+    if (__pyx_t_1) {
+
+      /* "h5py/_conv.pyx":405
+ *         obj = <object>(buf_obj[0])
+ *         if not isinstance(obj, RegionReference):
+ *             raise TypeError("Can't convert incompatible object to HDF5 region reference")             # <<<<<<<<<<<<<<
+ *         ref = <RegionReference>(buf_obj[0])
+ *         memcpy(buf_ref, ref.ref.reg_ref, sizeof(hdset_reg_ref_t))
+ */
+      __pyx_t_4 = PyObject_Call(__pyx_builtin_TypeError, ((PyObject *)__pyx_k_tuple_12), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 405; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_4);
+      __Pyx_Raise(__pyx_t_4, 0, 0, 0);
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 405; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      goto __pyx_L4;
+    }
+    __pyx_L4:;
+
+    /* "h5py/_conv.pyx":406
+ *         if not isinstance(obj, RegionReference):
+ *             raise TypeError("Can't convert incompatible object to HDF5 region reference")
+ *         ref = <RegionReference>(buf_obj[0])             # <<<<<<<<<<<<<<
+ *         memcpy(buf_ref, ref.ref.reg_ref, sizeof(hdset_reg_ref_t))
+ *     else:
+ */
+    __Pyx_INCREF(((PyObject *)((struct __pyx_obj_4h5py_3h5r_RegionReference *)(__pyx_v_buf_obj[0]))));
+    __pyx_v_ref = ((struct __pyx_obj_4h5py_3h5r_RegionReference *)(__pyx_v_buf_obj[0]));
+
+    /* "h5py/_conv.pyx":407
+ *             raise TypeError("Can't convert incompatible object to HDF5 region reference")
+ *         ref = <RegionReference>(buf_obj[0])
+ *         memcpy(buf_ref, ref.ref.reg_ref, sizeof(hdset_reg_ref_t))             # <<<<<<<<<<<<<<
+ *     else:
+ *         memset(buf_ref, c'\0', sizeof(hdset_reg_ref_t))
+ */
+    memcpy(__pyx_v_buf_ref, __pyx_v_ref->__pyx_base.ref.reg_ref, (sizeof(hdset_reg_ref_t)));
+    goto __pyx_L3;
+  }
+  /*else*/ {
+
+    /* "h5py/_conv.pyx":409
+ *         memcpy(buf_ref, ref.ref.reg_ref, sizeof(hdset_reg_ref_t))
+ *     else:
+ *         memset(buf_ref, c'\0', sizeof(hdset_reg_ref_t))             # <<<<<<<<<<<<<<
+ * 
+ *     return 0
+ */
+    memset(__pyx_v_buf_ref, '\x00', (sizeof(hdset_reg_ref_t)));
+  }
+  __pyx_L3:;
+
+  /* "h5py/_conv.pyx":411
+ *         memset(buf_ref, c'\0', sizeof(hdset_reg_ref_t))
+ * 
+ *     return 0             # <<<<<<<<<<<<<<
+ * 
+ * # =============================================================================
+ */
+  __pyx_r = 0;
+  goto __pyx_L0;
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("h5py._conv.conv_pyref2regref", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_obj);
+  __Pyx_XDECREF((PyObject *)__pyx_v_ref);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/_conv.pyx":417
+ * 
+ * 
+ * cdef herr_t vlen2str(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,             # <<<<<<<<<<<<<<
+ *                     size_t nl, size_t buf_stride, size_t bkg_stride, void *buf_i,
+ *                     void *bkg_i, hid_t dxpl) except -1:
+ */
+
+static herr_t __pyx_f_4h5py_5_conv_vlen2str(hid_t __pyx_v_src_id, hid_t __pyx_v_dst_id, H5T_cdata_t *__pyx_v_cdata, size_t __pyx_v_nl, size_t __pyx_v_buf_stride, size_t __pyx_v_bkg_stride, void *__pyx_v_buf_i, void *__pyx_v_bkg_i, hid_t __pyx_v_dxpl) {
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("vlen2str", 0);
+
+  /* "h5py/_conv.pyx":421
+ *                     void *bkg_i, hid_t dxpl) except -1:
+ *     return generic_converter(src_id, dst_id, cdata, nl, buf_stride, bkg_stride,
+ *              buf_i, bkg_i, dxpl,  conv_vlen2str, init_generic, H5T_BKG_YES)             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t str2vlen(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+ */
+  __pyx_t_1 = __pyx_f_4h5py_5_conv_generic_converter(__pyx_v_src_id, __pyx_v_dst_id, __pyx_v_cdata, __pyx_v_nl, __pyx_v_buf_stride, __pyx_v_bkg_stride, __pyx_v_buf_i, __pyx_v_bkg_i, __pyx_v_dxpl, __pyx_f_4h5py_5_conv_conv_vlen2str, __pyx_f_4h5py_5_conv_init_generic, H5T_BKG_YES); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 420; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_t_1;
+  goto __pyx_L0;
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py._conv.vlen2str", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/_conv.pyx":423
+ *              buf_i, bkg_i, dxpl,  conv_vlen2str, init_generic, H5T_BKG_YES)
+ * 
+ * cdef herr_t str2vlen(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,             # <<<<<<<<<<<<<<
+ *                     size_t nl, size_t buf_stride, size_t bkg_stride, void *buf_i,
+ *                     void *bkg_i, hid_t dxpl) except -1:
+ */
+
+static herr_t __pyx_f_4h5py_5_conv_str2vlen(hid_t __pyx_v_src_id, hid_t __pyx_v_dst_id, H5T_cdata_t *__pyx_v_cdata, size_t __pyx_v_nl, size_t __pyx_v_buf_stride, size_t __pyx_v_bkg_stride, void *__pyx_v_buf_i, void *__pyx_v_bkg_i, hid_t __pyx_v_dxpl) {
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("str2vlen", 0);
+
+  /* "h5py/_conv.pyx":427
+ *                     void *bkg_i, hid_t dxpl) except -1:
+ *     return generic_converter(src_id, dst_id, cdata, nl, buf_stride, bkg_stride,
+ *              buf_i, bkg_i, dxpl, conv_str2vlen, init_generic, H5T_BKG_NO)             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t vlen2fixed(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+ */
+  __pyx_t_1 = __pyx_f_4h5py_5_conv_generic_converter(__pyx_v_src_id, __pyx_v_dst_id, __pyx_v_cdata, __pyx_v_nl, __pyx_v_buf_stride, __pyx_v_bkg_stride, __pyx_v_buf_i, __pyx_v_bkg_i, __pyx_v_dxpl, __pyx_f_4h5py_5_conv_conv_str2vlen, __pyx_f_4h5py_5_conv_init_generic, H5T_BKG_NO); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 426; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_t_1;
+  goto __pyx_L0;
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py._conv.str2vlen", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/_conv.pyx":429
+ *              buf_i, bkg_i, dxpl, conv_str2vlen, init_generic, H5T_BKG_NO)
+ * 
+ * cdef herr_t vlen2fixed(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,             # <<<<<<<<<<<<<<
+ *                     size_t nl, size_t buf_stride, size_t bkg_stride, void *buf_i,
+ *                     void *bkg_i, hid_t dxpl) except -1:
+ */
+
+static herr_t __pyx_f_4h5py_5_conv_vlen2fixed(hid_t __pyx_v_src_id, hid_t __pyx_v_dst_id, H5T_cdata_t *__pyx_v_cdata, size_t __pyx_v_nl, size_t __pyx_v_buf_stride, size_t __pyx_v_bkg_stride, void *__pyx_v_buf_i, void *__pyx_v_bkg_i, hid_t __pyx_v_dxpl) {
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("vlen2fixed", 0);
+
+  /* "h5py/_conv.pyx":433
+ *                     void *bkg_i, hid_t dxpl) except -1:
+ *     return generic_converter(src_id, dst_id, cdata, nl, buf_stride, bkg_stride,
+ *              buf_i, bkg_i, dxpl, conv_vlen2fixed, init_vlen2fixed, H5T_BKG_NO)             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t fixed2vlen(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+ */
+  __pyx_t_1 = __pyx_f_4h5py_5_conv_generic_converter(__pyx_v_src_id, __pyx_v_dst_id, __pyx_v_cdata, __pyx_v_nl, __pyx_v_buf_stride, __pyx_v_bkg_stride, __pyx_v_buf_i, __pyx_v_bkg_i, __pyx_v_dxpl, __pyx_f_4h5py_5_conv_conv_vlen2fixed, __pyx_f_4h5py_5_conv_init_vlen2fixed, H5T_BKG_NO); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 432; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_t_1;
+  goto __pyx_L0;
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py._conv.vlen2fixed", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/_conv.pyx":435
+ *              buf_i, bkg_i, dxpl, conv_vlen2fixed, init_vlen2fixed, H5T_BKG_NO)
+ * 
+ * cdef herr_t fixed2vlen(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,             # <<<<<<<<<<<<<<
+ *                     size_t nl, size_t buf_stride, size_t bkg_stride, void *buf_i,
+ *                     void *bkg_i, hid_t dxpl) except -1:
+ */
+
+static herr_t __pyx_f_4h5py_5_conv_fixed2vlen(hid_t __pyx_v_src_id, hid_t __pyx_v_dst_id, H5T_cdata_t *__pyx_v_cdata, size_t __pyx_v_nl, size_t __pyx_v_buf_stride, size_t __pyx_v_bkg_stride, void *__pyx_v_buf_i, void *__pyx_v_bkg_i, hid_t __pyx_v_dxpl) {
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("fixed2vlen", 0);
+
+  /* "h5py/_conv.pyx":439
+ *                     void *bkg_i, hid_t dxpl) except -1:
+ *     return generic_converter(src_id, dst_id, cdata, nl, buf_stride, bkg_stride,
+ *              buf_i, bkg_i, dxpl, conv_fixed2vlen, init_fixed2vlen, H5T_BKG_NO)             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t objref2pyref(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+ */
+  __pyx_t_1 = __pyx_f_4h5py_5_conv_generic_converter(__pyx_v_src_id, __pyx_v_dst_id, __pyx_v_cdata, __pyx_v_nl, __pyx_v_buf_stride, __pyx_v_bkg_stride, __pyx_v_buf_i, __pyx_v_bkg_i, __pyx_v_dxpl, __pyx_f_4h5py_5_conv_conv_fixed2vlen, __pyx_f_4h5py_5_conv_init_fixed2vlen, H5T_BKG_NO); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 438; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_t_1;
+  goto __pyx_L0;
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py._conv.fixed2vlen", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/_conv.pyx":441
+ *              buf_i, bkg_i, dxpl, conv_fixed2vlen, init_fixed2vlen, H5T_BKG_NO)
+ * 
+ * cdef herr_t objref2pyref(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,             # <<<<<<<<<<<<<<
+ *                     size_t nl, size_t buf_stride, size_t bkg_stride, void *buf_i,
+ *                     void *bkg_i, hid_t dxpl) except -1:
+ */
+
+static herr_t __pyx_f_4h5py_5_conv_objref2pyref(hid_t __pyx_v_src_id, hid_t __pyx_v_dst_id, H5T_cdata_t *__pyx_v_cdata, size_t __pyx_v_nl, size_t __pyx_v_buf_stride, size_t __pyx_v_bkg_stride, void *__pyx_v_buf_i, void *__pyx_v_bkg_i, hid_t __pyx_v_dxpl) {
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("objref2pyref", 0);
+
+  /* "h5py/_conv.pyx":445
+ *                     void *bkg_i, hid_t dxpl) except -1:
+ *     return generic_converter(src_id, dst_id, cdata, nl, buf_stride, bkg_stride,
+ *              buf_i, bkg_i, dxpl, conv_objref2pyref, init_generic, H5T_BKG_YES)             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t pyref2objref(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+ */
+  __pyx_t_1 = __pyx_f_4h5py_5_conv_generic_converter(__pyx_v_src_id, __pyx_v_dst_id, __pyx_v_cdata, __pyx_v_nl, __pyx_v_buf_stride, __pyx_v_bkg_stride, __pyx_v_buf_i, __pyx_v_bkg_i, __pyx_v_dxpl, __pyx_f_4h5py_5_conv_conv_objref2pyref, __pyx_f_4h5py_5_conv_init_generic, H5T_BKG_YES); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_t_1;
+  goto __pyx_L0;
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py._conv.objref2pyref", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/_conv.pyx":447
+ *              buf_i, bkg_i, dxpl, conv_objref2pyref, init_generic, H5T_BKG_YES)
+ * 
+ * cdef herr_t pyref2objref(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,             # <<<<<<<<<<<<<<
+ *                     size_t nl, size_t buf_stride, size_t bkg_stride, void *buf_i,
+ *                     void *bkg_i, hid_t dxpl) except -1:
+ */
+
+static herr_t __pyx_f_4h5py_5_conv_pyref2objref(hid_t __pyx_v_src_id, hid_t __pyx_v_dst_id, H5T_cdata_t *__pyx_v_cdata, size_t __pyx_v_nl, size_t __pyx_v_buf_stride, size_t __pyx_v_bkg_stride, void *__pyx_v_buf_i, void *__pyx_v_bkg_i, hid_t __pyx_v_dxpl) {
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("pyref2objref", 0);
+
+  /* "h5py/_conv.pyx":451
+ *                     void *bkg_i, hid_t dxpl) except -1:
+ *     return generic_converter(src_id, dst_id, cdata, nl, buf_stride, bkg_stride,
+ *              buf_i, bkg_i, dxpl, conv_pyref2objref, init_generic, H5T_BKG_NO)             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t regref2pyref(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+ */
+  __pyx_t_1 = __pyx_f_4h5py_5_conv_generic_converter(__pyx_v_src_id, __pyx_v_dst_id, __pyx_v_cdata, __pyx_v_nl, __pyx_v_buf_stride, __pyx_v_bkg_stride, __pyx_v_buf_i, __pyx_v_bkg_i, __pyx_v_dxpl, __pyx_f_4h5py_5_conv_conv_pyref2objref, __pyx_f_4h5py_5_conv_init_generic, H5T_BKG_NO); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 450; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_t_1;
+  goto __pyx_L0;
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py._conv.pyref2objref", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/_conv.pyx":453
+ *              buf_i, bkg_i, dxpl, conv_pyref2objref, init_generic, H5T_BKG_NO)
+ * 
+ * cdef herr_t regref2pyref(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,             # <<<<<<<<<<<<<<
+ *                     size_t nl, size_t buf_stride, size_t bkg_stride, void *buf_i,
+ *                     void *bkg_i, hid_t dxpl) except -1:
+ */
+
+static herr_t __pyx_f_4h5py_5_conv_regref2pyref(hid_t __pyx_v_src_id, hid_t __pyx_v_dst_id, H5T_cdata_t *__pyx_v_cdata, size_t __pyx_v_nl, size_t __pyx_v_buf_stride, size_t __pyx_v_bkg_stride, void *__pyx_v_buf_i, void *__pyx_v_bkg_i, hid_t __pyx_v_dxpl) {
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("regref2pyref", 0);
+
+  /* "h5py/_conv.pyx":457
+ *                     void *bkg_i, hid_t dxpl) except -1:
+ *     return generic_converter(src_id, dst_id, cdata, nl, buf_stride, bkg_stride,
+ *              buf_i, bkg_i, dxpl, conv_regref2pyref, init_generic, H5T_BKG_YES)             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t pyref2regref(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+ */
+  __pyx_t_1 = __pyx_f_4h5py_5_conv_generic_converter(__pyx_v_src_id, __pyx_v_dst_id, __pyx_v_cdata, __pyx_v_nl, __pyx_v_buf_stride, __pyx_v_bkg_stride, __pyx_v_buf_i, __pyx_v_bkg_i, __pyx_v_dxpl, __pyx_f_4h5py_5_conv_conv_regref2pyref, __pyx_f_4h5py_5_conv_init_generic, H5T_BKG_YES); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 456; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_t_1;
+  goto __pyx_L0;
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py._conv.regref2pyref", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/_conv.pyx":459
+ *              buf_i, bkg_i, dxpl, conv_regref2pyref, init_generic, H5T_BKG_YES)
+ * 
+ * cdef herr_t pyref2regref(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,             # <<<<<<<<<<<<<<
+ *                     size_t nl, size_t buf_stride, size_t bkg_stride, void *buf_i,
+ *                     void *bkg_i, hid_t dxpl) except -1:
+ */
+
+static herr_t __pyx_f_4h5py_5_conv_pyref2regref(hid_t __pyx_v_src_id, hid_t __pyx_v_dst_id, H5T_cdata_t *__pyx_v_cdata, size_t __pyx_v_nl, size_t __pyx_v_buf_stride, size_t __pyx_v_bkg_stride, void *__pyx_v_buf_i, void *__pyx_v_bkg_i, hid_t __pyx_v_dxpl) {
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("pyref2regref", 0);
+
+  /* "h5py/_conv.pyx":463
+ *                     void *bkg_i, hid_t dxpl) except -1:
+ *     return generic_converter(src_id, dst_id, cdata, nl, buf_stride, bkg_stride,
+ *              buf_i, bkg_i, dxpl, conv_pyref2regref, init_generic, H5T_BKG_NO)             # <<<<<<<<<<<<<<
+ * 
+ * # =============================================================================
+ */
+  __pyx_t_1 = __pyx_f_4h5py_5_conv_generic_converter(__pyx_v_src_id, __pyx_v_dst_id, __pyx_v_cdata, __pyx_v_nl, __pyx_v_buf_stride, __pyx_v_bkg_stride, __pyx_v_buf_i, __pyx_v_bkg_i, __pyx_v_dxpl, __pyx_f_4h5py_5_conv_conv_pyref2regref, __pyx_f_4h5py_5_conv_init_generic, H5T_BKG_NO); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 462; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_t_1;
+  goto __pyx_L0;
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py._conv.pyref2regref", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/_conv.pyx":475
+ * 
+ * 
+ * cdef int enum_int_converter_init(hid_t src, hid_t dst,             # <<<<<<<<<<<<<<
+ *                                  H5T_cdata_t *cdata, int forward) except -1 with gil:
+ *     cdef conv_enum_t *info
+ */
+
+static int __pyx_f_4h5py_5_conv_enum_int_converter_init(hid_t __pyx_v_src, hid_t __pyx_v_dst, H5T_cdata_t *__pyx_v_cdata, CYTHON_UNUSED int __pyx_v_forward) {
+  struct __pyx_t_4h5py_5_conv_conv_enum_t *__pyx_v_info;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  struct __pyx_t_4h5py_5_conv_conv_enum_t *__pyx_t_1;
+  size_t __pyx_t_2;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  #ifdef WITH_THREAD
+  PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();
+  #endif
+  __Pyx_RefNannySetupContext("enum_int_converter_init", 0);
+
+  /* "h5py/_conv.pyx":479
+ *     cdef conv_enum_t *info
+ * 
+ *     cdata[0].need_bkg = H5T_BKG_NO             # <<<<<<<<<<<<<<
+ *     cdata[0].priv = info = <conv_enum_t*>malloc(sizeof(conv_enum_t))
+ *     info[0].src_size = H5Tget_size(src)
+ */
+  (__pyx_v_cdata[0]).need_bkg = H5T_BKG_NO;
+
+  /* "h5py/_conv.pyx":480
+ * 
+ *     cdata[0].need_bkg = H5T_BKG_NO
+ *     cdata[0].priv = info = <conv_enum_t*>malloc(sizeof(conv_enum_t))             # <<<<<<<<<<<<<<
+ *     info[0].src_size = H5Tget_size(src)
+ *     info[0].dst_size = H5Tget_size(dst)
+ */
+  __pyx_t_1 = ((struct __pyx_t_4h5py_5_conv_conv_enum_t *)malloc((sizeof(struct __pyx_t_4h5py_5_conv_conv_enum_t))));
+  (__pyx_v_cdata[0]).priv = __pyx_t_1;
+  __pyx_v_info = __pyx_t_1;
+
+  /* "h5py/_conv.pyx":481
+ *     cdata[0].need_bkg = H5T_BKG_NO
+ *     cdata[0].priv = info = <conv_enum_t*>malloc(sizeof(conv_enum_t))
+ *     info[0].src_size = H5Tget_size(src)             # <<<<<<<<<<<<<<
+ *     info[0].dst_size = H5Tget_size(dst)
+ * 
+ */
+  __pyx_t_2 = __pyx_f_4h5py_4defs_H5Tget_size(__pyx_v_src); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 481; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  (__pyx_v_info[0]).src_size = __pyx_t_2;
+
+  /* "h5py/_conv.pyx":482
+ *     cdata[0].priv = info = <conv_enum_t*>malloc(sizeof(conv_enum_t))
+ *     info[0].src_size = H5Tget_size(src)
+ *     info[0].dst_size = H5Tget_size(dst)             # <<<<<<<<<<<<<<
+ * 
+ * cdef void enum_int_converter_free(H5T_cdata_t *cdata):
+ */
+  __pyx_t_2 = __pyx_f_4h5py_4defs_H5Tget_size(__pyx_v_dst); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 482; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  (__pyx_v_info[0]).dst_size = __pyx_t_2;
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py._conv.enum_int_converter_init", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  #ifdef WITH_THREAD
+  PyGILState_Release(__pyx_gilstate_save);
+  #endif
+  return __pyx_r;
+}
+
+/* "h5py/_conv.pyx":484
+ *     info[0].dst_size = H5Tget_size(dst)
+ * 
+ * cdef void enum_int_converter_free(H5T_cdata_t *cdata):             # <<<<<<<<<<<<<<
+ *     cdef conv_enum_t *info
+ * 
+ */
+
+static void __pyx_f_4h5py_5_conv_enum_int_converter_free(H5T_cdata_t *__pyx_v_cdata) {
+  struct __pyx_t_4h5py_5_conv_conv_enum_t *__pyx_v_info;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("enum_int_converter_free", 0);
+
+  /* "h5py/_conv.pyx":487
+ *     cdef conv_enum_t *info
+ * 
+ *     info = <conv_enum_t*>cdata[0].priv             # <<<<<<<<<<<<<<
+ *     free(info)
+ *     cdata[0].priv = NULL
+ */
+  __pyx_v_info = ((struct __pyx_t_4h5py_5_conv_conv_enum_t *)(__pyx_v_cdata[0]).priv);
+
+  /* "h5py/_conv.pyx":488
+ * 
+ *     info = <conv_enum_t*>cdata[0].priv
+ *     free(info)             # <<<<<<<<<<<<<<
+ *     cdata[0].priv = NULL
+ * 
+ */
+  free(__pyx_v_info);
+
+  /* "h5py/_conv.pyx":489
+ *     info = <conv_enum_t*>cdata[0].priv
+ *     free(info)
+ *     cdata[0].priv = NULL             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  (__pyx_v_cdata[0]).priv = NULL;
+
+  __Pyx_RefNannyFinishContext();
+}
+
+/* "h5py/_conv.pyx":492
+ * 
+ * 
+ * cdef int enum_int_converter_conv(hid_t src, hid_t dst, H5T_cdata_t *cdata,             # <<<<<<<<<<<<<<
+ *                                   size_t nl, size_t buf_stride, size_t bkg_stride, void *buf_i,
+ *                                  void *bkg_i, hid_t dxpl, int forward) except -1 with gil:
+ */
+
+static int __pyx_f_4h5py_5_conv_enum_int_converter_conv(hid_t __pyx_v_src, hid_t __pyx_v_dst, H5T_cdata_t *__pyx_v_cdata, size_t __pyx_v_nl, size_t __pyx_v_buf_stride, CYTHON_UNUSED size_t __pyx_v_bkg_stride, void *__pyx_v_buf_i, CYTHON_UNUSED void *__pyx_v_bkg_i, hid_t __pyx_v_dxpl, int __pyx_v_forward) {
+  struct __pyx_t_4h5py_5_conv_conv_enum_t *__pyx_v_info;
+  size_t __pyx_v_nalloc;
+  int __pyx_v_i;
+  char *__pyx_v_cbuf;
+  char *__pyx_v_buf;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  hid_t __pyx_t_1;
+  htri_t __pyx_t_2;
+  int __pyx_t_3;
+  herr_t __pyx_t_4;
+  size_t __pyx_t_5;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  #ifdef WITH_THREAD
+  PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();
+  #endif
+  __Pyx_RefNannySetupContext("enum_int_converter_conv", 0);
+
+  /* "h5py/_conv.pyx":498
+ *     cdef size_t nalloc
+ *     cdef int i
+ *     cdef char* cbuf = NULL             # <<<<<<<<<<<<<<
+ *     cdef char* buf = <char*>buf_i
+ * 
+ */
+  __pyx_v_cbuf = NULL;
+
+  /* "h5py/_conv.pyx":499
+ *     cdef int i
+ *     cdef char* cbuf = NULL
+ *     cdef char* buf = <char*>buf_i             # <<<<<<<<<<<<<<
+ * 
+ *     info = <conv_enum_t*>cdata[0].priv
+ */
+  __pyx_v_buf = ((char *)__pyx_v_buf_i);
+
+  /* "h5py/_conv.pyx":501
+ *     cdef char* buf = <char*>buf_i
+ * 
+ *     info = <conv_enum_t*>cdata[0].priv             # <<<<<<<<<<<<<<
+ * 
+ *     if forward:
+ */
+  __pyx_v_info = ((struct __pyx_t_4h5py_5_conv_conv_enum_t *)(__pyx_v_cdata[0]).priv);
+
+  /* "h5py/_conv.pyx":503
+ *     info = <conv_enum_t*>cdata[0].priv
+ * 
+ *     if forward:             # <<<<<<<<<<<<<<
+ *         info[0].supertype = H5Tget_super(src)
+ *         info[0].identical = H5Tequal(info[0].supertype, dst)
+ */
+  if (__pyx_v_forward) {
+
+    /* "h5py/_conv.pyx":504
+ * 
+ *     if forward:
+ *         info[0].supertype = H5Tget_super(src)             # <<<<<<<<<<<<<<
+ *         info[0].identical = H5Tequal(info[0].supertype, dst)
+ *     else:
+ */
+    __pyx_t_1 = __pyx_f_4h5py_4defs_H5Tget_super(__pyx_v_src); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 504; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    (__pyx_v_info[0]).supertype = __pyx_t_1;
+
+    /* "h5py/_conv.pyx":505
+ *     if forward:
+ *         info[0].supertype = H5Tget_super(src)
+ *         info[0].identical = H5Tequal(info[0].supertype, dst)             # <<<<<<<<<<<<<<
+ *     else:
+ *         info[0].supertype = H5Tget_super(dst)
+ */
+    __pyx_t_2 = __pyx_f_4h5py_4defs_H5Tequal((__pyx_v_info[0]).supertype, __pyx_v_dst); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 505; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    (__pyx_v_info[0]).identical = __pyx_t_2;
+    goto __pyx_L3;
+  }
+  /*else*/ {
+
+    /* "h5py/_conv.pyx":507
+ *         info[0].identical = H5Tequal(info[0].supertype, dst)
+ *     else:
+ *         info[0].supertype = H5Tget_super(dst)             # <<<<<<<<<<<<<<
+ *         info[0].identical = H5Tequal(info[0].supertype, src)
+ * 
+ */
+    __pyx_t_1 = __pyx_f_4h5py_4defs_H5Tget_super(__pyx_v_dst); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 507; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    (__pyx_v_info[0]).supertype = __pyx_t_1;
+
+    /* "h5py/_conv.pyx":508
+ *     else:
+ *         info[0].supertype = H5Tget_super(dst)
+ *         info[0].identical = H5Tequal(info[0].supertype, src)             # <<<<<<<<<<<<<<
+ * 
+ *     # Short-circuit success
+ */
+    __pyx_t_2 = __pyx_f_4h5py_4defs_H5Tequal((__pyx_v_info[0]).supertype, __pyx_v_src); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 508; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    (__pyx_v_info[0]).identical = __pyx_t_2;
+  }
+  __pyx_L3:;
+
+  /* "h5py/_conv.pyx":511
+ * 
+ *     # Short-circuit success
+ *     if info[0].identical:             # <<<<<<<<<<<<<<
+ *         return 0
+ * 
+ */
+  if ((__pyx_v_info[0]).identical) {
+
+    /* "h5py/_conv.pyx":512
+ *     # Short-circuit success
+ *     if info[0].identical:
+ *         return 0             # <<<<<<<<<<<<<<
+ * 
+ *     if buf_stride == 0:
+ */
+    __pyx_r = 0;
+    goto __pyx_L0;
+    goto __pyx_L4;
+  }
+  __pyx_L4:;
+
+  /* "h5py/_conv.pyx":514
+ *         return 0
+ * 
+ *     if buf_stride == 0:             # <<<<<<<<<<<<<<
+ *         # Contiguous case: call H5Tconvert directly
+ *         if forward:
+ */
+  __pyx_t_3 = (__pyx_v_buf_stride == 0);
+  if (__pyx_t_3) {
+
+    /* "h5py/_conv.pyx":516
+ *     if buf_stride == 0:
+ *         # Contiguous case: call H5Tconvert directly
+ *         if forward:             # <<<<<<<<<<<<<<
+ *             H5Tconvert(info[0].supertype, dst, nl, buf, NULL, dxpl)
+ *         else:
+ */
+    if (__pyx_v_forward) {
+
+      /* "h5py/_conv.pyx":517
+ *         # Contiguous case: call H5Tconvert directly
+ *         if forward:
+ *             H5Tconvert(info[0].supertype, dst, nl, buf, NULL, dxpl)             # <<<<<<<<<<<<<<
+ *         else:
+ *             H5Tconvert(src, info[0].supertype, nl, buf, NULL, dxpl)
+ */
+      __pyx_t_4 = __pyx_f_4h5py_4defs_H5Tconvert((__pyx_v_info[0]).supertype, __pyx_v_dst, __pyx_v_nl, __pyx_v_buf, NULL, __pyx_v_dxpl); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 517; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      goto __pyx_L6;
+    }
+    /*else*/ {
+
+      /* "h5py/_conv.pyx":519
+ *             H5Tconvert(info[0].supertype, dst, nl, buf, NULL, dxpl)
+ *         else:
+ *             H5Tconvert(src, info[0].supertype, nl, buf, NULL, dxpl)             # <<<<<<<<<<<<<<
+ *     else:
+ *         # Non-contiguous: gather, convert and then scatter
+ */
+      __pyx_t_4 = __pyx_f_4h5py_4defs_H5Tconvert(__pyx_v_src, (__pyx_v_info[0]).supertype, __pyx_v_nl, __pyx_v_buf, NULL, __pyx_v_dxpl); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 519; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    }
+    __pyx_L6:;
+    goto __pyx_L5;
+  }
+  /*else*/ {
+
+    /* "h5py/_conv.pyx":522
+ *     else:
+ *         # Non-contiguous: gather, convert and then scatter
+ *         if info[0].src_size > info[0].dst_size:             # <<<<<<<<<<<<<<
+ *             nalloc = info[0].src_size*nl
+ *         else:
+ */
+    __pyx_t_3 = ((__pyx_v_info[0]).src_size > (__pyx_v_info[0]).dst_size);
+    if (__pyx_t_3) {
+
+      /* "h5py/_conv.pyx":523
+ *         # Non-contiguous: gather, convert and then scatter
+ *         if info[0].src_size > info[0].dst_size:
+ *             nalloc = info[0].src_size*nl             # <<<<<<<<<<<<<<
+ *         else:
+ *             nalloc = info[0].dst_size*nl
+ */
+      __pyx_v_nalloc = ((__pyx_v_info[0]).src_size * __pyx_v_nl);
+      goto __pyx_L7;
+    }
+    /*else*/ {
+
+      /* "h5py/_conv.pyx":525
+ *             nalloc = info[0].src_size*nl
+ *         else:
+ *             nalloc = info[0].dst_size*nl             # <<<<<<<<<<<<<<
+ * 
+ *         cbuf = <char*>malloc(nalloc)
+ */
+      __pyx_v_nalloc = ((__pyx_v_info[0]).dst_size * __pyx_v_nl);
+    }
+    __pyx_L7:;
+
+    /* "h5py/_conv.pyx":527
+ *             nalloc = info[0].dst_size*nl
+ * 
+ *         cbuf = <char*>malloc(nalloc)             # <<<<<<<<<<<<<<
+ *         if cbuf == NULL:
+ *             raise MemoryError()
+ */
+    __pyx_v_cbuf = ((char *)malloc(__pyx_v_nalloc));
+
+    /* "h5py/_conv.pyx":528
+ * 
+ *         cbuf = <char*>malloc(nalloc)
+ *         if cbuf == NULL:             # <<<<<<<<<<<<<<
+ *             raise MemoryError()
+ *         try:
+ */
+    __pyx_t_3 = (__pyx_v_cbuf == NULL);
+    if (__pyx_t_3) {
+
+      /* "h5py/_conv.pyx":529
+ *         cbuf = <char*>malloc(nalloc)
+ *         if cbuf == NULL:
+ *             raise MemoryError()             # <<<<<<<<<<<<<<
+ *         try:
+ *             for i from 0<=i<nl:
+ */
+      PyErr_NoMemory(); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 529; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      goto __pyx_L8;
+    }
+    __pyx_L8:;
+
+    /* "h5py/_conv.pyx":530
+ *         if cbuf == NULL:
+ *             raise MemoryError()
+ *         try:             # <<<<<<<<<<<<<<
+ *             for i from 0<=i<nl:
+ *                 memcpy(cbuf + (i*info[0].src_size), buf + (i*buf_stride),
+ */
+    /*try:*/ {
+
+      /* "h5py/_conv.pyx":531
+ *             raise MemoryError()
+ *         try:
+ *             for i from 0<=i<nl:             # <<<<<<<<<<<<<<
+ *                 memcpy(cbuf + (i*info[0].src_size), buf + (i*buf_stride),
+ *                         info[0].src_size)
+ */
+      __pyx_t_5 = __pyx_v_nl;
+      for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_5; __pyx_v_i++) {
+
+        /* "h5py/_conv.pyx":533
+ *             for i from 0<=i<nl:
+ *                 memcpy(cbuf + (i*info[0].src_size), buf + (i*buf_stride),
+ *                         info[0].src_size)             # <<<<<<<<<<<<<<
+ * 
+ *             if forward:
+ */
+        memcpy((__pyx_v_cbuf + (__pyx_v_i * (__pyx_v_info[0]).src_size)), (__pyx_v_buf + (__pyx_v_i * __pyx_v_buf_stride)), (__pyx_v_info[0]).src_size);
+      }
+
+      /* "h5py/_conv.pyx":535
+ *                         info[0].src_size)
+ * 
+ *             if forward:             # <<<<<<<<<<<<<<
+ *                 H5Tconvert(info[0].supertype, dst, nl, cbuf, NULL, dxpl)
+ *             else:
+ */
+      if (__pyx_v_forward) {
+
+        /* "h5py/_conv.pyx":536
+ * 
+ *             if forward:
+ *                 H5Tconvert(info[0].supertype, dst, nl, cbuf, NULL, dxpl)             # <<<<<<<<<<<<<<
+ *             else:
+ *                 H5Tconvert(src, info[0].supertype, nl, cbuf, NULL, dxpl)
+ */
+        __pyx_t_4 = __pyx_f_4h5py_4defs_H5Tconvert((__pyx_v_info[0]).supertype, __pyx_v_dst, __pyx_v_nl, __pyx_v_cbuf, NULL, __pyx_v_dxpl); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 536; __pyx_clineno = __LINE__; goto __pyx_L10;}
+        goto __pyx_L14;
+      }
+      /*else*/ {
+
+        /* "h5py/_conv.pyx":538
+ *                 H5Tconvert(info[0].supertype, dst, nl, cbuf, NULL, dxpl)
+ *             else:
+ *                 H5Tconvert(src, info[0].supertype, nl, cbuf, NULL, dxpl)             # <<<<<<<<<<<<<<
+ * 
+ *             for i from 0<=i<nl:
+ */
+        __pyx_t_4 = __pyx_f_4h5py_4defs_H5Tconvert(__pyx_v_src, (__pyx_v_info[0]).supertype, __pyx_v_nl, __pyx_v_cbuf, NULL, __pyx_v_dxpl); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 538; __pyx_clineno = __LINE__; goto __pyx_L10;}
+      }
+      __pyx_L14:;
+
+      /* "h5py/_conv.pyx":540
+ *                 H5Tconvert(src, info[0].supertype, nl, cbuf, NULL, dxpl)
+ * 
+ *             for i from 0<=i<nl:             # <<<<<<<<<<<<<<
+ *                 memcpy(buf + (i*buf_stride), cbuf + (i*info[0].dst_size),
+ *                         info[0].dst_size)
+ */
+      __pyx_t_5 = __pyx_v_nl;
+      for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_5; __pyx_v_i++) {
+
+        /* "h5py/_conv.pyx":542
+ *             for i from 0<=i<nl:
+ *                 memcpy(buf + (i*buf_stride), cbuf + (i*info[0].dst_size),
+ *                         info[0].dst_size)             # <<<<<<<<<<<<<<
+ *         finally:
+ *             free(cbuf)
+ */
+        memcpy((__pyx_v_buf + (__pyx_v_i * __pyx_v_buf_stride)), (__pyx_v_cbuf + (__pyx_v_i * (__pyx_v_info[0]).dst_size)), (__pyx_v_info[0]).dst_size);
+      }
+    }
+
+    /* "h5py/_conv.pyx":544
+ *                         info[0].dst_size)
+ *         finally:
+ *             free(cbuf)             # <<<<<<<<<<<<<<
+ *             cbuf = NULL
+ *     return 0
+ */
+    /*finally:*/ {
+      int __pyx_why;
+      PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb;
+      int __pyx_exc_lineno;
+      __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
+      __pyx_why = 0; goto __pyx_L11;
+      __pyx_L10: {
+        __pyx_why = 4;
+        __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb);
+        __pyx_exc_lineno = __pyx_lineno;
+        goto __pyx_L11;
+      }
+      __pyx_L11:;
+      free(__pyx_v_cbuf);
+
+      /* "h5py/_conv.pyx":545
+ *         finally:
+ *             free(cbuf)
+ *             cbuf = NULL             # <<<<<<<<<<<<<<
+ *     return 0
+ * 
+ */
+      __pyx_v_cbuf = NULL;
+      switch (__pyx_why) {
+        case 4: {
+          __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb);
+          __pyx_lineno = __pyx_exc_lineno;
+          __pyx_exc_type = 0;
+          __pyx_exc_value = 0;
+          __pyx_exc_tb = 0;
+          goto __pyx_L1_error;
+        }
+      }
+    }
+  }
+  __pyx_L5:;
+
+  /* "h5py/_conv.pyx":546
+ *             free(cbuf)
+ *             cbuf = NULL
+ *     return 0             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_r = 0;
+  goto __pyx_L0;
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py._conv.enum_int_converter_conv", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  #ifdef WITH_THREAD
+  PyGILState_Release(__pyx_gilstate_save);
+  #endif
+  return __pyx_r;
+}
+
+/* "h5py/_conv.pyx":550
+ * 
+ * # Direction ("forward"): 1 = enum to int, 0 = int to enum
+ * cdef herr_t enum_int_converter(hid_t src, hid_t dst, H5T_cdata_t *cdata,             # <<<<<<<<<<<<<<
+ *                     size_t nl, size_t buf_stride, size_t bkg_stride, void *buf_i,
+ *                                void *bkg_i, hid_t dxpl, int forward) except -1:
+ */
+
+static herr_t __pyx_f_4h5py_5_conv_enum_int_converter(hid_t __pyx_v_src, hid_t __pyx_v_dst, H5T_cdata_t *__pyx_v_cdata, size_t __pyx_v_nl, size_t __pyx_v_buf_stride, size_t __pyx_v_bkg_stride, void *__pyx_v_buf_i, void *__pyx_v_bkg_i, hid_t __pyx_v_dxpl, int __pyx_v_forward) {
+  int __pyx_v_command;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  H5T_cmd_t __pyx_t_1;
+  int __pyx_t_2;
+  int __pyx_t_3;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("enum_int_converter", 0);
+
+  /* "h5py/_conv.pyx":554
+ *                                void *bkg_i, hid_t dxpl, int forward) except -1:
+ * 
+ *     cdef int command = cdata[0].command             # <<<<<<<<<<<<<<
+ * 
+ *     if command == H5T_CONV_INIT:
+ */
+  __pyx_t_1 = (__pyx_v_cdata[0]).command;
+  __pyx_v_command = __pyx_t_1;
+
+  /* "h5py/_conv.pyx":556
+ *     cdef int command = cdata[0].command
+ * 
+ *     if command == H5T_CONV_INIT:             # <<<<<<<<<<<<<<
+ *         enum_int_converter_init(src, dst, cdata, forward)
+ *     elif command == H5T_CONV_FREE:
+ */
+  __pyx_t_2 = (__pyx_v_command == H5T_CONV_INIT);
+  if (__pyx_t_2) {
+
+    /* "h5py/_conv.pyx":557
+ * 
+ *     if command == H5T_CONV_INIT:
+ *         enum_int_converter_init(src, dst, cdata, forward)             # <<<<<<<<<<<<<<
+ *     elif command == H5T_CONV_FREE:
+ *         enum_int_converter_free(cdata)
+ */
+    __pyx_t_3 = __pyx_f_4h5py_5_conv_enum_int_converter_init(__pyx_v_src, __pyx_v_dst, __pyx_v_cdata, __pyx_v_forward); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 557; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    goto __pyx_L3;
+  }
+
+  /* "h5py/_conv.pyx":558
+ *     if command == H5T_CONV_INIT:
+ *         enum_int_converter_init(src, dst, cdata, forward)
+ *     elif command == H5T_CONV_FREE:             # <<<<<<<<<<<<<<
+ *         enum_int_converter_free(cdata)
+ *     elif command == H5T_CONV_CONV:
+ */
+  __pyx_t_2 = (__pyx_v_command == H5T_CONV_FREE);
+  if (__pyx_t_2) {
+
+    /* "h5py/_conv.pyx":559
+ *         enum_int_converter_init(src, dst, cdata, forward)
+ *     elif command == H5T_CONV_FREE:
+ *         enum_int_converter_free(cdata)             # <<<<<<<<<<<<<<
+ *     elif command == H5T_CONV_CONV:
+ *         return enum_int_converter_conv(src, dst, cdata, nl, buf_stride,
+ */
+    __pyx_f_4h5py_5_conv_enum_int_converter_free(__pyx_v_cdata);
+    goto __pyx_L3;
+  }
+
+  /* "h5py/_conv.pyx":560
+ *     elif command == H5T_CONV_FREE:
+ *         enum_int_converter_free(cdata)
+ *     elif command == H5T_CONV_CONV:             # <<<<<<<<<<<<<<
+ *         return enum_int_converter_conv(src, dst, cdata, nl, buf_stride,
+ *                                        bkg_stride, buf_i, bkg_i, dxpl, forward)
+ */
+  __pyx_t_2 = (__pyx_v_command == H5T_CONV_CONV);
+  if (__pyx_t_2) {
+
+    /* "h5py/_conv.pyx":562
+ *     elif command == H5T_CONV_CONV:
+ *         return enum_int_converter_conv(src, dst, cdata, nl, buf_stride,
+ *                                        bkg_stride, buf_i, bkg_i, dxpl, forward)             # <<<<<<<<<<<<<<
+ *     else:
+ *         return -2
+ */
+    __pyx_t_3 = __pyx_f_4h5py_5_conv_enum_int_converter_conv(__pyx_v_src, __pyx_v_dst, __pyx_v_cdata, __pyx_v_nl, __pyx_v_buf_stride, __pyx_v_bkg_stride, __pyx_v_buf_i, __pyx_v_bkg_i, __pyx_v_dxpl, __pyx_v_forward); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 561; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_r = __pyx_t_3;
+    goto __pyx_L0;
+    goto __pyx_L3;
+  }
+  /*else*/ {
+
+    /* "h5py/_conv.pyx":564
+ *                                        bkg_stride, buf_i, bkg_i, dxpl, forward)
+ *     else:
+ *         return -2             # <<<<<<<<<<<<<<
+ * 
+ *     return 0
+ */
+    __pyx_r = -2;
+    goto __pyx_L0;
+  }
+  __pyx_L3:;
+
+  /* "h5py/_conv.pyx":566
+ *         return -2
+ * 
+ *     return 0             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_r = 0;
+  goto __pyx_L0;
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py._conv.enum_int_converter", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/_conv.pyx":569
+ * 
+ * 
+ * cdef herr_t enum2int(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,             # <<<<<<<<<<<<<<
+ *                     size_t nl, size_t buf_stride, size_t bkg_stride, void *buf_i,
+ *                     void *bkg_i, hid_t dxpl) except -1:
+ */
+
+static herr_t __pyx_f_4h5py_5_conv_enum2int(hid_t __pyx_v_src_id, hid_t __pyx_v_dst_id, H5T_cdata_t *__pyx_v_cdata, size_t __pyx_v_nl, size_t __pyx_v_buf_stride, size_t __pyx_v_bkg_stride, void *__pyx_v_buf_i, void *__pyx_v_bkg_i, hid_t __pyx_v_dxpl) {
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("enum2int", 0);
+
+  /* "h5py/_conv.pyx":573
+ *                     void *bkg_i, hid_t dxpl) except -1:
+ *     return enum_int_converter(src_id, dst_id, cdata, nl, buf_stride, bkg_stride,
+ *              buf_i, bkg_i, dxpl, 1)             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t int2enum(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+ */
+  __pyx_t_1 = __pyx_f_4h5py_5_conv_enum_int_converter(__pyx_v_src_id, __pyx_v_dst_id, __pyx_v_cdata, __pyx_v_nl, __pyx_v_buf_stride, __pyx_v_bkg_stride, __pyx_v_buf_i, __pyx_v_bkg_i, __pyx_v_dxpl, 1); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 572; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_t_1;
+  goto __pyx_L0;
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py._conv.enum2int", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/_conv.pyx":575
+ *              buf_i, bkg_i, dxpl, 1)
+ * 
+ * cdef herr_t int2enum(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,             # <<<<<<<<<<<<<<
+ *                     size_t nl, size_t buf_stride, size_t bkg_stride, void *buf_i,
+ *                     void *bkg_i, hid_t dxpl) except -1:
+ */
+
+static herr_t __pyx_f_4h5py_5_conv_int2enum(hid_t __pyx_v_src_id, hid_t __pyx_v_dst_id, H5T_cdata_t *__pyx_v_cdata, size_t __pyx_v_nl, size_t __pyx_v_buf_stride, size_t __pyx_v_bkg_stride, void *__pyx_v_buf_i, void *__pyx_v_bkg_i, hid_t __pyx_v_dxpl) {
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("int2enum", 0);
+
+  /* "h5py/_conv.pyx":579
+ *                     void *bkg_i, hid_t dxpl) except -1:
+ *     return enum_int_converter(src_id, dst_id, cdata, nl, buf_stride, bkg_stride,
+ *              buf_i, bkg_i, dxpl, 0)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_5_conv_enum_int_converter(__pyx_v_src_id, __pyx_v_dst_id, __pyx_v_cdata, __pyx_v_nl, __pyx_v_buf_stride, __pyx_v_bkg_stride, __pyx_v_buf_i, __pyx_v_bkg_i, __pyx_v_dxpl, 0); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 578; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_t_1;
+  goto __pyx_L0;
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py._conv.int2enum", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/_conv.pyx":582
+ * 
+ * 
+ * cpdef int register_converters() except -1:             # <<<<<<<<<<<<<<
+ * 
+ *     cdef hid_t vlstring
+ */
+
+static PyObject *__pyx_pw_4h5py_5_conv_3register_converters(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static int __pyx_f_4h5py_5_conv_register_converters(CYTHON_UNUSED int __pyx_skip_dispatch) {
+  hid_t __pyx_v_vlstring;
+  hid_t __pyx_v_pyobj;
+  hid_t __pyx_v_enum;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  hid_t __pyx_t_1;
+  herr_t __pyx_t_2;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("register_converters", 0);
+
+  /* "h5py/_conv.pyx":588
+ *     cdef hid_t enum
+ * 
+ *     vlstring = H5Tcopy(H5T_C_S1)             # <<<<<<<<<<<<<<
+ *     H5Tset_size(vlstring, H5T_VARIABLE)
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Tcopy(H5T_C_S1); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 588; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v_vlstring = __pyx_t_1;
+
+  /* "h5py/_conv.pyx":589
+ * 
+ *     vlstring = H5Tcopy(H5T_C_S1)
+ *     H5Tset_size(vlstring, H5T_VARIABLE)             # <<<<<<<<<<<<<<
+ * 
+ *     enum = H5Tenum_create(H5T_STD_I32LE)
+ */
+  __pyx_t_2 = __pyx_f_4h5py_4defs_H5Tset_size(__pyx_v_vlstring, H5T_VARIABLE); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 589; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/_conv.pyx":591
+ *     H5Tset_size(vlstring, H5T_VARIABLE)
+ * 
+ *     enum = H5Tenum_create(H5T_STD_I32LE)             # <<<<<<<<<<<<<<
+ * 
+ *     pyobj = get_python_obj()
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Tenum_create(H5T_STD_I32LE); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 591; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v_enum = __pyx_t_1;
+
+  /* "h5py/_conv.pyx":593
+ *     enum = H5Tenum_create(H5T_STD_I32LE)
+ * 
+ *     pyobj = get_python_obj()             # <<<<<<<<<<<<<<
+ * 
+ *     H5Tregister(H5T_PERS_HARD, "vlen2str", vlstring, pyobj, vlen2str)
+ */
+  __pyx_v_pyobj = __pyx_f_4h5py_5_conv_get_python_obj(0);
+
+  /* "h5py/_conv.pyx":595
+ *     pyobj = get_python_obj()
+ * 
+ *     H5Tregister(H5T_PERS_HARD, "vlen2str", vlstring, pyobj, vlen2str)             # <<<<<<<<<<<<<<
+ *     H5Tregister(H5T_PERS_HARD, "str2vlen", pyobj, vlstring, str2vlen)
+ * 
+ */
+  __pyx_t_2 = __pyx_f_4h5py_4defs_H5Tregister(H5T_PERS_HARD, __pyx_k__vlen2str, __pyx_v_vlstring, __pyx_v_pyobj, __pyx_f_4h5py_5_conv_vlen2str); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 595; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/_conv.pyx":596
+ * 
+ *     H5Tregister(H5T_PERS_HARD, "vlen2str", vlstring, pyobj, vlen2str)
+ *     H5Tregister(H5T_PERS_HARD, "str2vlen", pyobj, vlstring, str2vlen)             # <<<<<<<<<<<<<<
+ * 
+ *     H5Tregister(H5T_PERS_SOFT, "vlen2fixed", vlstring, H5T_C_S1, vlen2fixed)
+ */
+  __pyx_t_2 = __pyx_f_4h5py_4defs_H5Tregister(H5T_PERS_HARD, __pyx_k__str2vlen, __pyx_v_pyobj, __pyx_v_vlstring, __pyx_f_4h5py_5_conv_str2vlen); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 596; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/_conv.pyx":598
+ *     H5Tregister(H5T_PERS_HARD, "str2vlen", pyobj, vlstring, str2vlen)
+ * 
+ *     H5Tregister(H5T_PERS_SOFT, "vlen2fixed", vlstring, H5T_C_S1, vlen2fixed)             # <<<<<<<<<<<<<<
+ *     H5Tregister(H5T_PERS_SOFT, "fixed2vlen", H5T_C_S1, vlstring, fixed2vlen)
+ * 
+ */
+  __pyx_t_2 = __pyx_f_4h5py_4defs_H5Tregister(H5T_PERS_SOFT, __pyx_k__vlen2fixed, __pyx_v_vlstring, H5T_C_S1, __pyx_f_4h5py_5_conv_vlen2fixed); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 598; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/_conv.pyx":599
+ * 
+ *     H5Tregister(H5T_PERS_SOFT, "vlen2fixed", vlstring, H5T_C_S1, vlen2fixed)
+ *     H5Tregister(H5T_PERS_SOFT, "fixed2vlen", H5T_C_S1, vlstring, fixed2vlen)             # <<<<<<<<<<<<<<
+ * 
+ *     H5Tregister(H5T_PERS_HARD, "objref2pyref", H5T_STD_REF_OBJ, pyobj, objref2pyref)
+ */
+  __pyx_t_2 = __pyx_f_4h5py_4defs_H5Tregister(H5T_PERS_SOFT, __pyx_k__fixed2vlen, H5T_C_S1, __pyx_v_vlstring, __pyx_f_4h5py_5_conv_fixed2vlen); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 599; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/_conv.pyx":601
+ *     H5Tregister(H5T_PERS_SOFT, "fixed2vlen", H5T_C_S1, vlstring, fixed2vlen)
+ * 
+ *     H5Tregister(H5T_PERS_HARD, "objref2pyref", H5T_STD_REF_OBJ, pyobj, objref2pyref)             # <<<<<<<<<<<<<<
+ *     H5Tregister(H5T_PERS_HARD, "pyref2objref", pyobj, H5T_STD_REF_OBJ, pyref2objref)
+ * 
+ */
+  __pyx_t_2 = __pyx_f_4h5py_4defs_H5Tregister(H5T_PERS_HARD, __pyx_k__objref2pyref, H5T_STD_REF_OBJ, __pyx_v_pyobj, __pyx_f_4h5py_5_conv_objref2pyref); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 601; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/_conv.pyx":602
+ * 
+ *     H5Tregister(H5T_PERS_HARD, "objref2pyref", H5T_STD_REF_OBJ, pyobj, objref2pyref)
+ *     H5Tregister(H5T_PERS_HARD, "pyref2objref", pyobj, H5T_STD_REF_OBJ, pyref2objref)             # <<<<<<<<<<<<<<
+ * 
+ *     H5Tregister(H5T_PERS_HARD, "regref2pyref", H5T_STD_REF_DSETREG, pyobj, regref2pyref)
+ */
+  __pyx_t_2 = __pyx_f_4h5py_4defs_H5Tregister(H5T_PERS_HARD, __pyx_k__pyref2objref, __pyx_v_pyobj, H5T_STD_REF_OBJ, __pyx_f_4h5py_5_conv_pyref2objref); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 602; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/_conv.pyx":604
+ *     H5Tregister(H5T_PERS_HARD, "pyref2objref", pyobj, H5T_STD_REF_OBJ, pyref2objref)
+ * 
+ *     H5Tregister(H5T_PERS_HARD, "regref2pyref", H5T_STD_REF_DSETREG, pyobj, regref2pyref)             # <<<<<<<<<<<<<<
+ *     H5Tregister(H5T_PERS_HARD, "pyref2regref", pyobj, H5T_STD_REF_DSETREG, pyref2regref)
+ * 
+ */
+  __pyx_t_2 = __pyx_f_4h5py_4defs_H5Tregister(H5T_PERS_HARD, __pyx_k__regref2pyref, H5T_STD_REF_DSETREG, __pyx_v_pyobj, __pyx_f_4h5py_5_conv_regref2pyref); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 604; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/_conv.pyx":605
+ * 
+ *     H5Tregister(H5T_PERS_HARD, "regref2pyref", H5T_STD_REF_DSETREG, pyobj, regref2pyref)
+ *     H5Tregister(H5T_PERS_HARD, "pyref2regref", pyobj, H5T_STD_REF_DSETREG, pyref2regref)             # <<<<<<<<<<<<<<
+ * 
+ *     H5Tregister(H5T_PERS_SOFT, "enum2int", enum, H5T_STD_I32LE, enum2int)
+ */
+  __pyx_t_2 = __pyx_f_4h5py_4defs_H5Tregister(H5T_PERS_HARD, __pyx_k__pyref2regref, __pyx_v_pyobj, H5T_STD_REF_DSETREG, __pyx_f_4h5py_5_conv_pyref2regref); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 605; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/_conv.pyx":607
+ *     H5Tregister(H5T_PERS_HARD, "pyref2regref", pyobj, H5T_STD_REF_DSETREG, pyref2regref)
+ * 
+ *     H5Tregister(H5T_PERS_SOFT, "enum2int", enum, H5T_STD_I32LE, enum2int)             # <<<<<<<<<<<<<<
+ *     H5Tregister(H5T_PERS_SOFT, "int2enum", H5T_STD_I32LE, enum, int2enum)
+ * 
+ */
+  __pyx_t_2 = __pyx_f_4h5py_4defs_H5Tregister(H5T_PERS_SOFT, __pyx_k__enum2int, __pyx_v_enum, H5T_STD_I32LE, __pyx_f_4h5py_5_conv_enum2int); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 607; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/_conv.pyx":608
+ * 
+ *     H5Tregister(H5T_PERS_SOFT, "enum2int", enum, H5T_STD_I32LE, enum2int)
+ *     H5Tregister(H5T_PERS_SOFT, "int2enum", H5T_STD_I32LE, enum, int2enum)             # <<<<<<<<<<<<<<
+ * 
+ *     H5Tclose(vlstring)
+ */
+  __pyx_t_2 = __pyx_f_4h5py_4defs_H5Tregister(H5T_PERS_SOFT, __pyx_k__int2enum, H5T_STD_I32LE, __pyx_v_enum, __pyx_f_4h5py_5_conv_int2enum); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 608; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/_conv.pyx":610
+ *     H5Tregister(H5T_PERS_SOFT, "int2enum", H5T_STD_I32LE, enum, int2enum)
+ * 
+ *     H5Tclose(vlstring)             # <<<<<<<<<<<<<<
+ *     H5Tclose(enum)
+ * 
+ */
+  __pyx_t_2 = __pyx_f_4h5py_4defs_H5Tclose(__pyx_v_vlstring); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 610; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/_conv.pyx":611
+ * 
+ *     H5Tclose(vlstring)
+ *     H5Tclose(enum)             # <<<<<<<<<<<<<<
+ * 
+ *     return 0
+ */
+  __pyx_t_2 = __pyx_f_4h5py_4defs_H5Tclose(__pyx_v_enum); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 611; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/_conv.pyx":613
+ *     H5Tclose(enum)
+ * 
+ *     return 0             # <<<<<<<<<<<<<<
+ * 
+ * cpdef int unregister_converters() except -1:
+ */
+  __pyx_r = 0;
+  goto __pyx_L0;
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py._conv.register_converters", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_5_conv_3register_converters(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static PyObject *__pyx_pw_4h5py_5_conv_3register_converters(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("register_converters (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_5_conv_2register_converters(__pyx_self);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/_conv.pyx":582
+ * 
+ * 
+ * cpdef int register_converters() except -1:             # <<<<<<<<<<<<<<
+ * 
+ *     cdef hid_t vlstring
+ */
+
+static PyObject *__pyx_pf_4h5py_5_conv_2register_converters(CYTHON_UNUSED PyObject *__pyx_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("register_converters", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_4h5py_5_conv_register_converters(0); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 582; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyInt_FromLong(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 582; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py._conv.register_converters", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/_conv.pyx":615
+ *     return 0
+ * 
+ * cpdef int unregister_converters() except -1:             # <<<<<<<<<<<<<<
+ * 
+ *     H5Tunregister(H5T_PERS_HARD, "vlen2str", -1, -1, vlen2str)
+ */
+
+static PyObject *__pyx_pw_4h5py_5_conv_5unregister_converters(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static int __pyx_f_4h5py_5_conv_unregister_converters(CYTHON_UNUSED int __pyx_skip_dispatch) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("unregister_converters", 0);
+
+  /* "h5py/_conv.pyx":617
+ * cpdef int unregister_converters() except -1:
+ * 
+ *     H5Tunregister(H5T_PERS_HARD, "vlen2str", -1, -1, vlen2str)             # <<<<<<<<<<<<<<
+ *     H5Tunregister(H5T_PERS_HARD, "str2vlen", -1, -1, str2vlen)
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Tunregister(H5T_PERS_HARD, __pyx_k__vlen2str, -1, -1, __pyx_f_4h5py_5_conv_vlen2str); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 617; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/_conv.pyx":618
+ * 
+ *     H5Tunregister(H5T_PERS_HARD, "vlen2str", -1, -1, vlen2str)
+ *     H5Tunregister(H5T_PERS_HARD, "str2vlen", -1, -1, str2vlen)             # <<<<<<<<<<<<<<
+ * 
+ *     H5Tunregister(H5T_PERS_SOFT, "vlen2fixed", -1, -1, vlen2fixed)
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Tunregister(H5T_PERS_HARD, __pyx_k__str2vlen, -1, -1, __pyx_f_4h5py_5_conv_str2vlen); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 618; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/_conv.pyx":620
+ *     H5Tunregister(H5T_PERS_HARD, "str2vlen", -1, -1, str2vlen)
+ * 
+ *     H5Tunregister(H5T_PERS_SOFT, "vlen2fixed", -1, -1, vlen2fixed)             # <<<<<<<<<<<<<<
+ *     H5Tunregister(H5T_PERS_SOFT, "fixed2vlen", -1, -1, fixed2vlen)
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Tunregister(H5T_PERS_SOFT, __pyx_k__vlen2fixed, -1, -1, __pyx_f_4h5py_5_conv_vlen2fixed); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 620; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/_conv.pyx":621
+ * 
+ *     H5Tunregister(H5T_PERS_SOFT, "vlen2fixed", -1, -1, vlen2fixed)
+ *     H5Tunregister(H5T_PERS_SOFT, "fixed2vlen", -1, -1, fixed2vlen)             # <<<<<<<<<<<<<<
+ * 
+ *     H5Tunregister(H5T_PERS_HARD, "objref2pyref", -1, -1, objref2pyref)
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Tunregister(H5T_PERS_SOFT, __pyx_k__fixed2vlen, -1, -1, __pyx_f_4h5py_5_conv_fixed2vlen); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 621; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/_conv.pyx":623
+ *     H5Tunregister(H5T_PERS_SOFT, "fixed2vlen", -1, -1, fixed2vlen)
+ * 
+ *     H5Tunregister(H5T_PERS_HARD, "objref2pyref", -1, -1, objref2pyref)             # <<<<<<<<<<<<<<
+ *     H5Tunregister(H5T_PERS_HARD, "pyref2objref", -1, -1, pyref2objref)
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Tunregister(H5T_PERS_HARD, __pyx_k__objref2pyref, -1, -1, __pyx_f_4h5py_5_conv_objref2pyref); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 623; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/_conv.pyx":624
+ * 
+ *     H5Tunregister(H5T_PERS_HARD, "objref2pyref", -1, -1, objref2pyref)
+ *     H5Tunregister(H5T_PERS_HARD, "pyref2objref", -1, -1, pyref2objref)             # <<<<<<<<<<<<<<
+ * 
+ *     H5Tunregister(H5T_PERS_HARD, "regref2pyref", -1, -1, regref2pyref)
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Tunregister(H5T_PERS_HARD, __pyx_k__pyref2objref, -1, -1, __pyx_f_4h5py_5_conv_pyref2objref); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 624; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/_conv.pyx":626
+ *     H5Tunregister(H5T_PERS_HARD, "pyref2objref", -1, -1, pyref2objref)
+ * 
+ *     H5Tunregister(H5T_PERS_HARD, "regref2pyref", -1, -1, regref2pyref)             # <<<<<<<<<<<<<<
+ *     H5Tunregister(H5T_PERS_HARD, "pyref2regref", -1, -1, pyref2regref)
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Tunregister(H5T_PERS_HARD, __pyx_k__regref2pyref, -1, -1, __pyx_f_4h5py_5_conv_regref2pyref); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 626; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/_conv.pyx":627
+ * 
+ *     H5Tunregister(H5T_PERS_HARD, "regref2pyref", -1, -1, regref2pyref)
+ *     H5Tunregister(H5T_PERS_HARD, "pyref2regref", -1, -1, pyref2regref)             # <<<<<<<<<<<<<<
+ * 
+ *     H5Tunregister(H5T_PERS_SOFT, "enum2int", -1, -1, enum2int)
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Tunregister(H5T_PERS_HARD, __pyx_k__pyref2regref, -1, -1, __pyx_f_4h5py_5_conv_pyref2regref); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 627; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/_conv.pyx":629
+ *     H5Tunregister(H5T_PERS_HARD, "pyref2regref", -1, -1, pyref2regref)
+ * 
+ *     H5Tunregister(H5T_PERS_SOFT, "enum2int", -1, -1, enum2int)             # <<<<<<<<<<<<<<
+ *     H5Tunregister(H5T_PERS_SOFT, "int2enum", -1, -1, int2enum)
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Tunregister(H5T_PERS_SOFT, __pyx_k__enum2int, -1, -1, __pyx_f_4h5py_5_conv_enum2int); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 629; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/_conv.pyx":630
+ * 
+ *     H5Tunregister(H5T_PERS_SOFT, "enum2int", -1, -1, enum2int)
+ *     H5Tunregister(H5T_PERS_SOFT, "int2enum", -1, -1, int2enum)             # <<<<<<<<<<<<<<
+ * 
+ *     return 0
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Tunregister(H5T_PERS_SOFT, __pyx_k__int2enum, -1, -1, __pyx_f_4h5py_5_conv_int2enum); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 630; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/_conv.pyx":632
+ *     H5Tunregister(H5T_PERS_SOFT, "int2enum", -1, -1, int2enum)
+ * 
+ *     return 0             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_r = 0;
+  goto __pyx_L0;
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py._conv.unregister_converters", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_5_conv_5unregister_converters(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static PyObject *__pyx_pw_4h5py_5_conv_5unregister_converters(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("unregister_converters (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_5_conv_4unregister_converters(__pyx_self);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/_conv.pyx":615
+ *     return 0
+ * 
+ * cpdef int unregister_converters() except -1:             # <<<<<<<<<<<<<<
+ * 
+ *     H5Tunregister(H5T_PERS_HARD, "vlen2str", -1, -1, vlen2str)
+ */
+
+static PyObject *__pyx_pf_4h5py_5_conv_4unregister_converters(CYTHON_UNUSED PyObject *__pyx_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("unregister_converters", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_4h5py_5_conv_unregister_converters(0); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 615; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyInt_FromLong(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 615; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py._conv.unregister_converters", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyMethodDef __pyx_methods[] = {
+  {__Pyx_NAMESTR("get_python_obj"), (PyCFunction)__pyx_pw_4h5py_5_conv_1get_python_obj, METH_NOARGS, __Pyx_DOCSTR(0)},
+  {__Pyx_NAMESTR("register_converters"), (PyCFunction)__pyx_pw_4h5py_5_conv_3register_converters, METH_NOARGS, __Pyx_DOCSTR(0)},
+  {__Pyx_NAMESTR("unregister_converters"), (PyCFunction)__pyx_pw_4h5py_5_conv_5unregister_converters, METH_NOARGS, __Pyx_DOCSTR(0)},
+  {0, 0, 0, 0}
+};
+
+#if PY_MAJOR_VERSION >= 3
+static struct PyModuleDef __pyx_moduledef = {
+  #if PY_VERSION_HEX < 0x03020000
+    { PyObject_HEAD_INIT(NULL) NULL, 0, NULL },
+  #else
+    PyModuleDef_HEAD_INIT,
+  #endif
+    __Pyx_NAMESTR("_conv"),
+    __Pyx_DOCSTR(__pyx_k_13), /* m_doc */
+    -1, /* m_size */
+    __pyx_methods /* m_methods */,
+    NULL, /* m_reload */
+    NULL, /* m_traverse */
+    NULL, /* m_clear */
+    NULL /* m_free */
+};
+#endif
+
+static __Pyx_StringTabEntry __pyx_string_tab[] = {
+  {&__pyx_kp_s_11, __pyx_k_11, sizeof(__pyx_k_11), 0, 0, 1, 0},
+  {&__pyx_kp_s_3, __pyx_k_3, sizeof(__pyx_k_3), 0, 0, 1, 0},
+  {&__pyx_kp_s_5, __pyx_k_5, sizeof(__pyx_k_5), 0, 0, 1, 0},
+  {&__pyx_kp_s_7, __pyx_k_7, sizeof(__pyx_k_7), 0, 0, 1, 0},
+  {&__pyx_kp_s_9, __pyx_k_9, sizeof(__pyx_k_9), 0, 0, 1, 0},
+  {&__pyx_n_s__MemoryError, __pyx_k__MemoryError, sizeof(__pyx_k__MemoryError), 0, 0, 1, 1},
+  {&__pyx_n_s__TypeError, __pyx_k__TypeError, sizeof(__pyx_k__TypeError), 0, 0, 1, 1},
+  {&__pyx_n_s__ValueError, __pyx_k__ValueError, sizeof(__pyx_k__ValueError), 0, 0, 1, 1},
+  {&__pyx_n_s____main__, __pyx_k____main__, sizeof(__pyx_k____main__), 0, 0, 1, 1},
+  {&__pyx_n_s____test__, __pyx_k____test__, sizeof(__pyx_k____test__), 0, 0, 1, 1},
+  {0, 0, 0, 0, 0, 0, 0}
+};
+static int __Pyx_InitCachedBuiltins(void) {
+  __pyx_builtin_ValueError = __Pyx_GetName(__pyx_b, __pyx_n_s__ValueError); if (!__pyx_builtin_ValueError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 220; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_builtin_TypeError = __Pyx_GetName(__pyx_b, __pyx_n_s__TypeError); if (!__pyx_builtin_TypeError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 246; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_builtin_MemoryError = __Pyx_GetName(__pyx_b, __pyx_n_s__MemoryError); if (!__pyx_builtin_MemoryError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 529; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  return 0;
+  __pyx_L1_error:;
+  return -1;
+}
+
+static int __Pyx_InitCachedConstants(void) {
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0);
+
+  /* "h5py/_conv.pyx":220
+ *                         #temp_encoded = PyString_AsDecodedObject(temp_object, "utf8", NULL)
+ *                     except:
+ *                         raise ValueError("Byte string is not valid utf-8 and can't be stored in a utf-8 dataset")             # <<<<<<<<<<<<<<
+ *                 temp_string = PyBytes_AsString(temp_object)
+ *                 temp_string_len = PyBytes_Size(temp_object)
+ */
+  __pyx_k_tuple_4 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_3)); if (unlikely(!__pyx_k_tuple_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 220; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_4);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_4));
+
+  /* "h5py/_conv.pyx":246
+ *                     temp_string_len = PyBytes_Size(temp_encoded)
+ *                 else:
+ *                     raise TypeError("Unrecognized dataset encoding")             # <<<<<<<<<<<<<<
+ * 
+ *         if strlen(temp_string) != temp_string_len:
+ */
+  __pyx_k_tuple_6 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_5)); if (unlikely(!__pyx_k_tuple_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 246; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_6);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_6));
+
+  /* "h5py/_conv.pyx":249
+ * 
+ *         if strlen(temp_string) != temp_string_len:
+ *             raise ValueError("VLEN strings do not support embedded NULLs")             # <<<<<<<<<<<<<<
+ * 
+ *         buf_cstring[0] = <char*>malloc(temp_string_len+1)
+ */
+  __pyx_k_tuple_8 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_7)); if (unlikely(!__pyx_k_tuple_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_8);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_8));
+
+  /* "h5py/_conv.pyx":364
+ *         obj = <object>(buf_obj[0])
+ *         if not isinstance(obj, Reference):
+ *             raise TypeError("Can't convert incompatible object to HDF5 object reference")             # <<<<<<<<<<<<<<
+ *         ref = <Reference>(buf_obj[0])
+ *         buf_ref[0] = ref.ref.obj_ref
+ */
+  __pyx_k_tuple_10 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_9)); if (unlikely(!__pyx_k_tuple_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 364; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_10);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_10));
+
+  /* "h5py/_conv.pyx":405
+ *         obj = <object>(buf_obj[0])
+ *         if not isinstance(obj, RegionReference):
+ *             raise TypeError("Can't convert incompatible object to HDF5 region reference")             # <<<<<<<<<<<<<<
+ *         ref = <RegionReference>(buf_obj[0])
+ *         memcpy(buf_ref, ref.ref.reg_ref, sizeof(hdset_reg_ref_t))
+ */
+  __pyx_k_tuple_12 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_11)); if (unlikely(!__pyx_k_tuple_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 405; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_12);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_12));
+  __Pyx_RefNannyFinishContext();
+  return 0;
+  __pyx_L1_error:;
+  __Pyx_RefNannyFinishContext();
+  return -1;
+}
+
+static int __Pyx_InitGlobals(void) {
+  if (__Pyx_InitStrings(__pyx_string_tab) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  return 0;
+  __pyx_L1_error:;
+  return -1;
+}
+
+#if PY_MAJOR_VERSION < 3
+PyMODINIT_FUNC init_conv(void); /*proto*/
+PyMODINIT_FUNC init_conv(void)
+#else
+PyMODINIT_FUNC PyInit__conv(void); /*proto*/
+PyMODINIT_FUNC PyInit__conv(void)
+#endif
+{
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  __Pyx_RefNannyDeclarations
+  #if CYTHON_REFNANNY
+  __Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny");
+  if (!__Pyx_RefNanny) {
+      PyErr_Clear();
+      __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny");
+      if (!__Pyx_RefNanny)
+          Py_FatalError("failed to import 'refnanny' module");
+  }
+  #endif
+  __Pyx_RefNannySetupContext("PyMODINIT_FUNC PyInit__conv(void)", 0);
+  if ( __Pyx_check_binary_version() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #ifdef __Pyx_CyFunction_USED
+  if (__Pyx_CyFunction_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #endif
+  #ifdef __Pyx_FusedFunction_USED
+  if (__pyx_FusedFunction_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #endif
+  #ifdef __Pyx_Generator_USED
+  if (__pyx_Generator_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #endif
+  /*--- Library function declarations ---*/
+  /*--- Threads initialization code ---*/
+  #if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS
+  #ifdef WITH_THREAD /* Python build with threading support? */
+  PyEval_InitThreads();
+  #endif
+  #endif
+  /*--- Module creation code ---*/
+  #if PY_MAJOR_VERSION < 3
+  __pyx_m = Py_InitModule4(__Pyx_NAMESTR("_conv"), __pyx_methods, __Pyx_DOCSTR(__pyx_k_13), 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m);
+  #else
+  __pyx_m = PyModule_Create(&__pyx_moduledef);
+  #endif
+  if (unlikely(!__pyx_m)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #if PY_MAJOR_VERSION >= 3
+  {
+    PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (!PyDict_GetItemString(modules, "h5py._conv")) {
+      if (unlikely(PyDict_SetItemString(modules, "h5py._conv", __pyx_m) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    }
+  }
+  #endif
+  __pyx_b = PyImport_AddModule(__Pyx_NAMESTR(__Pyx_BUILTIN_MODULE_NAME)); if (unlikely(!__pyx_b)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #if CYTHON_COMPILING_IN_PYPY
+  Py_INCREF(__pyx_b);
+  #endif
+  if (__Pyx_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  /*--- Initialize various global constants etc. ---*/
+  if (unlikely(__Pyx_InitGlobals() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__pyx_module_is_main_h5py___conv) {
+    if (__Pyx_SetAttrString(__pyx_m, "__name__", __pyx_n_s____main__) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  }
+  /*--- Builtin init code ---*/
+  if (unlikely(__Pyx_InitCachedBuiltins() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  /*--- Constants init code ---*/
+  if (unlikely(__Pyx_InitCachedConstants() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  /*--- Global init code ---*/
+  /*--- Variable export code ---*/
+  /*--- Function export code ---*/
+  /*--- Type init code ---*/
+  /*--- Type import code ---*/
+  __pyx_ptype_4h5py_3h5r_Reference = __Pyx_ImportType("h5py.h5r", "Reference", sizeof(struct __pyx_obj_4h5py_3h5r_Reference), 1); if (unlikely(!__pyx_ptype_4h5py_3h5r_Reference)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5r_RegionReference = __Pyx_ImportType("h5py.h5r", "RegionReference", sizeof(struct __pyx_obj_4h5py_3h5r_RegionReference), 1); if (unlikely(!__pyx_ptype_4h5py_3h5r_RegionReference)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  /*--- Variable import code ---*/
+  /*--- Function import code ---*/
+  __pyx_t_1 = __Pyx_ImportModule("h5py.defs"); if (!__pyx_t_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Tcreate", (void (**)(void))&__pyx_f_4h5py_4defs_H5Tcreate, "hid_t (enum H5T_class_t, size_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Tcopy", (void (**)(void))&__pyx_f_4h5py_4defs_H5Tcopy, "hid_t (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Tequal", (void (**)(void))&__pyx_f_4h5py_4defs_H5Tequal, "htri_t (hid_t, hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Tlock", (void (**)(void))&__pyx_f_4h5py_4defs_H5Tlock, "herr_t (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Tget_size", (void (**)(void))&__pyx_f_4h5py_4defs_H5Tget_size, "size_t (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Tget_super", (void (**)(void))&__pyx_f_4h5py_4defs_H5Tget_super, "hid_t (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Tclose", (void (**)(void))&__pyx_f_4h5py_4defs_H5Tclose, "herr_t (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Tconvert", (void (**)(void))&__pyx_f_4h5py_4defs_H5Tconvert, "herr_t (hid_t, hid_t, size_t, void *, void *, hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Tset_size", (void (**)(void))&__pyx_f_4h5py_4defs_H5Tset_size, "herr_t (hid_t, size_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Tget_cset", (void (**)(void))&__pyx_f_4h5py_4defs_H5Tget_cset, "H5T_cset_t (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Tis_variable_str", (void (**)(void))&__pyx_f_4h5py_4defs_H5Tis_variable_str, "htri_t (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Tenum_create", (void (**)(void))&__pyx_f_4h5py_4defs_H5Tenum_create, "hid_t (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Tset_tag", (void (**)(void))&__pyx_f_4h5py_4defs_H5Tset_tag, "herr_t (hid_t, char *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Tregister", (void (**)(void))&__pyx_f_4h5py_4defs_H5Tregister, "herr_t (H5T_pers_t, char *, hid_t, hid_t, H5T_conv_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Tunregister", (void (**)(void))&__pyx_f_4h5py_4defs_H5Tunregister, "herr_t (H5T_pers_t, char *, hid_t, hid_t, H5T_conv_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  Py_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  /*--- Execution code ---*/
+
+  /* "h5py/_conv.pyx":50
+ * 
+ * # Create Python object equivalents
+ * cdef hid_t H5PY_OBJ = 0             # <<<<<<<<<<<<<<
+ * 
+ * cpdef hid_t get_python_obj():
+ */
+  __pyx_v_4h5py_5_conv_H5PY_OBJ = 0;
+
+  /* "h5py/_conv.pyx":1
+ * # cython: profile=False             # <<<<<<<<<<<<<<
+ * 
+ * # This file is part of h5py, a Python interface to the HDF5 library.
+ */
+  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s____test__, ((PyObject *)__pyx_t_2)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  if (__pyx_m) {
+    __Pyx_AddTraceback("init h5py._conv", __pyx_clineno, __pyx_lineno, __pyx_filename);
+    Py_DECREF(__pyx_m); __pyx_m = 0;
+  } else if (!PyErr_Occurred()) {
+    PyErr_SetString(PyExc_ImportError, "init h5py._conv");
+  }
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  #if PY_MAJOR_VERSION < 3
+  return;
+  #else
+  return __pyx_m;
+  #endif
+}
+
+/* Runtime support code */
+#if CYTHON_REFNANNY
+static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) {
+    PyObject *m = NULL, *p = NULL;
+    void *r = NULL;
+    m = PyImport_ImportModule((char *)modname);
+    if (!m) goto end;
+    p = PyObject_GetAttrString(m, (char *)"RefNannyAPI");
+    if (!p) goto end;
+    r = PyLong_AsVoidPtr(p);
+end:
+    Py_XDECREF(p);
+    Py_XDECREF(m);
+    return (__Pyx_RefNannyAPIStruct *)r;
+}
+#endif /* CYTHON_REFNANNY */
+
+static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name) {
+    PyObject *result;
+    result = PyObject_GetAttr(dict, name);
+    if (!result) {
+        if (dict != __pyx_b) {
+            PyErr_Clear();
+            result = PyObject_GetAttr(__pyx_b, name);
+        }
+        if (!result) {
+            PyErr_SetObject(PyExc_NameError, name);
+        }
+    }
+    return result;
+}
+
+static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) {
+    PyObject *local_type, *local_value, *local_tb;
+#if CYTHON_COMPILING_IN_CPYTHON
+    PyObject *tmp_type, *tmp_value, *tmp_tb;
+    PyThreadState *tstate = PyThreadState_GET();
+    local_type = tstate->curexc_type;
+    local_value = tstate->curexc_value;
+    local_tb = tstate->curexc_traceback;
+    tstate->curexc_type = 0;
+    tstate->curexc_value = 0;
+    tstate->curexc_traceback = 0;
+#else
+    PyErr_Fetch(&local_type, &local_value, &local_tb);
+#endif
+    PyErr_NormalizeException(&local_type, &local_value, &local_tb);
+#if CYTHON_COMPILING_IN_CPYTHON
+    if (unlikely(tstate->curexc_type))
+#else
+    if (unlikely(PyErr_Occurred()))
+#endif
+        goto bad;
+    #if PY_MAJOR_VERSION >= 3
+    if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0))
+        goto bad;
+    #endif
+    Py_INCREF(local_type);
+    Py_INCREF(local_value);
+    Py_INCREF(local_tb);
+    *type = local_type;
+    *value = local_value;
+    *tb = local_tb;
+#if CYTHON_COMPILING_IN_CPYTHON
+    tmp_type = tstate->exc_type;
+    tmp_value = tstate->exc_value;
+    tmp_tb = tstate->exc_traceback;
+    tstate->exc_type = local_type;
+    tstate->exc_value = local_value;
+    tstate->exc_traceback = local_tb;
+    /* Make sure tstate is in a consistent state when we XDECREF
+       these objects (DECREF may run arbitrary code). */
+    Py_XDECREF(tmp_type);
+    Py_XDECREF(tmp_value);
+    Py_XDECREF(tmp_tb);
+#else
+    PyErr_SetExcInfo(local_type, local_value, local_tb);
+#endif
+    return 0;
+bad:
+    *type = 0;
+    *value = 0;
+    *tb = 0;
+    Py_XDECREF(local_type);
+    Py_XDECREF(local_value);
+    Py_XDECREF(local_tb);
+    return -1;
+}
+
+static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb) {
+#if CYTHON_COMPILING_IN_CPYTHON
+    PyObject *tmp_type, *tmp_value, *tmp_tb;
+    PyThreadState *tstate = PyThreadState_GET();
+    tmp_type = tstate->curexc_type;
+    tmp_value = tstate->curexc_value;
+    tmp_tb = tstate->curexc_traceback;
+    tstate->curexc_type = type;
+    tstate->curexc_value = value;
+    tstate->curexc_traceback = tb;
+    Py_XDECREF(tmp_type);
+    Py_XDECREF(tmp_value);
+    Py_XDECREF(tmp_tb);
+#else
+    PyErr_Restore(type, value, tb);
+#endif
+}
+static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb) {
+#if CYTHON_COMPILING_IN_CPYTHON
+    PyThreadState *tstate = PyThreadState_GET();
+    *type = tstate->curexc_type;
+    *value = tstate->curexc_value;
+    *tb = tstate->curexc_traceback;
+    tstate->curexc_type = 0;
+    tstate->curexc_value = 0;
+    tstate->curexc_traceback = 0;
+#else
+    PyErr_Fetch(type, value, tb);
+#endif
+}
+
+#if PY_MAJOR_VERSION < 3
+static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb,
+                        CYTHON_UNUSED PyObject *cause) {
+    Py_XINCREF(type);
+    if (!value || value == Py_None)
+        value = NULL;
+    else
+        Py_INCREF(value);
+    if (!tb || tb == Py_None)
+        tb = NULL;
+    else {
+        Py_INCREF(tb);
+        if (!PyTraceBack_Check(tb)) {
+            PyErr_SetString(PyExc_TypeError,
+                "raise: arg 3 must be a traceback or None");
+            goto raise_error;
+        }
+    }
+    #if PY_VERSION_HEX < 0x02050000
+    if (PyClass_Check(type)) {
+    #else
+    if (PyType_Check(type)) {
+    #endif
+#if CYTHON_COMPILING_IN_PYPY
+        if (!value) {
+            Py_INCREF(Py_None);
+            value = Py_None;
+        }
+#endif
+        PyErr_NormalizeException(&type, &value, &tb);
+    } else {
+        if (value) {
+            PyErr_SetString(PyExc_TypeError,
+                "instance exception may not have a separate value");
+            goto raise_error;
+        }
+        value = type;
+        #if PY_VERSION_HEX < 0x02050000
+            if (PyInstance_Check(type)) {
+                type = (PyObject*) ((PyInstanceObject*)type)->in_class;
+                Py_INCREF(type);
+            }
+            else {
+                type = 0;
+                PyErr_SetString(PyExc_TypeError,
+                    "raise: exception must be an old-style class or instance");
+                goto raise_error;
+            }
+        #else
+            type = (PyObject*) Py_TYPE(type);
+            Py_INCREF(type);
+            if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) {
+                PyErr_SetString(PyExc_TypeError,
+                    "raise: exception class must be a subclass of BaseException");
+                goto raise_error;
+            }
+        #endif
+    }
+    __Pyx_ErrRestore(type, value, tb);
+    return;
+raise_error:
+    Py_XDECREF(value);
+    Py_XDECREF(type);
+    Py_XDECREF(tb);
+    return;
+}
+#else /* Python 3+ */
+static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) {
+    PyObject* owned_instance = NULL;
+    if (tb == Py_None) {
+        tb = 0;
+    } else if (tb && !PyTraceBack_Check(tb)) {
+        PyErr_SetString(PyExc_TypeError,
+            "raise: arg 3 must be a traceback or None");
+        goto bad;
+    }
+    if (value == Py_None)
+        value = 0;
+    if (PyExceptionInstance_Check(type)) {
+        if (value) {
+            PyErr_SetString(PyExc_TypeError,
+                "instance exception may not have a separate value");
+            goto bad;
+        }
+        value = type;
+        type = (PyObject*) Py_TYPE(value);
+    } else if (PyExceptionClass_Check(type)) {
+        PyObject *args;
+        if (!value)
+            args = PyTuple_New(0);
+        else if (PyTuple_Check(value)) {
+            Py_INCREF(value);
+            args = value;
+        }
+        else
+            args = PyTuple_Pack(1, value);
+        if (!args)
+            goto bad;
+        owned_instance = PyEval_CallObject(type, args);
+        Py_DECREF(args);
+        if (!owned_instance)
+            goto bad;
+        value = owned_instance;
+        if (!PyExceptionInstance_Check(value)) {
+            PyErr_Format(PyExc_TypeError,
+                         "calling %R should have returned an instance of "
+                         "BaseException, not %R",
+                         type, Py_TYPE(value));
+            goto bad;
+        }
+    } else {
+        PyErr_SetString(PyExc_TypeError,
+            "raise: exception class must be a subclass of BaseException");
+        goto bad;
+    }
+    if (cause && cause != Py_None) {
+        PyObject *fixed_cause;
+        if (PyExceptionClass_Check(cause)) {
+            fixed_cause = PyObject_CallObject(cause, NULL);
+            if (fixed_cause == NULL)
+                goto bad;
+        }
+        else if (PyExceptionInstance_Check(cause)) {
+            fixed_cause = cause;
+            Py_INCREF(fixed_cause);
+        }
+        else {
+            PyErr_SetString(PyExc_TypeError,
+                            "exception causes must derive from "
+                            "BaseException");
+            goto bad;
+        }
+        PyException_SetCause(value, fixed_cause);
+    }
+    PyErr_SetObject(type, value);
+    if (tb) {
+        PyThreadState *tstate = PyThreadState_GET();
+        PyObject* tmp_tb = tstate->curexc_traceback;
+        if (tb != tmp_tb) {
+            Py_INCREF(tb);
+            tstate->curexc_traceback = tb;
+            Py_XDECREF(tmp_tb);
+        }
+    }
+bad:
+    Py_XDECREF(owned_instance);
+    return;
+}
+#endif
+
+static CYTHON_INLINE void __Pyx_ExceptionSave(PyObject **type, PyObject **value, PyObject **tb) {
+#if CYTHON_COMPILING_IN_CPYTHON
+    PyThreadState *tstate = PyThreadState_GET();
+    *type = tstate->exc_type;
+    *value = tstate->exc_value;
+    *tb = tstate->exc_traceback;
+    Py_XINCREF(*type);
+    Py_XINCREF(*value);
+    Py_XINCREF(*tb);
+#else
+    PyErr_GetExcInfo(type, value, tb);
+#endif
+}
+static void __Pyx_ExceptionReset(PyObject *type, PyObject *value, PyObject *tb) {
+#if CYTHON_COMPILING_IN_CPYTHON
+    PyObject *tmp_type, *tmp_value, *tmp_tb;
+    PyThreadState *tstate = PyThreadState_GET();
+    tmp_type = tstate->exc_type;
+    tmp_value = tstate->exc_value;
+    tmp_tb = tstate->exc_traceback;
+    tstate->exc_type = type;
+    tstate->exc_value = value;
+    tstate->exc_traceback = tb;
+    Py_XDECREF(tmp_type);
+    Py_XDECREF(tmp_value);
+    Py_XDECREF(tmp_tb);
+#else
+    PyErr_SetExcInfo(type, value, tb);
+#endif
+}
+
+static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_hid_t(hid_t val) {
+    const hid_t neg_one = (hid_t)-1, const_zero = (hid_t)0;
+    const int is_unsigned = const_zero < neg_one;
+    if ((sizeof(hid_t) == sizeof(char))  ||
+        (sizeof(hid_t) == sizeof(short))) {
+        return PyInt_FromLong((long)val);
+    } else if ((sizeof(hid_t) == sizeof(int)) ||
+               (sizeof(hid_t) == sizeof(long))) {
+        if (is_unsigned)
+            return PyLong_FromUnsignedLong((unsigned long)val);
+        else
+            return PyInt_FromLong((long)val);
+    } else if (sizeof(hid_t) == sizeof(PY_LONG_LONG)) {
+        if (is_unsigned)
+            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG)val);
+        else
+            return PyLong_FromLongLong((PY_LONG_LONG)val);
+    } else {
+        int one = 1; int little = (int)*(unsigned char *)&one;
+        unsigned char *bytes = (unsigned char *)&val;
+        return _PyLong_FromByteArray(bytes, sizeof(hid_t),
+                                     little, !is_unsigned);
+    }
+}
+
+static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_htri_t(htri_t val) {
+    const htri_t neg_one = (htri_t)-1, const_zero = (htri_t)0;
+    const int is_unsigned = const_zero < neg_one;
+    if ((sizeof(htri_t) == sizeof(char))  ||
+        (sizeof(htri_t) == sizeof(short))) {
+        return PyInt_FromLong((long)val);
+    } else if ((sizeof(htri_t) == sizeof(int)) ||
+               (sizeof(htri_t) == sizeof(long))) {
+        if (is_unsigned)
+            return PyLong_FromUnsignedLong((unsigned long)val);
+        else
+            return PyInt_FromLong((long)val);
+    } else if (sizeof(htri_t) == sizeof(PY_LONG_LONG)) {
+        if (is_unsigned)
+            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG)val);
+        else
+            return PyLong_FromLongLong((PY_LONG_LONG)val);
+    } else {
+        int one = 1; int little = (int)*(unsigned char *)&one;
+        unsigned char *bytes = (unsigned char *)&val;
+        return _PyLong_FromByteArray(bytes, sizeof(htri_t),
+                                     little, !is_unsigned);
+    }
+}
+
+static CYTHON_INLINE unsigned char __Pyx_PyInt_AsUnsignedChar(PyObject* x) {
+    const unsigned char neg_one = (unsigned char)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(unsigned char) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(unsigned char)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to unsigned char" :
+                    "value too large to convert to unsigned char");
+            }
+            return (unsigned char)-1;
+        }
+        return (unsigned char)val;
+    }
+    return (unsigned char)__Pyx_PyInt_AsUnsignedLong(x);
+}
+
+static CYTHON_INLINE unsigned short __Pyx_PyInt_AsUnsignedShort(PyObject* x) {
+    const unsigned short neg_one = (unsigned short)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(unsigned short) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(unsigned short)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to unsigned short" :
+                    "value too large to convert to unsigned short");
+            }
+            return (unsigned short)-1;
+        }
+        return (unsigned short)val;
+    }
+    return (unsigned short)__Pyx_PyInt_AsUnsignedLong(x);
+}
+
+static CYTHON_INLINE unsigned int __Pyx_PyInt_AsUnsignedInt(PyObject* x) {
+    const unsigned int neg_one = (unsigned int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(unsigned int) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(unsigned int)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to unsigned int" :
+                    "value too large to convert to unsigned int");
+            }
+            return (unsigned int)-1;
+        }
+        return (unsigned int)val;
+    }
+    return (unsigned int)__Pyx_PyInt_AsUnsignedLong(x);
+}
+
+static CYTHON_INLINE char __Pyx_PyInt_AsChar(PyObject* x) {
+    const char neg_one = (char)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(char) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(char)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to char" :
+                    "value too large to convert to char");
+            }
+            return (char)-1;
+        }
+        return (char)val;
+    }
+    return (char)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE short __Pyx_PyInt_AsShort(PyObject* x) {
+    const short neg_one = (short)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(short) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(short)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to short" :
+                    "value too large to convert to short");
+            }
+            return (short)-1;
+        }
+        return (short)val;
+    }
+    return (short)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE int __Pyx_PyInt_AsInt(PyObject* x) {
+    const int neg_one = (int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(int) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(int)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to int" :
+                    "value too large to convert to int");
+            }
+            return (int)-1;
+        }
+        return (int)val;
+    }
+    return (int)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE signed char __Pyx_PyInt_AsSignedChar(PyObject* x) {
+    const signed char neg_one = (signed char)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(signed char) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(signed char)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to signed char" :
+                    "value too large to convert to signed char");
+            }
+            return (signed char)-1;
+        }
+        return (signed char)val;
+    }
+    return (signed char)__Pyx_PyInt_AsSignedLong(x);
+}
+
+static CYTHON_INLINE signed short __Pyx_PyInt_AsSignedShort(PyObject* x) {
+    const signed short neg_one = (signed short)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(signed short) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(signed short)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to signed short" :
+                    "value too large to convert to signed short");
+            }
+            return (signed short)-1;
+        }
+        return (signed short)val;
+    }
+    return (signed short)__Pyx_PyInt_AsSignedLong(x);
+}
+
+static CYTHON_INLINE signed int __Pyx_PyInt_AsSignedInt(PyObject* x) {
+    const signed int neg_one = (signed int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(signed int) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(signed int)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to signed int" :
+                    "value too large to convert to signed int");
+            }
+            return (signed int)-1;
+        }
+        return (signed int)val;
+    }
+    return (signed int)__Pyx_PyInt_AsSignedLong(x);
+}
+
+static CYTHON_INLINE int __Pyx_PyInt_AsLongDouble(PyObject* x) {
+    const int neg_one = (int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(int) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(int)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to int" :
+                    "value too large to convert to int");
+            }
+            return (int)-1;
+        }
+        return (int)val;
+    }
+    return (int)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE unsigned long __Pyx_PyInt_AsUnsignedLong(PyObject* x) {
+    const unsigned long neg_one = (unsigned long)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to unsigned long");
+            return (unsigned long)-1;
+        }
+        return (unsigned long)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to unsigned long");
+                return (unsigned long)-1;
+            }
+            return (unsigned long)PyLong_AsUnsignedLong(x);
+        } else {
+            return (unsigned long)PyLong_AsLong(x);
+        }
+    } else {
+        unsigned long val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (unsigned long)-1;
+        val = __Pyx_PyInt_AsUnsignedLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE unsigned PY_LONG_LONG __Pyx_PyInt_AsUnsignedLongLong(PyObject* x) {
+    const unsigned PY_LONG_LONG neg_one = (unsigned PY_LONG_LONG)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to unsigned PY_LONG_LONG");
+            return (unsigned PY_LONG_LONG)-1;
+        }
+        return (unsigned PY_LONG_LONG)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to unsigned PY_LONG_LONG");
+                return (unsigned PY_LONG_LONG)-1;
+            }
+            return (unsigned PY_LONG_LONG)PyLong_AsUnsignedLongLong(x);
+        } else {
+            return (unsigned PY_LONG_LONG)PyLong_AsLongLong(x);
+        }
+    } else {
+        unsigned PY_LONG_LONG val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (unsigned PY_LONG_LONG)-1;
+        val = __Pyx_PyInt_AsUnsignedLongLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE long __Pyx_PyInt_AsLong(PyObject* x) {
+    const long neg_one = (long)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to long");
+            return (long)-1;
+        }
+        return (long)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to long");
+                return (long)-1;
+            }
+            return (long)PyLong_AsUnsignedLong(x);
+        } else {
+            return (long)PyLong_AsLong(x);
+        }
+    } else {
+        long val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (long)-1;
+        val = __Pyx_PyInt_AsLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE PY_LONG_LONG __Pyx_PyInt_AsLongLong(PyObject* x) {
+    const PY_LONG_LONG neg_one = (PY_LONG_LONG)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to PY_LONG_LONG");
+            return (PY_LONG_LONG)-1;
+        }
+        return (PY_LONG_LONG)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to PY_LONG_LONG");
+                return (PY_LONG_LONG)-1;
+            }
+            return (PY_LONG_LONG)PyLong_AsUnsignedLongLong(x);
+        } else {
+            return (PY_LONG_LONG)PyLong_AsLongLong(x);
+        }
+    } else {
+        PY_LONG_LONG val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (PY_LONG_LONG)-1;
+        val = __Pyx_PyInt_AsLongLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE signed long __Pyx_PyInt_AsSignedLong(PyObject* x) {
+    const signed long neg_one = (signed long)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to signed long");
+            return (signed long)-1;
+        }
+        return (signed long)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to signed long");
+                return (signed long)-1;
+            }
+            return (signed long)PyLong_AsUnsignedLong(x);
+        } else {
+            return (signed long)PyLong_AsLong(x);
+        }
+    } else {
+        signed long val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (signed long)-1;
+        val = __Pyx_PyInt_AsSignedLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE signed PY_LONG_LONG __Pyx_PyInt_AsSignedLongLong(PyObject* x) {
+    const signed PY_LONG_LONG neg_one = (signed PY_LONG_LONG)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to signed PY_LONG_LONG");
+            return (signed PY_LONG_LONG)-1;
+        }
+        return (signed PY_LONG_LONG)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to signed PY_LONG_LONG");
+                return (signed PY_LONG_LONG)-1;
+            }
+            return (signed PY_LONG_LONG)PyLong_AsUnsignedLongLong(x);
+        } else {
+            return (signed PY_LONG_LONG)PyLong_AsLongLong(x);
+        }
+    } else {
+        signed PY_LONG_LONG val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (signed PY_LONG_LONG)-1;
+        val = __Pyx_PyInt_AsSignedLongLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static void __Pyx_WriteUnraisable(const char *name, CYTHON_UNUSED int clineno,
+                                  CYTHON_UNUSED int lineno, CYTHON_UNUSED const char *filename) {
+    PyObject *old_exc, *old_val, *old_tb;
+    PyObject *ctx;
+    __Pyx_ErrFetch(&old_exc, &old_val, &old_tb);
+    #if PY_MAJOR_VERSION < 3
+    ctx = PyString_FromString(name);
+    #else
+    ctx = PyUnicode_FromString(name);
+    #endif
+    __Pyx_ErrRestore(old_exc, old_val, old_tb);
+    if (!ctx) {
+        PyErr_WriteUnraisable(Py_None);
+    } else {
+        PyErr_WriteUnraisable(ctx);
+        Py_DECREF(ctx);
+    }
+}
+
+static int __Pyx_check_binary_version(void) {
+    char ctversion[4], rtversion[4];
+    PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION);
+    PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion());
+    if (ctversion[0] != rtversion[0] || ctversion[2] != rtversion[2]) {
+        char message[200];
+        PyOS_snprintf(message, sizeof(message),
+                      "compiletime version %s of module '%.100s' "
+                      "does not match runtime version %s",
+                      ctversion, __Pyx_MODULE_NAME, rtversion);
+        #if PY_VERSION_HEX < 0x02050000
+        return PyErr_Warn(NULL, message);
+        #else
+        return PyErr_WarnEx(NULL, message, 1);
+        #endif
+    }
+    return 0;
+}
+
+#ifndef __PYX_HAVE_RT_ImportModule
+#define __PYX_HAVE_RT_ImportModule
+static PyObject *__Pyx_ImportModule(const char *name) {
+    PyObject *py_name = 0;
+    PyObject *py_module = 0;
+    py_name = __Pyx_PyIdentifier_FromString(name);
+    if (!py_name)
+        goto bad;
+    py_module = PyImport_Import(py_name);
+    Py_DECREF(py_name);
+    return py_module;
+bad:
+    Py_XDECREF(py_name);
+    return 0;
+}
+#endif
+
+#ifndef __PYX_HAVE_RT_ImportType
+#define __PYX_HAVE_RT_ImportType
+static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name,
+    size_t size, int strict)
+{
+    PyObject *py_module = 0;
+    PyObject *result = 0;
+    PyObject *py_name = 0;
+    char warning[200];
+    Py_ssize_t basicsize;
+#ifdef Py_LIMITED_API
+    PyObject *py_basicsize;
+#endif
+    py_module = __Pyx_ImportModule(module_name);
+    if (!py_module)
+        goto bad;
+    py_name = __Pyx_PyIdentifier_FromString(class_name);
+    if (!py_name)
+        goto bad;
+    result = PyObject_GetAttr(py_module, py_name);
+    Py_DECREF(py_name);
+    py_name = 0;
+    Py_DECREF(py_module);
+    py_module = 0;
+    if (!result)
+        goto bad;
+    if (!PyType_Check(result)) {
+        PyErr_Format(PyExc_TypeError,
+            "%s.%s is not a type object",
+            module_name, class_name);
+        goto bad;
+    }
+#ifndef Py_LIMITED_API
+    basicsize = ((PyTypeObject *)result)->tp_basicsize;
+#else
+    py_basicsize = PyObject_GetAttrString(result, "__basicsize__");
+    if (!py_basicsize)
+        goto bad;
+    basicsize = PyLong_AsSsize_t(py_basicsize);
+    Py_DECREF(py_basicsize);
+    py_basicsize = 0;
+    if (basicsize == (Py_ssize_t)-1 && PyErr_Occurred())
+        goto bad;
+#endif
+    if (!strict && (size_t)basicsize > size) {
+        PyOS_snprintf(warning, sizeof(warning),
+            "%s.%s size changed, may indicate binary incompatibility",
+            module_name, class_name);
+        #if PY_VERSION_HEX < 0x02050000
+        if (PyErr_Warn(NULL, warning) < 0) goto bad;
+        #else
+        if (PyErr_WarnEx(NULL, warning, 0) < 0) goto bad;
+        #endif
+    }
+    else if ((size_t)basicsize != size) {
+        PyErr_Format(PyExc_ValueError,
+            "%s.%s has the wrong size, try recompiling",
+            module_name, class_name);
+        goto bad;
+    }
+    return (PyTypeObject *)result;
+bad:
+    Py_XDECREF(py_module);
+    Py_XDECREF(result);
+    return NULL;
+}
+#endif
+
+#ifndef __PYX_HAVE_RT_ImportFunction
+#define __PYX_HAVE_RT_ImportFunction
+static int __Pyx_ImportFunction(PyObject *module, const char *funcname, void (**f)(void), const char *sig) {
+    PyObject *d = 0;
+    PyObject *cobj = 0;
+    union {
+        void (*fp)(void);
+        void *p;
+    } tmp;
+    d = PyObject_GetAttrString(module, (char *)"__pyx_capi__");
+    if (!d)
+        goto bad;
+    cobj = PyDict_GetItemString(d, funcname);
+    if (!cobj) {
+        PyErr_Format(PyExc_ImportError,
+            "%s does not export expected C function %s",
+                PyModule_GetName(module), funcname);
+        goto bad;
+    }
+#if PY_VERSION_HEX >= 0x02070000 && !(PY_MAJOR_VERSION==3 && PY_MINOR_VERSION==0)
+    if (!PyCapsule_IsValid(cobj, sig)) {
+        PyErr_Format(PyExc_TypeError,
+            "C function %s.%s has wrong signature (expected %s, got %s)",
+             PyModule_GetName(module), funcname, sig, PyCapsule_GetName(cobj));
+        goto bad;
+    }
+    tmp.p = PyCapsule_GetPointer(cobj, sig);
+#else
+    {const char *desc, *s1, *s2;
+    desc = (const char *)PyCObject_GetDesc(cobj);
+    if (!desc)
+        goto bad;
+    s1 = desc; s2 = sig;
+    while (*s1 != '\0' && *s1 == *s2) { s1++; s2++; }
+    if (*s1 != *s2) {
+        PyErr_Format(PyExc_TypeError,
+            "C function %s.%s has wrong signature (expected %s, got %s)",
+             PyModule_GetName(module), funcname, sig, desc);
+        goto bad;
+    }
+    tmp.p = PyCObject_AsVoidPtr(cobj);}
+#endif
+    *f = tmp.fp;
+    if (!(*f))
+        goto bad;
+    Py_DECREF(d);
+    return 0;
+bad:
+    Py_XDECREF(d);
+    return -1;
+}
+#endif
+
+static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) {
+    int start = 0, mid = 0, end = count - 1;
+    if (end >= 0 && code_line > entries[end].code_line) {
+        return count;
+    }
+    while (start < end) {
+        mid = (start + end) / 2;
+        if (code_line < entries[mid].code_line) {
+            end = mid;
+        } else if (code_line > entries[mid].code_line) {
+             start = mid + 1;
+        } else {
+            return mid;
+        }
+    }
+    if (code_line <= entries[mid].code_line) {
+        return mid;
+    } else {
+        return mid + 1;
+    }
+}
+static PyCodeObject *__pyx_find_code_object(int code_line) {
+    PyCodeObject* code_object;
+    int pos;
+    if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) {
+        return NULL;
+    }
+    pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
+    if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) {
+        return NULL;
+    }
+    code_object = __pyx_code_cache.entries[pos].code_object;
+    Py_INCREF(code_object);
+    return code_object;
+}
+static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) {
+    int pos, i;
+    __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries;
+    if (unlikely(!code_line)) {
+        return;
+    }
+    if (unlikely(!entries)) {
+        entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry));
+        if (likely(entries)) {
+            __pyx_code_cache.entries = entries;
+            __pyx_code_cache.max_count = 64;
+            __pyx_code_cache.count = 1;
+            entries[0].code_line = code_line;
+            entries[0].code_object = code_object;
+            Py_INCREF(code_object);
+        }
+        return;
+    }
+    pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
+    if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) {
+        PyCodeObject* tmp = entries[pos].code_object;
+        entries[pos].code_object = code_object;
+        Py_DECREF(tmp);
+        return;
+    }
+    if (__pyx_code_cache.count == __pyx_code_cache.max_count) {
+        int new_max = __pyx_code_cache.max_count + 64;
+        entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc(
+            __pyx_code_cache.entries, new_max*sizeof(__Pyx_CodeObjectCacheEntry));
+        if (unlikely(!entries)) {
+            return;
+        }
+        __pyx_code_cache.entries = entries;
+        __pyx_code_cache.max_count = new_max;
+    }
+    for (i=__pyx_code_cache.count; i>pos; i--) {
+        entries[i] = entries[i-1];
+    }
+    entries[pos].code_line = code_line;
+    entries[pos].code_object = code_object;
+    __pyx_code_cache.count++;
+    Py_INCREF(code_object);
+}
+
+#include "compile.h"
+#include "frameobject.h"
+#include "traceback.h"
+static PyCodeObject* __Pyx_CreateCodeObjectForTraceback(
+            const char *funcname, int c_line,
+            int py_line, const char *filename) {
+    PyCodeObject *py_code = 0;
+    PyObject *py_srcfile = 0;
+    PyObject *py_funcname = 0;
+    #if PY_MAJOR_VERSION < 3
+    py_srcfile = PyString_FromString(filename);
+    #else
+    py_srcfile = PyUnicode_FromString(filename);
+    #endif
+    if (!py_srcfile) goto bad;
+    if (c_line) {
+        #if PY_MAJOR_VERSION < 3
+        py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
+        #else
+        py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
+        #endif
+    }
+    else {
+        #if PY_MAJOR_VERSION < 3
+        py_funcname = PyString_FromString(funcname);
+        #else
+        py_funcname = PyUnicode_FromString(funcname);
+        #endif
+    }
+    if (!py_funcname) goto bad;
+    py_code = __Pyx_PyCode_New(
+        0,            /*int argcount,*/
+        0,            /*int kwonlyargcount,*/
+        0,            /*int nlocals,*/
+        0,            /*int stacksize,*/
+        0,            /*int flags,*/
+        __pyx_empty_bytes, /*PyObject *code,*/
+        __pyx_empty_tuple, /*PyObject *consts,*/
+        __pyx_empty_tuple, /*PyObject *names,*/
+        __pyx_empty_tuple, /*PyObject *varnames,*/
+        __pyx_empty_tuple, /*PyObject *freevars,*/
+        __pyx_empty_tuple, /*PyObject *cellvars,*/
+        py_srcfile,   /*PyObject *filename,*/
+        py_funcname,  /*PyObject *name,*/
+        py_line,      /*int firstlineno,*/
+        __pyx_empty_bytes  /*PyObject *lnotab*/
+    );
+    Py_DECREF(py_srcfile);
+    Py_DECREF(py_funcname);
+    return py_code;
+bad:
+    Py_XDECREF(py_srcfile);
+    Py_XDECREF(py_funcname);
+    return NULL;
+}
+static void __Pyx_AddTraceback(const char *funcname, int c_line,
+                               int py_line, const char *filename) {
+    PyCodeObject *py_code = 0;
+    PyObject *py_globals = 0;
+    PyFrameObject *py_frame = 0;
+    py_code = __pyx_find_code_object(c_line ? c_line : py_line);
+    if (!py_code) {
+        py_code = __Pyx_CreateCodeObjectForTraceback(
+            funcname, c_line, py_line, filename);
+        if (!py_code) goto bad;
+        __pyx_insert_code_object(c_line ? c_line : py_line, py_code);
+    }
+    py_globals = PyModule_GetDict(__pyx_m);
+    if (!py_globals) goto bad;
+    py_frame = PyFrame_New(
+        PyThreadState_GET(), /*PyThreadState *tstate,*/
+        py_code,             /*PyCodeObject *code,*/
+        py_globals,          /*PyObject *globals,*/
+        0                    /*PyObject *locals*/
+    );
+    if (!py_frame) goto bad;
+    py_frame->f_lineno = py_line;
+    PyTraceBack_Here(py_frame);
+bad:
+    Py_XDECREF(py_code);
+    Py_XDECREF(py_frame);
+}
+
+static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
+    while (t->p) {
+        #if PY_MAJOR_VERSION < 3
+        if (t->is_unicode) {
+            *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL);
+        } else if (t->intern) {
+            *t->p = PyString_InternFromString(t->s);
+        } else {
+            *t->p = PyString_FromStringAndSize(t->s, t->n - 1);
+        }
+        #else  /* Python 3+ has unicode identifiers */
+        if (t->is_unicode | t->is_str) {
+            if (t->intern) {
+                *t->p = PyUnicode_InternFromString(t->s);
+            } else if (t->encoding) {
+                *t->p = PyUnicode_Decode(t->s, t->n - 1, t->encoding, NULL);
+            } else {
+                *t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1);
+            }
+        } else {
+            *t->p = PyBytes_FromStringAndSize(t->s, t->n - 1);
+        }
+        #endif
+        if (!*t->p)
+            return -1;
+        ++t;
+    }
+    return 0;
+}
+
+static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) {
+   int is_true = x == Py_True;
+   if (is_true | (x == Py_False) | (x == Py_None)) return is_true;
+   else return PyObject_IsTrue(x);
+}
+static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x) {
+  PyNumberMethods *m;
+  const char *name = NULL;
+  PyObject *res = NULL;
+#if PY_VERSION_HEX < 0x03000000
+  if (PyInt_Check(x) || PyLong_Check(x))
+#else
+  if (PyLong_Check(x))
+#endif
+    return Py_INCREF(x), x;
+  m = Py_TYPE(x)->tp_as_number;
+#if PY_VERSION_HEX < 0x03000000
+  if (m && m->nb_int) {
+    name = "int";
+    res = PyNumber_Int(x);
+  }
+  else if (m && m->nb_long) {
+    name = "long";
+    res = PyNumber_Long(x);
+  }
+#else
+  if (m && m->nb_int) {
+    name = "int";
+    res = PyNumber_Long(x);
+  }
+#endif
+  if (res) {
+#if PY_VERSION_HEX < 0x03000000
+    if (!PyInt_Check(res) && !PyLong_Check(res)) {
+#else
+    if (!PyLong_Check(res)) {
+#endif
+      PyErr_Format(PyExc_TypeError,
+                   "__%s__ returned non-%s (type %.200s)",
+                   name, name, Py_TYPE(res)->tp_name);
+      Py_DECREF(res);
+      return NULL;
+    }
+  }
+  else if (!PyErr_Occurred()) {
+    PyErr_SetString(PyExc_TypeError,
+                    "an integer is required");
+  }
+  return res;
+}
+static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
+  Py_ssize_t ival;
+  PyObject* x = PyNumber_Index(b);
+  if (!x) return -1;
+  ival = PyInt_AsSsize_t(x);
+  Py_DECREF(x);
+  return ival;
+}
+static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) {
+#if PY_VERSION_HEX < 0x02050000
+   if (ival <= LONG_MAX)
+       return PyInt_FromLong((long)ival);
+   else {
+       unsigned char *bytes = (unsigned char *) &ival;
+       int one = 1; int little = (int)*(unsigned char*)&one;
+       return _PyLong_FromByteArray(bytes, sizeof(size_t), little, 0);
+   }
+#else
+   return PyInt_FromSize_t(ival);
+#endif
+}
+static CYTHON_INLINE size_t __Pyx_PyInt_AsSize_t(PyObject* x) {
+   unsigned PY_LONG_LONG val = __Pyx_PyInt_AsUnsignedLongLong(x);
+   if (unlikely(val == (unsigned PY_LONG_LONG)-1 && PyErr_Occurred())) {
+       return (size_t)-1;
+   } else if (unlikely(val != (unsigned PY_LONG_LONG)(size_t)val)) {
+       PyErr_SetString(PyExc_OverflowError,
+                       "value too large to convert to size_t");
+       return (size_t)-1;
+   }
+   return (size_t)val;
+}
+
+
+#endif /* Py_PYTHON_H */
diff --git a/h5py/_conv.pxd b/h5py/_conv.pxd
new file mode 100644
index 0000000..63611ba
--- /dev/null
+++ b/h5py/_conv.pxd
@@ -0,0 +1,14 @@
+# This file is part of h5py, a Python interface to the HDF5 library.
+#
+# http://www.h5py.org
+#
+# Copyright 2008-2013 Andrew Collette and contributors
+#
+# License:  Standard 3-clause BSD; see "license.txt" for full license terms
+#           and contributor agreement.
+
+from defs cimport *
+
+
+
+
diff --git a/h5py/_conv.pyx b/h5py/_conv.pyx
new file mode 100644
index 0000000..3647d02
--- /dev/null
+++ b/h5py/_conv.pyx
@@ -0,0 +1,637 @@
+# cython: profile=False
+
+# This file is part of h5py, a Python interface to the HDF5 library.
+#
+# http://www.h5py.org
+#
+# Copyright 2008-2013 Andrew Collette and contributors
+#
+# License:  Standard 3-clause BSD; see "license.txt" for full license terms
+#           and contributor agreement.
+
+"""
+    Low-level type-conversion routines.
+"""
+
+from h5r cimport Reference, RegionReference, hobj_ref_t, hdset_reg_ref_t
+
+# Minimal interface for Python objects immune to Cython refcounting
+cdef extern from "Python.h":
+    
+    # From Cython declarations
+    ctypedef void PyTypeObject
+    ctypedef struct PyObject:
+        Py_ssize_t ob_refcnt
+        PyTypeObject *ob_type
+
+    PyObject* PyBytes_FromString(char* str) except NULL
+    int PyBytes_CheckExact(PyObject* str) except *
+    int PyBytes_Size(PyObject* obj) except *
+    PyObject* PyString_AsDecodedObject(PyObject* s, char *encoding, char *errors) except NULL
+
+    PyObject* PyUnicode_DecodeUTF8(char *s, Py_ssize_t size, char *errors) except NULL
+    int PyUnicode_CheckExact(PyObject* str) except *
+    PyObject* PyUnicode_AsUTF8String(PyObject* s) except NULL
+
+    PyObject* PyObject_Str(PyObject* obj) except NULL
+    #PyObject* (PyObject* obj) except NULL
+    char* PyBytes_AsString(PyObject* obj) except NULL
+
+    PyObject* Py_None
+    void Py_INCREF(PyObject* obj)
+    void Py_DECREF(PyObject* obj)
+    void Py_XDECREF(PyObject* obj)
+
+cdef object objectify(PyObject* o):
+    Py_INCREF(o)
+    return <object>o
+
+# Create Python object equivalents
+cdef hid_t H5PY_OBJ = 0
+
+cpdef hid_t get_python_obj():
+    global H5PY_OBJ
+    if H5PY_OBJ <= 0:
+        H5PY_OBJ = H5Tcreate(H5T_OPAQUE, sizeof(PyObject*))
+        H5Tset_tag(H5PY_OBJ, "PYTHON:OBJECT")
+        H5Tlock(H5PY_OBJ)
+    return H5PY_OBJ
+
+ctypedef int (*conv_operator_t)(void* ipt, void* opt, void* bkg, void* priv) except -1
+ctypedef herr_t (*init_operator_t)(hid_t src, hid_t dst, void** priv) except -1
+
+# Generic conversion callback
+#
+# The actual conversion routines are one-liners which plug the appropriate
+# operator callback into this function.  This prevents us from having to
+# repeat all the conversion boilerplate for every single callback.
+#
+# While this is somewhat slower than a custom function, the added overhead is
+# likely small compared to the cost of the Python-side API calls required to
+# implement the conversions.
+cdef herr_t generic_converter(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+                    size_t nl, size_t buf_stride, size_t bkg_stride, void *buf_i,
+                    void *bkg_i, hid_t dxpl, conv_operator_t op,
+                    init_operator_t initop, H5T_bkg_t need_bkg) except -1:
+
+    cdef int command = cdata[0].command
+    cdef conv_size_t *sizes
+    cdef int i
+
+    cdef char* buf = <char*>buf_i
+    cdef char* bkg = <char*>bkg_i
+
+    if command == H5T_CONV_INIT:
+
+        cdata[0].need_bkg = need_bkg
+        return initop(src_id, dst_id, &(cdata[0].priv))
+
+    elif command == H5T_CONV_FREE:
+        
+        free(cdata[0].priv)
+        cdata[0].priv = NULL
+
+    elif command == H5T_CONV_CONV:
+
+        sizes = <conv_size_t*>cdata[0].priv
+
+        if H5Tis_variable_str(src_id):
+            sizes.cset = H5Tget_cset(src_id)
+        elif H5Tis_variable_str(dst_id):
+            sizes.cset = H5Tget_cset(dst_id)
+
+        if bkg_stride==0: bkg_stride = sizes[0].dst_size;
+
+        if buf_stride == 0:
+            # No explicit stride seems to mean that the elements are packed
+            # contiguously in the buffer.  In this case we must be careful
+            # not to "stomp on" input elements if the output elements are
+            # of a larger size.
+
+            if sizes[0].src_size >= sizes[0].dst_size:
+                for i from 0<=i<nl:
+                    op( buf + (i*sizes[0].src_size),    # input pointer
+                        buf + (i*sizes[0].dst_size),    # output pointer
+                        bkg + (i*bkg_stride),           # backing buffer
+                        cdata[0].priv)                  # conversion context
+            else:
+                for i from nl>i>=0:
+                    op( buf + (i*sizes[0].src_size),
+                        buf + (i*sizes[0].dst_size),
+                        bkg + (i*bkg_stride),
+                        cdata[0].priv)
+        else:
+            # With explicit strides, we assume that the library knows the
+            # alignment better than us.  Therefore we use the given stride
+            # offsets exclusively.
+            for i from 0<=i<nl:
+                op( buf + (i*buf_stride),
+                    buf + (i*buf_stride),   # note this is the same!
+                    bkg + (i*bkg_stride),
+                    cdata[0].priv)
+    else:
+        return -2   # Unrecognized command.  Note this is NOT an exception.
+
+    return 0
+
+# =============================================================================
+# Generic conversion 
+
+ctypedef struct conv_size_t:
+    size_t src_size
+    size_t dst_size
+    int cset
+
+cdef herr_t init_generic(hid_t src, hid_t dst, void** priv) except -1:
+    
+    cdef conv_size_t *sizes
+    sizes = <conv_size_t*>malloc(sizeof(conv_size_t))
+    priv[0] = sizes
+    sizes[0].src_size = H5Tget_size(src)
+    sizes[0].dst_size = H5Tget_size(dst)
+
+    return 0
+
+# =============================================================================
+# Vlen string conversion
+
+cdef int conv_vlen2str(void* ipt, void* opt, void* bkg, void* priv) except -1:
+
+    cdef PyObject** buf_obj = <PyObject**>opt
+    cdef PyObject** bkg_obj = <PyObject**>bkg
+    cdef char** buf_cstring = <char**>ipt
+    cdef PyObject* temp_obj = NULL
+    cdef conv_size_t *sizes = <conv_size_t*>priv
+
+    # When reading we identify H5T_CSET_ASCII as a byte string and
+    # H5T_CSET_UTF8 as a utf8-encoded unicode string
+    if sizes.cset == H5T_CSET_ASCII:
+        if buf_cstring[0] == NULL:
+            temp_obj = PyBytes_FromString("")
+        else:
+            temp_obj = PyBytes_FromString(buf_cstring[0])
+    elif sizes.cset == H5T_CSET_UTF8:
+        if buf_cstring[0] == NULL:
+            temp_obj = PyUnicode_DecodeUTF8("", 0, NULL)
+        else:
+            temp_obj = PyUnicode_DecodeUTF8(buf_cstring[0], strlen(buf_cstring[0]), NULL)
+
+    # Since all data conversions are by definition in-place, it
+    # is our responsibility to free the memory used by the vlens.
+    free(buf_cstring[0])
+
+    # HDF5 will eventuallly overwrite this target location, so we
+    # make sure to decref the object there.
+    Py_XDECREF(bkg_obj[0])
+
+    # Write the new string object to the buffer in-place
+    buf_obj[0] = temp_obj
+
+    return 0
+
+cdef int conv_str2vlen(void* ipt, void* opt, void* bkg, void* priv) except -1:
+
+    cdef PyObject** buf_obj = <PyObject**>ipt
+    cdef char** buf_cstring = <char**>opt
+    cdef conv_size_t* sizes = <conv_size_t*>priv
+
+    cdef PyObject* temp_object = NULL
+    cdef PyObject* temp_encoded = NULL
+
+    cdef char* temp_string = NULL
+    cdef size_t temp_string_len = 0  # Not including null term
+
+    try:
+        if buf_obj[0] == NULL or buf_obj[0] == Py_None:
+            temp_string = ""
+            temp_string_len = 0
+        else:
+            if PyBytes_CheckExact(buf_obj[0]):
+
+                # Input is a byte string.  If we're using CSET_UTF8, make sure
+                # it's valid UTF-8.  Otherwise just store it.
+                temp_object = buf_obj[0]
+                Py_INCREF(temp_object)
+                if sizes.cset == H5T_CSET_UTF8:
+                    try:
+                        pass # disabled for Python 3 compatibility
+                        #temp_encoded = PyString_AsDecodedObject(temp_object, "utf8", NULL)
+                    except:
+                        raise ValueError("Byte string is not valid utf-8 and can't be stored in a utf-8 dataset")
+                temp_string = PyBytes_AsString(temp_object)
+                temp_string_len = PyBytes_Size(temp_object)
+
+            # We are given a Unicode object.  Encode it to utf-8 regardless of
+            # the HDF5 character set.
+            elif PyUnicode_CheckExact(buf_obj[0]):
+                temp_object = buf_obj[0]
+                Py_INCREF(temp_object)
+                temp_encoded = PyUnicode_AsUTF8String(temp_object)
+                temp_string = PyBytes_AsString(temp_encoded)
+                temp_string_len = PyBytes_Size(temp_encoded)
+
+            else:
+                if sizes.cset == H5T_CSET_ASCII:
+                    temp_object = PyObject_Str(buf_obj[0])
+                    temp_string = PyBytes_AsString(temp_object)
+                    temp_string_len = PyBytes_Size(temp_object)
+                elif sizes.cset == H5T_CSET_UTF8:
+                    temp_object = PyObject_Str(buf_obj[0])
+                    Py_INCREF(temp_object)
+                    temp_encoded = PyUnicode_AsUTF8String(temp_object)
+                    Py_INCREF(temp_encoded)
+                    temp_string = PyBytes_AsString(temp_encoded)
+                    temp_string_len = PyBytes_Size(temp_encoded)
+                else:
+                    raise TypeError("Unrecognized dataset encoding")
+                    
+        if strlen(temp_string) != temp_string_len:
+            raise ValueError("VLEN strings do not support embedded NULLs")
+
+        buf_cstring[0] = <char*>malloc(temp_string_len+1)
+        memcpy(buf_cstring[0], temp_string, temp_string_len+1)
+
+        return 0
+    finally:
+        Py_XDECREF(temp_object)
+        Py_XDECREF(temp_encoded)
+
+# =============================================================================
+# VLEN to fixed-width strings
+
+cdef herr_t init_vlen2fixed(hid_t src, hid_t dst, void** priv) except -1:
+
+    cdef conv_size_t *sizes
+
+    if not (H5Tis_variable_str(src) and (not H5Tis_variable_str(dst))):
+        return -2
+
+    sizes = <conv_size_t*>malloc(sizeof(conv_size_t))
+    priv[0] = sizes
+    sizes[0].src_size = H5Tget_size(src)
+    sizes[0].dst_size = H5Tget_size(dst)
+
+    return 0
+
+cdef herr_t init_fixed2vlen(hid_t src, hid_t dst, void** priv) except -1:
+
+    cdef conv_size_t *sizes
+
+    if not (H5Tis_variable_str(dst) and (not H5Tis_variable_str(src))):
+        return -2
+
+    sizes = <conv_size_t*>malloc(sizeof(conv_size_t))
+    priv[0] = sizes
+    sizes[0].src_size = H5Tget_size(src)
+    sizes[0].dst_size = H5Tget_size(dst)
+
+    return 0
+
+cdef int conv_vlen2fixed(void* ipt, void* opt, void* bkg, void* priv) except -1:
+
+    cdef char** buf_vlen = <char**>ipt
+    cdef char* buf_fixed = <char*>opt
+    cdef char* temp_string = NULL
+    cdef size_t temp_string_len = 0  # Without null term
+    cdef conv_size_t *sizes = <conv_size_t*>priv
+
+    if buf_vlen[0] != NULL:
+        temp_string = buf_vlen[0]
+        temp_string_len = strlen(temp_string)
+
+        if temp_string_len <= sizes[0].dst_size:
+            # Pad with zeros
+            memcpy(buf_fixed, temp_string, temp_string_len)
+            memset(buf_fixed + temp_string_len, c'\0', sizes[0].dst_size - temp_string_len)
+        else:
+            # Simply truncate the string
+            memcpy(buf_fixed, temp_string, sizes[0].dst_size)
+    else:
+        memset(buf_fixed, c'\0', sizes[0].dst_size)
+
+    return 0
+
+cdef int conv_fixed2vlen(void* ipt, void* opt, void* bkg, void* priv) except -1:
+
+    cdef char** buf_vlen = <char**>opt
+    cdef char* buf_fixed = <char*>ipt
+    cdef char* temp_string = NULL
+    cdef conv_size_t *sizes = <conv_size_t*>priv
+
+    temp_string = <char*>malloc(sizes[0].src_size+1)
+    memcpy(temp_string, buf_fixed, sizes[0].src_size)
+    temp_string[sizes[0].src_size] = c'\0'
+
+    buf_vlen[0] = temp_string
+
+    return 0
+
+# =============================================================================
+# HDF5 references to Python instances of h5r.Reference
+
+cdef int conv_objref2pyref(void* ipt, void* opt, void* bkg, void* priv) except -1:
+
+    cdef PyObject** buf_obj = <PyObject**>opt
+    cdef PyObject** bkg_obj = <PyObject**>bkg
+    cdef hobj_ref_t* buf_ref = <hobj_ref_t*>ipt
+
+    cdef Reference ref = Reference()
+    cdef PyObject* ref_ptr = NULL
+
+    ref.ref.obj_ref = buf_ref[0]
+    ref.typecode = H5R_OBJECT
+
+    ref_ptr = <PyObject*>ref
+    Py_INCREF(ref_ptr)  # because Cython discards its reference when the
+                        # function exits
+
+    Py_XDECREF(bkg_obj[0])
+    buf_obj[0] = ref_ptr
+
+    return 0
+
+cdef int conv_pyref2objref(void* ipt, void* opt, void* bkg, void* priv) except -1:
+
+    cdef PyObject** buf_obj = <PyObject**>ipt
+    cdef hobj_ref_t* buf_ref = <hobj_ref_t*>opt
+
+    cdef object obj
+    cdef Reference ref
+
+    if buf_obj[0] != NULL and buf_obj[0] != Py_None:
+        obj = <object>(buf_obj[0])
+        if not isinstance(obj, Reference):
+            raise TypeError("Can't convert incompatible object to HDF5 object reference")
+        ref = <Reference>(buf_obj[0])
+        buf_ref[0] = ref.ref.obj_ref
+    else:
+        memset(buf_ref, c'\0', sizeof(hobj_ref_t))
+
+    return 0
+
+cdef int conv_regref2pyref(void* ipt, void* opt, void* bkg, void* priv) except -1:
+
+    cdef PyObject** buf_obj = <PyObject**>opt
+    cdef PyObject** bkg_obj = <PyObject**>bkg
+    cdef hdset_reg_ref_t* buf_ref = <hdset_reg_ref_t*>ipt
+
+    cdef RegionReference ref = RegionReference()
+    cdef PyObject* ref_ptr = NULL
+
+    memcpy(ref.ref.reg_ref, buf_ref, sizeof(hdset_reg_ref_t))
+
+    ref.typecode = H5R_DATASET_REGION
+
+    ref_ptr = <PyObject*>ref
+    Py_INCREF(ref_ptr)  # because Cython discards its reference when the
+                        # function exits
+
+    Py_XDECREF(bkg_obj[0])
+    buf_obj[0] = ref_ptr
+
+    return 0
+
+cdef int conv_pyref2regref(void* ipt, void* opt, void* bkg, void* priv) except -1:
+
+    cdef PyObject** buf_obj = <PyObject**>ipt
+    cdef hdset_reg_ref_t* buf_ref = <hdset_reg_ref_t*>opt
+
+    cdef object obj
+    cdef RegionReference ref
+
+    if buf_obj[0] != NULL and buf_obj[0] != Py_None:
+        obj = <object>(buf_obj[0])
+        if not isinstance(obj, RegionReference):
+            raise TypeError("Can't convert incompatible object to HDF5 region reference")
+        ref = <RegionReference>(buf_obj[0])
+        memcpy(buf_ref, ref.ref.reg_ref, sizeof(hdset_reg_ref_t))
+    else:
+        memset(buf_ref, c'\0', sizeof(hdset_reg_ref_t))
+
+    return 0
+
+# =============================================================================
+# Conversion functions
+
+
+cdef herr_t vlen2str(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+                    size_t nl, size_t buf_stride, size_t bkg_stride, void *buf_i,
+                    void *bkg_i, hid_t dxpl) except -1:
+    return generic_converter(src_id, dst_id, cdata, nl, buf_stride, bkg_stride,
+             buf_i, bkg_i, dxpl,  conv_vlen2str, init_generic, H5T_BKG_YES)
+
+cdef herr_t str2vlen(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+                    size_t nl, size_t buf_stride, size_t bkg_stride, void *buf_i,
+                    void *bkg_i, hid_t dxpl) except -1:
+    return generic_converter(src_id, dst_id, cdata, nl, buf_stride, bkg_stride,
+             buf_i, bkg_i, dxpl, conv_str2vlen, init_generic, H5T_BKG_NO)
+
+cdef herr_t vlen2fixed(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+                    size_t nl, size_t buf_stride, size_t bkg_stride, void *buf_i,
+                    void *bkg_i, hid_t dxpl) except -1:
+    return generic_converter(src_id, dst_id, cdata, nl, buf_stride, bkg_stride,
+             buf_i, bkg_i, dxpl, conv_vlen2fixed, init_vlen2fixed, H5T_BKG_NO)
+
+cdef herr_t fixed2vlen(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+                    size_t nl, size_t buf_stride, size_t bkg_stride, void *buf_i,
+                    void *bkg_i, hid_t dxpl) except -1:
+    return generic_converter(src_id, dst_id, cdata, nl, buf_stride, bkg_stride,
+             buf_i, bkg_i, dxpl, conv_fixed2vlen, init_fixed2vlen, H5T_BKG_NO)
+
+cdef herr_t objref2pyref(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+                    size_t nl, size_t buf_stride, size_t bkg_stride, void *buf_i,
+                    void *bkg_i, hid_t dxpl) except -1:
+    return generic_converter(src_id, dst_id, cdata, nl, buf_stride, bkg_stride,
+             buf_i, bkg_i, dxpl, conv_objref2pyref, init_generic, H5T_BKG_YES)
+
+cdef herr_t pyref2objref(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+                    size_t nl, size_t buf_stride, size_t bkg_stride, void *buf_i,
+                    void *bkg_i, hid_t dxpl) except -1:
+    return generic_converter(src_id, dst_id, cdata, nl, buf_stride, bkg_stride,
+             buf_i, bkg_i, dxpl, conv_pyref2objref, init_generic, H5T_BKG_NO)
+
+cdef herr_t regref2pyref(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+                    size_t nl, size_t buf_stride, size_t bkg_stride, void *buf_i,
+                    void *bkg_i, hid_t dxpl) except -1:
+    return generic_converter(src_id, dst_id, cdata, nl, buf_stride, bkg_stride,
+             buf_i, bkg_i, dxpl, conv_regref2pyref, init_generic, H5T_BKG_YES)
+
+cdef herr_t pyref2regref(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+                    size_t nl, size_t buf_stride, size_t bkg_stride, void *buf_i,
+                    void *bkg_i, hid_t dxpl) except -1:
+    return generic_converter(src_id, dst_id, cdata, nl, buf_stride, bkg_stride,
+             buf_i, bkg_i, dxpl, conv_pyref2regref, init_generic, H5T_BKG_NO)
+
+# =============================================================================
+# Enum to integer converter
+
+cdef struct conv_enum_t:
+    size_t src_size
+    size_t dst_size
+    hid_t supertype
+    int identical
+
+
+cdef int enum_int_converter_init(hid_t src, hid_t dst,
+                                 H5T_cdata_t *cdata, int forward) except -1 with gil:
+    cdef conv_enum_t *info
+
+    cdata[0].need_bkg = H5T_BKG_NO
+    cdata[0].priv = info = <conv_enum_t*>malloc(sizeof(conv_enum_t))
+    info[0].src_size = H5Tget_size(src)
+    info[0].dst_size = H5Tget_size(dst)
+
+cdef void enum_int_converter_free(H5T_cdata_t *cdata):
+    cdef conv_enum_t *info
+
+    info = <conv_enum_t*>cdata[0].priv
+    free(info)
+    cdata[0].priv = NULL
+
+
+cdef int enum_int_converter_conv(hid_t src, hid_t dst, H5T_cdata_t *cdata,
+                                  size_t nl, size_t buf_stride, size_t bkg_stride, void *buf_i,
+                                 void *bkg_i, hid_t dxpl, int forward) except -1 with gil:
+    cdef conv_enum_t *info
+    cdef size_t nalloc
+    cdef int i
+    cdef char* cbuf = NULL
+    cdef char* buf = <char*>buf_i
+
+    info = <conv_enum_t*>cdata[0].priv
+    
+    if forward:
+        info[0].supertype = H5Tget_super(src)
+        info[0].identical = H5Tequal(info[0].supertype, dst)
+    else:
+        info[0].supertype = H5Tget_super(dst)
+        info[0].identical = H5Tequal(info[0].supertype, src)
+   
+    # Short-circuit success
+    if info[0].identical:
+        return 0
+
+    if buf_stride == 0:
+        # Contiguous case: call H5Tconvert directly
+        if forward:
+            H5Tconvert(info[0].supertype, dst, nl, buf, NULL, dxpl)
+        else:
+            H5Tconvert(src, info[0].supertype, nl, buf, NULL, dxpl)
+    else:
+        # Non-contiguous: gather, convert and then scatter
+        if info[0].src_size > info[0].dst_size:
+            nalloc = info[0].src_size*nl
+        else:
+            nalloc = info[0].dst_size*nl
+
+        cbuf = <char*>malloc(nalloc)
+        if cbuf == NULL:
+            raise MemoryError()
+        try:
+            for i from 0<=i<nl:
+                memcpy(cbuf + (i*info[0].src_size), buf + (i*buf_stride),
+                        info[0].src_size)
+
+            if forward:
+                H5Tconvert(info[0].supertype, dst, nl, cbuf, NULL, dxpl)
+            else:
+                H5Tconvert(src, info[0].supertype, nl, cbuf, NULL, dxpl)
+
+            for i from 0<=i<nl:
+                memcpy(buf + (i*buf_stride), cbuf + (i*info[0].dst_size),
+                        info[0].dst_size)
+        finally:
+            free(cbuf)
+            cbuf = NULL
+    return 0
+
+
+# Direction ("forward"): 1 = enum to int, 0 = int to enum
+cdef herr_t enum_int_converter(hid_t src, hid_t dst, H5T_cdata_t *cdata,
+                    size_t nl, size_t buf_stride, size_t bkg_stride, void *buf_i,
+                               void *bkg_i, hid_t dxpl, int forward) except -1:
+
+    cdef int command = cdata[0].command
+
+    if command == H5T_CONV_INIT:
+        enum_int_converter_init(src, dst, cdata, forward)
+    elif command == H5T_CONV_FREE:
+        enum_int_converter_free(cdata)
+    elif command == H5T_CONV_CONV:
+        return enum_int_converter_conv(src, dst, cdata, nl, buf_stride,
+                                       bkg_stride, buf_i, bkg_i, dxpl, forward)
+    else:
+        return -2
+
+    return 0
+
+
+cdef herr_t enum2int(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+                    size_t nl, size_t buf_stride, size_t bkg_stride, void *buf_i,
+                    void *bkg_i, hid_t dxpl) except -1:
+    return enum_int_converter(src_id, dst_id, cdata, nl, buf_stride, bkg_stride,
+             buf_i, bkg_i, dxpl, 1)
+
+cdef herr_t int2enum(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+                    size_t nl, size_t buf_stride, size_t bkg_stride, void *buf_i,
+                    void *bkg_i, hid_t dxpl) except -1:
+    return enum_int_converter(src_id, dst_id, cdata, nl, buf_stride, bkg_stride,
+             buf_i, bkg_i, dxpl, 0)
+
+
+cpdef int register_converters() except -1:
+
+    cdef hid_t vlstring
+    cdef hid_t pyobj
+    cdef hid_t enum
+
+    vlstring = H5Tcopy(H5T_C_S1)
+    H5Tset_size(vlstring, H5T_VARIABLE)
+    
+    enum = H5Tenum_create(H5T_STD_I32LE)
+
+    pyobj = get_python_obj()
+
+    H5Tregister(H5T_PERS_HARD, "vlen2str", vlstring, pyobj, vlen2str)
+    H5Tregister(H5T_PERS_HARD, "str2vlen", pyobj, vlstring, str2vlen)
+
+    H5Tregister(H5T_PERS_SOFT, "vlen2fixed", vlstring, H5T_C_S1, vlen2fixed)
+    H5Tregister(H5T_PERS_SOFT, "fixed2vlen", H5T_C_S1, vlstring, fixed2vlen)
+
+    H5Tregister(H5T_PERS_HARD, "objref2pyref", H5T_STD_REF_OBJ, pyobj, objref2pyref)
+    H5Tregister(H5T_PERS_HARD, "pyref2objref", pyobj, H5T_STD_REF_OBJ, pyref2objref)
+
+    H5Tregister(H5T_PERS_HARD, "regref2pyref", H5T_STD_REF_DSETREG, pyobj, regref2pyref)
+    H5Tregister(H5T_PERS_HARD, "pyref2regref", pyobj, H5T_STD_REF_DSETREG, pyref2regref)
+
+    H5Tregister(H5T_PERS_SOFT, "enum2int", enum, H5T_STD_I32LE, enum2int)
+    H5Tregister(H5T_PERS_SOFT, "int2enum", H5T_STD_I32LE, enum, int2enum)
+
+    H5Tclose(vlstring)
+    H5Tclose(enum)
+
+    return 0
+
+cpdef int unregister_converters() except -1:
+
+    H5Tunregister(H5T_PERS_HARD, "vlen2str", -1, -1, vlen2str)
+    H5Tunregister(H5T_PERS_HARD, "str2vlen", -1, -1, str2vlen)
+
+    H5Tunregister(H5T_PERS_SOFT, "vlen2fixed", -1, -1, vlen2fixed)
+    H5Tunregister(H5T_PERS_SOFT, "fixed2vlen", -1, -1, fixed2vlen)
+
+    H5Tunregister(H5T_PERS_HARD, "objref2pyref", -1, -1, objref2pyref)
+    H5Tunregister(H5T_PERS_HARD, "pyref2objref", -1, -1, pyref2objref)
+
+    H5Tunregister(H5T_PERS_HARD, "regref2pyref", -1, -1, regref2pyref)
+    H5Tunregister(H5T_PERS_HARD, "pyref2regref", -1, -1, pyref2regref)
+
+    H5Tunregister(H5T_PERS_SOFT, "enum2int", -1, -1, enum2int)
+    H5Tunregister(H5T_PERS_SOFT, "int2enum", -1, -1, int2enum)
+
+    return 0
+
+
+
+
+
diff --git a/h5py/_errors.c b/h5py/_errors.c
new file mode 100644
index 0000000..f34a64c
--- /dev/null
+++ b/h5py/_errors.c
@@ -0,0 +1,3254 @@
+/* Generated by Cython 0.18 on Mon Dec  9 16:00:33 2013 */
+
+#define PY_SSIZE_T_CLEAN
+#include "Python.h"
+#ifndef Py_PYTHON_H
+    #error Python headers needed to compile C extensions, please install development version of Python.
+#elif PY_VERSION_HEX < 0x02040000
+    #error Cython requires Python 2.4+.
+#else
+#include <stddef.h> /* For offsetof */
+#ifndef offsetof
+#define offsetof(type, member) ( (size_t) & ((type*)0) -> member )
+#endif
+#if !defined(WIN32) && !defined(MS_WINDOWS)
+  #ifndef __stdcall
+    #define __stdcall
+  #endif
+  #ifndef __cdecl
+    #define __cdecl
+  #endif
+  #ifndef __fastcall
+    #define __fastcall
+  #endif
+#endif
+#ifndef DL_IMPORT
+  #define DL_IMPORT(t) t
+#endif
+#ifndef DL_EXPORT
+  #define DL_EXPORT(t) t
+#endif
+#ifndef PY_LONG_LONG
+  #define PY_LONG_LONG LONG_LONG
+#endif
+#ifndef Py_HUGE_VAL
+  #define Py_HUGE_VAL HUGE_VAL
+#endif
+#ifdef PYPY_VERSION
+#define CYTHON_COMPILING_IN_PYPY 1
+#define CYTHON_COMPILING_IN_CPYTHON 0
+#else
+#define CYTHON_COMPILING_IN_PYPY 0
+#define CYTHON_COMPILING_IN_CPYTHON 1
+#endif
+#if PY_VERSION_HEX < 0x02050000
+  typedef int Py_ssize_t;
+  #define PY_SSIZE_T_MAX INT_MAX
+  #define PY_SSIZE_T_MIN INT_MIN
+  #define PY_FORMAT_SIZE_T ""
+  #define CYTHON_FORMAT_SSIZE_T ""
+  #define PyInt_FromSsize_t(z) PyInt_FromLong(z)
+  #define PyInt_AsSsize_t(o)   __Pyx_PyInt_AsInt(o)
+  #define PyNumber_Index(o)    ((PyNumber_Check(o) && !PyFloat_Check(o)) ? PyNumber_Int(o) : \
+                                (PyErr_Format(PyExc_TypeError, \
+                                              "expected index value, got %.200s", Py_TYPE(o)->tp_name), \
+                                 (PyObject*)0))
+  #define __Pyx_PyIndex_Check(o) (PyNumber_Check(o) && !PyFloat_Check(o) && \
+                                  !PyComplex_Check(o))
+  #define PyIndex_Check __Pyx_PyIndex_Check
+  #define PyErr_WarnEx(category, message, stacklevel) PyErr_Warn(category, message)
+  #define __PYX_BUILD_PY_SSIZE_T "i"
+#else
+  #define __PYX_BUILD_PY_SSIZE_T "n"
+  #define CYTHON_FORMAT_SSIZE_T "z"
+  #define __Pyx_PyIndex_Check PyIndex_Check
+#endif
+#if PY_VERSION_HEX < 0x02060000
+  #define Py_REFCNT(ob) (((PyObject*)(ob))->ob_refcnt)
+  #define Py_TYPE(ob)   (((PyObject*)(ob))->ob_type)
+  #define Py_SIZE(ob)   (((PyVarObject*)(ob))->ob_size)
+  #define PyVarObject_HEAD_INIT(type, size) \
+          PyObject_HEAD_INIT(type) size,
+  #define PyType_Modified(t)
+  typedef struct {
+     void *buf;
+     PyObject *obj;
+     Py_ssize_t len;
+     Py_ssize_t itemsize;
+     int readonly;
+     int ndim;
+     char *format;
+     Py_ssize_t *shape;
+     Py_ssize_t *strides;
+     Py_ssize_t *suboffsets;
+     void *internal;
+  } Py_buffer;
+  #define PyBUF_SIMPLE 0
+  #define PyBUF_WRITABLE 0x0001
+  #define PyBUF_FORMAT 0x0004
+  #define PyBUF_ND 0x0008
+  #define PyBUF_STRIDES (0x0010 | PyBUF_ND)
+  #define PyBUF_C_CONTIGUOUS (0x0020 | PyBUF_STRIDES)
+  #define PyBUF_F_CONTIGUOUS (0x0040 | PyBUF_STRIDES)
+  #define PyBUF_ANY_CONTIGUOUS (0x0080 | PyBUF_STRIDES)
+  #define PyBUF_INDIRECT (0x0100 | PyBUF_STRIDES)
+  #define PyBUF_RECORDS (PyBUF_STRIDES | PyBUF_FORMAT | PyBUF_WRITABLE)
+  #define PyBUF_FULL (PyBUF_INDIRECT | PyBUF_FORMAT | PyBUF_WRITABLE)
+  typedef int (*getbufferproc)(PyObject *, Py_buffer *, int);
+  typedef void (*releasebufferproc)(PyObject *, Py_buffer *);
+#endif
+#if PY_MAJOR_VERSION < 3
+  #define __Pyx_BUILTIN_MODULE_NAME "__builtin__"
+  #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) \
+          PyCode_New(a, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
+#else
+  #define __Pyx_BUILTIN_MODULE_NAME "builtins"
+  #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) \
+          PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
+#endif
+#if PY_MAJOR_VERSION < 3 && PY_MINOR_VERSION < 6
+  #define PyUnicode_FromString(s) PyUnicode_Decode(s, strlen(s), "UTF-8", "strict")
+#endif
+#if PY_MAJOR_VERSION >= 3
+  #define Py_TPFLAGS_CHECKTYPES 0
+  #define Py_TPFLAGS_HAVE_INDEX 0
+#endif
+#if (PY_VERSION_HEX < 0x02060000) || (PY_MAJOR_VERSION >= 3)
+  #define Py_TPFLAGS_HAVE_NEWBUFFER 0
+#endif
+#if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND)
+  #define CYTHON_PEP393_ENABLED 1
+  #define __Pyx_PyUnicode_READY(op)       (likely(PyUnicode_IS_READY(op)) ? \
+                                              0 : _PyUnicode_Ready((PyObject *)(op)))
+  #define __Pyx_PyUnicode_GET_LENGTH(u)   PyUnicode_GET_LENGTH(u)
+  #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i)
+  #define __Pyx_PyUnicode_READ(k, d, i)   PyUnicode_READ(k, d, i)
+#else
+  #define CYTHON_PEP393_ENABLED 0
+  #define __Pyx_PyUnicode_READY(op)       (0)
+  #define __Pyx_PyUnicode_GET_LENGTH(u)   PyUnicode_GET_SIZE(u)
+  #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i]))
+  #define __Pyx_PyUnicode_READ(k, d, i)   ((k=k), (Py_UCS4)(((Py_UNICODE*)d)[i]))
+#endif
+#if PY_MAJOR_VERSION >= 3
+  #define PyBaseString_Type            PyUnicode_Type
+  #define PyStringObject               PyUnicodeObject
+  #define PyString_Type                PyUnicode_Type
+  #define PyString_Check               PyUnicode_Check
+  #define PyString_CheckExact          PyUnicode_CheckExact
+#endif
+#if PY_VERSION_HEX < 0x02060000
+  #define PyBytesObject                PyStringObject
+  #define PyBytes_Type                 PyString_Type
+  #define PyBytes_Check                PyString_Check
+  #define PyBytes_CheckExact           PyString_CheckExact
+  #define PyBytes_FromString           PyString_FromString
+  #define PyBytes_FromStringAndSize    PyString_FromStringAndSize
+  #define PyBytes_FromFormat           PyString_FromFormat
+  #define PyBytes_DecodeEscape         PyString_DecodeEscape
+  #define PyBytes_AsString             PyString_AsString
+  #define PyBytes_AsStringAndSize      PyString_AsStringAndSize
+  #define PyBytes_Size                 PyString_Size
+  #define PyBytes_AS_STRING            PyString_AS_STRING
+  #define PyBytes_GET_SIZE             PyString_GET_SIZE
+  #define PyBytes_Repr                 PyString_Repr
+  #define PyBytes_Concat               PyString_Concat
+  #define PyBytes_ConcatAndDel         PyString_ConcatAndDel
+#endif
+#if PY_VERSION_HEX < 0x02060000
+  #define PySet_Check(obj)             PyObject_TypeCheck(obj, &PySet_Type)
+  #define PyFrozenSet_Check(obj)       PyObject_TypeCheck(obj, &PyFrozenSet_Type)
+#endif
+#ifndef PySet_CheckExact
+  #define PySet_CheckExact(obj)        (Py_TYPE(obj) == &PySet_Type)
+#endif
+#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type)
+#if PY_MAJOR_VERSION >= 3
+  #define PyIntObject                  PyLongObject
+  #define PyInt_Type                   PyLong_Type
+  #define PyInt_Check(op)              PyLong_Check(op)
+  #define PyInt_CheckExact(op)         PyLong_CheckExact(op)
+  #define PyInt_FromString             PyLong_FromString
+  #define PyInt_FromUnicode            PyLong_FromUnicode
+  #define PyInt_FromLong               PyLong_FromLong
+  #define PyInt_FromSize_t             PyLong_FromSize_t
+  #define PyInt_FromSsize_t            PyLong_FromSsize_t
+  #define PyInt_AsLong                 PyLong_AsLong
+  #define PyInt_AS_LONG                PyLong_AS_LONG
+  #define PyInt_AsSsize_t              PyLong_AsSsize_t
+  #define PyInt_AsUnsignedLongMask     PyLong_AsUnsignedLongMask
+  #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask
+#endif
+#if PY_MAJOR_VERSION >= 3
+  #define PyBoolObject                 PyLongObject
+#endif
+#if PY_VERSION_HEX < 0x03020000
+  typedef long Py_hash_t;
+  #define __Pyx_PyInt_FromHash_t PyInt_FromLong
+  #define __Pyx_PyInt_AsHash_t   PyInt_AsLong
+#else
+  #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t
+  #define __Pyx_PyInt_AsHash_t   PyInt_AsSsize_t
+#endif
+#if (PY_MAJOR_VERSION < 3) || (PY_VERSION_HEX >= 0x03010300)
+  #define __Pyx_PySequence_GetSlice(obj, a, b) PySequence_GetSlice(obj, a, b)
+  #define __Pyx_PySequence_SetSlice(obj, a, b, value) PySequence_SetSlice(obj, a, b, value)
+  #define __Pyx_PySequence_DelSlice(obj, a, b) PySequence_DelSlice(obj, a, b)
+#else
+  #define __Pyx_PySequence_GetSlice(obj, a, b) (unlikely(!(obj)) ? \
+        (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), (PyObject*)0) : \
+        (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_GetSlice(obj, a, b)) : \
+            (PyErr_Format(PyExc_TypeError, "'%.200s' object is unsliceable", (obj)->ob_type->tp_name), (PyObject*)0)))
+  #define __Pyx_PySequence_SetSlice(obj, a, b, value) (unlikely(!(obj)) ? \
+        (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), -1) : \
+        (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_SetSlice(obj, a, b, value)) : \
+            (PyErr_Format(PyExc_TypeError, "'%.200s' object doesn't support slice assignment", (obj)->ob_type->tp_name), -1)))
+  #define __Pyx_PySequence_DelSlice(obj, a, b) (unlikely(!(obj)) ? \
+        (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), -1) : \
+        (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_DelSlice(obj, a, b)) : \
+            (PyErr_Format(PyExc_TypeError, "'%.200s' object doesn't support slice deletion", (obj)->ob_type->tp_name), -1)))
+#endif
+#if PY_MAJOR_VERSION >= 3
+  #define PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, self) : PyInstanceMethod_New(func))
+#endif
+#if PY_VERSION_HEX < 0x02050000
+  #define __Pyx_GetAttrString(o,n)   PyObject_GetAttrString((o),((char *)(n)))
+  #define __Pyx_SetAttrString(o,n,a) PyObject_SetAttrString((o),((char *)(n)),(a))
+  #define __Pyx_DelAttrString(o,n)   PyObject_DelAttrString((o),((char *)(n)))
+#else
+  #define __Pyx_GetAttrString(o,n)   PyObject_GetAttrString((o),(n))
+  #define __Pyx_SetAttrString(o,n,a) PyObject_SetAttrString((o),(n),(a))
+  #define __Pyx_DelAttrString(o,n)   PyObject_DelAttrString((o),(n))
+#endif
+#if PY_VERSION_HEX < 0x02050000
+  #define __Pyx_NAMESTR(n) ((char *)(n))
+  #define __Pyx_DOCSTR(n)  ((char *)(n))
+#else
+  #define __Pyx_NAMESTR(n) (n)
+  #define __Pyx_DOCSTR(n)  (n)
+#endif
+
+
+#if PY_MAJOR_VERSION >= 3
+  #define __Pyx_PyNumber_Divide(x,y)         PyNumber_TrueDivide(x,y)
+  #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceTrueDivide(x,y)
+#else
+  #define __Pyx_PyNumber_Divide(x,y)         PyNumber_Divide(x,y)
+  #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceDivide(x,y)
+#endif
+
+#ifndef __PYX_EXTERN_C
+  #ifdef __cplusplus
+    #define __PYX_EXTERN_C extern "C"
+  #else
+    #define __PYX_EXTERN_C extern
+  #endif
+#endif
+
+#if defined(WIN32) || defined(MS_WINDOWS)
+#define _USE_MATH_DEFINES
+#endif
+#include <math.h>
+#define __PYX_HAVE__h5py___errors
+#define __PYX_HAVE_API__h5py___errors
+#include "stdlib.h"
+#include "string.h"
+#include "time.h"
+#include "unistd.h"
+#include "stdint.h"
+#include "api_compat.h"
+#include "lzf_filter.h"
+#include "hdf5.h"
+#include "H5Cpublic.h"
+#include "hdf5_hl.h"
+#include "stdio.h"
+#ifdef _OPENMP
+#include <omp.h>
+#endif /* _OPENMP */
+
+#ifdef PYREX_WITHOUT_ASSERTIONS
+#define CYTHON_WITHOUT_ASSERTIONS
+#endif
+
+#ifndef CYTHON_INLINE
+  #if defined(__GNUC__)
+    #define CYTHON_INLINE __inline__
+  #elif defined(_MSC_VER)
+    #define CYTHON_INLINE __inline
+  #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+    #define CYTHON_INLINE inline
+  #else
+    #define CYTHON_INLINE
+  #endif
+#endif
+#ifndef CYTHON_UNUSED
+# if defined(__GNUC__)
+#   if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
+#     define CYTHON_UNUSED __attribute__ ((__unused__))
+#   else
+#     define CYTHON_UNUSED
+#   endif
+# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER))
+#   define CYTHON_UNUSED __attribute__ ((__unused__))
+# else
+#   define CYTHON_UNUSED
+# endif
+#endif
+typedef struct {PyObject **p; char *s; const long n; const char* encoding; const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; /*proto*/
+
+#define __Pyx_PyBytes_FromUString(s) PyBytes_FromString((char*)s)
+#define __Pyx_PyBytes_AsUString(s)   ((unsigned char*) PyBytes_AsString(s))
+#define __Pyx_Owned_Py_None(b) (Py_INCREF(Py_None), Py_None)
+#define __Pyx_PyBool_FromLong(b) ((b) ? (Py_INCREF(Py_True), Py_True) : (Py_INCREF(Py_False), Py_False))
+static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*);
+static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x);
+static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*);
+static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t);
+static CYTHON_INLINE size_t __Pyx_PyInt_AsSize_t(PyObject*);
+#if CYTHON_COMPILING_IN_CPYTHON
+#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x))
+#else
+#define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x)
+#endif
+#define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x))
+
+
+#ifdef __GNUC__
+  /* Test for GCC > 2.95 */
+  #if __GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))
+    #define likely(x)   __builtin_expect(!!(x), 1)
+    #define unlikely(x) __builtin_expect(!!(x), 0)
+  #else /* __GNUC__ > 2 ... */
+    #define likely(x)   (x)
+    #define unlikely(x) (x)
+  #endif /* __GNUC__ > 2 ... */
+#else /* __GNUC__ */
+  #define likely(x)   (x)
+  #define unlikely(x) (x)
+#endif /* __GNUC__ */
+    
+static PyObject *__pyx_m;
+static PyObject *__pyx_b;
+static PyObject *__pyx_empty_tuple;
+static PyObject *__pyx_empty_bytes;
+static int __pyx_lineno;
+static int __pyx_clineno = 0;
+static const char * __pyx_cfilenm= __FILE__;
+static const char *__pyx_filename;
+
+
+static const char *__pyx_f[] = {
+  "_errors.pyx",
+};
+
+/*--- Type declarations ---*/
+struct __pyx_t_4h5py_7_errors_err_cookie;
+typedef struct __pyx_t_4h5py_7_errors_err_cookie __pyx_t_4h5py_7_errors_err_cookie;
+struct __pyx_t_4h5py_7_errors_err_data_t;
+
+/* "h5py/_errors.pxd":230
+ * # --- Functions for managing the HDF5 error callback mechanism ---
+ * 
+ * ctypedef struct err_cookie:             # <<<<<<<<<<<<<<
+ *     # Defines the error handler state (callback and callback data)
+ *     H5E_auto_t func
+ */
+struct __pyx_t_4h5py_7_errors_err_cookie {
+  H5E_auto_t func;
+  void *data;
+};
+
+/* "h5py/_errors.pyx":75
+ *   }
+ * 
+ * cdef struct err_data_t:             # <<<<<<<<<<<<<<
+ *     H5E_error_t err
+ *     int n
+ */
+struct __pyx_t_4h5py_7_errors_err_data_t {
+  H5E_error_t err;
+  int n;
+};
+#ifndef CYTHON_REFNANNY
+  #define CYTHON_REFNANNY 0
+#endif
+#if CYTHON_REFNANNY
+  typedef struct {
+    void (*INCREF)(void*, PyObject*, int);
+    void (*DECREF)(void*, PyObject*, int);
+    void (*GOTREF)(void*, PyObject*, int);
+    void (*GIVEREF)(void*, PyObject*, int);
+    void* (*SetupContext)(const char*, int, const char*);
+    void (*FinishContext)(void**);
+  } __Pyx_RefNannyAPIStruct;
+  static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL;
+  static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); /*proto*/
+  #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL;
+#ifdef WITH_THREAD
+  #define __Pyx_RefNannySetupContext(name, acquire_gil) \
+          if (acquire_gil) { \
+              PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); \
+              __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__); \
+              PyGILState_Release(__pyx_gilstate_save); \
+          } else { \
+              __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__); \
+          }
+#else
+  #define __Pyx_RefNannySetupContext(name, acquire_gil) \
+          __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__)
+#endif
+  #define __Pyx_RefNannyFinishContext() \
+          __Pyx_RefNanny->FinishContext(&__pyx_refnanny)
+  #define __Pyx_INCREF(r)  __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_DECREF(r)  __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_GOTREF(r)  __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_XINCREF(r)  do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0)
+  #define __Pyx_XDECREF(r)  do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0)
+  #define __Pyx_XGOTREF(r)  do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0)
+  #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0)
+#else
+  #define __Pyx_RefNannyDeclarations
+  #define __Pyx_RefNannySetupContext(name, acquire_gil)
+  #define __Pyx_RefNannyFinishContext()
+  #define __Pyx_INCREF(r) Py_INCREF(r)
+  #define __Pyx_DECREF(r) Py_DECREF(r)
+  #define __Pyx_GOTREF(r)
+  #define __Pyx_GIVEREF(r)
+  #define __Pyx_XINCREF(r) Py_XINCREF(r)
+  #define __Pyx_XDECREF(r) Py_XDECREF(r)
+  #define __Pyx_XGOTREF(r)
+  #define __Pyx_XGIVEREF(r)
+#endif /* CYTHON_REFNANNY */
+#define __Pyx_CLEAR(r)    do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0)
+#define __Pyx_XCLEAR(r)   do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0)
+
+static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name); /*proto*/
+
+static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb); /*proto*/
+static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb); /*proto*/
+
+static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause); /*proto*/
+
+static CYTHON_INLINE PyObject* __Pyx_decode_c_string(
+         const char* cstring, Py_ssize_t start, Py_ssize_t stop,
+         const char* encoding, const char* errors,
+         PyObject* (*decode_func)(const char *s, Py_ssize_t size, const char *errors));
+
+#include <string.h>
+
+static CYTHON_INLINE unsigned char __Pyx_PyInt_AsUnsignedChar(PyObject *);
+
+static CYTHON_INLINE unsigned short __Pyx_PyInt_AsUnsignedShort(PyObject *);
+
+static CYTHON_INLINE unsigned int __Pyx_PyInt_AsUnsignedInt(PyObject *);
+
+static CYTHON_INLINE char __Pyx_PyInt_AsChar(PyObject *);
+
+static CYTHON_INLINE short __Pyx_PyInt_AsShort(PyObject *);
+
+static CYTHON_INLINE int __Pyx_PyInt_AsInt(PyObject *);
+
+static CYTHON_INLINE signed char __Pyx_PyInt_AsSignedChar(PyObject *);
+
+static CYTHON_INLINE signed short __Pyx_PyInt_AsSignedShort(PyObject *);
+
+static CYTHON_INLINE signed int __Pyx_PyInt_AsSignedInt(PyObject *);
+
+static CYTHON_INLINE int __Pyx_PyInt_AsLongDouble(PyObject *);
+
+static CYTHON_INLINE unsigned long __Pyx_PyInt_AsUnsignedLong(PyObject *);
+
+static CYTHON_INLINE unsigned PY_LONG_LONG __Pyx_PyInt_AsUnsignedLongLong(PyObject *);
+
+static CYTHON_INLINE long __Pyx_PyInt_AsLong(PyObject *);
+
+static CYTHON_INLINE PY_LONG_LONG __Pyx_PyInt_AsLongLong(PyObject *);
+
+static CYTHON_INLINE signed long __Pyx_PyInt_AsSignedLong(PyObject *);
+
+static CYTHON_INLINE signed PY_LONG_LONG __Pyx_PyInt_AsSignedLongLong(PyObject *);
+
+static void __Pyx_WriteUnraisable(const char *name, int clineno,
+                                  int lineno, const char *filename); /*proto*/
+
+static int __Pyx_check_binary_version(void);
+
+static int __Pyx_ExportFunction(const char *name, void (*f)(void), const char *sig); /*proto*/
+
+typedef struct {
+    int code_line;
+    PyCodeObject* code_object;
+} __Pyx_CodeObjectCacheEntry;
+struct __Pyx_CodeObjectCache {
+    int count;
+    int max_count;
+    __Pyx_CodeObjectCacheEntry* entries;
+};
+static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL};
+static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line);
+static PyCodeObject *__pyx_find_code_object(int code_line);
+static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object);
+
+static void __Pyx_AddTraceback(const char *funcname, int c_line,
+                               int py_line, const char *filename); /*proto*/
+
+static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); /*proto*/
+
+
+/* Module declarations from 'h5py.api_types_ext' */
+
+/* Module declarations from 'h5py.api_types_hdf5' */
+
+/* Module declarations from 'h5py._errors' */
+static herr_t __pyx_f_4h5py_7_errors_walk_cb(int, H5E_error_t *, void *); /*proto*/
+#define __Pyx_MODULE_NAME "h5py._errors"
+int __pyx_module_is_main_h5py___errors = 0;
+
+/* Implementation of 'h5py._errors' */
+static PyObject *__pyx_builtin_IOError;
+static PyObject *__pyx_builtin_ValueError;
+static PyObject *__pyx_builtin_NotImplementedError;
+static PyObject *__pyx_builtin_KeyError;
+static PyObject *__pyx_builtin_TypeError;
+static PyObject *__pyx_builtin_RuntimeError;
+static PyObject *__pyx_pf_4h5py_7_errors_silence_errors(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
+static PyObject *__pyx_pf_4h5py_7_errors_2unsilence_errors(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
+static char __pyx_k_1[] = "Failed to walk error stack";
+static char __pyx_k_3[] = "Failed to extract detailed error description";
+static char __pyx_k_5[] = "Failed to obtain error code description";
+static char __pyx_k_7[] = "%s (%s: %s)";
+static char __pyx_k_8[] = "utf-8";
+static char __pyx_k_10[] = "Failed to disable automatic error printing";
+static char __pyx_k_12[] = "Failed to enable automatic error printing";
+static char __pyx_k_14[] = "Failed to retrieve old handler";
+static char __pyx_k_16[] = "Failed to install new handler";
+static char __pyx_k_19[] = "/home/computer/h5py/h5py/_errors.pyx";
+static char __pyx_k_20[] = "h5py._errors";
+static char __pyx_k__get[] = "get";
+static char __pyx_k__encode[] = "encode";
+static char __pyx_k__IOError[] = "IOError";
+static char __pyx_k__KeyError[] = "KeyError";
+static char __pyx_k____main__[] = "__main__";
+static char __pyx_k____test__[] = "__test__";
+static char __pyx_k__TypeError[] = "TypeError";
+static char __pyx_k__ValueError[] = "ValueError";
+static char __pyx_k__RuntimeError[] = "RuntimeError";
+static char __pyx_k___exact_table[] = "_exact_table";
+static char __pyx_k___minor_table[] = "_minor_table";
+static char __pyx_k__silence_errors[] = "silence_errors";
+static char __pyx_k__unsilence_errors[] = "unsilence_errors";
+static char __pyx_k__NotImplementedError[] = "NotImplementedError";
+static PyObject *__pyx_kp_s_1;
+static PyObject *__pyx_kp_s_10;
+static PyObject *__pyx_kp_s_12;
+static PyObject *__pyx_kp_s_14;
+static PyObject *__pyx_kp_s_16;
+static PyObject *__pyx_kp_s_19;
+static PyObject *__pyx_n_s_20;
+static PyObject *__pyx_kp_s_3;
+static PyObject *__pyx_kp_s_5;
+static PyObject *__pyx_kp_s_7;
+static PyObject *__pyx_kp_s_8;
+static PyObject *__pyx_n_s__IOError;
+static PyObject *__pyx_n_s__KeyError;
+static PyObject *__pyx_n_s__NotImplementedError;
+static PyObject *__pyx_n_s__RuntimeError;
+static PyObject *__pyx_n_s__TypeError;
+static PyObject *__pyx_n_s__ValueError;
+static PyObject *__pyx_n_s____main__;
+static PyObject *__pyx_n_s____test__;
+static PyObject *__pyx_n_s___exact_table;
+static PyObject *__pyx_n_s___minor_table;
+static PyObject *__pyx_n_s__encode;
+static PyObject *__pyx_n_s__get;
+static PyObject *__pyx_n_s__silence_errors;
+static PyObject *__pyx_n_s__unsilence_errors;
+static PyObject *__pyx_k_tuple_2;
+static PyObject *__pyx_k_tuple_4;
+static PyObject *__pyx_k_tuple_6;
+static PyObject *__pyx_k_tuple_9;
+static PyObject *__pyx_k_tuple_11;
+static PyObject *__pyx_k_tuple_13;
+static PyObject *__pyx_k_tuple_15;
+static PyObject *__pyx_k_tuple_17;
+static PyObject *__pyx_k_codeobj_18;
+static PyObject *__pyx_k_codeobj_21;
+
+/* "h5py/_errors.pyx":79
+ *     int n
+ * 
+ * cdef herr_t walk_cb(int n, H5E_error_t *desc, void *e):             # <<<<<<<<<<<<<<
+ * 
+ *     cdef err_data_t *ee = <err_data_t*>e
+ */
+
+static herr_t __pyx_f_4h5py_7_errors_walk_cb(int __pyx_v_n, H5E_error_t *__pyx_v_desc, void *__pyx_v_e) {
+  struct __pyx_t_4h5py_7_errors_err_data_t *__pyx_v_ee;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  H5E_major_t __pyx_t_1;
+  H5E_minor_t __pyx_t_2;
+  char *__pyx_t_3;
+  __Pyx_RefNannySetupContext("walk_cb", 0);
+
+  /* "h5py/_errors.pyx":81
+ * cdef herr_t walk_cb(int n, H5E_error_t *desc, void *e):
+ * 
+ *     cdef err_data_t *ee = <err_data_t*>e             # <<<<<<<<<<<<<<
+ * 
+ *     ee[0].err.maj_num = desc[0].maj_num
+ */
+  __pyx_v_ee = ((struct __pyx_t_4h5py_7_errors_err_data_t *)__pyx_v_e);
+
+  /* "h5py/_errors.pyx":83
+ *     cdef err_data_t *ee = <err_data_t*>e
+ * 
+ *     ee[0].err.maj_num = desc[0].maj_num             # <<<<<<<<<<<<<<
+ *     ee[0].err.min_num = desc[0].min_num
+ *     ee[0].err.desc = desc[0].desc
+ */
+  __pyx_t_1 = (__pyx_v_desc[0]).maj_num;
+  (__pyx_v_ee[0]).err.maj_num = __pyx_t_1;
+
+  /* "h5py/_errors.pyx":84
+ * 
+ *     ee[0].err.maj_num = desc[0].maj_num
+ *     ee[0].err.min_num = desc[0].min_num             # <<<<<<<<<<<<<<
+ *     ee[0].err.desc = desc[0].desc
+ *     ee[0].n = n
+ */
+  __pyx_t_2 = (__pyx_v_desc[0]).min_num;
+  (__pyx_v_ee[0]).err.min_num = __pyx_t_2;
+
+  /* "h5py/_errors.pyx":85
+ *     ee[0].err.maj_num = desc[0].maj_num
+ *     ee[0].err.min_num = desc[0].min_num
+ *     ee[0].err.desc = desc[0].desc             # <<<<<<<<<<<<<<
+ *     ee[0].n = n
+ * 
+ */
+  __pyx_t_3 = (__pyx_v_desc[0]).desc;
+  (__pyx_v_ee[0]).err.desc = __pyx_t_3;
+
+  /* "h5py/_errors.pyx":86
+ *     ee[0].err.min_num = desc[0].min_num
+ *     ee[0].err.desc = desc[0].desc
+ *     ee[0].n = n             # <<<<<<<<<<<<<<
+ * 
+ * cdef int set_exception() except -1:
+ */
+  (__pyx_v_ee[0]).n = __pyx_v_n;
+
+  __pyx_r = 0;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/_errors.pyx":88
+ *     ee[0].n = n
+ * 
+ * cdef int set_exception() except -1:             # <<<<<<<<<<<<<<
+ * 
+ *     cdef err_data_t err
+ */
+
+static int __pyx_f_4h5py_7_errors_set_exception(void) {
+  struct __pyx_t_4h5py_7_errors_err_data_t __pyx_v_err;
+  char *__pyx_v_mj_desc;
+  char *__pyx_v_mn_desc;
+  char *__pyx_v_desc;
+  PyObject *__pyx_v_eclass = NULL;
+  PyObject *__pyx_v_msg = NULL;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  char *__pyx_t_6;
+  int __pyx_t_7;
+  int __pyx_t_8;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("set_exception", 0);
+
+  /* "h5py/_errors.pyx":91
+ * 
+ *     cdef err_data_t err
+ *     cdef char *mj_desc = NULL             # <<<<<<<<<<<<<<
+ *     cdef char *mn_desc = NULL
+ *     cdef char *desc = NULL
+ */
+  __pyx_v_mj_desc = NULL;
+
+  /* "h5py/_errors.pyx":92
+ *     cdef err_data_t err
+ *     cdef char *mj_desc = NULL
+ *     cdef char *mn_desc = NULL             # <<<<<<<<<<<<<<
+ *     cdef char *desc = NULL
+ * 
+ */
+  __pyx_v_mn_desc = NULL;
+
+  /* "h5py/_errors.pyx":93
+ *     cdef char *mj_desc = NULL
+ *     cdef char *mn_desc = NULL
+ *     cdef char *desc = NULL             # <<<<<<<<<<<<<<
+ * 
+ *     err.n = -1
+ */
+  __pyx_v_desc = NULL;
+
+  /* "h5py/_errors.pyx":95
+ *     cdef char *desc = NULL
+ * 
+ *     err.n = -1             # <<<<<<<<<<<<<<
+ * 
+ *     if H5Ewalk(H5E_WALK_UPWARD, walk_cb, &err) < 0:
+ */
+  __pyx_v_err.n = -1;
+
+  /* "h5py/_errors.pyx":97
+ *     err.n = -1
+ * 
+ *     if H5Ewalk(H5E_WALK_UPWARD, walk_cb, &err) < 0:             # <<<<<<<<<<<<<<
+ *         raise RuntimeError("Failed to walk error stack")
+ * 
+ */
+  __pyx_t_1 = (H5Ewalk(H5E_WALK_UPWARD, __pyx_f_4h5py_7_errors_walk_cb, (&__pyx_v_err)) < 0);
+  if (__pyx_t_1) {
+
+    /* "h5py/_errors.pyx":98
+ * 
+ *     if H5Ewalk(H5E_WALK_UPWARD, walk_cb, &err) < 0:
+ *         raise RuntimeError("Failed to walk error stack")             # <<<<<<<<<<<<<<
+ * 
+ *     if err.n < 0:   # No HDF5 exception information found
+ */
+    __pyx_t_2 = PyObject_Call(__pyx_builtin_RuntimeError, ((PyObject *)__pyx_k_tuple_2), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 98; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 98; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  /* "h5py/_errors.pyx":100
+ *         raise RuntimeError("Failed to walk error stack")
+ * 
+ *     if err.n < 0:   # No HDF5 exception information found             # <<<<<<<<<<<<<<
+ *         return 0
+ * 
+ */
+  __pyx_t_1 = (__pyx_v_err.n < 0);
+  if (__pyx_t_1) {
+
+    /* "h5py/_errors.pyx":101
+ * 
+ *     if err.n < 0:   # No HDF5 exception information found
+ *         return 0             # <<<<<<<<<<<<<<
+ * 
+ *     eclass = _minor_table.get(err.err.min_num, RuntimeError)
+ */
+    __pyx_r = 0;
+    goto __pyx_L0;
+    goto __pyx_L4;
+  }
+  __pyx_L4:;
+
+  /* "h5py/_errors.pyx":103
+ *         return 0
+ * 
+ *     eclass = _minor_table.get(err.err.min_num, RuntimeError)             # <<<<<<<<<<<<<<
+ *     eclass = _exact_table.get((err.err.maj_num, err.err.min_num), eclass)
+ * 
+ */
+  __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s___minor_table); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__get); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_2 = PyInt_FromLong(__pyx_v_err.err.min_num); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2);
+  __Pyx_GIVEREF(__pyx_t_2);
+  __Pyx_INCREF(__pyx_builtin_RuntimeError);
+  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_builtin_RuntimeError);
+  __Pyx_GIVEREF(__pyx_builtin_RuntimeError);
+  __pyx_t_2 = 0;
+  __pyx_t_2 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
+  __pyx_v_eclass = __pyx_t_2;
+  __pyx_t_2 = 0;
+
+  /* "h5py/_errors.pyx":104
+ * 
+ *     eclass = _minor_table.get(err.err.min_num, RuntimeError)
+ *     eclass = _exact_table.get((err.err.maj_num, err.err.min_num), eclass)             # <<<<<<<<<<<<<<
+ * 
+ *     desc = err.err.desc
+ */
+  __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s___exact_table); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_4 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__get); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_2 = PyInt_FromLong(__pyx_v_err.err.maj_num); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = PyInt_FromLong(__pyx_v_err.err.min_num); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2);
+  __Pyx_GIVEREF(__pyx_t_2);
+  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_3);
+  __pyx_t_2 = 0;
+  __pyx_t_3 = 0;
+  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_t_5));
+  __Pyx_GIVEREF(((PyObject *)__pyx_t_5));
+  __Pyx_INCREF(__pyx_v_eclass);
+  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_eclass);
+  __Pyx_GIVEREF(__pyx_v_eclass);
+  __pyx_t_5 = 0;
+  __pyx_t_5 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
+  __Pyx_DECREF(__pyx_v_eclass);
+  __pyx_v_eclass = __pyx_t_5;
+  __pyx_t_5 = 0;
+
+  /* "h5py/_errors.pyx":106
+ *     eclass = _exact_table.get((err.err.maj_num, err.err.min_num), eclass)
+ * 
+ *     desc = err.err.desc             # <<<<<<<<<<<<<<
+ *     if desc is NULL:
+ *         raise RuntimeError("Failed to extract detailed error description")
+ */
+  __pyx_t_6 = __pyx_v_err.err.desc;
+  __pyx_v_desc = __pyx_t_6;
+
+  /* "h5py/_errors.pyx":107
+ * 
+ *     desc = err.err.desc
+ *     if desc is NULL:             # <<<<<<<<<<<<<<
+ *         raise RuntimeError("Failed to extract detailed error description")
+ * 
+ */
+  __pyx_t_1 = (__pyx_v_desc == NULL);
+  if (__pyx_t_1) {
+
+    /* "h5py/_errors.pyx":108
+ *     desc = err.err.desc
+ *     if desc is NULL:
+ *         raise RuntimeError("Failed to extract detailed error description")             # <<<<<<<<<<<<<<
+ * 
+ *     try:
+ */
+    __pyx_t_5 = PyObject_Call(__pyx_builtin_RuntimeError, ((PyObject *)__pyx_k_tuple_4), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 108; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_Raise(__pyx_t_5, 0, 0, 0);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 108; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    goto __pyx_L5;
+  }
+  __pyx_L5:;
+
+  /* "h5py/_errors.pyx":110
+ *         raise RuntimeError("Failed to extract detailed error description")
+ * 
+ *     try:             # <<<<<<<<<<<<<<
+ *         mj_desc = H5Eget_major(err.err.maj_num)
+ *         mn_desc = H5Eget_minor(err.err.min_num)
+ */
+  /*try:*/ {
+
+    /* "h5py/_errors.pyx":111
+ * 
+ *     try:
+ *         mj_desc = H5Eget_major(err.err.maj_num)             # <<<<<<<<<<<<<<
+ *         mn_desc = H5Eget_minor(err.err.min_num)
+ *         if mj_desc == NULL or mn_desc == NULL:
+ */
+    __pyx_v_mj_desc = H5Eget_major(__pyx_v_err.err.maj_num);
+
+    /* "h5py/_errors.pyx":112
+ *     try:
+ *         mj_desc = H5Eget_major(err.err.maj_num)
+ *         mn_desc = H5Eget_minor(err.err.min_num)             # <<<<<<<<<<<<<<
+ *         if mj_desc == NULL or mn_desc == NULL:
+ *             raise RuntimeError("Failed to obtain error code description")
+ */
+    __pyx_v_mn_desc = H5Eget_minor(__pyx_v_err.err.min_num);
+
+    /* "h5py/_errors.pyx":113
+ *         mj_desc = H5Eget_major(err.err.maj_num)
+ *         mn_desc = H5Eget_minor(err.err.min_num)
+ *         if mj_desc == NULL or mn_desc == NULL:             # <<<<<<<<<<<<<<
+ *             raise RuntimeError("Failed to obtain error code description")
+ * 
+ */
+    __pyx_t_1 = (__pyx_v_mj_desc == NULL);
+    if (!__pyx_t_1) {
+      __pyx_t_7 = (__pyx_v_mn_desc == NULL);
+      __pyx_t_8 = __pyx_t_7;
+    } else {
+      __pyx_t_8 = __pyx_t_1;
+    }
+    if (__pyx_t_8) {
+
+      /* "h5py/_errors.pyx":114
+ *         mn_desc = H5Eget_minor(err.err.min_num)
+ *         if mj_desc == NULL or mn_desc == NULL:
+ *             raise RuntimeError("Failed to obtain error code description")             # <<<<<<<<<<<<<<
+ * 
+ *         msg = ("%s (%s: %s)" % (desc.decode('utf-8'),
+ */
+      __pyx_t_5 = PyObject_Call(__pyx_builtin_RuntimeError, ((PyObject *)__pyx_k_tuple_6), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L7;}
+      __Pyx_GOTREF(__pyx_t_5);
+      __Pyx_Raise(__pyx_t_5, 0, 0, 0);
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L7;}
+      goto __pyx_L9;
+    }
+    __pyx_L9:;
+
+    /* "h5py/_errors.pyx":116
+ *             raise RuntimeError("Failed to obtain error code description")
+ * 
+ *         msg = ("%s (%s: %s)" % (desc.decode('utf-8'),             # <<<<<<<<<<<<<<
+ *                                 mj_desc.decode('utf-8'),
+ *                                 mn_desc.decode('utf-8'))  ).encode('utf-8')
+ */
+    __pyx_t_5 = ((PyObject *)__Pyx_decode_c_string(__pyx_v_desc, 0, strlen(__pyx_v_desc), NULL, NULL, PyUnicode_DecodeUTF8)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L7;}
+    __Pyx_GOTREF(((PyObject *)__pyx_t_5));
+
+    /* "h5py/_errors.pyx":117
+ * 
+ *         msg = ("%s (%s: %s)" % (desc.decode('utf-8'),
+ *                                 mj_desc.decode('utf-8'),             # <<<<<<<<<<<<<<
+ *                                 mn_desc.decode('utf-8'))  ).encode('utf-8')
+ *     finally:
+ */
+    __pyx_t_3 = ((PyObject *)__Pyx_decode_c_string(__pyx_v_mj_desc, 0, strlen(__pyx_v_mj_desc), NULL, NULL, PyUnicode_DecodeUTF8)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L7;}
+    __Pyx_GOTREF(((PyObject *)__pyx_t_3));
+
+    /* "h5py/_errors.pyx":118
+ *         msg = ("%s (%s: %s)" % (desc.decode('utf-8'),
+ *                                 mj_desc.decode('utf-8'),
+ *                                 mn_desc.decode('utf-8'))  ).encode('utf-8')             # <<<<<<<<<<<<<<
+ *     finally:
+ *         free(mj_desc)
+ */
+    __pyx_t_4 = ((PyObject *)__Pyx_decode_c_string(__pyx_v_mn_desc, 0, strlen(__pyx_v_mn_desc), NULL, NULL, PyUnicode_DecodeUTF8)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L7;}
+    __Pyx_GOTREF(((PyObject *)__pyx_t_4));
+    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L7;}
+    __Pyx_GOTREF(__pyx_t_2);
+    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_t_5));
+    __Pyx_GIVEREF(((PyObject *)__pyx_t_5));
+    PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_t_3));
+    __Pyx_GIVEREF(((PyObject *)__pyx_t_3));
+    PyTuple_SET_ITEM(__pyx_t_2, 2, ((PyObject *)__pyx_t_4));
+    __Pyx_GIVEREF(((PyObject *)__pyx_t_4));
+    __pyx_t_5 = 0;
+    __pyx_t_3 = 0;
+    __pyx_t_4 = 0;
+    __pyx_t_4 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_7), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L7;}
+    __Pyx_GOTREF(((PyObject *)__pyx_t_4));
+    __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
+    __pyx_t_2 = PyObject_GetAttr(((PyObject *)__pyx_t_4), __pyx_n_s__encode); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L7;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
+    __pyx_t_4 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_k_tuple_9), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L7;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __pyx_v_msg = __pyx_t_4;
+    __pyx_t_4 = 0;
+  }
+
+  /* "h5py/_errors.pyx":120
+ *                                 mn_desc.decode('utf-8'))  ).encode('utf-8')
+ *     finally:
+ *         free(mj_desc)             # <<<<<<<<<<<<<<
+ *         free(mn_desc)
+ *         # HDF5 forbids freeing "desc"
+ */
+  /*finally:*/ {
+    int __pyx_why;
+    PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb;
+    int __pyx_exc_lineno;
+    __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
+    __pyx_why = 0; goto __pyx_L8;
+    __pyx_L7: {
+      __pyx_why = 4;
+      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb);
+      __pyx_exc_lineno = __pyx_lineno;
+      goto __pyx_L8;
+    }
+    __pyx_L8:;
+    free(__pyx_v_mj_desc);
+
+    /* "h5py/_errors.pyx":121
+ *     finally:
+ *         free(mj_desc)
+ *         free(mn_desc)             # <<<<<<<<<<<<<<
+ *         # HDF5 forbids freeing "desc"
+ * 
+ */
+    free(__pyx_v_mn_desc);
+    switch (__pyx_why) {
+      case 4: {
+        __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb);
+        __pyx_lineno = __pyx_exc_lineno;
+        __pyx_exc_type = 0;
+        __pyx_exc_value = 0;
+        __pyx_exc_tb = 0;
+        goto __pyx_L1_error;
+      }
+    }
+  }
+
+  /* "h5py/_errors.pyx":124
+ *         # HDF5 forbids freeing "desc"
+ * 
+ *     PyErr_SetString(eclass, msg)             # <<<<<<<<<<<<<<
+ * 
+ *     return 1
+ */
+  __pyx_t_6 = PyBytes_AsString(__pyx_v_msg); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  PyErr_SetString(__pyx_v_eclass, __pyx_t_6);
+
+  /* "h5py/_errors.pyx":126
+ *     PyErr_SetString(eclass, msg)
+ * 
+ *     return 1             # <<<<<<<<<<<<<<
+ * 
+ * cdef extern from "stdio.h":
+ */
+  __pyx_r = 1;
+  goto __pyx_L0;
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_AddTraceback("h5py._errors.set_exception", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_eclass);
+  __Pyx_XDECREF(__pyx_v_msg);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_7_errors_1silence_errors(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_7_errors_silence_errors[] = " Disable HDF5's automatic error printing in this thread ";
+static PyMethodDef __pyx_mdef_4h5py_7_errors_1silence_errors = {__Pyx_NAMESTR("silence_errors"), (PyCFunction)__pyx_pw_4h5py_7_errors_1silence_errors, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_7_errors_silence_errors)};
+static PyObject *__pyx_pw_4h5py_7_errors_1silence_errors(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("silence_errors (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_7_errors_silence_errors(__pyx_self);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/_errors.pyx":131
+ *     void *stderr
+ * 
+ * def silence_errors():             # <<<<<<<<<<<<<<
+ *     """ Disable HDF5's automatic error printing in this thread """
+ *     if H5Eset_auto(NULL, NULL) < 0:
+ */
+
+static PyObject *__pyx_pf_4h5py_7_errors_silence_errors(CYTHON_UNUSED PyObject *__pyx_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("silence_errors", 0);
+
+  /* "h5py/_errors.pyx":133
+ * def silence_errors():
+ *     """ Disable HDF5's automatic error printing in this thread """
+ *     if H5Eset_auto(NULL, NULL) < 0:             # <<<<<<<<<<<<<<
+ *         raise RuntimeError("Failed to disable automatic error printing")
+ * 
+ */
+  __pyx_t_1 = (H5Eset_auto(NULL, NULL) < 0);
+  if (__pyx_t_1) {
+
+    /* "h5py/_errors.pyx":134
+ *     """ Disable HDF5's automatic error printing in this thread """
+ *     if H5Eset_auto(NULL, NULL) < 0:
+ *         raise RuntimeError("Failed to disable automatic error printing")             # <<<<<<<<<<<<<<
+ * 
+ * def unsilence_errors():
+ */
+    __pyx_t_2 = PyObject_Call(__pyx_builtin_RuntimeError, ((PyObject *)__pyx_k_tuple_11), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 134; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 134; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py._errors.silence_errors", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_7_errors_3unsilence_errors(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_7_errors_2unsilence_errors[] = " Re-enable HDF5's automatic error printing in this thread ";
+static PyMethodDef __pyx_mdef_4h5py_7_errors_3unsilence_errors = {__Pyx_NAMESTR("unsilence_errors"), (PyCFunction)__pyx_pw_4h5py_7_errors_3unsilence_errors, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_7_errors_2unsilence_errors)};
+static PyObject *__pyx_pw_4h5py_7_errors_3unsilence_errors(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("unsilence_errors (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_7_errors_2unsilence_errors(__pyx_self);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/_errors.pyx":136
+ *         raise RuntimeError("Failed to disable automatic error printing")
+ * 
+ * def unsilence_errors():             # <<<<<<<<<<<<<<
+ *     """ Re-enable HDF5's automatic error printing in this thread """
+ *     if H5Eset_auto(H5Eprint, stderr) < 0:
+ */
+
+static PyObject *__pyx_pf_4h5py_7_errors_2unsilence_errors(CYTHON_UNUSED PyObject *__pyx_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("unsilence_errors", 0);
+
+  /* "h5py/_errors.pyx":138
+ * def unsilence_errors():
+ *     """ Re-enable HDF5's automatic error printing in this thread """
+ *     if H5Eset_auto(H5Eprint, stderr) < 0:             # <<<<<<<<<<<<<<
+ *         raise RuntimeError("Failed to enable automatic error printing")
+ * 
+ */
+  __pyx_t_1 = (H5Eset_auto(H5Eprint, stderr) < 0);
+  if (__pyx_t_1) {
+
+    /* "h5py/_errors.pyx":139
+ *     """ Re-enable HDF5's automatic error printing in this thread """
+ *     if H5Eset_auto(H5Eprint, stderr) < 0:
+ *         raise RuntimeError("Failed to enable automatic error printing")             # <<<<<<<<<<<<<<
+ * 
+ * cdef err_cookie set_error_handler(err_cookie handler):
+ */
+    __pyx_t_2 = PyObject_Call(__pyx_builtin_RuntimeError, ((PyObject *)__pyx_k_tuple_13), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 139; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 139; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py._errors.unsilence_errors", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/_errors.pyx":141
+ *         raise RuntimeError("Failed to enable automatic error printing")
+ * 
+ * cdef err_cookie set_error_handler(err_cookie handler):             # <<<<<<<<<<<<<<
+ *     # Note: exceptions here will be printed instead of raised.
+ * 
+ */
+
+static __pyx_t_4h5py_7_errors_err_cookie __pyx_f_4h5py_7_errors_set_error_handler(__pyx_t_4h5py_7_errors_err_cookie __pyx_v_handler) {
+  __pyx_t_4h5py_7_errors_err_cookie __pyx_v_old_handler;
+  __pyx_t_4h5py_7_errors_err_cookie __pyx_r;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("set_error_handler", 0);
+
+  /* "h5py/_errors.pyx":146
+ *     cdef err_cookie old_handler
+ * 
+ *     if H5Eget_auto(&old_handler.func, &old_handler.data) < 0:             # <<<<<<<<<<<<<<
+ *         raise RuntimeError("Failed to retrieve old handler")
+ * 
+ */
+  __pyx_t_1 = (H5Eget_auto((&__pyx_v_old_handler.func), (&__pyx_v_old_handler.data)) < 0);
+  if (__pyx_t_1) {
+
+    /* "h5py/_errors.pyx":147
+ * 
+ *     if H5Eget_auto(&old_handler.func, &old_handler.data) < 0:
+ *         raise RuntimeError("Failed to retrieve old handler")             # <<<<<<<<<<<<<<
+ * 
+ *     if H5Eset_auto(handler.func, handler.data) < 0:
+ */
+    __pyx_t_2 = PyObject_Call(__pyx_builtin_RuntimeError, ((PyObject *)__pyx_k_tuple_15), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 147; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 147; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  /* "h5py/_errors.pyx":149
+ *         raise RuntimeError("Failed to retrieve old handler")
+ * 
+ *     if H5Eset_auto(handler.func, handler.data) < 0:             # <<<<<<<<<<<<<<
+ *         raise RuntimeError("Failed to install new handler")
+ * 
+ */
+  __pyx_t_1 = (H5Eset_auto(__pyx_v_handler.func, __pyx_v_handler.data) < 0);
+  if (__pyx_t_1) {
+
+    /* "h5py/_errors.pyx":150
+ * 
+ *     if H5Eset_auto(handler.func, handler.data) < 0:
+ *         raise RuntimeError("Failed to install new handler")             # <<<<<<<<<<<<<<
+ * 
+ *     return old_handler
+ */
+    __pyx_t_2 = PyObject_Call(__pyx_builtin_RuntimeError, ((PyObject *)__pyx_k_tuple_17), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    goto __pyx_L4;
+  }
+  __pyx_L4:;
+
+  /* "h5py/_errors.pyx":152
+ *         raise RuntimeError("Failed to install new handler")
+ * 
+ *     return old_handler             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_r = __pyx_v_old_handler;
+  goto __pyx_L0;
+
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_WriteUnraisable("h5py._errors.set_error_handler", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyMethodDef __pyx_methods[] = {
+  {0, 0, 0, 0}
+};
+
+#if PY_MAJOR_VERSION >= 3
+static struct PyModuleDef __pyx_moduledef = {
+  #if PY_VERSION_HEX < 0x03020000
+    { PyObject_HEAD_INIT(NULL) NULL, 0, NULL },
+  #else
+    PyModuleDef_HEAD_INIT,
+  #endif
+    __Pyx_NAMESTR("_errors"),
+    0, /* m_doc */
+    -1, /* m_size */
+    __pyx_methods /* m_methods */,
+    NULL, /* m_reload */
+    NULL, /* m_traverse */
+    NULL, /* m_clear */
+    NULL /* m_free */
+};
+#endif
+
+static __Pyx_StringTabEntry __pyx_string_tab[] = {
+  {&__pyx_kp_s_1, __pyx_k_1, sizeof(__pyx_k_1), 0, 0, 1, 0},
+  {&__pyx_kp_s_10, __pyx_k_10, sizeof(__pyx_k_10), 0, 0, 1, 0},
+  {&__pyx_kp_s_12, __pyx_k_12, sizeof(__pyx_k_12), 0, 0, 1, 0},
+  {&__pyx_kp_s_14, __pyx_k_14, sizeof(__pyx_k_14), 0, 0, 1, 0},
+  {&__pyx_kp_s_16, __pyx_k_16, sizeof(__pyx_k_16), 0, 0, 1, 0},
+  {&__pyx_kp_s_19, __pyx_k_19, sizeof(__pyx_k_19), 0, 0, 1, 0},
+  {&__pyx_n_s_20, __pyx_k_20, sizeof(__pyx_k_20), 0, 0, 1, 1},
+  {&__pyx_kp_s_3, __pyx_k_3, sizeof(__pyx_k_3), 0, 0, 1, 0},
+  {&__pyx_kp_s_5, __pyx_k_5, sizeof(__pyx_k_5), 0, 0, 1, 0},
+  {&__pyx_kp_s_7, __pyx_k_7, sizeof(__pyx_k_7), 0, 0, 1, 0},
+  {&__pyx_kp_s_8, __pyx_k_8, sizeof(__pyx_k_8), 0, 0, 1, 0},
+  {&__pyx_n_s__IOError, __pyx_k__IOError, sizeof(__pyx_k__IOError), 0, 0, 1, 1},
+  {&__pyx_n_s__KeyError, __pyx_k__KeyError, sizeof(__pyx_k__KeyError), 0, 0, 1, 1},
+  {&__pyx_n_s__NotImplementedError, __pyx_k__NotImplementedError, sizeof(__pyx_k__NotImplementedError), 0, 0, 1, 1},
+  {&__pyx_n_s__RuntimeError, __pyx_k__RuntimeError, sizeof(__pyx_k__RuntimeError), 0, 0, 1, 1},
+  {&__pyx_n_s__TypeError, __pyx_k__TypeError, sizeof(__pyx_k__TypeError), 0, 0, 1, 1},
+  {&__pyx_n_s__ValueError, __pyx_k__ValueError, sizeof(__pyx_k__ValueError), 0, 0, 1, 1},
+  {&__pyx_n_s____main__, __pyx_k____main__, sizeof(__pyx_k____main__), 0, 0, 1, 1},
+  {&__pyx_n_s____test__, __pyx_k____test__, sizeof(__pyx_k____test__), 0, 0, 1, 1},
+  {&__pyx_n_s___exact_table, __pyx_k___exact_table, sizeof(__pyx_k___exact_table), 0, 0, 1, 1},
+  {&__pyx_n_s___minor_table, __pyx_k___minor_table, sizeof(__pyx_k___minor_table), 0, 0, 1, 1},
+  {&__pyx_n_s__encode, __pyx_k__encode, sizeof(__pyx_k__encode), 0, 0, 1, 1},
+  {&__pyx_n_s__get, __pyx_k__get, sizeof(__pyx_k__get), 0, 0, 1, 1},
+  {&__pyx_n_s__silence_errors, __pyx_k__silence_errors, sizeof(__pyx_k__silence_errors), 0, 0, 1, 1},
+  {&__pyx_n_s__unsilence_errors, __pyx_k__unsilence_errors, sizeof(__pyx_k__unsilence_errors), 0, 0, 1, 1},
+  {0, 0, 0, 0, 0, 0, 0}
+};
+static int __Pyx_InitCachedBuiltins(void) {
+  __pyx_builtin_IOError = __Pyx_GetName(__pyx_b, __pyx_n_s__IOError); if (!__pyx_builtin_IOError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_builtin_ValueError = __Pyx_GetName(__pyx_b, __pyx_n_s__ValueError); if (!__pyx_builtin_ValueError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_builtin_NotImplementedError = __Pyx_GetName(__pyx_b, __pyx_n_s__NotImplementedError); if (!__pyx_builtin_NotImplementedError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_builtin_KeyError = __Pyx_GetName(__pyx_b, __pyx_n_s__KeyError); if (!__pyx_builtin_KeyError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 42; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_builtin_TypeError = __Pyx_GetName(__pyx_b, __pyx_n_s__TypeError); if (!__pyx_builtin_TypeError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_builtin_RuntimeError = __Pyx_GetName(__pyx_b, __pyx_n_s__RuntimeError); if (!__pyx_builtin_RuntimeError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 98; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  return 0;
+  __pyx_L1_error:;
+  return -1;
+}
+
+static int __Pyx_InitCachedConstants(void) {
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0);
+
+  /* "h5py/_errors.pyx":98
+ * 
+ *     if H5Ewalk(H5E_WALK_UPWARD, walk_cb, &err) < 0:
+ *         raise RuntimeError("Failed to walk error stack")             # <<<<<<<<<<<<<<
+ * 
+ *     if err.n < 0:   # No HDF5 exception information found
+ */
+  __pyx_k_tuple_2 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_1)); if (unlikely(!__pyx_k_tuple_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 98; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_2);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_2));
+
+  /* "h5py/_errors.pyx":108
+ *     desc = err.err.desc
+ *     if desc is NULL:
+ *         raise RuntimeError("Failed to extract detailed error description")             # <<<<<<<<<<<<<<
+ * 
+ *     try:
+ */
+  __pyx_k_tuple_4 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_3)); if (unlikely(!__pyx_k_tuple_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 108; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_4);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_4));
+
+  /* "h5py/_errors.pyx":114
+ *         mn_desc = H5Eget_minor(err.err.min_num)
+ *         if mj_desc == NULL or mn_desc == NULL:
+ *             raise RuntimeError("Failed to obtain error code description")             # <<<<<<<<<<<<<<
+ * 
+ *         msg = ("%s (%s: %s)" % (desc.decode('utf-8'),
+ */
+  __pyx_k_tuple_6 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_5)); if (unlikely(!__pyx_k_tuple_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_6);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_6));
+
+  /* "h5py/_errors.pyx":118
+ *         msg = ("%s (%s: %s)" % (desc.decode('utf-8'),
+ *                                 mj_desc.decode('utf-8'),
+ *                                 mn_desc.decode('utf-8'))  ).encode('utf-8')             # <<<<<<<<<<<<<<
+ *     finally:
+ *         free(mj_desc)
+ */
+  __pyx_k_tuple_9 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_8)); if (unlikely(!__pyx_k_tuple_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_9);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_9));
+
+  /* "h5py/_errors.pyx":134
+ *     """ Disable HDF5's automatic error printing in this thread """
+ *     if H5Eset_auto(NULL, NULL) < 0:
+ *         raise RuntimeError("Failed to disable automatic error printing")             # <<<<<<<<<<<<<<
+ * 
+ * def unsilence_errors():
+ */
+  __pyx_k_tuple_11 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_10)); if (unlikely(!__pyx_k_tuple_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 134; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_11);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_11));
+
+  /* "h5py/_errors.pyx":139
+ *     """ Re-enable HDF5's automatic error printing in this thread """
+ *     if H5Eset_auto(H5Eprint, stderr) < 0:
+ *         raise RuntimeError("Failed to enable automatic error printing")             # <<<<<<<<<<<<<<
+ * 
+ * cdef err_cookie set_error_handler(err_cookie handler):
+ */
+  __pyx_k_tuple_13 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_12)); if (unlikely(!__pyx_k_tuple_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 139; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_13);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_13));
+
+  /* "h5py/_errors.pyx":147
+ * 
+ *     if H5Eget_auto(&old_handler.func, &old_handler.data) < 0:
+ *         raise RuntimeError("Failed to retrieve old handler")             # <<<<<<<<<<<<<<
+ * 
+ *     if H5Eset_auto(handler.func, handler.data) < 0:
+ */
+  __pyx_k_tuple_15 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_14)); if (unlikely(!__pyx_k_tuple_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 147; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_15);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_15));
+
+  /* "h5py/_errors.pyx":150
+ * 
+ *     if H5Eset_auto(handler.func, handler.data) < 0:
+ *         raise RuntimeError("Failed to install new handler")             # <<<<<<<<<<<<<<
+ * 
+ *     return old_handler
+ */
+  __pyx_k_tuple_17 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_16)); if (unlikely(!__pyx_k_tuple_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_17);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_17));
+
+  /* "h5py/_errors.pyx":131
+ *     void *stderr
+ * 
+ * def silence_errors():             # <<<<<<<<<<<<<<
+ *     """ Disable HDF5's automatic error printing in this thread """
+ *     if H5Eset_auto(NULL, NULL) < 0:
+ */
+  __pyx_k_codeobj_18 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_19, __pyx_n_s__silence_errors, 131, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_18)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/_errors.pyx":136
+ *         raise RuntimeError("Failed to disable automatic error printing")
+ * 
+ * def unsilence_errors():             # <<<<<<<<<<<<<<
+ *     """ Re-enable HDF5's automatic error printing in this thread """
+ *     if H5Eset_auto(H5Eprint, stderr) < 0:
+ */
+  __pyx_k_codeobj_21 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_19, __pyx_n_s__unsilence_errors, 136, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_21)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_RefNannyFinishContext();
+  return 0;
+  __pyx_L1_error:;
+  __Pyx_RefNannyFinishContext();
+  return -1;
+}
+
+static int __Pyx_InitGlobals(void) {
+  if (__Pyx_InitStrings(__pyx_string_tab) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  return 0;
+  __pyx_L1_error:;
+  return -1;
+}
+
+#if PY_MAJOR_VERSION < 3
+PyMODINIT_FUNC init_errors(void); /*proto*/
+PyMODINIT_FUNC init_errors(void)
+#else
+PyMODINIT_FUNC PyInit__errors(void); /*proto*/
+PyMODINIT_FUNC PyInit__errors(void)
+#endif
+{
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  __Pyx_RefNannyDeclarations
+  #if CYTHON_REFNANNY
+  __Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny");
+  if (!__Pyx_RefNanny) {
+      PyErr_Clear();
+      __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny");
+      if (!__Pyx_RefNanny)
+          Py_FatalError("failed to import 'refnanny' module");
+  }
+  #endif
+  __Pyx_RefNannySetupContext("PyMODINIT_FUNC PyInit__errors(void)", 0);
+  if ( __Pyx_check_binary_version() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #ifdef __Pyx_CyFunction_USED
+  if (__Pyx_CyFunction_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #endif
+  #ifdef __Pyx_FusedFunction_USED
+  if (__pyx_FusedFunction_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #endif
+  #ifdef __Pyx_Generator_USED
+  if (__pyx_Generator_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #endif
+  /*--- Library function declarations ---*/
+  /*--- Threads initialization code ---*/
+  #if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS
+  #ifdef WITH_THREAD /* Python build with threading support? */
+  PyEval_InitThreads();
+  #endif
+  #endif
+  /*--- Module creation code ---*/
+  #if PY_MAJOR_VERSION < 3
+  __pyx_m = Py_InitModule4(__Pyx_NAMESTR("_errors"), __pyx_methods, 0, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m);
+  #else
+  __pyx_m = PyModule_Create(&__pyx_moduledef);
+  #endif
+  if (unlikely(!__pyx_m)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #if PY_MAJOR_VERSION >= 3
+  {
+    PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (!PyDict_GetItemString(modules, "h5py._errors")) {
+      if (unlikely(PyDict_SetItemString(modules, "h5py._errors", __pyx_m) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    }
+  }
+  #endif
+  __pyx_b = PyImport_AddModule(__Pyx_NAMESTR(__Pyx_BUILTIN_MODULE_NAME)); if (unlikely(!__pyx_b)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #if CYTHON_COMPILING_IN_PYPY
+  Py_INCREF(__pyx_b);
+  #endif
+  if (__Pyx_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  /*--- Initialize various global constants etc. ---*/
+  if (unlikely(__Pyx_InitGlobals() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__pyx_module_is_main_h5py___errors) {
+    if (__Pyx_SetAttrString(__pyx_m, "__name__", __pyx_n_s____main__) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  }
+  /*--- Builtin init code ---*/
+  if (unlikely(__Pyx_InitCachedBuiltins() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  /*--- Constants init code ---*/
+  if (unlikely(__Pyx_InitCachedConstants() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  /*--- Global init code ---*/
+  /*--- Variable export code ---*/
+  /*--- Function export code ---*/
+  if (__Pyx_ExportFunction("set_exception", (void (*)(void))__pyx_f_4h5py_7_errors_set_exception, "int (void)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("set_error_handler", (void (*)(void))__pyx_f_4h5py_7_errors_set_error_handler, "__pyx_t_4h5py_7_errors_err_cookie (__pyx_t_4h5py_7_errors_err_cookie)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  /*--- Type init code ---*/
+  /*--- Type import code ---*/
+  /*--- Variable import code ---*/
+  /*--- Function import code ---*/
+  /*--- Execution code ---*/
+
+  /* "h5py/_errors.pyx":12
+ * # Python-style minor error classes.  If the minor error code matches an entry
+ * # in this dict, the generated exception will be used.
+ * _minor_table = {             # <<<<<<<<<<<<<<
+ *     H5E_SEEKERROR:      IOError,    # Seek failed
+ *     H5E_READERROR:      IOError,    # Read failed
+ */
+  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
+
+  /* "h5py/_errors.pyx":13
+ * # in this dict, the generated exception will be used.
+ * _minor_table = {
+ *     H5E_SEEKERROR:      IOError,    # Seek failed             # <<<<<<<<<<<<<<
+ *     H5E_READERROR:      IOError,    # Read failed
+ *     H5E_WRITEERROR:     IOError,    # Write failed
+ */
+  __pyx_t_2 = PyInt_FromLong(H5E_SEEKERROR); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_builtin_IOError) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/_errors.pyx":14
+ * _minor_table = {
+ *     H5E_SEEKERROR:      IOError,    # Seek failed
+ *     H5E_READERROR:      IOError,    # Read failed             # <<<<<<<<<<<<<<
+ *     H5E_WRITEERROR:     IOError,    # Write failed
+ *     H5E_CLOSEERROR:     IOError,    # Close failed
+ */
+  __pyx_t_2 = PyInt_FromLong(H5E_READERROR); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_builtin_IOError) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/_errors.pyx":15
+ *     H5E_SEEKERROR:      IOError,    # Seek failed
+ *     H5E_READERROR:      IOError,    # Read failed
+ *     H5E_WRITEERROR:     IOError,    # Write failed             # <<<<<<<<<<<<<<
+ *     H5E_CLOSEERROR:     IOError,    # Close failed
+ *     H5E_OVERFLOW:       IOError,    # Address overflowed
+ */
+  __pyx_t_2 = PyInt_FromLong(H5E_WRITEERROR); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_builtin_IOError) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/_errors.pyx":16
+ *     H5E_READERROR:      IOError,    # Read failed
+ *     H5E_WRITEERROR:     IOError,    # Write failed
+ *     H5E_CLOSEERROR:     IOError,    # Close failed             # <<<<<<<<<<<<<<
+ *     H5E_OVERFLOW:       IOError,    # Address overflowed
+ *     H5E_FCNTL:          IOError,    # File control (fcntl) failed
+ */
+  __pyx_t_2 = PyInt_FromLong(H5E_CLOSEERROR); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_builtin_IOError) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/_errors.pyx":17
+ *     H5E_WRITEERROR:     IOError,    # Write failed
+ *     H5E_CLOSEERROR:     IOError,    # Close failed
+ *     H5E_OVERFLOW:       IOError,    # Address overflowed             # <<<<<<<<<<<<<<
+ *     H5E_FCNTL:          IOError,    # File control (fcntl) failed
+ * 
+ */
+  __pyx_t_2 = PyInt_FromLong(H5E_OVERFLOW); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_builtin_IOError) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/_errors.pyx":18
+ *     H5E_CLOSEERROR:     IOError,    # Close failed
+ *     H5E_OVERFLOW:       IOError,    # Address overflowed
+ *     H5E_FCNTL:          IOError,    # File control (fcntl) failed             # <<<<<<<<<<<<<<
+ * 
+ *     H5E_FILEEXISTS:     IOError,    # File already exists
+ */
+  __pyx_t_2 = PyInt_FromLong(H5E_FCNTL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_builtin_IOError) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/_errors.pyx":20
+ *     H5E_FCNTL:          IOError,    # File control (fcntl) failed
+ * 
+ *     H5E_FILEEXISTS:     IOError,    # File already exists             # <<<<<<<<<<<<<<
+ *     H5E_FILEOPEN:       IOError,    # File already open
+ *     H5E_CANTCREATE:     IOError,    # Unable to create file
+ */
+  __pyx_t_2 = PyInt_FromLong(H5E_FILEEXISTS); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_builtin_IOError) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/_errors.pyx":21
+ * 
+ *     H5E_FILEEXISTS:     IOError,    # File already exists
+ *     H5E_FILEOPEN:       IOError,    # File already open             # <<<<<<<<<<<<<<
+ *     H5E_CANTCREATE:     IOError,    # Unable to create file
+ *     H5E_CANTOPENFILE:   IOError,    # Unable to open file
+ */
+  __pyx_t_2 = PyInt_FromLong(H5E_FILEOPEN); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_builtin_IOError) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/_errors.pyx":22
+ *     H5E_FILEEXISTS:     IOError,    # File already exists
+ *     H5E_FILEOPEN:       IOError,    # File already open
+ *     H5E_CANTCREATE:     IOError,    # Unable to create file             # <<<<<<<<<<<<<<
+ *     H5E_CANTOPENFILE:   IOError,    # Unable to open file
+ *     H5E_CANTCLOSEFILE:  IOError,    # Unable to close file
+ */
+  __pyx_t_2 = PyInt_FromLong(H5E_CANTCREATE); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_builtin_IOError) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/_errors.pyx":23
+ *     H5E_FILEOPEN:       IOError,    # File already open
+ *     H5E_CANTCREATE:     IOError,    # Unable to create file
+ *     H5E_CANTOPENFILE:   IOError,    # Unable to open file             # <<<<<<<<<<<<<<
+ *     H5E_CANTCLOSEFILE:  IOError,    # Unable to close file
+ *     H5E_NOTHDF5:        IOError,    # Not an HDF5 file
+ */
+  __pyx_t_2 = PyInt_FromLong(H5E_CANTOPENFILE); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_builtin_IOError) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/_errors.pyx":24
+ *     H5E_CANTCREATE:     IOError,    # Unable to create file
+ *     H5E_CANTOPENFILE:   IOError,    # Unable to open file
+ *     H5E_CANTCLOSEFILE:  IOError,    # Unable to close file             # <<<<<<<<<<<<<<
+ *     H5E_NOTHDF5:        IOError,    # Not an HDF5 file
+ *     H5E_BADFILE:        ValueError, # Bad file ID accessed
+ */
+  __pyx_t_2 = PyInt_FromLong(H5E_CANTCLOSEFILE); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_builtin_IOError) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/_errors.pyx":25
+ *     H5E_CANTOPENFILE:   IOError,    # Unable to open file
+ *     H5E_CANTCLOSEFILE:  IOError,    # Unable to close file
+ *     H5E_NOTHDF5:        IOError,    # Not an HDF5 file             # <<<<<<<<<<<<<<
+ *     H5E_BADFILE:        ValueError, # Bad file ID accessed
+ *     H5E_TRUNCATED:      IOError,    # File has been truncated
+ */
+  __pyx_t_2 = PyInt_FromLong(H5E_NOTHDF5); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_builtin_IOError) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/_errors.pyx":26
+ *     H5E_CANTCLOSEFILE:  IOError,    # Unable to close file
+ *     H5E_NOTHDF5:        IOError,    # Not an HDF5 file
+ *     H5E_BADFILE:        ValueError, # Bad file ID accessed             # <<<<<<<<<<<<<<
+ *     H5E_TRUNCATED:      IOError,    # File has been truncated
+ *     H5E_MOUNT:          IOError,    # File mount error
+ */
+  __pyx_t_2 = PyInt_FromLong(H5E_BADFILE); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_builtin_ValueError) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/_errors.pyx":27
+ *     H5E_NOTHDF5:        IOError,    # Not an HDF5 file
+ *     H5E_BADFILE:        ValueError, # Bad file ID accessed
+ *     H5E_TRUNCATED:      IOError,    # File has been truncated             # <<<<<<<<<<<<<<
+ *     H5E_MOUNT:          IOError,    # File mount error
+ * 
+ */
+  __pyx_t_2 = PyInt_FromLong(H5E_TRUNCATED); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_builtin_IOError) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/_errors.pyx":28
+ *     H5E_BADFILE:        ValueError, # Bad file ID accessed
+ *     H5E_TRUNCATED:      IOError,    # File has been truncated
+ *     H5E_MOUNT:          IOError,    # File mount error             # <<<<<<<<<<<<<<
+ * 
+ *     H5E_NOFILTER:       IOError,    # Requested filter is not available
+ */
+  __pyx_t_2 = PyInt_FromLong(H5E_MOUNT); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_builtin_IOError) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/_errors.pyx":30
+ *     H5E_MOUNT:          IOError,    # File mount error
+ * 
+ *     H5E_NOFILTER:       IOError,    # Requested filter is not available             # <<<<<<<<<<<<<<
+ *     H5E_CALLBACK:       IOError,    # Callback failed
+ *     H5E_CANAPPLY:       IOError,    # Error from filter 'can apply' callback
+ */
+  __pyx_t_2 = PyInt_FromLong(H5E_NOFILTER); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_builtin_IOError) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/_errors.pyx":31
+ * 
+ *     H5E_NOFILTER:       IOError,    # Requested filter is not available
+ *     H5E_CALLBACK:       IOError,    # Callback failed             # <<<<<<<<<<<<<<
+ *     H5E_CANAPPLY:       IOError,    # Error from filter 'can apply' callback
+ *     H5E_SETLOCAL:       IOError,    # Error from filter 'set local' callback
+ */
+  __pyx_t_2 = PyInt_FromLong(H5E_CALLBACK); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_builtin_IOError) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/_errors.pyx":32
+ *     H5E_NOFILTER:       IOError,    # Requested filter is not available
+ *     H5E_CALLBACK:       IOError,    # Callback failed
+ *     H5E_CANAPPLY:       IOError,    # Error from filter 'can apply' callback             # <<<<<<<<<<<<<<
+ *     H5E_SETLOCAL:       IOError,    # Error from filter 'set local' callback
+ *     H5E_NOENCODER:      IOError,    # Filter present but encoding disabled
+ */
+  __pyx_t_2 = PyInt_FromLong(H5E_CANAPPLY); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_builtin_IOError) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/_errors.pyx":33
+ *     H5E_CALLBACK:       IOError,    # Callback failed
+ *     H5E_CANAPPLY:       IOError,    # Error from filter 'can apply' callback
+ *     H5E_SETLOCAL:       IOError,    # Error from filter 'set local' callback             # <<<<<<<<<<<<<<
+ *     H5E_NOENCODER:      IOError,    # Filter present but encoding disabled
+ * 
+ */
+  __pyx_t_2 = PyInt_FromLong(H5E_SETLOCAL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_builtin_IOError) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/_errors.pyx":34
+ *     H5E_CANAPPLY:       IOError,    # Error from filter 'can apply' callback
+ *     H5E_SETLOCAL:       IOError,    # Error from filter 'set local' callback
+ *     H5E_NOENCODER:      IOError,    # Filter present but encoding disabled             # <<<<<<<<<<<<<<
+ * 
+ *     H5E_BADATOM:        ValueError,  # Unable to find atom information (already closed?)
+ */
+  __pyx_t_2 = PyInt_FromLong(H5E_NOENCODER); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_builtin_IOError) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/_errors.pyx":36
+ *     H5E_NOENCODER:      IOError,    # Filter present but encoding disabled
+ * 
+ *     H5E_BADATOM:        ValueError,  # Unable to find atom information (already closed?)             # <<<<<<<<<<<<<<
+ *     H5E_BADGROUP:       ValueError,  # Unable to find ID group information
+ *     H5E_BADSELECT:      ValueError,  # Invalid selection (hyperslabs)
+ */
+  __pyx_t_2 = PyInt_FromLong(H5E_BADATOM); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_builtin_ValueError) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/_errors.pyx":37
+ * 
+ *     H5E_BADATOM:        ValueError,  # Unable to find atom information (already closed?)
+ *     H5E_BADGROUP:       ValueError,  # Unable to find ID group information             # <<<<<<<<<<<<<<
+ *     H5E_BADSELECT:      ValueError,  # Invalid selection (hyperslabs)
+ *     H5E_UNINITIALIZED:  ValueError,  # Information is uinitialized
+ */
+  __pyx_t_2 = PyInt_FromLong(H5E_BADGROUP); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_builtin_ValueError) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/_errors.pyx":38
+ *     H5E_BADATOM:        ValueError,  # Unable to find atom information (already closed?)
+ *     H5E_BADGROUP:       ValueError,  # Unable to find ID group information
+ *     H5E_BADSELECT:      ValueError,  # Invalid selection (hyperslabs)             # <<<<<<<<<<<<<<
+ *     H5E_UNINITIALIZED:  ValueError,  # Information is uinitialized
+ *     H5E_UNSUPPORTED:    NotImplementedError,    # Feature is unsupported
+ */
+  __pyx_t_2 = PyInt_FromLong(H5E_BADSELECT); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_builtin_ValueError) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/_errors.pyx":39
+ *     H5E_BADGROUP:       ValueError,  # Unable to find ID group information
+ *     H5E_BADSELECT:      ValueError,  # Invalid selection (hyperslabs)
+ *     H5E_UNINITIALIZED:  ValueError,  # Information is uinitialized             # <<<<<<<<<<<<<<
+ *     H5E_UNSUPPORTED:    NotImplementedError,    # Feature is unsupported
+ * 
+ */
+  __pyx_t_2 = PyInt_FromLong(H5E_UNINITIALIZED); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_builtin_ValueError) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/_errors.pyx":40
+ *     H5E_BADSELECT:      ValueError,  # Invalid selection (hyperslabs)
+ *     H5E_UNINITIALIZED:  ValueError,  # Information is uinitialized
+ *     H5E_UNSUPPORTED:    NotImplementedError,    # Feature is unsupported             # <<<<<<<<<<<<<<
+ * 
+ *     H5E_NOTFOUND:       KeyError,    # Object not found
+ */
+  __pyx_t_2 = PyInt_FromLong(H5E_UNSUPPORTED); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_builtin_NotImplementedError) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/_errors.pyx":42
+ *     H5E_UNSUPPORTED:    NotImplementedError,    # Feature is unsupported
+ * 
+ *     H5E_NOTFOUND:       KeyError,    # Object not found             # <<<<<<<<<<<<<<
+ *     H5E_CANTINSERT:     ValueError,   # Unable to insert object
+ * 
+ */
+  __pyx_t_2 = PyInt_FromLong(H5E_NOTFOUND); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 42; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_builtin_KeyError) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/_errors.pyx":43
+ * 
+ *     H5E_NOTFOUND:       KeyError,    # Object not found
+ *     H5E_CANTINSERT:     ValueError,   # Unable to insert object             # <<<<<<<<<<<<<<
+ * 
+ *     H5E_BADTYPE:        TypeError,   # Inappropriate type
+ */
+  __pyx_t_2 = PyInt_FromLong(H5E_CANTINSERT); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_builtin_ValueError) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/_errors.pyx":45
+ *     H5E_CANTINSERT:     ValueError,   # Unable to insert object
+ * 
+ *     H5E_BADTYPE:        TypeError,   # Inappropriate type             # <<<<<<<<<<<<<<
+ *     H5E_BADRANGE:       ValueError,  # Out of range
+ *     H5E_BADVALUE:       ValueError,  # Bad value
+ */
+  __pyx_t_2 = PyInt_FromLong(H5E_BADTYPE); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_builtin_TypeError) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/_errors.pyx":46
+ * 
+ *     H5E_BADTYPE:        TypeError,   # Inappropriate type
+ *     H5E_BADRANGE:       ValueError,  # Out of range             # <<<<<<<<<<<<<<
+ *     H5E_BADVALUE:       ValueError,  # Bad value
+ * 
+ */
+  __pyx_t_2 = PyInt_FromLong(H5E_BADRANGE); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_builtin_ValueError) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/_errors.pyx":47
+ *     H5E_BADTYPE:        TypeError,   # Inappropriate type
+ *     H5E_BADRANGE:       ValueError,  # Out of range
+ *     H5E_BADVALUE:       ValueError,  # Bad value             # <<<<<<<<<<<<<<
+ * 
+ *     H5E_EXISTS:         ValueError,  # Object already exists
+ */
+  __pyx_t_2 = PyInt_FromLong(H5E_BADVALUE); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_builtin_ValueError) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/_errors.pyx":49
+ *     H5E_BADVALUE:       ValueError,  # Bad value
+ * 
+ *     H5E_EXISTS:         ValueError,  # Object already exists             # <<<<<<<<<<<<<<
+ *     H5E_ALREADYEXISTS:  ValueError,  # Object already exists, part II
+ *     H5E_CANTCONVERT:    TypeError,   # Can't convert datatypes
+ */
+  __pyx_t_2 = PyInt_FromLong(H5E_EXISTS); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_builtin_ValueError) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/_errors.pyx":50
+ * 
+ *     H5E_EXISTS:         ValueError,  # Object already exists
+ *     H5E_ALREADYEXISTS:  ValueError,  # Object already exists, part II             # <<<<<<<<<<<<<<
+ *     H5E_CANTCONVERT:    TypeError,   # Can't convert datatypes
+ * 
+ */
+  __pyx_t_2 = PyInt_FromLong(H5E_ALREADYEXISTS); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_builtin_ValueError) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/_errors.pyx":51
+ *     H5E_EXISTS:         ValueError,  # Object already exists
+ *     H5E_ALREADYEXISTS:  ValueError,  # Object already exists, part II
+ *     H5E_CANTCONVERT:    TypeError,   # Can't convert datatypes             # <<<<<<<<<<<<<<
+ * 
+ *     H5E_CANTDELETE:     KeyError,    # Can't delete message
+ */
+  __pyx_t_2 = PyInt_FromLong(H5E_CANTCONVERT); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_builtin_TypeError) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/_errors.pyx":53
+ *     H5E_CANTCONVERT:    TypeError,   # Can't convert datatypes
+ * 
+ *     H5E_CANTDELETE:     KeyError,    # Can't delete message             # <<<<<<<<<<<<<<
+ * 
+ *     H5E_CANTOPENOBJ:    KeyError,
+ */
+  __pyx_t_2 = PyInt_FromLong(H5E_CANTDELETE); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_builtin_KeyError) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/_errors.pyx":55
+ *     H5E_CANTDELETE:     KeyError,    # Can't delete message
+ * 
+ *     H5E_CANTOPENOBJ:    KeyError,             # <<<<<<<<<<<<<<
+ * 
+ *     H5E_CANTMOVE:       ValueError,  # Can't move a link
+ */
+  __pyx_t_2 = PyInt_FromLong(H5E_CANTOPENOBJ); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_builtin_KeyError) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/_errors.pyx":57
+ *     H5E_CANTOPENOBJ:    KeyError,
+ * 
+ *     H5E_CANTMOVE:       ValueError,  # Can't move a link             # <<<<<<<<<<<<<<
+ *   }
+ * 
+ */
+  __pyx_t_2 = PyInt_FromLong(H5E_CANTMOVE); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_builtin_ValueError) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s___minor_table, ((PyObject *)__pyx_t_1)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
+
+  /* "h5py/_errors.pyx":63
+ * # of the minor error codes.  If a (major, minor) entry appears here,
+ * # it will override any entry in the minor error table.
+ * _exact_table = {             # <<<<<<<<<<<<<<
+ *     (H5E_CACHE, H5E_BADVALUE):      IOError,  # obj create w/o write intent 1.8
+ *     (H5E_RESOURCE, H5E_CANTINIT):   IOError,  # obj create w/o write intent 1.6
+ */
+  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
+
+  /* "h5py/_errors.pyx":64
+ * # it will override any entry in the minor error table.
+ * _exact_table = {
+ *     (H5E_CACHE, H5E_BADVALUE):      IOError,  # obj create w/o write intent 1.8             # <<<<<<<<<<<<<<
+ *     (H5E_RESOURCE, H5E_CANTINIT):   IOError,  # obj create w/o write intent 1.6
+ *     (H5E_INTERNAL, H5E_SYSERRSTR):  IOError,  # e.g. wrong file permissions
+ */
+  __pyx_t_2 = PyInt_FromLong(H5E_CACHE); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = PyInt_FromLong(H5E_BADVALUE); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2);
+  __Pyx_GIVEREF(__pyx_t_2);
+  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_3);
+  __pyx_t_2 = 0;
+  __pyx_t_3 = 0;
+  if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_t_4), __pyx_builtin_IOError) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
+
+  /* "h5py/_errors.pyx":65
+ * _exact_table = {
+ *     (H5E_CACHE, H5E_BADVALUE):      IOError,  # obj create w/o write intent 1.8
+ *     (H5E_RESOURCE, H5E_CANTINIT):   IOError,  # obj create w/o write intent 1.6             # <<<<<<<<<<<<<<
+ *     (H5E_INTERNAL, H5E_SYSERRSTR):  IOError,  # e.g. wrong file permissions
+ *     (H5E_DATATYPE, H5E_CANTINIT):   TypeError,  # No conversion path
+ */
+  __pyx_t_4 = PyInt_FromLong(H5E_RESOURCE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_3 = PyInt_FromLong(H5E_CANTINIT); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_4);
+  __Pyx_GIVEREF(__pyx_t_4);
+  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_3);
+  __pyx_t_4 = 0;
+  __pyx_t_3 = 0;
+  if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_t_2), __pyx_builtin_IOError) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
+
+  /* "h5py/_errors.pyx":66
+ *     (H5E_CACHE, H5E_BADVALUE):      IOError,  # obj create w/o write intent 1.8
+ *     (H5E_RESOURCE, H5E_CANTINIT):   IOError,  # obj create w/o write intent 1.6
+ *     (H5E_INTERNAL, H5E_SYSERRSTR):  IOError,  # e.g. wrong file permissions             # <<<<<<<<<<<<<<
+ *     (H5E_DATATYPE, H5E_CANTINIT):   TypeError,  # No conversion path
+ *     (H5E_DATASET, H5E_CANTINIT):    ValueError,  # bad param for dataset setup
+ */
+  __pyx_t_2 = PyInt_FromLong(H5E_INTERNAL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = PyInt_FromLong(H5E_SYSERRSTR); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2);
+  __Pyx_GIVEREF(__pyx_t_2);
+  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_3);
+  __pyx_t_2 = 0;
+  __pyx_t_3 = 0;
+  if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_t_4), __pyx_builtin_IOError) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
+
+  /* "h5py/_errors.pyx":67
+ *     (H5E_RESOURCE, H5E_CANTINIT):   IOError,  # obj create w/o write intent 1.6
+ *     (H5E_INTERNAL, H5E_SYSERRSTR):  IOError,  # e.g. wrong file permissions
+ *     (H5E_DATATYPE, H5E_CANTINIT):   TypeError,  # No conversion path             # <<<<<<<<<<<<<<
+ *     (H5E_DATASET, H5E_CANTINIT):    ValueError,  # bad param for dataset setup
+ *     (H5E_ARGS, H5E_CANTINIT):       TypeError,  # Illegal operation on object
+ */
+  __pyx_t_4 = PyInt_FromLong(H5E_DATATYPE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_3 = PyInt_FromLong(H5E_CANTINIT); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_4);
+  __Pyx_GIVEREF(__pyx_t_4);
+  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_3);
+  __pyx_t_4 = 0;
+  __pyx_t_3 = 0;
+  if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_t_2), __pyx_builtin_TypeError) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
+
+  /* "h5py/_errors.pyx":68
+ *     (H5E_INTERNAL, H5E_SYSERRSTR):  IOError,  # e.g. wrong file permissions
+ *     (H5E_DATATYPE, H5E_CANTINIT):   TypeError,  # No conversion path
+ *     (H5E_DATASET, H5E_CANTINIT):    ValueError,  # bad param for dataset setup             # <<<<<<<<<<<<<<
+ *     (H5E_ARGS, H5E_CANTINIT):       TypeError,  # Illegal operation on object
+ *     (H5E_SYM, H5E_CANTINIT):        ValueError, # Object already exists/1.8
+ */
+  __pyx_t_2 = PyInt_FromLong(H5E_DATASET); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = PyInt_FromLong(H5E_CANTINIT); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2);
+  __Pyx_GIVEREF(__pyx_t_2);
+  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_3);
+  __pyx_t_2 = 0;
+  __pyx_t_3 = 0;
+  if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_t_4), __pyx_builtin_ValueError) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
+
+  /* "h5py/_errors.pyx":69
+ *     (H5E_DATATYPE, H5E_CANTINIT):   TypeError,  # No conversion path
+ *     (H5E_DATASET, H5E_CANTINIT):    ValueError,  # bad param for dataset setup
+ *     (H5E_ARGS, H5E_CANTINIT):       TypeError,  # Illegal operation on object             # <<<<<<<<<<<<<<
+ *     (H5E_SYM, H5E_CANTINIT):        ValueError, # Object already exists/1.8
+ *     (H5E_ARGS, H5E_BADTYPE):        ValueError, # Invalid location in file
+ */
+  __pyx_t_4 = PyInt_FromLong(H5E_ARGS); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_3 = PyInt_FromLong(H5E_CANTINIT); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_4);
+  __Pyx_GIVEREF(__pyx_t_4);
+  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_3);
+  __pyx_t_4 = 0;
+  __pyx_t_3 = 0;
+  if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_t_2), __pyx_builtin_TypeError) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
+
+  /* "h5py/_errors.pyx":70
+ *     (H5E_DATASET, H5E_CANTINIT):    ValueError,  # bad param for dataset setup
+ *     (H5E_ARGS, H5E_CANTINIT):       TypeError,  # Illegal operation on object
+ *     (H5E_SYM, H5E_CANTINIT):        ValueError, # Object already exists/1.8             # <<<<<<<<<<<<<<
+ *     (H5E_ARGS, H5E_BADTYPE):        ValueError, # Invalid location in file
+ *     (H5E_REFERENCE, H5E_CANTINIT):  ValueError, # Dereferencing invalid ref
+ */
+  __pyx_t_2 = PyInt_FromLong(H5E_SYM); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = PyInt_FromLong(H5E_CANTINIT); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2);
+  __Pyx_GIVEREF(__pyx_t_2);
+  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_3);
+  __pyx_t_2 = 0;
+  __pyx_t_3 = 0;
+  if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_t_4), __pyx_builtin_ValueError) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
+
+  /* "h5py/_errors.pyx":71
+ *     (H5E_ARGS, H5E_CANTINIT):       TypeError,  # Illegal operation on object
+ *     (H5E_SYM, H5E_CANTINIT):        ValueError, # Object already exists/1.8
+ *     (H5E_ARGS, H5E_BADTYPE):        ValueError, # Invalid location in file             # <<<<<<<<<<<<<<
+ *     (H5E_REFERENCE, H5E_CANTINIT):  ValueError, # Dereferencing invalid ref
+ *   }
+ */
+  __pyx_t_4 = PyInt_FromLong(H5E_ARGS); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_3 = PyInt_FromLong(H5E_BADTYPE); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_4);
+  __Pyx_GIVEREF(__pyx_t_4);
+  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_3);
+  __pyx_t_4 = 0;
+  __pyx_t_3 = 0;
+  if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_t_2), __pyx_builtin_ValueError) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
+
+  /* "h5py/_errors.pyx":72
+ *     (H5E_SYM, H5E_CANTINIT):        ValueError, # Object already exists/1.8
+ *     (H5E_ARGS, H5E_BADTYPE):        ValueError, # Invalid location in file
+ *     (H5E_REFERENCE, H5E_CANTINIT):  ValueError, # Dereferencing invalid ref             # <<<<<<<<<<<<<<
+ *   }
+ * 
+ */
+  __pyx_t_2 = PyInt_FromLong(H5E_REFERENCE); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = PyInt_FromLong(H5E_CANTINIT); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2);
+  __Pyx_GIVEREF(__pyx_t_2);
+  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_3);
+  __pyx_t_2 = 0;
+  __pyx_t_3 = 0;
+  if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_t_4), __pyx_builtin_ValueError) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s___exact_table, ((PyObject *)__pyx_t_1)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
+
+  /* "h5py/_errors.pyx":131
+ *     void *stderr
+ * 
+ * def silence_errors():             # <<<<<<<<<<<<<<
+ *     """ Disable HDF5's automatic error printing in this thread """
+ *     if H5Eset_auto(NULL, NULL) < 0:
+ */
+  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_4h5py_7_errors_1silence_errors, NULL, __pyx_n_s_20); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__silence_errors, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "h5py/_errors.pyx":136
+ *         raise RuntimeError("Failed to disable automatic error printing")
+ * 
+ * def unsilence_errors():             # <<<<<<<<<<<<<<
+ *     """ Re-enable HDF5's automatic error printing in this thread """
+ *     if H5Eset_auto(H5Eprint, stderr) < 0:
+ */
+  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_4h5py_7_errors_3unsilence_errors, NULL, __pyx_n_s_20); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__unsilence_errors, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "h5py/_errors.pyx":1
+ * # This file is part of h5py, a Python interface to the HDF5 library.             # <<<<<<<<<<<<<<
+ * #
+ * # http://www.h5py.org
+ */
+  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s____test__, ((PyObject *)__pyx_t_1)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  if (__pyx_m) {
+    __Pyx_AddTraceback("init h5py._errors", __pyx_clineno, __pyx_lineno, __pyx_filename);
+    Py_DECREF(__pyx_m); __pyx_m = 0;
+  } else if (!PyErr_Occurred()) {
+    PyErr_SetString(PyExc_ImportError, "init h5py._errors");
+  }
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  #if PY_MAJOR_VERSION < 3
+  return;
+  #else
+  return __pyx_m;
+  #endif
+}
+
+/* Runtime support code */
+#if CYTHON_REFNANNY
+static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) {
+    PyObject *m = NULL, *p = NULL;
+    void *r = NULL;
+    m = PyImport_ImportModule((char *)modname);
+    if (!m) goto end;
+    p = PyObject_GetAttrString(m, (char *)"RefNannyAPI");
+    if (!p) goto end;
+    r = PyLong_AsVoidPtr(p);
+end:
+    Py_XDECREF(p);
+    Py_XDECREF(m);
+    return (__Pyx_RefNannyAPIStruct *)r;
+}
+#endif /* CYTHON_REFNANNY */
+
+static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name) {
+    PyObject *result;
+    result = PyObject_GetAttr(dict, name);
+    if (!result) {
+        if (dict != __pyx_b) {
+            PyErr_Clear();
+            result = PyObject_GetAttr(__pyx_b, name);
+        }
+        if (!result) {
+            PyErr_SetObject(PyExc_NameError, name);
+        }
+    }
+    return result;
+}
+
+static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb) {
+#if CYTHON_COMPILING_IN_CPYTHON
+    PyObject *tmp_type, *tmp_value, *tmp_tb;
+    PyThreadState *tstate = PyThreadState_GET();
+    tmp_type = tstate->curexc_type;
+    tmp_value = tstate->curexc_value;
+    tmp_tb = tstate->curexc_traceback;
+    tstate->curexc_type = type;
+    tstate->curexc_value = value;
+    tstate->curexc_traceback = tb;
+    Py_XDECREF(tmp_type);
+    Py_XDECREF(tmp_value);
+    Py_XDECREF(tmp_tb);
+#else
+    PyErr_Restore(type, value, tb);
+#endif
+}
+static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb) {
+#if CYTHON_COMPILING_IN_CPYTHON
+    PyThreadState *tstate = PyThreadState_GET();
+    *type = tstate->curexc_type;
+    *value = tstate->curexc_value;
+    *tb = tstate->curexc_traceback;
+    tstate->curexc_type = 0;
+    tstate->curexc_value = 0;
+    tstate->curexc_traceback = 0;
+#else
+    PyErr_Fetch(type, value, tb);
+#endif
+}
+
+#if PY_MAJOR_VERSION < 3
+static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb,
+                        CYTHON_UNUSED PyObject *cause) {
+    Py_XINCREF(type);
+    if (!value || value == Py_None)
+        value = NULL;
+    else
+        Py_INCREF(value);
+    if (!tb || tb == Py_None)
+        tb = NULL;
+    else {
+        Py_INCREF(tb);
+        if (!PyTraceBack_Check(tb)) {
+            PyErr_SetString(PyExc_TypeError,
+                "raise: arg 3 must be a traceback or None");
+            goto raise_error;
+        }
+    }
+    #if PY_VERSION_HEX < 0x02050000
+    if (PyClass_Check(type)) {
+    #else
+    if (PyType_Check(type)) {
+    #endif
+#if CYTHON_COMPILING_IN_PYPY
+        if (!value) {
+            Py_INCREF(Py_None);
+            value = Py_None;
+        }
+#endif
+        PyErr_NormalizeException(&type, &value, &tb);
+    } else {
+        if (value) {
+            PyErr_SetString(PyExc_TypeError,
+                "instance exception may not have a separate value");
+            goto raise_error;
+        }
+        value = type;
+        #if PY_VERSION_HEX < 0x02050000
+            if (PyInstance_Check(type)) {
+                type = (PyObject*) ((PyInstanceObject*)type)->in_class;
+                Py_INCREF(type);
+            }
+            else {
+                type = 0;
+                PyErr_SetString(PyExc_TypeError,
+                    "raise: exception must be an old-style class or instance");
+                goto raise_error;
+            }
+        #else
+            type = (PyObject*) Py_TYPE(type);
+            Py_INCREF(type);
+            if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) {
+                PyErr_SetString(PyExc_TypeError,
+                    "raise: exception class must be a subclass of BaseException");
+                goto raise_error;
+            }
+        #endif
+    }
+    __Pyx_ErrRestore(type, value, tb);
+    return;
+raise_error:
+    Py_XDECREF(value);
+    Py_XDECREF(type);
+    Py_XDECREF(tb);
+    return;
+}
+#else /* Python 3+ */
+static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) {
+    PyObject* owned_instance = NULL;
+    if (tb == Py_None) {
+        tb = 0;
+    } else if (tb && !PyTraceBack_Check(tb)) {
+        PyErr_SetString(PyExc_TypeError,
+            "raise: arg 3 must be a traceback or None");
+        goto bad;
+    }
+    if (value == Py_None)
+        value = 0;
+    if (PyExceptionInstance_Check(type)) {
+        if (value) {
+            PyErr_SetString(PyExc_TypeError,
+                "instance exception may not have a separate value");
+            goto bad;
+        }
+        value = type;
+        type = (PyObject*) Py_TYPE(value);
+    } else if (PyExceptionClass_Check(type)) {
+        PyObject *args;
+        if (!value)
+            args = PyTuple_New(0);
+        else if (PyTuple_Check(value)) {
+            Py_INCREF(value);
+            args = value;
+        }
+        else
+            args = PyTuple_Pack(1, value);
+        if (!args)
+            goto bad;
+        owned_instance = PyEval_CallObject(type, args);
+        Py_DECREF(args);
+        if (!owned_instance)
+            goto bad;
+        value = owned_instance;
+        if (!PyExceptionInstance_Check(value)) {
+            PyErr_Format(PyExc_TypeError,
+                         "calling %R should have returned an instance of "
+                         "BaseException, not %R",
+                         type, Py_TYPE(value));
+            goto bad;
+        }
+    } else {
+        PyErr_SetString(PyExc_TypeError,
+            "raise: exception class must be a subclass of BaseException");
+        goto bad;
+    }
+    if (cause && cause != Py_None) {
+        PyObject *fixed_cause;
+        if (PyExceptionClass_Check(cause)) {
+            fixed_cause = PyObject_CallObject(cause, NULL);
+            if (fixed_cause == NULL)
+                goto bad;
+        }
+        else if (PyExceptionInstance_Check(cause)) {
+            fixed_cause = cause;
+            Py_INCREF(fixed_cause);
+        }
+        else {
+            PyErr_SetString(PyExc_TypeError,
+                            "exception causes must derive from "
+                            "BaseException");
+            goto bad;
+        }
+        PyException_SetCause(value, fixed_cause);
+    }
+    PyErr_SetObject(type, value);
+    if (tb) {
+        PyThreadState *tstate = PyThreadState_GET();
+        PyObject* tmp_tb = tstate->curexc_traceback;
+        if (tb != tmp_tb) {
+            Py_INCREF(tb);
+            tstate->curexc_traceback = tb;
+            Py_XDECREF(tmp_tb);
+        }
+    }
+bad:
+    Py_XDECREF(owned_instance);
+    return;
+}
+#endif
+
+static CYTHON_INLINE PyObject* __Pyx_decode_c_string(
+         const char* cstring, Py_ssize_t start, Py_ssize_t stop,
+         const char* encoding, const char* errors,
+         PyObject* (*decode_func)(const char *s, Py_ssize_t size, const char *errors)) {
+    Py_ssize_t length;
+    if (unlikely((start < 0) | (stop < 0))) {
+        length = strlen(cstring);
+        if (start < 0) {
+            start += length;
+            if (start < 0)
+                start = 0;
+        }
+        if (stop < 0)
+            stop += length;
+    }
+    length = stop - start;
+    if (unlikely(length <= 0))
+        return PyUnicode_FromUnicode(NULL, 0);
+    cstring += start;
+    if (decode_func) {
+        return decode_func(cstring, length, errors);
+    } else {
+        return PyUnicode_Decode(cstring, length, encoding, errors);
+    }
+}
+
+static CYTHON_INLINE unsigned char __Pyx_PyInt_AsUnsignedChar(PyObject* x) {
+    const unsigned char neg_one = (unsigned char)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(unsigned char) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(unsigned char)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to unsigned char" :
+                    "value too large to convert to unsigned char");
+            }
+            return (unsigned char)-1;
+        }
+        return (unsigned char)val;
+    }
+    return (unsigned char)__Pyx_PyInt_AsUnsignedLong(x);
+}
+
+static CYTHON_INLINE unsigned short __Pyx_PyInt_AsUnsignedShort(PyObject* x) {
+    const unsigned short neg_one = (unsigned short)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(unsigned short) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(unsigned short)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to unsigned short" :
+                    "value too large to convert to unsigned short");
+            }
+            return (unsigned short)-1;
+        }
+        return (unsigned short)val;
+    }
+    return (unsigned short)__Pyx_PyInt_AsUnsignedLong(x);
+}
+
+static CYTHON_INLINE unsigned int __Pyx_PyInt_AsUnsignedInt(PyObject* x) {
+    const unsigned int neg_one = (unsigned int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(unsigned int) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(unsigned int)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to unsigned int" :
+                    "value too large to convert to unsigned int");
+            }
+            return (unsigned int)-1;
+        }
+        return (unsigned int)val;
+    }
+    return (unsigned int)__Pyx_PyInt_AsUnsignedLong(x);
+}
+
+static CYTHON_INLINE char __Pyx_PyInt_AsChar(PyObject* x) {
+    const char neg_one = (char)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(char) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(char)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to char" :
+                    "value too large to convert to char");
+            }
+            return (char)-1;
+        }
+        return (char)val;
+    }
+    return (char)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE short __Pyx_PyInt_AsShort(PyObject* x) {
+    const short neg_one = (short)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(short) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(short)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to short" :
+                    "value too large to convert to short");
+            }
+            return (short)-1;
+        }
+        return (short)val;
+    }
+    return (short)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE int __Pyx_PyInt_AsInt(PyObject* x) {
+    const int neg_one = (int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(int) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(int)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to int" :
+                    "value too large to convert to int");
+            }
+            return (int)-1;
+        }
+        return (int)val;
+    }
+    return (int)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE signed char __Pyx_PyInt_AsSignedChar(PyObject* x) {
+    const signed char neg_one = (signed char)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(signed char) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(signed char)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to signed char" :
+                    "value too large to convert to signed char");
+            }
+            return (signed char)-1;
+        }
+        return (signed char)val;
+    }
+    return (signed char)__Pyx_PyInt_AsSignedLong(x);
+}
+
+static CYTHON_INLINE signed short __Pyx_PyInt_AsSignedShort(PyObject* x) {
+    const signed short neg_one = (signed short)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(signed short) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(signed short)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to signed short" :
+                    "value too large to convert to signed short");
+            }
+            return (signed short)-1;
+        }
+        return (signed short)val;
+    }
+    return (signed short)__Pyx_PyInt_AsSignedLong(x);
+}
+
+static CYTHON_INLINE signed int __Pyx_PyInt_AsSignedInt(PyObject* x) {
+    const signed int neg_one = (signed int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(signed int) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(signed int)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to signed int" :
+                    "value too large to convert to signed int");
+            }
+            return (signed int)-1;
+        }
+        return (signed int)val;
+    }
+    return (signed int)__Pyx_PyInt_AsSignedLong(x);
+}
+
+static CYTHON_INLINE int __Pyx_PyInt_AsLongDouble(PyObject* x) {
+    const int neg_one = (int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(int) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(int)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to int" :
+                    "value too large to convert to int");
+            }
+            return (int)-1;
+        }
+        return (int)val;
+    }
+    return (int)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE unsigned long __Pyx_PyInt_AsUnsignedLong(PyObject* x) {
+    const unsigned long neg_one = (unsigned long)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to unsigned long");
+            return (unsigned long)-1;
+        }
+        return (unsigned long)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to unsigned long");
+                return (unsigned long)-1;
+            }
+            return (unsigned long)PyLong_AsUnsignedLong(x);
+        } else {
+            return (unsigned long)PyLong_AsLong(x);
+        }
+    } else {
+        unsigned long val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (unsigned long)-1;
+        val = __Pyx_PyInt_AsUnsignedLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE unsigned PY_LONG_LONG __Pyx_PyInt_AsUnsignedLongLong(PyObject* x) {
+    const unsigned PY_LONG_LONG neg_one = (unsigned PY_LONG_LONG)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to unsigned PY_LONG_LONG");
+            return (unsigned PY_LONG_LONG)-1;
+        }
+        return (unsigned PY_LONG_LONG)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to unsigned PY_LONG_LONG");
+                return (unsigned PY_LONG_LONG)-1;
+            }
+            return (unsigned PY_LONG_LONG)PyLong_AsUnsignedLongLong(x);
+        } else {
+            return (unsigned PY_LONG_LONG)PyLong_AsLongLong(x);
+        }
+    } else {
+        unsigned PY_LONG_LONG val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (unsigned PY_LONG_LONG)-1;
+        val = __Pyx_PyInt_AsUnsignedLongLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE long __Pyx_PyInt_AsLong(PyObject* x) {
+    const long neg_one = (long)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to long");
+            return (long)-1;
+        }
+        return (long)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to long");
+                return (long)-1;
+            }
+            return (long)PyLong_AsUnsignedLong(x);
+        } else {
+            return (long)PyLong_AsLong(x);
+        }
+    } else {
+        long val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (long)-1;
+        val = __Pyx_PyInt_AsLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE PY_LONG_LONG __Pyx_PyInt_AsLongLong(PyObject* x) {
+    const PY_LONG_LONG neg_one = (PY_LONG_LONG)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to PY_LONG_LONG");
+            return (PY_LONG_LONG)-1;
+        }
+        return (PY_LONG_LONG)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to PY_LONG_LONG");
+                return (PY_LONG_LONG)-1;
+            }
+            return (PY_LONG_LONG)PyLong_AsUnsignedLongLong(x);
+        } else {
+            return (PY_LONG_LONG)PyLong_AsLongLong(x);
+        }
+    } else {
+        PY_LONG_LONG val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (PY_LONG_LONG)-1;
+        val = __Pyx_PyInt_AsLongLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE signed long __Pyx_PyInt_AsSignedLong(PyObject* x) {
+    const signed long neg_one = (signed long)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to signed long");
+            return (signed long)-1;
+        }
+        return (signed long)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to signed long");
+                return (signed long)-1;
+            }
+            return (signed long)PyLong_AsUnsignedLong(x);
+        } else {
+            return (signed long)PyLong_AsLong(x);
+        }
+    } else {
+        signed long val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (signed long)-1;
+        val = __Pyx_PyInt_AsSignedLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE signed PY_LONG_LONG __Pyx_PyInt_AsSignedLongLong(PyObject* x) {
+    const signed PY_LONG_LONG neg_one = (signed PY_LONG_LONG)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to signed PY_LONG_LONG");
+            return (signed PY_LONG_LONG)-1;
+        }
+        return (signed PY_LONG_LONG)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to signed PY_LONG_LONG");
+                return (signed PY_LONG_LONG)-1;
+            }
+            return (signed PY_LONG_LONG)PyLong_AsUnsignedLongLong(x);
+        } else {
+            return (signed PY_LONG_LONG)PyLong_AsLongLong(x);
+        }
+    } else {
+        signed PY_LONG_LONG val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (signed PY_LONG_LONG)-1;
+        val = __Pyx_PyInt_AsSignedLongLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static void __Pyx_WriteUnraisable(const char *name, CYTHON_UNUSED int clineno,
+                                  CYTHON_UNUSED int lineno, CYTHON_UNUSED const char *filename) {
+    PyObject *old_exc, *old_val, *old_tb;
+    PyObject *ctx;
+    __Pyx_ErrFetch(&old_exc, &old_val, &old_tb);
+    #if PY_MAJOR_VERSION < 3
+    ctx = PyString_FromString(name);
+    #else
+    ctx = PyUnicode_FromString(name);
+    #endif
+    __Pyx_ErrRestore(old_exc, old_val, old_tb);
+    if (!ctx) {
+        PyErr_WriteUnraisable(Py_None);
+    } else {
+        PyErr_WriteUnraisable(ctx);
+        Py_DECREF(ctx);
+    }
+}
+
+static int __Pyx_check_binary_version(void) {
+    char ctversion[4], rtversion[4];
+    PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION);
+    PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion());
+    if (ctversion[0] != rtversion[0] || ctversion[2] != rtversion[2]) {
+        char message[200];
+        PyOS_snprintf(message, sizeof(message),
+                      "compiletime version %s of module '%.100s' "
+                      "does not match runtime version %s",
+                      ctversion, __Pyx_MODULE_NAME, rtversion);
+        #if PY_VERSION_HEX < 0x02050000
+        return PyErr_Warn(NULL, message);
+        #else
+        return PyErr_WarnEx(NULL, message, 1);
+        #endif
+    }
+    return 0;
+}
+
+static int __Pyx_ExportFunction(const char *name, void (*f)(void), const char *sig) {
+    PyObject *d = 0;
+    PyObject *cobj = 0;
+    union {
+        void (*fp)(void);
+        void *p;
+    } tmp;
+    d = PyObject_GetAttrString(__pyx_m, (char *)"__pyx_capi__");
+    if (!d) {
+        PyErr_Clear();
+        d = PyDict_New();
+        if (!d)
+            goto bad;
+        Py_INCREF(d);
+        if (PyModule_AddObject(__pyx_m, (char *)"__pyx_capi__", d) < 0)
+            goto bad;
+    }
+    tmp.fp = f;
+#if PY_VERSION_HEX >= 0x02070000 && !(PY_MAJOR_VERSION==3&&PY_MINOR_VERSION==0)
+    cobj = PyCapsule_New(tmp.p, sig, 0);
+#else
+    cobj = PyCObject_FromVoidPtrAndDesc(tmp.p, (void *)sig, 0);
+#endif
+    if (!cobj)
+        goto bad;
+    if (PyDict_SetItemString(d, name, cobj) < 0)
+        goto bad;
+    Py_DECREF(cobj);
+    Py_DECREF(d);
+    return 0;
+bad:
+    Py_XDECREF(cobj);
+    Py_XDECREF(d);
+    return -1;
+}
+
+static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) {
+    int start = 0, mid = 0, end = count - 1;
+    if (end >= 0 && code_line > entries[end].code_line) {
+        return count;
+    }
+    while (start < end) {
+        mid = (start + end) / 2;
+        if (code_line < entries[mid].code_line) {
+            end = mid;
+        } else if (code_line > entries[mid].code_line) {
+             start = mid + 1;
+        } else {
+            return mid;
+        }
+    }
+    if (code_line <= entries[mid].code_line) {
+        return mid;
+    } else {
+        return mid + 1;
+    }
+}
+static PyCodeObject *__pyx_find_code_object(int code_line) {
+    PyCodeObject* code_object;
+    int pos;
+    if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) {
+        return NULL;
+    }
+    pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
+    if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) {
+        return NULL;
+    }
+    code_object = __pyx_code_cache.entries[pos].code_object;
+    Py_INCREF(code_object);
+    return code_object;
+}
+static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) {
+    int pos, i;
+    __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries;
+    if (unlikely(!code_line)) {
+        return;
+    }
+    if (unlikely(!entries)) {
+        entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry));
+        if (likely(entries)) {
+            __pyx_code_cache.entries = entries;
+            __pyx_code_cache.max_count = 64;
+            __pyx_code_cache.count = 1;
+            entries[0].code_line = code_line;
+            entries[0].code_object = code_object;
+            Py_INCREF(code_object);
+        }
+        return;
+    }
+    pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
+    if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) {
+        PyCodeObject* tmp = entries[pos].code_object;
+        entries[pos].code_object = code_object;
+        Py_DECREF(tmp);
+        return;
+    }
+    if (__pyx_code_cache.count == __pyx_code_cache.max_count) {
+        int new_max = __pyx_code_cache.max_count + 64;
+        entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc(
+            __pyx_code_cache.entries, new_max*sizeof(__Pyx_CodeObjectCacheEntry));
+        if (unlikely(!entries)) {
+            return;
+        }
+        __pyx_code_cache.entries = entries;
+        __pyx_code_cache.max_count = new_max;
+    }
+    for (i=__pyx_code_cache.count; i>pos; i--) {
+        entries[i] = entries[i-1];
+    }
+    entries[pos].code_line = code_line;
+    entries[pos].code_object = code_object;
+    __pyx_code_cache.count++;
+    Py_INCREF(code_object);
+}
+
+#include "compile.h"
+#include "frameobject.h"
+#include "traceback.h"
+static PyCodeObject* __Pyx_CreateCodeObjectForTraceback(
+            const char *funcname, int c_line,
+            int py_line, const char *filename) {
+    PyCodeObject *py_code = 0;
+    PyObject *py_srcfile = 0;
+    PyObject *py_funcname = 0;
+    #if PY_MAJOR_VERSION < 3
+    py_srcfile = PyString_FromString(filename);
+    #else
+    py_srcfile = PyUnicode_FromString(filename);
+    #endif
+    if (!py_srcfile) goto bad;
+    if (c_line) {
+        #if PY_MAJOR_VERSION < 3
+        py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
+        #else
+        py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
+        #endif
+    }
+    else {
+        #if PY_MAJOR_VERSION < 3
+        py_funcname = PyString_FromString(funcname);
+        #else
+        py_funcname = PyUnicode_FromString(funcname);
+        #endif
+    }
+    if (!py_funcname) goto bad;
+    py_code = __Pyx_PyCode_New(
+        0,            /*int argcount,*/
+        0,            /*int kwonlyargcount,*/
+        0,            /*int nlocals,*/
+        0,            /*int stacksize,*/
+        0,            /*int flags,*/
+        __pyx_empty_bytes, /*PyObject *code,*/
+        __pyx_empty_tuple, /*PyObject *consts,*/
+        __pyx_empty_tuple, /*PyObject *names,*/
+        __pyx_empty_tuple, /*PyObject *varnames,*/
+        __pyx_empty_tuple, /*PyObject *freevars,*/
+        __pyx_empty_tuple, /*PyObject *cellvars,*/
+        py_srcfile,   /*PyObject *filename,*/
+        py_funcname,  /*PyObject *name,*/
+        py_line,      /*int firstlineno,*/
+        __pyx_empty_bytes  /*PyObject *lnotab*/
+    );
+    Py_DECREF(py_srcfile);
+    Py_DECREF(py_funcname);
+    return py_code;
+bad:
+    Py_XDECREF(py_srcfile);
+    Py_XDECREF(py_funcname);
+    return NULL;
+}
+static void __Pyx_AddTraceback(const char *funcname, int c_line,
+                               int py_line, const char *filename) {
+    PyCodeObject *py_code = 0;
+    PyObject *py_globals = 0;
+    PyFrameObject *py_frame = 0;
+    py_code = __pyx_find_code_object(c_line ? c_line : py_line);
+    if (!py_code) {
+        py_code = __Pyx_CreateCodeObjectForTraceback(
+            funcname, c_line, py_line, filename);
+        if (!py_code) goto bad;
+        __pyx_insert_code_object(c_line ? c_line : py_line, py_code);
+    }
+    py_globals = PyModule_GetDict(__pyx_m);
+    if (!py_globals) goto bad;
+    py_frame = PyFrame_New(
+        PyThreadState_GET(), /*PyThreadState *tstate,*/
+        py_code,             /*PyCodeObject *code,*/
+        py_globals,          /*PyObject *globals,*/
+        0                    /*PyObject *locals*/
+    );
+    if (!py_frame) goto bad;
+    py_frame->f_lineno = py_line;
+    PyTraceBack_Here(py_frame);
+bad:
+    Py_XDECREF(py_code);
+    Py_XDECREF(py_frame);
+}
+
+static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
+    while (t->p) {
+        #if PY_MAJOR_VERSION < 3
+        if (t->is_unicode) {
+            *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL);
+        } else if (t->intern) {
+            *t->p = PyString_InternFromString(t->s);
+        } else {
+            *t->p = PyString_FromStringAndSize(t->s, t->n - 1);
+        }
+        #else  /* Python 3+ has unicode identifiers */
+        if (t->is_unicode | t->is_str) {
+            if (t->intern) {
+                *t->p = PyUnicode_InternFromString(t->s);
+            } else if (t->encoding) {
+                *t->p = PyUnicode_Decode(t->s, t->n - 1, t->encoding, NULL);
+            } else {
+                *t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1);
+            }
+        } else {
+            *t->p = PyBytes_FromStringAndSize(t->s, t->n - 1);
+        }
+        #endif
+        if (!*t->p)
+            return -1;
+        ++t;
+    }
+    return 0;
+}
+
+static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) {
+   int is_true = x == Py_True;
+   if (is_true | (x == Py_False) | (x == Py_None)) return is_true;
+   else return PyObject_IsTrue(x);
+}
+static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x) {
+  PyNumberMethods *m;
+  const char *name = NULL;
+  PyObject *res = NULL;
+#if PY_VERSION_HEX < 0x03000000
+  if (PyInt_Check(x) || PyLong_Check(x))
+#else
+  if (PyLong_Check(x))
+#endif
+    return Py_INCREF(x), x;
+  m = Py_TYPE(x)->tp_as_number;
+#if PY_VERSION_HEX < 0x03000000
+  if (m && m->nb_int) {
+    name = "int";
+    res = PyNumber_Int(x);
+  }
+  else if (m && m->nb_long) {
+    name = "long";
+    res = PyNumber_Long(x);
+  }
+#else
+  if (m && m->nb_int) {
+    name = "int";
+    res = PyNumber_Long(x);
+  }
+#endif
+  if (res) {
+#if PY_VERSION_HEX < 0x03000000
+    if (!PyInt_Check(res) && !PyLong_Check(res)) {
+#else
+    if (!PyLong_Check(res)) {
+#endif
+      PyErr_Format(PyExc_TypeError,
+                   "__%s__ returned non-%s (type %.200s)",
+                   name, name, Py_TYPE(res)->tp_name);
+      Py_DECREF(res);
+      return NULL;
+    }
+  }
+  else if (!PyErr_Occurred()) {
+    PyErr_SetString(PyExc_TypeError,
+                    "an integer is required");
+  }
+  return res;
+}
+static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
+  Py_ssize_t ival;
+  PyObject* x = PyNumber_Index(b);
+  if (!x) return -1;
+  ival = PyInt_AsSsize_t(x);
+  Py_DECREF(x);
+  return ival;
+}
+static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) {
+#if PY_VERSION_HEX < 0x02050000
+   if (ival <= LONG_MAX)
+       return PyInt_FromLong((long)ival);
+   else {
+       unsigned char *bytes = (unsigned char *) &ival;
+       int one = 1; int little = (int)*(unsigned char*)&one;
+       return _PyLong_FromByteArray(bytes, sizeof(size_t), little, 0);
+   }
+#else
+   return PyInt_FromSize_t(ival);
+#endif
+}
+static CYTHON_INLINE size_t __Pyx_PyInt_AsSize_t(PyObject* x) {
+   unsigned PY_LONG_LONG val = __Pyx_PyInt_AsUnsignedLongLong(x);
+   if (unlikely(val == (unsigned PY_LONG_LONG)-1 && PyErr_Occurred())) {
+       return (size_t)-1;
+   } else if (unlikely(val != (unsigned PY_LONG_LONG)(size_t)val)) {
+       PyErr_SetString(PyExc_OverflowError,
+                       "value too large to convert to size_t");
+       return (size_t)-1;
+   }
+   return (size_t)val;
+}
+
+
+#endif /* Py_PYTHON_H */
diff --git a/h5py/_errors.pxd b/h5py/_errors.pxd
new file mode 100644
index 0000000..e4d8732
--- /dev/null
+++ b/h5py/_errors.pxd
@@ -0,0 +1,238 @@
+# This file is part of h5py, a Python interface to the HDF5 library.
+#
+# http://www.h5py.org
+#
+# Copyright 2008-2013 Andrew Collette and contributors
+#
+# License:  Standard 3-clause BSD; see "license.txt" for full license terms
+#           and contributor agreement.
+
+from api_types_hdf5 cimport *
+
+# Auto-set exception.  Returns 1 if exception set, 0 if no HDF5 error found.
+cdef int set_exception() except -1
+
+cdef extern from "hdf5.h":                          
+
+  ctypedef enum H5E_major_t:
+    H5E_NONE_MAJOR       = 0,   # special zero, no error                     
+    H5E_ARGS,                   # invalid arguments to routine               
+    H5E_RESOURCE,               # resource unavailable                       
+    H5E_INTERNAL,               # Internal error (too specific to document)
+    H5E_FILE,                   # file Accessability                         
+    H5E_IO,                     # Low-level I/O                              
+    H5E_FUNC,                   # function Entry/Exit                        
+    H5E_ATOM,                   # object Atom                                
+    H5E_CACHE,                  # object Cache                               
+    H5E_BTREE,                  # B-Tree Node                                
+    H5E_SYM,                    # symbol Table                               
+    H5E_HEAP,                   # Heap                                       
+    H5E_OHDR,                   # object Header                              
+    H5E_DATATYPE,               # Datatype                                   
+    H5E_DATASPACE,              # Dataspace                                  
+    H5E_DATASET,                # Dataset                                    
+    H5E_STORAGE,                # data storage                               
+    H5E_PLIST,                  # Property lists                             
+    H5E_ATTR,                   # Attribute                                  
+    H5E_PLINE,                  # Data filters                               
+    H5E_EFL,                    # External file list                         
+    H5E_REFERENCE,              # References                                 
+    H5E_VFL,                    # Virtual File Layer                 
+#   H5E_TBBT,                   # Threaded, Balanced, Binary Trees (not in 1.8)
+    H5E_TST,                    # Ternary Search Trees                       
+    H5E_RS,                     # Reference Counted Strings                  
+    H5E_ERROR,                  # Error API                                  
+    H5E_SLIST                   # Skip Lists     
+
+  ctypedef enum H5E_minor_t:
+
+    # Generic low-level file I/O errors 
+    H5E_SEEKERROR      # Seek failed 
+    H5E_READERROR      # Read failed  
+    H5E_WRITEERROR     # Write failed  
+    H5E_CLOSEERROR     # Close failed 
+    H5E_OVERFLOW       # Address overflowed 
+    H5E_FCNTL          # File control (fcntl) failed
+
+    # Resource errors 
+    H5E_NOSPACE        # No space available for allocation 
+    H5E_CANTALLOC      # Can't allocate space 
+    H5E_CANTCOPY       # Unable to copy object 
+    H5E_CANTFREE       # Unable to free object 
+    H5E_ALREADYEXISTS  # Object already exists 
+    H5E_CANTLOCK       # Unable to lock object 
+    H5E_CANTUNLOCK     # Unable to unlock object 
+    H5E_CANTGC         # Unable to garbage collect 
+    H5E_CANTGETSIZE    # Unable to compute size 
+    H5E_OBJOPEN        # Object is already open 
+                       
+    # Heap errors      
+    H5E_CANTRESTORE    # Can't restore condition 
+    H5E_CANTCOMPUTE    # Can't compute value 
+    H5E_CANTEXTEND     # Can't extend heap's space 
+    H5E_CANTATTACH     # Can't attach object 
+    H5E_CANTUPDATE     # Can't update object 
+    H5E_CANTOPERATE    # Can't operate on object 
+
+    # Function entry/exit interface errors 
+    H5E_CANTINIT       # Unable to initialize object 
+    H5E_ALREADYINIT    # Object already initialized 
+    H5E_CANTRELEASE    # Unable to release object 
+                       
+    # Property list errors 
+    H5E_CANTGET        # Can't get value 
+    H5E_CANTSET        # Can't set value 
+    H5E_DUPCLASS       # Duplicate class name in parent class 
+
+    # Free space errors 
+    H5E_CANTMERGE      # Can't merge objects 
+    H5E_CANTREVIVE     # Can't revive object 
+    H5E_CANTSHRINK     # Can't shrink container 
+
+    # Object header related errors 
+    H5E_LINKCOUNT      # Bad object header link 
+    H5E_VERSION        # Wrong version number 
+    H5E_ALIGNMENT      # Alignment error 
+    H5E_BADMESG        # Unrecognized message 
+    H5E_CANTDELETE     # Can't delete message 
+    H5E_BADITER        # Iteration failed 
+    H5E_CANTPACK       # Can't pack messages 
+    H5E_CANTRESET      # Can't reset object count 
+                        
+    # System level errors 
+    H5E_SYSERRSTR      # System error message 
+
+    # I/O pipeline errors 
+    H5E_NOFILTER       # Requested filter is not available 
+    H5E_CALLBACK       # Callback failed 
+    H5E_CANAPPLY       # Error from filter 'can apply' callback 
+    H5E_SETLOCAL       # Error from filter 'set local' callback 
+    H5E_NOENCODER      # Filter present but encoding disabled 
+    H5E_CANTFILTER     # Filter operation failed 
+
+    # Group related errors 
+    H5E_CANTOPENOBJ    # Can't open object 
+    H5E_CANTCLOSEOBJ   # Can't close object 
+    H5E_COMPLEN        # Name component is too long 
+    H5E_PATH           # Problem with path to object 
+
+    # No error 
+    H5E_NONE_MINOR     # No error 
+
+    # File accessability errors 
+    H5E_FILEEXISTS     # File already exists 
+    H5E_FILEOPEN       # File already open 
+    H5E_CANTCREATE     # Unable to create file
+    H5E_CANTOPENFILE   # Unable to open file 
+    H5E_CANTCLOSEFILE  # Unable to close file 
+    H5E_NOTHDF5        # Not an HDF5 file 
+    H5E_BADFILE        # Bad file ID accessed 
+    H5E_TRUNCATED      # File has been truncated
+    H5E_MOUNT          # File mount error 
+
+    # Object atom related errors 
+    H5E_BADATOM        # Unable to find atom information (already closed?) 
+    H5E_BADGROUP       # Unable to find ID group information 
+    H5E_CANTREGISTER   # Unable to register new atom 
+    H5E_CANTINC        # Unable to increment reference count 
+    H5E_CANTDEC        # Unable to decrement reference count 
+    H5E_NOIDS          # Out of IDs for group 
+
+    # Cache related errors 
+    H5E_CANTFLUSH      # Unable to flush data from cache 
+    H5E_CANTSERIALIZE  # Unable to serialize data from cache 
+    H5E_CANTLOAD       # Unable to load metadata into cache 
+    H5E_PROTECT        # Protected metadata error 
+    H5E_NOTCACHED      # Metadata not currently cached 
+    H5E_SYSTEM         # Internal error detected 
+    H5E_CANTINS        # Unable to insert metadata into cache 
+    H5E_CANTRENAME     # Unable to rename metadata 
+    H5E_CANTPROTECT    # Unable to protect metadata 
+    H5E_CANTUNPROTECT  # Unable to unprotect metadata 
+    H5E_CANTPIN        # Unable to pin cache entry 
+    H5E_CANTUNPIN      # Unable to un-pin cache entry 
+    H5E_CANTMARKDIRTY  # Unable to mark a pinned entry as dirty 
+    H5E_CANTDIRTY      # Unable to mark metadata as dirty 
+    H5E_CANTEXPUNGE    # Unable to expunge a metadata cache entry 
+    H5E_CANTRESIZE     # Unable to resize a metadata cache entry 
+
+    # Link related errors 
+    H5E_TRAVERSE       # Link traversal failure 
+    H5E_NLINKS         # Too many soft links in path
+    H5E_NOTREGISTERED  # Link class not registered 
+    H5E_CANTMOVE       # Move callback returned error
+    H5E_CANTSORT       # Can't sort objects 
+
+    # Parallel MPI errors 
+    H5E_MPI           # Some MPI function failed
+    H5E_MPIERRSTR     # MPI Error String 
+    H5E_CANTRECV      # Can't receive data 
+
+    # Dataspace errors 
+    H5E_CANTCLIP      # Can't clip hyperslab region 
+    H5E_CANTCOUNT     # Can't count elements 
+    H5E_CANTSELECT    # Can't select hyperslab 
+    H5E_CANTNEXT      # Can't move to next iterator location 
+    H5E_BADSELECT     # Invalid selection 
+    H5E_CANTCOMPARE   # Can't compare objects 
+
+    # Argument errors 
+    H5E_UNINITIALIZED  # Information is uinitialized 
+    H5E_UNSUPPORTED    # Feature is unsupported 
+    H5E_BADTYPE        # Inappropriate type 
+    H5E_BADRANGE       # Out of range 
+    H5E_BADVALUE       # Bad value 
+
+    # B-tree related errors 
+    H5E_NOTFOUND            # Object not found 
+    H5E_EXISTS              # Object already exists 
+    H5E_CANTENCODE          # Unable to encode value 
+    H5E_CANTDECODE          # Unable to decode value 
+    H5E_CANTSPLIT           # Unable to split node 
+    H5E_CANTREDISTRIBUTE    # Unable to redistribute records 
+    H5E_CANTSWAP            # Unable to swap records 
+    H5E_CANTINSERT          # Unable to insert object 
+    H5E_CANTLIST            # Unable to list node 
+    H5E_CANTMODIFY          # Unable to modify record 
+    H5E_CANTREMOVE          # Unable to remove object 
+
+    # Datatype conversion errors 
+    H5E_CANTCONVERT         # Can't convert datatypes 
+    H5E_BADSIZE             # Bad size for object 
+                        
+  cdef enum H5E_direction_t:
+    H5E_WALK_UPWARD    = 0      # begin deep, end at API function    
+    H5E_WALK_DOWNWARD = 1       # begin at API function, end deep    
+
+  ctypedef struct H5E_error_t:
+    H5E_major_t     maj_num     #  major error number             
+    H5E_minor_t     min_num     #  minor error number             
+    char    *func_name          #  function in which error occurred   
+    char    *file_name          #  file in which error occurred       
+    unsigned    line            #  line in file where error occurs    
+    char    *desc               #  optional supplied description      
+
+  char      *H5Eget_major(H5E_major_t n)
+  char      *H5Eget_minor(H5E_minor_t n)
+  herr_t    H5Eclear() except *
+
+  ctypedef herr_t (*H5E_auto_t)(void *client_data)
+  herr_t    H5Eset_auto(H5E_auto_t func, void *client_data)
+  herr_t    H5Eget_auto(H5E_auto_t *func, void** client_data)
+
+  herr_t    H5Eprint(void *stream)
+
+  ctypedef herr_t (*H5E_walk_t)(int n, H5E_error_t *err_desc, void* client_data)  
+  herr_t    H5Ewalk(H5E_direction_t direction, H5E_walk_t func, void* client_data)
+
+# --- Functions for managing the HDF5 error callback mechanism ---
+
+ctypedef struct err_cookie:
+    # Defines the error handler state (callback and callback data)
+    H5E_auto_t func
+    void *data
+
+# Set (via H5Eset_auto) the HDF5 error handler for this thread.  Returns
+# the old (presently installed) handler.
+cdef err_cookie set_error_handler(err_cookie handler)
+    
diff --git a/h5py/_errors.pyx b/h5py/_errors.pyx
new file mode 100644
index 0000000..14fc073
--- /dev/null
+++ b/h5py/_errors.pyx
@@ -0,0 +1,175 @@
+# This file is part of h5py, a Python interface to the HDF5 library.
+#
+# http://www.h5py.org
+#
+# Copyright 2008-2013 Andrew Collette and contributors
+#
+# License:  Standard 3-clause BSD; see "license.txt" for full license terms
+#           and contributor agreement.
+
+# Python-style minor error classes.  If the minor error code matches an entry
+# in this dict, the generated exception will be used.
+_minor_table = {
+    H5E_SEEKERROR:      IOError,    # Seek failed 
+    H5E_READERROR:      IOError,    # Read failed  
+    H5E_WRITEERROR:     IOError,    # Write failed  
+    H5E_CLOSEERROR:     IOError,    # Close failed 
+    H5E_OVERFLOW:       IOError,    # Address overflowed 
+    H5E_FCNTL:          IOError,    # File control (fcntl) failed
+
+    H5E_FILEEXISTS:     IOError,    # File already exists 
+    H5E_FILEOPEN:       IOError,    # File already open 
+    H5E_CANTCREATE:     IOError,    # Unable to create file
+    H5E_CANTOPENFILE:   IOError,    # Unable to open file 
+    H5E_CANTCLOSEFILE:  IOError,    # Unable to close file 
+    H5E_NOTHDF5:        IOError,    # Not an HDF5 file 
+    H5E_BADFILE:        ValueError, # Bad file ID accessed 
+    H5E_TRUNCATED:      IOError,    # File has been truncated
+    H5E_MOUNT:          IOError,    # File mount error 
+
+    H5E_NOFILTER:       IOError,    # Requested filter is not available 
+    H5E_CALLBACK:       IOError,    # Callback failed 
+    H5E_CANAPPLY:       IOError,    # Error from filter 'can apply' callback 
+    H5E_SETLOCAL:       IOError,    # Error from filter 'set local' callback 
+    H5E_NOENCODER:      IOError,    # Filter present but encoding disabled 
+
+    H5E_BADATOM:        ValueError,  # Unable to find atom information (already closed?) 
+    H5E_BADGROUP:       ValueError,  # Unable to find ID group information 
+    H5E_BADSELECT:      ValueError,  # Invalid selection (hyperslabs)
+    H5E_UNINITIALIZED:  ValueError,  # Information is uinitialized 
+    H5E_UNSUPPORTED:    NotImplementedError,    # Feature is unsupported 
+
+    H5E_NOTFOUND:       KeyError,    # Object not found 
+    H5E_CANTINSERT:     ValueError,   # Unable to insert object 
+
+    H5E_BADTYPE:        TypeError,   # Inappropriate type 
+    H5E_BADRANGE:       ValueError,  # Out of range 
+    H5E_BADVALUE:       ValueError,  # Bad value
+
+    H5E_EXISTS:         ValueError,  # Object already exists 
+    H5E_ALREADYEXISTS:  ValueError,  # Object already exists, part II
+    H5E_CANTCONVERT:    TypeError,   # Can't convert datatypes 
+
+    H5E_CANTDELETE:     KeyError,    # Can't delete message
+
+    H5E_CANTOPENOBJ:    KeyError,
+
+    H5E_CANTMOVE:       ValueError,  # Can't move a link
+  }
+
+# "Fudge" table to accomodate annoying inconsistencies in HDF5's use 
+# of the minor error codes.  If a (major, minor) entry appears here,
+# it will override any entry in the minor error table.
+_exact_table = {
+    (H5E_CACHE, H5E_BADVALUE):      IOError,  # obj create w/o write intent 1.8
+    (H5E_RESOURCE, H5E_CANTINIT):   IOError,  # obj create w/o write intent 1.6
+    (H5E_INTERNAL, H5E_SYSERRSTR):  IOError,  # e.g. wrong file permissions
+    (H5E_DATATYPE, H5E_CANTINIT):   TypeError,  # No conversion path
+    (H5E_DATASET, H5E_CANTINIT):    ValueError,  # bad param for dataset setup
+    (H5E_ARGS, H5E_CANTINIT):       TypeError,  # Illegal operation on object
+    (H5E_SYM, H5E_CANTINIT):        ValueError, # Object already exists/1.8
+    (H5E_ARGS, H5E_BADTYPE):        ValueError, # Invalid location in file
+    (H5E_REFERENCE, H5E_CANTINIT):  ValueError, # Dereferencing invalid ref
+  }
+
+cdef struct err_data_t:
+    H5E_error_t err
+    int n
+
+cdef herr_t walk_cb(int n, H5E_error_t *desc, void *e):
+
+    cdef err_data_t *ee = <err_data_t*>e
+
+    ee[0].err.maj_num = desc[0].maj_num
+    ee[0].err.min_num = desc[0].min_num
+    ee[0].err.desc = desc[0].desc
+    ee[0].n = n
+
+cdef int set_exception() except -1:
+
+    cdef err_data_t err
+    cdef char *mj_desc = NULL
+    cdef char *mn_desc = NULL
+    cdef char *desc = NULL
+
+    err.n = -1
+
+    if H5Ewalk(H5E_WALK_UPWARD, walk_cb, &err) < 0:
+        raise RuntimeError("Failed to walk error stack")
+
+    if err.n < 0:   # No HDF5 exception information found
+        return 0
+
+    eclass = _minor_table.get(err.err.min_num, RuntimeError)
+    eclass = _exact_table.get((err.err.maj_num, err.err.min_num), eclass)
+
+    desc = err.err.desc
+    if desc is NULL:
+        raise RuntimeError("Failed to extract detailed error description")
+
+    try:
+        mj_desc = H5Eget_major(err.err.maj_num)
+        mn_desc = H5Eget_minor(err.err.min_num)
+        if mj_desc == NULL or mn_desc == NULL:
+            raise RuntimeError("Failed to obtain error code description")
+
+        msg = ("%s (%s: %s)" % (desc.decode('utf-8'), 
+                                mj_desc.decode('utf-8'), 
+                                mn_desc.decode('utf-8'))  ).encode('utf-8')
+    finally:
+        free(mj_desc)
+        free(mn_desc)
+        # HDF5 forbids freeing "desc"
+
+    PyErr_SetString(eclass, msg)
+
+    return 1
+
+cdef extern from "stdio.h":
+    void *stderr
+
+def silence_errors():
+    """ Disable HDF5's automatic error printing in this thread """
+    if H5Eset_auto(NULL, NULL) < 0:
+        raise RuntimeError("Failed to disable automatic error printing")
+
+def unsilence_errors():
+    """ Re-enable HDF5's automatic error printing in this thread """
+    if H5Eset_auto(H5Eprint, stderr) < 0:
+        raise RuntimeError("Failed to enable automatic error printing")
+
+cdef err_cookie set_error_handler(err_cookie handler):
+    # Note: exceptions here will be printed instead of raised.
+
+    cdef err_cookie old_handler
+
+    if H5Eget_auto(&old_handler.func, &old_handler.data) < 0:
+        raise RuntimeError("Failed to retrieve old handler")
+
+    if H5Eset_auto(handler.func, handler.data) < 0:
+        raise RuntimeError("Failed to install new handler")
+
+    return old_handler
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/h5py/_hdf5.pxd b/h5py/_hdf5.pxd
new file mode 100644
index 0000000..aa2cfe0
--- /dev/null
+++ b/h5py/_hdf5.pxd
@@ -0,0 +1,339 @@
+include "config.pxi"
+from api_types_hdf5 cimport *
+from api_types_ext cimport *
+
+cdef extern from "hdf5.h":
+  herr_t H5open() except *
+  herr_t H5close() except *
+  herr_t H5get_libversion(unsigned *majnum, unsigned *minnum, unsigned *relnum) except *
+  hid_t H5Dcreate2(hid_t loc_id, char *name, hid_t type_id, hid_t space_id, hid_t lcpl_id, hid_t dcpl_id, hid_t dapl_id) except *
+  hid_t H5Dcreate_anon(hid_t file_id, hid_t type_id, hid_t space_id, hid_t plist_id, hid_t dapl_id) except *
+  hid_t H5Dopen(hid_t file_id, char *name) except *
+  herr_t H5Dclose(hid_t dset_id) except *
+  hid_t H5Dget_space(hid_t dset_id) except *
+  herr_t H5Dget_space_status(hid_t dset_id, H5D_space_status_t *status) except *
+  hid_t H5Dget_type(hid_t dset_id) except *
+  hid_t H5Dget_create_plist(hid_t dataset_id) except *
+  haddr_t H5Dget_offset(hid_t dset_id) except *
+  hsize_t H5Dget_storage_size(hid_t dset_id) except *
+  herr_t H5Dread(hid_t dset_id, hid_t mem_type_id, hid_t mem_space_id, hid_t file_space_id, hid_t plist_id, void *buf) except *
+  herr_t H5Dwrite(hid_t dset_id, hid_t mem_type, hid_t mem_space, hid_t file_space, hid_t xfer_plist, void* buf) except *
+  herr_t H5Dextend(hid_t dataset_id, hsize_t *size) except *
+  herr_t H5Dfill(void *fill, hid_t fill_type_id, void *buf,  hid_t buf_type_id, hid_t space_id ) except *
+  herr_t H5Dvlen_get_buf_size(hid_t dset_id, hid_t type_id, hid_t space_id, hsize_t *size) except *
+  herr_t H5Dvlen_reclaim(hid_t type_id, hid_t space_id,  hid_t plist, void *buf) except *
+  herr_t H5Diterate(void *buf, hid_t type_id, hid_t space_id,  H5D_operator_t op, void* operator_data) except *
+  herr_t H5Dset_extent(hid_t dset_id, hsize_t* size) except *
+  hid_t H5Fcreate(char *filename, unsigned int flags, hid_t create_plist, hid_t access_plist) except *
+  hid_t H5Fopen(char *name, unsigned flags, hid_t access_id) except *
+  herr_t H5Fclose(hid_t file_id) except *
+  htri_t H5Fis_hdf5(char *name) except *
+  herr_t H5Fflush(hid_t object_id, H5F_scope_t scope) except *
+  hid_t H5Freopen(hid_t file_id) except *
+  herr_t H5Fmount(hid_t loc_id, char *name, hid_t child_id, hid_t plist_id) except *
+  herr_t H5Funmount(hid_t loc_id, char *name) except *
+  herr_t H5Fget_filesize(hid_t file_id, hsize_t *size) except *
+  hid_t H5Fget_create_plist(hid_t file_id ) except *
+  hid_t H5Fget_access_plist(hid_t file_id) except *
+  hssize_t H5Fget_freespace(hid_t file_id) except *
+  ssize_t H5Fget_name(hid_t obj_id, char *name, size_t size) except *
+  int H5Fget_obj_count(hid_t file_id, unsigned int types) except *
+  int H5Fget_obj_ids(hid_t file_id, unsigned int types, int max_objs, hid_t *obj_id_list) except *
+  herr_t H5Fget_vfd_handle(hid_t file_id, hid_t fapl_id, void **file_handle) except *
+  herr_t H5Fget_intent(hid_t file_id, unsigned int *intent) except *
+  herr_t H5Fget_mdc_config(hid_t file_id, H5AC_cache_config_t *config_ptr) except *
+  herr_t H5Fget_mdc_hit_rate(hid_t file_id, double *hit_rate_ptr) except *
+  herr_t H5Fget_mdc_size(hid_t file_id, size_t *max_size_ptr, size_t *min_clean_size_ptr, size_t *cur_size_ptr, int *cur_num_entries_ptr) except *
+  herr_t H5Freset_mdc_hit_rate_stats(hid_t file_id) except *
+  herr_t H5Fset_mdc_config(hid_t file_id, H5AC_cache_config_t *config_ptr) except *
+  hid_t H5Gcreate(hid_t loc_id, char *name, size_t size_hint) except *
+  hid_t H5Gopen(hid_t loc_id, char *name) except *
+  herr_t H5Gclose(hid_t group_id) except *
+  herr_t H5Glink2( hid_t curr_loc_id, char *current_name, H5G_link_t link_type, hid_t new_loc_id, char *new_name) except *
+  herr_t H5Gunlink(hid_t file_id, char *name) except *
+  herr_t H5Gmove2(hid_t src_loc_id, char *src_name, hid_t dst_loc_id, char *dst_name) except *
+  herr_t H5Gget_num_objs(hid_t loc_id, hsize_t*  num_obj) except *
+  int H5Gget_objname_by_idx(hid_t loc_id, hsize_t idx, char *name, size_t size) except *
+  int H5Gget_objtype_by_idx(hid_t loc_id, hsize_t idx) except *
+  herr_t H5Giterate(hid_t loc_id, char *name, int *idx, H5G_iterate_t op, void* data) except *
+  herr_t H5Gget_objinfo(hid_t loc_id, char* name, int follow_link, H5G_stat_t *statbuf) except *
+  herr_t H5Gget_linkval(hid_t loc_id, char *name, size_t size, char *value) except *
+  herr_t H5Gset_comment(hid_t loc_id, char *name, char *comment) except *
+  int H5Gget_comment(hid_t loc_id, char *name, size_t bufsize, char *comment) except *
+  hid_t H5Gcreate_anon( hid_t loc_id, hid_t gcpl_id, hid_t gapl_id) except *
+  hid_t H5Gcreate2(hid_t loc_id, char *name, hid_t lcpl_id, hid_t gcpl_id, hid_t gapl_id) except *
+  hid_t H5Gopen2( hid_t loc_id, char * name, hid_t gapl_id) except *
+  herr_t H5Gget_info( hid_t group_id, H5G_info_t *group_info) except *
+  herr_t H5Gget_info_by_name( hid_t loc_id, char *group_name, H5G_info_t *group_info, hid_t lapl_id) except *
+  hid_t H5Gget_create_plist(hid_t group_id) except *
+  H5I_type_t H5Iget_type(hid_t obj_id) except *
+  ssize_t H5Iget_name( hid_t obj_id, char *name, size_t size) except *
+  hid_t H5Iget_file_id(hid_t obj_id) except *
+  int H5Idec_ref(hid_t obj_id) except *
+  int H5Iget_ref(hid_t obj_id) except *
+  int H5Iinc_ref(hid_t obj_id) except *
+  herr_t H5Lmove(hid_t src_loc, char *src_name, hid_t dst_loc, char *dst_name, hid_t lcpl_id, hid_t lapl_id) except *
+  herr_t H5Lcopy(hid_t src_loc, char *src_name, hid_t dst_loc, char *dst_name, hid_t lcpl_id, hid_t lapl_id) except *
+  herr_t H5Lcreate_hard(hid_t cur_loc, char *cur_name, hid_t dst_loc, char *dst_name, hid_t lcpl_id, hid_t lapl_id) except *
+  herr_t H5Lcreate_soft(char *link_target, hid_t link_loc_id, char *link_name, hid_t lcpl_id, hid_t lapl_id) except *
+  herr_t H5Ldelete(hid_t loc_id, char *name, hid_t lapl_id) except *
+  herr_t H5Ldelete_by_idx(hid_t loc_id, char *group_name, H5_index_t idx_type, H5_iter_order_t order, hsize_t n, hid_t lapl_id) except *
+  herr_t H5Lget_val(hid_t loc_id, char *name, void *bufout, size_t size, hid_t lapl_id) except *
+  herr_t H5Lget_val_by_idx(hid_t loc_id, char *group_name,  H5_index_t idx_type, H5_iter_order_t order, hsize_t n, void *bufout, size_t size, hid_t lapl_id) except *
+  htri_t H5Lexists(hid_t loc_id, char *name, hid_t lapl_id) except *
+  herr_t H5Lget_info(hid_t loc_id, char *name, H5L_info_t *linfo, hid_t lapl_id) except *
+  herr_t H5Lget_info_by_idx(hid_t loc_id, char *group_name, H5_index_t idx_type, H5_iter_order_t order, hsize_t n, H5L_info_t *linfo, hid_t lapl_id) except *
+  ssize_t H5Lget_name_by_idx(hid_t loc_id, char *group_name, H5_index_t idx_type, H5_iter_order_t order, hsize_t n, char *name, size_t size, hid_t lapl_id) except *
+  herr_t H5Literate(hid_t grp_id, H5_index_t idx_type, H5_iter_order_t order, hsize_t *idx, H5L_iterate_t op, void *op_data) except *
+  herr_t H5Literate_by_name(hid_t loc_id, char *group_name, H5_index_t idx_type, H5_iter_order_t order, hsize_t *idx, H5L_iterate_t op, void *op_data, hid_t lapl_id) except *
+  herr_t H5Lvisit(hid_t grp_id, H5_index_t idx_type, H5_iter_order_t order, H5L_iterate_t op, void *op_data) except *
+  herr_t H5Lvisit_by_name(hid_t loc_id, char *group_name, H5_index_t idx_type, H5_iter_order_t order, H5L_iterate_t op, void *op_data, hid_t lapl_id) except *
+  herr_t H5Lunpack_elink_val(void *ext_linkval, size_t link_size, unsigned *flags, char **filename, char **obj_path) except *
+  herr_t H5Lcreate_external(char *file_name, char *obj_name, hid_t link_loc_id, char *link_name, hid_t lcpl_id, hid_t lapl_id) except *
+  hid_t H5Oopen(hid_t loc_id, char *name, hid_t lapl_id) except *
+  hid_t H5Oopen_by_addr(hid_t loc_id, haddr_t addr) except *
+  hid_t H5Oopen_by_idx(hid_t loc_id, char *group_name, H5_index_t idx_type, H5_iter_order_t order, hsize_t n, hid_t lapl_id) except *
+  herr_t H5Oget_info(hid_t loc_id, H5O_info_t *oinfo) except *
+  herr_t H5Oget_info_by_name(hid_t loc_id, char *name, H5O_info_t *oinfo, hid_t lapl_id) except *
+  herr_t H5Oget_info_by_idx(hid_t loc_id, char *group_name,  H5_index_t idx_type, H5_iter_order_t order, hsize_t n, H5O_info_t *oinfo, hid_t lapl_id) except *
+  herr_t H5Olink(hid_t obj_id, hid_t new_loc_id, char *new_name, hid_t lcpl_id, hid_t lapl_id) except *
+  herr_t H5Ocopy(hid_t src_loc_id, char *src_name, hid_t dst_loc_id,  char *dst_name, hid_t ocpypl_id, hid_t lcpl_id) except *
+  herr_t H5Oincr_refcount(hid_t object_id) except *
+  herr_t H5Odecr_refcount(hid_t object_id) except *
+  herr_t H5Oset_comment(hid_t obj_id, char *comment) except *
+  herr_t H5Oset_comment_by_name(hid_t loc_id, char *name,  char *comment, hid_t lapl_id) except *
+  ssize_t H5Oget_comment(hid_t obj_id, char *comment, size_t bufsize) except *
+  ssize_t H5Oget_comment_by_name(hid_t loc_id, char *name, char *comment, size_t bufsize, hid_t lapl_id) except *
+  herr_t H5Ovisit(hid_t obj_id, H5_index_t idx_type, H5_iter_order_t order,  H5O_iterate_t op, void *op_data) except *
+  herr_t H5Ovisit_by_name(hid_t loc_id, char *obj_name, H5_index_t idx_type, H5_iter_order_t order, H5O_iterate_t op, void *op_data, hid_t lapl_id) except *
+  herr_t H5Oclose(hid_t object_id) except *
+  hid_t H5Pcreate(hid_t plist_id) except *
+  hid_t H5Pcopy(hid_t plist_id) except *
+  int H5Pget_class(hid_t plist_id) except *
+  herr_t H5Pclose(hid_t plist_id) except *
+  htri_t H5Pequal( hid_t id1, hid_t id2 ) except *
+  herr_t H5Pclose_class(hid_t id) except *
+  herr_t H5Pget_version(hid_t plist, unsigned int *super_, unsigned int* freelist,  unsigned int *stab, unsigned int *shhdr) except *
+  herr_t H5Pset_userblock(hid_t plist, hsize_t size) except *
+  herr_t H5Pget_userblock(hid_t plist, hsize_t * size) except *
+  herr_t H5Pset_sizes(hid_t plist, size_t sizeof_addr, size_t sizeof_size) except *
+  herr_t H5Pget_sizes(hid_t plist, size_t *sizeof_addr, size_t *sizeof_size) except *
+  herr_t H5Pset_sym_k(hid_t plist, unsigned int ik, unsigned int lk) except *
+  herr_t H5Pget_sym_k(hid_t plist, unsigned int *ik, unsigned int *lk) except *
+  herr_t H5Pset_istore_k(hid_t plist, unsigned int ik) except *
+  herr_t H5Pget_istore_k(hid_t plist, unsigned int *ik) except *
+  herr_t H5Pset_fclose_degree(hid_t fapl_id, H5F_close_degree_t fc_degree) except *
+  herr_t H5Pget_fclose_degree(hid_t fapl_id, H5F_close_degree_t *fc_degree) except *
+  herr_t H5Pset_fapl_core( hid_t fapl_id, size_t increment, hbool_t backing_store) except *
+  herr_t H5Pget_fapl_core( hid_t fapl_id, size_t *increment, hbool_t *backing_store) except *
+  herr_t H5Pset_fapl_family( hid_t fapl_id,  hsize_t memb_size, hid_t memb_fapl_id ) except *
+  herr_t H5Pget_fapl_family( hid_t fapl_id, hsize_t *memb_size, hid_t *memb_fapl_id ) except *
+  herr_t H5Pset_family_offset( hid_t fapl_id, hsize_t offset) except *
+  herr_t H5Pget_family_offset( hid_t fapl_id, hsize_t *offset) except *
+  herr_t H5Pset_fapl_log(hid_t fapl_id, char *logfile, unsigned int flags, size_t buf_size) except *
+  herr_t H5Pset_fapl_multi(hid_t fapl_id, H5FD_mem_t *memb_map, hid_t *memb_fapl, char **memb_name, haddr_t *memb_addr, hbool_t relax) except *
+  herr_t H5Pset_cache(hid_t plist_id, int mdc_nelmts, int rdcc_nelmts,  size_t rdcc_nbytes, double rdcc_w0) except *
+  herr_t H5Pget_cache(hid_t plist_id, int *mdc_nelmts, int *rdcc_nelmts, size_t *rdcc_nbytes, double *rdcc_w0) except *
+  herr_t H5Pset_fapl_sec2(hid_t fapl_id) except *
+  herr_t H5Pset_fapl_stdio(hid_t fapl_id) except *
+  hid_t H5Pget_driver(hid_t fapl_id) except *
+  herr_t H5Pget_mdc_config(hid_t plist_id, H5AC_cache_config_t *config_ptr) except *
+  herr_t H5Pset_mdc_config(hid_t plist_id, H5AC_cache_config_t *config_ptr) except *
+  herr_t H5Pset_layout(hid_t plist, int layout) except *
+  H5D_layout_t H5Pget_layout(hid_t plist) except *
+  herr_t H5Pset_chunk(hid_t plist, int ndims, hsize_t * dim) except *
+  int H5Pget_chunk(hid_t plist, int max_ndims, hsize_t * dims ) except *
+  herr_t H5Pset_deflate( hid_t plist, int level) except *
+  herr_t H5Pset_fill_value(hid_t plist_id, hid_t type_id, void *value ) except *
+  herr_t H5Pget_fill_value(hid_t plist_id, hid_t type_id, void *value ) except *
+  herr_t H5Pfill_value_defined(hid_t plist_id, H5D_fill_value_t *status ) except *
+  herr_t H5Pset_fill_time(hid_t plist_id, H5D_fill_time_t fill_time ) except *
+  herr_t H5Pget_fill_time(hid_t plist_id, H5D_fill_time_t *fill_time ) except *
+  herr_t H5Pset_alloc_time(hid_t plist_id, H5D_alloc_time_t alloc_time ) except *
+  herr_t H5Pget_alloc_time(hid_t plist_id, H5D_alloc_time_t *alloc_time ) except *
+  herr_t H5Pset_filter(hid_t plist, H5Z_filter_t filter, unsigned int flags, size_t cd_nelmts, unsigned int* cd_values ) except *
+  htri_t H5Pall_filters_avail(hid_t dcpl_id) except *
+  int H5Pget_nfilters(hid_t plist) except *
+  H5Z_filter_t H5Pget_filter(hid_t plist, unsigned int filter_number,   unsigned int *flags, size_t *cd_nelmts,  unsigned int* cd_values, size_t namelen, char* name ) except *
+  herr_t H5Pget_filter_by_id( hid_t plist_id, H5Z_filter_t filter,  unsigned int *flags, size_t *cd_nelmts,  unsigned int* cd_values, size_t namelen, char* name) except *
+  herr_t H5Pmodify_filter(hid_t plist, H5Z_filter_t filter, unsigned int flags, size_t cd_nelmts, unsigned int *cd_values) except *
+  herr_t H5Premove_filter(hid_t plist, H5Z_filter_t filter ) except *
+  herr_t H5Pset_fletcher32(hid_t plist) except *
+  herr_t H5Pset_shuffle(hid_t plist_id) except *
+  herr_t H5Pset_szip(hid_t plist, unsigned int options_mask, unsigned int pixels_per_block) except *
+  herr_t H5Pset_scaleoffset(hid_t plist, H5Z_SO_scale_type_t scale_type, int scale_factor) except *
+  herr_t H5Pset_edc_check(hid_t plist, H5Z_EDC_t check) except *
+  H5Z_EDC_t H5Pget_edc_check(hid_t plist) except *
+  herr_t H5Pset_chunk_cache( hid_t dapl_id, size_t rdcc_nslots, size_t rdcc_nbytes, double rdcc_w0 ) except *
+  herr_t H5Pget_chunk_cache( hid_t dapl_id, size_t *rdcc_nslots, size_t *rdcc_nbytes, double *rdcc_w0 ) except *
+  herr_t H5Pset_sieve_buf_size(hid_t fapl_id, size_t size) except *
+  herr_t H5Pget_sieve_buf_size(hid_t fapl_id, size_t *size) except *
+  herr_t H5Pset_nlinks(hid_t plist_id, size_t nlinks) except *
+  herr_t H5Pget_nlinks(hid_t plist_id, size_t *nlinks) except *
+  herr_t H5Pset_elink_prefix(hid_t plist_id, char *prefix) except *
+  ssize_t H5Pget_elink_prefix(hid_t plist_id, char *prefix, size_t size) except *
+  hid_t H5Pget_elink_fapl(hid_t lapl_id) except *
+  herr_t H5Pset_elink_fapl(hid_t lapl_id, hid_t fapl_id) except *
+  herr_t H5Pset_create_intermediate_group(hid_t plist_id, unsigned crt_intmd) except *
+  herr_t H5Pget_create_intermediate_group(hid_t plist_id, unsigned *crt_intmd) except *
+  herr_t H5Pset_copy_object(hid_t plist_id, unsigned crt_intmd) except *
+  herr_t H5Pget_copy_object(hid_t plist_id, unsigned *crt_intmd) except *
+  herr_t H5Pset_char_encoding(hid_t plist_id, H5T_cset_t encoding) except *
+  herr_t H5Pget_char_encoding(hid_t plist_id, H5T_cset_t *encoding) except *
+  herr_t H5Pset_obj_track_times( hid_t ocpl_id, hbool_t track_times ) except *
+  herr_t H5Pget_obj_track_times( hid_t ocpl_id, hbool_t *track_times ) except *
+  herr_t H5Pset_local_heap_size_hint(hid_t plist_id, size_t size_hint) except *
+  herr_t H5Pget_local_heap_size_hint(hid_t plist_id, size_t *size_hint) except *
+  herr_t H5Pset_link_phase_change(hid_t plist_id, unsigned max_compact, unsigned min_dense) except *
+  herr_t H5Pget_link_phase_change(hid_t plist_id, unsigned *max_compact , unsigned *min_dense) except *
+  herr_t H5Pset_est_link_info(hid_t plist_id, unsigned est_num_entries, unsigned est_name_len) except *
+  herr_t H5Pget_est_link_info(hid_t plist_id, unsigned *est_num_entries , unsigned *est_name_len) except *
+  herr_t H5Pset_link_creation_order(hid_t plist_id, unsigned crt_order_flags) except *
+  herr_t H5Pget_link_creation_order(hid_t plist_id, unsigned *crt_order_flags) except *
+  herr_t H5Pset_libver_bounds(hid_t fapl_id, H5F_libver_t libver_low, H5F_libver_t libver_high) except *
+  herr_t H5Pget_libver_bounds(hid_t fapl_id, H5F_libver_t *libver_low, H5F_libver_t *libver_high) except *
+  herr_t H5Rcreate(void *ref, hid_t loc_id, char *name, H5R_type_t ref_type,  hid_t space_id) except *
+  hid_t H5Rdereference(hid_t obj_id, H5R_type_t ref_type, void *ref) except *
+  hid_t H5Rget_region(hid_t dataset, H5R_type_t ref_type, void *ref) except *
+  H5G_obj_t H5Rget_obj_type(hid_t id, H5R_type_t ref_type, void *ref) except *
+  ssize_t H5Rget_name(hid_t loc_id, H5R_type_t ref_type, void *ref, char *name, size_t size) except *
+  hid_t H5Screate(H5S_class_t type) except *
+  hid_t H5Scopy(hid_t space_id ) except *
+  herr_t H5Sclose(hid_t space_id) except *
+  hid_t H5Screate_simple(int rank, hsize_t *dims, hsize_t *maxdims) except *
+  htri_t H5Sis_simple(hid_t space_id) except *
+  herr_t H5Soffset_simple(hid_t space_id, hssize_t *offset ) except *
+  int H5Sget_simple_extent_ndims(hid_t space_id) except *
+  int H5Sget_simple_extent_dims(hid_t space_id, hsize_t *dims, hsize_t *maxdims) except *
+  hssize_t H5Sget_simple_extent_npoints(hid_t space_id) except *
+  H5S_class_t H5Sget_simple_extent_type(hid_t space_id) except *
+  herr_t H5Sextent_copy(hid_t dest_space_id, hid_t source_space_id ) except *
+  herr_t H5Sset_extent_simple(hid_t space_id, int rank, hsize_t *current_size, hsize_t *maximum_size ) except *
+  herr_t H5Sset_extent_none(hid_t space_id) except *
+  H5S_sel_type H5Sget_select_type(hid_t space_id) except *
+  hssize_t H5Sget_select_npoints(hid_t space_id) except *
+  herr_t H5Sget_select_bounds(hid_t space_id, hsize_t *start, hsize_t *end) except *
+  herr_t H5Sselect_all(hid_t space_id) except *
+  herr_t H5Sselect_none(hid_t space_id) except *
+  htri_t H5Sselect_valid(hid_t space_id) except *
+  hssize_t H5Sget_select_elem_npoints(hid_t space_id) except *
+  herr_t H5Sget_select_elem_pointlist(hid_t space_id, hsize_t startpoint,  hsize_t numpoints, hsize_t *buf) except *
+  herr_t H5Sselect_elements(hid_t space_id, H5S_seloper_t op,  size_t num_elements, hsize_t **coord) except *
+  hssize_t H5Sget_select_hyper_nblocks(hid_t space_id ) except *
+  herr_t H5Sget_select_hyper_blocklist(hid_t space_id,  hsize_t startblock, hsize_t numblocks, hsize_t *buf ) except *
+  herr_t H5Sselect_hyperslab(hid_t space_id, H5S_seloper_t op,  hsize_t *start, hsize_t *_stride, hsize_t *count, hsize_t *_block) except *
+  herr_t H5Sencode(hid_t obj_id, void *buf, size_t *nalloc) except *
+  hid_t H5Sdecode(void *buf) except *
+  hid_t H5Tcreate(H5T_class_t type, size_t size) except *
+  hid_t H5Topen(hid_t loc, char* name) except *
+  herr_t H5Tcommit(hid_t loc_id, char* name, hid_t type) except *
+  htri_t H5Tcommitted(hid_t type) except *
+  hid_t H5Tcopy(hid_t type_id) except *
+  htri_t H5Tequal(hid_t type_id1, hid_t type_id2 ) except *
+  herr_t H5Tlock(hid_t type_id) except *
+  H5T_class_t H5Tget_class(hid_t type_id) except *
+  size_t H5Tget_size(hid_t type_id) except *
+  hid_t H5Tget_super(hid_t type) except *
+  htri_t H5Tdetect_class(hid_t type_id, H5T_class_t dtype_class) except *
+  herr_t H5Tclose(hid_t type_id) except *
+  hid_t H5Tget_native_type(hid_t type_id, H5T_direction_t direction) except *
+  herr_t H5Tconvert(hid_t src_id, hid_t dst_id, size_t nelmts, void *buf, void *background, hid_t plist_id) except *
+  herr_t H5Tset_size(hid_t type_id, size_t size) except *
+  H5T_order_t H5Tget_order(hid_t type_id) except *
+  herr_t H5Tset_order(hid_t type_id, H5T_order_t order) except *
+  hsize_t H5Tget_precision(hid_t type_id) except *
+  herr_t H5Tset_precision(hid_t type_id, size_t prec) except *
+  int H5Tget_offset(hid_t type_id) except *
+  herr_t H5Tset_offset(hid_t type_id, size_t offset) except *
+  herr_t H5Tget_pad(hid_t type_id, H5T_pad_t * lsb, H5T_pad_t * msb ) except *
+  herr_t H5Tset_pad(hid_t type_id, H5T_pad_t lsb, H5T_pad_t msb ) except *
+  H5T_sign_t H5Tget_sign(hid_t type_id) except *
+  herr_t H5Tset_sign(hid_t type_id, H5T_sign_t sign) except *
+  herr_t H5Tget_fields(hid_t type_id, size_t *spos, size_t *epos, size_t *esize, size_t *mpos, size_t *msize ) except *
+  herr_t H5Tset_fields(hid_t type_id, size_t spos, size_t epos, size_t esize, size_t mpos, size_t msize ) except *
+  size_t H5Tget_ebias(hid_t type_id) except *
+  herr_t H5Tset_ebias(hid_t type_id, size_t ebias) except *
+  H5T_norm_t H5Tget_norm(hid_t type_id) except *
+  herr_t H5Tset_norm(hid_t type_id, H5T_norm_t norm) except *
+  H5T_pad_t H5Tget_inpad(hid_t type_id) except *
+  herr_t H5Tset_inpad(hid_t type_id, H5T_pad_t inpad) except *
+  H5T_cset_t H5Tget_cset(hid_t type_id) except *
+  herr_t H5Tset_cset(hid_t type_id, H5T_cset_t cset) except *
+  H5T_str_t H5Tget_strpad(hid_t type_id) except *
+  herr_t H5Tset_strpad(hid_t type_id, H5T_str_t strpad) except *
+  hid_t H5Tvlen_create(hid_t base_type_id) except *
+  htri_t H5Tis_variable_str(hid_t dtype_id) except *
+  int H5Tget_nmembers(hid_t type_id) except *
+  H5T_class_t H5Tget_member_class(hid_t type_id, int member_no) except *
+  char* H5Tget_member_name(hid_t type_id, unsigned membno) except *
+  hid_t H5Tget_member_type(hid_t type_id, unsigned membno) except *
+  int H5Tget_member_offset(hid_t type_id, int membno) except *
+  int H5Tget_member_index(hid_t type_id, char* name) except *
+  herr_t H5Tinsert(hid_t parent_id, char *name, size_t offset, hid_t member_id) except *
+  herr_t H5Tpack(hid_t type_id) except *
+  hid_t H5Tenum_create(hid_t base_id) except *
+  herr_t H5Tenum_insert(hid_t type, char *name, void *value) except *
+  herr_t H5Tenum_nameof( hid_t type, void *value, char *name, size_t size ) except *
+  herr_t H5Tenum_valueof( hid_t type, char *name, void *value ) except *
+  herr_t H5Tget_member_value(hid_t type,  unsigned int memb_no, void *value ) except *
+  hid_t H5Tarray_create(hid_t base_id, int ndims, hsize_t *dims, int *perm) except *
+  int H5Tget_array_ndims(hid_t type_id) except *
+  int H5Tget_array_dims(hid_t type_id, hsize_t *dims, int *perm) except *
+  herr_t H5Tset_tag(hid_t type_id, char* tag) except *
+  char* H5Tget_tag(hid_t type_id) except *
+  hid_t H5Tdecode(unsigned char *buf) except *
+  herr_t H5Tencode(hid_t obj_id, unsigned char *buf, size_t *nalloc) except *
+  herr_t H5Tcommit2(hid_t loc_id, char *name, hid_t dtype_id, hid_t lcpl_id, hid_t tcpl_id, hid_t tapl_id) except *
+  H5T_conv_t H5Tfind(hid_t src_id, hid_t dst_id, H5T_cdata_t **pcdata) except *
+  herr_t H5Tregister(H5T_pers_t pers, char *name, hid_t src_id, hid_t dst_id, H5T_conv_t func) except *
+  herr_t H5Tunregister(H5T_pers_t pers, char *name, hid_t src_id, hid_t dst_id, H5T_conv_t func) except *
+  htri_t H5Zfilter_avail(H5Z_filter_t id_) except *
+  herr_t H5Zget_filter_info(H5Z_filter_t filter_, unsigned int *filter_config_flags) except *
+  hid_t H5Acreate(hid_t loc_id, char *name, hid_t type_id, hid_t space_id, hid_t create_plist) except *
+  hid_t H5Aopen_idx(hid_t loc_id, unsigned int idx) except *
+  hid_t H5Aopen_name(hid_t loc_id, char *name) except *
+  herr_t H5Aclose(hid_t attr_id) except *
+  herr_t H5Adelete(hid_t loc_id, char *name) except *
+  herr_t H5Aread(hid_t attr_id, hid_t mem_type_id, void *buf) except *
+  herr_t H5Awrite(hid_t attr_id, hid_t mem_type_id, void *buf ) except *
+  int H5Aget_num_attrs(hid_t loc_id) except *
+  ssize_t H5Aget_name(hid_t attr_id, size_t buf_size, char *buf) except *
+  hid_t H5Aget_space(hid_t attr_id) except *
+  hid_t H5Aget_type(hid_t attr_id) except *
+  herr_t H5Aiterate(hid_t loc_id, unsigned * idx, H5A_operator_t op, void* op_data) except *
+  herr_t H5Adelete_by_name(hid_t loc_id, char *obj_name, char *attr_name, hid_t lapl_id) except *
+  herr_t H5Adelete_by_idx(hid_t loc_id, char *obj_name, H5_index_t idx_type, H5_iter_order_t order, hsize_t n, hid_t lapl_id) except *
+  hid_t H5Acreate_by_name(hid_t loc_id, char *obj_name, char *attr_name, hid_t type_id, hid_t space_id, hid_t acpl_id, hid_t aapl_id, hid_t lapl_id) except *
+  herr_t H5Aopen(hid_t obj_id, char *attr_name, hid_t aapl_id) except *
+  herr_t H5Aopen_by_name( hid_t loc_id, char *obj_name, char *attr_name, hid_t aapl_id, hid_t lapl_id) except *
+  herr_t H5Aopen_by_idx(hid_t loc_id, char *obj_name, H5_index_t idx_type, H5_iter_order_t order, hsize_t n, hid_t aapl_id, hid_t lapl_id) except *
+  htri_t H5Aexists_by_name( hid_t loc_id, char *obj_name, char *attr_name, hid_t lapl_id) except *
+  htri_t H5Aexists(hid_t obj_id, char *attr_name) except *
+  herr_t H5Arename(hid_t loc_id, char *old_attr_name, char *new_attr_name) except *
+  herr_t H5Arename_by_name(hid_t loc_id, char *obj_name, char *old_attr_name, char *new_attr_name, hid_t lapl_id) except *
+  herr_t H5Aget_info( hid_t attr_id, H5A_info_t *ainfo) except *
+  herr_t H5Aget_info_by_name(hid_t loc_id, char *obj_name, char *attr_name, H5A_info_t *ainfo, hid_t lapl_id) except *
+  herr_t H5Aget_info_by_idx(hid_t loc_id, char *obj_name, H5_index_t idx_type, H5_iter_order_t order, hsize_t n, H5A_info_t *ainfo, hid_t lapl_id) except *
+  herr_t H5Aiterate2(hid_t obj_id, H5_index_t idx_type, H5_iter_order_t order, hsize_t *n, H5A_operator2_t op, void *op_data) except *
+  hsize_t H5Aget_storage_size(hid_t attr_id) except *
+  IF MPI:
+    herr_t H5Pset_fapl_mpio(hid_t fapl_id, MPI_Comm comm, MPI_Info info) except *
+  IF MPI:
+    herr_t H5Pset_fapl_mpiposix(hid_t fapl_id, MPI_Comm comm, hbool_t hints) except *
+  IF HDF5_VERSION >= (1, 8, 9):
+    IF MPI:
+        herr_t H5Fset_mpi_atomicity(hid_t file_id, hbool_t flag) except *
+  IF HDF5_VERSION >= (1, 8, 9):
+    IF MPI:
+        herr_t H5Fget_mpi_atomicity(hid_t file_id, hbool_t *flag) except *
+cdef extern from "hdf5_hl.h":
+  herr_t H5DSattach_scale(hid_t did, hid_t dsid, unsigned int idx) except *
+  herr_t H5DSdetach_scale(hid_t did, hid_t dsid, unsigned int idx) except *
+  herr_t H5DSset_scale(hid_t dsid, char *dimname) except *
+  int H5DSget_num_scales(hid_t did, unsigned int dim) except *
+  herr_t H5DSset_label(hid_t did, unsigned int idx, char *label) except *
+  ssize_t H5DSget_label(hid_t did, unsigned int idx, char *label, size_t size) except *
+  ssize_t H5DSget_scale_name(hid_t did, char *name, size_t size) except *
+  htri_t H5DSis_scale(hid_t did) except *
+  herr_t H5DSiterate_scales(hid_t did, unsigned int dim, int *idx, H5DS_iterate_t visitor, void *visitor_data) except *
+  htri_t H5DSis_attached(hid_t did, hid_t dsid, unsigned int idx) except *
diff --git a/h5py/_hl/__init__.py b/h5py/_hl/__init__.py
new file mode 100644
index 0000000..a23327b
--- /dev/null
+++ b/h5py/_hl/__init__.py
@@ -0,0 +1,8 @@
+# This file is part of h5py, a Python interface to the HDF5 library.
+#
+# http://www.h5py.org
+#
+# Copyright 2008-2013 Andrew Collette and contributors
+#
+# License:  Standard 3-clause BSD; see "license.txt" for full license terms
+#           and contributor agreement.
diff --git a/h5py/_hl/attrs.py b/h5py/_hl/attrs.py
new file mode 100644
index 0000000..f6be7fd
--- /dev/null
+++ b/h5py/_hl/attrs.py
@@ -0,0 +1,180 @@
+# This file is part of h5py, a Python interface to the HDF5 library.
+#
+# http://www.h5py.org
+#
+# Copyright 2008-2013 Andrew Collette and contributors
+#
+# License:  Standard 3-clause BSD; see "license.txt" for full license terms
+#           and contributor agreement.
+
+import numpy
+import collections
+
+import h5py
+from h5py import h5s, h5t, h5a
+from . import base
+from .dataset import readtime_dtype
+
+
+class AttributeManager(base.DictCompat, base.CommonStateObject):
+
+    """
+        Allows dictionary-style access to an HDF5 object's attributes.
+
+        These are created exclusively by the library and are available as
+        a Python attribute at <object>.attrs
+
+        Like Group objects, attributes provide a minimal dictionary-
+        style interface.  Anything which can be reasonably converted to a
+        Numpy array or Numpy scalar can be stored.
+
+        Attributes are automatically created on assignment with the
+        syntax <obj>.attrs[name] = value, with the HDF5 type automatically
+        deduced from the value.  Existing attributes are overwritten.
+
+        To modify an existing attribute while preserving its type, use the
+        method modify().  To specify an attribute of a particular type and
+        shape, use create().
+    """
+
+    def __init__(self, parent):
+        """ Private constructor.
+        """
+        self._id = parent.id
+
+    def __getitem__(self, name):
+        """ Read the value of an attribute.
+        """
+        attr = h5a.open(self._id, self._e(name))
+
+        if attr.get_space().get_simple_extent_type() == h5s.NULL:
+            raise IOError("Empty attributes cannot be read")
+
+        tid = attr.get_type()
+
+        rtdt = readtime_dtype(attr.dtype, [])
+
+        arr = numpy.ndarray(attr.shape, dtype=rtdt, order='C')
+        attr.read(arr)
+
+        if len(arr.shape) == 0:
+            return arr[()]
+        return arr
+
+    def __setitem__(self, name, value):
+        """ Set a new attribute, overwriting any existing attribute.
+
+        The type and shape of the attribute are determined from the data.  To
+        use a specific type or shape, or to preserve the type of an attribute,
+        use the methods create() and modify().
+        """
+        self.create(name, data=value, dtype=base.guess_dtype(value))
+
+    def __delitem__(self, name):
+        """ Delete an attribute (which must already exist). """
+        h5a.delete(self._id, self._e(name))
+
+    def create(self, name, data, shape=None, dtype=None):
+        """ Create a new attribute, overwriting any existing attribute.
+
+        name
+            Name of the new attribute (required)
+        data
+            An array to initialize the attribute (required)
+        shape
+            Shape of the attribute.  Overrides data.shape if both are
+            given, in which case the total number of points must be unchanged.
+        dtype
+            Data type of the attribute.  Overrides data.dtype if both
+            are given.
+        """
+
+        if data is not None:
+            data = numpy.asarray(data, order='C', dtype=dtype)
+            if shape is None:
+                shape = data.shape
+            elif numpy.product(shape) != numpy.product(data.shape):
+                raise ValueError("Shape of new attribute conflicts with shape of data")
+
+            if dtype is None:
+                dtype = data.dtype
+
+        if isinstance(dtype, h5py.Datatype):
+            htype = dtype.id
+            dtype = htype.dtype
+        else:
+            if dtype is None:
+                dtype = numpy.dtype('f')
+            htype = h5t.py_create(dtype, logical=True)
+
+        if shape is None:
+            raise ValueError('At least one of "shape" or "data" must be given')
+
+        data = data.reshape(shape)
+
+        space = h5s.create_simple(shape)
+
+        if name in self:
+            h5a.delete(self._id, self._e(name))
+
+        attr = h5a.create(self._id, self._e(name), htype, space)
+
+        if data is not None:
+            try:
+                attr.write(data)
+            except:
+                attr._close()
+                h5a.delete(self._id, self._e(name))
+                raise
+
+    def modify(self, name, value):
+        """ Change the value of an attribute while preserving its type.
+
+        Differs from __setitem__ in that if the attribute already exists, its
+        type is preserved.  This can be very useful for interacting with
+        externally generated files.
+
+        If the attribute doesn't exist, it will be automatically created.
+        """
+        if not name in self:
+            self[name] = value
+        else:
+            value = numpy.asarray(value, order='C')
+
+            attr = h5a.open(self._id, self._e(name))
+
+            if attr.get_space().get_simple_extent_type() == h5s.NULL:
+                raise IOError("Empty attributes can't be modified")
+
+            # Allow the case of () <-> (1,)
+            if (value.shape != attr.shape) and not \
+               (numpy.product(value.shape) == 1 and numpy.product(attr.shape) == 1):
+                raise TypeError("Shape of data is incompatible with existing attribute")
+            attr.write(value)
+
+    def __len__(self):
+        """ Number of attributes attached to the object. """
+        # I expect we will not have more than 2**32 attributes
+        return h5a.get_num_attrs(self._id)
+
+    def __iter__(self):
+        """ Iterate over the names of attributes. """
+        attrlist = []
+
+        def iter_cb(name, *args):
+            attrlist.append(self._d(name))
+        h5a.iterate(self._id, iter_cb)
+
+        for name in attrlist:
+            yield name
+
+    def __contains__(self, name):
+        """ Determine if an attribute exists, by name. """
+        return h5a.exists(self._id, self._e(name))
+
+    def __repr__(self):
+        if not self._id:
+            return "<Attributes of closed HDF5 object>"
+        return "<Attributes of HDF5 object at %s>" % id(self._id)
+
+collections.MutableMapping.register(AttributeManager)
diff --git a/h5py/_hl/base.py b/h5py/_hl/base.py
new file mode 100644
index 0000000..8cedf86
--- /dev/null
+++ b/h5py/_hl/base.py
@@ -0,0 +1,352 @@
+# This file is part of h5py, a Python interface to the HDF5 library.
+#
+# http://www.h5py.org
+#
+# Copyright 2008-2013 Andrew Collette and contributors
+#
+# License:  Standard 3-clause BSD; see "license.txt" for full license terms
+#           and contributor agreement.
+
+import posixpath
+import warnings
+import os
+import sys
+
+from h5py import h5d, h5i, h5r, h5p, h5f, h5t
+
+py3 = sys.version_info[0] == 3
+
+
+def is_hdf5(fname):
+    """ Determine if a file is valid HDF5 (False if it doesn't exist). """
+    fname = os.path.abspath(fname)
+
+    if os.path.isfile(fname):
+        try:
+            fname = fname.encode(sys.getfilesystemencoding())
+        except (UnicodeError, LookupError):
+            pass
+        return h5f.is_hdf5(fname)
+    return False
+
+
+def guess_dtype(data):
+    """ Attempt to guess an appropriate dtype for the object, returning None
+    if nothing is appropriate (or if it should be left up the the array
+    constructor to figure out)
+    """
+    if isinstance(data, h5r.RegionReference):
+        return h5t.special_dtype(ref=h5r.RegionReference)
+    if isinstance(data, h5r.Reference):
+        return h5t.special_dtype(ref=h5r.Reference)
+    if type(data) == bytes:
+        return h5t.special_dtype(vlen=bytes)
+    if type(data) == unicode:
+        return h5t.special_dtype(vlen=unicode)
+
+    return None
+
+
+def default_lapl():
+    """ Default link access property list """
+    lapl = h5p.create(h5p.LINK_ACCESS)
+    fapl = h5p.create(h5p.FILE_ACCESS)
+    fapl.set_fclose_degree(h5f.CLOSE_STRONG)
+    lapl.set_elink_fapl(fapl)
+    return lapl
+
+
+def default_lcpl():
+    """ Default link creation property list """
+    lcpl = h5p.create(h5p.LINK_CREATE)
+    lcpl.set_create_intermediate_group(True)
+    return lcpl
+
+dlapl = default_lapl()
+dlcpl = default_lcpl()
+
+
+class CommonStateObject(object):
+
+    """
+        Mixin class that allows sharing information between objects which
+        reside in the same HDF5 file.  Requires that the host class have
+        a ".id" attribute which returns a low-level ObjectID subclass.
+
+        Also implements Unicode operations.
+    """
+
+    @property
+    def _lapl(self):
+        """ Fetch the link access property list appropriate for this object
+        """
+        return dlapl
+
+    @property
+    def _lcpl(self):
+        """ Fetch the link creation property list appropriate for this object
+        """
+        return dlcpl
+
+    def _e(self, name, lcpl=None):
+        """ Encode a name according to the current file settings.
+
+        Returns name, or 2-tuple (name, lcpl) if lcpl is True
+
+        - Binary strings are always passed as-is, h5t.CSET_ASCII
+        - Unicode strings are encoded utf8, h5t.CSET_UTF8
+
+        If name is None, returns either None or (None, None) appropriately.
+        """
+        def get_lcpl(coding):
+            lcpl = self._lcpl.copy()
+            lcpl.set_char_encoding(coding)
+            return lcpl
+
+        if name is None:
+            return (None, None) if lcpl else None
+
+        if isinstance(name, bytes):
+            coding = h5t.CSET_ASCII
+        else:
+            try:
+                name = name.encode('ascii')
+                coding = h5t.CSET_ASCII
+            except UnicodeEncodeError:
+                name = name.encode('utf8')
+                coding = h5t.CSET_UTF8
+
+        if lcpl:
+            return name, get_lcpl(coding)
+        return name
+
+    def _d(self, name):
+        """ Decode a name according to the current file settings.
+
+        - Try to decode utf8
+        - Failing that, return the byte string
+
+        If name is None, returns None.
+        """
+        if name is None:
+            return None
+
+        try:
+            return name.decode('utf8')
+        except UnicodeDecodeError:
+            pass
+        return name
+
+
+class _RegionProxy(object):
+
+    """
+        Proxy object which handles region references.
+
+        To create a new region reference (datasets only), use slicing syntax:
+
+            >>> newref = obj.regionref[0:10:2]
+
+        To determine the target dataset shape from an existing reference:
+
+            >>> shape = obj.regionref.shape(existingref)
+
+        where <obj> may be any object in the file. To determine the shape of
+        the selection in use on the target dataset:
+
+            >>> selection_shape = obj.regionref.selection(existingref)
+    """
+
+    def __init__(self, obj):
+        self.id = obj.id
+
+    def __getitem__(self, args):
+        if not isinstance(self.id, h5d.DatasetID):
+            raise TypeError("Region references can only be made to datasets")
+        from . import selections
+        selection = selections.select(self.id.shape, args, dsid=self.id)
+        return h5r.create(self.id, b'.', h5r.DATASET_REGION, selection._id)
+
+    def shape(self, ref):
+        """ Get the shape of the target dataspace referred to by *ref*. """
+        sid = h5r.get_region(ref, self.id)
+        return sid.shape
+
+    def selection(self, ref):
+        """ Get the shape of the target dataspace selection referred to by *ref*
+        """
+        from . import selections
+        sid = h5r.get_region(ref, self.id)
+        return selections.guess_shape(sid)
+
+
+class HLObject(CommonStateObject):
+
+    """
+        Base class for high-level interface objects.
+    """
+
+    @property
+    def file(self):
+        """ Return a File instance associated with this object """
+        import files
+        return files.File(self.id)
+
+    @property
+    def name(self):
+        """ Return the full name of this object.  None if anonymous. """
+        return self._d(h5i.get_name(self.id))
+
+    @property
+    def parent(self):
+        """Return the parent group of this object.
+
+        This is always equivalent to obj.file[posixpath.dirname(obj.name)].
+        ValueError if this object is anonymous.
+        """
+        if self.name is None:
+            raise ValueError("Parent of an anonymous object is undefined")
+        return self.file[posixpath.dirname(self.name)]
+
+    @property
+    def id(self):
+        """ Low-level identifier appropriate for this object """
+        return self._id
+
+    @property
+    def ref(self):
+        """ An (opaque) HDF5 reference to this object """
+        return h5r.create(self.id, b'.', h5r.OBJECT)
+
+    @property
+    def regionref(self):
+        """Create a region reference (Datasets only).
+
+        The syntax is regionref[<slices>]. For example, dset.regionref[...]
+        creates a region reference in which the whole dataset is selected.
+
+        Can also be used to determine the shape of the referenced dataset
+        (via .shape property), or the shape of the selection (via the
+        .selection property).
+        """
+        return _RegionProxy(self)
+
+    @property
+    def attrs(self):
+        """ Attributes attached to this object """
+        import attrs
+        return attrs.AttributeManager(self)
+
+    def __init__(self, oid):
+        """ Setup this object, given its low-level identifier """
+        self._id = oid
+
+    def __hash__(self):
+        return hash(self.id)
+
+    def __eq__(self, other):
+        if hasattr(other, 'id'):
+            return self.id == other.id
+        return False
+
+    def __ne__(self, other):
+        return not self.__eq__(other)
+
+    def __nonzero__(self):
+        return bool(self.id)
+
+
+class View(object):
+
+    def __init__(self, obj):
+        self._obj = obj
+
+    def __len__(self):
+        return len(self._obj)
+
+
+class KeyView(View):
+
+    def __contains__(self, what):
+        return what in self._obj
+
+    def __iter__(self):
+        for x in self._obj:
+            yield x
+
+
+class ValueView(View):
+
+    def __contains__(self, what):
+        raise TypeError("Containership testing doesn't work for values. :(")
+
+    def __iter__(self):
+        for x in self._obj:
+            yield self._obj.get(x)
+
+
+class ItemView(View):
+
+    def __contains__(self, what):
+        if what[0] in self._obj:
+            return what[1] == self._obj.get(what[0])
+        return False
+
+    def __iter__(self):
+        for x in self._obj:
+            yield (x, self._obj.get(x))
+
+
+class DictCompat(object):
+
+    """
+        Contains dictionary-style compatibility methods for groups and
+        attributes.
+    """
+
+    def get(self, name, default=None):
+        """ Retrieve the member, or return default if it doesn't exist """
+        try:
+            return self[name]
+        except KeyError:
+            return default
+
+    if py3:
+        def keys(self):
+            """ Get a view object on member names """
+            return KeyView(self)
+
+        def values(self):
+            """ Get a view object on member objects """
+            return ValueView(self)
+
+        def items(self):
+            """ Get a view object on member items """
+            return ItemView(self)
+
+    else:
+        def keys(self):
+            """ Get a list containing member names """
+            return list(self)
+
+        def iterkeys(self):
+            """ Get an iterator over member names """
+            return iter(self)
+
+        def values(self):
+            """ Get a list containing member objects """
+            return [self.get(x) for x in self]
+
+        def itervalues(self):
+            """ Get an iterator over member objects """
+            for x in self:
+                yield self.get(x)
+
+        def items(self):
+            """ Get a list of tuples containing (name, object) pairs """
+            return [(x, self.get(x)) for x in self]
+
+        def iteritems(self):
+            """ Get an iterator over (name, object) pairs """
+            for x in self:
+                yield (x, self.get(x))
diff --git a/h5py/_hl/dataset.py b/h5py/_hl/dataset.py
new file mode 100644
index 0000000..b530788
--- /dev/null
+++ b/h5py/_hl/dataset.py
@@ -0,0 +1,625 @@
+# This file is part of h5py, a Python interface to the HDF5 library.
+#
+# http://www.h5py.org
+#
+# Copyright 2008-2013 Andrew Collette and contributors
+#
+# License:  Standard 3-clause BSD; see "license.txt" for full license terms
+#           and contributor agreement.
+
+import posixpath as pp
+import sys
+import numpy
+
+import h5py
+from h5py import h5s, h5t, h5r, h5d
+from .base import HLObject, py3
+from . import filters
+from . import selections as sel
+from . import selections2 as sel2
+
+def readtime_dtype(basetype, names):
+    """ Make a NumPy dtype appropriate for reading """
+
+    if basetype.kind == 'O':
+        # Special-dtype fields break indexing
+        basetype = numpy.dtype('O')
+
+    if len(names) == 0:  # Not compound, or we want all fields
+        return basetype
+
+    if basetype.names is None:  # Names provided, but not compound
+        raise ValueError("Field names only allowed for compound types")
+
+    for name in names:  # Check all names are legal
+        if not name in basetype.names:
+            raise ValueError("Field %s does not appear in this type." % name)
+
+    return numpy.dtype([(name, basetype.fields[name][0]) for name in names])
+
+def make_new_dset(parent, shape=None, dtype=None, data=None,
+                 chunks=None, compression=None, shuffle=None,
+                    fletcher32=None, maxshape=None, compression_opts=None,
+                  fillvalue=None, scaleoffset=None, track_times=None):
+    """ Return a new low-level dataset identifier
+
+    Only creates anonymous datasets.
+    """
+
+    # Convert data to a C-contiguous ndarray
+    if data is not None:
+        import base
+        data = numpy.asarray(data, order="C", dtype=base.guess_dtype(data))
+
+    # Validate shape
+    if shape is None:
+        if data is None:
+            raise TypeError("Either data or shape must be specified")
+        shape = data.shape
+    else:
+        shape = tuple(shape)
+        if data is not None and (numpy.product(shape) != numpy.product(data.shape)):
+            raise ValueError("Shape tuple is incompatible with data")
+
+    if isinstance(dtype, h5py.Datatype):
+        # Named types are used as-is
+        tid = dtype.id
+        dtype = tid.dtype  # Following code needs this
+    else:
+        # Validate dtype
+        if dtype is None and data is None:
+            dtype = numpy.dtype("=f4")
+        elif dtype is None and data is not None:
+            dtype = data.dtype
+        else:
+            dtype = numpy.dtype(dtype)
+        tid = h5t.py_create(dtype, logical=1)
+
+    # Legacy
+    if any((compression, shuffle, fletcher32, maxshape,scaleoffset)) and chunks is False:
+        raise ValueError("Chunked format required for given storage options")
+
+    # Legacy
+    if compression is True:
+        if compression_opts is None:
+            compression_opts = 4
+        compression = 'gzip'
+
+    # Legacy
+    if compression in range(10):
+        if compression_opts is not None:
+            raise TypeError("Conflict in compression options")
+        compression_opts = compression
+        compression = 'gzip'
+
+    dcpl = filters.generate_dcpl(shape, dtype, chunks, compression, compression_opts,
+                  shuffle, fletcher32, maxshape, scaleoffset)
+
+    if fillvalue is not None:
+        fillvalue = numpy.array(fillvalue)
+        dcpl.set_fill_value(fillvalue)
+
+    if track_times in (True, False):
+        dcpl.set_obj_track_times(track_times)
+    elif track_times is not None:
+        raise TypeError("track_times must be either True or False")
+
+    if maxshape is not None:
+        maxshape = tuple(m if m is not None else h5s.UNLIMITED for m in maxshape)
+    sid = h5s.create_simple(shape, maxshape)
+
+
+    dset_id = h5d.create(parent.id, None, tid, sid, dcpl=dcpl)
+
+    if data is not None:
+        dset_id.write(h5s.ALL, h5s.ALL, data)
+
+    return dset_id
+
+
+class AstypeContext(object):
+
+    def __init__(self, dset, dtype):
+        self._dset = dset
+        self._dtype = numpy.dtype(dtype)
+
+    def __enter__(self):
+        self._dset._local.astype = self._dtype
+
+    def __exit__(self, *args):
+        self._dset._local.astype = None
+
+
+class Dataset(HLObject):
+
+    """
+        Represents an HDF5 dataset
+    """
+        
+    def astype(self, dtype):
+        """ Get a context manager allowing you to perform reads to a
+        different destination type, e.g.:
+
+        >>> with dataset.astype('f8'):
+        ...     double_precision = dataset[0:100:2]
+        """
+        return AstypeContext(self, dtype)
+
+    @property
+    def dims(self):
+        from . dims import DimensionManager
+        return DimensionManager(self)
+
+    @property
+    def shape(self):
+        """Numpy-style shape tuple giving dataset dimensions"""
+        return self.id.shape
+    @shape.setter
+    def shape(self, shape):
+        self.resize(shape)
+
+    @property
+    def size(self):
+        """Numpy-style attribute giving the total dataset size"""
+        return numpy.prod(self.shape)
+
+    @property
+    def dtype(self):
+        """Numpy dtype representing the datatype"""
+        return self.id.dtype
+
+    @property
+    def value(self):
+        """  Alias for dataset[()] """
+        DeprecationWarning("dataset.value has been deprecated. "
+            "Use dataset[()] instead.")
+        return self[()]
+
+    @property
+    def chunks(self):
+        """Dataset chunks (or None)"""
+        dcpl = self._dcpl
+        if dcpl.get_layout() == h5d.CHUNKED:
+            return dcpl.get_chunk()
+        return None
+
+    @property
+    def compression(self):
+        """Compression strategy (or None)"""
+        for x in ('gzip','lzf','szip'):
+            if x in self._filters:
+                return x
+        return None
+
+    @property
+    def compression_opts(self):
+        """ Compression setting.  Int(0-9) for gzip, 2-tuple for szip. """
+        return self._filters.get(self.compression, None)
+
+    @property
+    def shuffle(self):
+        """Shuffle filter present (T/F)"""
+        return 'shuffle' in self._filters
+
+    @property
+    def fletcher32(self):
+        """Fletcher32 filter is present (T/F)"""
+        return 'fletcher32' in self._filters
+
+    @property
+    def scaleoffset(self):
+        """Scale/offset filter settings. For integer data types, this is
+        the number of bits stored, or 0 for auto-detected. For floating
+        point data types, this is the number of decimal places retained.
+        If the scale/offset filter is not in use, this is None."""
+        try:
+            return self._filters['scaleoffset'][1]
+        except KeyError:
+            return None
+
+    @property
+    def maxshape(self):
+        """Shape up to which this dataset can be resized.  Axes with value
+        None have no resize limit. """
+        space = self.id.get_space()
+        dims = space.get_simple_extent_dims(True)
+        return tuple(x if x != h5s.UNLIMITED else None for x in dims)
+
+    @property
+    def fillvalue(self):
+        """Fill value for this dataset (0 by default)"""
+        arr = numpy.ndarray((1,), dtype=self.dtype)
+        dcpl = self._dcpl.get_fill_value(arr)
+        return arr[0]
+
+    def __init__(self, bind):
+        """ Create a new Dataset object by binding to a low-level DatasetID.
+        """
+        from threading import local
+
+        if not isinstance(bind, h5d.DatasetID):
+            raise ValueError("%s is not a DatasetID" % bind)
+        HLObject.__init__(self, bind)
+
+        self._dcpl = self.id.get_create_plist()
+        self._filters = filters.get_filters(self._dcpl)
+        self._local = local()
+        self._local.astype = None
+
+    def resize(self, size, axis=None):
+        """ Resize the dataset, or the specified axis.
+
+        The dataset must be stored in chunked format; it can be resized up to
+        the "maximum shape" (keyword maxshape) specified at creation time.
+        The rank of the dataset cannot be changed.
+
+        "Size" should be a shape tuple, or if an axis is specified, an integer.
+
+        BEWARE: This functions differently than the NumPy resize() method!
+        The data is not "reshuffled" to fit in the new shape; each axis is
+        grown or shrunk independently.  The coordinates of existing data are
+        fixed.
+        """
+        if self.chunks is None:
+            raise TypeError("Only chunked datasets can be resized")
+
+        if axis is not None:
+            if not (axis >=0 and axis < self.id.rank):
+                raise ValueError("Invalid axis (0 to %s allowed)" % (self.id.rank-1))
+            try:
+                newlen = int(size)
+            except TypeError:
+                raise TypeError("Argument must be a single int if axis is specified")
+            size = list(self.shape)
+            size[axis] = newlen
+
+        size = tuple(size)
+        self.id.set_extent(size)
+        #h5f.flush(self.id)  # THG recommends
+
+    def __len__(self):
+        """ The size of the first axis.  TypeError if scalar.
+
+        Limited to 2**32 on 32-bit systems; Dataset.len() is preferred.
+        """
+        size = self.len()
+        if size > sys.maxsize:
+            raise OverflowError("Value too big for Python's __len__; use Dataset.len() instead.")
+        return size
+
+    def len(self):
+        """ The size of the first axis.  TypeError if scalar.
+
+        Use of this method is preferred to len(dset), as Python's built-in
+        len() cannot handle values greater then 2**32 on 32-bit systems.
+        """
+        shape = self.shape
+        if len(shape) == 0:
+            raise TypeError("Attempt to take len() of scalar dataset")
+        return shape[0]
+
+    def __iter__(self):
+        """ Iterate over the first axis.  TypeError if scalar.
+
+        BEWARE: Modifications to the yielded data are *NOT* written to file.
+        """
+        shape = self.shape
+        if len(shape) == 0:
+            raise TypeError("Can't iterate over a scalar dataset")
+        for i in xrange(shape[0]):
+            yield self[i]
+
+
+    def __getitem__(self, args):
+        """ Read a slice from the HDF5 dataset.
+
+        Takes slices and recarray-style field names (more than one is
+        allowed!) in any order.  Obeys basic NumPy rules, including
+        broadcasting.
+
+        Also supports:
+
+        * Boolean "mask" array indexing
+        """
+        args = args if isinstance(args, tuple) else (args,)
+
+        # Sort field indices from the rest of the args.
+        names = tuple(x for x in args if isinstance(x, str))
+        args = tuple(x for x in args if not isinstance(x, str))
+
+        def strip_fields(basetype):
+            """ Strip extra dtype information from special types """
+            if basetype.kind == 'O':
+                return numpy.dtype('O')
+            if basetype.fields is not None:
+                if basetype.kind in ('i','u'):
+                    return basetype.fields['enum'][0]
+                fields = []
+                for name in basetype.names:
+                    fff = basetype.fields[name]
+                    if len(fff) == 3:
+                        (subtype, offset, meta) = fff
+                    else:
+                        subtype, meta = fff
+                        offset = 0
+                    subtype = strip_fields(subtype)
+                    fields.append((name, subtype))
+                return numpy.dtype(fields)
+            return basetype
+
+        def readtime_dtype(basetype, names):
+            """ Make a NumPy dtype appropriate for reading """
+
+            basetype = strip_fields(basetype)
+
+            if len(names) == 0:  # Not compound, or we want all fields
+                return basetype
+
+            if basetype.names is None:  # Names provided, but not compound
+                raise ValueError("Field names only allowed for compound types")
+
+            for name in names:  # Check all names are legal
+                if not name in basetype.names:
+                    raise ValueError("Field %s does not appear in this type." % name)
+
+            return numpy.dtype([(name, basetype.fields[name][0]) for name in names])
+
+        if self._local.astype is not None:
+            new_dtype = readtime_dtype(self._local.astype, names)
+        else:
+            # This is necessary because in the case of array types, NumPy
+            # discards the array information at the top level.
+            new_dtype = readtime_dtype(self.id.dtype, names)
+        mtype = h5t.py_create(new_dtype)
+
+        # === Special-case region references ====
+
+        if len(args) == 1 and isinstance(args[0], h5r.RegionReference):
+
+            obj = h5r.dereference(args[0], self.id)
+            if obj != self.id:
+                raise ValueError("Region reference must point to this dataset")
+
+            sid = h5r.get_region(args[0], self.id)
+            mshape = sel.guess_shape(sid)
+            if mshape is None:
+                return np.array((0,), dtype=new_dtype)
+            if numpy.product(mshape) == 0:
+                return np.array(mshape, dtype=new_dtype)
+            out = numpy.empty(mshape, dtype=new_dtype)
+            sid_out = h5s.create_simple(mshape)
+            sid_out.select_all()
+            self.id.read(sid_out, sid, out, mtype)
+            return out
+
+        # === Check for zero-sized datasets =====
+
+        if numpy.product(self.shape) == 0:
+            # These are the only access methods NumPy allows for such objects
+            if args == (Ellipsis,) or args == tuple():
+                return numpy.empty(self.shape, dtype=new_dtype)
+            
+        # === Scalar dataspaces =================
+
+        if self.shape == ():
+            fspace = self.id.get_space()
+            selection = sel2.select_read(fspace, args)
+            arr = numpy.ndarray(selection.mshape, dtype=new_dtype)
+            for mspace, fspace in selection:
+                self.id.read(mspace, fspace, arr, mtype)
+            if len(names) == 1:
+                arr = arr[names[0]]
+            if selection.mshape is None:
+                return arr[()]
+            return arr
+
+        # === Everything else ===================
+
+        # Perform the dataspace selection.
+        selection = sel.select(self.shape, args, dsid=self.id)
+
+        if selection.nselect == 0:
+            return numpy.ndarray(selection.mshape, dtype=new_dtype)
+
+        # Up-converting to (1,) so that numpy.ndarray correctly creates
+        # np.void rows in case of multi-field dtype. (issue 135)
+        single_element = selection.mshape == ()
+        mshape = (1,) if single_element else selection.mshape
+        arr = numpy.ndarray(mshape, new_dtype, order='C')
+
+        # HDF5 has a bug where if the memory shape has a different rank
+        # than the dataset, the read is very slow
+        if len(mshape) < len(self.shape):
+            # pad with ones
+            mshape = (1,)*(len(self.shape)-len(mshape)) + mshape
+
+        # Perfom the actual read
+        mspace = h5s.create_simple(mshape)
+        fspace = selection._id
+        self.id.read(mspace, fspace, arr, mtype)
+
+        # Patch up the output for NumPy
+        if len(names) == 1:
+            arr = arr[names[0]]     # Single-field recarray convention
+        if arr.shape == ():
+            arr = numpy.asscalar(arr)
+        if single_element:
+            arr = arr[0]
+        return arr
+
+    def __setitem__(self, args, val):
+        """ Write to the HDF5 dataset from a Numpy array.
+
+        NumPy's broadcasting rules are honored, for "simple" indexing
+        (slices and integers).  For advanced indexing, the shapes must
+        match.
+        """
+        args = args if isinstance(args, tuple) else (args,)
+
+        # Sort field indices from the slicing
+        names = tuple(x for x in args if isinstance(x, str))
+        args = tuple(x for x in args if not isinstance(x, str))
+
+        # Generally we try to avoid converting the arrays on the Python
+        # side.  However, for compound literals this is unavoidable.
+        if self.dtype.kind == "O" or \
+          (self.dtype.kind == 'V' and \
+          (not isinstance(val, numpy.ndarray) or val.dtype.kind != 'V') and \
+          (self.dtype.subdtype == None)):
+            if len(names) == 1 and self.dtype.fields is not None:
+                # Single field selected for write, from a non-array source
+                if not names[0] in self.dtype.fields:
+                    raise ValueError("No such field for indexing: %s" % names[0])
+                dtype = self.dtype.fields[names[0]][0]
+                cast_compound = True
+            else:
+                dtype = self.dtype
+                cast_compound = False
+
+            val = numpy.asarray(val, dtype=dtype, order='C')
+            if cast_compound:
+                val = val.astype(numpy.dtype([(names[0], dtype)]))
+        else:
+            val = numpy.asarray(val, order='C')
+
+        # Check for array dtype compatibility and convert
+        if self.dtype.subdtype is not None:
+            shp = self.dtype.subdtype[1]
+            valshp = val.shape[-len(shp):]
+            if valshp != shp:  # Last dimension has to match
+                raise TypeError("When writing to array types, last N dimensions have to match (got %s, but should be %s)" % (valshp, shp,))
+            mtype = h5t.py_create(numpy.dtype((val.dtype, shp)))
+            mshape = val.shape[0:len(val.shape)-len(shp)]
+
+        # Make a compound memory type if field-name slicing is required
+        elif len(names) != 0:
+
+            mshape = val.shape
+
+            # Catch common errors
+            if self.dtype.fields is None:
+                raise TypeError("Illegal slicing argument (not a compound dataset)")
+            mismatch = [x for x in names if x not in self.dtype.fields]
+            if len(mismatch) != 0:
+                mismatch = ", ".join('"%s"'%x for x in mismatch)
+                raise ValueError("Illegal slicing argument (fields %s not in dataset type)" % mismatch)
+        
+            # Write non-compound source into a single dataset field
+            if len(names) == 1 and val.dtype.fields is None:
+                subtype = h5y.py_create(val.dtype)
+                mtype = h5t.create(h5t.COMPOUND, subtype.get_size())
+                mtype.insert(self._e(names[0]), 0, subtype)
+
+            # Make a new source type keeping only the requested fields
+            else:
+                fieldnames = [x for x in val.dtype.names if x in names] # Keep source order
+                mtype = h5t.create(h5t.COMPOUND, val.dtype.itemsize)
+                for fieldname in fieldnames:
+                    subtype = h5t.py_create(val.dtype.fields[fieldname][0])
+                    offset = val.dtype.fields[fieldname][1]
+                    mtype.insert(self._e(fieldname), offset, subtype)
+
+        # Use mtype derived from array (let DatasetID.write figure it out)
+        else:
+            mshape = val.shape
+            mtype = None
+
+        # Perform the dataspace selection
+        selection = sel.select(self.shape, args, dsid=self.id)
+
+        if selection.nselect == 0:
+            return
+
+        # Broadcast scalars if necessary.
+        if (mshape == () and selection.mshape != ()):
+            if self.dtype.subdtype is not None:
+                raise TypeError("Scalar broadcasting is not supported for array dtypes")
+            val2 = numpy.empty(selection.mshape[-1], dtype=val.dtype)
+            val2[...] = val
+            val = val2
+            mshape = val.shape
+
+        # Perform the write, with broadcasting
+        # Be careful to pad memory shape with ones to avoid HDF5 chunking
+        # glitch, which kicks in for mismatched memory/file selections
+        if(len(mshape) < len(self.shape)):
+            mshape_pad = (1,)*(len(self.shape)-len(mshape)) + mshape
+        else:
+            mshape_pad = mshape
+        mspace = h5s.create_simple(mshape_pad, (h5s.UNLIMITED,)*len(mshape_pad))
+        for fspace in selection.broadcast(mshape):
+            self.id.write(mspace, fspace, val, mtype)
+
+    def read_direct(self, dest, source_sel=None, dest_sel=None):
+        """ Read data directly from HDF5 into an existing NumPy array.
+
+        The destination array must be C-contiguous and writable.
+        Selections must be the output of numpy.s_[<args>].
+
+        Broadcasting is supported for simple indexing.
+        """
+
+        if source_sel is None:
+            source_sel = sel.SimpleSelection(self.shape)
+        else:
+            source_sel = sel.select(self.shape, source_sel, self.id)  # for numpy.s_
+        fspace = source_sel._id
+
+        if dest_sel is None:
+            dest_sel = sel.SimpleSelection(dest.shape)
+        else:
+            dest_sel = sel.select(dest.shape, dest_sel, self.id)
+
+        for mspace in dest_sel.broadcast(source_sel.mshape):
+            self.id.read(mspace, fspace, dest)
+
+    def write_direct(self, source, source_sel=None, dest_sel=None):
+        """ Write data directly to HDF5 from a NumPy array.
+
+        The source array must be C-contiguous.  Selections must be
+        the output of numpy.s_[<args>].
+
+        Broadcasting is supported for simple indexing.
+        """
+        if source_sel is None:
+            source_sel = sel.SimpleSelection(source.shape)
+        else:
+            source_sel = sel.select(source.shape, source_sel, self.id)  # for numpy.s_
+        mspace = source_sel._id
+
+        if dest_sel is None:
+            dest_sel = sel.SimpleSelection(self.shape)
+        else:
+            dest_sel = sel.select(self.shape, dest_sel, self.id)
+
+        for fspace in dest_sel.broadcast(source_sel.mshape):
+            self.id.write(mspace, fspace, source)
+
+    def __array__(self, dtype=None):
+        """ Create a Numpy array containing the whole dataset.  DON'T THINK
+        THIS MEANS DATASETS ARE INTERCHANGABLE WITH ARRAYS.  For one thing,
+        you have to read the whole dataset everytime this method is called.
+        """
+        arr = numpy.empty(self.shape, dtype=self.dtype if dtype is None else dtype)
+
+        # Special case for (0,)*-shape datasets
+        if numpy.product(self.shape) == 0:
+            return arr
+
+        self.read_direct(arr)
+        return arr
+
+    def __repr__(self):
+        if not self:
+            r = u'<Closed HDF5 dataset>'
+        else:
+            if self.name is None:
+                namestr = u'("anonymous")'
+            else:
+                name = pp.basename(pp.normpath(self.name))
+                namestr = u'"%s"' % (name if name != u'' else u'/')
+            r = u'<HDF5 dataset %s: shape %s, type "%s">' % \
+                (namestr, self.shape, self.dtype.str)
+        if py3:
+            return r
+        return r.encode('utf8')
diff --git a/h5py/_hl/datatype.py b/h5py/_hl/datatype.py
new file mode 100644
index 0000000..2cc479c
--- /dev/null
+++ b/h5py/_hl/datatype.py
@@ -0,0 +1,48 @@
+# This file is part of h5py, a Python interface to the HDF5 library.
+#
+# http://www.h5py.org
+#
+# Copyright 2008-2013 Andrew Collette and contributors
+#
+# License:  Standard 3-clause BSD; see "license.txt" for full license terms
+#           and contributor agreement.
+
+import posixpath as pp
+
+from ..h5t import TypeID
+from .base import HLObject
+
+class Datatype(HLObject):
+
+    """
+        Represents an HDF5 named datatype stored in a file.
+
+        To store a datatype, simply assign it to a name in a group:
+
+        >>> MyGroup["name"] = numpy.dtype("f")
+        >>> named_type = MyGroup["name"]
+        >>> assert named_type.dtype == numpy.dtype("f")
+    """
+
+    @property
+    def dtype(self):
+        """Numpy dtype equivalent for this datatype"""
+        return self.id.dtype
+
+    def __init__(self, bind):
+        """ Create a new Datatype object by binding to a low-level TypeID.
+        """
+        if not isinstance(bind, TypeID):
+            raise ValueError("%s is not a TypeID" % bind)
+        HLObject.__init__(self, bind)
+
+    def __repr__(self):
+        if not self.id:
+            return "<Closed HDF5 named type>"
+        if self.name is None:
+            namestr = '("anonymous")'
+        else:
+            name = pp.basename(pp.normpath(self.name))
+            namestr = '"%s"' % (name if name != '' else '/')
+        return '<HDF5 named type %s (dtype %s)>' % \
+            (namestr, self.dtype.str)
diff --git a/h5py/_hl/dims.py b/h5py/_hl/dims.py
new file mode 100644
index 0000000..8bb62ec
--- /dev/null
+++ b/h5py/_hl/dims.py
@@ -0,0 +1,127 @@
+# This file is part of h5py, a Python interface to the HDF5 library.
+#
+# http://www.h5py.org
+#
+# Copyright 2008-2013 Andrew Collette and contributors
+#
+# License:  Standard 3-clause BSD; see "license.txt" for full license terms
+#           and contributor agreement.
+
+import numpy
+
+from h5py import h5ds
+from . import base
+from .dataset import Dataset, readtime_dtype
+
+
+class DimensionProxy(base.CommonStateObject):
+
+    @property
+    def label(self):
+        #return h5ds.get_label(self._id, self._dimension)
+        # Produces a segfault for a non-existent label (Fixed in hdf5-1.8.8).
+        # Here is a workaround:
+        try:
+            dset = Dataset(self._id)
+            return self._d(dset.attrs['DIMENSION_LABELS'][self._dimension])
+        except (KeyError, IndexError):
+            return ''
+    @label.setter
+    def label(self, val):
+        h5ds.set_label(self._id, self._dimension, self._e(val))
+
+    def __init__(self, id, dimension):
+        self._id = id
+        self._dimension = dimension
+
+    def __hash__(self):
+        return hash((type(self), self._id, self._dimension))
+
+    def __eq__(self, other):
+        return hash(self) == hash(other)
+
+    def __iter__(self):
+        for k in self.keys():
+            yield k
+
+    def __len__(self):
+        return h5ds.get_num_scales(self._id, self._dimension)
+
+    def __getitem__(self, item):
+        if isinstance(item, int):
+            scales = []
+            def f(dsid):
+                scales.append(Dataset(dsid))
+            h5ds.iterate(self._id, self._dimension, f, 0)
+            return scales[item]
+        else:
+            def f(dsid):
+                if h5ds.get_scale_name(dsid) == self._e(item):
+                    return Dataset(dsid)
+            res = h5ds.iterate(self._id, self._dimension, f, 0)
+            if res is None:
+                raise KeyError('%s not found' % item)
+            return res
+
+    def attach_scale(self, dset):
+        h5ds.attach_scale(self._id, dset.id, self._dimension)
+
+    def detach_scale(self, dset):
+        h5ds.detach_scale(self._id, dset.id, self._dimension)
+
+    def items(self):
+        scales = []
+        def f(dsid):
+            scales.append(dsid)
+        h5ds.iterate(self._id, self._dimension, f, 0)
+        return [
+            (self._d(h5ds.get_scale_name(id)), Dataset(id))
+            for id in scales
+            ]
+
+    def keys(self):
+        return [key for (key, val) in self.items()]
+
+    def values(self):
+        return [val for (key, val) in self.items()]
+
+    def __repr__(self):
+        if not self._id:
+            return "<Dimension of closed HDF5 dataset>"
+        return ('<"%s" dimension %d of HDF5 dataset at %s>'
+               % (self.label, self._dimension, id(self._id)))
+
+
+class DimensionManager(base.DictCompat, base.CommonStateObject):
+
+    """
+    """
+
+    def __init__(self, parent):
+        """ Private constructor.
+        """
+        self._id = parent.id
+
+    def __getitem__(self, index):
+        """ Return a Dimension object
+        """
+        if index > len(self) - 1:
+            raise IndexError('Index out of range')
+        return DimensionProxy(self._id, index)
+
+    def __len__(self):
+        """ Number of dimensions associated with the dataset. """
+        return len(Dataset(self._id).shape)
+
+    def __iter__(self):
+        """ Iterate over the dimensions. """
+        for i in range(len(self)):
+            yield self[i]
+
+    def __repr__(self):
+        if not self._id:
+            return "<Dimensions of closed HDF5 dataset>"
+        return "<Dimensions of HDF5 object at %s>" % id(self._id)
+
+    def create_scale(self, dset, name=''):
+        h5ds.set_scale(dset.id, self._e(name))
diff --git a/h5py/_hl/files.py b/h5py/_hl/files.py
new file mode 100644
index 0000000..8bae42d
--- /dev/null
+++ b/h5py/_hl/files.py
@@ -0,0 +1,244 @@
+# This file is part of h5py, a Python interface to the HDF5 library.
+#
+# http://www.h5py.org
+#
+# Copyright 2008-2013 Andrew Collette and contributors
+#
+# License:  Standard 3-clause BSD; see "license.txt" for full license terms
+#           and contributor agreement.
+
+import weakref
+import sys
+import os
+
+from .base import HLObject, py3
+from .group import Group
+from h5py import h5, h5f, h5p, h5i, h5fd, h5t, _objects
+from h5py import version
+
+mpi = h5.get_config().mpi
+hdf5_version = version.hdf5_version_tuple[0:3]
+
+if mpi:
+    import mpi4py
+
+libver_dict = {'earliest': h5f.LIBVER_EARLIEST, 'latest': h5f.LIBVER_LATEST}
+libver_dict_r = dict((y, x) for x, y in libver_dict.iteritems())
+
+
+def make_fapl(driver, libver, **kwds):
+    """ Set up a file access property list """
+    plist = h5p.create(h5p.FILE_ACCESS)
+    plist.set_fclose_degree(h5f.CLOSE_STRONG)
+
+    if libver is not None:
+        if libver in libver_dict:
+            low = libver_dict[libver]
+            high = h5f.LIBVER_LATEST
+        else:
+            low, high = (libver_dict[x] for x in libver)
+        plist.set_libver_bounds(low, high)
+
+    if driver is None or (driver == 'windows' and sys.platform == 'win32'):
+        return plist
+
+    if(driver == 'sec2'):
+        plist.set_fapl_sec2(**kwds)
+    elif(driver == 'stdio'):
+        plist.set_fapl_stdio(**kwds)
+    elif(driver == 'core'):
+        plist.set_fapl_core(**kwds)
+    elif(driver == 'family'):
+        plist.set_fapl_family(memb_fapl=plist.copy(), **kwds)
+    elif(driver == 'mpio'):
+        kwds.setdefault('info', mpi4py.MPI.Info())
+        plist.set_fapl_mpio(**kwds)
+    else:
+        raise ValueError('Unknown driver type "%s"' % driver)
+
+    return plist
+
+
+def make_fid(name, mode, userblock_size, fapl, fcpl=None):
+    """ Get a new FileID by opening or creating a file.
+    Also validates mode argument."""
+
+    if userblock_size is not None:
+        if mode in ('r', 'r+'):
+            raise ValueError("User block may only be specified "
+                             "when creating a file")
+        try:
+            userblock_size = int(userblock_size)
+        except (TypeError, ValueError):
+            raise ValueError("User block size must be an integer")
+        if fcpl is None:
+            fcpl = h5p.create(h5p.FILE_CREATE)
+        fcpl.set_userblock(userblock_size)
+
+    if mode == 'r':
+        fid = h5f.open(name, h5f.ACC_RDONLY, fapl=fapl)
+    elif mode == 'r+':
+        fid = h5f.open(name, h5f.ACC_RDWR, fapl=fapl)
+    elif mode == 'w-':
+        fid = h5f.create(name, h5f.ACC_EXCL, fapl=fapl, fcpl=fcpl)
+    elif mode == 'w':
+        fid = h5f.create(name, h5f.ACC_TRUNC, fapl=fapl, fcpl=fcpl)
+    elif mode == 'a' or mode is None:
+        try:
+            fid = h5f.open(name, h5f.ACC_RDWR, fapl=fapl)
+            try:
+                existing_fcpl = fid.get_create_plist()
+                if (userblock_size is not None and
+                        existing_fcpl.get_userblock() != userblock_size):
+                    raise ValueError("Requested userblock size (%d) does not match that of existing file (%d)" % (userblock_size, existing_fcpl.get_userblock()))
+            except:
+                fid.close()
+                raise
+        except IOError:
+            fid = h5f.create(name, h5f.ACC_EXCL, fapl=fapl, fcpl=fcpl)
+    else:
+        raise ValueError("Invalid mode; must be one of r, r+, w, w-, a")
+
+    return fid
+
+
+class File(Group):
+
+    """
+        Represents an HDF5 file.
+    """
+
+    @property
+    def attrs(self):
+        """ Attributes attached to this object """
+        # hdf5 complains that a file identifier is an invalid location for an
+        # attribute. Instead of self, pass the root group to AttributeManager:
+        import attrs
+        return attrs.AttributeManager(self['/'])
+
+    @property
+    def filename(self):
+        """File name on disk"""
+        name = h5f.get_name(self.fid)
+        try:
+            return name.decode(sys.getfilesystemencoding())
+        except (UnicodeError, LookupError):
+            return name
+
+    @property
+    def driver(self):
+        """Low-level HDF5 file driver used to open file"""
+        drivers = {h5fd.SEC2: 'sec2', h5fd.STDIO: 'stdio',
+                   h5fd.CORE: 'core', h5fd.FAMILY: 'family',
+                   h5fd.WINDOWS: 'windows', h5fd.MPIO: 'mpio',
+                   h5fd.MPIPOSIX: 'mpiposix'}
+        return drivers.get(self.fid.get_access_plist().get_driver(), 'unknown')
+
+    @property
+    def mode(self):
+        """ Python mode used to open file """
+        return {h5f.ACC_RDONLY: 'r',
+                h5f.ACC_RDWR: 'r+'}.get(self.fid.get_intent())
+
+    @property
+    def fid(self):
+        """File ID (backwards compatibility) """
+        return self.id
+
+    @property
+    def libver(self):
+        """File format version bounds (2-tuple: low, high)"""
+        bounds = self.id.get_access_plist().get_libver_bounds()
+        return tuple(libver_dict_r[x] for x in bounds)
+
+    @property
+    def userblock_size(self):
+        """ User block size (in bytes) """
+        fcpl = self.fid.get_create_plist()
+        return fcpl.get_userblock()
+
+
+    if mpi and hdf5_version >= (1, 8, 9):
+
+        @property
+        def atomic(self):
+            """ Set/get MPI-IO atomic mode 
+            """
+            return self.id.get_mpi_atomicity()
+
+        @atomic.setter
+        def atomic(self, value):
+            self.id.set_mpi_atomicity(value)
+
+
+    def __init__(self, name, mode=None, driver=None, 
+                 libver=None, userblock_size=None, **kwds):
+        """Create a new file object.
+
+        See the h5py user guide for a detailed explanation of the options.
+
+        name
+            Name of the file on disk.  Note: for files created with the 'core'
+            driver, HDF5 still requires this be non-empty.
+        driver
+            Name of the driver to use.  Legal values are None (default,
+            recommended), 'core', 'sec2', 'stdio', 'mpio'.
+        libver
+            Library version bounds.  Currently only the strings 'earliest'
+            and 'latest' are defined.
+        userblock
+            Desired size of user block.  Only allowed when creating a new
+            file (mode w or w-).
+        Additional keywords
+            Passed on to the selected file driver.
+        """
+        if isinstance(name, _objects.ObjectID):
+            fid = h5i.get_file_id(name)
+        else:
+            try:
+                # If the byte string doesn't match the default
+                # encoding, just pass it on as-is.  Note Unicode
+                # objects can always be encoded.
+                name = name.encode(sys.getfilesystemencoding())
+            except (UnicodeError, LookupError):
+                pass
+
+            fapl = make_fapl(driver, libver, **kwds)
+            fid = make_fid(name, mode, userblock_size, fapl)
+
+        Group.__init__(self, fid)
+
+    def close(self):
+        """ Close the file.  All open objects become invalid """
+        # TODO: find a way to square this with having issue 140
+        # Not clearing shared state introduces a tiny memory leak, but
+        # it goes like the number of files opened in a session.
+        self.id.close()
+
+    def flush(self):
+        """ Tell the HDF5 library to flush its buffers.
+        """
+        h5f.flush(self.fid)
+
+    def __enter__(self):
+        return self
+
+    def __exit__(self, *args):
+        if self.id:
+            self.close()
+
+    def __repr__(self):
+        if not self.id:
+            r = u'<Closed HDF5 file>'
+        else:
+            # Filename has to be forced to Unicode if it comes back bytes
+            # Mode is always a "native" string
+            filename = self.filename
+            if isinstance(filename, bytes):  # Can't decode fname
+                filename = filename.decode('utf8', 'replace')
+            r = u'<HDF5 file "%s" (mode %s)>' % (os.path.basename(filename),
+                                                 self.mode)
+
+        if py3:
+            return r
+        return r.encode('utf8')
diff --git a/h5py/_hl/filters.py b/h5py/_hl/filters.py
new file mode 100644
index 0000000..f81fa64
--- /dev/null
+++ b/h5py/_hl/filters.py
@@ -0,0 +1,304 @@
+# This file is part of h5py, a Python interface to the HDF5 library.
+#
+# http://www.h5py.org
+#
+# Copyright 2008-2013 Andrew Collette and contributors
+#
+# License:  Standard 3-clause BSD; see "license.txt" for full license terms
+#           and contributor agreement.
+
+"""
+    Implements support for HDF5 compression filters via the high-level
+    interface.  The following types of filter are available:
+
+    "gzip"
+        Standard DEFLATE-based compression, at integer levels from 0 to 9.
+        Built-in to all public versions of HDF5.  Use this if you want a
+        decent-to-good ratio, good portability, and don't mind waiting.
+
+    "lzf"
+        Custom compression filter for h5py.  This filter is much, much faster 
+        than gzip (roughly 10x in compression vs. gzip level 4, and 3x faster
+        in decompressing), but at the cost of a worse compression ratio.  Use
+        this if you want cheap compression and portability is not a concern.
+
+    "szip"
+        Access to the HDF5 SZIP encoder.  SZIP is a non-mainstream compression
+        format used in space science on integer and float datasets.  SZIP is
+        subject to license requirements, which means the encoder is not
+        guaranteed to be always available.  However, it is also much faster
+        than gzip.
+
+    The following constants in this module are also useful:
+
+    decode
+        Tuple of available filter names for decoding
+
+    encode
+        Tuple of available filter names for encoding 
+"""
+
+import numpy as np
+
+from h5py import h5s, h5z, h5p, h5d
+
+
+_COMP_FILTERS = {'gzip': h5z.FILTER_DEFLATE,
+                'szip': h5z.FILTER_SZIP,
+                'lzf': h5z.FILTER_LZF,
+                'shuffle': h5z.FILTER_SHUFFLE,
+                'fletcher32': h5z.FILTER_FLETCHER32,
+                'scaleoffset': h5z.FILTER_SCALEOFFSET }
+
+DEFAULT_GZIP = 4
+DEFAULT_SZIP = ('nn', 8)
+
+def _gen_filter_tuples():
+    decode = []
+    encode = []
+    for name, code in _COMP_FILTERS.iteritems():
+        if h5z.filter_avail(code):
+            info = h5z.get_filter_info(code)
+            if info & h5z.FILTER_CONFIG_ENCODE_ENABLED:
+                encode.append(name)
+            if info & h5z.FILTER_CONFIG_DECODE_ENABLED:
+                decode.append(name)
+
+    return tuple(decode), tuple(encode)
+
+decode, encode = _gen_filter_tuples()
+
+def generate_dcpl(shape, dtype, chunks, compression, compression_opts,
+                  shuffle, fletcher32, maxshape, scaleoffset):
+    """ Generate a dataset creation property list.
+
+    Undocumented and subject to change without warning.
+    """
+
+    if shape == ():
+        if any((chunks, compression, compression_opts, shuffle, fletcher32,
+                scaleoffset is not None)):
+            raise TypeError("Scalar datasets don't support chunk/filter options")
+        if maxshape and maxshape != ():
+            raise TypeError("Scalar datasets cannot be extended")
+        return h5p.create(h5p.DATASET_CREATE)
+
+    def rq_tuple(tpl, name):
+        """ Check if chunks/maxshape match dataset rank """
+        if tpl in (None, True):
+            return
+        try:
+            tpl = tuple(tpl)
+        except TypeError:
+            raise TypeError('"%s" argument must be None or a sequence object' % name)
+        if len(tpl) != len(shape):
+            raise ValueError('"%s" must have same rank as dataset shape' % name)
+
+    rq_tuple(chunks, 'chunks')
+    rq_tuple(maxshape, 'maxshape')
+
+    if compression is not None:
+
+        if compression not in encode:
+            raise ValueError('Compression filter "%s" is unavailable' % compression)
+
+        if compression == 'gzip':
+            if compression_opts is None:
+                gzip_level = DEFAULT_GZIP
+            elif compression_opts in range(10):
+                gzip_level = compression_opts
+            else:
+                raise ValueError("GZIP setting must be an integer from 0-9, not %r" % compression_opts)
+
+        elif compression == 'lzf':
+            if compression_opts is not None:
+                raise ValueError("LZF compression filter accepts no options")
+
+        elif compression == 'szip':
+            if compression_opts is None:
+                compression_opts = DEFAULT_SZIP
+
+            err = "SZIP options must be a 2-tuple ('ec'|'nn', even integer 0-32)"
+            try:
+                szmethod, szpix = compression_opts
+            except TypeError:
+                raise TypeError(err)
+            if szmethod not in ('ec', 'nn'):
+                raise ValueError(err)
+            if not (0<szpix<=32 and szpix%2 == 0):
+                raise ValueError(err)
+
+    elif compression_opts is not None:
+        # Can't specify just compression_opts by itself.
+        raise TypeError("Compression method must be specified")
+    
+    if scaleoffset is not None:
+        # scaleoffset must be an integer when it is not None or False,
+        # except for integral data, for which scaleoffset == True is
+        # permissible (will use SO_INT_MINBITS_DEFAULT)
+        
+        if scaleoffset < 0:
+            raise ValueError('scale factor must be >= 0')
+                
+        if dtype.kind == 'f':
+            if scaleoffset is True:
+                raise ValueError('integer scaleoffset must be provided for '
+                                 'floating point types')
+        elif dtype.kind in ('u', 'i'):
+            if scaleoffset is True:
+                scaleoffset = h5z.SO_INT_MINBITS_DEFAULT
+        else:
+            raise TypeError('scale/offset filter only supported for integer '
+                            'and floating-point types')
+        
+        # Scale/offset following fletcher32 in the filter chain will (almost?)
+        # always triggera a read error, as most scale/offset settings are
+        # lossy. Since fletcher32 must come first (see comment below) we
+        # simply prohibit the combination of fletcher32 and scale/offset.
+        if fletcher32:
+            raise ValueError('fletcher32 cannot be used with potentially lossy'
+                             ' scale/offset filter')
+    # End argument validation
+
+    if (chunks is True) or \
+    (chunks is None and any((shuffle, fletcher32, compression, maxshape, 
+                             scaleoffset is not None))):
+        chunks = guess_chunk(shape, maxshape, dtype.itemsize)
+        
+    if maxshape is True:
+        maxshape = (None,)*len(shape)
+
+    plist = h5p.create(h5p.DATASET_CREATE)
+    if chunks is not None:
+        plist.set_chunk(chunks)
+        plist.set_fill_time(h5d.FILL_TIME_ALLOC)  # prevent resize glitch
+
+    # MUST be first, to prevent 1.6/1.8 compatibility glitch
+    if fletcher32:
+        plist.set_fletcher32()
+
+    # scale-offset must come before shuffle and compression
+    if scaleoffset is not None:
+        if dtype.kind in ('u', 'i'):
+            plist.set_scaleoffset(h5z.SO_INT, scaleoffset)
+        else: # dtype.kind == 'f'
+            plist.set_scaleoffset(h5z.SO_FLOAT_DSCALE, scaleoffset)
+
+    if shuffle:
+        plist.set_shuffle()
+
+    if compression == 'gzip':
+        plist.set_deflate(gzip_level)
+    elif compression == 'lzf':
+        plist.set_filter(h5z.FILTER_LZF, h5z.FLAG_OPTIONAL)
+    elif compression == 'szip':
+        opts = {'ec': h5z.SZIP_EC_OPTION_MASK, 'nn': h5z.SZIP_NN_OPTION_MASK}
+        plist.set_szip(opts[szmethod], szpix)
+
+    return plist
+
+def get_filters(plist):
+    """ Extract a dictionary of active filters from a DCPL, along with
+    their settings.
+
+    Undocumented and subject to change without warning.
+    """
+
+    filters = {h5z.FILTER_DEFLATE: 'gzip', h5z.FILTER_SZIP: 'szip',
+               h5z.FILTER_SHUFFLE: 'shuffle', h5z.FILTER_FLETCHER32: 'fletcher32',
+               h5z.FILTER_LZF: 'lzf', h5z.FILTER_SCALEOFFSET: 'scaleoffset'}
+    szopts = {h5z.SZIP_EC_OPTION_MASK: 'ec', h5z.SZIP_NN_OPTION_MASK: 'nn'}
+
+    pipeline = {}
+
+    nfilters = plist.get_nfilters()
+
+    for i in range(nfilters):
+
+        code, flags, vals, desc = plist.get_filter(i)
+
+        if code == h5z.FILTER_DEFLATE:
+            vals = vals[0] # gzip level
+
+        elif code == h5z.FILTER_SZIP:
+            mask, pixels = vals[0:2]
+            if mask & h5z.SZIP_EC_OPTION_MASK:
+                mask = 'ec'
+            elif mask & h5z.SZIP_NN_OPTION_MASK:
+                mask = 'nn'
+            else:
+                raise TypeError("Unknown SZIP configuration")
+            vals = (mask, pixels)
+        elif code == h5z.FILTER_LZF:
+            vals = None
+        else:
+            if len(vals) == 0:
+                vals = None
+
+        pipeline[filters.get(code, str(code))] = vals
+
+    return pipeline
+
+CHUNK_BASE = 16*1024    # Multiplier by which chunks are adjusted
+CHUNK_MIN = 8*1024      # Soft lower limit (8k)
+CHUNK_MAX = 1024*1024   # Hard upper limit (1M)
+
+def guess_chunk(shape, maxshape, typesize):
+    """ Guess an appropriate chunk layout for a dataset, given its shape and
+    the size of each element in bytes.  Will allocate chunks only as large
+    as MAX_SIZE.  Chunks are generally close to some power-of-2 fraction of
+    each axis, slightly favoring bigger values for the last index.
+
+    Undocumented and subject to change without warning.
+    """
+
+    # For unlimited dimensions we have to guess 1024
+    shape = tuple((x if x!=0 else 1024) for i, x in enumerate(shape))
+
+    ndims = len(shape)
+    if ndims == 0:
+        raise ValueError("Chunks not allowed for scalar datasets.")
+
+    chunks = np.array(shape, dtype='=f8')
+    if not np.all(np.isfinite(chunks)):
+        raise ValueError("Illegal value in chunk tuple")
+
+    # Determine the optimal chunk size in bytes using a PyTables expression.
+    # This is kept as a float.
+    dset_size = np.product(chunks)*typesize
+    target_size = CHUNK_BASE * (2**np.log10(dset_size/(1024.*1024)))
+
+    if target_size > CHUNK_MAX:
+        target_size = CHUNK_MAX
+    elif target_size < CHUNK_MIN:
+        target_size = CHUNK_MIN
+
+    idx = 0
+    while True:
+        # Repeatedly loop over the axes, dividing them by 2.  Stop when:
+        # 1a. We're smaller than the target chunk size, OR
+        # 1b. We're within 50% of the target chunk size, AND
+        #  2. The chunk is smaller than the maximum chunk size
+
+        chunk_bytes = np.product(chunks)*typesize
+
+        if (chunk_bytes < target_size or \
+         abs(chunk_bytes-target_size)/target_size < 0.5) and \
+         chunk_bytes < CHUNK_MAX:
+            break
+
+        if np.product(chunks) == 1:
+            break  # Element size larger than CHUNK_MAX
+
+        chunks[idx%ndims] = np.ceil(chunks[idx%ndims] / 2.0)
+        idx += 1
+
+    return tuple(long(x) for x in chunks)
+
+
+
+
+
+
+
+
diff --git a/h5py/_hl/group.py b/h5py/_hl/group.py
new file mode 100644
index 0000000..2843b5e
--- /dev/null
+++ b/h5py/_hl/group.py
@@ -0,0 +1,498 @@
+# This file is part of h5py, a Python interface to the HDF5 library.
+#
+# http://www.h5py.org
+#
+# Copyright 2008-2013 Andrew Collette and contributors
+#
+# License:  Standard 3-clause BSD; see "license.txt" for full license terms
+#           and contributor agreement.
+
+import posixpath as pp
+
+import numpy
+import collections
+
+from h5py import h5g, h5i, h5o, h5r, h5t, h5l, h5p
+from . import base
+from .base import HLObject, DictCompat, py3
+from . import dataset
+from . import datatype
+
+
+class Group(HLObject, DictCompat):
+
+    """ Represents an HDF5 group.
+    """
+
+    def __init__(self, bind):
+        """ Create a new Group object by binding to a low-level GroupID.
+        """
+        if not isinstance(bind, h5g.GroupID):
+            raise ValueError("%s is not a GroupID" % bind)
+        HLObject.__init__(self, bind)
+
+    def create_group(self, name):
+        """ Create and return a new subgroup.
+
+        Name may be absolute or relative.  Fails if the target name already
+        exists.
+        """
+        name, lcpl = self._e(name, lcpl=True)
+        gid = h5g.create(self.id, name, lcpl=lcpl)
+        return Group(gid)
+
+    def create_dataset(self, name, shape=None, dtype=None, data=None, **kwds):
+        """ Create a new HDF5 dataset
+
+        name
+            Name of the dataset (absolute or relative).  Provide None to make
+            an anonymous dataset.
+        shape
+            Dataset shape.  Use "()" for scalar datasets.  Required if "data"
+            isn't provided.
+        dtype
+            Numpy dtype or string.  If omitted, dtype('f') will be used.
+            Required if "data" isn't provided; otherwise, overrides data
+            array's dtype.
+        data
+            Provide data to initialize the dataset.  If used, you can omit
+            shape and dtype arguments.
+
+        Keyword-only arguments:
+
+        chunks
+            (Tuple) Chunk shape, or True to enable auto-chunking.
+        maxshape
+            (Tuple) Make the dataset resizable up to this shape.  Use None for
+            axes you want to be unlimited.
+        compression
+            (String) Compression strategy.  Legal values are 'gzip', 'szip',
+            'lzf'.  Can also use an integer in range(10) indicating gzip.
+        compression_opts
+            Compression settings.  This is an integer for gzip, 2-tuple for
+            szip, etc.
+        scaleoffset
+            (Integer) Enable scale/offset filter for (usually) lossy
+            compression of integer or floating-point data. For integer
+            data, the value of scaleoffset is the number of bits to
+            retain (pass 0 to let HDF5 determine the minimum number of
+            bits necessary for lossless compression). For floating point
+            data, scaleoffset is the number of digits after the decimal
+            place to retain; stored values thus have absolute error
+            less than 0.5*10**(-scaleoffset).
+        shuffle
+            (T/F) Enable shuffle filter.
+        fletcher32
+            (T/F) Enable fletcher32 error detection. Not permitted in
+            conjunction with the scale/offset filter.
+        fillvalue
+            (Scalar) Use this value for uninitialized parts of the dataset.
+        track_times
+            (T/F) Enable dataset creation timestamps.
+        """
+
+        dsid = dataset.make_new_dset(self, shape, dtype, data, **kwds)
+        dset = dataset.Dataset(dsid)
+        if name is not None:
+            self[name] = dset
+        return dset
+
+    def require_dataset(self, name, shape, dtype, exact=False, **kwds):
+        """ Open a dataset, creating it if it doesn't exist.
+
+        If keyword "exact" is False (default), an existing dataset must have
+        the same shape and a conversion-compatible dtype to be returned.  If
+        True, the shape and dtype must match exactly.
+
+        Other dataset keywords (see create_dataset) may be provided, but are
+        only used if a new dataset is to be created.
+
+        Raises TypeError if an incompatible object already exists, or if the
+        shape or dtype don't match according to the above rules.
+        """
+
+        if not name in self:
+            return self.create_dataset(name, *(shape, dtype), **kwds)
+
+        dset = self[name]
+        if not isinstance(dset, dataset.Dataset):
+            raise TypeError("Incompatible object (%s) already exists" % dset.__class__.__name__)
+
+        if not shape == dset.shape:
+            raise TypeError("Shapes do not match (existing %s vs new %s)" % (dset.shape, shape))
+
+        if exact:
+            if not dtype == dset.dtype:
+                raise TypeError("Datatypes do not exactly match (existing %s vs new %s)" % (dset.dtype, dtype))
+        elif not numpy.can_cast(dtype, dset.dtype):
+            raise TypeError("Datatypes cannot be safely cast (existing %s vs new %s)" % (dset.dtype, dtype))
+
+        return dset
+
+    def require_group(self, name):
+        """ Return a group, creating it if it doesn't exist.
+
+        TypeError is raised if something with that name already exists that
+        isn't a group.
+        """
+        if not name in self:
+            return self.create_group(name)
+        grp = self[name]
+        if not isinstance(grp, Group):
+            raise TypeError("Incompatible object (%s) already exists" % grp.__class__.__name__)
+        return grp
+
+    def __getitem__(self, name):
+        """ Open an object in the file """
+
+        if isinstance(name, h5r.Reference):
+            oid = h5r.dereference(name, self.id)
+            if oid is None:
+                raise ValueError("Invalid HDF5 object reference")
+        else:
+            oid = h5o.open(self.id, self._e(name), lapl=self._lapl)
+
+        otype = h5i.get_type(oid)
+        if otype == h5i.GROUP:
+            return Group(oid)
+        elif otype == h5i.DATASET:
+            return dataset.Dataset(oid)
+        elif otype == h5i.DATATYPE:
+            return datatype.Datatype(oid)
+        else:
+            raise TypeError("Unknown object type")
+
+    def get(self, name, default=None, getclass=False, getlink=False):
+        """ Retrieve an item or other information.
+
+        "name" given only:
+            Return the item, or "default" if it doesn't exist
+
+        "getclass" is True:
+            Return the class of object (Group, Dataset, etc.), or "default"
+            if nothing with that name exists
+
+        "getlink" is True:
+            Return HardLink, SoftLink or ExternalLink instances.  Return
+            "default" if nothing with that name exists.
+
+        "getlink" and "getclass" are True:
+            Return HardLink, SoftLink and ExternalLink classes.  Return
+            "default" if nothing with that name exists.
+
+        Example:
+
+        >>> cls = group.get('foo', getclass=True)
+        >>> if cls == SoftLink:
+        ...     print '"foo" is a soft link!'
+        """
+        if not (getclass or getlink):
+            try:
+                return self[name]
+            except KeyError:
+                return default
+
+        if not name in self:
+            return default
+
+        elif getclass and not getlink:
+            typecode = h5o.get_info(self.id, self._e(name)).type
+
+            try:
+                return {h5o.TYPE_GROUP: Group,
+                        h5o.TYPE_DATASET: dataset.Dataset,
+                        h5o.TYPE_NAMED_DATATYPE: datatype.Datatype}[typecode]
+            except KeyError:
+                raise TypeError("Unknown object type")
+
+        elif getlink:
+            typecode = self.id.links.get_info(self._e(name)).type
+
+            if typecode == h5l.TYPE_SOFT:
+                if getclass:
+                    return SoftLink
+                linkbytes = self.id.links.get_val(self._e(name))
+                return SoftLink(self._d(linkbytes))
+            elif typecode == h5l.TYPE_EXTERNAL:
+                if getclass:
+                    return ExternalLink
+                filebytes, linkbytes = self.id.links.get_val(self._e(name))
+                # TODO: I think this is wrong,
+                # we should use filesystem decoding on the filename
+                return ExternalLink(self._d(filebytes), self._d(linkbytes))
+            elif typecode == h5l.TYPE_HARD:
+                return HardLink if getclass else HardLink()
+            else:
+                raise TypeError("Unknown link type")
+
+    def __setitem__(self, name, obj):
+        """ Add an object to the group.  The name must not already be in use.
+
+        The action taken depends on the type of object assigned:
+
+        Named HDF5 object (Dataset, Group, Datatype)
+            A hard link is created at "name" which points to the
+            given object.
+
+        SoftLink or ExternalLink
+            Create the corresponding link.
+
+        Numpy ndarray
+            The array is converted to a dataset object, with default
+            settings (contiguous storage, etc.).
+
+        Numpy dtype
+            Commit a copy of the datatype as a named datatype in the file.
+
+        Anything else
+            Attempt to convert it to an ndarray and store it.  Scalar
+            values are stored as scalar datasets. Raise ValueError if we
+            can't understand the resulting array dtype.
+        """
+        name, lcpl = self._e(name, lcpl=True)
+
+        if isinstance(obj, HLObject):
+            h5o.link(obj.id, self.id, name, lcpl=lcpl, lapl=self._lapl)
+
+        elif isinstance(obj, SoftLink):
+            self.id.links.create_soft(name, self._e(obj.path),
+                          lcpl=lcpl, lapl=self._lapl)
+
+        elif isinstance(obj, ExternalLink):
+            self.id.links.create_external(name, self._e(obj.filename),
+                          self._e(obj.path), lcpl=lcpl, lapl=self._lapl)
+
+        elif isinstance(obj, numpy.dtype):
+            htype = h5t.py_create(obj)
+            htype.commit(self.id, name, lcpl=lcpl)
+
+        else:
+            ds = self.create_dataset(None, data=obj, dtype=base.guess_dtype(obj))
+            h5o.link(ds.id, self.id, name, lcpl=lcpl)
+
+    def __delitem__(self, name):
+        """ Delete (unlink) an item from this group. """
+        self.id.unlink(self._e(name))
+
+    def __len__(self):
+        """ Number of members attached to this group """
+        return self.id.get_num_objs()
+
+    def __iter__(self):
+        """ Iterate over member names """
+        for x in self.id.__iter__():
+            yield self._d(x)
+
+    def __contains__(self, name):
+        """ Test if a member name exists """
+        return self._e(name) in self.id
+
+    def copy(self, source, dest, name=None,
+             shallow=False, expand_soft=False, expand_external=False,
+             expand_refs=False, without_attrs=False):
+        """Copy an object or group.
+
+        The source can be a path, Group, Dataset, or Datatype object.  The
+        destination can be either a path or a Group object.  The source and
+        destinations need not be in the same file.
+
+        If the source is a Group object, all objects contained in that group
+        will be copied recursively.
+
+        When the destination is a Group object, by default the target will
+        be created in that group with its current name (basename of obj.name).
+        You can override that by setting "name" to a string.
+
+        There are various options which all default to "False":
+
+         - shallow: copy only immediate members of a group.
+
+         - expand_soft: expand soft links into new objects.
+
+         - expand_external: expand external links into new objects.
+
+         - expand_refs: copy objects that are pointed to by references.
+
+         - without_attrs: copy object without copying attributes.
+
+       Example:
+
+        >>> f = File('myfile.hdf5')
+        >>> f.listnames()
+        ['MyGroup']
+        >>> f.copy('MyGroup', 'MyCopy')
+        >>> f.listnames()
+        ['MyGroup', 'MyCopy']
+
+        """
+        if isinstance(source, HLObject):
+            source_path = '.'
+        else:
+            # Interpret source as a path relative to this group
+            source_path = source
+            source = self
+
+        if isinstance(dest, Group):
+            if name is not None:
+                dest_path = name
+            else:
+                # copy source into dest group: dest_name/source_name
+                dest_path = pp.basename(h5i.get_name(source[source_path].id))
+
+        elif isinstance(dest, HLObject):
+            raise TypeError("Destination must be path or Group object")
+        else:
+            # Interpret destination as a path relative to this group
+            dest_path = dest
+            dest = self
+
+        flags = 0
+        if shallow:
+            flags |= h5o.COPY_SHALLOW_HIERARCHY_FLAG
+        if expand_soft:
+            flags |= h5o.COPY_EXPAND_SOFT_LINK_FLAG
+        if expand_external:
+            flags |= h5o.COPY_EXPAND_EXT_LINK_FLAG
+        if expand_refs:
+            flags |= h5o.COPY_EXPAND_REFERENCE_FLAG
+        if without_attrs:
+            flags |= h5o.COPY_WITHOUT_ATTR_FLAG
+        if flags:
+            copypl = h5p.create(h5p.OBJECT_COPY)
+            copypl.set_copy_object(flags)
+        else:
+            copypl = None
+
+        h5o.copy(source.id, self._e(source_path), dest.id, self._e(dest_path),
+                 copypl, base.dlcpl)
+
+    def move(self, source, dest):
+        """ Move a link to a new location in the file.
+
+        If "source" is a hard link, this effectively renames the object.  If
+        "source" is a soft or external link, the link itself is moved, with its
+        value unmodified.
+        """
+        if source == dest:
+            return
+        self.id.links.move(self._e(source), self.id, self._e(dest),
+                           lapl=self._lapl, lcpl=self._lcpl)
+
+    def visit(self, func):
+        """ Recursively visit all names in this group and subgroups (HDF5 1.8).
+
+        You supply a callable (function, method or callable object); it
+        will be called exactly once for each link in this group and every
+        group below it. Your callable must conform to the signature:
+
+            func(<member name>) => <None or return value>
+
+        Returning None continues iteration, returning anything else stops
+        and immediately returns that value from the visit method.  No
+        particular order of iteration within groups is guranteed.
+
+        Example:
+
+        >>> # List the entire contents of the file
+        >>> f = File("foo.hdf5")
+        >>> list_of_names = []
+        >>> f.visit(list_of_names.append)
+        """
+        def proxy(name):
+            return func(self._d(name))
+        return h5o.visit(self.id, proxy)
+
+    def visititems(self, func):
+        """ Recursively visit names and objects in this group (HDF5 1.8).
+
+        You supply a callable (function, method or callable object); it
+        will be called exactly once for each link in this group and every
+        group below it. Your callable must conform to the signature:
+
+            func(<member name>, <object>) => <None or return value>
+
+        Returning None continues iteration, returning anything else stops
+        and immediately returns that value from the visit method.  No
+        particular order of iteration within groups is guranteed.
+
+        Example:
+
+        # Get a list of all datasets in the file
+        >>> mylist = []
+        >>> def func(name, obj):
+        ...     if isinstance(obj, Dataset):
+        ...         mylist.append(name)
+        ...
+        >>> f = File('foo.hdf5')
+        >>> f.visititems(func)
+        """
+        def proxy(name):
+            name = self._d(name)
+            return func(name, self[name])
+        return h5o.visit(self.id, proxy)
+
+    def __repr__(self):
+        if not self:
+            r = u"<Closed HDF5 group>"
+        else:
+            namestr = (u'"%s"' % self.name) if self.name is not None else u"(anonymous)"
+            r = u'<HDF5 group %s (%d members)>' % (namestr, len(self))
+
+        if py3:
+            return r
+        return r.encode('utf8')
+
+collections.MutableMapping.register(Group)
+
+
+class HardLink(object):
+
+    """
+        Represents a hard link in an HDF5 file.  Provided only so that
+        Group.get works in a sensible way.  Has no other function.
+    """
+
+    pass
+
+
+#TODO: implement equality testing for these
+class SoftLink(object):
+
+    """
+        Represents a symbolic ("soft") link in an HDF5 file.  The path
+        may be absolute or relative.  No checking is performed to ensure
+        that the target actually exists.
+    """
+
+    @property
+    def path(self):
+        return self._path
+
+    def __init__(self, path):
+        self._path = str(path)
+
+    def __repr__(self):
+        return '<SoftLink to "%s">' % self.path
+
+
+class ExternalLink(object):
+
+    """
+        Represents an HDF5 external link.  Paths may be absolute or relative.
+        No checking is performed to ensure either the target or file exists.
+    """
+
+    @property
+    def path(self):
+        return self._path
+
+    @property
+    def filename(self):
+        return self._filename
+
+    def __init__(self, filename, path):
+        self._filename = str(filename)
+        self._path = str(path)
+
+    def __repr__(self):
+        return '<ExternalLink to "%s" in file "%s"' % (self.path, self.filename)
diff --git a/h5py/_hl/selections.py b/h5py/_hl/selections.py
new file mode 100644
index 0000000..af41907
--- /dev/null
+++ b/h5py/_hl/selections.py
@@ -0,0 +1,647 @@
+# This file is part of h5py, a Python interface to the HDF5 library.
+#
+# http://www.h5py.org
+#
+# Copyright 2008-2013 Andrew Collette and contributors
+#
+# License:  Standard 3-clause BSD; see "license.txt" for full license terms
+#           and contributor agreement.
+
+"""
+    High-level access to HDF5 dataspace selections
+"""
+
+import numpy as np
+
+from h5py import h5s, h5r
+
+# Selection types for hyperslabs
+from h5py.h5s import SELECT_SET  as SET
+from h5py.h5s import SELECT_OR   as OR
+from h5py.h5s import SELECT_AND  as AND
+from h5py.h5s import SELECT_XOR  as XOR
+from h5py.h5s import SELECT_NOTB as NOTB
+from h5py.h5s import SELECT_NOTA as NOTA
+
+def select(shape, args, dsid):
+    """ High-level routine to generate a selection from arbitrary arguments
+    to __getitem__.  The arguments should be the following:
+
+    shape
+        Shape of the "source" dataspace.
+
+    args
+        Either a single argument or a tuple of arguments.  See below for
+        supported classes of argument.
+    
+    dsid
+        A h5py.h5d.DatasetID instance representing the source dataset.
+
+    Argument classes:
+
+    Single Selection instance
+        Returns the argument.
+
+    numpy.ndarray
+        Must be a boolean mask.  Returns a PointSelection instance.
+
+    RegionReference
+        Returns a Selection instance.
+
+    Indices, slices, ellipses only
+        Returns a SimpleSelection instance
+
+    Indices, slices, ellipses, lists or boolean index arrays
+        Returns a FancySelection instance.
+    """
+    if not isinstance(args, tuple):
+        args = (args,)
+
+    # "Special" indexing objects
+    if len(args) == 1:
+
+        arg = args[0]
+        if isinstance(arg, Selection):
+            if arg.shape != shape:
+                raise TypeError("Mismatched selection shape")
+            return arg
+
+        elif isinstance(arg, np.ndarray):
+            sel = PointSelection(shape)
+            sel[arg]
+            return sel
+
+        elif isinstance(arg, h5r.RegionReference):
+            sid = h5r.get_region(arg, dsid)
+            if shape != sid.shape:
+                raise TypeError("Reference shape does not match dataset shape")
+                
+            return Selection(shape, spaceid=sid)
+
+    for a in args:
+        if not isinstance(a, slice) and a is not Ellipsis:
+            try:
+                int(a)
+            except Exception:
+                sel = FancySelection(shape)
+                sel[args]
+                return sel
+    
+    sel = SimpleSelection(shape)
+    sel[args]
+    return sel
+
+class _RegionProxy(object):
+
+    """
+        Thin proxy object which takes __getitem__-style index arguments and
+        produces RegionReference objects.  Example:
+
+        >>> dset = myfile['dataset']
+        >>> myref = dset.regionref[0:100,20:30]
+        >>> data = dset[myref]
+
+    """
+
+    def __init__(self, dsid):
+        """ Supply a h5py.h5d.DatasetID instance """
+        self.id = dsid
+
+    def __getitem__(self, args):
+        """ Takes arbitrary selection terms and produces a RegionReference
+        object.  Selection must be compatible with the dataset.
+        """
+        selection = select(self.id.shape, args)
+        return h5r.create(self.id, '.', h5r.DATASET_REGION, selection.id)
+
+class Selection(object):
+
+    """
+        Base class for HDF5 dataspace selections.  Subclasses support the
+        "selection protocol", which means they have at least the following
+        members:
+        
+        __init__(shape)   => Create a new selection on "shape"-tuple
+        __getitem__(args) => Perform a selection with the range specified.
+                             What args are allowed depends on the
+                             particular subclass in use.
+
+        id (read-only) =>      h5py.h5s.SpaceID instance
+        shape (read-only) =>   The shape of the dataspace.
+        mshape  (read-only) => The shape of the selection region. 
+                               Not guaranteed to fit within "shape", although
+                               the total number of points is less than
+                               product(shape).
+        nselect (read-only) => Number of selected points.  Always equal to
+                               product(mshape).
+
+        broadcast(target_shape) => Return an iterable which yields dataspaces
+                                   for read, based on target_shape.
+
+        The base class represents "unshaped" selections (1-D).
+    """
+
+    def __init__(self, shape, spaceid=None):
+        """ Create a selection.  Shape may be None if spaceid is given. """
+        if spaceid is not None:
+            self._id = spaceid
+            self._shape = spaceid.shape
+        else:
+            shape = tuple(shape)
+            self._shape = shape
+            self._id = h5s.create_simple(shape, (h5s.UNLIMITED,)*len(shape))
+            self._id.select_all()
+
+    @property
+    def id(self):
+        """ SpaceID instance """
+        return self._id
+
+    @property
+    def shape(self):
+        """ Shape of whole dataspace """
+        return self._shape
+
+    @property
+    def nselect(self):
+        """ Number of elements currently selected """
+        return self._id.get_select_npoints()
+
+    @property
+    def mshape(self):
+        """ Shape of selection (always 1-D for this class) """
+        return (self.nselect,)
+
+    def broadcast(self, target_shape):
+        """ Get an iterable for broadcasting """
+        if np.product(target_shape) != self.nselect:
+            raise TypeError("Broadcasting is not supported for point-wise selections")
+        yield self._id
+
+    def __getitem__(self, args):
+        raise NotImplementedError("This class does not support indexing")
+
+class PointSelection(Selection):
+
+    """
+        Represents a point-wise selection.  You can supply sequences of
+        points to the three methods append(), prepend() and set(), or a
+        single boolean array to __getitem__.
+    """
+
+    def _perform_selection(self, points, op):
+
+        points = np.asarray(points, order='C', dtype='u8')
+        if len(points.shape) == 1:
+            points.shape = (1,points.shape[0])
+
+        if self._id.get_select_type() != h5s.SEL_POINTS:
+            op = h5s.SELECT_SET
+
+        if len(points) == 0:
+            self._id.select_none()
+        else:
+            self._id.select_elements(points, op)
+
+    def __getitem__(self, arg):
+        """ Perform point-wise selection from a NumPy boolean array """
+        if not (isinstance(arg, np.ndarray) and arg.dtype.kind == 'b'):
+            raise TypeError("PointSelection __getitem__ only works with bool arrays")
+        if not arg.shape == self.shape:
+            raise TypeError("Boolean indexing array has incompatible shape")
+
+        points = np.transpose(arg.nonzero())
+        self.set(points)
+        return self
+
+    def append(self, points):
+        """ Add the sequence of points to the end of the current selection """
+        self._perform_selection(points, h5s.SELECT_APPEND)
+
+    def prepend(self, points):
+        """ Add the sequence of points to the beginning of the current selection """
+        self._perform_selection(points, h5s.SELECT_PREPEND)
+
+    def set(self, points):
+        """ Replace the current selection with the given sequence of points"""
+        self._perform_selection(points, h5s.SELECT_SET)
+
+
+class SimpleSelection(Selection):
+
+    """ A single "rectangular" (regular) selection composed of only slices
+        and integer arguments.  Can participate in broadcasting.
+    """
+
+    @property
+    def mshape(self):
+        """ Shape of current selection """
+        return self._mshape
+
+    def __init__(self, shape, *args, **kwds):
+        Selection.__init__(self, shape, *args, **kwds)
+        rank = len(self.shape)
+        self._sel = ((0,)*rank, self.shape, (1,)*rank, (False,)*rank)
+        self._mshape = self.shape
+
+    def __getitem__(self, args):
+
+        if not isinstance(args, tuple):
+            args = (args,)
+  
+        if self.shape == ():
+            if len(args) > 0 and args[0] not in (Ellipsis, ()):
+                raise TypeError("Invalid index for scalar dataset (only ..., () allowed)")
+            self._id.select_all()
+            return self
+
+        start, count, step, scalar = _handle_simple(self.shape,args)
+
+        self._id.select_hyperslab(start, count, step)
+
+        self._sel = (start, count, step, scalar)
+
+        self._mshape = tuple(x for x, y in zip(count, scalar) if not y)
+
+        return self
+
+
+    def broadcast(self, target_shape):
+        """ Return an iterator over target dataspaces for broadcasting.
+
+        Follows the standard NumPy broadcasting rules against the current
+        selection shape (self.mshape).
+        """
+        if self.shape == ():
+            if np.product(target_shape) != 1:
+                raise TypeError("Can't broadcast %s to scalar" % target_shape)
+            self._id.select_all()
+            yield self._id
+            return
+
+        start, count, step, scalar = self._sel
+
+        rank = len(count)
+        target = list(target_shape)
+
+        tshape = []
+        for idx in xrange(1,rank+1):
+            if len(target) == 0 or scalar[-idx]:     # Skip scalar axes
+                tshape.append(1)
+            else:
+                t = target.pop()
+                if t == 1 or count[-idx] == t:
+                    tshape.append(t)
+                else:
+                    raise TypeError("Can't broadcast %s -> %s" % (target_shape, count))
+        tshape.reverse()
+        tshape = tuple(tshape)
+
+        chunks = tuple(x/y for x, y in zip(count, tshape))
+        nchunks = long(np.product(chunks))
+
+        if nchunks == 1:
+            yield self._id
+        else:
+            sid = self._id.copy()
+            sid.select_hyperslab((0,)*rank, tshape, step)
+            for idx in xrange(nchunks):
+                offset = tuple(x*y*z + s for x, y, z, s in zip(np.unravel_index(idx, chunks), tshape, step, start))
+                sid.offset_simple(offset)
+                yield sid
+
+
+class HyperSelection(Selection):
+
+    """
+        Represents multiple overlapping rectangular selections, combined
+        with set-like operators.  Result is a 1D shape, as with boolean array
+        selection.  Broadcasting is not supported for these selections.
+
+        When created, the entire dataspace is selected.  To make
+        adjustments to the selection, use the standard NumPy slicing
+        syntax, either via __getitem__ (as with simple selections) or via
+        __setitem__ and one of the supported operators:
+
+            >>> sel = HyperSelection((10,20))  # Initially 200 points
+            >>> sel[:,5:15] = False            # Now 100 points
+            >>> sel[:,10]   = True             # Now 110 points
+            >>> sel[...]    = XOR              # Now 90 points
+
+        Legal operators (in the h5py.selections module) are:
+           
+        SET
+            New selection, wiping out any old one
+       
+        AND, XOR, OR (or True)
+            Logical AND/XOR/OR between new and old selection
+
+        NOTA
+            Select only regions in new selection which don't intersect the old
+
+        NOTB (or False)
+            Select only regions in old selection which don't intersect the new
+ 
+    """
+
+    def __getitem__(self, args):
+        self[args] = SET
+        return self
+
+    def __setitem__(self, args, op):
+
+        if not isinstance(args, tuple):
+            args = (args,)
+ 
+        start, count, step, scalar = _handle_simple(self.shape, args)
+
+        if not op in (SET, OR, AND, XOR, NOTB, NOTA, True, False):
+            raise ValueError("Illegal selection operator")
+
+        if op is True:
+            op = OR
+        elif op is False:
+            op = NOTB
+
+        seltype = self._id.get_select_type()
+
+        if seltype == h5s.SEL_ALL:
+            self._id.select_hyperslab((0,)*len(self.shape), self.shape, op=h5s.SELECT_SET)
+       
+        elif seltype == h5s.SEL_NONE:
+            if op in (SET, OR, XOR, NOTA):
+                op = SET
+            else:
+                return
+
+        self._id.select_hyperslab(start, count, step, op=op)
+
+class FancySelection(Selection):
+
+    """
+        Implements advanced NumPy-style selection operations in addition to
+        the standard slice-and-int behavior.
+
+        Indexing arguments may be ints, slices, lists of indicies, or
+        per-axis (1D) boolean arrays.
+
+        Broadcasting is not supported for these selections.
+    """
+
+    @property
+    def mshape(self):
+        return self._mshape
+
+    def __init__(self, shape, *args, **kwds):
+        Selection.__init__(self, shape, *args, **kwds)
+        self._mshape = self.shape
+
+    def __getitem__(self, args):
+
+        if not isinstance(args, tuple):
+            args = (args,)
+
+        args = _expand_ellipsis(args, len(self.shape))
+
+        # First build up a dictionary of (position:sequence) pairs
+
+        sequenceargs = {}
+        for idx, arg in enumerate(args):
+            if not isinstance(arg, slice):
+                if hasattr(arg, 'dtype') and arg.dtype == np.dtype('bool'):
+                    if len(arg.shape) != 1:
+                        raise TypeError("Boolean indexing arrays must be 1-D")
+                    arg = arg.nonzero()[0]
+                try:
+                    sequenceargs[idx] = list(arg)
+                except TypeError:
+                    pass
+                else:
+                    if sorted(arg) != list(arg):
+                        raise TypeError("Indexing elements must be in increasing order")
+
+        if len(sequenceargs) > 1:
+            # TODO: fix this with broadcasting
+            raise TypeError("Only one indexing vector or array is currently allowed for advanced selection")
+        if len(sequenceargs) == 0:
+            # TODO: fallback to standard selection
+            raise TypeError("Advanced selection inappropriate")
+
+        vectorlength = len(sequenceargs.values()[0])
+        if not all(len(x) == vectorlength for x in sequenceargs.values()):
+            raise TypeError("All sequence arguments must have the same length %s" % sequenceargs)
+
+        # Now generate a vector of selection lists,
+        # consisting only of slices and ints
+
+        argvector = []
+        for idx in xrange(vectorlength):
+            entry = list(args)
+            for position, seq in sequenceargs.iteritems():
+                entry[position] = seq[idx]
+            argvector.append(entry)
+
+        # "OR" all these selection lists together to make the final selection
+
+        self._id.select_none()
+        for idx, vector in enumerate(argvector):
+            start, count, step, scalar = _handle_simple(self.shape, vector)
+            self._id.select_hyperslab(start, count, step, op=h5s.SELECT_OR)
+
+        # Final shape excludes scalars, except where
+        # they correspond to sequence entries
+
+        mshape = list(count)
+        for idx in xrange(len(mshape)):
+            if idx in sequenceargs:
+                mshape[idx] = len(sequenceargs[idx])
+            elif scalar[idx]:
+                mshape[idx] = 0
+
+        self._mshape = tuple(x for x in mshape if x != 0)
+
+    def broadcast(self, target_shape):
+        if not target_shape == self.mshape:
+            raise TypeError("Broadcasting is not supported for complex selections")
+        yield self._id
+
+def _expand_ellipsis(args, rank):
+    """ Expand ellipsis objects and fill in missing axes.
+    """
+    n_el = sum(1 for arg in args if arg is Ellipsis)
+    if n_el > 1:
+        raise ValueError("Only one ellipsis may be used.")
+    elif n_el == 0 and len(args) != rank:
+        args = args + (Ellipsis,)
+
+    final_args = []
+    n_args = len(args)
+    for idx, arg in enumerate(args):
+
+        if arg is Ellipsis:
+            final_args.extend( (slice(None,None,None),)*(rank-n_args+1) )
+        else:
+            final_args.append(arg)
+
+    if len(final_args) > rank:
+        raise TypeError("Argument sequence too long")
+
+    return final_args
+
+def _handle_simple(shape, args):
+    """ Process a "simple" selection tuple, containing only slices and
+        integer objects.  Return is a 4-tuple with tuples for start,
+        count, step, and a flag which tells if the axis is a "scalar"
+        selection (indexed by an integer).
+
+        If "args" is shorter than "shape", the remaining axes are fully
+        selected.
+    """
+    args = _expand_ellipsis(args, len(shape))
+
+    start = []
+    count = []
+    step  = []
+    scalar = []
+
+    for arg, length in zip(args, shape):
+        if isinstance(arg, slice):
+            x,y,z = _translate_slice(arg, length)
+            s = False
+        else:
+            try:
+                x,y,z = _translate_int(int(arg), length)
+                s = True
+            except TypeError:
+                raise TypeError('Illegal index "%s" (must be a slice or number)' % arg)
+        start.append(x)
+        count.append(y)
+        step.append(z)
+        scalar.append(s)
+
+    return tuple(start), tuple(count), tuple(step), tuple(scalar)
+
+def _translate_int(exp, length):
+    """ Given an integer index, return a 3-tuple
+        (start, count, step)
+        for hyperslab selection
+    """
+    if exp < 0:
+        exp = length+exp
+
+    if not 0<=exp<length:
+        raise ValueError("Index (%s) out of range (0-%s)" % (exp, length-1))
+
+    return exp, 1, 1
+
+def _translate_slice(exp, length):
+    """ Given a slice object, return a 3-tuple
+        (start, count, step)
+        for use with the hyperslab selection routines
+    """
+    start, stop, step = exp.indices(length)
+        # Now if step > 0, then start and stop are in [0, length]; 
+        # if step < 0, they are in [-1, length - 1] (Python 2.6b2 and later; 
+        # Python issue 3004).
+
+    if step < 1:
+        raise ValueError("Step must be >= 1 (got %d)" % step)
+    if stop < start:
+        raise ValueError("Reverse-order selections are not allowed")
+
+    count = 1 + (stop - start - 1) // step
+
+    return start, count, step
+
+def guess_shape(sid):
+    """ Given a dataspace, try to deduce the shape of the selection.
+
+    Returns one of:
+        * A tuple with the selection shape, same length as the dataspace 
+        * A 1D selection shape for point-based and multiple-hyperslab selections
+        * None, for unselected scalars and for NULL dataspaces
+    """
+
+    sel_class = sid.get_simple_extent_type()    # Dataspace class
+    sel_type = sid.get_select_type()            # Flavor of selection in use
+
+    if sel_class == h5s.NULL:
+        # NULL dataspaces don't support selections
+        return None
+
+    elif sel_class == h5s.SCALAR:
+        # NumPy has no way of expressing empty 0-rank selections, so we use None
+        if sel_type == h5s.SEL_NONE: return None
+        if sel_type == h5s.SEL_ALL: return tuple()
+
+    elif sel_class != h5s.SIMPLE:
+        raise TypeError("Unrecognized dataspace class %s" % sel_class)
+
+    # We have a "simple" (rank >= 1) dataspace
+
+    N = sid.get_select_npoints()
+    rank = len(sid.shape)
+
+    if sel_type == h5s.SEL_NONE:
+        return (0,)*rank
+
+    elif sel_type == h5s.SEL_ALL:
+        return sid.shape
+
+    elif sel_type == h5s.SEL_POINTS:
+        # Like NumPy, point-based selections yield 1D arrays regardless of
+        # the dataspace rank
+        return (N,)
+
+    elif sel_type != h5s.SEL_HYPERSLABS:
+        raise TypeError("Unrecognized selection method %s" % sel_type)
+
+    # We have a hyperslab-based selection
+
+    if N == 0:
+        return (0,)*rank
+
+    bottomcorner, topcorner = (np.array(x) for x in sid.get_select_bounds())
+
+    # Shape of full selection box
+    boxshape = topcorner - bottomcorner + np.ones((rank,))
+
+    def get_n_axis(sid, axis):
+        """ Determine the number of elements selected along a particular axis.
+
+        To do this, we "mask off" the axis by making a hyperslab selection
+        which leaves only the first point along the axis.  For a 2D dataset
+        with selection box shape (X, Y), for axis 1, this would leave a
+        selection of shape (X, 1).  We count the number of points N_leftover
+        remaining in the selection and compute the axis selection length by
+        N_axis = N/N_leftover.
+        """
+
+        if(boxshape[axis]) == 1:
+            return 1
+
+        start = bottomcorner.copy()
+        start[axis] += 1
+        count = boxshape.copy()
+        count[axis] -= 1
+
+        # Throw away all points along this axis
+        masked_sid = sid.copy()
+        masked_sid.select_hyperslab(tuple(start), tuple(count), op=h5s.SELECT_NOTB)
+
+        N_leftover = masked_sid.get_select_npoints()
+
+        return N//N_leftover
+
+
+    shape = tuple(get_n_axis(sid, x) for x in xrange(rank))
+
+    if np.product(shape) != N:
+        # This means multiple hyperslab selections are in effect,
+        # so we fall back to a 1D shape
+        return (N,)
+
+    return shape
+
+
+
diff --git a/h5py/_hl/selections2.py b/h5py/_hl/selections2.py
new file mode 100644
index 0000000..b9c945c
--- /dev/null
+++ b/h5py/_hl/selections2.py
@@ -0,0 +1,114 @@
+# This file is part of h5py, a Python interface to the HDF5 library.
+#
+# http://www.h5py.org
+#
+# Copyright 2008-2013 Andrew Collette and contributors
+#
+# License:  Standard 3-clause BSD; see "license.txt" for full license terms
+#           and contributor agreement.
+
+import numpy as np
+from h5py import h5s
+
+def strip_fields(basetype):
+    """ Convenience function to recursively strip extra dtype information 
+    from special types """
+
+    if basetype.kind == 'O':
+        return np.dtype('O')
+
+    if basetype.fields is not None:
+        fields = []
+        for name in basetype.names:
+            subtype, meta = basetype.fields[name]
+            subtype = strip_fields(subtype)
+            fields.append((name, subtype))
+        return np.dtype(fields)
+
+    return basetype
+
+def read_dtypes(dataset_dtype, names):
+    """ Returns a 2-tuple containing:
+
+    1. Output dataset dtype
+    2. Dtype containing HDF5-appropriate description of destination
+    """
+    
+    if len(names) == 0:     # Not compound, or all fields needed
+        format_dtype = dataset_dtype
+
+    elif dataset_dtype.names is None:
+        raise ValueError("Field names only allowed for compound types")
+
+    elif any(x not in dataset_dtype.names for x in names):
+        raise ValueError("Field %s does not appear in this type." % name)
+
+    else:
+        format_dtype = np.dtype([(name, dataset_dtype.fields[name][0]) for name in names])
+
+    if len(names) == 1:
+        # We don't preserve the field information if only one explicitly selected.
+        output_dtype = format_dtype.fields[names[0]][0]
+    
+    else:
+        output_dtype = format_dtype
+
+    # The field metadata for special types screws up NumPy indexing
+    # (issues 181 and 202)
+    output_dtype = strip_fields(output_dtype)
+
+    return output_dtype, format_dtype
+
+
+def read_selections_scalar(dsid, args):
+    """ Returns a 2-tuple containing:
+
+    1. Output dataset shape
+    2. HDF5 dataspace containing source selection.
+
+    Works for scalar datasets.
+    """
+
+    if dsid.shape != ():
+        raise RuntimeError("Illegal selection function for non-scalar dataset")
+
+    if args == ():
+        # This is a signal that an array scalar should be returned instead
+        # of an ndarray with shape ()
+        out_shape = None
+
+    elif args == (Ellipsis,):
+        out_shape = ()
+
+    else:
+        raise ValueError("Illegal slicing argument for scalar dataspace")
+
+    source_space = dsid.get_space()
+    source_space.select_all()
+
+    return out_shape, source_space
+
+class ScalarReadSelection(object):
+
+    def __init__(self, fspace, args):
+        if args == ():
+            self.mshape = None
+        elif args == (Ellipsis,):
+            self.mshape = ()
+        else:
+            raise ValueError("Illegal slicing argument for scalar dataspace")
+
+        self.mspace = h5s.create(h5s.SCALAR)
+        self.fspace = fspace
+
+    def __iter__(self):
+        self.mspace.select_all()
+        yield self.fspace, self.mspace        
+
+def select_read(fspace, args):
+    
+    if fspace.shape == ():
+        return ScalarReadSelection(fspace, args)
+
+    raise NotImplementedError()
+
diff --git a/h5py/_hl/tests/__init__.py b/h5py/_hl/tests/__init__.py
new file mode 100644
index 0000000..a23327b
--- /dev/null
+++ b/h5py/_hl/tests/__init__.py
@@ -0,0 +1,8 @@
+# This file is part of h5py, a Python interface to the HDF5 library.
+#
+# http://www.h5py.org
+#
+# Copyright 2008-2013 Andrew Collette and contributors
+#
+# License:  Standard 3-clause BSD; see "license.txt" for full license terms
+#           and contributor agreement.
diff --git a/h5py/_hl/tests/common.py b/h5py/_hl/tests/common.py
new file mode 100644
index 0000000..d41e4e6
--- /dev/null
+++ b/h5py/_hl/tests/common.py
@@ -0,0 +1,119 @@
+# This file is part of h5py, a Python interface to the HDF5 library.
+#
+# http://www.h5py.org
+#
+# Copyright 2008-2013 Andrew Collette and contributors
+#
+# License:  Standard 3-clause BSD; see "license.txt" for full license terms
+#           and contributor agreement.
+
+import sys
+
+if sys.version_info[0] == 3:
+    py3 = True
+else:
+    py3 = False
+
+
+if sys.version_info >= (2, 7) or sys.version_info >= (3, 2):
+    import unittest as ut
+else:
+    try:
+        import unittest2 as ut
+    except ImportError:
+        raise ImportError(
+            'unittest2 is required to run the test suite with python-%d.%d'
+            % (sys.version_info[:2])
+            )
+
+import shutil
+import tempfile
+import numpy as np
+import os
+
+
+class TestCase(ut.TestCase):
+
+    @classmethod
+    def setUpClass(cls):
+        cls.tempdir = tempfile.mkdtemp(prefix='h5py-test_')
+
+    @classmethod
+    def tearDownClass(cls):
+        shutil.rmtree(cls.tempdir)
+
+    def mktemp(self, suffix='.hdf5', prefix='', dir=None):
+        if dir is None:
+            dir = self.tempdir
+        return tempfile.mktemp(suffix, prefix, dir=self.tempdir)
+
+    if not hasattr(ut.TestCase, 'assertSameElements'):
+        # shim until this is ported into unittest2
+        def assertSameElements(self, a, b):
+            for x in a:
+                match = False
+                for y in b:
+                    if x == y:
+                        match = True
+                if not match:
+                    raise AssertionError("Item '%s' appears in a but not b" % x)
+
+            for x in b:
+                match = False
+                for y in a:
+                    if x == y:
+                        match = True
+                if not match:
+                    raise AssertionError("Item '%s' appears in b but not a" % x)
+
+    def assertArrayEqual(self, dset, arr, message=None, precision=None):
+        """ Make sure dset and arr have the same shape, dtype and contents, to
+            within the given precision.
+
+            Note that dset may be a NumPy array or an HDF5 dataset.
+        """
+        if precision is None:
+            precision = 1e-5
+        if message is None:
+            message = ''
+        else:
+            message = ' (%s)' % message
+
+        if np.isscalar(dset) or np.isscalar(arr):
+            self.assert_(
+                np.isscalar(dset) and np.isscalar(arr),
+                'Scalar/array mismatch ("%r" vs "%r")%s' % (dset, arr, message)
+                )
+            self.assert_(
+                dset - arr < precision,
+                "Scalars differ by more than %.3f%s" % (precision, message)
+                )
+            return
+
+        self.assert_(
+            dset.shape == arr.shape,
+            "Shape mismatch (%s vs %s)%s" % (dset.shape, arr.shape, message)
+            )
+        self.assert_(
+            dset.dtype == arr.dtype,
+            "Dtype mismatch (%s vs %s)%s" % (dset.dtype, arr.dtype, message)
+            )
+        self.assert_(
+            np.all(np.abs(dset[...] - arr[...]) < precision),
+            "Arrays differ by more than %.3f%s" % (precision, message)
+            )
+
+# Check if non-ascii filenames are supported
+# Evidently this is the most reliable way to check
+# See also h5py issue #263 and ipython #466
+# To test for this, run the testsuite with LC_ALL=C
+try:
+    testfile, fname = tempfile.mkstemp(u'\u03b7')
+except UnicodeError:
+    unicode_filenames = False
+else:
+    unicode_filenames = True
+    os.close(testfile)
+    os.unlink(fname)
+    del fname
+    del testfile
diff --git a/h5py/_hl/tests/test_attrs.py b/h5py/_hl/tests/test_attrs.py
new file mode 100644
index 0000000..3a974a7
--- /dev/null
+++ b/h5py/_hl/tests/test_attrs.py
@@ -0,0 +1,156 @@
+# This file is part of h5py, a Python interface to the HDF5 library.
+#
+# http://www.h5py.org
+#
+# Copyright 2008-2013 Andrew Collette and contributors
+#
+# License:  Standard 3-clause BSD; see "license.txt" for full license terms
+#           and contributor agreement.
+
+"""
+    Attributes testing module
+
+    Covers all operations which access the .attrs property, with the
+    exception of data read/write and type conversion.  Those operations
+    are tested by module test_attrs_data.
+"""
+
+import numpy as np
+import collections
+
+from common import TestCase, ut
+
+from h5py.highlevel import File
+from h5py import h5a
+from h5py.highlevel import AttributeManager
+
+
+class BaseAttrs(TestCase):
+
+    def setUp(self):
+        self.f = File(self.mktemp(), 'w')
+
+    def tearDown(self):
+        if self.f:
+            self.f.close()
+
+
+class TestAccess(BaseAttrs):
+
+    """
+        Feature: Attribute creation/retrieval via special methods
+    """
+
+    def test_create(self):
+        """ Attribute creation by direct assignment """
+        self.f.attrs['a'] = 4.0
+        self.assertEqual(self.f.attrs.keys(), ['a'])
+        self.assertEqual(self.f.attrs['a'], 4.0)
+
+    def test_overwrite(self):
+        """ Attributes are silently overwritten """
+        self.f.attrs['a'] = 4.0
+        self.f.attrs['a'] = 5.0
+        self.assertEqual(self.f.attrs['a'], 5.0)
+
+    def test_rank(self):
+        """ Attribute rank is preserved """
+        self.f.attrs['a'] = (4.0, 5.0)
+        self.assertEqual(self.f.attrs['a'].shape, (2,))
+        self.assertArrayEqual(self.f.attrs['a'], np.array((4.0,5.0)))
+
+    def test_single(self):
+        """ Attributes of shape (1,) don't become scalars """
+        self.f.attrs['a'] = np.ones((1,))
+        out = self.f.attrs['a']
+        self.assertEqual(out.shape, (1,))
+        self.assertEqual(out[()], 1)
+
+    def test_access_exc(self):
+        """ Attempt to access missing item raises KeyError """
+        with self.assertRaises(KeyError):
+            self.f.attrs['a']
+
+
+class TestDelete(BaseAttrs):
+
+    """
+        Feature: Deletion of attributes using __delitem__
+    """
+
+    def test_delete(self):
+        """ Deletion via "del" """
+        self.f.attrs['a'] = 4.0
+        self.assertIn('a', self.f.attrs)
+        del self.f.attrs['a']
+        self.assertNotIn('a', self.f.attrs)
+
+    def test_delete_exc(self):
+        """ Attempt to delete missing item raises KeyError """
+        with self.assertRaises(KeyError):
+            del self.f.attrs['a']
+
+
+class TestUnicode(BaseAttrs):
+
+    """
+        Feature: Attributes can be accessed via Unicode or byte strings
+    """
+
+    def test_ascii(self):
+        """ Access via pure-ASCII byte string """
+        self.f.attrs[b"ascii"] = 42
+        out = self.f.attrs[b"ascii"]
+        self.assertEqual(out, 42)
+
+    def test_raw(self):
+        """ Access via non-ASCII byte string """
+        name = b"non-ascii\xfe"
+        self.f.attrs[name] = 42
+        out = self.f.attrs[name]
+        self.assertEqual(out, 42)
+
+    def test_unicode(self):
+        """ Access via Unicode string with non-ascii characters """
+        name = u"Omega \u03A9"
+        self.f.attrs[name] = 42
+        out = self.f.attrs[name]
+        self.assertEqual(out, 42)
+
+
+class TestCreate(BaseAttrs):
+
+    """
+        Options for explicit attribute creation
+    """
+
+    def test_named(self):
+        """ Attributes created from named types link to the source type object
+        """
+        self.f['type'] = np.dtype('u8')
+        self.f.attrs.create('x', 42, dtype=self.f['type'])
+        self.assertEqual(self.f.attrs['x'], 42)
+        aid = h5a.open(self.f.id, b'x')
+        htype = aid.get_type()
+        htype2 = self.f['type'].id
+        self.assertEqual(htype, htype2)
+        self.assertTrue(htype.committed())
+
+
+class TestMutableMapping(BaseAttrs):
+    '''Tests if the registration of AttributeManager as a MutableMapping
+    behaves as expected
+    '''
+    def test_resolution(self):
+        assert issubclass(AttributeManager, collections.MutableMapping)
+        assert isinstance(self.f.attrs, collections.MutableMapping)
+
+    def test_validity(self):
+        '''
+        Test that the required functions are implemented.
+        '''
+        AttributeManager.__getitem__
+        AttributeManager.__setitem__
+        AttributeManager.__delitem__
+        AttributeManager.__iter__
+        AttributeManager.__len__
diff --git a/h5py/_hl/tests/test_attrs_data.py b/h5py/_hl/tests/test_attrs_data.py
new file mode 100644
index 0000000..8c87cdf
--- /dev/null
+++ b/h5py/_hl/tests/test_attrs_data.py
@@ -0,0 +1,252 @@
+# This file is part of h5py, a Python interface to the HDF5 library.
+#
+# http://www.h5py.org
+#
+# Copyright 2008-2013 Andrew Collette and contributors
+#
+# License:  Standard 3-clause BSD; see "license.txt" for full license terms
+#           and contributor agreement.
+
+"""
+    Attribute data transfer testing module
+
+    Covers all data read/write and type-conversion operations for attributes.
+"""
+
+import numpy as np
+
+from .common import TestCase, ut, py3
+
+import h5py
+from h5py import h5a, h5s, h5t
+from h5py.highlevel import File
+
+class BaseAttrs(TestCase):
+
+    def setUp(self):
+        self.f = File(self.mktemp(), 'w')
+ 
+    def tearDown(self):
+        if self.f:
+            self.f.close()
+
+class TestScalar(BaseAttrs):
+
+    """
+        Feature: Scalar types map correctly to array scalars
+    """
+
+    def test_int(self):
+        """ Integers are read as correct NumPy type """
+        self.f.attrs['x'] = np.array(1, dtype=np.int8)
+        out = self.f.attrs['x']
+        self.assertIsInstance(out, np.int8)
+
+    def test_compound(self):
+        """ Compound scalars are read as numpy.void """
+        dt = np.dtype([('a','i'),('b','f')])
+        data = np.array((1,4.2), dtype=dt)
+        self.f.attrs['x'] = data
+        out = self.f.attrs['x']
+        self.assertIsInstance(out, np.void)
+        self.assertEqual(out, data)
+        self.assertEqual(out['b'], data['b'])
+
+class TestArray(BaseAttrs):
+
+    """
+        Feature: Non-scalar types are correctly retrieved as ndarrays
+    """
+
+    def test_single(self):
+        """ Single-element arrays are correctly recovered """
+        data = np.ndarray((1,), dtype='f')
+        self.f.attrs['x'] = data
+        out = self.f.attrs['x']
+        self.assertIsInstance(out, np.ndarray)
+        self.assertEqual(out.shape, (1,))
+
+    def test_multi(self):
+        """ Rank-1 arrays are correctly recovered """
+        data = np.ndarray((42,), dtype='f')
+        data[:] = 42.0
+        data[10:35] = -47.0
+        self.f.attrs['x'] = data
+        out = self.f.attrs['x']
+        self.assertIsInstance(out, np.ndarray)
+        self.assertEqual(out.shape, (42,))
+        self.assertArrayEqual(out, data)
+
+class TestTypes(BaseAttrs):
+
+    """
+        Feature: All supported types can be stored in attributes
+    """
+
+    def test_int(self):
+        """ Storage of integer types """
+        dtypes = (np.int8, np.int16, np.int32, np.int64,
+                  np.uint8, np.uint16, np.uint32, np.uint64)
+        for dt in dtypes:
+            data = np.ndarray((1,), dtype=dt)
+            data[...] = 42
+            self.f.attrs['x'] = data
+            out = self.f.attrs['x']
+            self.assertEqual(out.dtype, dt)
+            self.assertArrayEqual(out, data)
+
+    def test_float(self):
+        """ Storage of floating point types """
+        dtypes = tuple(np.dtype(x) for x in ('<f4','>f4','<f8','>f8'))
+        
+        for dt in dtypes:
+            data = np.ndarray((1,), dtype=dt)
+            data[...] = 42.3
+            self.f.attrs['x'] = data
+            out = self.f.attrs['x'] 
+            self.assertEqual(out.dtype, dt)
+            self.assertArrayEqual(out, data)
+
+    def test_complex(self):
+        """ Storage of complex types """
+        dtypes = tuple(np.dtype(x) for x in ('<c8','>c8','<c16','>c16'))
+        
+        for dt in dtypes:
+            data = np.ndarray((1,), dtype=dt)
+            data[...] = -4.2j+35.9
+            self.f.attrs['x'] = data
+            out = self.f.attrs['x'] 
+            self.assertEqual(out.dtype, dt)
+            self.assertArrayEqual(out, data)
+
+    def test_string(self):
+        """ Storage of fixed-length strings """
+        dtypes = tuple(np.dtype(x) for x in ('|S1', '|S10'))
+        
+        for dt in dtypes:
+            data = np.ndarray((1,), dtype=dt)
+            data[...] = 'h'
+            self.f.attrs['x'] = data
+            out = self.f.attrs['x'] 
+            self.assertEqual(out.dtype, dt)
+            self.assertEqual(out[0], data[0])
+
+    def test_bool(self):
+        """ Storage of NumPy booleans """
+        
+        data = np.ndarray((2,), dtype=np.bool_)
+        data[...] = True, False
+        self.f.attrs['x'] = data
+        out = self.f.attrs['x']
+        self.assertEqual(out.dtype, data.dtype)
+        self.assertEqual(out[0], data[0])
+        self.assertEqual(out[1], data[1])
+
+    def test_vlen_string_array(self):
+        """ Storage of vlen byte string arrays"""
+        dt = h5py.special_dtype(vlen=bytes)
+        
+        data = np.ndarray((2,), dtype=dt)
+        data[...] = b"Hello", b"Hi there!  This is HDF5!"
+
+        self.f.attrs['x'] = data
+        out = self.f.attrs['x']
+        self.assertEqual(out.dtype, dt)
+        self.assertEqual(out[0], data[0])
+        self.assertEqual(out[1], data[1])
+
+    def test_string_scalar(self):
+        """ Storage of variable-length byte string scalars (auto-creation) """
+
+        self.f.attrs['x'] = b'Hello'
+        out = self.f.attrs['x']
+
+        self.assertEqual(out,b'Hello')
+        self.assertEqual(type(out), bytes)
+
+        aid = h5py.h5a.open(self.f.id, b"x")
+        tid = aid.get_type()
+        self.assertEqual(type(tid), h5py.h5t.TypeStringID)
+        self.assertEqual(tid.get_cset(), h5py.h5t.CSET_ASCII)
+        self.assertTrue(tid.is_variable_str())
+
+    def test_unicode_scalar(self):
+        """ Storage of variable-length unicode strings (auto-creation) """
+
+        self.f.attrs['x'] = u"Hello\u2340!!"
+        out = self.f.attrs['x']
+        self.assertEqual(out, u"Hello\u2340!!")
+        self.assertEqual(type(out), unicode)
+
+        aid = h5py.h5a.open(self.f.id, b"x")
+        tid = aid.get_type()
+        self.assertEqual(type(tid), h5py.h5t.TypeStringID)
+        self.assertEqual(tid.get_cset(), h5py.h5t.CSET_UTF8)
+        self.assertTrue(tid.is_variable_str())
+
+
+class TestEmpty(BaseAttrs):
+
+    def setUp(self):
+        BaseAttrs.setUp(self)
+        sid = h5s.create(h5s.NULL)
+        tid = h5t.C_S1.copy()
+        tid.set_size(10)
+        aid = h5a.create(self.f.id, b'x', tid, sid)
+
+    def test_read(self):
+        with self.assertRaises(IOError):
+            self.f.attrs['x']
+
+    def test_modify(self):
+        with self.assertRaises(IOError):
+            self.f.attrs.modify('x', 1)
+
+    def test_values(self):
+        with self.assertRaises(IOError):
+            # list() is for Py3 where these are iterators
+            list(self.f.attrs.values())
+
+    def test_items(self):
+        with self.assertRaises(IOError):
+            list(self.f.attrs.items())
+
+    def test_itervalues(self):
+        with self.assertRaises(IOError):
+            list(self.f.attrs.itervalues())
+
+    def test_iteritems(self):
+        with self.assertRaises(IOError):
+            list(self.f.attrs.iteritems())
+
+
+class TestWriteException(BaseAttrs):
+
+    """
+        Ensure failed attribute writes don't leave garbage behind.
+    """
+
+    def test_write(self):
+        """ ValueError on string write wipes out attribute """
+
+        s = b"Hello\x00\Hello"
+
+        try:
+            self.f.attrs['x'] = s
+        except ValueError:
+            pass
+
+        with self.assertRaises(KeyError):
+            self.f.attrs['x']
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/h5py/_hl/tests/test_base.py b/h5py/_hl/tests/test_base.py
new file mode 100644
index 0000000..b5f8f3e
--- /dev/null
+++ b/h5py/_hl/tests/test_base.py
@@ -0,0 +1,87 @@
+# This file is part of h5py, a Python interface to the HDF5 library.
+#
+# http://www.h5py.org
+#
+# Copyright 2008-2013 Andrew Collette and contributors
+#
+# License:  Standard 3-clause BSD; see "license.txt" for full license terms
+#           and contributor agreement.
+
+"""
+    Common high-level operations test
+
+    Tests features common to all high-level objects, like the .name property.
+"""
+
+from h5py import File
+from .common import ut, TestCase, py3, unicode_filenames
+
+import numpy as np
+import os
+import tempfile
+
+class BaseTest(TestCase):
+
+    def setUp(self):
+        self.f = File(self.mktemp(), 'w')
+
+    def tearDown(self):
+        if self.f:
+            self.f.close()
+
+class TestName(BaseTest):
+
+    """
+        Feature: .name attribute returns the object name
+    """
+
+    def test_anonymous(self):
+        """ Anomymous objects have name None """
+        grp = self.f.create_group(None)
+        self.assertIs(grp.name, None)
+
+class TestRepr(BaseTest):
+
+    """
+        repr() works correctly with Unicode names
+    """
+
+    USTRING = u"\xfc\xdf"
+
+    def _check_type(self, obj):
+        if py3:
+            self.assertIsInstance(repr(obj), unicode)
+        else:
+            self.assertIsInstance(repr(obj), bytes)
+
+    def test_group(self):
+        """ Group repr() with unicode """
+        grp = self.f.create_group(self.USTRING)
+        self._check_type(grp)
+
+    def test_dataset(self):
+        """ Dataset repr() with unicode """
+        dset = self.f.create_dataset(self.USTRING, (1,))
+        self._check_type(dset)
+
+    def test_namedtype(self):
+        """ Named type repr() with unicode """
+        self.f['type'] = np.dtype('f')
+        typ = self.f['type']
+        self._check_type(typ)
+
+    @ut.skipIf(not unicode_filenames, "Filesystem unicode support required")
+    def test_file(self):
+        """ File object repr() with unicode """
+        fname = tempfile.mktemp(self.USTRING+u'.hdf5')
+        try:
+            with File(fname,'w') as f:
+                self._check_type(f)
+        finally:
+            try:
+                os.unlink(fname)
+            except Exception:
+                pass
+
+        
+
diff --git a/h5py/_hl/tests/test_dataset.py b/h5py/_hl/tests/test_dataset.py
new file mode 100644
index 0000000..aa834e2
--- /dev/null
+++ b/h5py/_hl/tests/test_dataset.py
@@ -0,0 +1,856 @@
+# This file is part of h5py, a Python interface to the HDF5 library.
+#
+# http://www.h5py.org
+#
+# Copyright 2008-2013 Andrew Collette and contributors
+#
+# License:  Standard 3-clause BSD; see "license.txt" for full license terms
+#           and contributor agreement.
+
+"""
+    Dataset testing operations.
+
+    Tests all dataset operations, including creation, with the exception of:
+
+    1. Slicing operations for read and write, handled by module test_slicing
+    2. Type conversion for read and write (currently untested)
+"""
+
+import sys
+
+import numpy as np
+
+from .common import ut, TestCase
+from h5py.highlevel import File, Group, Dataset
+from h5py import h5t
+import h5py
+
+class BaseDataset(TestCase):
+
+    def setUp(self):
+        self.f = File(self.mktemp(), 'w')
+
+    def tearDown(self):
+        if self.f:
+            self.f.close()
+
+class TestRepr(BaseDataset):
+
+    """
+        Feature: repr(Dataset) behaves sensibly
+    """
+
+    def test_repr_open(self):
+        """ repr() works on live and dead datasets """
+        ds = self.f.create_dataset('foo', (4,))
+        self.assertIsInstance(repr(ds), basestring)
+        self.f.close()
+        self.assertIsInstance(repr(ds), basestring)
+
+class TestCreateShape(BaseDataset):
+
+    """
+        Feature: Datasets can be created from a shape only
+    """
+
+    def test_create_scalar(self):
+        """ Create a scalar dataset """
+        dset = self.f.create_dataset('foo', ())
+        self.assertEqual(dset.shape, ())
+
+    def test_create_simple(self):
+        """ Create a size-1 dataset """
+        dset = self.f.create_dataset('foo', (1,))
+        self.assertEqual(dset.shape, (1,))
+
+    def test_create_extended(self):
+        """ Create an extended dataset """
+        dset = self.f.create_dataset('foo', (63,))
+        self.assertEqual(dset.shape, (63,))
+        self.assertEqual(dset.size, 63)
+        dset = self.f.create_dataset('bar', (6, 10))
+        self.assertEqual(dset.shape, (6, 10))
+        self.assertEqual(dset.size, (60))
+
+    def test_default_dtype(self):
+        """ Confirm that the default dtype is float """
+        dset = self.f.create_dataset('foo', (63,))
+        self.assertEqual(dset.dtype, np.dtype('=f4'))
+
+    def test_missing_shape(self):
+        """ Missing shape raises TypeError """
+        with self.assertRaises(TypeError):
+            self.f.create_dataset('foo')
+
+class TestCreateData(BaseDataset):
+
+    """
+        Feature: Datasets can be created from existing data
+    """
+
+    def test_create_scalar(self):
+        """ Create a scalar dataset from existing array """
+        data = np.ones((), 'f')
+        dset = self.f.create_dataset('foo', data=data)
+        self.assertEqual(dset.shape, data.shape)
+
+    def test_create_extended(self):
+        """ Create an extended dataset from existing data """
+        data = np.ones((63,), 'f')
+        dset = self.f.create_dataset('foo', data=data)
+        self.assertEqual(dset.shape, data.shape)
+
+    def test_dataset_intermediate_group(self):
+        """ Create dataset with missing intermediate groups """
+        ds = self.f.create_dataset("/foo/bar/baz", shape=(10, 10), dtype='<i4')
+        self.assertIsInstance(ds, h5py.Dataset)
+        self.assertTrue("/foo/bar/baz" in self.f)
+
+    def test_reshape(self):
+        """ Create from existing data, and make it fit a new shape """
+        data = np.arange(30, dtype='f')
+        dset = self.f.create_dataset('foo', shape=(10,3), data=data)
+        self.assertEqual(dset.shape, (10,3))
+        self.assertArrayEqual(dset[...],data.reshape((10,3)))
+
+    def test_appropriate_low_level_id(self):
+        " Binding Dataset to a non-DatasetID identifier fails with ValueError "
+        with self.assertRaises(ValueError):
+            Dataset(self.f['/'].id)
+
+    def test_create_bytestring(self):
+        """ Creating dataset with byte string yields vlen ASCII dataset """
+
+class TestCreateRequire(BaseDataset):
+
+    """
+        Feature: Datasets can be created only if they don't exist in the file
+    """
+
+    def test_create(self):
+        """ Create new dataset with no conflicts """
+        dset = self.f.require_dataset('foo', (10,3), 'f')
+        self.assertIsInstance(dset, Dataset)
+        self.assertEqual(dset.shape, (10,3))
+
+    def test_create_existing(self):
+        """ require_dataset yields existing dataset """
+        dset = self.f.require_dataset('foo', (10,3), 'f')
+        dset2 = self.f.require_dataset('foo',(10,3), 'f')
+        self.assertEqual(dset, dset2)
+
+    def test_shape_conflict(self):
+        """ require_dataset with shape conflict yields TypeError """
+        self.f.create_dataset('foo', (10,3), 'f')
+        with self.assertRaises(TypeError):
+            self.f.require_dataset('foo', (10,4), 'f')
+
+    def test_type_confict(self):
+        """ require_dataset with object type conflict yields TypeError """
+        self.f.create_group('foo')
+        with self.assertRaises(TypeError):
+            self.f.require_dataset('foo', (10,3), 'f')
+
+    def test_dtype_conflict(self):
+        """ require_dataset with dtype conflict (strict mode) yields TypeError
+        """
+        dset = self.f.create_dataset('foo', (10,3), 'f')
+        with self.assertRaises(TypeError):
+            self.f.require_dataset('foo', (10,3), 'S10')
+
+    def test_dtype_close(self):
+        """ require_dataset with convertible type succeeds (non-strict mode)
+        """
+        dset = self.f.create_dataset('foo', (10,3), 'i4')
+        dset2 = self.f.require_dataset('foo', (10,3), 'i2', exact=False)
+        self.assertEqual(dset, dset2)
+        self.assertEqual(dset2.dtype, np.dtype('i4'))
+
+class TestCreateChunked(BaseDataset):
+
+    """
+        Feature: Datasets can be created by manually specifying chunks
+    """
+
+    def test_create_chunks(self):
+        """ Create via chunks tuple """
+        dset = self.f.create_dataset('foo', shape=(100,), chunks=(10,))
+        self.assertEqual(dset.chunks, (10,))
+
+    def test_chunks_mismatch(self):
+        """ Illegal chunk size raises ValueError """
+        with self.assertRaises(ValueError):
+            self.f.create_dataset('foo', shape=(100,), chunks=(200,))
+
+    def test_chunks_scalar(self):
+        """ Attempting to create chunked scalar dataset raises TypeError """
+        with self.assertRaises(TypeError):
+            self.f.create_dataset('foo', shape=(), chunks=(50,))
+
+    def test_auto_chunks(self):
+        """ Auto-chunking of datasets """
+        dset = self.f.create_dataset('foo', shape=(20,100), chunks=True)
+        self.assertIsInstance(dset.chunks, tuple)
+        self.assertEqual(len(dset.chunks), 2)
+
+    def test_auto_chunks_abuse(self):
+        """ Auto-chunking with pathologically large element sizes """
+        dset = self.f.create_dataset('foo', shape=(3,), dtype='S100000000', chunks=True)
+        self.assertEqual(dset.chunks, (1,))
+
+class TestCreateFillvalue(BaseDataset):
+
+    """
+        Feature: Datasets can be created with fill value
+    """
+
+    def test_create_fillval(self):
+        """ Fill value is reflected in dataset contents """
+        dset = self.f.create_dataset('foo', (10,), fillvalue=4.0)
+        self.assertEqual(dset[0], 4.0)
+        self.assertEqual(dset[7], 4.0)
+
+    def test_property(self):
+        """ Fill value is recoverable via property """
+        dset = self.f.create_dataset('foo', (10,), fillvalue=3.0)
+        self.assertEqual(dset.fillvalue, 3.0)
+        self.assertNotIsInstance(dset.fillvalue, np.ndarray)
+
+    def test_property_none(self):
+        """ .fillvalue property works correctly if not set """
+        dset = self.f.create_dataset('foo', (10,))
+        self.assertEqual(dset.fillvalue, 0)
+
+    def test_compound(self):
+        """ Fill value works with compound types """
+        dt = np.dtype([('a','f4'),('b','i8')])
+        v = np.ones((1,), dtype=dt)[0]
+        dset = self.f.create_dataset('foo', (10,), dtype=dt, fillvalue=v)
+        self.assertEqual(dset.fillvalue, v)
+        self.assertAlmostEqual(dset[4], v)
+
+    def test_exc(self):
+        """ Bogus fill value raises TypeError """
+        with self.assertRaises(ValueError):
+            dset = self.f.create_dataset('foo', (10,),
+                    dtype=[('a','i'),('b','f')], fillvalue=42)
+
+class TestCreateNamedType(BaseDataset):
+
+    """
+        Feature: Datasets created from an existing named type
+    """
+
+    def test_named(self):
+        """ Named type object works and links the dataset to type """
+        self.f['type'] = np.dtype('f8')
+        dset = self.f.create_dataset('x', (100,), dtype=self.f['type'])
+        self.assertEqual(dset.dtype, np.dtype('f8'))
+        self.assertEqual(dset.id.get_type(), self.f['type'].id)
+        self.assertTrue(dset.id.get_type().committed())
+
+ at ut.skipIf('gzip' not in h5py.filters.encode, "DEFLATE is not installed")
+class TestCreateGzip(BaseDataset):
+
+    """
+        Feature: Datasets created with gzip compression
+    """
+
+    def test_gzip(self):
+        """ Create with explicit gzip options """
+        dset = self.f.create_dataset('foo', (20,30), compression='gzip',
+                                     compression_opts=9)
+        self.assertEqual(dset.compression, 'gzip')
+        self.assertEqual(dset.compression_opts, 9)
+
+    def test_gzip_implicit(self):
+        """ Create with implicit gzip level (level 4) """
+        dset = self.f.create_dataset('foo', (20,30), compression='gzip')
+        self.assertEqual(dset.compression, 'gzip')
+        self.assertEqual(dset.compression_opts, 4)
+
+    def test_gzip_number(self):
+        """ Create with gzip level by specifying integer """
+        dset = self.f.create_dataset('foo', (20,30), compression=7)
+        self.assertEqual(dset.compression, 'gzip')
+        self.assertEqual(dset.compression_opts, 7)
+
+    def test_gzip_exc(self):
+        """ Illegal gzip level (explicit or implicit) raises ValueError """
+        with self.assertRaises(ValueError):
+            self.f.create_dataset('foo', (20,30), compression=14)
+        with self.assertRaises(ValueError):
+            self.f.create_dataset('foo', (20,30), compression=-4)
+        with self.assertRaises(ValueError):
+            self.f.create_dataset('foo', (20,30), compression='gzip',
+                                  compression_opts=14)
+
+
+ at ut.skipIf('lzf' not in h5py.filters.encode, "LZF is not installed")
+class TestCreateLZF(BaseDataset):
+
+    """
+        Feature: Datasets created with LZF compression
+    """
+
+    def test_lzf(self):
+        """ Create with explicit lzf """
+        dset = self.f.create_dataset('foo', (20,30), compression='lzf')
+        self.assertEqual(dset.compression, 'lzf')
+        self.assertEqual(dset.compression_opts, None)
+
+    def test_lzf_exc(self):
+        """ Giving lzf options raises ValueError """
+        with self.assertRaises(ValueError):
+            self.f.create_dataset('foo', (20,30), compression='lzf',
+                                  compression_opts=4)
+
+
+ at ut.skipIf('szip' not in h5py.filters.encode, "SZIP is not installed")
+class TestCreateSZIP(BaseDataset):
+
+    """
+        Feature: Datasets created with LZF compression
+    """
+
+    def test_szip(self):
+        """ Create with explicit szip """
+        dset = self.f.create_dataset('foo', (20,30), compression='szip',
+                                     compression_opts=('ec',16))
+
+
+ at ut.skipIf('shuffle' not in h5py.filters.encode, "SHUFFLE is not installed")
+class TestCreateShuffle(BaseDataset):
+
+    """
+        Feature: Datasets can use shuffling filter
+    """
+
+    def test_shuffle(self):
+        """ Enable shuffle filter """
+        dset = self.f.create_dataset('foo', (20,30), shuffle=True)
+        self.assertTrue(dset.shuffle)
+
+
+ at ut.skipIf('fletcher32' not in h5py.filters.encode, "FLETCHER32 is not installed")
+class TestCreateFletcher32(BaseDataset):
+    """
+        Feature: Datases can use the fletcher32 filter
+    """
+
+    def test_fletcher32(self):
+        """ Enable fletcher32 filter """
+        dset = self.f.create_dataset('foo', (20,30), fletcher32=True)
+        self.assertTrue(dset.fletcher32)
+
+ at ut.skipIf('scaleoffset' not in h5py.filters.encode, "SCALEOFFSET is not installed")
+class TestCreateScaleOffset(BaseDataset):
+    """
+        Feature: Datasets can use the scale/offset filter
+    """
+
+    def test_float_fails_without_options(self):
+        """ Ensure that a scale factor is required for scaleoffset compression of floating point data """
+
+        with self.assertRaises(ValueError):
+            dset = self.f.create_dataset('foo', (20,30), dtype=float, scaleoffset=True)
+
+    def test_float(self):
+        """ Scaleoffset filter works for floating point data """
+
+        scalefac = 4
+        shape=(100,300)
+        range=20*10**scalefac
+        testdata = (np.random.rand(*shape)-0.5)*range
+
+        dset = self.f.create_dataset('foo', shape, dtype=float, scaleoffset=scalefac)
+
+        # Dataset reports that scaleoffset is in use
+        assert dset.scaleoffset is not None
+
+        # Dataset round-trips
+        dset[...] = testdata
+        filename = self.f.filename
+        self.f.close()
+        self.f = h5py.File(filename, 'r')
+        readdata = self.f['foo'][...]
+
+        # Test that data round-trips to requested precision
+        self.assertArrayEqual(readdata, testdata, precision=10**(-scalefac))
+
+        # Test that the filter is actually active (i.e. compression is lossy)
+        assert not (readdata == testdata).all()
+
+    def test_int(self):
+        """ Scaleoffset filter works for integer data with default precision """
+
+        nbits = 12
+        shape =  (100, 300)
+        testdata = np.random.randint(0, 2**nbits-1,size=shape)
+
+        # Create dataset; note omission of nbits (for library-determined precision)
+        dset = self.f.create_dataset('foo', shape, dtype=int, scaleoffset=True)
+
+        # Dataset reports scaleoffset enabled
+        assert dset.scaleoffset is not None
+
+        # Data round-trips correctly and identically
+        dset[...] = testdata
+        filename = self.f.filename
+        self.f.close()
+        self.f = h5py.File(filename, 'r')
+        readdata = self.f['foo'][...]
+        self.assertArrayEqual(readdata, testdata)
+
+    def test_int_with_minbits(self):
+        """ Scaleoffset filter works for integer data with specified precision """
+
+        nbits = 12
+        shape =  (100, 300)
+        testdata = np.random.randint(0, 2**nbits,size=shape)
+
+        dset = self.f.create_dataset('foo', shape, dtype=int, scaleoffset=nbits)
+
+        # Dataset reports scaleoffset enabled with correct precision
+        self.assertTrue(dset.scaleoffset == 12)
+
+        # Data round-trips correctly
+        dset[...] = testdata
+        filename = self.f.filename
+        self.f.close()
+        self.f = h5py.File(filename, 'r')
+        readdata = self.f['foo'][...]
+        self.assertArrayEqual(readdata, testdata)
+
+    def test_int_with_minbits_lossy(self):
+        """ Scaleoffset filter works for integer data with specified precision """
+
+        nbits = 12
+        shape =  (100, 300)
+        testdata = np.random.randint(0, 2**(nbits+1)-1,size=shape)
+
+        dset = self.f.create_dataset('foo', shape, dtype=int, scaleoffset=nbits)
+
+        # Dataset reports scaleoffset enabled with correct precision
+        self.assertTrue(dset.scaleoffset == 12)
+
+        # Data can be written and read
+        dset[...] = testdata
+        filename = self.f.filename
+        self.f.close()
+        self.f = h5py.File(filename, 'r')
+        readdata = self.f['foo'][...]
+
+        # Compression is lossy
+        assert not (readdata == testdata).all()
+
+class TestAutoCreate(BaseDataset):
+
+    """
+        Feauture: Datasets auto-created from data produce the correct types
+    """
+
+    def test_vlen_bytes(self):
+        """ Assignment of a byte string produces a vlen ascii dataset """
+        self.f['x'] = b"Hello there"
+        ds = self.f['x']
+        tid = ds.id.get_type()
+        self.assertEqual(type(tid), h5py.h5t.TypeStringID)
+        self.assertTrue(tid.is_variable_str())
+        self.assertEqual(tid.get_cset(), h5py.h5t.CSET_ASCII)
+
+    def test_vlen_unicode(self):
+        """ Assignment of a unicode string produces a vlen unicode dataset """
+        self.f['x'] = u"Hello there\u2034"
+        ds = self.f['x']
+        tid = ds.id.get_type()
+        self.assertEqual(type(tid), h5py.h5t.TypeStringID)
+        self.assertTrue(tid.is_variable_str())
+        self.assertEqual(tid.get_cset(), h5py.h5t.CSET_UTF8)
+
+    def test_string_fixed(self):
+        """ Assignement of fixed-length byte string produces a fixed-length
+        ascii dataset """
+        self.f['x'] = np.string_("Hello there")
+        ds = self.f['x']
+        tid = ds.id.get_type()
+        self.assertEqual(type(tid), h5py.h5t.TypeStringID)
+        self.assertEqual(tid.get_size(), 11)
+        self.assertEqual(tid.get_cset(), h5py.h5t.CSET_ASCII)
+
+class TestResize(BaseDataset):
+
+    """
+        Feature: Datasets created with "maxshape" may be resized
+    """
+
+    def test_create(self):
+        """ Create dataset with "maxshape" """
+        dset = self.f.create_dataset('foo', (20,30), maxshape=(20,60))
+        self.assertIsNot(dset.chunks, None)
+        self.assertEqual(dset.maxshape, (20,60))
+
+    def test_resize(self):
+        """ Datasets may be resized up to maxshape """
+        dset = self.f.create_dataset('foo', (20,30), maxshape=(20,60))
+        self.assertEqual(dset.shape, (20,30))
+        dset.resize((20,50))
+        self.assertEqual(dset.shape, (20,50))
+        dset.resize((20,60))
+        self.assertEqual(dset.shape, (20,60))
+
+    def test_resize_over(self):
+        """ Resizing past maxshape triggers ValueError """
+        dset = self.f.create_dataset('foo', (20,30), maxshape=(20,60))
+        with self.assertRaises(ValueError):
+            dset.resize((20,70))
+
+    def test_resize_nonchunked(self):
+        """ Resizing non-chunked dataset raises TypeError """
+        dset = self.f.create_dataset("foo", (20,30))
+        with self.assertRaises(TypeError):
+            dset.resize((20,60))
+
+    def test_resize_axis(self):
+        """ Resize specified axis """
+        dset = self.f.create_dataset('foo', (20,30), maxshape=(20,60))
+        dset.resize(50, axis=1)
+        self.assertEqual(dset.shape, (20,50))
+
+    def test_axis_exc(self):
+        """ Illegal axis raises ValueError """
+        dset = self.f.create_dataset('foo', (20,30), maxshape=(20,60))
+        with self.assertRaises(ValueError):
+            dset.resize(50, axis=2)
+
+    def test_zero_dim(self):
+        """ Allow zero-length initial dims for unlimited axes (issue 111) """
+        dset = self.f.create_dataset('foo', (15,0), maxshape=(15,None))
+        self.assertEqual(dset.shape, (15,0))
+        self.assertEqual(dset.maxshape, (15,None))
+
+class TestDtype(BaseDataset):
+
+    """
+        Feature: Dataset dtype is available as .dtype property
+    """
+
+    def test_dtype(self):
+        """ Retrieve dtype from dataset """
+        dset = self.f.create_dataset('foo', (5,), '|S10')
+        self.assertEqual(dset.dtype, np.dtype('|S10'))
+
+
+class TestLen(BaseDataset):
+
+    """
+        Feature: Size of first axis is available via Python's len
+    """
+
+    def test_len(self):
+        """ Python len() (under 32 bits) """
+        dset = self.f.create_dataset('foo', (312,15))
+        self.assertEqual(len(dset), 312)
+
+    def test_len_big(self):
+        """ Python len() vs Dataset.len() """
+        dset = self.f.create_dataset('foo', (2**33,15))
+        self.assertEqual(dset.shape, (2**33, 15))
+        if sys.maxsize == 2**31-1:
+            with self.assertRaises(OverflowError):
+                len(dset)
+        else:
+            self.assertEqual(len(dset), 2**33)
+        self.assertEqual(dset.len(), 2**33)
+
+class TestIter(BaseDataset):
+
+    """
+        Feature: Iterating over a dataset yields rows
+    """
+
+    def test_iter(self):
+        """ Iterating over a dataset yields rows """
+        data = np.arange(30, dtype='f').reshape((10,3))
+        dset = self.f.create_dataset('foo', data=data)
+        for x, y in zip(dset, data):
+            self.assertEqual(len(x), 3)
+            self.assertArrayEqual(x,y)
+
+    def test_iter_scalar(self):
+        """ Iterating over scalar dataset raises TypeError """
+        dset = self.f.create_dataset('foo', shape=())
+        with self.assertRaises(TypeError):
+            [x for x in dset]
+
+class TestStrings(BaseDataset):
+
+    """
+        Feature: Datasets created with vlen and fixed datatypes correctly
+        translate to and from HDF5
+    """
+
+    def test_vlen_bytes(self):
+        """ Vlen bytes dataset maps to vlen ascii in the file """
+        dt = h5py.special_dtype(vlen=bytes)
+        ds = self.f.create_dataset('x', (100,), dtype=dt)
+        tid = ds.id.get_type()
+        self.assertEqual(type(tid), h5py.h5t.TypeStringID)
+        self.assertEqual(tid.get_cset(), h5py.h5t.CSET_ASCII)
+
+    def test_vlen_unicode(self):
+        """ Vlen unicode dataset maps to vlen utf-8 in the file """
+        dt = h5py.special_dtype(vlen=unicode)
+        ds = self.f.create_dataset('x', (100,), dtype=dt)
+        tid = ds.id.get_type()
+        self.assertEqual(type(tid), h5py.h5t.TypeStringID)
+        self.assertEqual(tid.get_cset(), h5py.h5t.CSET_UTF8)
+
+    def test_fixed_bytes(self):
+        """ Fixed-length bytes dataset maps to fixed-length ascii in the file
+        """
+        dt = np.dtype("|S10")
+        ds = self.f.create_dataset('x', (100,), dtype=dt)
+        tid = ds.id.get_type()
+        self.assertEqual(type(tid), h5py.h5t.TypeStringID)
+        self.assertFalse(tid.is_variable_str())
+        self.assertEqual(tid.get_size(),10)
+        self.assertEqual(tid.get_cset(), h5py.h5t.CSET_ASCII)
+
+    def test_fixed_unicode(self):
+        """ Fixed-length unicode datasets are unsupported (raise TypeError) """
+        dt = np.dtype("|U10")
+        with self.assertRaises(TypeError):
+            ds = self.f.create_dataset('x', (100,), dtype=dt)
+
+    def test_roundtrip_vlen_bytes(self):
+        """ writing and reading to vlen bytes dataset preserves type and content
+        """
+        dt = h5py.special_dtype(vlen=bytes)
+        ds = self.f.create_dataset('x', (100,), dtype=dt)
+        data = b"Hello\xef"
+        ds[0] = data
+        out = ds[0]
+        self.assertEqual(type(out), bytes)
+        self.assertEqual(out, data)
+
+    def test_roundtrip_vlen_unicode(self):
+        """ Writing and reading to unicode dataset preserves type and content
+        """
+        dt = h5py.special_dtype(vlen=unicode)
+        ds = self.f.create_dataset('x', (100,), dtype=dt)
+        data = u"Hello\u2034"
+        ds[0] = data
+        out = ds[0]
+        self.assertEqual(type(out), unicode)
+        self.assertEqual(out, data)
+
+    def test_roundtrip_fixed_bytes(self):
+        """ Writing to and reading from fixed-length bytes dataset preserves
+        type and content """
+        dt = np.dtype("|S10")
+        ds = self.f.create_dataset('x', (100,), dtype=dt)
+        data = b"Hello\xef"
+        ds[0] = data
+        out = ds[0]
+        self.assertEqual(type(out), np.string_)
+        self.assertEqual(out, data)
+
+    @ut.expectedFailure
+    def test_unicode_write_error(self):
+        """ Writing a non-utf8 byte string to a unicode vlen dataset raises
+        ValueError """
+        dt = h5py.special_dtype(vlen=unicode)
+        ds = self.f.create_dataset('x', (100,), dtype=dt)
+        data = "Hello\xef"
+        with self.assertRaises(ValueError):
+            ds[0] = data
+
+    def test_unicode_write_bytes(self):
+        """ Writing valid utf-8 byte strings to a unicode vlen dataset is OK
+        """
+        dt = h5py.special_dtype(vlen=unicode)
+        ds = self.f.create_dataset('x', (100,), dtype=dt)
+        data = u"Hello there\u2034"
+        ds[0] = data.encode('utf8')
+        out = ds[0]
+        self.assertEqual(type(out), unicode)
+        self.assertEqual(out, data)
+
+class TestCompound(BaseDataset):
+
+    """
+        Feature: Compound types correctly round-trip
+    """
+
+    def test_rt(self):
+        """ Compound types are read back in correct order (issue 236)"""
+
+        dt = np.dtype( [ ('weight', np.float64),
+                             ('cputime', np.float64),
+                             ('walltime', np.float64),
+                             ('parents_offset', np.uint32),
+                             ('n_parents', np.uint32),
+                             ('status', np.uint8),
+                             ('endpoint_type', np.uint8), ] )
+
+        testdata = np.ndarray((16,),dtype=dt)
+        for key in dt.fields:
+            testdata[key] = np.random.random((16,))*100
+
+        self.f['test'] = testdata
+        outdata = self.f['test'][...]
+        self.assertTrue(np.all(outdata == testdata))
+        self.assertEqual(outdata.dtype, testdata.dtype)
+
+class TestEnum(BaseDataset):
+
+    """
+        Feature: Enum datatype info is preserved, read/write as integer
+    """
+
+    EDICT = {'RED': 0, 'GREEN': 1, 'BLUE': 42}
+
+    def test_create(self):
+        """ Enum datasets can be created and type correctly round-trips """
+        dt = h5py.special_dtype(enum=('i', self.EDICT))
+        ds = self.f.create_dataset('x', (100,100), dtype=dt)
+        dt2 = ds.dtype
+        dict2 = h5py.check_dtype(enum=dt2)
+        self.assertEqual(dict2,self.EDICT)
+
+    def test_readwrite(self):
+        """ Enum datasets can be read/written as integers """
+        dt = h5py.special_dtype(enum=('i4', self.EDICT))
+        ds = self.f.create_dataset('x', (100,100), dtype=dt)
+        ds[35,37] = 42
+        ds[1,:] = 1
+        self.assertEqual(ds[35,37], 42)
+        self.assertArrayEqual(ds[1,:], np.array((1,)*100,dtype='i4'))
+
+class TestFloats(BaseDataset):
+
+    """
+        Test support for mini and extended-precision floats
+    """
+
+    def _exectest(self, dt):
+        dset = self.f.create_dataset('x', (100,), dtype=dt)
+        self.assertEqual(dset.dtype, dt)
+        data = np.ones((100,), dtype=dt)
+        dset[...] = data
+        self.assertArrayEqual(dset[...], data)
+
+    @ut.skipUnless(hasattr(np, 'float16'), "NumPy float16 support required") 
+    def test_mini(self):
+        """ Mini-floats round trip """
+        self._exectest(np.dtype('float16'))
+
+    #TODO: move these tests to test_h5t
+    def test_mini_mapping(self):
+        """ Test mapping for float16 """
+        if hasattr(np, 'float16'):
+            self.assertEqual(h5t.IEEE_F16LE.dtype, np.dtype('<f2'))
+        else:
+            self.assertEqual(h5t.IEEE_F16LE.dtype, np.dtype('<f4'))
+
+class TestTrackTimes(BaseDataset):
+
+    """
+        Feature: track_times
+    """
+
+    def test_disable_track_times(self):
+        """ check that when track_times=False, the time stamp=0 (Jan 1, 1970) """
+        ds = self.f.create_dataset('foo', (4,), track_times=False)
+        ds_mtime = h5py.h5g.get_objinfo(ds._id).mtime
+        self.assertEqual(0, ds_mtime)
+
+class TestZeroShape(BaseDataset):
+
+    """
+        Features of datasets with (0,)-shape axes
+    """
+
+    def test_array_conversion(self):
+        """ Empty datasets can be converted to NumPy arrays """
+        ds = self.f.create_dataset('x', (0,), maxshape=(None,))
+        self.assertEqual(ds.shape, np.array(ds).shape)
+
+        ds = self.f.create_dataset('y', (0,0), maxshape=(None,None))
+        self.assertEqual(ds.shape, np.array(ds).shape)
+
+    def test_reading(self):
+        """ Slicing into empty datasets works correctly """
+        dt = [('a','f'),('b','i')]
+        ds = self.f.create_dataset('x', (0,), dtype=dt, maxshape=(None,))
+        arr = np.empty((0,), dtype=dt)
+
+        self.assertEqual(ds[...].shape, arr.shape)
+        self.assertEqual(ds[...].dtype, arr.dtype)
+        self.assertEqual(ds[()].shape, arr.shape)
+        self.assertEqual(ds[()].dtype, arr.dtype)
+
+class TestRegionRefs(BaseDataset):
+
+    """
+        Various features of region references
+    """
+
+    def setUp(self):
+        BaseDataset.setUp(self)
+        self.data = np.arange(100*100).reshape((100,100))
+        self.dset = self.f.create_dataset('x', data=self.data)
+        self.dset[...] = self.data
+
+    def test_create_ref(self):
+        """ Region references can be used as slicing arguments """
+        slic = np.s_[25:35,10:100:5]
+        ref = self.dset.regionref[slic]
+        self.assertArrayEqual(self.dset[ref], self.data[slic])
+
+    def test_ref_shape(self):
+        """ Region reference shape and selection shape """
+        slic = np.s_[25:35,10:100:5]
+        ref = self.dset.regionref[slic]
+        self.assertEqual(self.dset.regionref.shape(ref), self.dset.shape)
+        self.assertEqual(self.dset.regionref.selection(ref), (10, 18))
+
+class TestAstype(BaseDataset):
+
+    """
+        .astype context manager
+    """
+
+    def test_astype(self):
+
+        dset = self.f.create_dataset('x', (100,), dtype='i2')
+        dset[...] = np.arange(100)
+        with dset.astype('f8'):
+            self.assertEqual(dset[...].dtype, np.dtype('f8'))
+            self.assertTrue(np.all(dset[...] == np.arange(100)))
+
+
+class TestScalarCompound(BaseDataset):
+
+    """
+        Retrieval of a single field from a scalar compound dataset should
+        strip the field info
+    """
+
+    def test_scalar_compound(self):
+
+        dt = np.dtype([('a','i')])
+        dset = self.f.create_dataset('x', (), dtype=dt)
+        self.assertEqual(dset['a'].dtype, np.dtype('i'))
+
+
+
+
+
+
+
+
+
+
+
diff --git a/h5py/_hl/tests/test_datatype.py b/h5py/_hl/tests/test_datatype.py
new file mode 100644
index 0000000..0d2c470
--- /dev/null
+++ b/h5py/_hl/tests/test_datatype.py
@@ -0,0 +1,50 @@
+# This file is part of h5py, a Python interface to the HDF5 library.
+#
+# http://www.h5py.org
+#
+# Copyright 2008-2013 Andrew Collette and contributors
+#
+# License:  Standard 3-clause BSD; see "license.txt" for full license terms
+#           and contributor agreement.
+
+"""
+    File-resident datatype tests.
+
+    Tests "committed" file-resident datatype objects.
+"""
+
+import numpy as np
+
+from .common import ut, TestCase
+
+from h5py import File
+from h5py._hl.datatype import Datatype
+
+class BaseType(TestCase):
+
+    def setUp(self):
+        self.f = File(self.mktemp(), 'w')
+
+    def tearDown(self):
+        if self.f:
+            self.f.close()
+
+class TestCreation(BaseType):
+
+    """
+        Feature: repr() works sensibly on datatype objects
+    """
+
+    def test_repr(self):
+        """ repr() on datatype objects """
+        self.f['foo'] = np.dtype('S10')
+        dt = self.f['foo']
+        self.assertIsInstance(repr(dt), basestring)
+        self.f.close()
+        self.assertIsInstance(repr(dt), basestring)
+
+
+    def test_appropriate_low_level_id(self):
+        " Binding a group to a non-TypeID identifier fails with ValueError "
+        with self.assertRaises(ValueError):
+            Datatype(self.f['/'].id)
diff --git a/h5py/_hl/tests/test_dimension_scales.py b/h5py/_hl/tests/test_dimension_scales.py
new file mode 100644
index 0000000..ce384fb
--- /dev/null
+++ b/h5py/_hl/tests/test_dimension_scales.py
@@ -0,0 +1,197 @@
+# This file is part of h5py, a Python interface to the HDF5 library.
+#
+# http://www.h5py.org
+#
+# Copyright 2008-2013 Andrew Collette and contributors
+#
+# License:  Standard 3-clause BSD; see "license.txt" for full license terms
+#           and contributor agreement.
+
+import sys
+
+import numpy as np
+
+from .common import ut, TestCase
+from h5py.highlevel import File, Group, Dataset
+import h5py
+
+
+class BaseDataset(TestCase):
+
+    """
+    data is a 3-dimensional dataset with dimensions [z, y, x]
+
+    The z dimension is labeled. It does not have any attached scales.
+    The y dimension is not labeled. It has one attached scale.
+    The x dimension is labeled. It has two attached scales.
+
+    data2 is a 3-dimensional dataset with no associated dimension scales.
+    """
+
+    def setUp(self):
+        self.f = File(self.mktemp(), 'w')
+        self.f['data'] = np.ones((4, 3, 2), 'f')
+        self.f['data2'] = np.ones((4, 3, 2), 'f')
+        self.f['x1'] = np.ones((2), 'f')
+        h5py.h5ds.set_scale(self.f['x1'].id)
+        h5py.h5ds.attach_scale(self.f['data'].id, self.f['x1'].id, 2)
+        self.f['x2'] = np.ones((2), 'f')
+        h5py.h5ds.set_scale(self.f['x2'].id, b'x2 name')
+        h5py.h5ds.attach_scale(self.f['data'].id, self.f['x2'].id, 2)
+        self.f['y1'] = np.ones((3), 'f')
+        h5py.h5ds.set_scale(self.f['y1'].id, b'y1 name')
+        h5py.h5ds.attach_scale(self.f['data'].id, self.f['y1'].id, 1)
+        self.f['z1'] = np.ones((4), 'f')
+
+        h5py.h5ds.set_label(self.f['data'].id, 0, b'z')
+        h5py.h5ds.set_label(self.f['data'].id, 2, b'x')
+
+    def tearDown(self):
+        if self.f:
+            self.f.close()
+
+
+class TestH5DSBindings(BaseDataset):
+
+    """
+        Feature: Datasets can be created from existing data
+    """
+
+    def test_create_dimensionscale(self):
+        """ Create a dimension scale from existing dataset """
+        self.assertTrue(h5py.h5ds.is_scale(self.f['x1'].id))
+        self.assertEqual(h5py.h5ds.get_scale_name(self.f['x1'].id), b'')
+        self.assertEqual(self.f['x1'].attrs['CLASS'], b"DIMENSION_SCALE")
+        self.assertEqual(h5py.h5ds.get_scale_name(self.f['x2'].id), b'x2 name')
+
+    def test_attach_dimensionscale(self):
+        self.assertTrue(
+            h5py.h5ds.is_attached(self.f['data'].id, self.f['x1'].id, 2)
+            )
+        self.assertFalse(
+            h5py.h5ds.is_attached(self.f['data'].id, self.f['x1'].id, 1))
+        self.assertEqual(h5py.h5ds.get_num_scales(self.f['data'].id, 0), 0)
+        self.assertEqual(h5py.h5ds.get_num_scales(self.f['data'].id, 1), 1)
+        self.assertEqual(h5py.h5ds.get_num_scales(self.f['data'].id, 2), 2)
+
+    def test_detach_dimensionscale(self):
+        self.assertTrue(
+            h5py.h5ds.is_attached(self.f['data'].id, self.f['x1'].id, 2)
+            )
+        h5py.h5ds.detach_scale(self.f['data'].id, self.f['x1'].id, 2)
+        self.assertFalse(
+            h5py.h5ds.is_attached(self.f['data'].id, self.f['x1'].id, 2)
+            )
+        self.assertEqual(h5py.h5ds.get_num_scales(self.f['data'].id, 2), 1)
+
+    # TODO: update condition once the bug is fixed upstream
+    @ut.skipUnless(
+        h5py.version.hdf5_version_tuple > (2, 0, 0),
+        "Reading non-existent label segfaults"
+        )
+    def test_label_dimensionscale(self):
+        self.assertEqual(h5py.h5ds.get_label(self.f['data'].id, 0), b'z')
+        self.assertEqual(h5py.h5ds.get_label(self.f['data'].id, 1), b'')
+        self.assertEqual(h5py.h5ds.get_label(self.f['data'].id, 2), b'x')
+
+    def test_iter_dimensionscales(self):
+        def func(dsid):
+            res = h5py.h5ds.get_scale_name(dsid)
+            if res == b'x2 name':
+                return dsid
+
+        res = h5py.h5ds.iterate(self.f['data'].id, 2, func, 0)
+        self.assertEqual(h5py.h5ds.get_scale_name(res), b'x2 name')
+
+
+class TestDimensionManager(BaseDataset):
+
+    def test_create_scale(self):
+        # test recreating or renaming an existing scale:
+        self.f['data'].dims.create_scale(self.f['x1'], b'foobar')
+        self.assertEqual(self.f['data'].dims[2]['foobar'], self.f['x1'])
+        # test creating entirely new scale:
+        self.f['data'].dims.create_scale(self.f['data2'], b'foobaz')
+        self.f['data'].dims[2].attach_scale(self.f['data2'])
+        self.assertEqual(self.f['data'].dims[2]['foobaz'], self.f['data2'])
+
+    def test_get_dimension(self):
+        with self.assertRaises(IndexError):
+            self.f['data'].dims[3]
+
+    def test_len(self):
+        self.assertEqual(len(self.f['data'].dims), 3)
+        self.assertEqual(len(self.f['data2'].dims), 3)
+
+    def test_iter(self):
+        dims = self.f['data'].dims
+        self.assertEqual(
+            [d for d in dims],
+            [dims[0], dims[1], dims[2]]
+            )
+
+
+class TestDimensionsHighLevel(BaseDataset):
+
+    def test_len(self):
+        self.assertEqual(len(self.f['data'].dims[0]), 0)
+        self.assertEqual(len(self.f['data'].dims[1]), 1)
+        self.assertEqual(len(self.f['data'].dims[2]), 2)
+        self.assertEqual(len(self.f['data2'].dims[0]), 0)
+        self.assertEqual(len(self.f['data2'].dims[1]), 0)
+        self.assertEqual(len(self.f['data2'].dims[2]), 0)
+
+    def test_get_label(self):
+        self.assertEqual(self.f['data'].dims[2].label, 'x')
+        self.assertEqual(self.f['data'].dims[1].label, '')
+        self.assertEqual(self.f['data'].dims[0].label, 'z')
+        self.assertEqual(self.f['data2'].dims[2].label, '')
+        self.assertEqual(self.f['data2'].dims[1].label, '')
+        self.assertEqual(self.f['data2'].dims[0].label, '')
+
+    def test_set_label(self):
+        self.f['data'].dims[0].label = 'foo'
+        self.assertEqual(self.f['data'].dims[2].label, 'x')
+        self.assertEqual(self.f['data'].dims[1].label, '')
+        self.assertEqual(self.f['data'].dims[0].label, 'foo')
+
+    def test_detach_scale(self):
+        self.f['data'].dims[2].detach_scale(self.f['x1'])
+        self.assertEqual(len(self.f['data'].dims[2]), 1)
+        self.assertEqual(self.f['data'].dims[2][0], self.f['x2'])
+        self.f['data2'].dims[2].detach_scale(self.f['x1'])
+        self.assertEqual(len(self.f['data2'].dims[2]), 0)
+
+    def test_attach_scale(self):
+        self.f['x3'] = self.f['x2'][...]
+        self.f['data'].dims[2].attach_scale(self.f['x3'])
+        self.assertEqual(len(self.f['data'].dims[2]), 3)
+        self.assertEqual(self.f['data'].dims[2][2], self.f['x3'])
+
+    def test_get_dimension_scale(self):
+        self.assertEqual(self.f['data'].dims[2][0], self.f['x1'])
+        with self.assertRaises(IndexError):
+            self.f['data2'].dims[2][0], self.f['x2']
+        self.assertEqual(self.f['data'].dims[2][''], self.f['x1'])
+        self.assertEqual(self.f['data'].dims[2]['x2 name'], self.f['x2'])
+
+    def test_get_items(self):
+        self.assertEqual(
+            self.f['data'].dims[2].items(),
+            [('', self.f['x1']), ('x2 name', self.f['x2'])]
+            )
+
+    def test_get_keys(self):
+        self.assertEqual(self.f['data'].dims[2].keys(), ['', 'x2 name'])
+
+    def test_get_values(self):
+        self.assertEqual(
+            self.f['data'].dims[2].values(),
+            [self.f['x1'], self.f['x2']]
+            )
+
+    def test_iter(self):
+        self.assertEqual([i for i in self.f['data'].dims[2]], ['', 'x2 name'])
+
+    def test_repr(self):
+        self.assertEqual(repr(self.f['data'].dims[2])[1:16], '"x" dimension 2')
diff --git a/h5py/_hl/tests/test_file.py b/h5py/_hl/tests/test_file.py
new file mode 100644
index 0000000..d0b066c
--- /dev/null
+++ b/h5py/_hl/tests/test_file.py
@@ -0,0 +1,525 @@
+# This file is part of h5py, a Python interface to the HDF5 library.
+#
+# http://www.h5py.org
+#
+# Copyright 2008-2013 Andrew Collette and contributors
+#
+# License:  Standard 3-clause BSD; see "license.txt" for full license terms
+#           and contributor agreement.
+
+"""
+    File object test module.
+
+    Tests all aspects of File objects, including their creation.
+"""
+
+from __future__ import with_statement
+
+import os
+
+from .common import ut, TestCase, unicode_filenames
+from h5py.highlevel import File
+import h5py
+
+mpi = h5py.get_config().mpi
+
+class TestFileOpen(TestCase):
+
+    """
+        Feature: Opening files with Python-style modes.
+    """
+
+    def test_create(self):
+        """ Mode 'w' opens file in overwrite mode """
+        fname = self.mktemp()
+        fid = File(fname, 'w')
+        self.assertTrue(fid)
+        fid.create_group('foo')
+        fid.close()
+        fid = File(fname, 'w')
+        self.assertNotIn('foo', fid)
+        fid.close()
+
+    def test_create_exclusive(self):
+        """ Mode 'w-' opens file in exclusive mode """
+        fname = self.mktemp()
+        fid = File(fname, 'w-')
+        self.assert_(fid)
+        fid.close()
+        with self.assertRaises(IOError):
+            File(fname, 'w-')
+
+    def test_append(self):
+        """ Mode 'a' opens file in append/readwrite mode, creating if necessary """
+        fname = self.mktemp()
+        fid = File(fname, 'a')
+        try:
+            self.assert_(fid)
+            fid.create_group('foo')
+            self.assert_('foo' in fid)
+        finally:
+            fid.close()
+        fid = File(fname, 'a')
+        try:
+            self.assert_('foo' in fid)
+            fid.create_group('bar')
+            self.assert_('bar' in fid)
+        finally:
+            fid.close()
+
+    def test_readonly(self):
+        """ Mode 'r' opens file in readonly mode """
+        fname = self.mktemp()
+        fid = File(fname, 'w')
+        fid.close()
+        self.assert_(not fid)
+        fid = File(fname, 'r')
+        self.assert_(fid)
+        with self.assertRaises(ValueError):
+            fid.create_group('foo')
+        fid.close()
+
+    def test_readwrite(self):
+        """ Mode 'r+' opens existing file in readwrite mode """
+        fname = self.mktemp()
+        fid = File(fname, 'w')
+        fid.create_group('foo')
+        fid.close()
+        fid = File(fname, 'r+')
+        self.assert_('foo' in fid)
+        fid.create_group('bar')
+        self.assert_('bar' in fid)
+        fid.close()
+
+    def test_nonexistent_file(self):
+        """ Modes 'r' and 'r+' do not create files """
+        fname = self.mktemp()
+        with self.assertRaises(IOError):
+            File(fname, 'r')
+        with self.assertRaises(IOError):
+            File(fname, 'r+')
+
+    def test_invalid_mode(self):
+        """ Invalid modes raise ValueError """
+        with self.assertRaises(ValueError):
+            File(self.mktemp(), 'mongoose')
+
+class TestModes(TestCase):
+
+    """
+        Feature: File mode can be retrieved via file.mode
+    """
+
+    def test_mode_attr(self):
+        """ Mode equivalent can be retrieved via property """
+        fname = self.mktemp()
+        with File(fname, 'w') as f:
+            self.assertEqual(f.mode, 'r+')
+        with File(fname, 'r') as f:
+            self.assertEqual(f.mode, 'r')
+
+    def test_mode_external(self):
+        """ Mode property works for files opened via external links
+
+        Issue 190.
+        """
+        fname1 = self.mktemp()
+        fname2 = self.mktemp()
+
+        f1 = File(fname1,'w')
+        f1.close()
+
+        f2 = File(fname2,'w')
+        try:
+            f2['External'] = h5py.ExternalLink(fname1, '/')
+            f3 = f2['External'].file
+            self.assertEqual(f3.mode, 'r+')
+        finally:
+            f2.close()
+            f3.close()
+
+        f2 = File(fname2,'r')
+        try:
+            f3 = f2['External'].file
+            self.assertEqual(f3.mode, 'r')
+        finally:
+            f2.close()
+            f3.close()
+
+class TestDrivers(TestCase):
+
+    """
+        Feature: Files can be opened with low-level HDF5 drivers
+    """
+
+    @ut.skipUnless(os.name == 'posix', "Stdio driver is supported on posix")
+    def test_stdio(self):
+        """ Stdio driver is supported on posix """
+        fid = File(self.mktemp(), 'w', driver='stdio')
+        self.assertTrue(fid)
+        self.assertEqual(fid.driver, 'stdio')
+        fid.close()
+
+    @ut.skipUnless(os.name == 'posix', "Sec2 driver is supported on posix")
+    def test_sec2(self):
+        """ Sec2 driver is supported on posix """
+        fid = File(self.mktemp(), 'w', driver='sec2')
+        self.assert_(fid)
+        self.assertEqual(fid.driver, 'sec2')
+        fid.close()
+
+    def test_core(self):
+        """ Core driver is supported (no backing store) """
+        fname = self.mktemp()
+        fid = File(fname, 'w', driver='core', backing_store=False)
+        self.assert_(fid)
+        self.assertEqual(fid.driver, 'core')
+        fid.close()
+        self.assertFalse(os.path.exists(fname))
+
+    def test_backing(self):
+        """ Core driver saves to file when backing store used """
+        fname = self.mktemp()
+        fid = File(fname, 'w', driver='core', backing_store=True)
+        fid.create_group('foo')
+        fid.close()
+        fid = File(fname, 'r')
+        self.assert_('foo' in fid)
+        fid.close()
+
+    def test_readonly(self):
+        """ Core driver can be used to open existing files """
+        fname = self.mktemp()
+        fid = File(fname, 'w')
+        fid.create_group('foo')
+        fid.close()
+        fid = File(fname, 'r', driver='core')
+        self.assert_(fid)
+        self.assert_('foo' in fid)
+        with self.assertRaises(ValueError):
+            fid.create_group('bar')
+        fid.close()
+
+    def test_blocksize(self):
+        """ Core driver supports variable block size """
+        fname = self.mktemp()
+        fid = File(fname, 'w', driver='core', block_size=1024,
+                   backing_store=False)
+        self.assert_(fid)
+        fid.close()
+
+    @ut.skipUnless(mpi, "Parallel HDF5 is required for MPIO driver test")
+    def test_mpio(self):
+        """ MPIO driver and options """
+        from mpi4py import MPI
+
+        fname = self.mktemp()
+        with File(fname, 'w', driver='mpio', comm=MPI.COMM_WORLD) as f:
+            self.assertTrue(f)
+            self.assertEqual(f.driver, 'mpio')
+
+    @ut.skipUnless(mpi, "Parallel HDF5 required")
+    def test_mpi_atomic(self):
+        """ Enable atomic mode for MPIO driver """
+        from mpi4py import MPI
+
+        fname = self.mktemp()
+        with File(fname, 'w', driver='mpio', comm=MPI.COMM_WORLD) as f:
+            self.assertFalse(f.atomic)
+            f.atomic = True
+            self.assertTrue(f.atomic)
+
+    #TODO: family driver tests
+
+class TestLibver(TestCase):
+
+    """
+        Feature: File format compatibility bounds can be specified when
+        opening a file.
+    """
+
+    def test_single(self):
+        """ Opening with single libver arg """
+        f = File(self.mktemp(), 'w', libver='latest')
+        self.assertEqual(f.libver, ('latest','latest'))
+        f.close()
+
+    def test_multiple(self):
+        """ Opening with two libver args """
+        f = File(self.mktemp(), 'w', libver=('earliest','latest'))
+        self.assertEqual(f.libver, ('earliest', 'latest'))
+        f.close()
+
+    def test_none(self):
+        """ Omitting libver arg results in maximum compatibility """
+        f = File(self.mktemp(), 'w')
+        self.assertEqual(f.libver, ('earliest', 'latest'))
+        f.close()
+
+class TestUserblock(TestCase):
+
+    """
+        Feature: Files can be create with user blocks
+    """
+
+    def test_create_blocksize(self):
+        """ User blocks created with w, w- and properties work correctly """
+        f = File(self.mktemp(),'w-', userblock_size=512)
+        try:
+            self.assertEqual(f.userblock_size, 512)
+        finally:
+            f.close()
+
+        f = File(self.mktemp(),'w', userblock_size=512)
+        try:
+            self.assertEqual(f.userblock_size, 512)
+        finally:
+            f.close()
+
+    def test_write_only(self):
+        """ User block only allowed for write """
+        name = self.mktemp()
+        f = File(name, 'w')
+        f.close()
+
+        with self.assertRaises(ValueError):
+            f = h5py.File(name, 'r', userblock_size=512)
+
+        with self.assertRaises(ValueError):
+            f = h5py.File(name, 'r+', userblock_size=512)
+
+    def test_match_existing(self):
+        """ User block size must match that of file when opening for append """
+        name = self.mktemp()
+        f = File(name, 'w', userblock_size=512)
+        f.close()
+
+        with self.assertRaises(ValueError):
+            f = File(name, 'a', userblock_size=1024)
+
+        f = File(name, 'a', userblock_size=512)
+        try:
+            self.assertEqual(f.userblock_size, 512)
+        finally:
+            f.close()
+
+    def test_power_of_two(self):
+        """ User block size must be a power of 2 and at least 512 """
+        name = self.mktemp()
+
+        with self.assertRaises(ValueError):
+            f = File(name, 'w', userblock_size=128)
+
+        with self.assertRaises(ValueError):
+            f = File(name, 'w', userblock_size=513)
+
+        with self.assertRaises(ValueError):
+            f = File(name, 'w', userblock_size=1023)
+
+    def test_write_block(self):
+        """ Test that writing to a user block does not destroy the file """
+        name = self.mktemp()
+
+        f = File(name, 'w', userblock_size=512)
+        f.create_group("Foobar")
+        f.close()
+
+        pyfile = open(name, 'r+b')
+        try:
+            pyfile.write(b'X'*512)
+        finally:
+            pyfile.close()
+
+        f = h5py.File(name, 'r')
+        try:
+            self.assert_("Foobar" in f)
+        finally:
+            f.close()
+
+        pyfile = open(name, 'rb')
+        try:
+            self.assertEqual(pyfile.read(512), b'X'*512)
+        finally:
+            pyfile.close()
+
+class TestContextManager(TestCase):
+
+    """
+        Feature: File objects can be used as context managers
+    """
+
+    def test_context_manager(self):
+        """ File objects can be used in with statements """
+        with File(self.mktemp(), 'w') as fid:
+            self.assertTrue(fid)
+        self.assertTrue(not fid)
+
+class TestUnicode(TestCase):
+
+    """
+        Feature: Unicode filenames are supported
+    """
+
+    @ut.skipIf(not unicode_filenames, "Filesystem unicode support required")
+    def test_unicode(self):
+        """ Unicode filenames can be used, and retrieved properly via .filename
+        """
+        fname = self.mktemp(prefix = u'\u201a')
+        fid = File(fname, 'w')
+        try:
+            self.assertEqual(fid.filename, fname)
+            self.assertIsInstance(fid.filename, unicode)
+        finally:
+            fid.close()
+
+class TestFileProperty(TestCase):
+
+    """
+        Feature: A File object can be retrieved from any child object,
+        via the .file property
+    """
+
+    def test_property(self):
+        """ File object can be retrieved from subgroup """
+        fname = self.mktemp()
+        hfile = File(fname, 'w')
+        try:
+            hfile2 = hfile['/'].file
+            self.assertEqual(hfile, hfile2)
+        finally:
+            hfile.close()
+
+    def test_property_object_id(self):
+        """ File property should have the same ObjectID as the original """
+        fname = self.mktemp()
+        hfile = File(fname, 'w')
+        try:
+            self.assertIs(hfile.id, hfile.file.id)
+        finally:
+            hfile.close()
+        # otherwise, following up with this next block would yield:
+        # ValueError: invalid file identifier
+        # (Invalid arguments to routine: Inappropriate type)
+        hfile = File(fname, 'w')
+        try:
+            self.assertEqual(hfile.id, hfile.file.id)
+        finally:
+            hfile.close()
+
+    def test_close(self):
+        """ All retrieved File objects are closed at the same time """
+        fname = self.mktemp()
+        hfile = File(fname, 'w')
+        grp = hfile.create_group('foo')
+        hfile2 = grp.file
+        hfile3 = hfile['/'].file
+        hfile2.close()
+        self.assertFalse(hfile)
+        self.assertFalse(hfile2)
+        self.assertFalse(hfile3)
+
+    def test_mode(self):
+        """ Retrieved File objects have a meaningful mode attribute """
+        hfile = File(self.mktemp(),'w')
+        try:
+            grp = hfile.create_group('foo')
+            self.assertEqual(grp.file.mode, hfile.mode)
+        finally:
+            hfile.close()
+
+class TestClose(TestCase):
+
+    """
+        Feature: Files can be closed
+    """
+
+    def test_close(self):
+        """ Close file via .close method """
+        fid = File(self.mktemp())
+        self.assert_(fid)
+        fid.close()
+        self.assert_(not fid)
+
+    def test_closed_file(self):
+        """ Trying to modify closed file raises ValueError """
+        fid = File(self.mktemp(), 'w')
+        fid.close()
+        with self.assertRaises(ValueError):
+            fid.create_group('foo')
+
+class TestFlush(TestCase):
+
+    """
+        Feature: Files can be flushed
+    """
+
+    def test_flush(self):
+        """ Flush via .flush method """
+        fid = File(self.mktemp(), 'w')
+        fid.flush()
+        fid.close()
+
+
+class TestRepr(TestCase):
+
+    """
+        Feature: File objects provide a helpful __repr__ string
+    """
+
+    def test_repr(self):
+        """ __repr__ behaves itself when files are open and closed """
+        fid = File(self.mktemp())
+        self.assertIsInstance(repr(fid), basestring)
+        fid.close()
+        self.assertIsInstance(repr(fid), basestring)
+
+class TestFilename(TestCase):
+
+    """
+        Feature: The name of a File object can be retrieved via .filename
+    """
+
+    def test_filename(self):
+        """ .filename behaves properly for string data """
+        fname = self.mktemp()
+        fid = File(fname, 'w')
+        try:
+            self.assertEqual(fid.filename, fname)
+            self.assertIsInstance(fid.filename, unicode)
+        finally:
+            fid.close()
+
+class TestBackwardsCompat(TestCase):
+
+    """
+        Feauture: Deprecated attributes are included to support 1.3 code
+    """
+
+    def test_fid(self):
+        """ File objects provide a .fid attribute aliased to the file ID """
+        with File(self.mktemp(), 'w') as hfile:
+            self.assertIs(hfile.fid, hfile.id)
+
+
+class TestCloseInvalidatesOpenObjectIDs(TestCase):
+
+    """
+        Ensure that closing a file invalidates object IDs, as appropriate
+    """
+
+    def test_close(self):
+        """ Closing a file invalidates any of the file's open objects """
+        with File(self.mktemp(), 'w') as f1:
+            g1 = f1.create_group('foo')
+            self.assertTrue(bool(f1.id))
+            self.assertTrue(bool(g1.id))
+            f1.close()
+            self.assertFalse(bool(f1.id))
+            self.assertFalse(bool(g1.id))
+        with File(self.mktemp(), 'w') as f2:
+            g2 = f2.create_group('foo')
+            self.assertTrue(bool(f2.id))
+            self.assertTrue(bool(g2.id))
+            self.assertFalse(bool(f1.id))
+            self.assertFalse(bool(g1.id))
+
diff --git a/h5py/_hl/tests/test_group.py b/h5py/_hl/tests/test_group.py
new file mode 100644
index 0000000..a954158
--- /dev/null
+++ b/h5py/_hl/tests/test_group.py
@@ -0,0 +1,869 @@
+# This file is part of h5py, a Python interface to the HDF5 library.
+#
+# http://www.h5py.org
+#
+# Copyright 2008-2013 Andrew Collette and contributors
+#
+# License:  Standard 3-clause BSD; see "license.txt" for full license terms
+#           and contributor agreement.
+
+"""
+    Group test module.
+
+    Tests all methods and properties of Group objects, with the following
+    exceptions:
+
+    1. Method create_dataset is tested in module test_dataset
+"""
+import collections
+import numpy as np
+import os
+import sys
+
+from .common import ut, TestCase
+import h5py
+from h5py.highlevel import File, Group, SoftLink, HardLink, ExternalLink
+from h5py.highlevel import Dataset, Datatype
+from h5py import h5t
+
+class BaseGroup(TestCase):
+
+    def setUp(self):
+        self.f = File(self.mktemp(), 'w')
+
+    def tearDown(self):
+        if self.f:
+            self.f.close()
+
+class TestRepr(BaseGroup):
+
+    """
+        Feature: repr() works sensibly on Group objects
+    """
+
+    def test_repr(self):
+        """ repr() works on Group objects """
+        g = self.f.create_group('foo')
+        self.assertIsInstance(g, basestring)
+        self.f.close()
+        self.assertIsInstance(g, basestring)
+
+class TestCreate(BaseGroup):
+
+    """
+        Feature: New groups can be created via .create_group method
+    """
+
+    def test_create(self):
+        """ Simple .create_group call """
+        grp = self.f.create_group('foo')
+        self.assertIsInstance(grp, Group)
+
+    def test_create_intermediate(self):
+        """ Intermediate groups can be created automatically """
+        grp = self.f.create_group('foo/bar/baz')
+        self.assertEqual(grp.name, '/foo/bar/baz')
+
+    def test_create_exception(self):
+        """ Name conflict causes group creation to fail with ValueError """
+        self.f.create_group('foo')
+        with self.assertRaises(ValueError):
+            self.f.create_group('foo')
+
+    def test_unicode(self):
+        """ Unicode names are correctly stored """
+        name = u"/Name\u4500"
+        group = self.f.create_group(name)
+        self.assertEqual(group.name, name)
+        self.assertEqual(group.id.links.get_info(name.encode('utf8')).cset, h5t.CSET_UTF8)
+
+    def test_unicode_default(self):
+        """ Unicode names convertible to ASCII are stored as ASCII (issue 239)
+        """
+        name = u"/Hello, this is a name"
+        group = self.f.create_group(name)
+        self.assertEqual(group.name, name)
+        self.assertEqual(group.id.links.get_info(name.encode('utf8')).cset, h5t.CSET_ASCII)
+
+    def test_appropriate_low_level_id(self):
+        " Binding a group to a non-group identifier fails with ValueError "
+        dset = self.f.create_dataset('foo', [1])
+        with self.assertRaises(ValueError):
+            Group(dset.id)
+
+class TestDatasetAssignment(BaseGroup):
+
+    """
+        Feature: Datasets can be created by direct assignment of data
+    """
+
+    def test_ndarray(self):
+        """ Dataset auto-creation by direct assignment """
+        data = np.ones((4,4),dtype='f')
+        self.f['a'] = data
+        self.assertIsInstance(self.f['a'], Dataset)
+        self.assertArrayEqual(self.f['a'][...], data)
+
+class TestDtypeAssignment(BaseGroup):
+
+    """
+        Feature: Named types can be created by direct assignment of dtypes
+    """
+
+    def test_dtype(self):
+        """ Named type creation """
+        dtype = np.dtype('|S10')
+        self.f['a'] = dtype
+        self.assertIsInstance(self.f['a'], Datatype)
+        self.assertEqual(self.f['a'].dtype, dtype)
+
+class TestRequire(BaseGroup):
+
+    """
+        Feature: Groups can be auto-created, or opened via .require_group
+    """
+
+    def test_open_existing(self):
+        """ Existing group is opened and returned """
+        grp = self.f.create_group('foo')
+        grp2 = self.f.require_group('foo')
+        self.assertEqual(grp, grp2)
+
+    def test_create(self):
+        """ Group is created if it doesn't exist """
+        grp = self.f.require_group('foo')
+        self.assertIsInstance(grp, Group)
+        self.assertEqual(grp.name, '/foo')
+
+    def test_require_exception(self):
+        """ Opening conflicting object results in TypeError """
+        self.f.create_dataset('foo', (1,), 'f')
+        with self.assertRaises(TypeError):
+            self.f.require_group('foo')
+
+class TestDelete(BaseGroup):
+
+    """
+        Feature: Objects can be unlinked via "del" operator
+    """
+
+    def test_delete(self):
+        """ Object deletion via "del" """
+        self.f.create_group('foo')
+        self.assertIn('foo', self.f)
+        del self.f['foo']
+        self.assertNotIn('foo', self.f)
+
+    def test_nonexisting(self):
+        """ Deleting non-existent object raises KeyError """
+        with self.assertRaises(KeyError):
+            del self.f['foo']
+
+    def test_readonly_delete_exception(self):
+        """ Deleting object in readonly file raises KeyError """
+        # Note: it is impossible to restore the old behavior (ValueError)
+        # without breaking the above test (non-existing objects)
+        fname = self.mktemp()
+        hfile = File(fname,'w')
+        try:
+            hfile.create_group('foo')
+        finally:
+            hfile.close()
+
+        hfile = File(fname, 'r')
+        try:
+            with self.assertRaises(KeyError):
+                del hfile['foo']
+        finally:
+            hfile.close()
+
+class TestOpen(BaseGroup):
+
+    """
+        Feature: Objects can be opened via indexing syntax obj[name]
+    """
+
+    def test_open(self):
+        """ Simple obj[name] opening """
+        grp = self.f.create_group('foo')
+        grp2 = self.f['foo']
+        grp3 = self.f['/foo']
+        self.assertEqual(grp, grp2)
+        self.assertEqual(grp, grp3)
+
+    def test_nonexistent(self):
+        """ Opening missing objects raises KeyError """
+        with self.assertRaises(KeyError):
+            self.f['foo']
+
+    def test_reference(self):
+        """ Objects can be opened by HDF5 object reference """
+        grp = self.f.create_group('foo')
+        grp2 = self.f[grp.ref]
+        self.assertEqual(grp2, grp)
+
+    def test_reference_numpyobj(self):
+        """ Object can be opened by numpy.object_ containing object ref
+
+        Test for issue 181, issue 202.
+        """
+        g = self.f.create_group('test')
+
+        rtype = h5py.special_dtype(ref=h5py.Reference)
+        dt = np.dtype([('a', 'i'),('b',rtype)])
+        dset = self.f.create_dataset('test_dset', (1,), dt)
+
+        dset[0] =(42,g.ref)
+        data = dset[0]
+        self.assertEqual(self.f[data[1]], g)
+
+    def test_invalid_ref(self):
+        """ Invalid region references should raise ValueError """
+
+        ref = h5py.h5r.Reference()
+
+        with self.assertRaises(ValueError):
+            self.f[ref]
+
+        self.f.create_group('x')
+        ref = self.f['x'].ref
+        del self.f['x']
+
+        with self.assertRaises(ValueError):
+            self.f[ref]
+
+    # TODO: check that regionrefs also work with __getitem__
+
+class TestRepr(BaseGroup):
+
+    """
+        Feature: Opened and closed groups provide a useful __repr__ string
+    """
+
+    def test_repr(self):
+        """ Opened and closed groups provide a useful __repr__ string """
+        g = self.f.create_group('foo')
+        self.assertIsInstance(repr(g), basestring)
+        g.id._close()
+        self.assertIsInstance(repr(g), basestring)
+
+class BaseMapping(BaseGroup):
+
+    """
+        Base class for mapping tests
+    """
+    def setUp(self):
+        self.f = File(self.mktemp(), 'w')
+        self.groups = ('a','b','c','d')
+        for x in self.groups:
+            self.f.create_group(x)
+        self.f['x'] = h5py.SoftLink('/mongoose')
+        self.groups = self.groups + ('x',)
+
+    def tearDown(self):
+        if self.f:
+            self.f.close()
+
+class TestLen(BaseMapping):
+
+    """
+        Feature: The Python len() function returns the number of groups
+    """
+
+    def test_len(self):
+        """ len() returns number of group members """
+        self.assertEqual(len(self.f), len(self.groups))
+        self.f.create_group('e')
+        self.assertEqual(len(self.f), len(self.groups)+1)
+
+    def test_exc(self):
+        """ len() on closed group gives ValueError """
+        self.f.close()
+        with self.assertRaises(ValueError):
+            len(self.f)
+
+class TestContains(BaseMapping):
+
+    """
+        Feature: The Python "in" builtin tests for containership
+    """
+
+    def test_contains(self):
+        """ "in" builtin works for containership """
+        self.assertIn('a', self.f)
+        self.assertNotIn('mongoose', self.f)
+
+    def test_exc(self):
+        """ "in" on closed group returns False (see also issue 174) """
+        self.f.close()
+        self.assertFalse('a' in self.f)
+
+class TestIter(BaseMapping):
+
+    """
+        Feature: You can iterate over group members via "for x in y", etc.
+    """
+
+    def test_iter(self):
+        """ "for x in y" iteration """
+        lst = [x for x in self.f]
+        self.assertSameElements(lst, self.groups)
+
+    def test_iter_zero(self):
+        """ Iteration works properly for the case with no group members """
+        hfile = File(self.mktemp(), 'w')
+        try:
+            lst = [x for x in hfile]
+            self.assertEqual(lst, [])
+        finally:
+            hfile.close()
+
+ at ut.skipIf(sys.version_info[0] != 2, "Py2")
+class TestPy2Dict(BaseMapping):
+
+    """
+        Feature: Standard Python 2 .keys, .values, etc. methods are available
+    """
+
+    def test_keys(self):
+        """ .keys method """
+        self.assertIsInstance(self.f.keys(), list)
+        self.assertSameElements(self.f.keys(), self.groups)
+
+    def test_values(self):
+        """ .values method """
+        self.assertIsInstance(self.f.values(), list)
+        self.assertSameElements(self.f.values(), [self.f.get(x) for x in self.groups])
+
+    def test_items(self):
+        """ .items method """
+        self.assertIsInstance(self.f.items(), list)
+        self.assertSameElements(self.f.items(),
+            [(x, self.f.get(x)) for x in self.groups])
+
+    def test_iterkeys(self):
+        """ .iterkeys method """
+        self.assertSameElements([x for x in self.f.iterkeys()], self.groups)
+
+    def test_itervalues(self):
+        """ .itervalues method """
+        self.assertSameElements([x for x in self.f.itervalues()],
+            [self.f.get(x) for x in self.groups])
+
+    def test_iteritems(self):
+        """ .iteritems method """
+        self.assertSameElements([x for x in self.f.iteritems()],
+            [(x, self.f.get(x)) for x in self.groups])
+
+ at ut.skipIf(sys.version_info[0] != 3, "Py3")
+class TestPy3Dict(BaseMapping):
+
+    def test_keys(self):
+        """ .keys provides a key view """
+        kv = getattr(self.f, 'keys')()
+        self.assertSameElements(list(kv), self.groups)
+        for x in self.groups:
+            self.assertIn(x, kv)
+        self.assertEqual(len(kv), len(self.groups))
+
+    def test_values(self):
+        """ .values provides a value view """
+        vv = getattr(self.f, 'values')()
+        self.assertSameElements(list(vv), [self.f.get(x) for x in self.groups])
+        self.assertEqual(len(vv), len(self.groups))
+        with self.assertRaises(TypeError):
+            b'x' in vv
+
+    def test_items(self):
+        """ .items provides an item view """
+        iv = getattr(self.f, 'items')()
+        self.assertSameElements(list(iv), [(x,self.f.get(x)) for x in self.groups])
+        self.assertEqual(len(iv), len(self.groups))
+        for x in self.groups:
+            self.assertIn((x, self.f.get(x)), iv)
+
+class TestGet(BaseGroup):
+
+    """
+        Feature: The .get method allows access to objects and metadata
+    """
+
+    def test_get_default(self):
+        """ Object is returned, or default if it doesn't exist """
+        default = object()
+        out = self.f.get('mongoose', default)
+        self.assertIs(out, default)
+
+        grp = self.f.create_group('a')
+        out = self.f.get('a')
+        self.assertEqual(out, grp)
+
+    def test_get_class(self):
+        """ Object class is returned with getclass option """
+        self.f.create_group('foo')
+        out = self.f.get('foo', getclass=True)
+        self.assertEqual(out, Group)
+
+        self.f.create_dataset('bar', (4,))
+        out = self.f.get('bar', getclass=True)
+        self.assertEqual(out, Dataset)
+
+        self.f['baz'] = np.dtype('|S10')
+        out = self.f.get('baz', getclass=True)
+        self.assertEqual(out, Datatype)
+
+    def test_get_link_class(self):
+        """ Get link classes """
+        default = object()
+
+        sl = SoftLink('/mongoose')
+        el = ExternalLink('somewhere.hdf5', 'mongoose')
+
+        self.f.create_group('hard')
+        self.f['soft'] = sl
+        self.f['external'] = el
+
+        out_hl = self.f.get('hard', default, getlink=True, getclass=True)
+        out_sl = self.f.get('soft', default, getlink=True, getclass=True)
+        out_el = self.f.get('external', default, getlink=True, getclass=True)
+
+        self.assertEqual(out_hl, HardLink)
+        self.assertEqual(out_sl, SoftLink)
+        self.assertEqual(out_el, ExternalLink)
+
+    def test_get_link(self):
+        """ Get link values """
+        sl = SoftLink('/mongoose')
+        el = ExternalLink('somewhere.hdf5', 'mongoose')
+
+        self.f.create_group('hard')
+        self.f['soft'] = sl
+        self.f['external'] = el
+
+        out_hl = self.f.get('hard', getlink=True)
+        out_sl = self.f.get('soft', getlink=True)
+        out_el = self.f.get('external', getlink=True)
+
+        #TODO: redo with SoftLink/ExternalLink built-in equality
+        self.assertIsInstance(out_hl, HardLink)
+        self.assertIsInstance(out_sl, SoftLink)
+        self.assertEqual(out_sl._path, sl._path)
+        self.assertIsInstance(out_el, ExternalLink)
+        self.assertEqual(out_el._path, el._path)
+        self.assertEqual(out_el._filename, el._filename)
+
+class TestVisit(TestCase):
+
+    """
+        Feature: The .visit and .visititems methods allow iterative access to
+        group and subgroup members
+    """
+
+    def setUp(self):
+        self.f = File(self.mktemp(), 'w')
+        self.groups = [
+            'grp1', 'grp1/sg1', 'grp1/sg2', 'grp2', 'grp2/sg1', 'grp2/sg1/ssg1'
+            ]
+        for x in self.groups:
+            self.f.create_group(x)
+
+    def tearDown(self):
+        self.f.close()
+
+    def test_visit(self):
+        """ All subgroups are visited """
+        l = []
+        self.f.visit(l.append)
+        self.assertSameElements(l, self.groups)
+
+    def test_visititems(self):
+        """ All subgroups and contents are visited """
+        l = []
+        comp = [(x, self.f[x]) for x in self.groups]
+        self.f.visititems(lambda x, y: l.append((x,y)))
+        self.assertSameElements(comp, l)
+
+    def test_bailout(self):
+        """ Returning a non-None value immediately aborts iteration """
+        x = self.f.visit(lambda x: x)
+        self.assertEqual(x, self.groups[0])
+        x = self.f.visititems(lambda x, y: (x,y))
+        self.assertEqual(x, (self.groups[0], self.f[self.groups[0]]))
+
+class TestSoftLinks(BaseGroup):
+
+    """
+        Feature: Create and manage soft links with the high-level interface
+    """
+
+    def test_spath(self):
+        """ SoftLink path attribute """
+        sl = SoftLink('/foo')
+        self.assertEqual(sl.path, '/foo')
+
+    def test_srepr(self):
+        """ SoftLink path repr """
+        sl = SoftLink('/foo')
+        self.assertIsInstance(repr(sl), basestring)
+
+    def test_create(self):
+        """ Create new soft link by assignment """
+        g = self.f.create_group('new')
+        sl = SoftLink('/new')
+        self.f['alias'] = sl
+        g2 = self.f['alias']
+        self.assertEqual(g, g2)
+
+    def test_exc(self):
+        """ Opening dangling soft link results in KeyError """
+        self.f['alias'] = SoftLink('new')
+        with self.assertRaises(KeyError):
+            self.f['alias']
+
+class TestExternalLinks(TestCase):
+
+    """
+        Feature: Create and manage external links
+    """
+
+    def setUp(self):
+        self.f = File(self.mktemp(), 'w')
+        self.ename = self.mktemp()
+        self.ef = File(self.ename, 'w')
+        self.ef.create_group('external')
+        self.ef.close()
+
+    def tearDown(self):
+        if self.f:
+            self.f.close()
+        if self.ef:
+            self.ef.close()
+
+    def test_epath(self):
+        """ External link paths attributes """
+        el = ExternalLink('foo.hdf5', '/foo')
+        self.assertEqual(el.filename, 'foo.hdf5')
+        self.assertEqual(el.path, '/foo')
+
+    def test_erepr(self):
+        """ External link repr """
+        el = ExternalLink('foo.hdf5','/foo')
+        self.assertIsInstance(repr(el), basestring)
+
+    def test_create(self):
+        """ Creating external links """
+        self.f['ext'] = ExternalLink(self.ename, '/external')
+        grp = self.f['ext']
+        self.ef = grp.file
+        self.assertNotEqual(self.ef, self.f)
+        self.assertEqual(grp.name, '/external')
+
+    def test_exc(self):
+        """ KeyError raised when attempting to open broken link """
+        self.f['ext'] = ExternalLink(self.ename, '/missing')
+        with self.assertRaises(KeyError):
+            self.f['ext']
+
+    # I would prefer IOError 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 """
+        self.f['ext'] = ExternalLink('mongoose.hdf5','/foo')
+        with self.assertRaises(KeyError):
+            self.f['ext']
+
+    def test_close_file(self):
+        """ Files opened by accessing external links can be closed
+
+        Issue 189.
+        """
+        self.f['ext'] = ExternalLink(self.ename, '/')
+        grp = self.f['ext']
+        f2 = grp.file
+        f2.close()
+        self.assertFalse(f2)
+
+class TestExtLinkBugs(TestCase):
+
+    """
+        Bugs: Specific regressions for external links
+    """
+
+    def test_issue_212(self):
+        """ Issue 212
+
+        Fails with:
+
+        AttributeError: 'SharedConfig' object has no attribute 'lapl'
+        """
+        def closer(x):
+            def w():
+                try:
+                    if x:
+                        x.close()
+                except IOError:
+                    pass
+            return w
+        orig_name = self.mktemp()
+        new_name = self.mktemp()
+        f = File(orig_name, 'w')
+        self.addCleanup(closer(f))
+        f.create_group('a')
+        f.close()
+
+        g = File(new_name, 'w')
+        self.addCleanup(closer(g))
+        g['link'] = ExternalLink(orig_name, '/')  # note root group
+        g.close()
+
+        h = File(new_name, 'r')
+        self.addCleanup(closer(h))
+        self.assertIsInstance(h['link']['a'], Group)
+
+
+class TestCopy(TestCase):
+
+    def setUp(self):
+        self.f1 = File(self.mktemp(), 'w')
+        self.f2 = File(self.mktemp(), 'w')
+
+    def tearDown(self):
+        if self.f1:
+            self.f1.close()
+        if self.f2:
+            self.f2.close()
+
+    @ut.skipIf(h5py.version.hdf5_version_tuple < (1,8,9),
+               "Bug in HDF5<1.8.8 prevents copying open dataset")
+    def test_copy_path_to_path(self):
+        foo = self.f1.create_group('foo')
+        foo['bar'] = [1,2,3]
+
+        self.f1.copy('foo', 'baz')
+        baz = self.f1['baz']
+        self.assertIsInstance(baz, Group)
+        self.assertArrayEqual(baz['bar'], np.array([1,2,3]))
+
+    @ut.skipIf(h5py.version.hdf5_version_tuple < (1,8,9),
+               "Bug in HDF5<1.8.8 prevents copying open dataset")
+    def test_copy_path_to_group(self):
+        foo = self.f1.create_group('foo')
+        foo['bar'] = [1,2,3]
+        baz = self.f1.create_group('baz')
+
+        self.f1.copy('foo', baz)
+        baz = self.f1['baz']
+        self.assertIsInstance(baz, Group)
+        self.assertArrayEqual(baz['foo/bar'], np.array([1,2,3]))
+
+        self.f1.copy('foo', self.f2['/'])
+        self.assertIsInstance(self.f2['/foo'], Group)
+        self.assertArrayEqual(self.f2['foo/bar'], np.array([1,2,3]))
+
+    @ut.skipIf(h5py.version.hdf5_version_tuple < (1,8,9),
+               "Bug in HDF5<1.8.8 prevents copying open dataset")
+    def test_copy_group_to_path(self):
+
+        foo = self.f1.create_group('foo')
+        foo['bar'] = [1,2,3]
+
+        self.f1.copy(foo, 'baz')
+        baz = self.f1['baz']
+        self.assertIsInstance(baz, Group)
+        self.assertArrayEqual(baz['bar'], np.array([1,2,3]))
+
+        self.f2.copy(foo, 'foo')
+        self.assertIsInstance(self.f2['/foo'], Group)
+        self.assertArrayEqual(self.f2['foo/bar'], np.array([1,2,3]))
+
+    @ut.skipIf(h5py.version.hdf5_version_tuple < (1,8,9),
+               "Bug in HDF5<1.8.8 prevents copying open dataset")
+    def test_copy_group_to_group(self):
+
+        foo = self.f1.create_group('foo')
+        foo['bar'] = [1,2,3]
+        baz = self.f1.create_group('baz')
+
+        self.f1.copy(foo, baz)
+        baz = self.f1['baz']
+        self.assertIsInstance(baz, Group)
+        self.assertArrayEqual(baz['foo/bar'], np.array([1,2,3]))
+
+        self.f1.copy(foo, self.f2['/'])
+        self.assertIsInstance(self.f2['/foo'], Group)
+        self.assertArrayEqual(self.f2['foo/bar'], np.array([1,2,3]))
+
+    @ut.skipIf(h5py.version.hdf5_version_tuple < (1,8,9),
+               "Bug in HDF5<1.8.8 prevents copying open dataset")
+    def test_copy_dataset(self):
+        self.f1['foo'] = [1,2,3]
+        foo = self.f1['foo']
+
+        self.f1.copy(foo, 'bar')
+        self.assertArrayEqual(self.f1['bar'], np.array([1,2,3]))
+
+        self.f1.copy('foo', 'baz')
+        self.assertArrayEqual(self.f1['baz'], np.array([1,2,3]))
+
+        self.f1.copy('foo', self.f2)
+        self.assertArrayEqual(self.f2['foo'], np.array([1,2,3]))
+
+        self.f2.copy(self.f1['foo'], self.f2, 'bar')
+        self.assertArrayEqual(self.f2['bar'], np.array([1,2,3]))
+
+    @ut.skipIf(h5py.version.hdf5_version_tuple < (1,8,9),
+               "Bug in HDF5<1.8.8 prevents copying open dataset")
+    def test_copy_shallow(self):
+
+        foo = self.f1.create_group('foo')
+        bar = foo.create_group('bar')
+        foo['qux'] = [1,2,3]
+        bar['quux'] = [4,5,6]
+
+        self.f1.copy(foo, 'baz', shallow=True)
+        baz = self.f1['baz']
+        self.assertIsInstance(baz, Group)
+        self.assertIsInstance(baz['bar'], Group)
+        self.assertEqual(len(baz['bar']), 0)
+        self.assertArrayEqual(baz['qux'], np.array([1,2,3]))
+
+        self.f2.copy(foo, 'foo', shallow=True)
+        self.assertIsInstance(self.f2['/foo'], Group)
+        self.assertIsInstance(self.f2['foo/bar'], Group)
+        self.assertEqual(len(self.f2['foo/bar']), 0)
+        self.assertArrayEqual(self.f2['foo/qux'], np.array([1,2,3]))
+
+    @ut.skipIf(h5py.version.hdf5_version_tuple < (1,8,9),
+               "Bug in HDF5<1.8.8 prevents copying open dataset")
+    def test_copy_without_attributes(self):
+
+        self.f1['foo'] = [1,2,3]
+        foo = self.f1['foo']
+        foo.attrs['bar'] = [4,5,6]
+
+        self.f1.copy(foo, 'baz', without_attrs=True)
+        self.assertArrayEqual(self.f1['baz'], np.array([1,2,3]))
+        self.assert_('bar' not in self.f1['baz'].attrs)
+
+        self.f2.copy(foo, 'baz', without_attrs=True)
+        self.assertArrayEqual(self.f2['baz'], np.array([1,2,3]))
+        self.assert_('bar' not in self.f2['baz'].attrs)
+
+    @ut.skipIf(h5py.version.hdf5_version_tuple < (1,8,9),
+               "Bug in HDF5<1.8.8 prevents copying open dataset")
+    def test_copy_soft_links(self):
+
+        self.f1['bar'] = [1,2,3]
+        foo = self.f1.create_group('foo')
+        foo['baz'] = SoftLink('/bar')
+
+        self.f1.copy(foo, 'qux', expand_soft=True)
+        self.f2.copy(foo, 'foo', expand_soft=True)
+        del self.f1['bar']
+
+        self.assertIsInstance(self.f1['qux'], Group)
+        self.assertArrayEqual(self.f1['qux/baz'], np.array([1,2,3]))
+
+        self.assertIsInstance(self.f2['/foo'], Group)
+        self.assertArrayEqual(self.f2['foo/baz'], np.array([1,2,3]))
+
+    @ut.skipIf(h5py.version.hdf5_version_tuple < (1,8,9),
+               "Bug in HDF5<1.8.8 prevents copying open dataset")
+    def test_copy_external_links(self):
+
+        filename = self.f1.filename
+        self.f1['foo'] = [1,2,3]
+        self.f2['bar'] = ExternalLink(filename, 'foo')
+        self.f1.close()
+        self.f1 = None
+
+        self.assertArrayEqual(self.f2['bar'], np.array([1,2,3]))
+
+        self.f2.copy('bar', 'baz', expand_external=True)
+        os.unlink(filename)
+        self.assertArrayEqual(self.f2['baz'], np.array([1,2,3]))
+
+    @ut.skipIf(h5py.version.hdf5_version_tuple < (1,8,9),
+               "Bug in HDF5<1.8.8 prevents copying open dataset")
+    def test_copy_refs(self):
+
+        self.f1['foo'] = [1,2,3]
+        self.f1['bar'] = [4,5,6]
+        foo = self.f1['foo']
+        bar = self.f1['bar']
+        foo.attrs['bar'] = bar.ref
+
+        self.f1.copy(foo, 'baz', expand_refs=True)
+        self.assertArrayEqual(self.f1['baz'], np.array([1,2,3]))
+        baz_bar = self.f1['baz'].attrs['bar']
+        self.assertArrayEqual(self.f1[baz_bar], np.array([4,5,6]))
+        # The reference points to a copy of bar, not to bar itself.
+        self.assertNotEqual(self.f1[baz_bar].name, bar.name)
+
+        self.f1.copy('foo', self.f2, 'baz', expand_refs=True)
+        self.assertArrayEqual(self.f2['baz'], np.array([1,2,3]))
+        baz_bar = self.f2['baz'].attrs['bar']
+        self.assertArrayEqual(self.f2[baz_bar], np.array([4,5,6]))
+
+        self.f1.copy('/', self.f2, 'root', expand_refs=True)
+        self.assertArrayEqual(self.f2['root/foo'], np.array([1,2,3]))
+        self.assertArrayEqual(self.f2['root/bar'], np.array([4,5,6]))
+        foo_bar = self.f2['root/foo'].attrs['bar']
+        self.assertArrayEqual(self.f2[foo_bar], np.array([4,5,6]))
+        # There's only one copy of bar, which the reference points to.
+        self.assertEqual(self.f2[foo_bar], self.f2['root/bar'])
+
+
+class TestMove(BaseGroup):
+
+    """
+        Feature: Group.move moves links in a file
+    """
+
+    def test_move_hardlink(self):
+        """ Moving an object """
+        grp = self.f.create_group("X")
+        self.f.move("X", "Y")
+        self.assertEqual(self.f["Y"], grp)
+        self.f.move("Y", "new/nested/path")
+        self.assertEqual(self.f['new/nested/path'], grp)
+
+    def test_move_softlink(self):
+        """ Moving a soft link """
+        self.f['soft'] = h5py.SoftLink("relative/path")
+        self.f.move('soft', 'new_soft')
+        lnk = self.f.get('new_soft', getlink=True)
+        self.assertEqual(lnk.path, "relative/path")
+
+    def test_move_conflict(self):
+        """ Move conflict raises ValueError """
+        self.f.create_group("X")
+        self.f.create_group("Y")
+        with self.assertRaises(ValueError):
+            self.f.move("X", "Y")
+
+    def test_short_circuit(self):
+        ''' Test that a null-move works '''
+        self.f.create_group("X")
+        self.f.move("X", "X")
+
+
+class TestMutableMapping(BaseGroup):
+    '''Tests if the registration of Group as a MutableMapping
+    behaves as expected
+    '''
+    def test_resolution(self):
+        assert issubclass(Group, collections.MutableMapping)
+        grp = self.f.create_group("K")
+        assert isinstance(grp, collections.MutableMapping)
+
+    def test_validity(self):
+        '''
+        Test that the required functions are implemented.
+        '''
+        Group.__getitem__
+        Group.__setitem__
+        Group.__delitem__
+        Group.__iter__
+        Group.__len__
+
diff --git a/h5py/_hl/tests/test_selections.py b/h5py/_hl/tests/test_selections.py
new file mode 100644
index 0000000..a00a1e3
--- /dev/null
+++ b/h5py/_hl/tests/test_selections.py
@@ -0,0 +1,116 @@
+# This file is part of h5py, a Python interface to the HDF5 library.
+#
+# http://www.h5py.org
+#
+# Copyright 2008-2013 Andrew Collette and contributors
+#
+# License:  Standard 3-clause BSD; see "license.txt" for full license terms
+#           and contributor agreement.
+
+"""
+    Tests for the (internal) selections module
+"""
+
+import numpy as np
+import h5py
+import h5py._hl.selections2 as sel
+
+from common import TestCase, ut
+
+class TestTypeGeneration(TestCase):
+
+    """
+        Internal feature: Determine output types from dataset dtype and fields.
+    """
+
+    def test_simple(self):
+        """ Non-compound types are handled appropriately """
+        dt = np.dtype('i')
+        out, format = sel.read_dtypes(dt, ())
+        self.assertEqual(out, format)
+        self.assertEqual(out, np.dtype('i'))
+
+    def test_simple_fieldexc(self):
+        """ Field names for non-field types raises ValueError """
+        dt = np.dtype('i')
+        with self.assertRaises(ValueError):
+            out, format = sel.read_dtypes(dt, ('a',))
+
+    def test_compound_simple(self):
+        """ Compound types with elemental subtypes """
+        dt = np.dtype( [('a','i'), ('b','f'), ('c','|S10')] )
+
+        # Implicit selection of all fields -> all fields
+        out, format = sel.read_dtypes(dt, ())
+        self.assertEqual(out, format)
+        self.assertEqual(out, dt)
+       
+        # Explicit selection of fields -> requested fields
+        out, format = sel.read_dtypes(dt, ('a','b'))
+        self.assertEqual(out, format)
+        self.assertEqual(out, np.dtype( [('a','i'), ('b','f')] ))
+
+        # Explicit selection of exactly one field -> no fields
+        out, format = sel.read_dtypes(dt, ('a',))
+        self.assertEqual(out, np.dtype('i'))
+        self.assertEqual(format, np.dtype( [('a','i')] ))
+
+    def test_objects(self):
+        """ Metadata is stripped from object types """
+        dt = h5py.special_dtype(ref=h5py.Reference)
+        
+        out, format = sel.read_dtypes(dt, ())
+        self.assertEqual(out, format)
+        self.assertEqual(format, dt)
+        self.assertTrue(out.fields is None)
+        self.assertTrue(format.fields is not None)
+
+    def test_compound_objects(self):
+        """ Metadata is stripped from output in compound types"""
+        reftype = h5py.special_dtype(ref=h5py.Reference)
+
+        dt = np.dtype( [('a','i'), ('b',reftype), ('c','|S10')] )
+
+        out, format = sel.read_dtypes(dt, ())
+        self.assertEqual(out, format)
+        self.assertEqual(format, dt)
+        self.assertTrue(all(x[0].fields is None for x in out.fields.values() if x[0].kind == 'O'))
+
+
+class TestScalarSliceRules(TestCase):
+
+    """
+        Internal feature: selections rules for scalar datasets
+    """
+
+    def setUp(self):
+        self.f = h5py.File(self.mktemp(), 'w')
+        self.dsid = self.f.create_dataset('x', ()).id
+
+    def tearDown(self):
+        if self.f:
+            self.f.close()
+
+    def test_args(self):
+        """ Permissible arguments for scalar slicing """
+        shape, selection = sel.read_selections_scalar(self.dsid, ())
+        self.assertEqual(shape, None)
+        self.assertEqual(selection.get_select_npoints(), 1)
+
+        shape, selection = sel.read_selections_scalar(self.dsid, (Ellipsis,))
+        self.assertEqual(shape, ())
+        self.assertEqual(selection.get_select_npoints(), 1)
+        
+        with self.assertRaises(ValueError):
+            shape, selection = sel.read_selections_scalar(self.dsid, (1,))
+
+
+
+
+
+
+
+
+
+
+
diff --git a/h5py/_hl/tests/test_slicing.py b/h5py/_hl/tests/test_slicing.py
new file mode 100644
index 0000000..06321dd
--- /dev/null
+++ b/h5py/_hl/tests/test_slicing.py
@@ -0,0 +1,322 @@
+# This file is part of h5py, a Python interface to the HDF5 library.
+#
+# http://www.h5py.org
+#
+# Copyright 2008-2013 Andrew Collette and contributors
+#
+# License:  Standard 3-clause BSD; see "license.txt" for full license terms
+#           and contributor agreement.
+
+"""
+    Dataset slicing test module.
+
+    Tests all supported slicing operations, including read/write and
+    broadcasting operations.  Does not test type conversion except for
+    corner cases overlapping with slicing; for example, when selecting
+    specific fields of a compound type.
+"""
+
+import numpy as np
+
+from .common import ut, TestCase
+
+import h5py
+from h5py import h5s, h5t, h5d
+from h5py.highlevel import File
+
+class BaseSlicing(TestCase):
+
+    def setUp(self):
+        self.f = File(self.mktemp(), 'w')
+
+    def tearDown(self):
+        if self.f:
+            self.f.close()
+
+class TestSingleElement(BaseSlicing):
+
+    """
+        Feature: Retrieving a single element works with NumPy semantics
+    """
+
+    def test_single_index(self):
+        """ Single-element selection with [index] yields array scalar """
+        dset = self.f.create_dataset('x', (1,), dtype='i1')
+        out = dset[0]
+        self.assertIsInstance(out, np.int8)
+
+    def test_single_null(self):
+        """ Single-element selection with [()] yields ndarray """
+        dset = self.f.create_dataset('x', (1,), dtype='i1')
+        out = dset[()]
+        self.assertIsInstance(out, np.ndarray)
+        self.assertEqual(out.shape, (1,))
+
+    def test_scalar_index(self):
+        """ Slicing with [...] yields scalar ndarray """
+        dset = self.f.create_dataset('x', shape=(), dtype='f')
+        out = dset[...]
+        self.assertIsInstance(out, np.ndarray)
+        self.assertEqual(out.shape, ())
+
+    def test_scalar_null(self):
+        """ Slicing with [()] yields array scalar """
+        dset = self.f.create_dataset('x', shape=(), dtype='i1')
+        out = dset[()]
+        self.assertIsInstance(out, np.int8)
+
+    def test_compound(self):
+        """ Compound scalar is numpy.void, not tuple (issue 135) """
+        dt = np.dtype([('a','i4'),('b','f8')])
+        v = np.ones((4,), dtype=dt)
+        dset = self.f.create_dataset('foo', (4,), data=v)
+        self.assertEqual(dset[0], v[0])
+        self.assertIsInstance(dset[0], np.void)
+
+class TestObjectIndex(BaseSlicing):
+
+    """
+        Feauture: numpy.object_ subtypes map to real Python objects
+    """
+
+    def test_reference(self):
+        """ Indexing a reference dataset returns a h5py.Reference instance """
+        dset = self.f.create_dataset('x', (1,), dtype=h5py.special_dtype(ref=h5py.Reference))
+        dset[0] = self.f.ref
+        self.assertEqual(type(dset[0]), h5py.Reference)
+
+    def test_regref(self):
+        """ Indexing a region reference dataset returns a h5py.RegionReference
+        """
+        dset1 = self.f.create_dataset('x', (10,10))
+        regref = dset1.regionref[...]
+        dset2 = self.f.create_dataset('y', (1,), dtype=h5py.special_dtype(ref=h5py.RegionReference))
+        dset2[0] = regref
+        self.assertEqual(type(dset2[0]), h5py.RegionReference)
+
+    def test_reference_field(self):
+        """ Compound types of which a reference is an element work right """
+        reftype = h5py.special_dtype(ref=h5py.Reference)
+        dt = np.dtype([('a', 'i'),('b',reftype)])
+
+        dset = self.f.create_dataset('x', (1,), dtype=dt)
+        dset[0] = (42, self.f['/'].ref)
+
+        out = dset[0]
+        self.assertEqual(type(out[1]), h5py.Reference)  # isinstance does NOT work
+
+    def test_scalar(self):
+        """ Indexing returns a real Python object on scalar datasets """
+        dset = self.f.create_dataset('x', (), dtype=h5py.special_dtype(ref=h5py.Reference))
+        dset[()] = self.f.ref
+        self.assertEqual(type(dset[()]), h5py.Reference)
+
+    def test_bytestr(self):
+        """ Indexing a byte string dataset returns a real python byte string
+        """
+        dset = self.f.create_dataset('x', (1,), dtype=h5py.special_dtype(vlen=bytes))
+        dset[0] = b"Hello there!"
+        self.assertEqual(type(dset[0]), bytes)
+
+class TestSimpleSlicing(TestCase):
+
+    """
+        Feature: Simple NumPy-style slices (start:stop:step) are supported.
+    """
+
+    def setUp(self):
+        self.f = File(self.mktemp(), 'w')
+        self.arr = np.arange(10)
+        self.dset = self.f.create_dataset('x', data=self.arr)
+
+    def tearDown(self):
+        if self.f:
+            self.f.close()
+
+    def test_negative_stop(self):
+        """ Negative stop indexes work as they do in NumPy """
+        self.assertArrayEqual(self.dset[2:-2], self.arr[2:-2])
+
+class TestArraySlicing(BaseSlicing):
+
+    """
+        Feature: Array types are handled appropriately
+    """
+
+    def test_read(self):
+        """ Read arrays tack array dimensions onto end of shape tuple """
+        dt = np.dtype('(3,)f8')
+        dset = self.f.create_dataset('x',(10,),dtype=dt)
+        self.assertEqual(dset.shape, (10,))
+        self.assertEqual(dset.dtype, dt)
+
+        # Full read
+        out = dset[...]
+        self.assertEqual(out.dtype, np.dtype('f8'))
+        self.assertEqual(out.shape, (10,3))
+
+        # Single element
+        out = dset[0]
+        self.assertEqual(out.dtype, np.dtype('f8'))
+        self.assertEqual(out.shape, (3,))
+
+        # Range
+        out = dset[2:8:2]
+        self.assertEqual(out.dtype, np.dtype('f8'))
+        self.assertEqual(out.shape, (3,3))
+
+    def test_write_broadcast(self):
+        """ Array fill from constant is not supported (issue 211).
+        """
+        dt = np.dtype('(3,)i')
+
+        dset = self.f.create_dataset('x', (10,), dtype=dt)
+
+        with self.assertRaises(TypeError):
+            dset[...] = 42
+
+    def test_write_element(self):
+        """ Write a single element to the array
+
+        Issue 211.
+        """
+        dt = np.dtype('(3,)f8')
+        dset = self.f.create_dataset('x', (10,), dtype=dt)
+
+        data = np.array([1,2,3.0])
+        dset[4] = data
+
+        out = dset[4]
+        self.assertTrue(np.all(out == data))
+
+    def test_write_slices(self):
+        """ Write slices to array type """
+        dt = np.dtype('(3,)i')
+
+        data1 = np.ones((2,), dtype=dt)
+        data2 = np.ones((4,5), dtype=dt)
+
+        dset = self.f.create_dataset('x', (10,9,11), dtype=dt)
+
+        dset[0,0,2:4] = data1
+        self.assertArrayEqual(dset[0,0,2:4], data1)
+
+        dset[3, 1:5, 6:11] = data2
+        self.assertArrayEqual(dset[3, 1:5, 6:11], data2)
+
+
+    def test_roundtrip(self):
+        """ Read the contents of an array and write them back
+
+        Issue 211.
+        """
+        dt = np.dtype('(3,)f8')
+        dset = self.f.create_dataset('x', (10,), dtype=dt)
+
+        out = dset[...]
+        dset[...] = out
+
+        self.assertTrue(np.all(dset[...] == out))
+
+class TestEmptySlicing(BaseSlicing):
+
+    """
+        Empty (H5S_NULL) datasets can't be sliced
+    """
+
+    def setUp(self):
+        BaseSlicing.setUp(self)
+        sid = h5s.create(h5s.NULL)
+        tid = h5t.C_S1.copy()
+        tid.set_size(10)
+        dsid = h5d.create(self.f.id, b'x', tid, sid)
+        self.dataset = self.f['x']
+
+    def test_ellipsis(self):
+        with self.assertRaises(IOError):
+            self.dataset[...]
+
+    def test_empty_tuple(self):
+        with self.assertRaises(IOError):
+            self.dataset[()]
+
+class TestZeroLengthSlicing(BaseSlicing):
+
+    """
+        Slices resulting in empty arrays
+    """
+
+    def test_slice_zero_length_dimension(self):
+        """ Slice a dataset with a zero in its shape vector
+            along the zero-length dimension """
+        for i, shape in enumerate([(0,), (0, 3), (0, 2, 1)]):
+            dset = self.f.create_dataset('x%d'%i, shape, dtype=np.int, maxshape=(None,)*len(shape))
+            self.assertEqual(dset.shape, shape)
+            out = dset[...]
+            self.assertIsInstance(out, np.ndarray)
+            self.assertEqual(out.shape, shape)
+            out = dset[:]
+            self.assertIsInstance(out, np.ndarray)
+            self.assertEqual(out.shape, shape)
+            if len(shape) > 1:
+                out = dset[:, :1]
+                self.assertIsInstance(out, np.ndarray)
+                self.assertEqual(out.shape[:2], (0, 1))
+
+    def test_slice_other_dimension(self):
+        """ Slice a dataset with a zero in its shape vector
+            along a non-zero-length dimension """
+        for i, shape in enumerate([(3, 0), (1, 2, 0), (2, 0, 1)]):
+            dset = self.f.create_dataset('x%d'%i, shape, dtype=np.int, maxshape=(None,)*len(shape))
+            self.assertEqual(dset.shape, shape)
+            out = dset[:1]
+            self.assertIsInstance(out, np.ndarray)
+            self.assertEqual(out.shape, (1,)+shape[1:])
+
+    def test_slice_of_length_zero(self):
+        """ Get a slice of length zero from a non-empty dataset """
+        for i, shape in enumerate([(3,), (2, 2,), (2,  1, 5)]):
+            dset = self.f.create_dataset('x%d'%i, data=np.zeros(shape, np.int), maxshape=(None,)*len(shape))
+            self.assertEqual(dset.shape, shape)
+            out = dset[1:1]
+            self.assertIsInstance(out, np.ndarray)
+            self.assertEqual(out.shape, (0,)+shape[1:])
+
+class TestFieldNames(BaseSlicing):
+
+    """
+        Field names for read & write
+    """
+
+    dt = np.dtype([('a', 'f'), ('b', 'i'), ('c', 'f4')])
+    data = np.ones((100,), dtype=dt)
+
+    def setUp(self):
+        BaseSlicing.setUp(self)
+        self.dset = self.f.create_dataset('x', (100,), dtype=self.dt)
+        self.dset[...] = self.data
+
+    def test_read(self):
+        """ Test read with field selections """
+        self.assertArrayEqual(self.dset['a'], self.data['a'])
+
+    def test_write(self):
+        """ Test write with field selections """
+        data2 = self.data.copy()
+        data2['a'] *= 2
+        self.dset['a'] = data2
+        self.assertTrue(np.all(self.dset[...] == data2))
+        data2['b'] *= 4
+        self.dset['b'] = data2
+        self.assertTrue(np.all(self.dset[...] == data2))
+        data2['a'] *= 3
+        data2['c'] *= 3
+        self.dset['a','c'] = data2
+        self.assertTrue(np.all(self.dset[...] == data2))
+
+    def test_write_noncompound(self):
+        """ Test write with non-compound source (single-field) """
+        data2 = self.data.copy()
+        data2['b'] = 1.0
+        self.dset['b'] = 1.0
+        self.assertTrue(np.all(self.dset[...] == data2))
diff --git a/h5py/_locks.pxi b/h5py/_locks.pxi
new file mode 100644
index 0000000..8438754
--- /dev/null
+++ b/h5py/_locks.pxi
@@ -0,0 +1,120 @@
+## {{{ http://code.activestate.com/recipes/577336/ (r3)
+from cpython cimport pythread
+from cpython.exc cimport PyErr_NoMemory
+
+cdef class FastRLock:
+    """Fast, re-entrant locking.
+
+    Under uncongested conditions, the lock is never acquired but only
+    counted.  Only when a second thread comes in and notices that the
+    lock is needed, it acquires the lock and notifies the first thread
+    to release it when it's done.  This is all made possible by the
+    wonderful GIL.
+    """
+    cdef pythread.PyThread_type_lock _real_lock
+    cdef long _owner            # ID of thread owning the lock
+    cdef int _count             # re-entry count
+    cdef int _pending_requests  # number of pending requests for real lock
+    cdef bint _is_locked        # whether the real lock is acquired
+
+    def __cinit__(self):
+        self._owner = -1
+        self._count = 0
+        self._is_locked = False
+        self._pending_requests = 0
+        self._real_lock = pythread.PyThread_allocate_lock()
+        if self._real_lock is NULL:
+            PyErr_NoMemory()
+
+    def __dealloc__(self):
+        if self._real_lock is not NULL:
+            pythread.PyThread_free_lock(self._real_lock)
+            self._real_lock = NULL
+
+    def acquire(self, bint blocking=True):
+        return lock_lock(self, pythread.PyThread_get_thread_ident(), blocking)
+
+    def release(self):
+        if self._owner != pythread.PyThread_get_thread_ident():
+            raise RuntimeError("cannot release un-acquired lock")
+        unlock_lock(self)
+
+    # compatibility with threading.RLock
+
+    def __enter__(self):
+        # self.acquire()
+        return lock_lock(self, pythread.PyThread_get_thread_ident(), True)
+
+    def __exit__(self, t, v, tb):
+        # self.release()
+        if self._owner != pythread.PyThread_get_thread_ident():
+            raise RuntimeError("cannot release un-acquired lock")
+        unlock_lock(self)
+
+    def _is_owned(self):
+        return self._owner == pythread.PyThread_get_thread_ident()
+
+
+cdef inline bint lock_lock(FastRLock lock, long current_thread, bint blocking) 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
+
+    if lock._count:
+        # locked! - by myself?
+        if current_thread == lock._owner:
+            lock._count += 1
+            return 1
+    elif not lock._pending_requests:
+        # not locked, not requested - go!
+        lock._owner = current_thread
+        lock._count = 1
+        return 1
+    # need to get the real lock
+    return _acquire_lock(
+        lock, current_thread,
+        pythread.WAIT_LOCK if blocking else pythread.NOWAIT_LOCK)
+
+cdef bint _acquire_lock(FastRLock lock, long current_thread, int wait) 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
+
+    if not lock._is_locked and not lock._pending_requests:
+        # someone owns it but didn't acquire the real lock - do that
+        # now and tell the owner to release it when done. Note that we
+        # do not release the GIL here as we must absolutely be the one
+        # who acquires the lock now.
+        if not pythread.PyThread_acquire_lock(lock._real_lock, wait):
+            return 0
+        #assert not lock._is_locked
+        lock._is_locked = True
+    lock._pending_requests += 1
+    with nogil:
+        # wait for the lock owning thread to release it
+        locked = pythread.PyThread_acquire_lock(lock._real_lock, wait)
+    lock._pending_requests -= 1
+    #assert not lock._is_locked
+    #assert lock._count == 0
+    if not locked:
+        return 0
+    lock._is_locked = True
+    lock._owner = current_thread
+    lock._count = 1
+    return 1
+
+cdef inline void unlock_lock(FastRLock lock) 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
+
+    #assert lock._owner == pythread.PyThread_get_thread_ident()
+    #assert lock._count > 0
+    lock._count -= 1
+    if lock._count == 0:
+        lock._owner = -1
+        if lock._is_locked:
+            pythread.PyThread_release_lock(lock._real_lock)
+            lock._is_locked = False
+## end of http://code.activestate.com/recipes/577336/ }}}
+
diff --git a/h5py/_objects.c b/h5py/_objects.c
new file mode 100644
index 0000000..bf74949
--- /dev/null
+++ b/h5py/_objects.c
@@ -0,0 +1,6678 @@
+/* Generated by Cython 0.18 on Mon Dec  9 16:00:33 2013 */
+
+#define PY_SSIZE_T_CLEAN
+#include "Python.h"
+#ifndef Py_PYTHON_H
+    #error Python headers needed to compile C extensions, please install development version of Python.
+#elif PY_VERSION_HEX < 0x02040000
+    #error Cython requires Python 2.4+.
+#else
+#include <stddef.h> /* For offsetof */
+#ifndef offsetof
+#define offsetof(type, member) ( (size_t) & ((type*)0) -> member )
+#endif
+#if !defined(WIN32) && !defined(MS_WINDOWS)
+  #ifndef __stdcall
+    #define __stdcall
+  #endif
+  #ifndef __cdecl
+    #define __cdecl
+  #endif
+  #ifndef __fastcall
+    #define __fastcall
+  #endif
+#endif
+#ifndef DL_IMPORT
+  #define DL_IMPORT(t) t
+#endif
+#ifndef DL_EXPORT
+  #define DL_EXPORT(t) t
+#endif
+#ifndef PY_LONG_LONG
+  #define PY_LONG_LONG LONG_LONG
+#endif
+#ifndef Py_HUGE_VAL
+  #define Py_HUGE_VAL HUGE_VAL
+#endif
+#ifdef PYPY_VERSION
+#define CYTHON_COMPILING_IN_PYPY 1
+#define CYTHON_COMPILING_IN_CPYTHON 0
+#else
+#define CYTHON_COMPILING_IN_PYPY 0
+#define CYTHON_COMPILING_IN_CPYTHON 1
+#endif
+#if PY_VERSION_HEX < 0x02050000
+  typedef int Py_ssize_t;
+  #define PY_SSIZE_T_MAX INT_MAX
+  #define PY_SSIZE_T_MIN INT_MIN
+  #define PY_FORMAT_SIZE_T ""
+  #define CYTHON_FORMAT_SSIZE_T ""
+  #define PyInt_FromSsize_t(z) PyInt_FromLong(z)
+  #define PyInt_AsSsize_t(o)   __Pyx_PyInt_AsInt(o)
+  #define PyNumber_Index(o)    ((PyNumber_Check(o) && !PyFloat_Check(o)) ? PyNumber_Int(o) : \
+                                (PyErr_Format(PyExc_TypeError, \
+                                              "expected index value, got %.200s", Py_TYPE(o)->tp_name), \
+                                 (PyObject*)0))
+  #define __Pyx_PyIndex_Check(o) (PyNumber_Check(o) && !PyFloat_Check(o) && \
+                                  !PyComplex_Check(o))
+  #define PyIndex_Check __Pyx_PyIndex_Check
+  #define PyErr_WarnEx(category, message, stacklevel) PyErr_Warn(category, message)
+  #define __PYX_BUILD_PY_SSIZE_T "i"
+#else
+  #define __PYX_BUILD_PY_SSIZE_T "n"
+  #define CYTHON_FORMAT_SSIZE_T "z"
+  #define __Pyx_PyIndex_Check PyIndex_Check
+#endif
+#if PY_VERSION_HEX < 0x02060000
+  #define Py_REFCNT(ob) (((PyObject*)(ob))->ob_refcnt)
+  #define Py_TYPE(ob)   (((PyObject*)(ob))->ob_type)
+  #define Py_SIZE(ob)   (((PyVarObject*)(ob))->ob_size)
+  #define PyVarObject_HEAD_INIT(type, size) \
+          PyObject_HEAD_INIT(type) size,
+  #define PyType_Modified(t)
+  typedef struct {
+     void *buf;
+     PyObject *obj;
+     Py_ssize_t len;
+     Py_ssize_t itemsize;
+     int readonly;
+     int ndim;
+     char *format;
+     Py_ssize_t *shape;
+     Py_ssize_t *strides;
+     Py_ssize_t *suboffsets;
+     void *internal;
+  } Py_buffer;
+  #define PyBUF_SIMPLE 0
+  #define PyBUF_WRITABLE 0x0001
+  #define PyBUF_FORMAT 0x0004
+  #define PyBUF_ND 0x0008
+  #define PyBUF_STRIDES (0x0010 | PyBUF_ND)
+  #define PyBUF_C_CONTIGUOUS (0x0020 | PyBUF_STRIDES)
+  #define PyBUF_F_CONTIGUOUS (0x0040 | PyBUF_STRIDES)
+  #define PyBUF_ANY_CONTIGUOUS (0x0080 | PyBUF_STRIDES)
+  #define PyBUF_INDIRECT (0x0100 | PyBUF_STRIDES)
+  #define PyBUF_RECORDS (PyBUF_STRIDES | PyBUF_FORMAT | PyBUF_WRITABLE)
+  #define PyBUF_FULL (PyBUF_INDIRECT | PyBUF_FORMAT | PyBUF_WRITABLE)
+  typedef int (*getbufferproc)(PyObject *, Py_buffer *, int);
+  typedef void (*releasebufferproc)(PyObject *, Py_buffer *);
+#endif
+#if PY_MAJOR_VERSION < 3
+  #define __Pyx_BUILTIN_MODULE_NAME "__builtin__"
+  #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) \
+          PyCode_New(a, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
+#else
+  #define __Pyx_BUILTIN_MODULE_NAME "builtins"
+  #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) \
+          PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
+#endif
+#if PY_MAJOR_VERSION < 3 && PY_MINOR_VERSION < 6
+  #define PyUnicode_FromString(s) PyUnicode_Decode(s, strlen(s), "UTF-8", "strict")
+#endif
+#if PY_MAJOR_VERSION >= 3
+  #define Py_TPFLAGS_CHECKTYPES 0
+  #define Py_TPFLAGS_HAVE_INDEX 0
+#endif
+#if (PY_VERSION_HEX < 0x02060000) || (PY_MAJOR_VERSION >= 3)
+  #define Py_TPFLAGS_HAVE_NEWBUFFER 0
+#endif
+#if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND)
+  #define CYTHON_PEP393_ENABLED 1
+  #define __Pyx_PyUnicode_READY(op)       (likely(PyUnicode_IS_READY(op)) ? \
+                                              0 : _PyUnicode_Ready((PyObject *)(op)))
+  #define __Pyx_PyUnicode_GET_LENGTH(u)   PyUnicode_GET_LENGTH(u)
+  #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i)
+  #define __Pyx_PyUnicode_READ(k, d, i)   PyUnicode_READ(k, d, i)
+#else
+  #define CYTHON_PEP393_ENABLED 0
+  #define __Pyx_PyUnicode_READY(op)       (0)
+  #define __Pyx_PyUnicode_GET_LENGTH(u)   PyUnicode_GET_SIZE(u)
+  #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i]))
+  #define __Pyx_PyUnicode_READ(k, d, i)   ((k=k), (Py_UCS4)(((Py_UNICODE*)d)[i]))
+#endif
+#if PY_MAJOR_VERSION >= 3
+  #define PyBaseString_Type            PyUnicode_Type
+  #define PyStringObject               PyUnicodeObject
+  #define PyString_Type                PyUnicode_Type
+  #define PyString_Check               PyUnicode_Check
+  #define PyString_CheckExact          PyUnicode_CheckExact
+#endif
+#if PY_VERSION_HEX < 0x02060000
+  #define PyBytesObject                PyStringObject
+  #define PyBytes_Type                 PyString_Type
+  #define PyBytes_Check                PyString_Check
+  #define PyBytes_CheckExact           PyString_CheckExact
+  #define PyBytes_FromString           PyString_FromString
+  #define PyBytes_FromStringAndSize    PyString_FromStringAndSize
+  #define PyBytes_FromFormat           PyString_FromFormat
+  #define PyBytes_DecodeEscape         PyString_DecodeEscape
+  #define PyBytes_AsString             PyString_AsString
+  #define PyBytes_AsStringAndSize      PyString_AsStringAndSize
+  #define PyBytes_Size                 PyString_Size
+  #define PyBytes_AS_STRING            PyString_AS_STRING
+  #define PyBytes_GET_SIZE             PyString_GET_SIZE
+  #define PyBytes_Repr                 PyString_Repr
+  #define PyBytes_Concat               PyString_Concat
+  #define PyBytes_ConcatAndDel         PyString_ConcatAndDel
+#endif
+#if PY_VERSION_HEX < 0x02060000
+  #define PySet_Check(obj)             PyObject_TypeCheck(obj, &PySet_Type)
+  #define PyFrozenSet_Check(obj)       PyObject_TypeCheck(obj, &PyFrozenSet_Type)
+#endif
+#ifndef PySet_CheckExact
+  #define PySet_CheckExact(obj)        (Py_TYPE(obj) == &PySet_Type)
+#endif
+#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type)
+#if PY_MAJOR_VERSION >= 3
+  #define PyIntObject                  PyLongObject
+  #define PyInt_Type                   PyLong_Type
+  #define PyInt_Check(op)              PyLong_Check(op)
+  #define PyInt_CheckExact(op)         PyLong_CheckExact(op)
+  #define PyInt_FromString             PyLong_FromString
+  #define PyInt_FromUnicode            PyLong_FromUnicode
+  #define PyInt_FromLong               PyLong_FromLong
+  #define PyInt_FromSize_t             PyLong_FromSize_t
+  #define PyInt_FromSsize_t            PyLong_FromSsize_t
+  #define PyInt_AsLong                 PyLong_AsLong
+  #define PyInt_AS_LONG                PyLong_AS_LONG
+  #define PyInt_AsSsize_t              PyLong_AsSsize_t
+  #define PyInt_AsUnsignedLongMask     PyLong_AsUnsignedLongMask
+  #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask
+#endif
+#if PY_MAJOR_VERSION >= 3
+  #define PyBoolObject                 PyLongObject
+#endif
+#if PY_VERSION_HEX < 0x03020000
+  typedef long Py_hash_t;
+  #define __Pyx_PyInt_FromHash_t PyInt_FromLong
+  #define __Pyx_PyInt_AsHash_t   PyInt_AsLong
+#else
+  #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t
+  #define __Pyx_PyInt_AsHash_t   PyInt_AsSsize_t
+#endif
+#if (PY_MAJOR_VERSION < 3) || (PY_VERSION_HEX >= 0x03010300)
+  #define __Pyx_PySequence_GetSlice(obj, a, b) PySequence_GetSlice(obj, a, b)
+  #define __Pyx_PySequence_SetSlice(obj, a, b, value) PySequence_SetSlice(obj, a, b, value)
+  #define __Pyx_PySequence_DelSlice(obj, a, b) PySequence_DelSlice(obj, a, b)
+#else
+  #define __Pyx_PySequence_GetSlice(obj, a, b) (unlikely(!(obj)) ? \
+        (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), (PyObject*)0) : \
+        (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_GetSlice(obj, a, b)) : \
+            (PyErr_Format(PyExc_TypeError, "'%.200s' object is unsliceable", (obj)->ob_type->tp_name), (PyObject*)0)))
+  #define __Pyx_PySequence_SetSlice(obj, a, b, value) (unlikely(!(obj)) ? \
+        (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), -1) : \
+        (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_SetSlice(obj, a, b, value)) : \
+            (PyErr_Format(PyExc_TypeError, "'%.200s' object doesn't support slice assignment", (obj)->ob_type->tp_name), -1)))
+  #define __Pyx_PySequence_DelSlice(obj, a, b) (unlikely(!(obj)) ? \
+        (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), -1) : \
+        (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_DelSlice(obj, a, b)) : \
+            (PyErr_Format(PyExc_TypeError, "'%.200s' object doesn't support slice deletion", (obj)->ob_type->tp_name), -1)))
+#endif
+#if PY_MAJOR_VERSION >= 3
+  #define PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, self) : PyInstanceMethod_New(func))
+#endif
+#if PY_VERSION_HEX < 0x02050000
+  #define __Pyx_GetAttrString(o,n)   PyObject_GetAttrString((o),((char *)(n)))
+  #define __Pyx_SetAttrString(o,n,a) PyObject_SetAttrString((o),((char *)(n)),(a))
+  #define __Pyx_DelAttrString(o,n)   PyObject_DelAttrString((o),((char *)(n)))
+#else
+  #define __Pyx_GetAttrString(o,n)   PyObject_GetAttrString((o),(n))
+  #define __Pyx_SetAttrString(o,n,a) PyObject_SetAttrString((o),(n),(a))
+  #define __Pyx_DelAttrString(o,n)   PyObject_DelAttrString((o),(n))
+#endif
+#if PY_VERSION_HEX < 0x02050000
+  #define __Pyx_NAMESTR(n) ((char *)(n))
+  #define __Pyx_DOCSTR(n)  ((char *)(n))
+#else
+  #define __Pyx_NAMESTR(n) (n)
+  #define __Pyx_DOCSTR(n)  (n)
+#endif
+
+
+#if PY_MAJOR_VERSION >= 3
+  #define __Pyx_PyNumber_Divide(x,y)         PyNumber_TrueDivide(x,y)
+  #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceTrueDivide(x,y)
+#else
+  #define __Pyx_PyNumber_Divide(x,y)         PyNumber_Divide(x,y)
+  #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceDivide(x,y)
+#endif
+
+#ifndef __PYX_EXTERN_C
+  #ifdef __cplusplus
+    #define __PYX_EXTERN_C extern "C"
+  #else
+    #define __PYX_EXTERN_C extern
+  #endif
+#endif
+
+#if defined(WIN32) || defined(MS_WINDOWS)
+#define _USE_MATH_DEFINES
+#endif
+#include <math.h>
+#define __PYX_HAVE__h5py___objects
+#define __PYX_HAVE_API__h5py___objects
+#include "stdlib.h"
+#include "string.h"
+#include "time.h"
+#include "unistd.h"
+#include "stdint.h"
+#include "api_compat.h"
+#include "lzf_filter.h"
+#include "hdf5.h"
+#include "H5Cpublic.h"
+#include "hdf5_hl.h"
+#include "stdio.h"
+#include "pythread.h"
+#ifdef _OPENMP
+#include <omp.h>
+#endif /* _OPENMP */
+
+#ifdef PYREX_WITHOUT_ASSERTIONS
+#define CYTHON_WITHOUT_ASSERTIONS
+#endif
+
+#ifndef CYTHON_INLINE
+  #if defined(__GNUC__)
+    #define CYTHON_INLINE __inline__
+  #elif defined(_MSC_VER)
+    #define CYTHON_INLINE __inline
+  #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+    #define CYTHON_INLINE inline
+  #else
+    #define CYTHON_INLINE
+  #endif
+#endif
+#ifndef CYTHON_UNUSED
+# if defined(__GNUC__)
+#   if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
+#     define CYTHON_UNUSED __attribute__ ((__unused__))
+#   else
+#     define CYTHON_UNUSED
+#   endif
+# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER))
+#   define CYTHON_UNUSED __attribute__ ((__unused__))
+# else
+#   define CYTHON_UNUSED
+# endif
+#endif
+typedef struct {PyObject **p; char *s; const long n; const char* encoding; const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; /*proto*/
+
+#define __Pyx_PyBytes_FromUString(s) PyBytes_FromString((char*)s)
+#define __Pyx_PyBytes_AsUString(s)   ((unsigned char*) PyBytes_AsString(s))
+#define __Pyx_Owned_Py_None(b) (Py_INCREF(Py_None), Py_None)
+#define __Pyx_PyBool_FromLong(b) ((b) ? (Py_INCREF(Py_True), Py_True) : (Py_INCREF(Py_False), Py_False))
+static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*);
+static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x);
+static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*);
+static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t);
+static CYTHON_INLINE size_t __Pyx_PyInt_AsSize_t(PyObject*);
+#if CYTHON_COMPILING_IN_CPYTHON
+#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x))
+#else
+#define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x)
+#endif
+#define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x))
+
+
+#ifdef __GNUC__
+  /* Test for GCC > 2.95 */
+  #if __GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))
+    #define likely(x)   __builtin_expect(!!(x), 1)
+    #define unlikely(x) __builtin_expect(!!(x), 0)
+  #else /* __GNUC__ > 2 ... */
+    #define likely(x)   (x)
+    #define unlikely(x) (x)
+  #endif /* __GNUC__ > 2 ... */
+#else /* __GNUC__ */
+  #define likely(x)   (x)
+  #define unlikely(x) (x)
+#endif /* __GNUC__ */
+    
+static PyObject *__pyx_m;
+static PyObject *__pyx_b;
+static PyObject *__pyx_empty_tuple;
+static PyObject *__pyx_empty_bytes;
+static int __pyx_lineno;
+static int __pyx_clineno = 0;
+static const char * __pyx_cfilenm= __FILE__;
+static const char *__pyx_filename;
+
+
+static const char *__pyx_f[] = {
+  "_objects.pyx",
+  "_objects.pxd",
+  "type.pxd",
+  "bool.pxd",
+  "complex.pxd",
+};
+
+/*--- Type declarations ---*/
+struct __pyx_obj_4h5py_8_objects__Registry;
+struct __pyx_obj_4h5py_8_objects_ObjectID;
+struct __pyx_obj_4h5py_8_objects_FastRLock;
+
+/* "h5py/_objects.pyx":164
+ * 
+ * 
+ * cdef class _Registry:             # <<<<<<<<<<<<<<
+ * 
+ *     cdef object _data
+ */
+struct __pyx_obj_4h5py_8_objects__Registry {
+  PyObject_HEAD
+  PyObject *_data;
+  struct __pyx_obj_4h5py_8_objects_FastRLock *lock;
+};
+
+
+/* "h5py/_objects.pxd":12
+ * from defs cimport *
+ * 
+ * cdef class ObjectID:             # <<<<<<<<<<<<<<
+ * 
+ *     cdef object __weakref__
+ */
+struct __pyx_obj_4h5py_8_objects_ObjectID {
+  PyObject_HEAD
+  PyObject *__weakref__;
+  hid_t id;
+  int locked;
+  PyObject *_hash;
+};
+
+
+/* "h5py/_objects.pyx":47
+ * from cpython.exc cimport PyErr_NoMemory
+ * 
+ * cdef class FastRLock:             # <<<<<<<<<<<<<<
+ *     """Fast, re-entrant locking.
+ * 
+ */
+struct __pyx_obj_4h5py_8_objects_FastRLock {
+  PyObject_HEAD
+  PyThread_type_lock _real_lock;
+  long _owner;
+  int _count;
+  int _pending_requests;
+  int _is_locked;
+};
+
+#ifndef CYTHON_REFNANNY
+  #define CYTHON_REFNANNY 0
+#endif
+#if CYTHON_REFNANNY
+  typedef struct {
+    void (*INCREF)(void*, PyObject*, int);
+    void (*DECREF)(void*, PyObject*, int);
+    void (*GOTREF)(void*, PyObject*, int);
+    void (*GIVEREF)(void*, PyObject*, int);
+    void* (*SetupContext)(const char*, int, const char*);
+    void (*FinishContext)(void**);
+  } __Pyx_RefNannyAPIStruct;
+  static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL;
+  static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); /*proto*/
+  #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL;
+#ifdef WITH_THREAD
+  #define __Pyx_RefNannySetupContext(name, acquire_gil) \
+          if (acquire_gil) { \
+              PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); \
+              __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__); \
+              PyGILState_Release(__pyx_gilstate_save); \
+          } else { \
+              __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__); \
+          }
+#else
+  #define __Pyx_RefNannySetupContext(name, acquire_gil) \
+          __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__)
+#endif
+  #define __Pyx_RefNannyFinishContext() \
+          __Pyx_RefNanny->FinishContext(&__pyx_refnanny)
+  #define __Pyx_INCREF(r)  __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_DECREF(r)  __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_GOTREF(r)  __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_XINCREF(r)  do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0)
+  #define __Pyx_XDECREF(r)  do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0)
+  #define __Pyx_XGOTREF(r)  do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0)
+  #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0)
+#else
+  #define __Pyx_RefNannyDeclarations
+  #define __Pyx_RefNannySetupContext(name, acquire_gil)
+  #define __Pyx_RefNannyFinishContext()
+  #define __Pyx_INCREF(r) Py_INCREF(r)
+  #define __Pyx_DECREF(r) Py_DECREF(r)
+  #define __Pyx_GOTREF(r)
+  #define __Pyx_GIVEREF(r)
+  #define __Pyx_XINCREF(r) Py_XINCREF(r)
+  #define __Pyx_XDECREF(r) Py_XDECREF(r)
+  #define __Pyx_XGOTREF(r)
+  #define __Pyx_XGIVEREF(r)
+#endif /* CYTHON_REFNANNY */
+#define __Pyx_CLEAR(r)    do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0)
+#define __Pyx_XCLEAR(r)   do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0)
+
+static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name); /*proto*/
+
+static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact,
+    Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); /*proto*/
+
+static CYTHON_INLINE int __Pyx_CheckKeywordStrings(PyObject *kwdict, const char* function_name, int kw_allowed); /*proto*/
+
+static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name); /*proto*/
+
+static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[], \
+    PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args, \
+    const char* function_name); /*proto*/
+
+static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb); /*proto*/
+static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb); /*proto*/
+
+static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause); /*proto*/
+
+static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname);
+
+static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb); /*proto*/
+
+#define __Pyx_DelItemInt(o, i, size, to_py_func) (((size) <= sizeof(Py_ssize_t)) ? \
+                                                    __Pyx_DelItemInt_Fast(o, i) : \
+                                                    __Pyx_DelItem_Generic(o, to_py_func(i)))
+static CYTHON_INLINE int __Pyx_DelItem_Generic(PyObject *o, PyObject *j) {
+    int r;
+    if (!j) return -1;
+    r = PyObject_DelItem(o, j);
+    Py_DECREF(j);
+    return r;
+}
+static CYTHON_INLINE int __Pyx_DelItemInt_Fast(PyObject *o, Py_ssize_t i) {
+#if CYTHON_COMPILING_IN_PYPY
+    if (PySequence_Check(o)) {
+        return PySequence_DelItem(o, i);
+    }
+#else
+    PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence;
+    if (likely(m && m->sq_ass_item)) {
+        if (unlikely(i < 0) && likely(m->sq_length)) {
+            Py_ssize_t l = m->sq_length(o);
+            if (unlikely(l < 0)) return -1;
+            i += l;
+        }
+        return m->sq_ass_item(o, i, (PyObject *)NULL);
+    }
+#endif
+    return __Pyx_DelItem_Generic(o, PyInt_FromSsize_t(i));
+}
+
+static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type); /*proto*/
+
+static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_hid_t(hid_t);
+
+static CYTHON_INLINE void __Pyx_ExceptionSave(PyObject **type, PyObject **value, PyObject **tb); /*proto*/
+static void __Pyx_ExceptionReset(PyObject *type, PyObject *value, PyObject *tb); /*proto*/
+
+static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level); /*proto*/
+
+static CYTHON_INLINE void __Pyx_RaiseImportError(PyObject *name);
+
+#ifndef __PYX_FORCE_INIT_THREADS
+  #define __PYX_FORCE_INIT_THREADS 0
+#endif
+
+static CYTHON_INLINE hid_t __Pyx_PyInt_from_py_hid_t(PyObject *);
+
+#include "descrobject.h"
+static PyObject* __Pyx_Method_ClassMethod(PyObject *method); /*proto*/
+
+static CYTHON_INLINE unsigned char __Pyx_PyInt_AsUnsignedChar(PyObject *);
+
+static CYTHON_INLINE unsigned short __Pyx_PyInt_AsUnsignedShort(PyObject *);
+
+static CYTHON_INLINE unsigned int __Pyx_PyInt_AsUnsignedInt(PyObject *);
+
+static CYTHON_INLINE char __Pyx_PyInt_AsChar(PyObject *);
+
+static CYTHON_INLINE short __Pyx_PyInt_AsShort(PyObject *);
+
+static CYTHON_INLINE int __Pyx_PyInt_AsInt(PyObject *);
+
+static CYTHON_INLINE signed char __Pyx_PyInt_AsSignedChar(PyObject *);
+
+static CYTHON_INLINE signed short __Pyx_PyInt_AsSignedShort(PyObject *);
+
+static CYTHON_INLINE signed int __Pyx_PyInt_AsSignedInt(PyObject *);
+
+static CYTHON_INLINE int __Pyx_PyInt_AsLongDouble(PyObject *);
+
+static CYTHON_INLINE unsigned long __Pyx_PyInt_AsUnsignedLong(PyObject *);
+
+static CYTHON_INLINE unsigned PY_LONG_LONG __Pyx_PyInt_AsUnsignedLongLong(PyObject *);
+
+static CYTHON_INLINE long __Pyx_PyInt_AsLong(PyObject *);
+
+static CYTHON_INLINE PY_LONG_LONG __Pyx_PyInt_AsLongLong(PyObject *);
+
+static CYTHON_INLINE signed long __Pyx_PyInt_AsSignedLong(PyObject *);
+
+static CYTHON_INLINE signed PY_LONG_LONG __Pyx_PyInt_AsSignedLongLong(PyObject *);
+
+static int __Pyx_check_binary_version(void);
+
+static int __Pyx_ExportFunction(const char *name, void (*f)(void), const char *sig); /*proto*/
+
+#if !defined(__Pyx_PyIdentifier_FromString)
+#if PY_MAJOR_VERSION < 3
+  #define __Pyx_PyIdentifier_FromString(s) PyString_FromString(s)
+#else
+  #define __Pyx_PyIdentifier_FromString(s) PyUnicode_FromString(s)
+#endif
+#endif
+
+static PyObject *__Pyx_ImportModule(const char *name); /*proto*/
+
+static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name, size_t size, int strict);  /*proto*/
+
+static int __Pyx_ImportFunction(PyObject *module, const char *funcname, void (**f)(void), const char *sig); /*proto*/
+
+typedef struct {
+    int code_line;
+    PyCodeObject* code_object;
+} __Pyx_CodeObjectCacheEntry;
+struct __Pyx_CodeObjectCache {
+    int count;
+    int max_count;
+    __Pyx_CodeObjectCacheEntry* entries;
+};
+static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL};
+static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line);
+static PyCodeObject *__pyx_find_code_object(int code_line);
+static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object);
+
+static void __Pyx_AddTraceback(const char *funcname, int c_line,
+                               int py_line, const char *filename); /*proto*/
+
+static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); /*proto*/
+
+
+/* Module declarations from 'h5py.api_types_ext' */
+
+/* Module declarations from 'h5py.api_types_hdf5' */
+
+/* Module declarations from 'h5py.defs' */
+static herr_t (*__pyx_f_4h5py_4defs_H5Gget_objinfo)(hid_t, char *, int, H5G_stat_t *); /*proto*/
+static H5I_type_t (*__pyx_f_4h5py_4defs_H5Iget_type)(hid_t); /*proto*/
+static int (*__pyx_f_4h5py_4defs_H5Idec_ref)(hid_t); /*proto*/
+
+/* Module declarations from 'cpython.version' */
+
+/* Module declarations from 'cpython.ref' */
+
+/* Module declarations from 'cpython.exc' */
+
+/* Module declarations from 'cpython.module' */
+
+/* Module declarations from 'cpython.mem' */
+
+/* Module declarations from 'cpython.tuple' */
+
+/* Module declarations from 'cpython.list' */
+
+/* Module declarations from 'libc.string' */
+
+/* Module declarations from 'libc.stdio' */
+
+/* Module declarations from 'cpython.object' */
+
+/* Module declarations from 'cpython.sequence' */
+
+/* Module declarations from 'cpython.mapping' */
+
+/* Module declarations from 'cpython.iterator' */
+
+/* Module declarations from '__builtin__' */
+
+/* Module declarations from 'cpython.type' */
+static PyTypeObject *__pyx_ptype_7cpython_4type_type = 0;
+
+/* Module declarations from 'cpython.number' */
+
+/* Module declarations from 'cpython.int' */
+
+/* Module declarations from '__builtin__' */
+
+/* Module declarations from 'cpython.bool' */
+static PyTypeObject *__pyx_ptype_7cpython_4bool_bool = 0;
+
+/* Module declarations from 'cpython.long' */
+
+/* Module declarations from 'cpython.float' */
+
+/* Module declarations from '__builtin__' */
+
+/* Module declarations from 'cpython.complex' */
+static PyTypeObject *__pyx_ptype_7cpython_7complex_complex = 0;
+
+/* Module declarations from 'cpython.string' */
+
+/* Module declarations from 'cpython.unicode' */
+
+/* Module declarations from 'cpython.dict' */
+
+/* Module declarations from 'cpython.instance' */
+
+/* Module declarations from 'cpython.function' */
+
+/* Module declarations from 'cpython.method' */
+
+/* Module declarations from 'cpython.weakref' */
+
+/* Module declarations from 'cpython.getargs' */
+
+/* Module declarations from 'cpython.pythread' */
+
+/* Module declarations from 'cpython.pystate' */
+
+/* Module declarations from 'cpython.cobject' */
+
+/* Module declarations from 'cpython.oldbuffer' */
+
+/* Module declarations from 'cpython.set' */
+
+/* Module declarations from 'cpython.buffer' */
+
+/* Module declarations from 'cpython.bytes' */
+
+/* Module declarations from 'cpython.pycapsule' */
+
+/* Module declarations from 'cpython' */
+
+/* Module declarations from 'h5py._objects' */
+static PyTypeObject *__pyx_ptype_4h5py_8_objects_ObjectID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_8_objects_FastRLock = 0;
+static PyTypeObject *__pyx_ptype_4h5py_8_objects__Registry = 0;
+static CYTHON_INLINE int __pyx_f_4h5py_8_objects_lock_lock(struct __pyx_obj_4h5py_8_objects_FastRLock *, long, int); /*proto*/
+static int __pyx_f_4h5py_8_objects__acquire_lock(struct __pyx_obj_4h5py_8_objects_FastRLock *, long, int); /*proto*/
+static CYTHON_INLINE void __pyx_f_4h5py_8_objects_unlock_lock(struct __pyx_obj_4h5py_8_objects_FastRLock *); /*proto*/
+#define __Pyx_MODULE_NAME "h5py._objects"
+int __pyx_module_is_main_h5py___objects = 0;
+
+/* Implementation of 'h5py._objects' */
+static PyObject *__pyx_builtin_RuntimeError;
+static PyObject *__pyx_builtin_AttributeError;
+static PyObject *__pyx_builtin_NotImplemented;
+static PyObject *__pyx_builtin_TypeError;
+static PyObject *__pyx_builtin_Exception;
+static PyObject *__pyx_builtin_KeyError;
+static int __pyx_pf_4h5py_8_objects_9FastRLock___cinit__(struct __pyx_obj_4h5py_8_objects_FastRLock *__pyx_v_self); /* proto */
+static void __pyx_pf_4h5py_8_objects_9FastRLock_2__dealloc__(struct __pyx_obj_4h5py_8_objects_FastRLock *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_8_objects_9FastRLock_4acquire(struct __pyx_obj_4h5py_8_objects_FastRLock *__pyx_v_self, int __pyx_v_blocking); /* proto */
+static PyObject *__pyx_pf_4h5py_8_objects_9FastRLock_6release(struct __pyx_obj_4h5py_8_objects_FastRLock *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_8_objects_9FastRLock_8__enter__(struct __pyx_obj_4h5py_8_objects_FastRLock *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_8_objects_9FastRLock_10__exit__(struct __pyx_obj_4h5py_8_objects_FastRLock *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_t, CYTHON_UNUSED PyObject *__pyx_v_v, CYTHON_UNUSED PyObject *__pyx_v_tb); /* proto */
+static PyObject *__pyx_pf_4h5py_8_objects_9FastRLock_12_is_owned(struct __pyx_obj_4h5py_8_objects_FastRLock *__pyx_v_self); /* proto */
+static int __pyx_pf_4h5py_8_objects_9_Registry___cinit__(struct __pyx_obj_4h5py_8_objects__Registry *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_8_objects_9_Registry_2cleanup(struct __pyx_obj_4h5py_8_objects__Registry *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_8_objects_9_Registry_4__getitem__(struct __pyx_obj_4h5py_8_objects__Registry *__pyx_v_self, PyObject *__pyx_v_key); /* proto */
+static int __pyx_pf_4h5py_8_objects_9_Registry_6__setitem__(struct __pyx_obj_4h5py_8_objects__Registry *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_val); /* proto */
+static int __pyx_pf_4h5py_8_objects_9_Registry_8__delitem__(struct __pyx_obj_4h5py_8_objects__Registry *__pyx_v_self, PyObject *__pyx_v_key); /* proto */
+static PyObject *__pyx_pf_4h5py_8_objects_9_Registry_4lock___get__(struct __pyx_obj_4h5py_8_objects__Registry *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_8_objects_8ObjectID_6fileno___get__(struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_8_objects_8ObjectID_5valid___get__(struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_self); /* proto */
+static int __pyx_pf_4h5py_8_objects_8ObjectID___cinit__(struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_self, PyObject *__pyx_v_id); /* proto */
+static void __pyx_pf_4h5py_8_objects_8ObjectID_2__dealloc__(struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_self); /* proto */
+static int __pyx_pf_4h5py_8_objects_8ObjectID_4__nonzero__(struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_8_objects_8ObjectID_6__copy__(struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_8_objects_8ObjectID_8__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_how); /* proto */
+static Py_hash_t __pyx_pf_4h5py_8_objects_8ObjectID_10__hash__(struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_8_objects_8ObjectID_12open(PyObject *__pyx_v_cls, PyObject *__pyx_v_id); /* proto */
+static PyObject *__pyx_pf_4h5py_8_objects_8ObjectID_2id___get__(struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_8_objects_8ObjectID_6locked___get__(struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_self); /* proto */
+static int __pyx_pf_4h5py_8_objects_8ObjectID_6locked_2__set__(struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
+static char __pyx_k_1[] = "cannot release un-acquired lock";
+static char __pyx_k_4[] = ".";
+static char __pyx_k_7[] = "Objects of class %s cannot be hashed";
+static char __pyx_k_9[] = "\n    Implements ObjectID base class and global object registry.\n\n    It used to be that we could store the HDF5 identifier in an ObjectID\n    and simply close it when the object was deallocated.  However, since\n    HDF5 1.8.5 they have started recycling object identifiers, which\n    breaks this system.\n\n    We now use a global registry of object identifiers.  This is implemented\n    via a dictionary which maps an integer representation of the identifie [...]
+static char __pyx_k__t[] = "t";
+static char __pyx_k__v[] = "v";
+static char __pyx_k__id[] = "id";
+static char __pyx_k__tb[] = "tb";
+static char __pyx_k__pop[] = "pop";
+static char __pyx_k__ref[] = "ref";
+static char __pyx_k__lock[] = "lock";
+static char __pyx_k__open[] = "open";
+static char __pyx_k__valid[] = "valid";
+static char __pyx_k__weakref[] = "weakref";
+static char __pyx_k__KeyError[] = "KeyError";
+static char __pyx_k__KeyedRef[] = "KeyedRef";
+static char __pyx_k____exit__[] = "__exit__";
+static char __pyx_k____hash__[] = "__hash__";
+static char __pyx_k____main__[] = "__main__";
+static char __pyx_k____name__[] = "__name__";
+static char __pyx_k____test__[] = "__test__";
+static char __pyx_k__blocking[] = "blocking";
+static char __pyx_k__registry[] = "registry";
+static char __pyx_k__Exception[] = "Exception";
+static char __pyx_k__TypeError[] = "TypeError";
+static char __pyx_k____class__[] = "__class__";
+static char __pyx_k____enter__[] = "__enter__";
+static char __pyx_k__RuntimeError[] = "RuntimeError";
+static char __pyx_k__AttributeError[] = "AttributeError";
+static char __pyx_k__NotImplemented[] = "NotImplemented";
+static PyObject *__pyx_kp_s_1;
+static PyObject *__pyx_kp_s_7;
+static PyObject *__pyx_n_s__AttributeError;
+static PyObject *__pyx_n_s__Exception;
+static PyObject *__pyx_n_s__KeyError;
+static PyObject *__pyx_n_s__KeyedRef;
+static PyObject *__pyx_n_s__NotImplemented;
+static PyObject *__pyx_n_s__RuntimeError;
+static PyObject *__pyx_n_s__TypeError;
+static PyObject *__pyx_n_s____class__;
+static PyObject *__pyx_n_s____enter__;
+static PyObject *__pyx_n_s____exit__;
+static PyObject *__pyx_n_s____hash__;
+static PyObject *__pyx_n_s____main__;
+static PyObject *__pyx_n_s____name__;
+static PyObject *__pyx_n_s____test__;
+static PyObject *__pyx_n_s__blocking;
+static PyObject *__pyx_n_s__id;
+static PyObject *__pyx_n_s__lock;
+static PyObject *__pyx_n_s__open;
+static PyObject *__pyx_n_s__pop;
+static PyObject *__pyx_n_s__ref;
+static PyObject *__pyx_n_s__registry;
+static PyObject *__pyx_n_s__t;
+static PyObject *__pyx_n_s__tb;
+static PyObject *__pyx_n_s__v;
+static PyObject *__pyx_n_s__valid;
+static PyObject *__pyx_n_s__weakref;
+static PyObject *__pyx_k_tuple_2;
+static PyObject *__pyx_k_tuple_3;
+static PyObject *__pyx_k_tuple_5;
+static PyObject *__pyx_k_tuple_6;
+static PyObject *__pyx_k_tuple_8;
+
+/* Python wrapper */
+static int __pyx_pw_4h5py_8_objects_9FastRLock_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_4h5py_8_objects_9FastRLock_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
+  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
+    __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
+  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;
+  __pyx_r = __pyx_pf_4h5py_8_objects_9FastRLock___cinit__(((struct __pyx_obj_4h5py_8_objects_FastRLock *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/_objects.pyx":62
+ *     cdef bint _is_locked        # whether the real lock is acquired
+ * 
+ *     def __cinit__(self):             # <<<<<<<<<<<<<<
+ *         self._owner = -1
+ *         self._count = 0
+ */
+
+static int __pyx_pf_4h5py_8_objects_9FastRLock___cinit__(struct __pyx_obj_4h5py_8_objects_FastRLock *__pyx_v_self) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  PyObject *__pyx_t_2;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__cinit__", 0);
+
+  /* "h5py/_objects.pyx":63
+ * 
+ *     def __cinit__(self):
+ *         self._owner = -1             # <<<<<<<<<<<<<<
+ *         self._count = 0
+ *         self._is_locked = False
+ */
+  __pyx_v_self->_owner = -1;
+
+  /* "h5py/_objects.pyx":64
+ *     def __cinit__(self):
+ *         self._owner = -1
+ *         self._count = 0             # <<<<<<<<<<<<<<
+ *         self._is_locked = False
+ *         self._pending_requests = 0
+ */
+  __pyx_v_self->_count = 0;
+
+  /* "h5py/_objects.pyx":65
+ *         self._owner = -1
+ *         self._count = 0
+ *         self._is_locked = False             # <<<<<<<<<<<<<<
+ *         self._pending_requests = 0
+ *         self._real_lock = pythread.PyThread_allocate_lock()
+ */
+  __pyx_v_self->_is_locked = 0;
+
+  /* "h5py/_objects.pyx":66
+ *         self._count = 0
+ *         self._is_locked = False
+ *         self._pending_requests = 0             # <<<<<<<<<<<<<<
+ *         self._real_lock = pythread.PyThread_allocate_lock()
+ *         if self._real_lock is NULL:
+ */
+  __pyx_v_self->_pending_requests = 0;
+
+  /* "h5py/_objects.pyx":67
+ *         self._is_locked = False
+ *         self._pending_requests = 0
+ *         self._real_lock = pythread.PyThread_allocate_lock()             # <<<<<<<<<<<<<<
+ *         if self._real_lock is NULL:
+ *             PyErr_NoMemory()
+ */
+  __pyx_v_self->_real_lock = PyThread_allocate_lock();
+
+  /* "h5py/_objects.pyx":68
+ *         self._pending_requests = 0
+ *         self._real_lock = pythread.PyThread_allocate_lock()
+ *         if self._real_lock is NULL:             # <<<<<<<<<<<<<<
+ *             PyErr_NoMemory()
+ * 
+ */
+  __pyx_t_1 = (__pyx_v_self->_real_lock == NULL);
+  if (__pyx_t_1) {
+
+    /* "h5py/_objects.pyx":69
+ *         self._real_lock = pythread.PyThread_allocate_lock()
+ *         if self._real_lock is NULL:
+ *             PyErr_NoMemory()             # <<<<<<<<<<<<<<
+ * 
+ *     def __dealloc__(self):
+ */
+    __pyx_t_2 = PyErr_NoMemory(); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py._objects.FastRLock.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static void __pyx_pw_4h5py_8_objects_9FastRLock_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
+static void __pyx_pw_4h5py_8_objects_9FastRLock_3__dealloc__(PyObject *__pyx_v_self) {
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
+  __pyx_pf_4h5py_8_objects_9FastRLock_2__dealloc__(((struct __pyx_obj_4h5py_8_objects_FastRLock *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+}
+
+/* "h5py/_objects.pyx":71
+ *             PyErr_NoMemory()
+ * 
+ *     def __dealloc__(self):             # <<<<<<<<<<<<<<
+ *         if self._real_lock is not NULL:
+ *             pythread.PyThread_free_lock(self._real_lock)
+ */
+
+static void __pyx_pf_4h5py_8_objects_9FastRLock_2__dealloc__(struct __pyx_obj_4h5py_8_objects_FastRLock *__pyx_v_self) {
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  __Pyx_RefNannySetupContext("__dealloc__", 0);
+
+  /* "h5py/_objects.pyx":72
+ * 
+ *     def __dealloc__(self):
+ *         if self._real_lock is not NULL:             # <<<<<<<<<<<<<<
+ *             pythread.PyThread_free_lock(self._real_lock)
+ *             self._real_lock = NULL
+ */
+  __pyx_t_1 = (__pyx_v_self->_real_lock != NULL);
+  if (__pyx_t_1) {
+
+    /* "h5py/_objects.pyx":73
+ *     def __dealloc__(self):
+ *         if self._real_lock is not NULL:
+ *             pythread.PyThread_free_lock(self._real_lock)             # <<<<<<<<<<<<<<
+ *             self._real_lock = NULL
+ * 
+ */
+    PyThread_free_lock(__pyx_v_self->_real_lock);
+
+    /* "h5py/_objects.pyx":74
+ *         if self._real_lock is not NULL:
+ *             pythread.PyThread_free_lock(self._real_lock)
+ *             self._real_lock = NULL             # <<<<<<<<<<<<<<
+ * 
+ *     def acquire(self, bint blocking=True):
+ */
+    __pyx_v_self->_real_lock = NULL;
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  __Pyx_RefNannyFinishContext();
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_8_objects_9FastRLock_5acquire(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_4h5py_8_objects_9FastRLock_5acquire(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  int __pyx_v_blocking;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("acquire (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__blocking,0};
+    PyObject* values[1] = {0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__blocking);
+          if (value) { values[0] = value; kw_args--; }
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "acquire") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 76; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else {
+      switch (PyTuple_GET_SIZE(__pyx_args)) {
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+    }
+    if (values[0]) {
+      __pyx_v_blocking = __Pyx_PyObject_IsTrue(values[0]); if (unlikely((__pyx_v_blocking == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 76; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    } else {
+
+      /* "h5py/_objects.pyx":76
+ *             self._real_lock = NULL
+ * 
+ *     def acquire(self, bint blocking=True):             # <<<<<<<<<<<<<<
+ *         return lock_lock(self, pythread.PyThread_get_thread_ident(), blocking)
+ * 
+ */
+      __pyx_v_blocking = ((int)1);
+    }
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("acquire", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 76; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py._objects.FastRLock.acquire", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_8_objects_9FastRLock_4acquire(((struct __pyx_obj_4h5py_8_objects_FastRLock *)__pyx_v_self), __pyx_v_blocking);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_4h5py_8_objects_9FastRLock_4acquire(struct __pyx_obj_4h5py_8_objects_FastRLock *__pyx_v_self, int __pyx_v_blocking) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("acquire", 0);
+
+  /* "h5py/_objects.pyx":77
+ * 
+ *     def acquire(self, bint blocking=True):
+ *         return lock_lock(self, pythread.PyThread_get_thread_ident(), blocking)             # <<<<<<<<<<<<<<
+ * 
+ *     def release(self):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_f_4h5py_8_objects_lock_lock(__pyx_v_self, PyThread_get_thread_ident(), __pyx_v_blocking)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py._objects.FastRLock.acquire", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_8_objects_9FastRLock_7release(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static PyObject *__pyx_pw_4h5py_8_objects_9FastRLock_7release(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("release (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_8_objects_9FastRLock_6release(((struct __pyx_obj_4h5py_8_objects_FastRLock *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/_objects.pyx":79
+ *         return lock_lock(self, pythread.PyThread_get_thread_ident(), blocking)
+ * 
+ *     def release(self):             # <<<<<<<<<<<<<<
+ *         if self._owner != pythread.PyThread_get_thread_ident():
+ *             raise RuntimeError("cannot release un-acquired lock")
+ */
+
+static PyObject *__pyx_pf_4h5py_8_objects_9FastRLock_6release(struct __pyx_obj_4h5py_8_objects_FastRLock *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("release", 0);
+
+  /* "h5py/_objects.pyx":80
+ * 
+ *     def release(self):
+ *         if self._owner != pythread.PyThread_get_thread_ident():             # <<<<<<<<<<<<<<
+ *             raise RuntimeError("cannot release un-acquired lock")
+ *         unlock_lock(self)
+ */
+  __pyx_t_1 = (__pyx_v_self->_owner != PyThread_get_thread_ident());
+  if (__pyx_t_1) {
+
+    /* "h5py/_objects.pyx":81
+ *     def release(self):
+ *         if self._owner != pythread.PyThread_get_thread_ident():
+ *             raise RuntimeError("cannot release un-acquired lock")             # <<<<<<<<<<<<<<
+ *         unlock_lock(self)
+ * 
+ */
+    __pyx_t_2 = PyObject_Call(__pyx_builtin_RuntimeError, ((PyObject *)__pyx_k_tuple_2), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  /* "h5py/_objects.pyx":82
+ *         if self._owner != pythread.PyThread_get_thread_ident():
+ *             raise RuntimeError("cannot release un-acquired lock")
+ *         unlock_lock(self)             # <<<<<<<<<<<<<<
+ * 
+ *     # compatibility with threading.RLock
+ */
+  __pyx_f_4h5py_8_objects_unlock_lock(__pyx_v_self);
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py._objects.FastRLock.release", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_8_objects_9FastRLock_9__enter__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static PyObject *__pyx_pw_4h5py_8_objects_9FastRLock_9__enter__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__enter__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_8_objects_9FastRLock_8__enter__(((struct __pyx_obj_4h5py_8_objects_FastRLock *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/_objects.pyx":86
+ *     # compatibility with threading.RLock
+ * 
+ *     def __enter__(self):             # <<<<<<<<<<<<<<
+ *         # self.acquire()
+ *         return lock_lock(self, pythread.PyThread_get_thread_ident(), True)
+ */
+
+static PyObject *__pyx_pf_4h5py_8_objects_9FastRLock_8__enter__(struct __pyx_obj_4h5py_8_objects_FastRLock *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__enter__", 0);
+
+  /* "h5py/_objects.pyx":88
+ *     def __enter__(self):
+ *         # self.acquire()
+ *         return lock_lock(self, pythread.PyThread_get_thread_ident(), True)             # <<<<<<<<<<<<<<
+ * 
+ *     def __exit__(self, t, v, tb):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_f_4h5py_8_objects_lock_lock(__pyx_v_self, PyThread_get_thread_ident(), 1)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py._objects.FastRLock.__enter__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_8_objects_9FastRLock_11__exit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_4h5py_8_objects_9FastRLock_11__exit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  CYTHON_UNUSED PyObject *__pyx_v_t = 0;
+  CYTHON_UNUSED PyObject *__pyx_v_v = 0;
+  CYTHON_UNUSED PyObject *__pyx_v_tb = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__exit__ (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__t,&__pyx_n_s__v,&__pyx_n_s__tb,0};
+    PyObject* values[3] = {0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__t)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__v)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+        case  2:
+        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__tb)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__exit__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+    }
+    __pyx_v_t = values[0];
+    __pyx_v_v = values[1];
+    __pyx_v_tb = values[2];
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py._objects.FastRLock.__exit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_8_objects_9FastRLock_10__exit__(((struct __pyx_obj_4h5py_8_objects_FastRLock *)__pyx_v_self), __pyx_v_t, __pyx_v_v, __pyx_v_tb);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/_objects.pyx":90
+ *         return lock_lock(self, pythread.PyThread_get_thread_ident(), True)
+ * 
+ *     def __exit__(self, t, v, tb):             # <<<<<<<<<<<<<<
+ *         # self.release()
+ *         if self._owner != pythread.PyThread_get_thread_ident():
+ */
+
+static PyObject *__pyx_pf_4h5py_8_objects_9FastRLock_10__exit__(struct __pyx_obj_4h5py_8_objects_FastRLock *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_t, CYTHON_UNUSED PyObject *__pyx_v_v, CYTHON_UNUSED PyObject *__pyx_v_tb) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__exit__", 0);
+
+  /* "h5py/_objects.pyx":92
+ *     def __exit__(self, t, v, tb):
+ *         # self.release()
+ *         if self._owner != pythread.PyThread_get_thread_ident():             # <<<<<<<<<<<<<<
+ *             raise RuntimeError("cannot release un-acquired lock")
+ *         unlock_lock(self)
+ */
+  __pyx_t_1 = (__pyx_v_self->_owner != PyThread_get_thread_ident());
+  if (__pyx_t_1) {
+
+    /* "h5py/_objects.pyx":93
+ *         # self.release()
+ *         if self._owner != pythread.PyThread_get_thread_ident():
+ *             raise RuntimeError("cannot release un-acquired lock")             # <<<<<<<<<<<<<<
+ *         unlock_lock(self)
+ * 
+ */
+    __pyx_t_2 = PyObject_Call(__pyx_builtin_RuntimeError, ((PyObject *)__pyx_k_tuple_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  /* "h5py/_objects.pyx":94
+ *         if self._owner != pythread.PyThread_get_thread_ident():
+ *             raise RuntimeError("cannot release un-acquired lock")
+ *         unlock_lock(self)             # <<<<<<<<<<<<<<
+ * 
+ *     def _is_owned(self):
+ */
+  __pyx_f_4h5py_8_objects_unlock_lock(__pyx_v_self);
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py._objects.FastRLock.__exit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_8_objects_9FastRLock_13_is_owned(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static PyObject *__pyx_pw_4h5py_8_objects_9FastRLock_13_is_owned(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("_is_owned (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_8_objects_9FastRLock_12_is_owned(((struct __pyx_obj_4h5py_8_objects_FastRLock *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/_objects.pyx":96
+ *         unlock_lock(self)
+ * 
+ *     def _is_owned(self):             # <<<<<<<<<<<<<<
+ *         return self._owner == pythread.PyThread_get_thread_ident()
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_8_objects_9FastRLock_12_is_owned(struct __pyx_obj_4h5py_8_objects_FastRLock *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_is_owned", 0);
+
+  /* "h5py/_objects.pyx":97
+ * 
+ *     def _is_owned(self):
+ *         return self._owner == pythread.PyThread_get_thread_ident()             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyBool_FromLong((__pyx_v_self->_owner == PyThread_get_thread_ident())); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py._objects.FastRLock._is_owned", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/_objects.pyx":100
+ * 
+ * 
+ * cdef inline bint lock_lock(FastRLock lock, long current_thread, bint blocking) 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
+ */
+
+static CYTHON_INLINE int __pyx_f_4h5py_8_objects_lock_lock(struct __pyx_obj_4h5py_8_objects_FastRLock *__pyx_v_lock, long __pyx_v_current_thread, int __pyx_v_blocking) {
+  int __pyx_r;
+  int __pyx_t_1;
+  int __pyx_t_2;
+
+  /* "h5py/_objects.pyx":105
+ *     # code execution slips in that might free the GIL
+ * 
+ *     if lock._count:             # <<<<<<<<<<<<<<
+ *         # locked! - by myself?
+ *         if current_thread == lock._owner:
+ */
+  if (__pyx_v_lock->_count) {
+
+    /* "h5py/_objects.pyx":107
+ *     if lock._count:
+ *         # locked! - by myself?
+ *         if current_thread == lock._owner:             # <<<<<<<<<<<<<<
+ *             lock._count += 1
+ *             return 1
+ */
+    __pyx_t_1 = (__pyx_v_current_thread == __pyx_v_lock->_owner);
+    if (__pyx_t_1) {
+
+      /* "h5py/_objects.pyx":108
+ *         # locked! - by myself?
+ *         if current_thread == lock._owner:
+ *             lock._count += 1             # <<<<<<<<<<<<<<
+ *             return 1
+ *     elif not lock._pending_requests:
+ */
+      __pyx_v_lock->_count = (__pyx_v_lock->_count + 1);
+
+      /* "h5py/_objects.pyx":109
+ *         if current_thread == lock._owner:
+ *             lock._count += 1
+ *             return 1             # <<<<<<<<<<<<<<
+ *     elif not lock._pending_requests:
+ *         # not locked, not requested - go!
+ */
+      __pyx_r = 1;
+      goto __pyx_L0;
+      goto __pyx_L4;
+    }
+    __pyx_L4:;
+    goto __pyx_L3;
+  }
+
+  /* "h5py/_objects.pyx":110
+ *             lock._count += 1
+ *             return 1
+ *     elif not lock._pending_requests:             # <<<<<<<<<<<<<<
+ *         # not locked, not requested - go!
+ *         lock._owner = current_thread
+ */
+  __pyx_t_1 = (!__pyx_v_lock->_pending_requests);
+  if (__pyx_t_1) {
+
+    /* "h5py/_objects.pyx":112
+ *     elif not lock._pending_requests:
+ *         # not locked, not requested - go!
+ *         lock._owner = current_thread             # <<<<<<<<<<<<<<
+ *         lock._count = 1
+ *         return 1
+ */
+    __pyx_v_lock->_owner = __pyx_v_current_thread;
+
+    /* "h5py/_objects.pyx":113
+ *         # not locked, not requested - go!
+ *         lock._owner = current_thread
+ *         lock._count = 1             # <<<<<<<<<<<<<<
+ *         return 1
+ *     # need to get the real lock
+ */
+    __pyx_v_lock->_count = 1;
+
+    /* "h5py/_objects.pyx":114
+ *         lock._owner = current_thread
+ *         lock._count = 1
+ *         return 1             # <<<<<<<<<<<<<<
+ *     # need to get the real lock
+ *     return _acquire_lock(
+ */
+    __pyx_r = 1;
+    goto __pyx_L0;
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  /* "h5py/_objects.pyx":118
+ *     return _acquire_lock(
+ *         lock, current_thread,
+ *         pythread.WAIT_LOCK if blocking else pythread.NOWAIT_LOCK)             # <<<<<<<<<<<<<<
+ * 
+ * cdef bint _acquire_lock(FastRLock lock, long current_thread, int wait) nogil:
+ */
+  if (__pyx_v_blocking) {
+    __pyx_t_2 = WAIT_LOCK;
+  } else {
+    __pyx_t_2 = NOWAIT_LOCK;
+  }
+  __pyx_r = __pyx_f_4h5py_8_objects__acquire_lock(__pyx_v_lock, __pyx_v_current_thread, __pyx_t_2);
+  goto __pyx_L0;
+
+  __pyx_r = 0;
+  __pyx_L0:;
+  return __pyx_r;
+}
+
+/* "h5py/_objects.pyx":120
+ *         pythread.WAIT_LOCK if blocking else pythread.NOWAIT_LOCK)
+ * 
+ * cdef bint _acquire_lock(FastRLock lock, long current_thread, int wait) 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
+ */
+
+static int __pyx_f_4h5py_8_objects__acquire_lock(struct __pyx_obj_4h5py_8_objects_FastRLock *__pyx_v_lock, long __pyx_v_current_thread, int __pyx_v_wait) {
+  int __pyx_v_locked;
+  int __pyx_r;
+  int __pyx_t_1;
+  int __pyx_t_2;
+  int __pyx_t_3;
+
+  /* "h5py/_objects.pyx":125
+ *     # code execution slips in that might free the GIL
+ * 
+ *     if not lock._is_locked and not lock._pending_requests:             # <<<<<<<<<<<<<<
+ *         # someone owns it but didn't acquire the real lock - do that
+ *         # now and tell the owner to release it when done. Note that we
+ */
+  __pyx_t_1 = (!__pyx_v_lock->_is_locked);
+  if (__pyx_t_1) {
+    __pyx_t_2 = (!__pyx_v_lock->_pending_requests);
+    __pyx_t_3 = __pyx_t_2;
+  } else {
+    __pyx_t_3 = __pyx_t_1;
+  }
+  if (__pyx_t_3) {
+
+    /* "h5py/_objects.pyx":130
+ *         # do not release the GIL here as we must absolutely be the one
+ *         # who acquires the lock now.
+ *         if not pythread.PyThread_acquire_lock(lock._real_lock, wait):             # <<<<<<<<<<<<<<
+ *             return 0
+ *         #assert not lock._is_locked
+ */
+    __pyx_t_3 = (!PyThread_acquire_lock(__pyx_v_lock->_real_lock, __pyx_v_wait));
+    if (__pyx_t_3) {
+
+      /* "h5py/_objects.pyx":131
+ *         # who acquires the lock now.
+ *         if not pythread.PyThread_acquire_lock(lock._real_lock, wait):
+ *             return 0             # <<<<<<<<<<<<<<
+ *         #assert not lock._is_locked
+ *         lock._is_locked = True
+ */
+      __pyx_r = 0;
+      goto __pyx_L0;
+      goto __pyx_L4;
+    }
+    __pyx_L4:;
+
+    /* "h5py/_objects.pyx":133
+ *             return 0
+ *         #assert not lock._is_locked
+ *         lock._is_locked = True             # <<<<<<<<<<<<<<
+ *     lock._pending_requests += 1
+ *     with nogil:
+ */
+    __pyx_v_lock->_is_locked = 1;
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  /* "h5py/_objects.pyx":134
+ *         #assert not lock._is_locked
+ *         lock._is_locked = True
+ *     lock._pending_requests += 1             # <<<<<<<<<<<<<<
+ *     with nogil:
+ *         # wait for the lock owning thread to release it
+ */
+  __pyx_v_lock->_pending_requests = (__pyx_v_lock->_pending_requests + 1);
+
+  /* "h5py/_objects.pyx":135
+ *         lock._is_locked = True
+ *     lock._pending_requests += 1
+ *     with nogil:             # <<<<<<<<<<<<<<
+ *         # wait for the lock owning thread to release it
+ *         locked = pythread.PyThread_acquire_lock(lock._real_lock, wait)
+ */
+  {
+      #ifdef WITH_THREAD
+      PyThreadState *_save = NULL;
+      #endif
+      Py_UNBLOCK_THREADS
+      /*try:*/ {
+
+        /* "h5py/_objects.pyx":137
+ *     with nogil:
+ *         # wait for the lock owning thread to release it
+ *         locked = pythread.PyThread_acquire_lock(lock._real_lock, wait)             # <<<<<<<<<<<<<<
+ *     lock._pending_requests -= 1
+ *     #assert not lock._is_locked
+ */
+        __pyx_v_locked = PyThread_acquire_lock(__pyx_v_lock->_real_lock, __pyx_v_wait);
+      }
+
+      /* "h5py/_objects.pyx":135
+ *         lock._is_locked = True
+ *     lock._pending_requests += 1
+ *     with nogil:             # <<<<<<<<<<<<<<
+ *         # wait for the lock owning thread to release it
+ *         locked = pythread.PyThread_acquire_lock(lock._real_lock, wait)
+ */
+      /*finally:*/ {
+        Py_BLOCK_THREADS
+      }
+  }
+
+  /* "h5py/_objects.pyx":138
+ *         # wait for the lock owning thread to release it
+ *         locked = pythread.PyThread_acquire_lock(lock._real_lock, wait)
+ *     lock._pending_requests -= 1             # <<<<<<<<<<<<<<
+ *     #assert not lock._is_locked
+ *     #assert lock._count == 0
+ */
+  __pyx_v_lock->_pending_requests = (__pyx_v_lock->_pending_requests - 1);
+
+  /* "h5py/_objects.pyx":141
+ *     #assert not lock._is_locked
+ *     #assert lock._count == 0
+ *     if not locked:             # <<<<<<<<<<<<<<
+ *         return 0
+ *     lock._is_locked = True
+ */
+  __pyx_t_3 = (!__pyx_v_locked);
+  if (__pyx_t_3) {
+
+    /* "h5py/_objects.pyx":142
+ *     #assert lock._count == 0
+ *     if not locked:
+ *         return 0             # <<<<<<<<<<<<<<
+ *     lock._is_locked = True
+ *     lock._owner = current_thread
+ */
+    __pyx_r = 0;
+    goto __pyx_L0;
+    goto __pyx_L8;
+  }
+  __pyx_L8:;
+
+  /* "h5py/_objects.pyx":143
+ *     if not locked:
+ *         return 0
+ *     lock._is_locked = True             # <<<<<<<<<<<<<<
+ *     lock._owner = current_thread
+ *     lock._count = 1
+ */
+  __pyx_v_lock->_is_locked = 1;
+
+  /* "h5py/_objects.pyx":144
+ *         return 0
+ *     lock._is_locked = True
+ *     lock._owner = current_thread             # <<<<<<<<<<<<<<
+ *     lock._count = 1
+ *     return 1
+ */
+  __pyx_v_lock->_owner = __pyx_v_current_thread;
+
+  /* "h5py/_objects.pyx":145
+ *     lock._is_locked = True
+ *     lock._owner = current_thread
+ *     lock._count = 1             # <<<<<<<<<<<<<<
+ *     return 1
+ * 
+ */
+  __pyx_v_lock->_count = 1;
+
+  /* "h5py/_objects.pyx":146
+ *     lock._owner = current_thread
+ *     lock._count = 1
+ *     return 1             # <<<<<<<<<<<<<<
+ * 
+ * cdef inline void unlock_lock(FastRLock lock) nogil:
+ */
+  __pyx_r = 1;
+  goto __pyx_L0;
+
+  __pyx_r = 0;
+  __pyx_L0:;
+  return __pyx_r;
+}
+
+/* "h5py/_objects.pyx":148
+ *     return 1
+ * 
+ * cdef inline void unlock_lock(FastRLock lock) 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
+ */
+
+static CYTHON_INLINE void __pyx_f_4h5py_8_objects_unlock_lock(struct __pyx_obj_4h5py_8_objects_FastRLock *__pyx_v_lock) {
+  int __pyx_t_1;
+
+  /* "h5py/_objects.pyx":155
+ *     #assert lock._owner == pythread.PyThread_get_thread_ident()
+ *     #assert lock._count > 0
+ *     lock._count -= 1             # <<<<<<<<<<<<<<
+ *     if lock._count == 0:
+ *         lock._owner = -1
+ */
+  __pyx_v_lock->_count = (__pyx_v_lock->_count - 1);
+
+  /* "h5py/_objects.pyx":156
+ *     #assert lock._count > 0
+ *     lock._count -= 1
+ *     if lock._count == 0:             # <<<<<<<<<<<<<<
+ *         lock._owner = -1
+ *         if lock._is_locked:
+ */
+  __pyx_t_1 = (__pyx_v_lock->_count == 0);
+  if (__pyx_t_1) {
+
+    /* "h5py/_objects.pyx":157
+ *     lock._count -= 1
+ *     if lock._count == 0:
+ *         lock._owner = -1             # <<<<<<<<<<<<<<
+ *         if lock._is_locked:
+ *             pythread.PyThread_release_lock(lock._real_lock)
+ */
+    __pyx_v_lock->_owner = -1;
+
+    /* "h5py/_objects.pyx":158
+ *     if lock._count == 0:
+ *         lock._owner = -1
+ *         if lock._is_locked:             # <<<<<<<<<<<<<<
+ *             pythread.PyThread_release_lock(lock._real_lock)
+ *             lock._is_locked = False
+ */
+    if (__pyx_v_lock->_is_locked) {
+
+      /* "h5py/_objects.pyx":159
+ *         lock._owner = -1
+ *         if lock._is_locked:
+ *             pythread.PyThread_release_lock(lock._real_lock)             # <<<<<<<<<<<<<<
+ *             lock._is_locked = False
+ * ## end of http://code.activestate.com/recipes/577336/ }}}
+ */
+      PyThread_release_lock(__pyx_v_lock->_real_lock);
+
+      /* "h5py/_objects.pyx":160
+ *         if lock._is_locked:
+ *             pythread.PyThread_release_lock(lock._real_lock)
+ *             lock._is_locked = False             # <<<<<<<<<<<<<<
+ * ## end of http://code.activestate.com/recipes/577336/ }}}
+ * 
+ */
+      __pyx_v_lock->_is_locked = 0;
+      goto __pyx_L4;
+    }
+    __pyx_L4:;
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+}
+
+/* Python wrapper */
+static int __pyx_pw_4h5py_8_objects_9_Registry_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_4h5py_8_objects_9_Registry_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
+  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
+    __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
+  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;
+  __pyx_r = __pyx_pf_4h5py_8_objects_9_Registry___cinit__(((struct __pyx_obj_4h5py_8_objects__Registry *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/_objects.pyx":169
+ *     cdef readonly FastRLock lock
+ * 
+ *     def __cinit__(self):             # <<<<<<<<<<<<<<
+ *         self._data = {}
+ *         self.lock = FastRLock()
+ */
+
+static int __pyx_pf_4h5py_8_objects_9_Registry___cinit__(struct __pyx_obj_4h5py_8_objects__Registry *__pyx_v_self) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__cinit__", 0);
+
+  /* "h5py/_objects.pyx":170
+ * 
+ *     def __cinit__(self):
+ *         self._data = {}             # <<<<<<<<<<<<<<
+ *         self.lock = FastRLock()
+ * 
+ */
+  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
+  __Pyx_GIVEREF(((PyObject *)__pyx_t_1));
+  __Pyx_GOTREF(__pyx_v_self->_data);
+  __Pyx_DECREF(__pyx_v_self->_data);
+  __pyx_v_self->_data = ((PyObject *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "h5py/_objects.pyx":171
+ *     def __cinit__(self):
+ *         self._data = {}
+ *         self.lock = FastRLock()             # <<<<<<<<<<<<<<
+ * 
+ *     __hash__ = None # Avoid Py3 warning
+ */
+  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4h5py_8_objects_FastRLock)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 171; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_GOTREF(__pyx_v_self->lock);
+  __Pyx_DECREF(((PyObject *)__pyx_v_self->lock));
+  __pyx_v_self->lock = ((struct __pyx_obj_4h5py_8_objects_FastRLock *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py._objects._Registry.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_8_objects_9_Registry_3cleanup(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_8_objects_9_Registry_2cleanup[] = "Manage invalid identifiers";
+static PyObject *__pyx_pw_4h5py_8_objects_9_Registry_3cleanup(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("cleanup (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_8_objects_9_Registry_2cleanup(((struct __pyx_obj_4h5py_8_objects__Registry *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/_objects.pyx":175
+ *     __hash__ = None # Avoid Py3 warning
+ * 
+ *     def cleanup(self):             # <<<<<<<<<<<<<<
+ *         "Manage invalid identifiers"
+ *         deadlist = []
+ */
+
+static PyObject *__pyx_pf_4h5py_8_objects_9_Registry_2cleanup(struct __pyx_obj_4h5py_8_objects__Registry *__pyx_v_self) {
+  PyObject *__pyx_v_deadlist = NULL;
+  PyObject *__pyx_v_key = NULL;
+  PyObject *__pyx_v_val = NULL;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  Py_ssize_t __pyx_t_2;
+  PyObject *(*__pyx_t_3)(PyObject *);
+  PyObject *__pyx_t_4 = NULL;
+  int __pyx_t_5;
+  int __pyx_t_6;
+  int __pyx_t_7;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("cleanup", 0);
+
+  /* "h5py/_objects.pyx":177
+ *     def cleanup(self):
+ *         "Manage invalid identifiers"
+ *         deadlist = []             # <<<<<<<<<<<<<<
+ *         for key in self._data:
+ *             val = self._data[key]
+ */
+  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 177; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_deadlist = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "h5py/_objects.pyx":178
+ *         "Manage invalid identifiers"
+ *         deadlist = []
+ *         for key in self._data:             # <<<<<<<<<<<<<<
+ *             val = self._data[key]
+ *             val = val()
+ */
+  if (PyList_CheckExact(__pyx_v_self->_data) || PyTuple_CheckExact(__pyx_v_self->_data)) {
+    __pyx_t_1 = __pyx_v_self->_data; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
+    __pyx_t_3 = NULL;
+  } else {
+    __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_self->_data); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 178; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_3 = Py_TYPE(__pyx_t_1)->tp_iternext;
+  }
+  for (;;) {
+    if (!__pyx_t_3 && PyList_CheckExact(__pyx_t_1)) {
+      if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break;
+      #if CYTHON_COMPILING_IN_CPYTHON
+      __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 178; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      #else
+      __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 178; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      #endif
+    } else if (!__pyx_t_3 && PyTuple_CheckExact(__pyx_t_1)) {
+      if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
+      #if CYTHON_COMPILING_IN_CPYTHON
+      __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 178; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      #else
+      __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 178; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      #endif
+    } else {
+      __pyx_t_4 = __pyx_t_3(__pyx_t_1);
+      if (unlikely(!__pyx_t_4)) {
+        if (PyErr_Occurred()) {
+          if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
+          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 178; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        }
+        break;
+      }
+      __Pyx_GOTREF(__pyx_t_4);
+    }
+    __Pyx_XDECREF(__pyx_v_key);
+    __pyx_v_key = __pyx_t_4;
+    __pyx_t_4 = 0;
+
+    /* "h5py/_objects.pyx":179
+ *         deadlist = []
+ *         for key in self._data:
+ *             val = self._data[key]             # <<<<<<<<<<<<<<
+ *             val = val()
+ *             if val is None:
+ */
+    __pyx_t_4 = PyObject_GetItem(__pyx_v_self->_data, __pyx_v_key); if (!__pyx_t_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 179; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_XDECREF(__pyx_v_val);
+    __pyx_v_val = __pyx_t_4;
+    __pyx_t_4 = 0;
+
+    /* "h5py/_objects.pyx":180
+ *         for key in self._data:
+ *             val = self._data[key]
+ *             val = val()             # <<<<<<<<<<<<<<
+ *             if val is None:
+ *                 deadlist.append(key)
+ */
+    __pyx_t_4 = PyObject_Call(__pyx_v_val, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 180; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_v_val);
+    __pyx_v_val = __pyx_t_4;
+    __pyx_t_4 = 0;
+
+    /* "h5py/_objects.pyx":181
+ *             val = self._data[key]
+ *             val = val()
+ *             if val is None:             # <<<<<<<<<<<<<<
+ *                 deadlist.append(key)
+ *                 continue
+ */
+    __pyx_t_5 = (__pyx_v_val == Py_None);
+    if (__pyx_t_5) {
+
+      /* "h5py/_objects.pyx":182
+ *             val = val()
+ *             if val is None:
+ *                 deadlist.append(key)             # <<<<<<<<<<<<<<
+ *                 continue
+ *             if not val.valid:
+ */
+      __pyx_t_6 = PyList_Append(__pyx_v_deadlist, __pyx_v_key); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+      /* "h5py/_objects.pyx":183
+ *             if val is None:
+ *                 deadlist.append(key)
+ *                 continue             # <<<<<<<<<<<<<<
+ *             if not val.valid:
+ *                 deadlist.append(key)
+ */
+      goto __pyx_L3_continue;
+      goto __pyx_L5;
+    }
+    __pyx_L5:;
+
+    /* "h5py/_objects.pyx":184
+ *                 deadlist.append(key)
+ *                 continue
+ *             if not val.valid:             # <<<<<<<<<<<<<<
+ *                 deadlist.append(key)
+ *         for key in deadlist:
+ */
+    __pyx_t_4 = PyObject_GetAttr(__pyx_v_val, __pyx_n_s__valid); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_t_7 = (!__pyx_t_5);
+    if (__pyx_t_7) {
+
+      /* "h5py/_objects.pyx":185
+ *                 continue
+ *             if not val.valid:
+ *                 deadlist.append(key)             # <<<<<<<<<<<<<<
+ *         for key in deadlist:
+ *             del self._data[key]
+ */
+      __pyx_t_6 = PyList_Append(__pyx_v_deadlist, __pyx_v_key); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 185; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      goto __pyx_L6;
+    }
+    __pyx_L6:;
+    __pyx_L3_continue:;
+  }
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "h5py/_objects.pyx":186
+ *             if not val.valid:
+ *                 deadlist.append(key)
+ *         for key in deadlist:             # <<<<<<<<<<<<<<
+ *             del self._data[key]
+ * 
+ */
+  __pyx_t_1 = ((PyObject *)__pyx_v_deadlist); __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
+  for (;;) {
+    if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break;
+    #if CYTHON_COMPILING_IN_CPYTHON
+    __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    #else
+    __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    #endif
+    __Pyx_XDECREF(__pyx_v_key);
+    __pyx_v_key = __pyx_t_4;
+    __pyx_t_4 = 0;
+
+    /* "h5py/_objects.pyx":187
+ *                 deadlist.append(key)
+ *         for key in deadlist:
+ *             del self._data[key]             # <<<<<<<<<<<<<<
+ * 
+ *     def __getitem__(self, key):
+ */
+    if (unlikely(!__pyx_v_key)) { __Pyx_RaiseUnboundLocalError("key"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 187; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
+    if (PyObject_DelItem(__pyx_v_self->_data, __pyx_v_key) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  }
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("h5py._objects._Registry.cleanup", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_deadlist);
+  __Pyx_XDECREF(__pyx_v_key);
+  __Pyx_XDECREF(__pyx_v_val);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_8_objects_9_Registry_5__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_key); /*proto*/
+static PyObject *__pyx_pw_4h5py_8_objects_9_Registry_5__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_key) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__getitem__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_8_objects_9_Registry_4__getitem__(((struct __pyx_obj_4h5py_8_objects__Registry *)__pyx_v_self), ((PyObject *)__pyx_v_key));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/_objects.pyx":189
+ *             del self._data[key]
+ * 
+ *     def __getitem__(self, key):             # <<<<<<<<<<<<<<
+ *         o = self._data[key]()
+ *         if o is None:
+ */
+
+static PyObject *__pyx_pf_4h5py_8_objects_9_Registry_4__getitem__(struct __pyx_obj_4h5py_8_objects__Registry *__pyx_v_self, PyObject *__pyx_v_key) {
+  PyObject *__pyx_v_o = NULL;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_t_3;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__getitem__", 0);
+
+  /* "h5py/_objects.pyx":190
+ * 
+ *     def __getitem__(self, key):
+ *         o = self._data[key]()             # <<<<<<<<<<<<<<
+ *         if o is None:
+ *             # This would occur if we had open objects and closed their
+ */
+  __pyx_t_1 = PyObject_GetItem(__pyx_v_self->_data, __pyx_v_key); if (!__pyx_t_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_v_o = __pyx_t_2;
+  __pyx_t_2 = 0;
+
+  /* "h5py/_objects.pyx":191
+ *     def __getitem__(self, key):
+ *         o = self._data[key]()
+ *         if o is None:             # <<<<<<<<<<<<<<
+ *             # This would occur if we had open objects and closed their
+ *             # file, causing the objects identifiers to be reclaimed.
+ */
+  __pyx_t_3 = (__pyx_v_o == Py_None);
+  if (__pyx_t_3) {
+
+    /* "h5py/_objects.pyx":197
+ *             # other identifier, for that matter), so in practice this
+ *             # condition never obtains.
+ *             del self._data[key]             # <<<<<<<<<<<<<<
+ *             # We need to raise a KeyError:
+ *             o = self._data[key]()
+ */
+    if (PyObject_DelItem(__pyx_v_self->_data, __pyx_v_key) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 197; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+    /* "h5py/_objects.pyx":199
+ *             del self._data[key]
+ *             # We need to raise a KeyError:
+ *             o = self._data[key]()             # <<<<<<<<<<<<<<
+ *         return o
+ * 
+ */
+    __pyx_t_2 = PyObject_GetItem(__pyx_v_self->_data, __pyx_v_key); if (!__pyx_t_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 199; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 199; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __Pyx_DECREF(__pyx_v_o);
+    __pyx_v_o = __pyx_t_1;
+    __pyx_t_1 = 0;
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  /* "h5py/_objects.pyx":200
+ *             # We need to raise a KeyError:
+ *             o = self._data[key]()
+ *         return o             # <<<<<<<<<<<<<<
+ * 
+ *     def __setitem__(self, key, val):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_o);
+  __pyx_r = __pyx_v_o;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py._objects._Registry.__getitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_o);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static int __pyx_pw_4h5py_8_objects_9_Registry_7__setitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_val); /*proto*/
+static int __pyx_pw_4h5py_8_objects_9_Registry_7__setitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_val) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__setitem__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_8_objects_9_Registry_6__setitem__(((struct __pyx_obj_4h5py_8_objects__Registry *)__pyx_v_self), ((PyObject *)__pyx_v_key), ((PyObject *)__pyx_v_val));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/_objects.pyx":202
+ *         return o
+ * 
+ *     def __setitem__(self, key, val):             # <<<<<<<<<<<<<<
+ *         # this method should only be called by ObjectID.open
+ *         self._data[key] = ref(val)
+ */
+
+static int __pyx_pf_4h5py_8_objects_9_Registry_6__setitem__(struct __pyx_obj_4h5py_8_objects__Registry *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_val) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__setitem__", 0);
+
+  /* "h5py/_objects.pyx":204
+ *     def __setitem__(self, key, val):
+ *         # this method should only be called by ObjectID.open
+ *         self._data[key] = ref(val)             # <<<<<<<<<<<<<<
+ * 
+ *     def __delitem__(self, key):
+ */
+  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__ref); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 204; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 204; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_INCREF(__pyx_v_val);
+  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_val);
+  __Pyx_GIVEREF(__pyx_v_val);
+  __pyx_t_3 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 204; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
+  if (PyObject_SetItem(__pyx_v_self->_data, __pyx_v_key, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 204; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("h5py._objects._Registry.__setitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static int __pyx_pw_4h5py_8_objects_9_Registry_9__delitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_key); /*proto*/
+static int __pyx_pw_4h5py_8_objects_9_Registry_9__delitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_key) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__delitem__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_8_objects_9_Registry_8__delitem__(((struct __pyx_obj_4h5py_8_objects__Registry *)__pyx_v_self), ((PyObject *)__pyx_v_key));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/_objects.pyx":206
+ *         self._data[key] = ref(val)
+ * 
+ *     def __delitem__(self, key):             # <<<<<<<<<<<<<<
+ *         # we need to synchronize removal of the id from the
+ *         # registry with decreasing the HDF5 reference count:
+ */
+
+static int __pyx_pf_4h5py_8_objects_9_Registry_8__delitem__(struct __pyx_obj_4h5py_8_objects__Registry *__pyx_v_self, PyObject *__pyx_v_key) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  hid_t __pyx_t_4;
+  H5I_type_t __pyx_t_5;
+  int __pyx_t_6;
+  int __pyx_t_7;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__delitem__", 0);
+
+  /* "h5py/_objects.pyx":209
+ *         # we need to synchronize removal of the id from the
+ *         # registry with decreasing the HDF5 reference count:
+ *         self._data.pop(key,None)             # <<<<<<<<<<<<<<
+ * 
+ *         if H5Iget_type(key) >= 0: # if not, object was explicitly closed
+ */
+  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self->_data, __pyx_n_s__pop); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_INCREF(__pyx_v_key);
+  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_key);
+  __Pyx_GIVEREF(__pyx_v_key);
+  __Pyx_INCREF(Py_None);
+  PyTuple_SET_ITEM(__pyx_t_2, 1, Py_None);
+  __Pyx_GIVEREF(Py_None);
+  __pyx_t_3 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+  /* "h5py/_objects.pyx":211
+ *         self._data.pop(key,None)
+ * 
+ *         if H5Iget_type(key) >= 0: # if not, object was explicitly closed             # <<<<<<<<<<<<<<
+ *             H5Idec_ref(key)
+ * 
+ */
+  __pyx_t_4 = __Pyx_PyInt_from_py_hid_t(__pyx_v_key); if (unlikely((__pyx_t_4 == (hid_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 211; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = __pyx_f_4h5py_4defs_H5Iget_type(__pyx_t_4); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 211; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = (__pyx_t_5 >= 0);
+  if (__pyx_t_6) {
+
+    /* "h5py/_objects.pyx":212
+ * 
+ *         if H5Iget_type(key) >= 0: # if not, object was explicitly closed
+ *             H5Idec_ref(key)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+    __pyx_t_4 = __Pyx_PyInt_from_py_hid_t(__pyx_v_key); if (unlikely((__pyx_t_4 == (hid_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = __pyx_f_4h5py_4defs_H5Idec_ref(__pyx_t_4); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("h5py._objects._Registry.__delitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_8_objects_9_Registry_4lock_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4h5py_8_objects_9_Registry_4lock_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_8_objects_9_Registry_4lock___get__(((struct __pyx_obj_4h5py_8_objects__Registry *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/_objects.pyx":167
+ * 
+ *     cdef object _data
+ *     cdef readonly FastRLock lock             # <<<<<<<<<<<<<<
+ * 
+ *     def __cinit__(self):
+ */
+
+static PyObject *__pyx_pf_4h5py_8_objects_9_Registry_4lock___get__(struct __pyx_obj_4h5py_8_objects__Registry *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(((PyObject *)__pyx_v_self->lock));
+  __pyx_r = ((PyObject *)__pyx_v_self->lock);
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_8_objects_8ObjectID_6fileno_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4h5py_8_objects_8ObjectID_6fileno_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_8_objects_8ObjectID_6fileno___get__(((struct __pyx_obj_4h5py_8_objects_ObjectID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/_objects.pyx":226
+ * 
+ *     property fileno:
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             cdef H5G_stat_t stat
+ *             H5Gget_objinfo(self.id, '.', 0, &stat)
+ */
+
+static PyObject *__pyx_pf_4h5py_8_objects_8ObjectID_6fileno___get__(struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_self) {
+  H5G_stat_t __pyx_v_stat;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "h5py/_objects.pyx":228
+ *         def __get__(self):
+ *             cdef H5G_stat_t stat
+ *             H5Gget_objinfo(self.id, '.', 0, &stat)             # <<<<<<<<<<<<<<
+ *             return (stat.fileno[0], stat.fileno[1])
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Gget_objinfo(__pyx_v_self->id, __pyx_k_4, 0, (&__pyx_v_stat)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 228; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/_objects.pyx":229
+ *             cdef H5G_stat_t stat
+ *             H5Gget_objinfo(self.id, '.', 0, &stat)
+ *             return (stat.fileno[0], stat.fileno[1])             # <<<<<<<<<<<<<<
+ * 
+ *     property valid:
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_2 = PyLong_FromUnsignedLong((__pyx_v_stat.fileno[0])); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 229; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = PyLong_FromUnsignedLong((__pyx_v_stat.fileno[1])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 229; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 229; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2);
+  __Pyx_GIVEREF(__pyx_t_2);
+  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_3);
+  __pyx_t_2 = 0;
+  __pyx_t_3 = 0;
+  __pyx_r = ((PyObject *)__pyx_t_4);
+  __pyx_t_4 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("h5py._objects.ObjectID.fileno.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_8_objects_8ObjectID_5valid_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4h5py_8_objects_8ObjectID_5valid_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_8_objects_8ObjectID_5valid___get__(((struct __pyx_obj_4h5py_8_objects_ObjectID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/_objects.pyx":232
+ * 
+ *     property valid:
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             if not self.id:
+ *                 return False
+ */
+
+static PyObject *__pyx_pf_4h5py_8_objects_8ObjectID_5valid___get__(struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_self) {
+  PyObject *__pyx_v_res = NULL;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  H5I_type_t __pyx_t_3;
+  int __pyx_t_4;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "h5py/_objects.pyx":233
+ *     property valid:
+ *         def __get__(self):
+ *             if not self.id:             # <<<<<<<<<<<<<<
+ *                 return False
+ *             res = H5Iget_type(self.id) > 0
+ */
+  __pyx_t_1 = (!__pyx_v_self->id);
+  if (__pyx_t_1) {
+
+    /* "h5py/_objects.pyx":234
+ *         def __get__(self):
+ *             if not self.id:
+ *                 return False             # <<<<<<<<<<<<<<
+ *             res = H5Iget_type(self.id) > 0
+ *             if not res:
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_2 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 234; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_r = __pyx_t_2;
+    __pyx_t_2 = 0;
+    goto __pyx_L0;
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  /* "h5py/_objects.pyx":235
+ *             if not self.id:
+ *                 return False
+ *             res = H5Iget_type(self.id) > 0             # <<<<<<<<<<<<<<
+ *             if not res:
+ *                 self.id = 0
+ */
+  __pyx_t_3 = __pyx_f_4h5py_4defs_H5Iget_type(__pyx_v_self->id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 235; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyBool_FromLong((__pyx_t_3 > 0)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 235; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_v_res = __pyx_t_2;
+  __pyx_t_2 = 0;
+
+  /* "h5py/_objects.pyx":236
+ *                 return False
+ *             res = H5Iget_type(self.id) > 0
+ *             if not res:             # <<<<<<<<<<<<<<
+ *                 self.id = 0
+ *             return res
+ */
+  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_res); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 236; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = (!__pyx_t_1);
+  if (__pyx_t_4) {
+
+    /* "h5py/_objects.pyx":237
+ *             res = H5Iget_type(self.id) > 0
+ *             if not res:
+ *                 self.id = 0             # <<<<<<<<<<<<<<
+ *             return res
+ * 
+ */
+    __pyx_v_self->id = 0;
+    goto __pyx_L4;
+  }
+  __pyx_L4:;
+
+  /* "h5py/_objects.pyx":238
+ *             if not res:
+ *                 self.id = 0
+ *             return res             # <<<<<<<<<<<<<<
+ * 
+ *     def __cinit__(self, id):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_res);
+  __pyx_r = __pyx_v_res;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py._objects.ObjectID.valid.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_res);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static int __pyx_pw_4h5py_8_objects_8ObjectID_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_4h5py_8_objects_8ObjectID_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_id = 0;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__id,0};
+    PyObject* values[1] = {0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__id)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 240; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+    }
+    __pyx_v_id = values[0];
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 240; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py._objects.ObjectID.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return -1;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_8_objects_8ObjectID___cinit__(((struct __pyx_obj_4h5py_8_objects_ObjectID *)__pyx_v_self), __pyx_v_id);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/_objects.pyx":240
+ *             return res
+ * 
+ *     def __cinit__(self, id):             # <<<<<<<<<<<<<<
+ *         self.id = id
+ *         self.locked = 0
+ */
+
+static int __pyx_pf_4h5py_8_objects_8ObjectID___cinit__(struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_self, PyObject *__pyx_v_id) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  hid_t __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  PyObject *__pyx_t_8 = NULL;
+  PyObject *__pyx_t_9 = NULL;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  int __pyx_t_12;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__cinit__", 0);
+
+  /* "h5py/_objects.pyx":241
+ * 
+ *     def __cinit__(self, id):
+ *         self.id = id             # <<<<<<<<<<<<<<
+ *         self.locked = 0
+ *         with registry.lock:
+ */
+  __pyx_t_1 = __Pyx_PyInt_from_py_hid_t(__pyx_v_id); if (unlikely((__pyx_t_1 == (hid_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 241; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v_self->id = __pyx_t_1;
+
+  /* "h5py/_objects.pyx":242
+ *     def __cinit__(self, id):
+ *         self.id = id
+ *         self.locked = 0             # <<<<<<<<<<<<<<
+ *         with registry.lock:
+ *             registry[id] = self
+ */
+  __pyx_v_self->locked = 0;
+
+  /* "h5py/_objects.pyx":243
+ *         self.id = id
+ *         self.locked = 0
+ *         with registry.lock:             # <<<<<<<<<<<<<<
+ *             registry[id] = self
+ * 
+ */
+  /*with:*/ {
+    __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__registry); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__lock); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __pyx_t_4 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s____exit__); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s____enter__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_5 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_8);
+        /*try:*/ {
+
+          /* "h5py/_objects.pyx":244
+ *         self.locked = 0
+ *         with registry.lock:
+ *             registry[id] = self             # <<<<<<<<<<<<<<
+ * 
+ *     def __dealloc__(self):
+ */
+          __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__registry); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 244; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __Pyx_GOTREF(__pyx_t_3);
+          if (PyObject_SetItem(__pyx_t_3, __pyx_v_id, ((PyObject *)__pyx_v_self)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 244; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+        }
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+        /* "h5py/_objects.pyx":243
+ *         self.id = id
+ *         self.locked = 0
+ *         with registry.lock:             # <<<<<<<<<<<<<<
+ *             registry[id] = self
+ * 
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py._objects.ObjectID.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_5, &__pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_3);
+          __Pyx_GOTREF(__pyx_t_5);
+          __Pyx_GOTREF(__pyx_t_2);
+          __pyx_t_9 = PyTuple_New(3); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_9);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __Pyx_INCREF(__pyx_t_5);
+          PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_5);
+          __Pyx_GIVEREF(__pyx_t_5);
+          __Pyx_INCREF(__pyx_t_2);
+          PyTuple_SET_ITEM(__pyx_t_9, 2, __pyx_t_2);
+          __Pyx_GIVEREF(__pyx_t_2);
+          __pyx_t_11 = PyObject_Call(__pyx_t_4, __pyx_t_9, NULL);
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_11);
+          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+          if (unlikely(__pyx_t_10 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_12 = (!__pyx_t_10);
+          if (__pyx_t_12) {
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_GIVEREF(__pyx_t_5);
+            __Pyx_GIVEREF(__pyx_t_2);
+            __Pyx_ErrRestore(__pyx_t_3, __pyx_t_5, __pyx_t_2);
+            __pyx_t_3 = 0; __pyx_t_5 = 0; __pyx_t_2 = 0; 
+            {__pyx_filename = __pyx_f[0]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L17;
+          }
+          __pyx_L17:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_9)); __pyx_t_9 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_XGIVEREF(__pyx_t_8);
+        __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_XGIVEREF(__pyx_t_8);
+        __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      if (__pyx_t_4) {
+        __pyx_t_8 = PyObject_Call(__pyx_t_4, __pyx_k_tuple_5, NULL);
+        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+        if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_8);
+        __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_8);
+        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+        if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+    }
+    goto __pyx_L18;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    goto __pyx_L1_error;
+    __pyx_L18:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_9);
+  __Pyx_AddTraceback("h5py._objects.ObjectID.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static void __pyx_pw_4h5py_8_objects_8ObjectID_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
+static void __pyx_pw_4h5py_8_objects_8ObjectID_3__dealloc__(PyObject *__pyx_v_self) {
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
+  __pyx_pf_4h5py_8_objects_8ObjectID_2__dealloc__(((struct __pyx_obj_4h5py_8_objects_ObjectID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+}
+
+/* "h5py/_objects.pyx":246
+ *             registry[id] = self
+ * 
+ *     def __dealloc__(self):             # <<<<<<<<<<<<<<
+ *         if not self.locked:
+ *             try:
+ */
+
+static void __pyx_pf_4h5py_8_objects_8ObjectID_2__dealloc__(struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_self) {
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  PyObject *__pyx_t_8 = NULL;
+  PyObject *__pyx_t_9 = NULL;
+  PyObject *__pyx_t_10 = NULL;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  PyObject *__pyx_t_13 = NULL;
+  int __pyx_t_14;
+  int __pyx_t_15;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__dealloc__", 0);
+
+  /* "h5py/_objects.pyx":247
+ * 
+ *     def __dealloc__(self):
+ *         if not self.locked:             # <<<<<<<<<<<<<<
+ *             try:
+ *                 with registry.lock:
+ */
+  __pyx_t_1 = (!__pyx_v_self->locked);
+  if (__pyx_t_1) {
+
+    /* "h5py/_objects.pyx":248
+ *     def __dealloc__(self):
+ *         if not self.locked:
+ *             try:             # <<<<<<<<<<<<<<
+ *                 with registry.lock:
+ *                     del registry[self.id]
+ */
+    {
+      __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4);
+      __Pyx_XGOTREF(__pyx_t_2);
+      __Pyx_XGOTREF(__pyx_t_3);
+      __Pyx_XGOTREF(__pyx_t_4);
+      /*try:*/ {
+
+        /* "h5py/_objects.pyx":249
+ *         if not self.locked:
+ *             try:
+ *                 with registry.lock:             # <<<<<<<<<<<<<<
+ *                     del registry[self.id]
+ *             except AttributeError:
+ */
+        /*with:*/ {
+          __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__registry); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+          __Pyx_GOTREF(__pyx_t_5);
+          __pyx_t_6 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__lock); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+          __Pyx_GOTREF(__pyx_t_6);
+          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+          __pyx_t_7 = PyObject_GetAttr(__pyx_t_6, __pyx_n_s____exit__); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+          __Pyx_GOTREF(__pyx_t_7);
+          __pyx_t_5 = PyObject_GetAttr(__pyx_t_6, __pyx_n_s____enter__); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L12_error;}
+          __Pyx_GOTREF(__pyx_t_5);
+          __pyx_t_8 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L12_error;}
+          __Pyx_GOTREF(__pyx_t_8);
+          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+          /*try:*/ {
+            {
+              __Pyx_ExceptionSave(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
+              __Pyx_XGOTREF(__pyx_t_9);
+              __Pyx_XGOTREF(__pyx_t_10);
+              __Pyx_XGOTREF(__pyx_t_11);
+              /*try:*/ {
+
+                /* "h5py/_objects.pyx":250
+ *             try:
+ *                 with registry.lock:
+ *                     del registry[self.id]             # <<<<<<<<<<<<<<
+ *             except AttributeError:
+ *                 # library being torn down, registry is None
+ */
+                __pyx_t_6 = __Pyx_GetName(__pyx_m, __pyx_n_s__registry); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 250; __pyx_clineno = __LINE__; goto __pyx_L18_error;}
+                __Pyx_GOTREF(__pyx_t_6);
+                if (__Pyx_DelItemInt(__pyx_t_6, __pyx_v_self->id, sizeof(hid_t), __Pyx_PyInt_to_py_hid_t) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 250; __pyx_clineno = __LINE__; goto __pyx_L18_error;}
+                __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+              }
+              __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+              __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+              __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
+              goto __pyx_L25_try_end;
+              __pyx_L18_error:;
+              __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+              __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+              __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+
+              /* "h5py/_objects.pyx":249
+ *         if not self.locked:
+ *             try:
+ *                 with registry.lock:             # <<<<<<<<<<<<<<
+ *                     del registry[self.id]
+ *             except AttributeError:
+ */
+              /*except:*/ {
+                __Pyx_AddTraceback("h5py._objects.ObjectID.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+                if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_8, &__pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L20_except_error;}
+                __Pyx_GOTREF(__pyx_t_6);
+                __Pyx_GOTREF(__pyx_t_8);
+                __Pyx_GOTREF(__pyx_t_5);
+                __pyx_t_12 = PyTuple_New(3); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L20_except_error;}
+                __Pyx_GOTREF(__pyx_t_12);
+                __Pyx_INCREF(__pyx_t_6);
+                PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_6);
+                __Pyx_GIVEREF(__pyx_t_6);
+                __Pyx_INCREF(__pyx_t_8);
+                PyTuple_SET_ITEM(__pyx_t_12, 1, __pyx_t_8);
+                __Pyx_GIVEREF(__pyx_t_8);
+                __Pyx_INCREF(__pyx_t_5);
+                PyTuple_SET_ITEM(__pyx_t_12, 2, __pyx_t_5);
+                __Pyx_GIVEREF(__pyx_t_5);
+                __pyx_t_13 = PyObject_Call(__pyx_t_7, __pyx_t_12, NULL);
+                __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+                if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L20_except_error;}
+                __Pyx_GOTREF(__pyx_t_13);
+                __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_13);
+                __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+                if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L20_except_error;}
+                __pyx_t_14 = (!__pyx_t_1);
+                if (__pyx_t_14) {
+                  __Pyx_GIVEREF(__pyx_t_6);
+                  __Pyx_GIVEREF(__pyx_t_8);
+                  __Pyx_GIVEREF(__pyx_t_5);
+                  __Pyx_ErrRestore(__pyx_t_6, __pyx_t_8, __pyx_t_5);
+                  __pyx_t_6 = 0; __pyx_t_8 = 0; __pyx_t_5 = 0; 
+                  {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L20_except_error;}
+                  goto __pyx_L28;
+                }
+                __pyx_L28:;
+                __Pyx_DECREF(((PyObject *)__pyx_t_12)); __pyx_t_12 = 0;
+                __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+                __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+                __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+                goto __pyx_L19_exception_handled;
+              }
+              __pyx_L20_except_error:;
+              __Pyx_XGIVEREF(__pyx_t_9);
+              __Pyx_XGIVEREF(__pyx_t_10);
+              __Pyx_XGIVEREF(__pyx_t_11);
+              __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
+              goto __pyx_L4_error;
+              __pyx_L19_exception_handled:;
+              __Pyx_XGIVEREF(__pyx_t_9);
+              __Pyx_XGIVEREF(__pyx_t_10);
+              __Pyx_XGIVEREF(__pyx_t_11);
+              __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
+              __pyx_L25_try_end:;
+            }
+          }
+          /*finally:*/ {
+            if (__pyx_t_7) {
+              __pyx_t_11 = PyObject_Call(__pyx_t_7, __pyx_k_tuple_6, NULL);
+              __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+              if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+              __Pyx_GOTREF(__pyx_t_11);
+              __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_11);
+              __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+              if (unlikely(__pyx_t_14 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+            }
+          }
+          goto __pyx_L29;
+          __pyx_L12_error:;
+          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+          goto __pyx_L4_error;
+          __pyx_L29:;
+        }
+      }
+      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+      goto __pyx_L11_try_end;
+      __pyx_L4_error:;
+      __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
+      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+      /* "h5py/_objects.pyx":251
+ *                 with registry.lock:
+ *                     del registry[self.id]
+ *             except AttributeError:             # <<<<<<<<<<<<<<
+ *                 # library being torn down, registry is None
+ *                 pass
+ */
+      __pyx_t_15 = PyErr_ExceptionMatches(__pyx_builtin_AttributeError);
+      if (__pyx_t_15) {
+        PyErr_Restore(0,0,0);
+        goto __pyx_L5_exception_handled;
+      }
+      __Pyx_XGIVEREF(__pyx_t_2);
+      __Pyx_XGIVEREF(__pyx_t_3);
+      __Pyx_XGIVEREF(__pyx_t_4);
+      __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
+      goto __pyx_L1_error;
+      __pyx_L5_exception_handled:;
+      __Pyx_XGIVEREF(__pyx_t_2);
+      __Pyx_XGIVEREF(__pyx_t_3);
+      __Pyx_XGIVEREF(__pyx_t_4);
+      __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
+      __pyx_L11_try_end:;
+    }
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_XDECREF(__pyx_t_8);
+  __Pyx_XDECREF(__pyx_t_12);
+  __Pyx_AddTraceback("h5py._objects.ObjectID.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+}
+
+/* Python wrapper */
+static int __pyx_pw_4h5py_8_objects_8ObjectID_5__nonzero__(PyObject *__pyx_v_self); /*proto*/
+static int __pyx_pw_4h5py_8_objects_8ObjectID_5__nonzero__(PyObject *__pyx_v_self) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__nonzero__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_8_objects_8ObjectID_4__nonzero__(((struct __pyx_obj_4h5py_8_objects_ObjectID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/_objects.pyx":255
+ *                 pass
+ * 
+ *     def __nonzero__(self):             # <<<<<<<<<<<<<<
+ *         return self.valid
+ * 
+ */
+
+static int __pyx_pf_4h5py_8_objects_8ObjectID_4__nonzero__(struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_self) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_t_2;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__nonzero__", 0);
+
+  /* "h5py/_objects.pyx":256
+ * 
+ *     def __nonzero__(self):
+ *         return self.valid             # <<<<<<<<<<<<<<
+ * 
+ *     def __copy__(self):
+ */
+  __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__valid); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 256; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyInt_AsInt(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 256; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_r = __pyx_t_2;
+  goto __pyx_L0;
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py._objects.ObjectID.__nonzero__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_8_objects_8ObjectID_7__copy__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static PyObject *__pyx_pw_4h5py_8_objects_8ObjectID_7__copy__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__copy__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_8_objects_8ObjectID_6__copy__(((struct __pyx_obj_4h5py_8_objects_ObjectID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/_objects.pyx":258
+ *         return self.valid
+ * 
+ *     def __copy__(self):             # <<<<<<<<<<<<<<
+ *         cdef ObjectID cpy
+ *         cpy = type(self)(self.id)
+ */
+
+static PyObject *__pyx_pf_4h5py_8_objects_8ObjectID_6__copy__(struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_self) {
+  struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_cpy = 0;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__copy__", 0);
+
+  /* "h5py/_objects.pyx":260
+ *     def __copy__(self):
+ *         cdef ObjectID cpy
+ *         cpy = type(self)(self.id)             # <<<<<<<<<<<<<<
+ *         return cpy
+ * 
+ */
+  __pyx_t_1 = __Pyx_PyInt_to_py_hid_t(__pyx_v_self->id); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 260; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 260; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = PyObject_Call(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))), ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 260; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
+  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_4h5py_8_objects_ObjectID))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 260; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v_cpy = ((struct __pyx_obj_4h5py_8_objects_ObjectID *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "h5py/_objects.pyx":261
+ *         cdef ObjectID cpy
+ *         cpy = type(self)(self.id)
+ *         return cpy             # <<<<<<<<<<<<<<
+ * 
+ *     def __richcmp__(self, object other, int how):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(((PyObject *)__pyx_v_cpy));
+  __pyx_r = ((PyObject *)__pyx_v_cpy);
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py._objects.ObjectID.__copy__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_cpy);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_8_objects_8ObjectID_9__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_how); /*proto*/
+static PyObject *__pyx_pw_4h5py_8_objects_8ObjectID_9__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_how) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__richcmp__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_8_objects_8ObjectID_8__richcmp__(((PyObject *)__pyx_v_self), ((PyObject *)__pyx_v_other), ((int)__pyx_v_how));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/_objects.pyx":263
+ *         return cpy
+ * 
+ *     def __richcmp__(self, object other, int how):             # <<<<<<<<<<<<<<
+ *         """ Default comparison mechanism for HDF5 objects (equal/not-equal)
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_8_objects_8ObjectID_8__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_how) {
+  int __pyx_v_equal;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  Py_hash_t __pyx_t_8;
+  Py_hash_t __pyx_t_9;
+  int __pyx_t_10;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__richcmp__", 0);
+
+  /* "h5py/_objects.pyx":271
+ *         3. Objects which hash the same are equal
+ *         """
+ *         cdef bint equal = 0             # <<<<<<<<<<<<<<
+ * 
+ *         if how != 2 and how != 3:
+ */
+  __pyx_v_equal = 0;
+
+  /* "h5py/_objects.pyx":273
+ *         cdef bint equal = 0
+ * 
+ *         if how != 2 and how != 3:             # <<<<<<<<<<<<<<
+ *             return NotImplemented
+ * 
+ */
+  switch (__pyx_v_how) {
+    case 2:
+    case 3:
+    __pyx_t_1 = 0;
+    break;
+    default:
+    __pyx_t_1 = 1;
+    break;
+  }
+  if (__pyx_t_1) {
+
+    /* "h5py/_objects.pyx":274
+ * 
+ *         if how != 2 and how != 3:
+ *             return NotImplemented             # <<<<<<<<<<<<<<
+ * 
+ *         if isinstance(other, ObjectID):
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __Pyx_INCREF(__pyx_builtin_NotImplemented);
+    __pyx_r = __pyx_builtin_NotImplemented;
+    goto __pyx_L0;
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  /* "h5py/_objects.pyx":276
+ *             return NotImplemented
+ * 
+ *         if isinstance(other, ObjectID):             # <<<<<<<<<<<<<<
+ *             if self.id == other.id:
+ *                 equal = 1
+ */
+  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_other, ((PyObject*)__pyx_ptype_4h5py_8_objects_ObjectID)); 
+  if (__pyx_t_1) {
+
+    /* "h5py/_objects.pyx":277
+ * 
+ *         if isinstance(other, ObjectID):
+ *             if self.id == other.id:             # <<<<<<<<<<<<<<
+ *                 equal = 1
+ *             else:
+ */
+    __pyx_t_2 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__id); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 277; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_v_other, __pyx_n_s__id); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 277; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_RichCompare(__pyx_t_2, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 277; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 277; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    if (__pyx_t_1) {
+
+      /* "h5py/_objects.pyx":278
+ *         if isinstance(other, ObjectID):
+ *             if self.id == other.id:
+ *                 equal = 1             # <<<<<<<<<<<<<<
+ *             else:
+ *                 try:
+ */
+      __pyx_v_equal = 1;
+      goto __pyx_L5;
+    }
+    /*else*/ {
+
+      /* "h5py/_objects.pyx":280
+ *                 equal = 1
+ *             else:
+ *                 try:             # <<<<<<<<<<<<<<
+ *                     equal = hash(self) == hash(other)
+ *                 except TypeError:
+ */
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/_objects.pyx":281
+ *             else:
+ *                 try:
+ *                     equal = hash(self) == hash(other)             # <<<<<<<<<<<<<<
+ *                 except TypeError:
+ *                     pass
+ */
+          __pyx_t_8 = PyObject_Hash(__pyx_v_self); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 281; __pyx_clineno = __LINE__; goto __pyx_L6_error;}
+          __pyx_t_9 = PyObject_Hash(__pyx_v_other); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 281; __pyx_clineno = __LINE__; goto __pyx_L6_error;}
+          __pyx_v_equal = (__pyx_t_8 == __pyx_t_9);
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L13_try_end;
+        __pyx_L6_error:;
+        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+        /* "h5py/_objects.pyx":282
+ *                 try:
+ *                     equal = hash(self) == hash(other)
+ *                 except TypeError:             # <<<<<<<<<<<<<<
+ *                     pass
+ * 
+ */
+        __pyx_t_10 = PyErr_ExceptionMatches(__pyx_builtin_TypeError);
+        if (__pyx_t_10) {
+          PyErr_Restore(0,0,0);
+          goto __pyx_L7_exception_handled;
+        }
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L7_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L13_try_end:;
+      }
+    }
+    __pyx_L5:;
+    goto __pyx_L4;
+  }
+  __pyx_L4:;
+
+  /* "h5py/_objects.pyx":285
+ *                     pass
+ * 
+ *         if how == 2:             # <<<<<<<<<<<<<<
+ *             return equal
+ *         return not equal
+ */
+  __pyx_t_1 = (__pyx_v_how == 2);
+  if (__pyx_t_1) {
+
+    /* "h5py/_objects.pyx":286
+ * 
+ *         if how == 2:
+ *             return equal             # <<<<<<<<<<<<<<
+ *         return not equal
+ * 
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_v_equal); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 286; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_r = __pyx_t_4;
+    __pyx_t_4 = 0;
+    goto __pyx_L0;
+    goto __pyx_L14;
+  }
+  __pyx_L14:;
+
+  /* "h5py/_objects.pyx":287
+ *         if how == 2:
+ *             return equal
+ *         return not equal             # <<<<<<<<<<<<<<
+ * 
+ *     def __hash__(self):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_4 = __Pyx_PyBool_FromLong((!__pyx_v_equal)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 287; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_r = __pyx_t_4;
+  __pyx_t_4 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("h5py._objects.ObjectID.__richcmp__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static Py_hash_t __pyx_pw_4h5py_8_objects_8ObjectID_11__hash__(PyObject *__pyx_v_self); /*proto*/
+static char __pyx_doc_4h5py_8_objects_8ObjectID_10__hash__[] = " Default hashing mechanism for HDF5 objects\n\n        Default hashing strategy:\n        1. Try to hash based on the object's fileno and objno records\n        2. If (1) succeeds, cache the resulting value\n        3. If (1) fails, raise TypeError\n        ";
+#if CYTHON_COMPILING_IN_CPYTHON
+struct wrapperbase __pyx_wrapperbase_4h5py_8_objects_8ObjectID_10__hash__;
+#endif
+static Py_hash_t __pyx_pw_4h5py_8_objects_8ObjectID_11__hash__(PyObject *__pyx_v_self) {
+  Py_hash_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__hash__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_8_objects_8ObjectID_10__hash__(((struct __pyx_obj_4h5py_8_objects_ObjectID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/_objects.pyx":289
+ *         return not equal
+ * 
+ *     def __hash__(self):             # <<<<<<<<<<<<<<
+ *         """ Default hashing mechanism for HDF5 objects
+ * 
+ */
+
+static Py_hash_t __pyx_pf_4h5py_8_objects_8ObjectID_10__hash__(struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_self) {
+  H5G_stat_t __pyx_v_stat;
+  Py_hash_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  herr_t __pyx_t_5;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  PyObject *__pyx_t_8 = NULL;
+  PyObject *__pyx_t_9 = NULL;
+  PyObject *__pyx_t_10 = NULL;
+  Py_hash_t __pyx_t_11;
+  int __pyx_t_12;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__hash__", 0);
+
+  /* "h5py/_objects.pyx":299
+ *         cdef H5G_stat_t stat
+ * 
+ *         if self._hash is None:             # <<<<<<<<<<<<<<
+ *             try:
+ *                 H5Gget_objinfo(self.id, '.', 0, &stat)
+ */
+  __pyx_t_1 = (__pyx_v_self->_hash == Py_None);
+  if (__pyx_t_1) {
+
+    /* "h5py/_objects.pyx":300
+ * 
+ *         if self._hash is None:
+ *             try:             # <<<<<<<<<<<<<<
+ *                 H5Gget_objinfo(self.id, '.', 0, &stat)
+ *                 self._hash = hash((stat.fileno[0], stat.fileno[1], stat.objno[0], stat.objno[1]))
+ */
+    {
+      __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4);
+      __Pyx_XGOTREF(__pyx_t_2);
+      __Pyx_XGOTREF(__pyx_t_3);
+      __Pyx_XGOTREF(__pyx_t_4);
+      /*try:*/ {
+
+        /* "h5py/_objects.pyx":301
+ *         if self._hash is None:
+ *             try:
+ *                 H5Gget_objinfo(self.id, '.', 0, &stat)             # <<<<<<<<<<<<<<
+ *                 self._hash = hash((stat.fileno[0], stat.fileno[1], stat.objno[0], stat.objno[1]))
+ *             except Exception:
+ */
+        __pyx_t_5 = __pyx_f_4h5py_4defs_H5Gget_objinfo(__pyx_v_self->id, __pyx_k_4, 0, (&__pyx_v_stat)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 301; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+
+        /* "h5py/_objects.pyx":302
+ *             try:
+ *                 H5Gget_objinfo(self.id, '.', 0, &stat)
+ *                 self._hash = hash((stat.fileno[0], stat.fileno[1], stat.objno[0], stat.objno[1]))             # <<<<<<<<<<<<<<
+ *             except Exception:
+ *                 raise TypeError("Objects of class %s cannot be hashed" % self.__class__.__name__)
+ */
+        __pyx_t_6 = PyLong_FromUnsignedLong((__pyx_v_stat.fileno[0])); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 302; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+        __Pyx_GOTREF(__pyx_t_6);
+        __pyx_t_7 = PyLong_FromUnsignedLong((__pyx_v_stat.fileno[1])); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 302; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_8 = PyLong_FromUnsignedLong((__pyx_v_stat.objno[0])); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 302; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+        __Pyx_GOTREF(__pyx_t_8);
+        __pyx_t_9 = PyLong_FromUnsignedLong((__pyx_v_stat.objno[1])); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 302; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+        __Pyx_GOTREF(__pyx_t_9);
+        __pyx_t_10 = PyTuple_New(4); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 302; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+        __Pyx_GOTREF(__pyx_t_10);
+        PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_6);
+        __Pyx_GIVEREF(__pyx_t_6);
+        PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_7);
+        __Pyx_GIVEREF(__pyx_t_7);
+        PyTuple_SET_ITEM(__pyx_t_10, 2, __pyx_t_8);
+        __Pyx_GIVEREF(__pyx_t_8);
+        PyTuple_SET_ITEM(__pyx_t_10, 3, __pyx_t_9);
+        __Pyx_GIVEREF(__pyx_t_9);
+        __pyx_t_6 = 0;
+        __pyx_t_7 = 0;
+        __pyx_t_8 = 0;
+        __pyx_t_9 = 0;
+        __pyx_t_11 = PyObject_Hash(((PyObject *)__pyx_t_10)); if (unlikely(__pyx_t_11 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 302; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+        __Pyx_DECREF(((PyObject *)__pyx_t_10)); __pyx_t_10 = 0;
+        __pyx_t_10 = __Pyx_PyInt_FromHash_t(__pyx_t_11); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 302; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+        __Pyx_GOTREF(__pyx_t_10);
+        __Pyx_GIVEREF(__pyx_t_10);
+        __Pyx_GOTREF(__pyx_v_self->_hash);
+        __Pyx_DECREF(__pyx_v_self->_hash);
+        __pyx_v_self->_hash = __pyx_t_10;
+        __pyx_t_10 = 0;
+      }
+      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+      goto __pyx_L11_try_end;
+      __pyx_L4_error:;
+      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+
+      /* "h5py/_objects.pyx":303
+ *                 H5Gget_objinfo(self.id, '.', 0, &stat)
+ *                 self._hash = hash((stat.fileno[0], stat.fileno[1], stat.objno[0], stat.objno[1]))
+ *             except Exception:             # <<<<<<<<<<<<<<
+ *                 raise TypeError("Objects of class %s cannot be hashed" % self.__class__.__name__)
+ * 
+ */
+      __pyx_t_12 = PyErr_ExceptionMatches(__pyx_builtin_Exception);
+      if (__pyx_t_12) {
+        __Pyx_AddTraceback("h5py._objects.ObjectID.__hash__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+        if (__Pyx_GetException(&__pyx_t_10, &__pyx_t_9, &__pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 303; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
+        __Pyx_GOTREF(__pyx_t_10);
+        __Pyx_GOTREF(__pyx_t_9);
+        __Pyx_GOTREF(__pyx_t_8);
+
+        /* "h5py/_objects.pyx":304
+ *                 self._hash = hash((stat.fileno[0], stat.fileno[1], stat.objno[0], stat.objno[1]))
+ *             except Exception:
+ *                 raise TypeError("Objects of class %s cannot be hashed" % self.__class__.__name__)             # <<<<<<<<<<<<<<
+ * 
+ *         return self._hash
+ */
+        __pyx_t_7 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s____class__); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 304; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_6 = PyObject_GetAttr(__pyx_t_7, __pyx_n_s____name__); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 304; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
+        __Pyx_GOTREF(__pyx_t_6);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        __pyx_t_7 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_7), __pyx_t_6); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 304; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
+        __Pyx_GOTREF(((PyObject *)__pyx_t_7));
+        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 304; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
+        __Pyx_GOTREF(__pyx_t_6);
+        PyTuple_SET_ITEM(__pyx_t_6, 0, ((PyObject *)__pyx_t_7));
+        __Pyx_GIVEREF(((PyObject *)__pyx_t_7));
+        __pyx_t_7 = 0;
+        __pyx_t_7 = PyObject_Call(__pyx_builtin_TypeError, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 304; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
+        __Pyx_Raise(__pyx_t_7, 0, 0, 0);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 304; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
+        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+        goto __pyx_L5_exception_handled;
+      }
+      __pyx_L6_except_error:;
+      __Pyx_XGIVEREF(__pyx_t_2);
+      __Pyx_XGIVEREF(__pyx_t_3);
+      __Pyx_XGIVEREF(__pyx_t_4);
+      __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
+      goto __pyx_L1_error;
+      __pyx_L5_exception_handled:;
+      __Pyx_XGIVEREF(__pyx_t_2);
+      __Pyx_XGIVEREF(__pyx_t_3);
+      __Pyx_XGIVEREF(__pyx_t_4);
+      __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
+      __pyx_L11_try_end:;
+    }
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  /* "h5py/_objects.pyx":306
+ *                 raise TypeError("Objects of class %s cannot be hashed" % self.__class__.__name__)
+ * 
+ *         return self._hash             # <<<<<<<<<<<<<<
+ * 
+ *     @classmethod
+ */
+  __pyx_t_11 = __Pyx_PyInt_AsHash_t(__pyx_v_self->_hash); if (unlikely((__pyx_t_11 == (Py_hash_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 306; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_t_11;
+  goto __pyx_L0;
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_XDECREF(__pyx_t_8);
+  __Pyx_XDECREF(__pyx_t_9);
+  __Pyx_XDECREF(__pyx_t_10);
+  __Pyx_AddTraceback("h5py._objects.ObjectID.__hash__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  if (unlikely(__pyx_r == -1) && !PyErr_Occurred()) __pyx_r = -2;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_8_objects_8ObjectID_13open(PyObject *__pyx_v_cls, PyObject *__pyx_v_id); /*proto*/
+static char __pyx_doc_4h5py_8_objects_8ObjectID_12open[] = " Return a representation of an HDF5 identifier ";
+static PyObject *__pyx_pw_4h5py_8_objects_8ObjectID_13open(PyObject *__pyx_v_cls, PyObject *__pyx_v_id) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("open (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_8_objects_8ObjectID_12open(((PyObject*)__pyx_v_cls), ((PyObject *)__pyx_v_id));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/_objects.pyx":309
+ * 
+ *     @classmethod
+ *     def open(cls, id):             # <<<<<<<<<<<<<<
+ *         """ Return a representation of an HDF5 identifier """
+ *         with registry.lock:
+ */
+
+static PyObject *__pyx_pf_4h5py_8_objects_8ObjectID_12open(PyObject *__pyx_v_cls, PyObject *__pyx_v_id) {
+  PyObject *__pyx_v_res = NULL;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  PyObject *__pyx_t_8 = NULL;
+  PyObject *__pyx_t_9 = NULL;
+  PyObject *__pyx_t_10 = NULL;
+  int __pyx_t_11;
+  PyObject *__pyx_t_12 = NULL;
+  PyObject *__pyx_t_13 = NULL;
+  int __pyx_t_14;
+  int __pyx_t_15;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("open", 0);
+
+  /* "h5py/_objects.pyx":311
+ *     def open(cls, id):
+ *         """ Return a representation of an HDF5 identifier """
+ *         with registry.lock:             # <<<<<<<<<<<<<<
+ *             try:
+ *                 res = registry[id]
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__registry); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 311; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__lock); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 311; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s____exit__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 311; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_1 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s____enter__); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 311; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_4 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 311; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/_objects.pyx":312
+ *         """ Return a representation of an HDF5 identifier """
+ *         with registry.lock:
+ *             try:             # <<<<<<<<<<<<<<
+ *                 res = registry[id]
+ *             except KeyError:
+ */
+          {
+            __Pyx_ExceptionSave(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
+            __Pyx_XGOTREF(__pyx_t_8);
+            __Pyx_XGOTREF(__pyx_t_9);
+            __Pyx_XGOTREF(__pyx_t_10);
+            /*try:*/ {
+
+              /* "h5py/_objects.pyx":313
+ *         with registry.lock:
+ *             try:
+ *                 res = registry[id]             # <<<<<<<<<<<<<<
+ *             except KeyError:
+ *                 res = cls(id)
+ */
+              __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__registry); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 313; __pyx_clineno = __LINE__; goto __pyx_L15_error;}
+              __Pyx_GOTREF(__pyx_t_2);
+              __pyx_t_4 = PyObject_GetItem(__pyx_t_2, __pyx_v_id); if (!__pyx_t_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 313; __pyx_clineno = __LINE__; goto __pyx_L15_error;}
+              __Pyx_GOTREF(__pyx_t_4);
+              __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+              __pyx_v_res = __pyx_t_4;
+              __pyx_t_4 = 0;
+            }
+            __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+            __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+            __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+            goto __pyx_L22_try_end;
+            __pyx_L15_error:;
+            __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+            __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+            __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+            /* "h5py/_objects.pyx":314
+ *             try:
+ *                 res = registry[id]
+ *             except KeyError:             # <<<<<<<<<<<<<<
+ *                 res = cls(id)
+ *             return res
+ */
+            __pyx_t_11 = PyErr_ExceptionMatches(__pyx_builtin_KeyError);
+            if (__pyx_t_11) {
+              __Pyx_AddTraceback("h5py._objects.ObjectID.open", __pyx_clineno, __pyx_lineno, __pyx_filename);
+              if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_2, &__pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 314; __pyx_clineno = __LINE__; goto __pyx_L17_except_error;}
+              __Pyx_GOTREF(__pyx_t_4);
+              __Pyx_GOTREF(__pyx_t_2);
+              __Pyx_GOTREF(__pyx_t_1);
+
+              /* "h5py/_objects.pyx":315
+ *                 res = registry[id]
+ *             except KeyError:
+ *                 res = cls(id)             # <<<<<<<<<<<<<<
+ *             return res
+ * 
+ */
+              __pyx_t_12 = PyTuple_New(1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 315; __pyx_clineno = __LINE__; goto __pyx_L17_except_error;}
+              __Pyx_GOTREF(__pyx_t_12);
+              __Pyx_INCREF(__pyx_v_id);
+              PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_v_id);
+              __Pyx_GIVEREF(__pyx_v_id);
+              __pyx_t_13 = PyObject_Call(((PyObject *)__pyx_v_cls), ((PyObject *)__pyx_t_12), NULL); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 315; __pyx_clineno = __LINE__; goto __pyx_L17_except_error;}
+              __Pyx_GOTREF(__pyx_t_13);
+              __Pyx_DECREF(((PyObject *)__pyx_t_12)); __pyx_t_12 = 0;
+              __Pyx_XDECREF(__pyx_v_res);
+              __pyx_v_res = __pyx_t_13;
+              __pyx_t_13 = 0;
+              __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+              __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+              __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+              goto __pyx_L16_exception_handled;
+            }
+            __pyx_L17_except_error:;
+            __Pyx_XGIVEREF(__pyx_t_8);
+            __Pyx_XGIVEREF(__pyx_t_9);
+            __Pyx_XGIVEREF(__pyx_t_10);
+            __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+            goto __pyx_L7_error;
+            __pyx_L16_exception_handled:;
+            __Pyx_XGIVEREF(__pyx_t_8);
+            __Pyx_XGIVEREF(__pyx_t_9);
+            __Pyx_XGIVEREF(__pyx_t_10);
+            __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+            __pyx_L22_try_end:;
+          }
+
+          /* "h5py/_objects.pyx":316
+ *             except KeyError:
+ *                 res = cls(id)
+ *             return res             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+          __Pyx_XDECREF(__pyx_r);
+          __Pyx_INCREF(__pyx_v_res);
+          __pyx_r = __pyx_v_res;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
+        __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/_objects.pyx":311
+ *     def open(cls, id):
+ *         """ Return a representation of an HDF5 identifier """
+ *         with registry.lock:             # <<<<<<<<<<<<<<
+ *             try:
+ *                 res = registry[id]
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py._objects.ObjectID.open", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_2, &__pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 311; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_2);
+          __Pyx_GOTREF(__pyx_t_4);
+          __pyx_t_13 = PyTuple_New(3); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 311; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_13);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_2);
+          PyTuple_SET_ITEM(__pyx_t_13, 1, __pyx_t_2);
+          __Pyx_GIVEREF(__pyx_t_2);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_13, 2, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __pyx_t_10 = PyObject_Call(__pyx_t_3, __pyx_t_13, NULL);
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 311; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_10);
+          __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_10);
+          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+          if (unlikely(__pyx_t_14 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 311; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_15 = (!__pyx_t_14);
+          if (__pyx_t_15) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_2);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_2, __pyx_t_4);
+            __pyx_t_1 = 0; __pyx_t_2 = 0; __pyx_t_4 = 0; 
+            {__pyx_filename = __pyx_f[0]; __pyx_lineno = 311; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L27;
+          }
+          __pyx_L27:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_13)); __pyx_t_13 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_3) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_3, __pyx_k_tuple_8, NULL);
+        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 311; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_15 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_15 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 311; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L28;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    goto __pyx_L1_error;
+    __pyx_L28:;
+  }
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_12);
+  __Pyx_XDECREF(__pyx_t_13);
+  __Pyx_AddTraceback("h5py._objects.ObjectID.open", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_res);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_8_objects_8ObjectID_2id_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4h5py_8_objects_8ObjectID_2id_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_8_objects_8ObjectID_2id___get__(((struct __pyx_obj_4h5py_8_objects_ObjectID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/_objects.pxd":15
+ * 
+ *     cdef object __weakref__
+ *     cdef readonly hid_t id             # <<<<<<<<<<<<<<
+ *     cdef public int locked
+ *     cdef object _hash
+ */
+
+static PyObject *__pyx_pf_4h5py_8_objects_8ObjectID_2id___get__(struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_to_py_hid_t(__pyx_v_self->id); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py._objects.ObjectID.id.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_8_objects_8ObjectID_6locked_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4h5py_8_objects_8ObjectID_6locked_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_8_objects_8ObjectID_6locked___get__(((struct __pyx_obj_4h5py_8_objects_ObjectID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/_objects.pxd":16
+ *     cdef object __weakref__
+ *     cdef readonly hid_t id
+ *     cdef public int locked             # <<<<<<<<<<<<<<
+ *     cdef object _hash
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_8_objects_8ObjectID_6locked___get__(struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyInt_FromLong(__pyx_v_self->locked); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py._objects.ObjectID.locked.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static int __pyx_pw_4h5py_8_objects_8ObjectID_6locked_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
+static int __pyx_pw_4h5py_8_objects_8ObjectID_6locked_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_8_objects_8ObjectID_6locked_2__set__(((struct __pyx_obj_4h5py_8_objects_ObjectID *)__pyx_v_self), ((PyObject *)__pyx_v_value));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_4h5py_8_objects_8ObjectID_6locked_2__set__(struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_self, PyObject *__pyx_v_value) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__set__", 0);
+  __pyx_t_1 = __Pyx_PyInt_AsInt(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v_self->locked = __pyx_t_1;
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py._objects.ObjectID.locked.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/_objects.pyx":319
+ * 
+ * 
+ * cdef hid_t pdefault(ObjectID pid):             # <<<<<<<<<<<<<<
+ * 
+ *     if pid is None:
+ */
+
+static hid_t __pyx_f_4h5py_8_objects_pdefault(struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_pid) {
+  hid_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  __Pyx_RefNannySetupContext("pdefault", 0);
+
+  /* "h5py/_objects.pyx":321
+ * cdef hid_t pdefault(ObjectID pid):
+ * 
+ *     if pid is None:             # <<<<<<<<<<<<<<
+ *         return <hid_t>H5P_DEFAULT
+ *     return pid.id
+ */
+  __pyx_t_1 = (((PyObject *)__pyx_v_pid) == Py_None);
+  if (__pyx_t_1) {
+
+    /* "h5py/_objects.pyx":322
+ * 
+ *     if pid is None:
+ *         return <hid_t>H5P_DEFAULT             # <<<<<<<<<<<<<<
+ *     return pid.id
+ */
+    __pyx_r = ((hid_t)H5P_DEFAULT);
+    goto __pyx_L0;
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  /* "h5py/_objects.pyx":323
+ *     if pid is None:
+ *         return <hid_t>H5P_DEFAULT
+ *     return pid.id             # <<<<<<<<<<<<<<
+ */
+  __pyx_r = __pyx_v_pid->id;
+  goto __pyx_L0;
+
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_tp_new_4h5py_8_objects_ObjectID(PyTypeObject *t, PyObject *a, PyObject *k) {
+  struct __pyx_obj_4h5py_8_objects_ObjectID *p;
+  PyObject *o = (*t->tp_alloc)(t, 0);
+  if (!o) return 0;
+  p = ((struct __pyx_obj_4h5py_8_objects_ObjectID *)o);
+  p->__weakref__ = 0;
+  p->_hash = Py_None; Py_INCREF(Py_None);
+  if (__pyx_pw_4h5py_8_objects_8ObjectID_1__cinit__(o, a, k) < 0) {
+    Py_DECREF(o); o = 0;
+  }
+  return o;
+}
+
+static void __pyx_tp_dealloc_4h5py_8_objects_ObjectID(PyObject *o) {
+  struct __pyx_obj_4h5py_8_objects_ObjectID *p = (struct __pyx_obj_4h5py_8_objects_ObjectID *)o;
+  PyObject_GC_UnTrack(o);
+  {
+    PyObject *etype, *eval, *etb;
+    PyErr_Fetch(&etype, &eval, &etb);
+    ++Py_REFCNT(o);
+    __pyx_pw_4h5py_8_objects_8ObjectID_3__dealloc__(o);
+    if (PyErr_Occurred()) PyErr_WriteUnraisable(o);
+    --Py_REFCNT(o);
+    PyErr_Restore(etype, eval, etb);
+  }
+  if (p->__weakref__) PyObject_ClearWeakRefs(o);
+  Py_CLEAR(p->_hash);
+  PyObject_GC_Track(o);
+  (*Py_TYPE(o)->tp_free)(o);
+}
+
+static int __pyx_tp_traverse_4h5py_8_objects_ObjectID(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_4h5py_8_objects_ObjectID *p = (struct __pyx_obj_4h5py_8_objects_ObjectID *)o;
+  if (p->_hash) {
+    e = (*v)(p->_hash, a); if (e) return e;
+  }
+  return 0;
+}
+
+static int __pyx_tp_clear_4h5py_8_objects_ObjectID(PyObject *o) {
+  struct __pyx_obj_4h5py_8_objects_ObjectID *p = (struct __pyx_obj_4h5py_8_objects_ObjectID *)o;
+  PyObject* tmp;
+  tmp = ((PyObject*)p->_hash);
+  p->_hash = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  return 0;
+}
+
+static PyObject *__pyx_getprop_4h5py_8_objects_8ObjectID_fileno(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_4h5py_8_objects_8ObjectID_6fileno_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_4h5py_8_objects_8ObjectID_valid(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_4h5py_8_objects_8ObjectID_5valid_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_4h5py_8_objects_8ObjectID_id(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_4h5py_8_objects_8ObjectID_2id_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_4h5py_8_objects_8ObjectID_locked(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_4h5py_8_objects_8ObjectID_6locked_1__get__(o);
+}
+
+static int __pyx_setprop_4h5py_8_objects_8ObjectID_locked(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
+  if (v) {
+    return __pyx_pw_4h5py_8_objects_8ObjectID_6locked_3__set__(o, v);
+  }
+  else {
+    PyErr_SetString(PyExc_NotImplementedError, "__del__");
+    return -1;
+  }
+}
+
+static PyMethodDef __pyx_methods_4h5py_8_objects_ObjectID[] = {
+  {__Pyx_NAMESTR("__copy__"), (PyCFunction)__pyx_pw_4h5py_8_objects_8ObjectID_7__copy__, METH_NOARGS, __Pyx_DOCSTR(0)},
+  {__Pyx_NAMESTR("open"), (PyCFunction)__pyx_pw_4h5py_8_objects_8ObjectID_13open, METH_O, __Pyx_DOCSTR(__pyx_doc_4h5py_8_objects_8ObjectID_12open)},
+  {0, 0, 0, 0}
+};
+
+static struct PyGetSetDef __pyx_getsets_4h5py_8_objects_ObjectID[] = {
+  {(char *)"fileno", __pyx_getprop_4h5py_8_objects_8ObjectID_fileno, 0, 0, 0},
+  {(char *)"valid", __pyx_getprop_4h5py_8_objects_8ObjectID_valid, 0, 0, 0},
+  {(char *)"id", __pyx_getprop_4h5py_8_objects_8ObjectID_id, 0, 0, 0},
+  {(char *)"locked", __pyx_getprop_4h5py_8_objects_8ObjectID_locked, __pyx_setprop_4h5py_8_objects_8ObjectID_locked, 0, 0},
+  {0, 0, 0, 0, 0}
+};
+
+static PyNumberMethods __pyx_tp_as_number_ObjectID = {
+  0, /*nb_add*/
+  0, /*nb_subtract*/
+  0, /*nb_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_divide*/
+  #endif
+  0, /*nb_remainder*/
+  0, /*nb_divmod*/
+  0, /*nb_power*/
+  0, /*nb_negative*/
+  0, /*nb_positive*/
+  0, /*nb_absolute*/
+  __pyx_pw_4h5py_8_objects_8ObjectID_5__nonzero__, /*nb_nonzero*/
+  0, /*nb_invert*/
+  0, /*nb_lshift*/
+  0, /*nb_rshift*/
+  0, /*nb_and*/
+  0, /*nb_xor*/
+  0, /*nb_or*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_coerce*/
+  #endif
+  0, /*nb_int*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_long*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*nb_float*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_oct*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_hex*/
+  #endif
+  0, /*nb_inplace_add*/
+  0, /*nb_inplace_subtract*/
+  0, /*nb_inplace_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_inplace_divide*/
+  #endif
+  0, /*nb_inplace_remainder*/
+  0, /*nb_inplace_power*/
+  0, /*nb_inplace_lshift*/
+  0, /*nb_inplace_rshift*/
+  0, /*nb_inplace_and*/
+  0, /*nb_inplace_xor*/
+  0, /*nb_inplace_or*/
+  0, /*nb_floor_divide*/
+  0, /*nb_true_divide*/
+  0, /*nb_inplace_floor_divide*/
+  0, /*nb_inplace_true_divide*/
+  #if PY_VERSION_HEX >= 0x02050000
+  0, /*nb_index*/
+  #endif
+};
+
+static PySequenceMethods __pyx_tp_as_sequence_ObjectID = {
+  0, /*sq_length*/
+  0, /*sq_concat*/
+  0, /*sq_repeat*/
+  0, /*sq_item*/
+  0, /*sq_slice*/
+  0, /*sq_ass_item*/
+  0, /*sq_ass_slice*/
+  0, /*sq_contains*/
+  0, /*sq_inplace_concat*/
+  0, /*sq_inplace_repeat*/
+};
+
+static PyMappingMethods __pyx_tp_as_mapping_ObjectID = {
+  0, /*mp_length*/
+  0, /*mp_subscript*/
+  0, /*mp_ass_subscript*/
+};
+
+static PyBufferProcs __pyx_tp_as_buffer_ObjectID = {
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getreadbuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getwritebuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getsegcount*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getcharbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_getbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_releasebuffer*/
+  #endif
+};
+
+static PyTypeObject __pyx_type_4h5py_8_objects_ObjectID = {
+  PyVarObject_HEAD_INIT(0, 0)
+  __Pyx_NAMESTR("h5py._objects.ObjectID"), /*tp_name*/
+  sizeof(struct __pyx_obj_4h5py_8_objects_ObjectID), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_4h5py_8_objects_ObjectID, /*tp_dealloc*/
+  0, /*tp_print*/
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*tp_repr*/
+  &__pyx_tp_as_number_ObjectID, /*tp_as_number*/
+  &__pyx_tp_as_sequence_ObjectID, /*tp_as_sequence*/
+  &__pyx_tp_as_mapping_ObjectID, /*tp_as_mapping*/
+  __pyx_pw_4h5py_8_objects_8ObjectID_11__hash__, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  &__pyx_tp_as_buffer_ObjectID, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+  __Pyx_DOCSTR("\n        Represents an HDF5 identifier.\n\n    "), /*tp_doc*/
+  __pyx_tp_traverse_4h5py_8_objects_ObjectID, /*tp_traverse*/
+  __pyx_tp_clear_4h5py_8_objects_ObjectID, /*tp_clear*/
+  __pyx_pw_4h5py_8_objects_8ObjectID_9__richcmp__, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_4h5py_8_objects_ObjectID, /*tp_methods*/
+  0, /*tp_members*/
+  __pyx_getsets_4h5py_8_objects_ObjectID, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  0, /*tp_dictoffset*/
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_4h5py_8_objects_ObjectID, /*tp_new*/
+  0, /*tp_free*/
+  0, /*tp_is_gc*/
+  0, /*tp_bases*/
+  0, /*tp_mro*/
+  0, /*tp_cache*/
+  0, /*tp_subclasses*/
+  0, /*tp_weaklist*/
+  0, /*tp_del*/
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*tp_version_tag*/
+  #endif
+};
+
+static PyObject *__pyx_tp_new_4h5py_8_objects_FastRLock(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
+  PyObject *o = (*t->tp_alloc)(t, 0);
+  if (!o) return 0;
+  if (__pyx_pw_4h5py_8_objects_9FastRLock_1__cinit__(o, __pyx_empty_tuple, NULL) < 0) {
+    Py_DECREF(o); o = 0;
+  }
+  return o;
+}
+
+static void __pyx_tp_dealloc_4h5py_8_objects_FastRLock(PyObject *o) {
+  {
+    PyObject *etype, *eval, *etb;
+    PyErr_Fetch(&etype, &eval, &etb);
+    ++Py_REFCNT(o);
+    __pyx_pw_4h5py_8_objects_9FastRLock_3__dealloc__(o);
+    if (PyErr_Occurred()) PyErr_WriteUnraisable(o);
+    --Py_REFCNT(o);
+    PyErr_Restore(etype, eval, etb);
+  }
+  (*Py_TYPE(o)->tp_free)(o);
+}
+
+static PyMethodDef __pyx_methods_4h5py_8_objects_FastRLock[] = {
+  {__Pyx_NAMESTR("acquire"), (PyCFunction)__pyx_pw_4h5py_8_objects_9FastRLock_5acquire, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)},
+  {__Pyx_NAMESTR("release"), (PyCFunction)__pyx_pw_4h5py_8_objects_9FastRLock_7release, METH_NOARGS, __Pyx_DOCSTR(0)},
+  {__Pyx_NAMESTR("__enter__"), (PyCFunction)__pyx_pw_4h5py_8_objects_9FastRLock_9__enter__, METH_NOARGS, __Pyx_DOCSTR(0)},
+  {__Pyx_NAMESTR("__exit__"), (PyCFunction)__pyx_pw_4h5py_8_objects_9FastRLock_11__exit__, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)},
+  {__Pyx_NAMESTR("_is_owned"), (PyCFunction)__pyx_pw_4h5py_8_objects_9FastRLock_13_is_owned, METH_NOARGS, __Pyx_DOCSTR(0)},
+  {0, 0, 0, 0}
+};
+
+static PyNumberMethods __pyx_tp_as_number_FastRLock = {
+  0, /*nb_add*/
+  0, /*nb_subtract*/
+  0, /*nb_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_divide*/
+  #endif
+  0, /*nb_remainder*/
+  0, /*nb_divmod*/
+  0, /*nb_power*/
+  0, /*nb_negative*/
+  0, /*nb_positive*/
+  0, /*nb_absolute*/
+  0, /*nb_nonzero*/
+  0, /*nb_invert*/
+  0, /*nb_lshift*/
+  0, /*nb_rshift*/
+  0, /*nb_and*/
+  0, /*nb_xor*/
+  0, /*nb_or*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_coerce*/
+  #endif
+  0, /*nb_int*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_long*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*nb_float*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_oct*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_hex*/
+  #endif
+  0, /*nb_inplace_add*/
+  0, /*nb_inplace_subtract*/
+  0, /*nb_inplace_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_inplace_divide*/
+  #endif
+  0, /*nb_inplace_remainder*/
+  0, /*nb_inplace_power*/
+  0, /*nb_inplace_lshift*/
+  0, /*nb_inplace_rshift*/
+  0, /*nb_inplace_and*/
+  0, /*nb_inplace_xor*/
+  0, /*nb_inplace_or*/
+  0, /*nb_floor_divide*/
+  0, /*nb_true_divide*/
+  0, /*nb_inplace_floor_divide*/
+  0, /*nb_inplace_true_divide*/
+  #if PY_VERSION_HEX >= 0x02050000
+  0, /*nb_index*/
+  #endif
+};
+
+static PySequenceMethods __pyx_tp_as_sequence_FastRLock = {
+  0, /*sq_length*/
+  0, /*sq_concat*/
+  0, /*sq_repeat*/
+  0, /*sq_item*/
+  0, /*sq_slice*/
+  0, /*sq_ass_item*/
+  0, /*sq_ass_slice*/
+  0, /*sq_contains*/
+  0, /*sq_inplace_concat*/
+  0, /*sq_inplace_repeat*/
+};
+
+static PyMappingMethods __pyx_tp_as_mapping_FastRLock = {
+  0, /*mp_length*/
+  0, /*mp_subscript*/
+  0, /*mp_ass_subscript*/
+};
+
+static PyBufferProcs __pyx_tp_as_buffer_FastRLock = {
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getreadbuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getwritebuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getsegcount*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getcharbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_getbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_releasebuffer*/
+  #endif
+};
+
+static PyTypeObject __pyx_type_4h5py_8_objects_FastRLock = {
+  PyVarObject_HEAD_INIT(0, 0)
+  __Pyx_NAMESTR("h5py._objects.FastRLock"), /*tp_name*/
+  sizeof(struct __pyx_obj_4h5py_8_objects_FastRLock), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_4h5py_8_objects_FastRLock, /*tp_dealloc*/
+  0, /*tp_print*/
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*tp_repr*/
+  &__pyx_tp_as_number_FastRLock, /*tp_as_number*/
+  &__pyx_tp_as_sequence_FastRLock, /*tp_as_sequence*/
+  &__pyx_tp_as_mapping_FastRLock, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  &__pyx_tp_as_buffer_FastRLock, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
+  __Pyx_DOCSTR("Fast, re-entrant locking.\n\n    Under uncongested conditions, the lock is never acquired but only\n    counted.  Only when a second thread comes in and notices that the\n    lock is needed, it acquires the lock and notifies the first thread\n    to release it when it's done.  This is all made possible by the\n    wonderful GIL.\n    "), /*tp_doc*/
+  0, /*tp_traverse*/
+  0, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_4h5py_8_objects_FastRLock, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  0, /*tp_dictoffset*/
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_4h5py_8_objects_FastRLock, /*tp_new*/
+  0, /*tp_free*/
+  0, /*tp_is_gc*/
+  0, /*tp_bases*/
+  0, /*tp_mro*/
+  0, /*tp_cache*/
+  0, /*tp_subclasses*/
+  0, /*tp_weaklist*/
+  0, /*tp_del*/
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*tp_version_tag*/
+  #endif
+};
+
+static PyObject *__pyx_tp_new_4h5py_8_objects__Registry(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
+  struct __pyx_obj_4h5py_8_objects__Registry *p;
+  PyObject *o = (*t->tp_alloc)(t, 0);
+  if (!o) return 0;
+  p = ((struct __pyx_obj_4h5py_8_objects__Registry *)o);
+  p->_data = Py_None; Py_INCREF(Py_None);
+  p->lock = ((struct __pyx_obj_4h5py_8_objects_FastRLock *)Py_None); Py_INCREF(Py_None);
+  if (__pyx_pw_4h5py_8_objects_9_Registry_1__cinit__(o, __pyx_empty_tuple, NULL) < 0) {
+    Py_DECREF(o); o = 0;
+  }
+  return o;
+}
+
+static void __pyx_tp_dealloc_4h5py_8_objects__Registry(PyObject *o) {
+  struct __pyx_obj_4h5py_8_objects__Registry *p = (struct __pyx_obj_4h5py_8_objects__Registry *)o;
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->_data);
+  Py_CLEAR(p->lock);
+  PyObject_GC_Track(o);
+  (*Py_TYPE(o)->tp_free)(o);
+}
+
+static int __pyx_tp_traverse_4h5py_8_objects__Registry(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_4h5py_8_objects__Registry *p = (struct __pyx_obj_4h5py_8_objects__Registry *)o;
+  if (p->_data) {
+    e = (*v)(p->_data, a); if (e) return e;
+  }
+  if (p->lock) {
+    e = (*v)(((PyObject*)p->lock), a); if (e) return e;
+  }
+  return 0;
+}
+
+static int __pyx_tp_clear_4h5py_8_objects__Registry(PyObject *o) {
+  struct __pyx_obj_4h5py_8_objects__Registry *p = (struct __pyx_obj_4h5py_8_objects__Registry *)o;
+  PyObject* tmp;
+  tmp = ((PyObject*)p->_data);
+  p->_data = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->lock);
+  p->lock = ((struct __pyx_obj_4h5py_8_objects_FastRLock *)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  return 0;
+}
+static PyObject *__pyx_sq_item_4h5py_8_objects__Registry(PyObject *o, Py_ssize_t i) {
+  PyObject *r;
+  PyObject *x = PyInt_FromSsize_t(i); if(!x) return 0;
+  r = Py_TYPE(o)->tp_as_mapping->mp_subscript(o, x);
+  Py_DECREF(x);
+  return r;
+}
+
+static int __pyx_mp_ass_subscript_4h5py_8_objects__Registry(PyObject *o, PyObject *i, PyObject *v) {
+  if (v) {
+    return __pyx_pw_4h5py_8_objects_9_Registry_7__setitem__(o, i, v);
+  }
+  else {
+    return __pyx_pw_4h5py_8_objects_9_Registry_9__delitem__(o, i);
+  }
+}
+
+static PyObject *__pyx_getprop_4h5py_8_objects_9_Registry_lock(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_4h5py_8_objects_9_Registry_4lock_1__get__(o);
+}
+
+static PyMethodDef __pyx_methods_4h5py_8_objects__Registry[] = {
+  {__Pyx_NAMESTR("cleanup"), (PyCFunction)__pyx_pw_4h5py_8_objects_9_Registry_3cleanup, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_8_objects_9_Registry_2cleanup)},
+  {0, 0, 0, 0}
+};
+
+static struct PyGetSetDef __pyx_getsets_4h5py_8_objects__Registry[] = {
+  {(char *)"lock", __pyx_getprop_4h5py_8_objects_9_Registry_lock, 0, 0, 0},
+  {0, 0, 0, 0, 0}
+};
+
+static PyNumberMethods __pyx_tp_as_number__Registry = {
+  0, /*nb_add*/
+  0, /*nb_subtract*/
+  0, /*nb_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_divide*/
+  #endif
+  0, /*nb_remainder*/
+  0, /*nb_divmod*/
+  0, /*nb_power*/
+  0, /*nb_negative*/
+  0, /*nb_positive*/
+  0, /*nb_absolute*/
+  0, /*nb_nonzero*/
+  0, /*nb_invert*/
+  0, /*nb_lshift*/
+  0, /*nb_rshift*/
+  0, /*nb_and*/
+  0, /*nb_xor*/
+  0, /*nb_or*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_coerce*/
+  #endif
+  0, /*nb_int*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_long*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*nb_float*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_oct*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_hex*/
+  #endif
+  0, /*nb_inplace_add*/
+  0, /*nb_inplace_subtract*/
+  0, /*nb_inplace_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_inplace_divide*/
+  #endif
+  0, /*nb_inplace_remainder*/
+  0, /*nb_inplace_power*/
+  0, /*nb_inplace_lshift*/
+  0, /*nb_inplace_rshift*/
+  0, /*nb_inplace_and*/
+  0, /*nb_inplace_xor*/
+  0, /*nb_inplace_or*/
+  0, /*nb_floor_divide*/
+  0, /*nb_true_divide*/
+  0, /*nb_inplace_floor_divide*/
+  0, /*nb_inplace_true_divide*/
+  #if PY_VERSION_HEX >= 0x02050000
+  0, /*nb_index*/
+  #endif
+};
+
+static PySequenceMethods __pyx_tp_as_sequence__Registry = {
+  0, /*sq_length*/
+  0, /*sq_concat*/
+  0, /*sq_repeat*/
+  __pyx_sq_item_4h5py_8_objects__Registry, /*sq_item*/
+  0, /*sq_slice*/
+  0, /*sq_ass_item*/
+  0, /*sq_ass_slice*/
+  0, /*sq_contains*/
+  0, /*sq_inplace_concat*/
+  0, /*sq_inplace_repeat*/
+};
+
+static PyMappingMethods __pyx_tp_as_mapping__Registry = {
+  0, /*mp_length*/
+  __pyx_pw_4h5py_8_objects_9_Registry_5__getitem__, /*mp_subscript*/
+  __pyx_mp_ass_subscript_4h5py_8_objects__Registry, /*mp_ass_subscript*/
+};
+
+static PyBufferProcs __pyx_tp_as_buffer__Registry = {
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getreadbuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getwritebuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getsegcount*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getcharbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_getbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_releasebuffer*/
+  #endif
+};
+
+static PyTypeObject __pyx_type_4h5py_8_objects__Registry = {
+  PyVarObject_HEAD_INIT(0, 0)
+  __Pyx_NAMESTR("h5py._objects._Registry"), /*tp_name*/
+  sizeof(struct __pyx_obj_4h5py_8_objects__Registry), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_4h5py_8_objects__Registry, /*tp_dealloc*/
+  0, /*tp_print*/
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*tp_repr*/
+  &__pyx_tp_as_number__Registry, /*tp_as_number*/
+  &__pyx_tp_as_sequence__Registry, /*tp_as_sequence*/
+  &__pyx_tp_as_mapping__Registry, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  &__pyx_tp_as_buffer__Registry, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_4h5py_8_objects__Registry, /*tp_traverse*/
+  __pyx_tp_clear_4h5py_8_objects__Registry, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_4h5py_8_objects__Registry, /*tp_methods*/
+  0, /*tp_members*/
+  __pyx_getsets_4h5py_8_objects__Registry, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  0, /*tp_dictoffset*/
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_4h5py_8_objects__Registry, /*tp_new*/
+  0, /*tp_free*/
+  0, /*tp_is_gc*/
+  0, /*tp_bases*/
+  0, /*tp_mro*/
+  0, /*tp_cache*/
+  0, /*tp_subclasses*/
+  0, /*tp_weaklist*/
+  0, /*tp_del*/
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*tp_version_tag*/
+  #endif
+};
+
+static PyMethodDef __pyx_methods[] = {
+  {0, 0, 0, 0}
+};
+
+#if PY_MAJOR_VERSION >= 3
+static struct PyModuleDef __pyx_moduledef = {
+  #if PY_VERSION_HEX < 0x03020000
+    { PyObject_HEAD_INIT(NULL) NULL, 0, NULL },
+  #else
+    PyModuleDef_HEAD_INIT,
+  #endif
+    __Pyx_NAMESTR("_objects"),
+    __Pyx_DOCSTR(__pyx_k_9), /* m_doc */
+    -1, /* m_size */
+    __pyx_methods /* m_methods */,
+    NULL, /* m_reload */
+    NULL, /* m_traverse */
+    NULL, /* m_clear */
+    NULL /* m_free */
+};
+#endif
+
+static __Pyx_StringTabEntry __pyx_string_tab[] = {
+  {&__pyx_kp_s_1, __pyx_k_1, sizeof(__pyx_k_1), 0, 0, 1, 0},
+  {&__pyx_kp_s_7, __pyx_k_7, sizeof(__pyx_k_7), 0, 0, 1, 0},
+  {&__pyx_n_s__AttributeError, __pyx_k__AttributeError, sizeof(__pyx_k__AttributeError), 0, 0, 1, 1},
+  {&__pyx_n_s__Exception, __pyx_k__Exception, sizeof(__pyx_k__Exception), 0, 0, 1, 1},
+  {&__pyx_n_s__KeyError, __pyx_k__KeyError, sizeof(__pyx_k__KeyError), 0, 0, 1, 1},
+  {&__pyx_n_s__KeyedRef, __pyx_k__KeyedRef, sizeof(__pyx_k__KeyedRef), 0, 0, 1, 1},
+  {&__pyx_n_s__NotImplemented, __pyx_k__NotImplemented, sizeof(__pyx_k__NotImplemented), 0, 0, 1, 1},
+  {&__pyx_n_s__RuntimeError, __pyx_k__RuntimeError, sizeof(__pyx_k__RuntimeError), 0, 0, 1, 1},
+  {&__pyx_n_s__TypeError, __pyx_k__TypeError, sizeof(__pyx_k__TypeError), 0, 0, 1, 1},
+  {&__pyx_n_s____class__, __pyx_k____class__, sizeof(__pyx_k____class__), 0, 0, 1, 1},
+  {&__pyx_n_s____enter__, __pyx_k____enter__, sizeof(__pyx_k____enter__), 0, 0, 1, 1},
+  {&__pyx_n_s____exit__, __pyx_k____exit__, sizeof(__pyx_k____exit__), 0, 0, 1, 1},
+  {&__pyx_n_s____hash__, __pyx_k____hash__, sizeof(__pyx_k____hash__), 0, 0, 1, 1},
+  {&__pyx_n_s____main__, __pyx_k____main__, sizeof(__pyx_k____main__), 0, 0, 1, 1},
+  {&__pyx_n_s____name__, __pyx_k____name__, sizeof(__pyx_k____name__), 0, 0, 1, 1},
+  {&__pyx_n_s____test__, __pyx_k____test__, sizeof(__pyx_k____test__), 0, 0, 1, 1},
+  {&__pyx_n_s__blocking, __pyx_k__blocking, sizeof(__pyx_k__blocking), 0, 0, 1, 1},
+  {&__pyx_n_s__id, __pyx_k__id, sizeof(__pyx_k__id), 0, 0, 1, 1},
+  {&__pyx_n_s__lock, __pyx_k__lock, sizeof(__pyx_k__lock), 0, 0, 1, 1},
+  {&__pyx_n_s__open, __pyx_k__open, sizeof(__pyx_k__open), 0, 0, 1, 1},
+  {&__pyx_n_s__pop, __pyx_k__pop, sizeof(__pyx_k__pop), 0, 0, 1, 1},
+  {&__pyx_n_s__ref, __pyx_k__ref, sizeof(__pyx_k__ref), 0, 0, 1, 1},
+  {&__pyx_n_s__registry, __pyx_k__registry, sizeof(__pyx_k__registry), 0, 0, 1, 1},
+  {&__pyx_n_s__t, __pyx_k__t, sizeof(__pyx_k__t), 0, 0, 1, 1},
+  {&__pyx_n_s__tb, __pyx_k__tb, sizeof(__pyx_k__tb), 0, 0, 1, 1},
+  {&__pyx_n_s__v, __pyx_k__v, sizeof(__pyx_k__v), 0, 0, 1, 1},
+  {&__pyx_n_s__valid, __pyx_k__valid, sizeof(__pyx_k__valid), 0, 0, 1, 1},
+  {&__pyx_n_s__weakref, __pyx_k__weakref, sizeof(__pyx_k__weakref), 0, 0, 1, 1},
+  {0, 0, 0, 0, 0, 0, 0}
+};
+static int __Pyx_InitCachedBuiltins(void) {
+  __pyx_builtin_RuntimeError = __Pyx_GetName(__pyx_b, __pyx_n_s__RuntimeError); if (!__pyx_builtin_RuntimeError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_builtin_AttributeError = __Pyx_GetName(__pyx_b, __pyx_n_s__AttributeError); if (!__pyx_builtin_AttributeError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_builtin_NotImplemented = __Pyx_GetName(__pyx_b, __pyx_n_s__NotImplemented); if (!__pyx_builtin_NotImplemented) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 274; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_builtin_TypeError = __Pyx_GetName(__pyx_b, __pyx_n_s__TypeError); if (!__pyx_builtin_TypeError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 282; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_builtin_Exception = __Pyx_GetName(__pyx_b, __pyx_n_s__Exception); if (!__pyx_builtin_Exception) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 303; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_builtin_KeyError = __Pyx_GetName(__pyx_b, __pyx_n_s__KeyError); if (!__pyx_builtin_KeyError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 314; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  return 0;
+  __pyx_L1_error:;
+  return -1;
+}
+
+static int __Pyx_InitCachedConstants(void) {
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0);
+
+  /* "h5py/_objects.pyx":81
+ *     def release(self):
+ *         if self._owner != pythread.PyThread_get_thread_ident():
+ *             raise RuntimeError("cannot release un-acquired lock")             # <<<<<<<<<<<<<<
+ *         unlock_lock(self)
+ * 
+ */
+  __pyx_k_tuple_2 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_1)); if (unlikely(!__pyx_k_tuple_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_2);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_2));
+
+  /* "h5py/_objects.pyx":93
+ *         # self.release()
+ *         if self._owner != pythread.PyThread_get_thread_ident():
+ *             raise RuntimeError("cannot release un-acquired lock")             # <<<<<<<<<<<<<<
+ *         unlock_lock(self)
+ * 
+ */
+  __pyx_k_tuple_3 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_1)); if (unlikely(!__pyx_k_tuple_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_3);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_3));
+
+  /* "h5py/_objects.pyx":243
+ *         self.id = id
+ *         self.locked = 0
+ *         with registry.lock:             # <<<<<<<<<<<<<<
+ *             registry[id] = self
+ * 
+ */
+  __pyx_k_tuple_5 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_5);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_5));
+
+  /* "h5py/_objects.pyx":249
+ *         if not self.locked:
+ *             try:
+ *                 with registry.lock:             # <<<<<<<<<<<<<<
+ *                     del registry[self.id]
+ *             except AttributeError:
+ */
+  __pyx_k_tuple_6 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_6);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_6));
+
+  /* "h5py/_objects.pyx":311
+ *     def open(cls, id):
+ *         """ Return a representation of an HDF5 identifier """
+ *         with registry.lock:             # <<<<<<<<<<<<<<
+ *             try:
+ *                 res = registry[id]
+ */
+  __pyx_k_tuple_8 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 311; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_8);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_8));
+  __Pyx_RefNannyFinishContext();
+  return 0;
+  __pyx_L1_error:;
+  __Pyx_RefNannyFinishContext();
+  return -1;
+}
+
+static int __Pyx_InitGlobals(void) {
+  if (__Pyx_InitStrings(__pyx_string_tab) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  return 0;
+  __pyx_L1_error:;
+  return -1;
+}
+
+#if PY_MAJOR_VERSION < 3
+PyMODINIT_FUNC init_objects(void); /*proto*/
+PyMODINIT_FUNC init_objects(void)
+#else
+PyMODINIT_FUNC PyInit__objects(void); /*proto*/
+PyMODINIT_FUNC PyInit__objects(void)
+#endif
+{
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  __Pyx_RefNannyDeclarations
+  #if CYTHON_REFNANNY
+  __Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny");
+  if (!__Pyx_RefNanny) {
+      PyErr_Clear();
+      __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny");
+      if (!__Pyx_RefNanny)
+          Py_FatalError("failed to import 'refnanny' module");
+  }
+  #endif
+  __Pyx_RefNannySetupContext("PyMODINIT_FUNC PyInit__objects(void)", 0);
+  if ( __Pyx_check_binary_version() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #ifdef __Pyx_CyFunction_USED
+  if (__Pyx_CyFunction_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #endif
+  #ifdef __Pyx_FusedFunction_USED
+  if (__pyx_FusedFunction_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #endif
+  #ifdef __Pyx_Generator_USED
+  if (__pyx_Generator_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #endif
+  /*--- Library function declarations ---*/
+  /*--- Threads initialization code ---*/
+  #if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS
+  #ifdef WITH_THREAD /* Python build with threading support? */
+  PyEval_InitThreads();
+  #endif
+  #endif
+  /*--- Module creation code ---*/
+  #if PY_MAJOR_VERSION < 3
+  __pyx_m = Py_InitModule4(__Pyx_NAMESTR("_objects"), __pyx_methods, __Pyx_DOCSTR(__pyx_k_9), 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m);
+  #else
+  __pyx_m = PyModule_Create(&__pyx_moduledef);
+  #endif
+  if (unlikely(!__pyx_m)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #if PY_MAJOR_VERSION >= 3
+  {
+    PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (!PyDict_GetItemString(modules, "h5py._objects")) {
+      if (unlikely(PyDict_SetItemString(modules, "h5py._objects", __pyx_m) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    }
+  }
+  #endif
+  __pyx_b = PyImport_AddModule(__Pyx_NAMESTR(__Pyx_BUILTIN_MODULE_NAME)); if (unlikely(!__pyx_b)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #if CYTHON_COMPILING_IN_PYPY
+  Py_INCREF(__pyx_b);
+  #endif
+  if (__Pyx_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  /*--- Initialize various global constants etc. ---*/
+  if (unlikely(__Pyx_InitGlobals() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__pyx_module_is_main_h5py___objects) {
+    if (__Pyx_SetAttrString(__pyx_m, "__name__", __pyx_n_s____main__) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  }
+  /*--- Builtin init code ---*/
+  if (unlikely(__Pyx_InitCachedBuiltins() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  /*--- Constants init code ---*/
+  if (unlikely(__Pyx_InitCachedConstants() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  /*--- Global init code ---*/
+  /*--- Variable export code ---*/
+  /*--- Function export code ---*/
+  if (__Pyx_ExportFunction("pdefault", (void (*)(void))__pyx_f_4h5py_8_objects_pdefault, "hid_t (struct __pyx_obj_4h5py_8_objects_ObjectID *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  /*--- Type init code ---*/
+  if (PyType_Ready(&__pyx_type_4h5py_8_objects_ObjectID) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 218; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #if CYTHON_COMPILING_IN_CPYTHON
+  {
+    PyObject *wrapper = __Pyx_GetAttrString((PyObject *)&__pyx_type_4h5py_8_objects_ObjectID, "__hash__"); if (unlikely(!wrapper)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 218; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
+      __pyx_wrapperbase_4h5py_8_objects_8ObjectID_10__hash__ = *((PyWrapperDescrObject *)wrapper)->d_base;
+      __pyx_wrapperbase_4h5py_8_objects_8ObjectID_10__hash__.doc = __pyx_doc_4h5py_8_objects_8ObjectID_10__hash__;
+      ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_4h5py_8_objects_8ObjectID_10__hash__;
+    }
+  }
+  #endif
+  if (__Pyx_SetAttrString(__pyx_m, "ObjectID", (PyObject *)&__pyx_type_4h5py_8_objects_ObjectID) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 218; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__pyx_type_4h5py_8_objects_ObjectID.tp_weaklistoffset == 0) __pyx_type_4h5py_8_objects_ObjectID.tp_weaklistoffset = offsetof(struct __pyx_obj_4h5py_8_objects_ObjectID, __weakref__);
+  __pyx_ptype_4h5py_8_objects_ObjectID = &__pyx_type_4h5py_8_objects_ObjectID;
+  if (PyType_Ready(&__pyx_type_4h5py_8_objects_FastRLock) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetAttrString(__pyx_m, "FastRLock", (PyObject *)&__pyx_type_4h5py_8_objects_FastRLock) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_8_objects_FastRLock = &__pyx_type_4h5py_8_objects_FastRLock;
+  if (PyType_Ready(&__pyx_type_4h5py_8_objects__Registry) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 164; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetAttrString(__pyx_m, "_Registry", (PyObject *)&__pyx_type_4h5py_8_objects__Registry) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 164; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_8_objects__Registry = &__pyx_type_4h5py_8_objects__Registry;
+  /*--- Type import code ---*/
+  __pyx_ptype_7cpython_4type_type = __Pyx_ImportType(__Pyx_BUILTIN_MODULE_NAME, "type", 
+  #if CYTHON_COMPILING_IN_PYPY
+  sizeof(PyTypeObject),
+  #else
+  sizeof(PyHeapTypeObject),
+  #endif
+  0); if (unlikely(!__pyx_ptype_7cpython_4type_type)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_7cpython_4bool_bool = __Pyx_ImportType(__Pyx_BUILTIN_MODULE_NAME, "bool", sizeof(PyBoolObject), 0); if (unlikely(!__pyx_ptype_7cpython_4bool_bool)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_7cpython_7complex_complex = __Pyx_ImportType(__Pyx_BUILTIN_MODULE_NAME, "complex", sizeof(PyComplexObject), 0); if (unlikely(!__pyx_ptype_7cpython_7complex_complex)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  /*--- Variable import code ---*/
+  /*--- Function import code ---*/
+  __pyx_t_1 = __Pyx_ImportModule("h5py.defs"); if (!__pyx_t_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Gget_objinfo", (void (**)(void))&__pyx_f_4h5py_4defs_H5Gget_objinfo, "herr_t (hid_t, char *, int, H5G_stat_t *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Iget_type", (void (**)(void))&__pyx_f_4h5py_4defs_H5Iget_type, "H5I_type_t (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Idec_ref", (void (**)(void))&__pyx_f_4h5py_4defs_H5Idec_ref, "int (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  Py_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  /*--- Execution code ---*/
+
+  /* "h5py/_objects.pyx":41
+ * from defs cimport *
+ * 
+ * from weakref import KeyedRef, ref             # <<<<<<<<<<<<<<
+ * 
+ * ## {{{ http://code.activestate.com/recipes/577336/ (r3)
+ */
+  __pyx_t_2 = PyList_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_INCREF(((PyObject *)__pyx_n_s__KeyedRef));
+  PyList_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_n_s__KeyedRef));
+  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__KeyedRef));
+  __Pyx_INCREF(((PyObject *)__pyx_n_s__ref));
+  PyList_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_n_s__ref));
+  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__ref));
+  __pyx_t_3 = __Pyx_Import(((PyObject *)__pyx_n_s__weakref), ((PyObject *)__pyx_t_2), -1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
+  __pyx_t_2 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__KeyedRef);
+  if (__pyx_t_2 == NULL) {
+    if (PyErr_ExceptionMatches(PyExc_AttributeError)) __Pyx_RaiseImportError(__pyx_n_s__KeyedRef);
+    if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  }
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__KeyedRef, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_2 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__ref);
+  if (__pyx_t_2 == NULL) {
+    if (PyErr_ExceptionMatches(PyExc_AttributeError)) __Pyx_RaiseImportError(__pyx_n_s__ref);
+    if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  }
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ref, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+  /* "h5py/_objects.pyx":173
+ *         self.lock = FastRLock()
+ * 
+ *     __hash__ = None # Avoid Py3 warning             # <<<<<<<<<<<<<<
+ * 
+ *     def cleanup(self):
+ */
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4h5py_8_objects__Registry->tp_dict, __pyx_n_s____hash__, Py_None) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  PyType_Modified(__pyx_ptype_4h5py_8_objects__Registry);
+
+  /* "h5py/_objects.pyx":215
+ * 
+ * 
+ * registry = _Registry()             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_3 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4h5py_8_objects__Registry)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 215; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__registry, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 215; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+  /* "h5py/_objects.pyx":309
+ * 
+ *     @classmethod
+ *     def open(cls, id):             # <<<<<<<<<<<<<<
+ *         """ Return a representation of an HDF5 identifier """
+ *         with registry.lock:
+ */
+  __pyx_t_3 = __Pyx_GetName((PyObject *)__pyx_ptype_4h5py_8_objects_ObjectID, __pyx_n_s__open); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 309; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_2 = __Pyx_Method_ClassMethod(__pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 308; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4h5py_8_objects_ObjectID->tp_dict, __pyx_n_s__open, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 309; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  PyType_Modified(__pyx_ptype_4h5py_8_objects_ObjectID);
+
+  /* "h5py/_objects.pyx":1
+ * # This file is part of h5py, a Python interface to the HDF5 library.             # <<<<<<<<<<<<<<
+ * #
+ * # http://www.h5py.org
+ */
+  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s____test__, ((PyObject *)__pyx_t_2)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  if (__pyx_m) {
+    __Pyx_AddTraceback("init h5py._objects", __pyx_clineno, __pyx_lineno, __pyx_filename);
+    Py_DECREF(__pyx_m); __pyx_m = 0;
+  } else if (!PyErr_Occurred()) {
+    PyErr_SetString(PyExc_ImportError, "init h5py._objects");
+  }
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  #if PY_MAJOR_VERSION < 3
+  return;
+  #else
+  return __pyx_m;
+  #endif
+}
+
+/* Runtime support code */
+#if CYTHON_REFNANNY
+static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) {
+    PyObject *m = NULL, *p = NULL;
+    void *r = NULL;
+    m = PyImport_ImportModule((char *)modname);
+    if (!m) goto end;
+    p = PyObject_GetAttrString(m, (char *)"RefNannyAPI");
+    if (!p) goto end;
+    r = PyLong_AsVoidPtr(p);
+end:
+    Py_XDECREF(p);
+    Py_XDECREF(m);
+    return (__Pyx_RefNannyAPIStruct *)r;
+}
+#endif /* CYTHON_REFNANNY */
+
+static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name) {
+    PyObject *result;
+    result = PyObject_GetAttr(dict, name);
+    if (!result) {
+        if (dict != __pyx_b) {
+            PyErr_Clear();
+            result = PyObject_GetAttr(__pyx_b, name);
+        }
+        if (!result) {
+            PyErr_SetObject(PyExc_NameError, name);
+        }
+    }
+    return result;
+}
+
+static void __Pyx_RaiseArgtupleInvalid(
+    const char* func_name,
+    int exact,
+    Py_ssize_t num_min,
+    Py_ssize_t num_max,
+    Py_ssize_t num_found)
+{
+    Py_ssize_t num_expected;
+    const char *more_or_less;
+    if (num_found < num_min) {
+        num_expected = num_min;
+        more_or_less = "at least";
+    } else {
+        num_expected = num_max;
+        more_or_less = "at most";
+    }
+    if (exact) {
+        more_or_less = "exactly";
+    }
+    PyErr_Format(PyExc_TypeError,
+                 "%s() takes %s %" CYTHON_FORMAT_SSIZE_T "d positional argument%s (%" CYTHON_FORMAT_SSIZE_T "d given)",
+                 func_name, more_or_less, num_expected,
+                 (num_expected == 1) ? "" : "s", num_found);
+}
+
+static CYTHON_INLINE int __Pyx_CheckKeywordStrings(
+    PyObject *kwdict,
+    const char* function_name,
+    int kw_allowed)
+{
+    PyObject* key = 0;
+    Py_ssize_t pos = 0;
+#if CPYTHON_COMPILING_IN_PYPY
+    if (!kw_allowed && PyDict_Next(kwdict, &pos, &key, 0))
+        goto invalid_keyword;
+    return 1;
+#else
+    while (PyDict_Next(kwdict, &pos, &key, 0)) {
+        #if PY_MAJOR_VERSION < 3
+        if (unlikely(!PyString_CheckExact(key)) && unlikely(!PyString_Check(key)))
+        #endif
+            if (unlikely(!PyUnicode_Check(key)))
+                goto invalid_keyword_type;
+    }
+    if ((!kw_allowed) && unlikely(key))
+        goto invalid_keyword;
+    return 1;
+invalid_keyword_type:
+    PyErr_Format(PyExc_TypeError,
+        "%s() keywords must be strings", function_name);
+    return 0;
+#endif
+invalid_keyword:
+    PyErr_Format(PyExc_TypeError,
+    #if PY_MAJOR_VERSION < 3
+        "%s() got an unexpected keyword argument '%s'",
+        function_name, PyString_AsString(key));
+    #else
+        "%s() got an unexpected keyword argument '%U'",
+        function_name, key);
+    #endif
+    return 0;
+}
+
+static void __Pyx_RaiseDoubleKeywordsError(
+    const char* func_name,
+    PyObject* kw_name)
+{
+    PyErr_Format(PyExc_TypeError,
+        #if PY_MAJOR_VERSION >= 3
+        "%s() got multiple values for keyword argument '%U'", func_name, kw_name);
+        #else
+        "%s() got multiple values for keyword argument '%s'", func_name,
+        PyString_AsString(kw_name));
+        #endif
+}
+
+static int __Pyx_ParseOptionalKeywords(
+    PyObject *kwds,
+    PyObject **argnames[],
+    PyObject *kwds2,
+    PyObject *values[],
+    Py_ssize_t num_pos_args,
+    const char* function_name)
+{
+    PyObject *key = 0, *value = 0;
+    Py_ssize_t pos = 0;
+    PyObject*** name;
+    PyObject*** first_kw_arg = argnames + num_pos_args;
+    while (PyDict_Next(kwds, &pos, &key, &value)) {
+        name = first_kw_arg;
+        while (*name && (**name != key)) name++;
+        if (*name) {
+            values[name-argnames] = value;
+            continue;
+        }
+        name = first_kw_arg;
+        #if PY_MAJOR_VERSION < 3
+        if (likely(PyString_CheckExact(key)) || likely(PyString_Check(key))) {
+            while (*name) {
+                if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key))
+                        && _PyString_Eq(**name, key)) {
+                    values[name-argnames] = value;
+                    break;
+                }
+                name++;
+            }
+            if (*name) continue;
+            else {
+                PyObject*** argname = argnames;
+                while (argname != first_kw_arg) {
+                    if ((**argname == key) || (
+                            (CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**argname) == PyString_GET_SIZE(key))
+                             && _PyString_Eq(**argname, key))) {
+                        goto arg_passed_twice;
+                    }
+                    argname++;
+                }
+            }
+        } else
+        #endif
+        if (likely(PyUnicode_Check(key))) {
+            while (*name) {
+                int cmp = (**name == key) ? 0 :
+                #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
+                    (PyUnicode_GET_SIZE(**name) != PyUnicode_GET_SIZE(key)) ? 1 :
+                #endif
+                    PyUnicode_Compare(**name, key);
+                if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
+                if (cmp == 0) {
+                    values[name-argnames] = value;
+                    break;
+                }
+                name++;
+            }
+            if (*name) continue;
+            else {
+                PyObject*** argname = argnames;
+                while (argname != first_kw_arg) {
+                    int cmp = (**argname == key) ? 0 :
+                    #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
+                        (PyUnicode_GET_SIZE(**argname) != PyUnicode_GET_SIZE(key)) ? 1 :
+                    #endif
+                        PyUnicode_Compare(**argname, key);
+                    if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
+                    if (cmp == 0) goto arg_passed_twice;
+                    argname++;
+                }
+            }
+        } else
+            goto invalid_keyword_type;
+        if (kwds2) {
+            if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad;
+        } else {
+            goto invalid_keyword;
+        }
+    }
+    return 0;
+arg_passed_twice:
+    __Pyx_RaiseDoubleKeywordsError(function_name, key);
+    goto bad;
+invalid_keyword_type:
+    PyErr_Format(PyExc_TypeError,
+        "%s() keywords must be strings", function_name);
+    goto bad;
+invalid_keyword:
+    PyErr_Format(PyExc_TypeError,
+    #if PY_MAJOR_VERSION < 3
+        "%s() got an unexpected keyword argument '%s'",
+        function_name, PyString_AsString(key));
+    #else
+        "%s() got an unexpected keyword argument '%U'",
+        function_name, key);
+    #endif
+bad:
+    return -1;
+}
+
+static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb) {
+#if CYTHON_COMPILING_IN_CPYTHON
+    PyObject *tmp_type, *tmp_value, *tmp_tb;
+    PyThreadState *tstate = PyThreadState_GET();
+    tmp_type = tstate->curexc_type;
+    tmp_value = tstate->curexc_value;
+    tmp_tb = tstate->curexc_traceback;
+    tstate->curexc_type = type;
+    tstate->curexc_value = value;
+    tstate->curexc_traceback = tb;
+    Py_XDECREF(tmp_type);
+    Py_XDECREF(tmp_value);
+    Py_XDECREF(tmp_tb);
+#else
+    PyErr_Restore(type, value, tb);
+#endif
+}
+static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb) {
+#if CYTHON_COMPILING_IN_CPYTHON
+    PyThreadState *tstate = PyThreadState_GET();
+    *type = tstate->curexc_type;
+    *value = tstate->curexc_value;
+    *tb = tstate->curexc_traceback;
+    tstate->curexc_type = 0;
+    tstate->curexc_value = 0;
+    tstate->curexc_traceback = 0;
+#else
+    PyErr_Fetch(type, value, tb);
+#endif
+}
+
+#if PY_MAJOR_VERSION < 3
+static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb,
+                        CYTHON_UNUSED PyObject *cause) {
+    Py_XINCREF(type);
+    if (!value || value == Py_None)
+        value = NULL;
+    else
+        Py_INCREF(value);
+    if (!tb || tb == Py_None)
+        tb = NULL;
+    else {
+        Py_INCREF(tb);
+        if (!PyTraceBack_Check(tb)) {
+            PyErr_SetString(PyExc_TypeError,
+                "raise: arg 3 must be a traceback or None");
+            goto raise_error;
+        }
+    }
+    #if PY_VERSION_HEX < 0x02050000
+    if (PyClass_Check(type)) {
+    #else
+    if (PyType_Check(type)) {
+    #endif
+#if CYTHON_COMPILING_IN_PYPY
+        if (!value) {
+            Py_INCREF(Py_None);
+            value = Py_None;
+        }
+#endif
+        PyErr_NormalizeException(&type, &value, &tb);
+    } else {
+        if (value) {
+            PyErr_SetString(PyExc_TypeError,
+                "instance exception may not have a separate value");
+            goto raise_error;
+        }
+        value = type;
+        #if PY_VERSION_HEX < 0x02050000
+            if (PyInstance_Check(type)) {
+                type = (PyObject*) ((PyInstanceObject*)type)->in_class;
+                Py_INCREF(type);
+            }
+            else {
+                type = 0;
+                PyErr_SetString(PyExc_TypeError,
+                    "raise: exception must be an old-style class or instance");
+                goto raise_error;
+            }
+        #else
+            type = (PyObject*) Py_TYPE(type);
+            Py_INCREF(type);
+            if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) {
+                PyErr_SetString(PyExc_TypeError,
+                    "raise: exception class must be a subclass of BaseException");
+                goto raise_error;
+            }
+        #endif
+    }
+    __Pyx_ErrRestore(type, value, tb);
+    return;
+raise_error:
+    Py_XDECREF(value);
+    Py_XDECREF(type);
+    Py_XDECREF(tb);
+    return;
+}
+#else /* Python 3+ */
+static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) {
+    PyObject* owned_instance = NULL;
+    if (tb == Py_None) {
+        tb = 0;
+    } else if (tb && !PyTraceBack_Check(tb)) {
+        PyErr_SetString(PyExc_TypeError,
+            "raise: arg 3 must be a traceback or None");
+        goto bad;
+    }
+    if (value == Py_None)
+        value = 0;
+    if (PyExceptionInstance_Check(type)) {
+        if (value) {
+            PyErr_SetString(PyExc_TypeError,
+                "instance exception may not have a separate value");
+            goto bad;
+        }
+        value = type;
+        type = (PyObject*) Py_TYPE(value);
+    } else if (PyExceptionClass_Check(type)) {
+        PyObject *args;
+        if (!value)
+            args = PyTuple_New(0);
+        else if (PyTuple_Check(value)) {
+            Py_INCREF(value);
+            args = value;
+        }
+        else
+            args = PyTuple_Pack(1, value);
+        if (!args)
+            goto bad;
+        owned_instance = PyEval_CallObject(type, args);
+        Py_DECREF(args);
+        if (!owned_instance)
+            goto bad;
+        value = owned_instance;
+        if (!PyExceptionInstance_Check(value)) {
+            PyErr_Format(PyExc_TypeError,
+                         "calling %R should have returned an instance of "
+                         "BaseException, not %R",
+                         type, Py_TYPE(value));
+            goto bad;
+        }
+    } else {
+        PyErr_SetString(PyExc_TypeError,
+            "raise: exception class must be a subclass of BaseException");
+        goto bad;
+    }
+    if (cause && cause != Py_None) {
+        PyObject *fixed_cause;
+        if (PyExceptionClass_Check(cause)) {
+            fixed_cause = PyObject_CallObject(cause, NULL);
+            if (fixed_cause == NULL)
+                goto bad;
+        }
+        else if (PyExceptionInstance_Check(cause)) {
+            fixed_cause = cause;
+            Py_INCREF(fixed_cause);
+        }
+        else {
+            PyErr_SetString(PyExc_TypeError,
+                            "exception causes must derive from "
+                            "BaseException");
+            goto bad;
+        }
+        PyException_SetCause(value, fixed_cause);
+    }
+    PyErr_SetObject(type, value);
+    if (tb) {
+        PyThreadState *tstate = PyThreadState_GET();
+        PyObject* tmp_tb = tstate->curexc_traceback;
+        if (tb != tmp_tb) {
+            Py_INCREF(tb);
+            tstate->curexc_traceback = tb;
+            Py_XDECREF(tmp_tb);
+        }
+    }
+bad:
+    Py_XDECREF(owned_instance);
+    return;
+}
+#endif
+
+static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname) {
+    PyErr_Format(PyExc_UnboundLocalError, "local variable '%s' referenced before assignment", varname);
+}
+
+static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) {
+    PyObject *local_type, *local_value, *local_tb;
+#if CYTHON_COMPILING_IN_CPYTHON
+    PyObject *tmp_type, *tmp_value, *tmp_tb;
+    PyThreadState *tstate = PyThreadState_GET();
+    local_type = tstate->curexc_type;
+    local_value = tstate->curexc_value;
+    local_tb = tstate->curexc_traceback;
+    tstate->curexc_type = 0;
+    tstate->curexc_value = 0;
+    tstate->curexc_traceback = 0;
+#else
+    PyErr_Fetch(&local_type, &local_value, &local_tb);
+#endif
+    PyErr_NormalizeException(&local_type, &local_value, &local_tb);
+#if CYTHON_COMPILING_IN_CPYTHON
+    if (unlikely(tstate->curexc_type))
+#else
+    if (unlikely(PyErr_Occurred()))
+#endif
+        goto bad;
+    #if PY_MAJOR_VERSION >= 3
+    if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0))
+        goto bad;
+    #endif
+    Py_INCREF(local_type);
+    Py_INCREF(local_value);
+    Py_INCREF(local_tb);
+    *type = local_type;
+    *value = local_value;
+    *tb = local_tb;
+#if CYTHON_COMPILING_IN_CPYTHON
+    tmp_type = tstate->exc_type;
+    tmp_value = tstate->exc_value;
+    tmp_tb = tstate->exc_traceback;
+    tstate->exc_type = local_type;
+    tstate->exc_value = local_value;
+    tstate->exc_traceback = local_tb;
+    /* Make sure tstate is in a consistent state when we XDECREF
+       these objects (DECREF may run arbitrary code). */
+    Py_XDECREF(tmp_type);
+    Py_XDECREF(tmp_value);
+    Py_XDECREF(tmp_tb);
+#else
+    PyErr_SetExcInfo(local_type, local_value, local_tb);
+#endif
+    return 0;
+bad:
+    *type = 0;
+    *value = 0;
+    *tb = 0;
+    Py_XDECREF(local_type);
+    Py_XDECREF(local_value);
+    Py_XDECREF(local_tb);
+    return -1;
+}
+
+static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) {
+    if (unlikely(!type)) {
+        PyErr_Format(PyExc_SystemError, "Missing type object");
+        return 0;
+    }
+    if (likely(PyObject_TypeCheck(obj, type)))
+        return 1;
+    PyErr_Format(PyExc_TypeError, "Cannot convert %.200s to %.200s",
+                 Py_TYPE(obj)->tp_name, type->tp_name);
+    return 0;
+}
+
+static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_hid_t(hid_t val) {
+    const hid_t neg_one = (hid_t)-1, const_zero = (hid_t)0;
+    const int is_unsigned = const_zero < neg_one;
+    if ((sizeof(hid_t) == sizeof(char))  ||
+        (sizeof(hid_t) == sizeof(short))) {
+        return PyInt_FromLong((long)val);
+    } else if ((sizeof(hid_t) == sizeof(int)) ||
+               (sizeof(hid_t) == sizeof(long))) {
+        if (is_unsigned)
+            return PyLong_FromUnsignedLong((unsigned long)val);
+        else
+            return PyInt_FromLong((long)val);
+    } else if (sizeof(hid_t) == sizeof(PY_LONG_LONG)) {
+        if (is_unsigned)
+            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG)val);
+        else
+            return PyLong_FromLongLong((PY_LONG_LONG)val);
+    } else {
+        int one = 1; int little = (int)*(unsigned char *)&one;
+        unsigned char *bytes = (unsigned char *)&val;
+        return _PyLong_FromByteArray(bytes, sizeof(hid_t),
+                                     little, !is_unsigned);
+    }
+}
+
+static CYTHON_INLINE void __Pyx_ExceptionSave(PyObject **type, PyObject **value, PyObject **tb) {
+#if CYTHON_COMPILING_IN_CPYTHON
+    PyThreadState *tstate = PyThreadState_GET();
+    *type = tstate->exc_type;
+    *value = tstate->exc_value;
+    *tb = tstate->exc_traceback;
+    Py_XINCREF(*type);
+    Py_XINCREF(*value);
+    Py_XINCREF(*tb);
+#else
+    PyErr_GetExcInfo(type, value, tb);
+#endif
+}
+static void __Pyx_ExceptionReset(PyObject *type, PyObject *value, PyObject *tb) {
+#if CYTHON_COMPILING_IN_CPYTHON
+    PyObject *tmp_type, *tmp_value, *tmp_tb;
+    PyThreadState *tstate = PyThreadState_GET();
+    tmp_type = tstate->exc_type;
+    tmp_value = tstate->exc_value;
+    tmp_tb = tstate->exc_traceback;
+    tstate->exc_type = type;
+    tstate->exc_value = value;
+    tstate->exc_traceback = tb;
+    Py_XDECREF(tmp_type);
+    Py_XDECREF(tmp_value);
+    Py_XDECREF(tmp_tb);
+#else
+    PyErr_SetExcInfo(type, value, tb);
+#endif
+}
+
+static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) {
+    PyObject *empty_list = 0;
+    PyObject *module = 0;
+    PyObject *global_dict = 0;
+    PyObject *empty_dict = 0;
+    PyObject *list;
+    #if PY_VERSION_HEX < 0x03030000
+    PyObject *py_import = 0;
+    py_import = __Pyx_GetAttrString(__pyx_b, "__import__");
+    if (!py_import)
+        goto bad;
+    #endif
+    if (from_list)
+        list = from_list;
+    else {
+        empty_list = PyList_New(0);
+        if (!empty_list)
+            goto bad;
+        list = empty_list;
+    }
+    global_dict = PyModule_GetDict(__pyx_m);
+    if (!global_dict)
+        goto bad;
+    empty_dict = PyDict_New();
+    if (!empty_dict)
+        goto bad;
+    #if PY_VERSION_HEX >= 0x02050000
+    {
+        #if PY_MAJOR_VERSION >= 3
+        if (level == -1) {
+            if (strchr(__Pyx_MODULE_NAME, '.')) {
+                #if PY_VERSION_HEX < 0x03030000
+                PyObject *py_level = PyInt_FromLong(1);
+                if (!py_level)
+                    goto bad;
+                module = PyObject_CallFunctionObjArgs(py_import,
+                    name, global_dict, empty_dict, list, py_level, NULL);
+                Py_DECREF(py_level);
+                #else
+                module = PyImport_ImportModuleLevelObject(
+                    name, global_dict, empty_dict, list, 1);
+                #endif
+                if (!module) {
+                    if (!PyErr_ExceptionMatches(PyExc_ImportError))
+                        goto bad;
+                    PyErr_Clear();
+                }
+            }
+            level = 0; /* try absolute import on failure */
+        }
+        #endif
+        if (!module) {
+            #if PY_VERSION_HEX < 0x03030000
+            PyObject *py_level = PyInt_FromLong(level);
+            if (!py_level)
+                goto bad;
+            module = PyObject_CallFunctionObjArgs(py_import,
+                name, global_dict, empty_dict, list, py_level, NULL);
+            Py_DECREF(py_level);
+            #else
+            module = PyImport_ImportModuleLevelObject(
+                name, global_dict, empty_dict, list, level);
+            #endif
+        }
+    }
+    #else
+    if (level>0) {
+        PyErr_SetString(PyExc_RuntimeError, "Relative import is not supported for Python <=2.4.");
+        goto bad;
+    }
+    module = PyObject_CallFunctionObjArgs(py_import,
+        name, global_dict, empty_dict, list, NULL);
+    #endif
+bad:
+    #if PY_VERSION_HEX < 0x03030000
+    Py_XDECREF(py_import);
+    #endif
+    Py_XDECREF(empty_list);
+    Py_XDECREF(empty_dict);
+    return module;
+}
+
+static CYTHON_INLINE void __Pyx_RaiseImportError(PyObject *name) {
+#if PY_MAJOR_VERSION < 3
+    PyErr_Format(PyExc_ImportError, "cannot import name %.230s",
+                 PyString_AsString(name));
+#else
+    PyErr_Format(PyExc_ImportError, "cannot import name %S", name);
+#endif
+}
+
+static CYTHON_INLINE hid_t __Pyx_PyInt_from_py_hid_t(PyObject* x) {
+    const hid_t neg_one = (hid_t)-1, const_zero = (hid_t)0;
+    const int is_unsigned = const_zero < neg_one;
+    if (sizeof(hid_t) == sizeof(char)) {
+        if (is_unsigned)
+            return (hid_t)__Pyx_PyInt_AsUnsignedChar(x);
+        else
+            return (hid_t)__Pyx_PyInt_AsSignedChar(x);
+    } else if (sizeof(hid_t) == sizeof(short)) {
+        if (is_unsigned)
+            return (hid_t)__Pyx_PyInt_AsUnsignedShort(x);
+        else
+            return (hid_t)__Pyx_PyInt_AsSignedShort(x);
+    } else if (sizeof(hid_t) == sizeof(int)) {
+        if (is_unsigned)
+            return (hid_t)__Pyx_PyInt_AsUnsignedInt(x);
+        else
+            return (hid_t)__Pyx_PyInt_AsSignedInt(x);
+    } else if (sizeof(hid_t) == sizeof(long)) {
+        if (is_unsigned)
+            return (hid_t)__Pyx_PyInt_AsUnsignedLong(x);
+        else
+            return (hid_t)__Pyx_PyInt_AsSignedLong(x);
+    } else if (sizeof(hid_t) == sizeof(PY_LONG_LONG)) {
+        if (is_unsigned)
+            return (hid_t)__Pyx_PyInt_AsUnsignedLongLong(x);
+        else
+            return (hid_t)__Pyx_PyInt_AsSignedLongLong(x);
+    }  else {
+        #if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
+        PyErr_SetString(PyExc_RuntimeError,
+                        "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
+        #else
+        hid_t val;
+        PyObject *v = __Pyx_PyNumber_Int(x);
+        #if PY_VERSION_HEX < 0x03000000
+        if (likely(v) && !PyLong_Check(v)) {
+            PyObject *tmp = v;
+            v = PyNumber_Long(tmp);
+            Py_DECREF(tmp);
+        }
+        #endif
+        if (likely(v)) {
+            int one = 1; int is_little = (int)*(unsigned char *)&one;
+            unsigned char *bytes = (unsigned char *)&val;
+            int ret = _PyLong_AsByteArray((PyLongObject *)v,
+                                          bytes, sizeof(val),
+                                          is_little, !is_unsigned);
+            Py_DECREF(v);
+            if (likely(!ret))
+                return val;
+        }
+        #endif
+        return (hid_t)-1;
+    }
+}
+
+static PyObject* __Pyx_Method_ClassMethod(PyObject *method) {
+#if CYTHON_COMPILING_IN_PYPY
+    if (PyObject_TypeCheck(method, &PyWrapperDescr_Type)) { /* cdef classes */
+        return PyClassMethod_New(method);
+    }
+#else
+    static PyTypeObject *methoddescr_type = NULL;
+    if (methoddescr_type == NULL) {
+       PyObject *meth = __Pyx_GetAttrString((PyObject*)&PyList_Type, "append");
+       if (!meth) return NULL;
+       methoddescr_type = Py_TYPE(meth);
+       Py_DECREF(meth);
+    }
+    if (PyObject_TypeCheck(method, methoddescr_type)) { /* cdef classes */
+        PyMethodDescrObject *descr = (PyMethodDescrObject *)method;
+        #if PY_VERSION_HEX < 0x03020000
+        PyTypeObject *d_type = descr->d_type;
+        #else
+        PyTypeObject *d_type = descr->d_common.d_type;
+        #endif
+        return PyDescr_NewClassMethod(d_type, descr->d_method);
+    }
+#endif
+    else if (PyMethod_Check(method)) { /* python classes */
+        return PyClassMethod_New(PyMethod_GET_FUNCTION(method));
+    }
+    else if (PyCFunction_Check(method)) {
+        return PyClassMethod_New(method);
+    }
+#ifdef __Pyx_CyFunction_USED
+    else if (PyObject_TypeCheck(method, __pyx_CyFunctionType)) {
+        return PyClassMethod_New(method);
+    }
+#endif
+    PyErr_Format(PyExc_TypeError,
+                 "Class-level classmethod() can only be called on "
+                 "a method_descriptor or instance method.");
+    return NULL;
+}
+
+static CYTHON_INLINE unsigned char __Pyx_PyInt_AsUnsignedChar(PyObject* x) {
+    const unsigned char neg_one = (unsigned char)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(unsigned char) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(unsigned char)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to unsigned char" :
+                    "value too large to convert to unsigned char");
+            }
+            return (unsigned char)-1;
+        }
+        return (unsigned char)val;
+    }
+    return (unsigned char)__Pyx_PyInt_AsUnsignedLong(x);
+}
+
+static CYTHON_INLINE unsigned short __Pyx_PyInt_AsUnsignedShort(PyObject* x) {
+    const unsigned short neg_one = (unsigned short)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(unsigned short) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(unsigned short)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to unsigned short" :
+                    "value too large to convert to unsigned short");
+            }
+            return (unsigned short)-1;
+        }
+        return (unsigned short)val;
+    }
+    return (unsigned short)__Pyx_PyInt_AsUnsignedLong(x);
+}
+
+static CYTHON_INLINE unsigned int __Pyx_PyInt_AsUnsignedInt(PyObject* x) {
+    const unsigned int neg_one = (unsigned int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(unsigned int) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(unsigned int)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to unsigned int" :
+                    "value too large to convert to unsigned int");
+            }
+            return (unsigned int)-1;
+        }
+        return (unsigned int)val;
+    }
+    return (unsigned int)__Pyx_PyInt_AsUnsignedLong(x);
+}
+
+static CYTHON_INLINE char __Pyx_PyInt_AsChar(PyObject* x) {
+    const char neg_one = (char)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(char) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(char)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to char" :
+                    "value too large to convert to char");
+            }
+            return (char)-1;
+        }
+        return (char)val;
+    }
+    return (char)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE short __Pyx_PyInt_AsShort(PyObject* x) {
+    const short neg_one = (short)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(short) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(short)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to short" :
+                    "value too large to convert to short");
+            }
+            return (short)-1;
+        }
+        return (short)val;
+    }
+    return (short)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE int __Pyx_PyInt_AsInt(PyObject* x) {
+    const int neg_one = (int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(int) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(int)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to int" :
+                    "value too large to convert to int");
+            }
+            return (int)-1;
+        }
+        return (int)val;
+    }
+    return (int)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE signed char __Pyx_PyInt_AsSignedChar(PyObject* x) {
+    const signed char neg_one = (signed char)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(signed char) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(signed char)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to signed char" :
+                    "value too large to convert to signed char");
+            }
+            return (signed char)-1;
+        }
+        return (signed char)val;
+    }
+    return (signed char)__Pyx_PyInt_AsSignedLong(x);
+}
+
+static CYTHON_INLINE signed short __Pyx_PyInt_AsSignedShort(PyObject* x) {
+    const signed short neg_one = (signed short)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(signed short) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(signed short)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to signed short" :
+                    "value too large to convert to signed short");
+            }
+            return (signed short)-1;
+        }
+        return (signed short)val;
+    }
+    return (signed short)__Pyx_PyInt_AsSignedLong(x);
+}
+
+static CYTHON_INLINE signed int __Pyx_PyInt_AsSignedInt(PyObject* x) {
+    const signed int neg_one = (signed int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(signed int) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(signed int)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to signed int" :
+                    "value too large to convert to signed int");
+            }
+            return (signed int)-1;
+        }
+        return (signed int)val;
+    }
+    return (signed int)__Pyx_PyInt_AsSignedLong(x);
+}
+
+static CYTHON_INLINE int __Pyx_PyInt_AsLongDouble(PyObject* x) {
+    const int neg_one = (int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(int) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(int)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to int" :
+                    "value too large to convert to int");
+            }
+            return (int)-1;
+        }
+        return (int)val;
+    }
+    return (int)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE unsigned long __Pyx_PyInt_AsUnsignedLong(PyObject* x) {
+    const unsigned long neg_one = (unsigned long)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to unsigned long");
+            return (unsigned long)-1;
+        }
+        return (unsigned long)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to unsigned long");
+                return (unsigned long)-1;
+            }
+            return (unsigned long)PyLong_AsUnsignedLong(x);
+        } else {
+            return (unsigned long)PyLong_AsLong(x);
+        }
+    } else {
+        unsigned long val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (unsigned long)-1;
+        val = __Pyx_PyInt_AsUnsignedLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE unsigned PY_LONG_LONG __Pyx_PyInt_AsUnsignedLongLong(PyObject* x) {
+    const unsigned PY_LONG_LONG neg_one = (unsigned PY_LONG_LONG)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to unsigned PY_LONG_LONG");
+            return (unsigned PY_LONG_LONG)-1;
+        }
+        return (unsigned PY_LONG_LONG)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to unsigned PY_LONG_LONG");
+                return (unsigned PY_LONG_LONG)-1;
+            }
+            return (unsigned PY_LONG_LONG)PyLong_AsUnsignedLongLong(x);
+        } else {
+            return (unsigned PY_LONG_LONG)PyLong_AsLongLong(x);
+        }
+    } else {
+        unsigned PY_LONG_LONG val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (unsigned PY_LONG_LONG)-1;
+        val = __Pyx_PyInt_AsUnsignedLongLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE long __Pyx_PyInt_AsLong(PyObject* x) {
+    const long neg_one = (long)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to long");
+            return (long)-1;
+        }
+        return (long)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to long");
+                return (long)-1;
+            }
+            return (long)PyLong_AsUnsignedLong(x);
+        } else {
+            return (long)PyLong_AsLong(x);
+        }
+    } else {
+        long val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (long)-1;
+        val = __Pyx_PyInt_AsLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE PY_LONG_LONG __Pyx_PyInt_AsLongLong(PyObject* x) {
+    const PY_LONG_LONG neg_one = (PY_LONG_LONG)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to PY_LONG_LONG");
+            return (PY_LONG_LONG)-1;
+        }
+        return (PY_LONG_LONG)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to PY_LONG_LONG");
+                return (PY_LONG_LONG)-1;
+            }
+            return (PY_LONG_LONG)PyLong_AsUnsignedLongLong(x);
+        } else {
+            return (PY_LONG_LONG)PyLong_AsLongLong(x);
+        }
+    } else {
+        PY_LONG_LONG val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (PY_LONG_LONG)-1;
+        val = __Pyx_PyInt_AsLongLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE signed long __Pyx_PyInt_AsSignedLong(PyObject* x) {
+    const signed long neg_one = (signed long)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to signed long");
+            return (signed long)-1;
+        }
+        return (signed long)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to signed long");
+                return (signed long)-1;
+            }
+            return (signed long)PyLong_AsUnsignedLong(x);
+        } else {
+            return (signed long)PyLong_AsLong(x);
+        }
+    } else {
+        signed long val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (signed long)-1;
+        val = __Pyx_PyInt_AsSignedLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE signed PY_LONG_LONG __Pyx_PyInt_AsSignedLongLong(PyObject* x) {
+    const signed PY_LONG_LONG neg_one = (signed PY_LONG_LONG)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to signed PY_LONG_LONG");
+            return (signed PY_LONG_LONG)-1;
+        }
+        return (signed PY_LONG_LONG)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to signed PY_LONG_LONG");
+                return (signed PY_LONG_LONG)-1;
+            }
+            return (signed PY_LONG_LONG)PyLong_AsUnsignedLongLong(x);
+        } else {
+            return (signed PY_LONG_LONG)PyLong_AsLongLong(x);
+        }
+    } else {
+        signed PY_LONG_LONG val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (signed PY_LONG_LONG)-1;
+        val = __Pyx_PyInt_AsSignedLongLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static int __Pyx_check_binary_version(void) {
+    char ctversion[4], rtversion[4];
+    PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION);
+    PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion());
+    if (ctversion[0] != rtversion[0] || ctversion[2] != rtversion[2]) {
+        char message[200];
+        PyOS_snprintf(message, sizeof(message),
+                      "compiletime version %s of module '%.100s' "
+                      "does not match runtime version %s",
+                      ctversion, __Pyx_MODULE_NAME, rtversion);
+        #if PY_VERSION_HEX < 0x02050000
+        return PyErr_Warn(NULL, message);
+        #else
+        return PyErr_WarnEx(NULL, message, 1);
+        #endif
+    }
+    return 0;
+}
+
+static int __Pyx_ExportFunction(const char *name, void (*f)(void), const char *sig) {
+    PyObject *d = 0;
+    PyObject *cobj = 0;
+    union {
+        void (*fp)(void);
+        void *p;
+    } tmp;
+    d = PyObject_GetAttrString(__pyx_m, (char *)"__pyx_capi__");
+    if (!d) {
+        PyErr_Clear();
+        d = PyDict_New();
+        if (!d)
+            goto bad;
+        Py_INCREF(d);
+        if (PyModule_AddObject(__pyx_m, (char *)"__pyx_capi__", d) < 0)
+            goto bad;
+    }
+    tmp.fp = f;
+#if PY_VERSION_HEX >= 0x02070000 && !(PY_MAJOR_VERSION==3&&PY_MINOR_VERSION==0)
+    cobj = PyCapsule_New(tmp.p, sig, 0);
+#else
+    cobj = PyCObject_FromVoidPtrAndDesc(tmp.p, (void *)sig, 0);
+#endif
+    if (!cobj)
+        goto bad;
+    if (PyDict_SetItemString(d, name, cobj) < 0)
+        goto bad;
+    Py_DECREF(cobj);
+    Py_DECREF(d);
+    return 0;
+bad:
+    Py_XDECREF(cobj);
+    Py_XDECREF(d);
+    return -1;
+}
+
+#ifndef __PYX_HAVE_RT_ImportModule
+#define __PYX_HAVE_RT_ImportModule
+static PyObject *__Pyx_ImportModule(const char *name) {
+    PyObject *py_name = 0;
+    PyObject *py_module = 0;
+    py_name = __Pyx_PyIdentifier_FromString(name);
+    if (!py_name)
+        goto bad;
+    py_module = PyImport_Import(py_name);
+    Py_DECREF(py_name);
+    return py_module;
+bad:
+    Py_XDECREF(py_name);
+    return 0;
+}
+#endif
+
+#ifndef __PYX_HAVE_RT_ImportType
+#define __PYX_HAVE_RT_ImportType
+static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name,
+    size_t size, int strict)
+{
+    PyObject *py_module = 0;
+    PyObject *result = 0;
+    PyObject *py_name = 0;
+    char warning[200];
+    Py_ssize_t basicsize;
+#ifdef Py_LIMITED_API
+    PyObject *py_basicsize;
+#endif
+    py_module = __Pyx_ImportModule(module_name);
+    if (!py_module)
+        goto bad;
+    py_name = __Pyx_PyIdentifier_FromString(class_name);
+    if (!py_name)
+        goto bad;
+    result = PyObject_GetAttr(py_module, py_name);
+    Py_DECREF(py_name);
+    py_name = 0;
+    Py_DECREF(py_module);
+    py_module = 0;
+    if (!result)
+        goto bad;
+    if (!PyType_Check(result)) {
+        PyErr_Format(PyExc_TypeError,
+            "%s.%s is not a type object",
+            module_name, class_name);
+        goto bad;
+    }
+#ifndef Py_LIMITED_API
+    basicsize = ((PyTypeObject *)result)->tp_basicsize;
+#else
+    py_basicsize = PyObject_GetAttrString(result, "__basicsize__");
+    if (!py_basicsize)
+        goto bad;
+    basicsize = PyLong_AsSsize_t(py_basicsize);
+    Py_DECREF(py_basicsize);
+    py_basicsize = 0;
+    if (basicsize == (Py_ssize_t)-1 && PyErr_Occurred())
+        goto bad;
+#endif
+    if (!strict && (size_t)basicsize > size) {
+        PyOS_snprintf(warning, sizeof(warning),
+            "%s.%s size changed, may indicate binary incompatibility",
+            module_name, class_name);
+        #if PY_VERSION_HEX < 0x02050000
+        if (PyErr_Warn(NULL, warning) < 0) goto bad;
+        #else
+        if (PyErr_WarnEx(NULL, warning, 0) < 0) goto bad;
+        #endif
+    }
+    else if ((size_t)basicsize != size) {
+        PyErr_Format(PyExc_ValueError,
+            "%s.%s has the wrong size, try recompiling",
+            module_name, class_name);
+        goto bad;
+    }
+    return (PyTypeObject *)result;
+bad:
+    Py_XDECREF(py_module);
+    Py_XDECREF(result);
+    return NULL;
+}
+#endif
+
+#ifndef __PYX_HAVE_RT_ImportFunction
+#define __PYX_HAVE_RT_ImportFunction
+static int __Pyx_ImportFunction(PyObject *module, const char *funcname, void (**f)(void), const char *sig) {
+    PyObject *d = 0;
+    PyObject *cobj = 0;
+    union {
+        void (*fp)(void);
+        void *p;
+    } tmp;
+    d = PyObject_GetAttrString(module, (char *)"__pyx_capi__");
+    if (!d)
+        goto bad;
+    cobj = PyDict_GetItemString(d, funcname);
+    if (!cobj) {
+        PyErr_Format(PyExc_ImportError,
+            "%s does not export expected C function %s",
+                PyModule_GetName(module), funcname);
+        goto bad;
+    }
+#if PY_VERSION_HEX >= 0x02070000 && !(PY_MAJOR_VERSION==3 && PY_MINOR_VERSION==0)
+    if (!PyCapsule_IsValid(cobj, sig)) {
+        PyErr_Format(PyExc_TypeError,
+            "C function %s.%s has wrong signature (expected %s, got %s)",
+             PyModule_GetName(module), funcname, sig, PyCapsule_GetName(cobj));
+        goto bad;
+    }
+    tmp.p = PyCapsule_GetPointer(cobj, sig);
+#else
+    {const char *desc, *s1, *s2;
+    desc = (const char *)PyCObject_GetDesc(cobj);
+    if (!desc)
+        goto bad;
+    s1 = desc; s2 = sig;
+    while (*s1 != '\0' && *s1 == *s2) { s1++; s2++; }
+    if (*s1 != *s2) {
+        PyErr_Format(PyExc_TypeError,
+            "C function %s.%s has wrong signature (expected %s, got %s)",
+             PyModule_GetName(module), funcname, sig, desc);
+        goto bad;
+    }
+    tmp.p = PyCObject_AsVoidPtr(cobj);}
+#endif
+    *f = tmp.fp;
+    if (!(*f))
+        goto bad;
+    Py_DECREF(d);
+    return 0;
+bad:
+    Py_XDECREF(d);
+    return -1;
+}
+#endif
+
+static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) {
+    int start = 0, mid = 0, end = count - 1;
+    if (end >= 0 && code_line > entries[end].code_line) {
+        return count;
+    }
+    while (start < end) {
+        mid = (start + end) / 2;
+        if (code_line < entries[mid].code_line) {
+            end = mid;
+        } else if (code_line > entries[mid].code_line) {
+             start = mid + 1;
+        } else {
+            return mid;
+        }
+    }
+    if (code_line <= entries[mid].code_line) {
+        return mid;
+    } else {
+        return mid + 1;
+    }
+}
+static PyCodeObject *__pyx_find_code_object(int code_line) {
+    PyCodeObject* code_object;
+    int pos;
+    if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) {
+        return NULL;
+    }
+    pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
+    if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) {
+        return NULL;
+    }
+    code_object = __pyx_code_cache.entries[pos].code_object;
+    Py_INCREF(code_object);
+    return code_object;
+}
+static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) {
+    int pos, i;
+    __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries;
+    if (unlikely(!code_line)) {
+        return;
+    }
+    if (unlikely(!entries)) {
+        entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry));
+        if (likely(entries)) {
+            __pyx_code_cache.entries = entries;
+            __pyx_code_cache.max_count = 64;
+            __pyx_code_cache.count = 1;
+            entries[0].code_line = code_line;
+            entries[0].code_object = code_object;
+            Py_INCREF(code_object);
+        }
+        return;
+    }
+    pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
+    if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) {
+        PyCodeObject* tmp = entries[pos].code_object;
+        entries[pos].code_object = code_object;
+        Py_DECREF(tmp);
+        return;
+    }
+    if (__pyx_code_cache.count == __pyx_code_cache.max_count) {
+        int new_max = __pyx_code_cache.max_count + 64;
+        entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc(
+            __pyx_code_cache.entries, new_max*sizeof(__Pyx_CodeObjectCacheEntry));
+        if (unlikely(!entries)) {
+            return;
+        }
+        __pyx_code_cache.entries = entries;
+        __pyx_code_cache.max_count = new_max;
+    }
+    for (i=__pyx_code_cache.count; i>pos; i--) {
+        entries[i] = entries[i-1];
+    }
+    entries[pos].code_line = code_line;
+    entries[pos].code_object = code_object;
+    __pyx_code_cache.count++;
+    Py_INCREF(code_object);
+}
+
+#include "compile.h"
+#include "frameobject.h"
+#include "traceback.h"
+static PyCodeObject* __Pyx_CreateCodeObjectForTraceback(
+            const char *funcname, int c_line,
+            int py_line, const char *filename) {
+    PyCodeObject *py_code = 0;
+    PyObject *py_srcfile = 0;
+    PyObject *py_funcname = 0;
+    #if PY_MAJOR_VERSION < 3
+    py_srcfile = PyString_FromString(filename);
+    #else
+    py_srcfile = PyUnicode_FromString(filename);
+    #endif
+    if (!py_srcfile) goto bad;
+    if (c_line) {
+        #if PY_MAJOR_VERSION < 3
+        py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
+        #else
+        py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
+        #endif
+    }
+    else {
+        #if PY_MAJOR_VERSION < 3
+        py_funcname = PyString_FromString(funcname);
+        #else
+        py_funcname = PyUnicode_FromString(funcname);
+        #endif
+    }
+    if (!py_funcname) goto bad;
+    py_code = __Pyx_PyCode_New(
+        0,            /*int argcount,*/
+        0,            /*int kwonlyargcount,*/
+        0,            /*int nlocals,*/
+        0,            /*int stacksize,*/
+        0,            /*int flags,*/
+        __pyx_empty_bytes, /*PyObject *code,*/
+        __pyx_empty_tuple, /*PyObject *consts,*/
+        __pyx_empty_tuple, /*PyObject *names,*/
+        __pyx_empty_tuple, /*PyObject *varnames,*/
+        __pyx_empty_tuple, /*PyObject *freevars,*/
+        __pyx_empty_tuple, /*PyObject *cellvars,*/
+        py_srcfile,   /*PyObject *filename,*/
+        py_funcname,  /*PyObject *name,*/
+        py_line,      /*int firstlineno,*/
+        __pyx_empty_bytes  /*PyObject *lnotab*/
+    );
+    Py_DECREF(py_srcfile);
+    Py_DECREF(py_funcname);
+    return py_code;
+bad:
+    Py_XDECREF(py_srcfile);
+    Py_XDECREF(py_funcname);
+    return NULL;
+}
+static void __Pyx_AddTraceback(const char *funcname, int c_line,
+                               int py_line, const char *filename) {
+    PyCodeObject *py_code = 0;
+    PyObject *py_globals = 0;
+    PyFrameObject *py_frame = 0;
+    py_code = __pyx_find_code_object(c_line ? c_line : py_line);
+    if (!py_code) {
+        py_code = __Pyx_CreateCodeObjectForTraceback(
+            funcname, c_line, py_line, filename);
+        if (!py_code) goto bad;
+        __pyx_insert_code_object(c_line ? c_line : py_line, py_code);
+    }
+    py_globals = PyModule_GetDict(__pyx_m);
+    if (!py_globals) goto bad;
+    py_frame = PyFrame_New(
+        PyThreadState_GET(), /*PyThreadState *tstate,*/
+        py_code,             /*PyCodeObject *code,*/
+        py_globals,          /*PyObject *globals,*/
+        0                    /*PyObject *locals*/
+    );
+    if (!py_frame) goto bad;
+    py_frame->f_lineno = py_line;
+    PyTraceBack_Here(py_frame);
+bad:
+    Py_XDECREF(py_code);
+    Py_XDECREF(py_frame);
+}
+
+static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
+    while (t->p) {
+        #if PY_MAJOR_VERSION < 3
+        if (t->is_unicode) {
+            *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL);
+        } else if (t->intern) {
+            *t->p = PyString_InternFromString(t->s);
+        } else {
+            *t->p = PyString_FromStringAndSize(t->s, t->n - 1);
+        }
+        #else  /* Python 3+ has unicode identifiers */
+        if (t->is_unicode | t->is_str) {
+            if (t->intern) {
+                *t->p = PyUnicode_InternFromString(t->s);
+            } else if (t->encoding) {
+                *t->p = PyUnicode_Decode(t->s, t->n - 1, t->encoding, NULL);
+            } else {
+                *t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1);
+            }
+        } else {
+            *t->p = PyBytes_FromStringAndSize(t->s, t->n - 1);
+        }
+        #endif
+        if (!*t->p)
+            return -1;
+        ++t;
+    }
+    return 0;
+}
+
+static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) {
+   int is_true = x == Py_True;
+   if (is_true | (x == Py_False) | (x == Py_None)) return is_true;
+   else return PyObject_IsTrue(x);
+}
+static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x) {
+  PyNumberMethods *m;
+  const char *name = NULL;
+  PyObject *res = NULL;
+#if PY_VERSION_HEX < 0x03000000
+  if (PyInt_Check(x) || PyLong_Check(x))
+#else
+  if (PyLong_Check(x))
+#endif
+    return Py_INCREF(x), x;
+  m = Py_TYPE(x)->tp_as_number;
+#if PY_VERSION_HEX < 0x03000000
+  if (m && m->nb_int) {
+    name = "int";
+    res = PyNumber_Int(x);
+  }
+  else if (m && m->nb_long) {
+    name = "long";
+    res = PyNumber_Long(x);
+  }
+#else
+  if (m && m->nb_int) {
+    name = "int";
+    res = PyNumber_Long(x);
+  }
+#endif
+  if (res) {
+#if PY_VERSION_HEX < 0x03000000
+    if (!PyInt_Check(res) && !PyLong_Check(res)) {
+#else
+    if (!PyLong_Check(res)) {
+#endif
+      PyErr_Format(PyExc_TypeError,
+                   "__%s__ returned non-%s (type %.200s)",
+                   name, name, Py_TYPE(res)->tp_name);
+      Py_DECREF(res);
+      return NULL;
+    }
+  }
+  else if (!PyErr_Occurred()) {
+    PyErr_SetString(PyExc_TypeError,
+                    "an integer is required");
+  }
+  return res;
+}
+static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
+  Py_ssize_t ival;
+  PyObject* x = PyNumber_Index(b);
+  if (!x) return -1;
+  ival = PyInt_AsSsize_t(x);
+  Py_DECREF(x);
+  return ival;
+}
+static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) {
+#if PY_VERSION_HEX < 0x02050000
+   if (ival <= LONG_MAX)
+       return PyInt_FromLong((long)ival);
+   else {
+       unsigned char *bytes = (unsigned char *) &ival;
+       int one = 1; int little = (int)*(unsigned char*)&one;
+       return _PyLong_FromByteArray(bytes, sizeof(size_t), little, 0);
+   }
+#else
+   return PyInt_FromSize_t(ival);
+#endif
+}
+static CYTHON_INLINE size_t __Pyx_PyInt_AsSize_t(PyObject* x) {
+   unsigned PY_LONG_LONG val = __Pyx_PyInt_AsUnsignedLongLong(x);
+   if (unlikely(val == (unsigned PY_LONG_LONG)-1 && PyErr_Occurred())) {
+       return (size_t)-1;
+   } else if (unlikely(val != (unsigned PY_LONG_LONG)(size_t)val)) {
+       PyErr_SetString(PyExc_OverflowError,
+                       "value too large to convert to size_t");
+       return (size_t)-1;
+   }
+   return (size_t)val;
+}
+
+
+#endif /* Py_PYTHON_H */
diff --git a/h5py/_objects.pxd b/h5py/_objects.pxd
new file mode 100644
index 0000000..3e19c84
--- /dev/null
+++ b/h5py/_objects.pxd
@@ -0,0 +1,30 @@
+# This file is part of h5py, a Python interface to the HDF5 library.
+#
+# http://www.h5py.org
+#
+# Copyright 2008-2013 Andrew Collette and contributors
+#
+# License:  Standard 3-clause BSD; see "license.txt" for full license terms
+#           and contributor agreement.
+
+from defs cimport *
+
+cdef class ObjectID:
+
+    cdef object __weakref__
+    cdef readonly hid_t id
+    cdef public int locked
+    cdef object _hash
+
+# Convenience functions
+cdef hid_t pdefault(ObjectID pid)
+
+# Inheritance scheme (for top-level cimport and import statements):
+#
+# _objects, _proxy, h5fd, h5z
+# h5i, h5r, utils
+# _conv, h5t, h5s
+# h5p
+# h5d, h5a, h5f, h5g
+# h5l
+
diff --git a/h5py/_objects.pyx b/h5py/_objects.pyx
new file mode 100644
index 0000000..6134173
--- /dev/null
+++ b/h5py/_objects.pyx
@@ -0,0 +1,323 @@
+# This file is part of h5py, a Python interface to the HDF5 library.
+#
+# http://www.h5py.org
+#
+# Copyright 2008-2013 Andrew Collette and contributors
+#
+# License:  Standard 3-clause BSD; see "license.txt" for full license terms
+#           and contributor agreement.
+
+"""
+    Implements ObjectID base class and global object registry.
+
+    It used to be that we could store the HDF5 identifier in an ObjectID
+    and simply close it when the object was deallocated.  However, since
+    HDF5 1.8.5 they have started recycling object identifiers, which
+    breaks this system.
+
+    We now use a global registry of object identifiers.  This is implemented
+    via a dictionary which maps an integer representation of the identifier
+    to a weak reference of an ObjectID.  There is only one ObjectID instance
+    in the universe for each integer identifier.  When the HDF5 reference
+    count for a identifier reaches zero, HDF5 closes the object and reclaims
+    the identifier. When this occurs, the identifier and weak reference must
+    be deleted from the registry. If an ObjectID is deallocated, it is deleted
+    from the registry and the HDF5 reference count is decreased, HDF5 closes
+    and reclaims the identifier for future use.
+
+    All interactions with the registry must be synchronized for thread safety.
+    You must acquire "registry.lock" before interacting with the registry. The
+    registry is not internally synchronized, in the interest of performance: we
+    don't want the same thread attempting to acquire the lock multiple times
+    during a single operation, if we can avoid it.
+
+    All ObjectIDs and subclasses thereof should be opened with the "open"
+    classmethod factory function, such that an existing ObjectID instance can
+    be returned from the registry when appropriate.
+"""
+
+from defs cimport *
+
+from weakref import KeyedRef, ref
+
+## {{{ http://code.activestate.com/recipes/577336/ (r3)
+from cpython cimport pythread
+from cpython.exc cimport PyErr_NoMemory
+
+cdef class FastRLock:
+    """Fast, re-entrant locking.
+
+    Under uncongested conditions, the lock is never acquired but only
+    counted.  Only when a second thread comes in and notices that the
+    lock is needed, it acquires the lock and notifies the first thread
+    to release it when it's done.  This is all made possible by the
+    wonderful GIL.
+    """
+    cdef pythread.PyThread_type_lock _real_lock
+    cdef long _owner            # ID of thread owning the lock
+    cdef int _count             # re-entry count
+    cdef int _pending_requests  # number of pending requests for real lock
+    cdef bint _is_locked        # whether the real lock is acquired
+
+    def __cinit__(self):
+        self._owner = -1
+        self._count = 0
+        self._is_locked = False
+        self._pending_requests = 0
+        self._real_lock = pythread.PyThread_allocate_lock()
+        if self._real_lock is NULL:
+            PyErr_NoMemory()
+
+    def __dealloc__(self):
+        if self._real_lock is not NULL:
+            pythread.PyThread_free_lock(self._real_lock)
+            self._real_lock = NULL
+
+    def acquire(self, bint blocking=True):
+        return lock_lock(self, pythread.PyThread_get_thread_ident(), blocking)
+
+    def release(self):
+        if self._owner != pythread.PyThread_get_thread_ident():
+            raise RuntimeError("cannot release un-acquired lock")
+        unlock_lock(self)
+
+    # compatibility with threading.RLock
+
+    def __enter__(self):
+        # self.acquire()
+        return lock_lock(self, pythread.PyThread_get_thread_ident(), True)
+
+    def __exit__(self, t, v, tb):
+        # self.release()
+        if self._owner != pythread.PyThread_get_thread_ident():
+            raise RuntimeError("cannot release un-acquired lock")
+        unlock_lock(self)
+
+    def _is_owned(self):
+        return self._owner == pythread.PyThread_get_thread_ident()
+
+
+cdef inline bint lock_lock(FastRLock lock, long current_thread, bint blocking) 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
+
+    if lock._count:
+        # locked! - by myself?
+        if current_thread == lock._owner:
+            lock._count += 1
+            return 1
+    elif not lock._pending_requests:
+        # not locked, not requested - go!
+        lock._owner = current_thread
+        lock._count = 1
+        return 1
+    # need to get the real lock
+    return _acquire_lock(
+        lock, current_thread,
+        pythread.WAIT_LOCK if blocking else pythread.NOWAIT_LOCK)
+
+cdef bint _acquire_lock(FastRLock lock, long current_thread, int wait) 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
+
+    if not lock._is_locked and not lock._pending_requests:
+        # someone owns it but didn't acquire the real lock - do that
+        # now and tell the owner to release it when done. Note that we
+        # do not release the GIL here as we must absolutely be the one
+        # who acquires the lock now.
+        if not pythread.PyThread_acquire_lock(lock._real_lock, wait):
+            return 0
+        #assert not lock._is_locked
+        lock._is_locked = True
+    lock._pending_requests += 1
+    with nogil:
+        # wait for the lock owning thread to release it
+        locked = pythread.PyThread_acquire_lock(lock._real_lock, wait)
+    lock._pending_requests -= 1
+    #assert not lock._is_locked
+    #assert lock._count == 0
+    if not locked:
+        return 0
+    lock._is_locked = True
+    lock._owner = current_thread
+    lock._count = 1
+    return 1
+
+cdef inline void unlock_lock(FastRLock lock) 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
+
+    #assert lock._owner == pythread.PyThread_get_thread_ident()
+    #assert lock._count > 0
+    lock._count -= 1
+    if lock._count == 0:
+        lock._owner = -1
+        if lock._is_locked:
+            pythread.PyThread_release_lock(lock._real_lock)
+            lock._is_locked = False
+## end of http://code.activestate.com/recipes/577336/ }}}
+
+
+cdef class _Registry:
+
+    cdef object _data
+    cdef readonly FastRLock lock
+
+    def __cinit__(self):
+        self._data = {}
+        self.lock = FastRLock()
+
+    __hash__ = None # Avoid Py3 warning
+
+    def cleanup(self):
+        "Manage invalid identifiers"
+        deadlist = []
+        for key in self._data:
+            val = self._data[key]
+            val = val()
+            if val is None:
+                deadlist.append(key)
+                continue
+            if not val.valid:
+                deadlist.append(key)
+        for key in deadlist:
+            del self._data[key]
+
+    def __getitem__(self, key):
+        o = self._data[key]()
+        if o is None:
+            # This would occur if we had open objects and closed their
+            # file, causing the objects identifiers to be reclaimed.
+            # Now we clean up the registry when we close a file (or any
+            # other identifier, for that matter), so in practice this
+            # condition never obtains.
+            del self._data[key]
+            # We need to raise a KeyError:
+            o = self._data[key]()
+        return o
+
+    def __setitem__(self, key, val):
+        # this method should only be called by ObjectID.open
+        self._data[key] = ref(val)
+
+    def __delitem__(self, key):
+        # we need to synchronize removal of the id from the
+        # registry with decreasing the HDF5 reference count:
+        self._data.pop(key,None)
+
+        if H5Iget_type(key) >= 0: # if not, object was explicitly closed
+            H5Idec_ref(key) 
+
+
+registry = _Registry()
+
+
+cdef class ObjectID:
+
+    """
+        Represents an HDF5 identifier.
+
+    """
+
+    property fileno:
+        def __get__(self):
+            cdef H5G_stat_t stat
+            H5Gget_objinfo(self.id, '.', 0, &stat)
+            return (stat.fileno[0], stat.fileno[1])
+
+    property valid:
+        def __get__(self):
+            if not self.id:
+                return False
+            res = H5Iget_type(self.id) > 0
+            if not res:
+                self.id = 0
+            return res
+
+    def __cinit__(self, id):
+        self.id = id
+        self.locked = 0
+        with registry.lock:
+            registry[id] = self
+
+    def __dealloc__(self):
+        if not self.locked:
+            try:
+                with registry.lock:
+                    del registry[self.id]
+            except AttributeError:
+                # library being torn down, registry is None
+                pass
+
+    def __nonzero__(self):
+        return self.valid
+
+    def __copy__(self):
+        cdef ObjectID cpy
+        cpy = type(self)(self.id)
+        return cpy
+
+    def __richcmp__(self, object other, int how):
+        """ Default comparison mechanism for HDF5 objects (equal/not-equal)
+
+        Default equality testing:
+        1. Objects which are not both ObjectIDs are unequal
+        2. Objects with the same HDF5 ID number are always equal
+        3. Objects which hash the same are equal
+        """
+        cdef bint equal = 0
+
+        if how != 2 and how != 3:
+            return NotImplemented
+
+        if isinstance(other, ObjectID):
+            if self.id == other.id:
+                equal = 1
+            else:
+                try:
+                    equal = hash(self) == hash(other)
+                except TypeError:
+                    pass
+
+        if how == 2:
+            return equal
+        return not equal
+
+    def __hash__(self):
+        """ Default hashing mechanism for HDF5 objects
+
+        Default hashing strategy:
+        1. Try to hash based on the object's fileno and objno records
+        2. If (1) succeeds, cache the resulting value
+        3. If (1) fails, raise TypeError
+        """
+        cdef H5G_stat_t stat
+
+        if self._hash is None:
+            try:
+                H5Gget_objinfo(self.id, '.', 0, &stat)
+                self._hash = hash((stat.fileno[0], stat.fileno[1], stat.objno[0], stat.objno[1]))
+            except Exception:
+                raise TypeError("Objects of class %s cannot be hashed" % self.__class__.__name__)
+
+        return self._hash
+
+    @classmethod
+    def open(cls, id):
+        """ Return a representation of an HDF5 identifier """
+        with registry.lock:
+            try:
+                res = registry[id]
+            except KeyError:
+                res = cls(id)
+            return res
+
+
+cdef hid_t pdefault(ObjectID pid):
+
+    if pid is None:
+        return <hid_t>H5P_DEFAULT
+    return pid.id
diff --git a/h5py/_proxy.c b/h5py/_proxy.c
new file mode 100644
index 0000000..bbb6728
--- /dev/null
+++ b/h5py/_proxy.c
@@ -0,0 +1,4484 @@
+/* Generated by Cython 0.18 on Mon Dec  9 16:00:33 2013 */
+
+#define PY_SSIZE_T_CLEAN
+#include "Python.h"
+#ifndef Py_PYTHON_H
+    #error Python headers needed to compile C extensions, please install development version of Python.
+#elif PY_VERSION_HEX < 0x02040000
+    #error Cython requires Python 2.4+.
+#else
+#include <stddef.h> /* For offsetof */
+#ifndef offsetof
+#define offsetof(type, member) ( (size_t) & ((type*)0) -> member )
+#endif
+#if !defined(WIN32) && !defined(MS_WINDOWS)
+  #ifndef __stdcall
+    #define __stdcall
+  #endif
+  #ifndef __cdecl
+    #define __cdecl
+  #endif
+  #ifndef __fastcall
+    #define __fastcall
+  #endif
+#endif
+#ifndef DL_IMPORT
+  #define DL_IMPORT(t) t
+#endif
+#ifndef DL_EXPORT
+  #define DL_EXPORT(t) t
+#endif
+#ifndef PY_LONG_LONG
+  #define PY_LONG_LONG LONG_LONG
+#endif
+#ifndef Py_HUGE_VAL
+  #define Py_HUGE_VAL HUGE_VAL
+#endif
+#ifdef PYPY_VERSION
+#define CYTHON_COMPILING_IN_PYPY 1
+#define CYTHON_COMPILING_IN_CPYTHON 0
+#else
+#define CYTHON_COMPILING_IN_PYPY 0
+#define CYTHON_COMPILING_IN_CPYTHON 1
+#endif
+#if PY_VERSION_HEX < 0x02050000
+  typedef int Py_ssize_t;
+  #define PY_SSIZE_T_MAX INT_MAX
+  #define PY_SSIZE_T_MIN INT_MIN
+  #define PY_FORMAT_SIZE_T ""
+  #define CYTHON_FORMAT_SSIZE_T ""
+  #define PyInt_FromSsize_t(z) PyInt_FromLong(z)
+  #define PyInt_AsSsize_t(o)   __Pyx_PyInt_AsInt(o)
+  #define PyNumber_Index(o)    ((PyNumber_Check(o) && !PyFloat_Check(o)) ? PyNumber_Int(o) : \
+                                (PyErr_Format(PyExc_TypeError, \
+                                              "expected index value, got %.200s", Py_TYPE(o)->tp_name), \
+                                 (PyObject*)0))
+  #define __Pyx_PyIndex_Check(o) (PyNumber_Check(o) && !PyFloat_Check(o) && \
+                                  !PyComplex_Check(o))
+  #define PyIndex_Check __Pyx_PyIndex_Check
+  #define PyErr_WarnEx(category, message, stacklevel) PyErr_Warn(category, message)
+  #define __PYX_BUILD_PY_SSIZE_T "i"
+#else
+  #define __PYX_BUILD_PY_SSIZE_T "n"
+  #define CYTHON_FORMAT_SSIZE_T "z"
+  #define __Pyx_PyIndex_Check PyIndex_Check
+#endif
+#if PY_VERSION_HEX < 0x02060000
+  #define Py_REFCNT(ob) (((PyObject*)(ob))->ob_refcnt)
+  #define Py_TYPE(ob)   (((PyObject*)(ob))->ob_type)
+  #define Py_SIZE(ob)   (((PyVarObject*)(ob))->ob_size)
+  #define PyVarObject_HEAD_INIT(type, size) \
+          PyObject_HEAD_INIT(type) size,
+  #define PyType_Modified(t)
+  typedef struct {
+     void *buf;
+     PyObject *obj;
+     Py_ssize_t len;
+     Py_ssize_t itemsize;
+     int readonly;
+     int ndim;
+     char *format;
+     Py_ssize_t *shape;
+     Py_ssize_t *strides;
+     Py_ssize_t *suboffsets;
+     void *internal;
+  } Py_buffer;
+  #define PyBUF_SIMPLE 0
+  #define PyBUF_WRITABLE 0x0001
+  #define PyBUF_FORMAT 0x0004
+  #define PyBUF_ND 0x0008
+  #define PyBUF_STRIDES (0x0010 | PyBUF_ND)
+  #define PyBUF_C_CONTIGUOUS (0x0020 | PyBUF_STRIDES)
+  #define PyBUF_F_CONTIGUOUS (0x0040 | PyBUF_STRIDES)
+  #define PyBUF_ANY_CONTIGUOUS (0x0080 | PyBUF_STRIDES)
+  #define PyBUF_INDIRECT (0x0100 | PyBUF_STRIDES)
+  #define PyBUF_RECORDS (PyBUF_STRIDES | PyBUF_FORMAT | PyBUF_WRITABLE)
+  #define PyBUF_FULL (PyBUF_INDIRECT | PyBUF_FORMAT | PyBUF_WRITABLE)
+  typedef int (*getbufferproc)(PyObject *, Py_buffer *, int);
+  typedef void (*releasebufferproc)(PyObject *, Py_buffer *);
+#endif
+#if PY_MAJOR_VERSION < 3
+  #define __Pyx_BUILTIN_MODULE_NAME "__builtin__"
+  #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) \
+          PyCode_New(a, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
+#else
+  #define __Pyx_BUILTIN_MODULE_NAME "builtins"
+  #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) \
+          PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
+#endif
+#if PY_MAJOR_VERSION < 3 && PY_MINOR_VERSION < 6
+  #define PyUnicode_FromString(s) PyUnicode_Decode(s, strlen(s), "UTF-8", "strict")
+#endif
+#if PY_MAJOR_VERSION >= 3
+  #define Py_TPFLAGS_CHECKTYPES 0
+  #define Py_TPFLAGS_HAVE_INDEX 0
+#endif
+#if (PY_VERSION_HEX < 0x02060000) || (PY_MAJOR_VERSION >= 3)
+  #define Py_TPFLAGS_HAVE_NEWBUFFER 0
+#endif
+#if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND)
+  #define CYTHON_PEP393_ENABLED 1
+  #define __Pyx_PyUnicode_READY(op)       (likely(PyUnicode_IS_READY(op)) ? \
+                                              0 : _PyUnicode_Ready((PyObject *)(op)))
+  #define __Pyx_PyUnicode_GET_LENGTH(u)   PyUnicode_GET_LENGTH(u)
+  #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i)
+  #define __Pyx_PyUnicode_READ(k, d, i)   PyUnicode_READ(k, d, i)
+#else
+  #define CYTHON_PEP393_ENABLED 0
+  #define __Pyx_PyUnicode_READY(op)       (0)
+  #define __Pyx_PyUnicode_GET_LENGTH(u)   PyUnicode_GET_SIZE(u)
+  #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i]))
+  #define __Pyx_PyUnicode_READ(k, d, i)   ((k=k), (Py_UCS4)(((Py_UNICODE*)d)[i]))
+#endif
+#if PY_MAJOR_VERSION >= 3
+  #define PyBaseString_Type            PyUnicode_Type
+  #define PyStringObject               PyUnicodeObject
+  #define PyString_Type                PyUnicode_Type
+  #define PyString_Check               PyUnicode_Check
+  #define PyString_CheckExact          PyUnicode_CheckExact
+#endif
+#if PY_VERSION_HEX < 0x02060000
+  #define PyBytesObject                PyStringObject
+  #define PyBytes_Type                 PyString_Type
+  #define PyBytes_Check                PyString_Check
+  #define PyBytes_CheckExact           PyString_CheckExact
+  #define PyBytes_FromString           PyString_FromString
+  #define PyBytes_FromStringAndSize    PyString_FromStringAndSize
+  #define PyBytes_FromFormat           PyString_FromFormat
+  #define PyBytes_DecodeEscape         PyString_DecodeEscape
+  #define PyBytes_AsString             PyString_AsString
+  #define PyBytes_AsStringAndSize      PyString_AsStringAndSize
+  #define PyBytes_Size                 PyString_Size
+  #define PyBytes_AS_STRING            PyString_AS_STRING
+  #define PyBytes_GET_SIZE             PyString_GET_SIZE
+  #define PyBytes_Repr                 PyString_Repr
+  #define PyBytes_Concat               PyString_Concat
+  #define PyBytes_ConcatAndDel         PyString_ConcatAndDel
+#endif
+#if PY_VERSION_HEX < 0x02060000
+  #define PySet_Check(obj)             PyObject_TypeCheck(obj, &PySet_Type)
+  #define PyFrozenSet_Check(obj)       PyObject_TypeCheck(obj, &PyFrozenSet_Type)
+#endif
+#ifndef PySet_CheckExact
+  #define PySet_CheckExact(obj)        (Py_TYPE(obj) == &PySet_Type)
+#endif
+#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type)
+#if PY_MAJOR_VERSION >= 3
+  #define PyIntObject                  PyLongObject
+  #define PyInt_Type                   PyLong_Type
+  #define PyInt_Check(op)              PyLong_Check(op)
+  #define PyInt_CheckExact(op)         PyLong_CheckExact(op)
+  #define PyInt_FromString             PyLong_FromString
+  #define PyInt_FromUnicode            PyLong_FromUnicode
+  #define PyInt_FromLong               PyLong_FromLong
+  #define PyInt_FromSize_t             PyLong_FromSize_t
+  #define PyInt_FromSsize_t            PyLong_FromSsize_t
+  #define PyInt_AsLong                 PyLong_AsLong
+  #define PyInt_AS_LONG                PyLong_AS_LONG
+  #define PyInt_AsSsize_t              PyLong_AsSsize_t
+  #define PyInt_AsUnsignedLongMask     PyLong_AsUnsignedLongMask
+  #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask
+#endif
+#if PY_MAJOR_VERSION >= 3
+  #define PyBoolObject                 PyLongObject
+#endif
+#if PY_VERSION_HEX < 0x03020000
+  typedef long Py_hash_t;
+  #define __Pyx_PyInt_FromHash_t PyInt_FromLong
+  #define __Pyx_PyInt_AsHash_t   PyInt_AsLong
+#else
+  #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t
+  #define __Pyx_PyInt_AsHash_t   PyInt_AsSsize_t
+#endif
+#if (PY_MAJOR_VERSION < 3) || (PY_VERSION_HEX >= 0x03010300)
+  #define __Pyx_PySequence_GetSlice(obj, a, b) PySequence_GetSlice(obj, a, b)
+  #define __Pyx_PySequence_SetSlice(obj, a, b, value) PySequence_SetSlice(obj, a, b, value)
+  #define __Pyx_PySequence_DelSlice(obj, a, b) PySequence_DelSlice(obj, a, b)
+#else
+  #define __Pyx_PySequence_GetSlice(obj, a, b) (unlikely(!(obj)) ? \
+        (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), (PyObject*)0) : \
+        (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_GetSlice(obj, a, b)) : \
+            (PyErr_Format(PyExc_TypeError, "'%.200s' object is unsliceable", (obj)->ob_type->tp_name), (PyObject*)0)))
+  #define __Pyx_PySequence_SetSlice(obj, a, b, value) (unlikely(!(obj)) ? \
+        (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), -1) : \
+        (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_SetSlice(obj, a, b, value)) : \
+            (PyErr_Format(PyExc_TypeError, "'%.200s' object doesn't support slice assignment", (obj)->ob_type->tp_name), -1)))
+  #define __Pyx_PySequence_DelSlice(obj, a, b) (unlikely(!(obj)) ? \
+        (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), -1) : \
+        (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_DelSlice(obj, a, b)) : \
+            (PyErr_Format(PyExc_TypeError, "'%.200s' object doesn't support slice deletion", (obj)->ob_type->tp_name), -1)))
+#endif
+#if PY_MAJOR_VERSION >= 3
+  #define PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, self) : PyInstanceMethod_New(func))
+#endif
+#if PY_VERSION_HEX < 0x02050000
+  #define __Pyx_GetAttrString(o,n)   PyObject_GetAttrString((o),((char *)(n)))
+  #define __Pyx_SetAttrString(o,n,a) PyObject_SetAttrString((o),((char *)(n)),(a))
+  #define __Pyx_DelAttrString(o,n)   PyObject_DelAttrString((o),((char *)(n)))
+#else
+  #define __Pyx_GetAttrString(o,n)   PyObject_GetAttrString((o),(n))
+  #define __Pyx_SetAttrString(o,n,a) PyObject_SetAttrString((o),(n),(a))
+  #define __Pyx_DelAttrString(o,n)   PyObject_DelAttrString((o),(n))
+#endif
+#if PY_VERSION_HEX < 0x02050000
+  #define __Pyx_NAMESTR(n) ((char *)(n))
+  #define __Pyx_DOCSTR(n)  ((char *)(n))
+#else
+  #define __Pyx_NAMESTR(n) (n)
+  #define __Pyx_DOCSTR(n)  (n)
+#endif
+
+
+#if PY_MAJOR_VERSION >= 3
+  #define __Pyx_PyNumber_Divide(x,y)         PyNumber_TrueDivide(x,y)
+  #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceTrueDivide(x,y)
+#else
+  #define __Pyx_PyNumber_Divide(x,y)         PyNumber_Divide(x,y)
+  #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceDivide(x,y)
+#endif
+
+#ifndef __PYX_EXTERN_C
+  #ifdef __cplusplus
+    #define __PYX_EXTERN_C extern "C"
+  #else
+    #define __PYX_EXTERN_C extern
+  #endif
+#endif
+
+#if defined(WIN32) || defined(MS_WINDOWS)
+#define _USE_MATH_DEFINES
+#endif
+#include <math.h>
+#define __PYX_HAVE__h5py___proxy
+#define __PYX_HAVE_API__h5py___proxy
+#include "stdlib.h"
+#include "string.h"
+#include "time.h"
+#include "unistd.h"
+#include "stdint.h"
+#include "api_compat.h"
+#include "lzf_filter.h"
+#include "hdf5.h"
+#include "H5Cpublic.h"
+#include "hdf5_hl.h"
+#ifdef _OPENMP
+#include <omp.h>
+#endif /* _OPENMP */
+
+#ifdef PYREX_WITHOUT_ASSERTIONS
+#define CYTHON_WITHOUT_ASSERTIONS
+#endif
+
+#ifndef CYTHON_INLINE
+  #if defined(__GNUC__)
+    #define CYTHON_INLINE __inline__
+  #elif defined(_MSC_VER)
+    #define CYTHON_INLINE __inline
+  #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+    #define CYTHON_INLINE inline
+  #else
+    #define CYTHON_INLINE
+  #endif
+#endif
+#ifndef CYTHON_UNUSED
+# if defined(__GNUC__)
+#   if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
+#     define CYTHON_UNUSED __attribute__ ((__unused__))
+#   else
+#     define CYTHON_UNUSED
+#   endif
+# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER))
+#   define CYTHON_UNUSED __attribute__ ((__unused__))
+# else
+#   define CYTHON_UNUSED
+# endif
+#endif
+typedef struct {PyObject **p; char *s; const long n; const char* encoding; const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; /*proto*/
+
+#define __Pyx_PyBytes_FromUString(s) PyBytes_FromString((char*)s)
+#define __Pyx_PyBytes_AsUString(s)   ((unsigned char*) PyBytes_AsString(s))
+#define __Pyx_Owned_Py_None(b) (Py_INCREF(Py_None), Py_None)
+#define __Pyx_PyBool_FromLong(b) ((b) ? (Py_INCREF(Py_True), Py_True) : (Py_INCREF(Py_False), Py_False))
+static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*);
+static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x);
+static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*);
+static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t);
+static CYTHON_INLINE size_t __Pyx_PyInt_AsSize_t(PyObject*);
+#if CYTHON_COMPILING_IN_CPYTHON
+#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x))
+#else
+#define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x)
+#endif
+#define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x))
+
+
+#ifdef __GNUC__
+  /* Test for GCC > 2.95 */
+  #if __GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))
+    #define likely(x)   __builtin_expect(!!(x), 1)
+    #define unlikely(x) __builtin_expect(!!(x), 0)
+  #else /* __GNUC__ > 2 ... */
+    #define likely(x)   (x)
+    #define unlikely(x) (x)
+  #endif /* __GNUC__ > 2 ... */
+#else /* __GNUC__ */
+  #define likely(x)   (x)
+  #define unlikely(x) (x)
+#endif /* __GNUC__ */
+    
+static PyObject *__pyx_m;
+static PyObject *__pyx_b;
+static PyObject *__pyx_empty_tuple;
+static PyObject *__pyx_empty_bytes;
+static int __pyx_lineno;
+static int __pyx_clineno = 0;
+static const char * __pyx_cfilenm= __FILE__;
+static const char *__pyx_filename;
+
+
+static const char *__pyx_f[] = {
+  "_proxy.pyx",
+};
+
+/*--- Type declarations ---*/
+struct __pyx_t_4h5py_6_proxy_h5py_scatter_t;
+typedef struct __pyx_t_4h5py_6_proxy_h5py_scatter_t __pyx_t_4h5py_6_proxy_h5py_scatter_t;
+
+/* "h5py/_proxy.pyx":16
+ * """
+ * 
+ * cdef enum copy_dir:             # <<<<<<<<<<<<<<
+ *     H5PY_SCATTER = 0,
+ *     H5PY_GATHER
+ */
+enum __pyx_t_4h5py_6_proxy_copy_dir {
+  __pyx_e_4h5py_6_proxy_H5PY_SCATTER = 0,
+  __pyx_e_4h5py_6_proxy_H5PY_GATHER
+};
+
+/* "h5py/_proxy.pyx":239
+ * # Scatter/gather routines
+ * 
+ * ctypedef struct h5py_scatter_t:             # <<<<<<<<<<<<<<
+ *     size_t i
+ *     size_t elsize
+ */
+struct __pyx_t_4h5py_6_proxy_h5py_scatter_t {
+  size_t i;
+  size_t elsize;
+  void *buf;
+};
+#ifndef CYTHON_REFNANNY
+  #define CYTHON_REFNANNY 0
+#endif
+#if CYTHON_REFNANNY
+  typedef struct {
+    void (*INCREF)(void*, PyObject*, int);
+    void (*DECREF)(void*, PyObject*, int);
+    void (*GOTREF)(void*, PyObject*, int);
+    void (*GIVEREF)(void*, PyObject*, int);
+    void* (*SetupContext)(const char*, int, const char*);
+    void (*FinishContext)(void**);
+  } __Pyx_RefNannyAPIStruct;
+  static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL;
+  static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); /*proto*/
+  #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL;
+#ifdef WITH_THREAD
+  #define __Pyx_RefNannySetupContext(name, acquire_gil) \
+          if (acquire_gil) { \
+              PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); \
+              __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__); \
+              PyGILState_Release(__pyx_gilstate_save); \
+          } else { \
+              __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__); \
+          }
+#else
+  #define __Pyx_RefNannySetupContext(name, acquire_gil) \
+          __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__)
+#endif
+  #define __Pyx_RefNannyFinishContext() \
+          __Pyx_RefNanny->FinishContext(&__pyx_refnanny)
+  #define __Pyx_INCREF(r)  __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_DECREF(r)  __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_GOTREF(r)  __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_XINCREF(r)  do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0)
+  #define __Pyx_XDECREF(r)  do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0)
+  #define __Pyx_XGOTREF(r)  do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0)
+  #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0)
+#else
+  #define __Pyx_RefNannyDeclarations
+  #define __Pyx_RefNannySetupContext(name, acquire_gil)
+  #define __Pyx_RefNannyFinishContext()
+  #define __Pyx_INCREF(r) Py_INCREF(r)
+  #define __Pyx_DECREF(r) Py_DECREF(r)
+  #define __Pyx_GOTREF(r)
+  #define __Pyx_GIVEREF(r)
+  #define __Pyx_XINCREF(r) Py_XINCREF(r)
+  #define __Pyx_XDECREF(r) Py_XDECREF(r)
+  #define __Pyx_XGOTREF(r)
+  #define __Pyx_XGIVEREF(r)
+#endif /* CYTHON_REFNANNY */
+#define __Pyx_CLEAR(r)    do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0)
+#define __Pyx_XCLEAR(r)   do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0)
+
+static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name); /*proto*/
+
+static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb); /*proto*/
+static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb); /*proto*/
+
+static CYTHON_INLINE int __Pyx_PySequence_Contains(PyObject* item, PyObject* seq, int eq) {
+    int result = PySequence_Contains(seq, item);
+    return unlikely(result < 0) ? result : (result == (eq == Py_EQ));
+}
+
+static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause); /*proto*/
+
+static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb); /*proto*/
+
+static CYTHON_INLINE void __Pyx_ExceptionSave(PyObject **type, PyObject **value, PyObject **tb); /*proto*/
+static void __Pyx_ExceptionReset(PyObject *type, PyObject *value, PyObject *tb); /*proto*/
+
+static int __Pyx_Print(PyObject*, PyObject *, int); /*proto*/
+#if CYTHON_COMPILING_IN_PYPY || PY_MAJOR_VERSION >= 3
+static PyObject* __pyx_print = 0;
+static PyObject* __pyx_print_kwargs = 0;
+#endif
+
+static int __Pyx_PrintOne(PyObject* stream, PyObject *o); /*proto*/
+
+static CYTHON_INLINE unsigned char __Pyx_PyInt_AsUnsignedChar(PyObject *);
+
+static CYTHON_INLINE unsigned short __Pyx_PyInt_AsUnsignedShort(PyObject *);
+
+static CYTHON_INLINE unsigned int __Pyx_PyInt_AsUnsignedInt(PyObject *);
+
+static CYTHON_INLINE char __Pyx_PyInt_AsChar(PyObject *);
+
+static CYTHON_INLINE short __Pyx_PyInt_AsShort(PyObject *);
+
+static CYTHON_INLINE int __Pyx_PyInt_AsInt(PyObject *);
+
+static CYTHON_INLINE signed char __Pyx_PyInt_AsSignedChar(PyObject *);
+
+static CYTHON_INLINE signed short __Pyx_PyInt_AsSignedShort(PyObject *);
+
+static CYTHON_INLINE signed int __Pyx_PyInt_AsSignedInt(PyObject *);
+
+static CYTHON_INLINE int __Pyx_PyInt_AsLongDouble(PyObject *);
+
+static CYTHON_INLINE unsigned long __Pyx_PyInt_AsUnsignedLong(PyObject *);
+
+static CYTHON_INLINE unsigned PY_LONG_LONG __Pyx_PyInt_AsUnsignedLongLong(PyObject *);
+
+static CYTHON_INLINE long __Pyx_PyInt_AsLong(PyObject *);
+
+static CYTHON_INLINE PY_LONG_LONG __Pyx_PyInt_AsLongLong(PyObject *);
+
+static CYTHON_INLINE signed long __Pyx_PyInt_AsSignedLong(PyObject *);
+
+static CYTHON_INLINE signed PY_LONG_LONG __Pyx_PyInt_AsSignedLongLong(PyObject *);
+
+static void __Pyx_WriteUnraisable(const char *name, int clineno,
+                                  int lineno, const char *filename); /*proto*/
+
+static int __Pyx_check_binary_version(void);
+
+static int __Pyx_ExportFunction(const char *name, void (*f)(void), const char *sig); /*proto*/
+
+#if !defined(__Pyx_PyIdentifier_FromString)
+#if PY_MAJOR_VERSION < 3
+  #define __Pyx_PyIdentifier_FromString(s) PyString_FromString(s)
+#else
+  #define __Pyx_PyIdentifier_FromString(s) PyUnicode_FromString(s)
+#endif
+#endif
+
+static PyObject *__Pyx_ImportModule(const char *name); /*proto*/
+
+static int __Pyx_ImportFunction(PyObject *module, const char *funcname, void (**f)(void), const char *sig); /*proto*/
+
+typedef struct {
+    int code_line;
+    PyCodeObject* code_object;
+} __Pyx_CodeObjectCacheEntry;
+struct __Pyx_CodeObjectCache {
+    int count;
+    int max_count;
+    __Pyx_CodeObjectCacheEntry* entries;
+};
+static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL};
+static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line);
+static PyCodeObject *__pyx_find_code_object(int code_line);
+static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object);
+
+static void __Pyx_AddTraceback(const char *funcname, int c_line,
+                               int py_line, const char *filename); /*proto*/
+
+static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); /*proto*/
+
+
+/* Module declarations from 'h5py.api_types_ext' */
+
+/* Module declarations from 'h5py.api_types_hdf5' */
+
+/* Module declarations from 'h5py.defs' */
+static hid_t (*__pyx_f_4h5py_4defs_H5Dget_space)(hid_t); /*proto*/
+static hid_t (*__pyx_f_4h5py_4defs_H5Dget_type)(hid_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Dread)(hid_t, hid_t, hid_t, hid_t, hid_t, void *); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Dwrite)(hid_t, hid_t, hid_t, hid_t, hid_t, void *); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Dvlen_reclaim)(hid_t, hid_t, hid_t, void *); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Diterate)(void *, hid_t, hid_t, H5D_operator_t, void *); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Sclose)(hid_t); /*proto*/
+static hid_t (*__pyx_f_4h5py_4defs_H5Screate_simple)(int, hsize_t *, hsize_t *); /*proto*/
+static hssize_t (*__pyx_f_4h5py_4defs_H5Sget_select_npoints)(hid_t); /*proto*/
+static hid_t (*__pyx_f_4h5py_4defs_H5Tcreate)(enum H5T_class_t, size_t); /*proto*/
+static enum H5T_class_t (*__pyx_f_4h5py_4defs_H5Tget_class)(hid_t); /*proto*/
+static size_t (*__pyx_f_4h5py_4defs_H5Tget_size)(hid_t); /*proto*/
+static hid_t (*__pyx_f_4h5py_4defs_H5Tget_super)(hid_t); /*proto*/
+static htri_t (*__pyx_f_4h5py_4defs_H5Tdetect_class)(hid_t, enum H5T_class_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Tclose)(hid_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Tconvert)(hid_t, hid_t, size_t, void *, void *, hid_t); /*proto*/
+static htri_t (*__pyx_f_4h5py_4defs_H5Tis_variable_str)(hid_t); /*proto*/
+static int (*__pyx_f_4h5py_4defs_H5Tget_nmembers)(hid_t); /*proto*/
+static char *(*__pyx_f_4h5py_4defs_H5Tget_member_name)(hid_t, unsigned int); /*proto*/
+static hid_t (*__pyx_f_4h5py_4defs_H5Tget_member_type)(hid_t, unsigned int); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Tinsert)(hid_t, char *, size_t, hid_t); /*proto*/
+static char *(*__pyx_f_4h5py_4defs_H5Tget_tag)(hid_t); /*proto*/
+static H5T_conv_t (*__pyx_f_4h5py_4defs_H5Tfind)(hid_t, hid_t, H5T_cdata_t **); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Aread)(hid_t, hid_t, void *); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Awrite)(hid_t, hid_t, void *); /*proto*/
+static hid_t (*__pyx_f_4h5py_4defs_H5Aget_space)(hid_t); /*proto*/
+static hid_t (*__pyx_f_4h5py_4defs_H5Aget_type)(hid_t); /*proto*/
+
+/* Module declarations from 'h5py._proxy' */
+static herr_t __pyx_f_4h5py_6_proxy_H5PY_H5Dread(hid_t, hid_t, hid_t, hid_t, hid_t, void *); /*proto*/
+static herr_t __pyx_f_4h5py_6_proxy_H5PY_H5Dwrite(hid_t, hid_t, hid_t, hid_t, hid_t, void *); /*proto*/
+static hid_t __pyx_f_4h5py_6_proxy_make_reduced_type(hid_t, hid_t); /*proto*/
+static void *__pyx_f_4h5py_6_proxy_create_buffer(size_t, size_t, size_t); /*proto*/
+static herr_t __pyx_f_4h5py_6_proxy_h5py_scatter_cb(void *, hid_t, unsigned int, hsize_t *, void *); /*proto*/
+static herr_t __pyx_f_4h5py_6_proxy_h5py_gather_cb(void *, hid_t, unsigned int, hsize_t *, void *); /*proto*/
+static herr_t __pyx_f_4h5py_6_proxy_h5py_copy(hid_t, hid_t, void *, void *, enum __pyx_t_4h5py_6_proxy_copy_dir); /*proto*/
+static htri_t __pyx_f_4h5py_6_proxy_needs_bkg_buffer(hid_t, hid_t); /*proto*/
+static htri_t __pyx_f_4h5py_6_proxy_needs_proxy(hid_t); /*proto*/
+#define __Pyx_MODULE_NAME "h5py._proxy"
+int __pyx_module_is_main_h5py___proxy = 0;
+
+/* Implementation of 'h5py._proxy' */
+static PyObject *__pyx_builtin_xrange;
+static PyObject *__pyx_builtin_MemoryError;
+static PyObject *__pyx_builtin_RuntimeError;
+static char __pyx_k_1[] = "Failed to allocate conversion buffer";
+static char __pyx_k_3[] = "Illegal direction";
+static char __pyx_k_5[] = "Failed to find converter for %s -> %s";
+static char __pyx_k_6[] = "\n    Proxy functions for read/write, to work around the HDF5 bogus type issue.\n";
+static char __pyx_k__range[] = "range";
+static char __pyx_k__xrange[] = "xrange";
+static char __pyx_k____main__[] = "__main__";
+static char __pyx_k____test__[] = "__test__";
+static char __pyx_k__MemoryError[] = "MemoryError";
+static char __pyx_k__RuntimeError[] = "RuntimeError";
+static PyObject *__pyx_kp_s_1;
+static PyObject *__pyx_kp_s_3;
+static PyObject *__pyx_kp_s_5;
+static PyObject *__pyx_n_s__MemoryError;
+static PyObject *__pyx_n_s__RuntimeError;
+static PyObject *__pyx_n_s____main__;
+static PyObject *__pyx_n_s____test__;
+static PyObject *__pyx_n_s__range;
+static PyObject *__pyx_n_s__xrange;
+static PyObject *__pyx_k_tuple_2;
+static PyObject *__pyx_k_tuple_4;
+
+/* "h5py/_proxy.pyx":20
+ *     H5PY_GATHER
+ * 
+ * cdef herr_t attr_rw(hid_t attr, hid_t mtype, void *progbuf, int read) except -1:             # <<<<<<<<<<<<<<
+ * 
+ *     cdef htri_t need_bkg
+ */
+
+static herr_t __pyx_f_4h5py_6_proxy_attr_rw(hid_t __pyx_v_attr, hid_t __pyx_v_mtype, void *__pyx_v_progbuf, int __pyx_v_read) {
+  htri_t __pyx_v_need_bkg;
+  hid_t __pyx_v_atype;
+  hid_t __pyx_v_aspace;
+  hsize_t __pyx_v_npoints;
+  size_t __pyx_v_msize;
+  size_t __pyx_v_asize;
+  void *__pyx_v_conv_buf;
+  void *__pyx_v_back_buf;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  hid_t __pyx_t_1;
+  htri_t __pyx_t_2;
+  htri_t __pyx_t_3;
+  int __pyx_t_4;
+  int __pyx_t_5;
+  herr_t __pyx_t_6;
+  size_t __pyx_t_7;
+  hssize_t __pyx_t_8;
+  void *__pyx_t_9;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("attr_rw", 0);
+
+  /* "h5py/_proxy.pyx":23
+ * 
+ *     cdef htri_t need_bkg
+ *     cdef hid_t atype = -1             # <<<<<<<<<<<<<<
+ *     cdef hid_t aspace = -1
+ *     cdef hsize_t npoints
+ */
+  __pyx_v_atype = -1;
+
+  /* "h5py/_proxy.pyx":24
+ *     cdef htri_t need_bkg
+ *     cdef hid_t atype = -1
+ *     cdef hid_t aspace = -1             # <<<<<<<<<<<<<<
+ *     cdef hsize_t npoints
+ * 
+ */
+  __pyx_v_aspace = -1;
+
+  /* "h5py/_proxy.pyx":28
+ * 
+ *     cdef size_t msize, asize
+ *     cdef void* conv_buf = NULL             # <<<<<<<<<<<<<<
+ *     cdef void* back_buf = NULL
+ * 
+ */
+  __pyx_v_conv_buf = NULL;
+
+  /* "h5py/_proxy.pyx":29
+ *     cdef size_t msize, asize
+ *     cdef void* conv_buf = NULL
+ *     cdef void* back_buf = NULL             # <<<<<<<<<<<<<<
+ * 
+ *     try:
+ */
+  __pyx_v_back_buf = NULL;
+
+  /* "h5py/_proxy.pyx":31
+ *     cdef void* back_buf = NULL
+ * 
+ *     try:             # <<<<<<<<<<<<<<
+ *         atype = H5Aget_type(attr)
+ * 
+ */
+  /*try:*/ {
+
+    /* "h5py/_proxy.pyx":32
+ * 
+ *     try:
+ *         atype = H5Aget_type(attr)             # <<<<<<<<<<<<<<
+ * 
+ *         if not (needs_proxy(atype) or needs_proxy(mtype)):
+ */
+    __pyx_t_1 = __pyx_f_4h5py_4defs_H5Aget_type(__pyx_v_attr); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L4;}
+    __pyx_v_atype = __pyx_t_1;
+
+    /* "h5py/_proxy.pyx":34
+ *         atype = H5Aget_type(attr)
+ * 
+ *         if not (needs_proxy(atype) or needs_proxy(mtype)):             # <<<<<<<<<<<<<<
+ *             if read:
+ *                 H5Aread(attr, mtype, progbuf)
+ */
+    __pyx_t_2 = __pyx_f_4h5py_6_proxy_needs_proxy(__pyx_v_atype); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L4;}
+    if (!__pyx_t_2) {
+      __pyx_t_3 = __pyx_f_4h5py_6_proxy_needs_proxy(__pyx_v_mtype); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L4;}
+      __pyx_t_4 = __pyx_t_3;
+    } else {
+      __pyx_t_4 = __pyx_t_2;
+    }
+    __pyx_t_5 = (!__pyx_t_4);
+    if (__pyx_t_5) {
+
+      /* "h5py/_proxy.pyx":35
+ * 
+ *         if not (needs_proxy(atype) or needs_proxy(mtype)):
+ *             if read:             # <<<<<<<<<<<<<<
+ *                 H5Aread(attr, mtype, progbuf)
+ *             else:
+ */
+      if (__pyx_v_read) {
+
+        /* "h5py/_proxy.pyx":36
+ *         if not (needs_proxy(atype) or needs_proxy(mtype)):
+ *             if read:
+ *                 H5Aread(attr, mtype, progbuf)             # <<<<<<<<<<<<<<
+ *             else:
+ *                 H5Awrite(attr, mtype, progbuf)
+ */
+        __pyx_t_6 = __pyx_f_4h5py_4defs_H5Aread(__pyx_v_attr, __pyx_v_mtype, __pyx_v_progbuf); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L4;}
+        goto __pyx_L7;
+      }
+      /*else*/ {
+
+        /* "h5py/_proxy.pyx":38
+ *                 H5Aread(attr, mtype, progbuf)
+ *             else:
+ *                 H5Awrite(attr, mtype, progbuf)             # <<<<<<<<<<<<<<
+ * 
+ *         else:
+ */
+        __pyx_t_6 = __pyx_f_4h5py_4defs_H5Awrite(__pyx_v_attr, __pyx_v_mtype, __pyx_v_progbuf); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L4;}
+      }
+      __pyx_L7:;
+      goto __pyx_L6;
+    }
+    /*else*/ {
+
+      /* "h5py/_proxy.pyx":42
+ *         else:
+ * 
+ *             asize = H5Tget_size(atype)             # <<<<<<<<<<<<<<
+ *             msize = H5Tget_size(mtype)
+ *             aspace = H5Aget_space(attr)
+ */
+      __pyx_t_7 = __pyx_f_4h5py_4defs_H5Tget_size(__pyx_v_atype); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 42; __pyx_clineno = __LINE__; goto __pyx_L4;}
+      __pyx_v_asize = __pyx_t_7;
+
+      /* "h5py/_proxy.pyx":43
+ * 
+ *             asize = H5Tget_size(atype)
+ *             msize = H5Tget_size(mtype)             # <<<<<<<<<<<<<<
+ *             aspace = H5Aget_space(attr)
+ *             npoints = H5Sget_select_npoints(aspace)
+ */
+      __pyx_t_7 = __pyx_f_4h5py_4defs_H5Tget_size(__pyx_v_mtype); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L4;}
+      __pyx_v_msize = __pyx_t_7;
+
+      /* "h5py/_proxy.pyx":44
+ *             asize = H5Tget_size(atype)
+ *             msize = H5Tget_size(mtype)
+ *             aspace = H5Aget_space(attr)             # <<<<<<<<<<<<<<
+ *             npoints = H5Sget_select_npoints(aspace)
+ * 
+ */
+      __pyx_t_1 = __pyx_f_4h5py_4defs_H5Aget_space(__pyx_v_attr); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L4;}
+      __pyx_v_aspace = __pyx_t_1;
+
+      /* "h5py/_proxy.pyx":45
+ *             msize = H5Tget_size(mtype)
+ *             aspace = H5Aget_space(attr)
+ *             npoints = H5Sget_select_npoints(aspace)             # <<<<<<<<<<<<<<
+ * 
+ *             conv_buf = create_buffer(asize, msize, npoints)
+ */
+      __pyx_t_8 = __pyx_f_4h5py_4defs_H5Sget_select_npoints(__pyx_v_aspace); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L4;}
+      __pyx_v_npoints = __pyx_t_8;
+
+      /* "h5py/_proxy.pyx":47
+ *             npoints = H5Sget_select_npoints(aspace)
+ * 
+ *             conv_buf = create_buffer(asize, msize, npoints)             # <<<<<<<<<<<<<<
+ * 
+ *             if read:
+ */
+      __pyx_t_9 = __pyx_f_4h5py_6_proxy_create_buffer(__pyx_v_asize, __pyx_v_msize, __pyx_v_npoints); if (unlikely(__pyx_t_9 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L4;}
+      __pyx_v_conv_buf = __pyx_t_9;
+
+      /* "h5py/_proxy.pyx":49
+ *             conv_buf = create_buffer(asize, msize, npoints)
+ * 
+ *             if read:             # <<<<<<<<<<<<<<
+ *                 need_bkg = needs_bkg_buffer(atype, mtype)
+ *             else:
+ */
+      if (__pyx_v_read) {
+
+        /* "h5py/_proxy.pyx":50
+ * 
+ *             if read:
+ *                 need_bkg = needs_bkg_buffer(atype, mtype)             # <<<<<<<<<<<<<<
+ *             else:
+ *                 need_bkg = needs_bkg_buffer(mtype, atype)
+ */
+        __pyx_t_2 = __pyx_f_4h5py_6_proxy_needs_bkg_buffer(__pyx_v_atype, __pyx_v_mtype); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L4;}
+        __pyx_v_need_bkg = __pyx_t_2;
+        goto __pyx_L8;
+      }
+      /*else*/ {
+
+        /* "h5py/_proxy.pyx":52
+ *                 need_bkg = needs_bkg_buffer(atype, mtype)
+ *             else:
+ *                 need_bkg = needs_bkg_buffer(mtype, atype)             # <<<<<<<<<<<<<<
+ *             if need_bkg:
+ *                 back_buf = malloc(msize*npoints)
+ */
+        __pyx_t_2 = __pyx_f_4h5py_6_proxy_needs_bkg_buffer(__pyx_v_mtype, __pyx_v_atype); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L4;}
+        __pyx_v_need_bkg = __pyx_t_2;
+      }
+      __pyx_L8:;
+
+      /* "h5py/_proxy.pyx":53
+ *             else:
+ *                 need_bkg = needs_bkg_buffer(mtype, atype)
+ *             if need_bkg:             # <<<<<<<<<<<<<<
+ *                 back_buf = malloc(msize*npoints)
+ *                 memcpy(back_buf, progbuf, msize*npoints)
+ */
+      if (__pyx_v_need_bkg) {
+
+        /* "h5py/_proxy.pyx":54
+ *                 need_bkg = needs_bkg_buffer(mtype, atype)
+ *             if need_bkg:
+ *                 back_buf = malloc(msize*npoints)             # <<<<<<<<<<<<<<
+ *                 memcpy(back_buf, progbuf, msize*npoints)
+ * 
+ */
+        __pyx_v_back_buf = malloc((__pyx_v_msize * __pyx_v_npoints));
+
+        /* "h5py/_proxy.pyx":55
+ *             if need_bkg:
+ *                 back_buf = malloc(msize*npoints)
+ *                 memcpy(back_buf, progbuf, msize*npoints)             # <<<<<<<<<<<<<<
+ * 
+ *             if read:
+ */
+        memcpy(__pyx_v_back_buf, __pyx_v_progbuf, (__pyx_v_msize * __pyx_v_npoints));
+        goto __pyx_L9;
+      }
+      __pyx_L9:;
+
+      /* "h5py/_proxy.pyx":57
+ *                 memcpy(back_buf, progbuf, msize*npoints)
+ * 
+ *             if read:             # <<<<<<<<<<<<<<
+ *                 H5Aread(attr, atype, conv_buf)
+ *                 H5Tconvert(atype, mtype, npoints, conv_buf, back_buf, H5P_DEFAULT)
+ */
+      if (__pyx_v_read) {
+
+        /* "h5py/_proxy.pyx":58
+ * 
+ *             if read:
+ *                 H5Aread(attr, atype, conv_buf)             # <<<<<<<<<<<<<<
+ *                 H5Tconvert(atype, mtype, npoints, conv_buf, back_buf, H5P_DEFAULT)
+ *                 memcpy(progbuf, conv_buf, msize*npoints)
+ */
+        __pyx_t_6 = __pyx_f_4h5py_4defs_H5Aread(__pyx_v_attr, __pyx_v_atype, __pyx_v_conv_buf); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L4;}
+
+        /* "h5py/_proxy.pyx":59
+ *             if read:
+ *                 H5Aread(attr, atype, conv_buf)
+ *                 H5Tconvert(atype, mtype, npoints, conv_buf, back_buf, H5P_DEFAULT)             # <<<<<<<<<<<<<<
+ *                 memcpy(progbuf, conv_buf, msize*npoints)
+ *             else:
+ */
+        __pyx_t_6 = __pyx_f_4h5py_4defs_H5Tconvert(__pyx_v_atype, __pyx_v_mtype, __pyx_v_npoints, __pyx_v_conv_buf, __pyx_v_back_buf, H5P_DEFAULT); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L4;}
+
+        /* "h5py/_proxy.pyx":60
+ *                 H5Aread(attr, atype, conv_buf)
+ *                 H5Tconvert(atype, mtype, npoints, conv_buf, back_buf, H5P_DEFAULT)
+ *                 memcpy(progbuf, conv_buf, msize*npoints)             # <<<<<<<<<<<<<<
+ *             else:
+ *                 memcpy(conv_buf, progbuf, msize*npoints)
+ */
+        memcpy(__pyx_v_progbuf, __pyx_v_conv_buf, (__pyx_v_msize * __pyx_v_npoints));
+        goto __pyx_L10;
+      }
+      /*else*/ {
+
+        /* "h5py/_proxy.pyx":62
+ *                 memcpy(progbuf, conv_buf, msize*npoints)
+ *             else:
+ *                 memcpy(conv_buf, progbuf, msize*npoints)             # <<<<<<<<<<<<<<
+ *                 H5Tconvert(mtype, atype, npoints, conv_buf, back_buf, H5P_DEFAULT)
+ *                 H5Awrite(attr, atype, conv_buf)
+ */
+        memcpy(__pyx_v_conv_buf, __pyx_v_progbuf, (__pyx_v_msize * __pyx_v_npoints));
+
+        /* "h5py/_proxy.pyx":63
+ *             else:
+ *                 memcpy(conv_buf, progbuf, msize*npoints)
+ *                 H5Tconvert(mtype, atype, npoints, conv_buf, back_buf, H5P_DEFAULT)             # <<<<<<<<<<<<<<
+ *                 H5Awrite(attr, atype, conv_buf)
+ *                 H5Dvlen_reclaim(atype, aspace, H5P_DEFAULT, conv_buf)
+ */
+        __pyx_t_6 = __pyx_f_4h5py_4defs_H5Tconvert(__pyx_v_mtype, __pyx_v_atype, __pyx_v_npoints, __pyx_v_conv_buf, __pyx_v_back_buf, H5P_DEFAULT); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L4;}
+
+        /* "h5py/_proxy.pyx":64
+ *                 memcpy(conv_buf, progbuf, msize*npoints)
+ *                 H5Tconvert(mtype, atype, npoints, conv_buf, back_buf, H5P_DEFAULT)
+ *                 H5Awrite(attr, atype, conv_buf)             # <<<<<<<<<<<<<<
+ *                 H5Dvlen_reclaim(atype, aspace, H5P_DEFAULT, conv_buf)
+ * 
+ */
+        __pyx_t_6 = __pyx_f_4h5py_4defs_H5Awrite(__pyx_v_attr, __pyx_v_atype, __pyx_v_conv_buf); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L4;}
+
+        /* "h5py/_proxy.pyx":65
+ *                 H5Tconvert(mtype, atype, npoints, conv_buf, back_buf, H5P_DEFAULT)
+ *                 H5Awrite(attr, atype, conv_buf)
+ *                 H5Dvlen_reclaim(atype, aspace, H5P_DEFAULT, conv_buf)             # <<<<<<<<<<<<<<
+ * 
+ *     finally:
+ */
+        __pyx_t_6 = __pyx_f_4h5py_4defs_H5Dvlen_reclaim(__pyx_v_atype, __pyx_v_aspace, H5P_DEFAULT, __pyx_v_conv_buf); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L4;}
+      }
+      __pyx_L10:;
+    }
+    __pyx_L6:;
+  }
+
+  /* "h5py/_proxy.pyx":68
+ * 
+ *     finally:
+ *         free(conv_buf)             # <<<<<<<<<<<<<<
+ *         free(back_buf)
+ *         if atype > 0:
+ */
+  /*finally:*/ {
+    int __pyx_why;
+    PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb;
+    int __pyx_exc_lineno;
+    __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
+    __pyx_why = 0; goto __pyx_L5;
+    __pyx_L4: {
+      __pyx_why = 4;
+      __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb);
+      __pyx_exc_lineno = __pyx_lineno;
+      goto __pyx_L5;
+    }
+    __pyx_L5:;
+    free(__pyx_v_conv_buf);
+
+    /* "h5py/_proxy.pyx":69
+ *     finally:
+ *         free(conv_buf)
+ *         free(back_buf)             # <<<<<<<<<<<<<<
+ *         if atype > 0:
+ *             H5Tclose(atype)
+ */
+    free(__pyx_v_back_buf);
+
+    /* "h5py/_proxy.pyx":70
+ *         free(conv_buf)
+ *         free(back_buf)
+ *         if atype > 0:             # <<<<<<<<<<<<<<
+ *             H5Tclose(atype)
+ *         if aspace > 0:
+ */
+    __pyx_t_5 = (__pyx_v_atype > 0);
+    if (__pyx_t_5) {
+
+      /* "h5py/_proxy.pyx":71
+ *         free(back_buf)
+ *         if atype > 0:
+ *             H5Tclose(atype)             # <<<<<<<<<<<<<<
+ *         if aspace > 0:
+ *             H5Sclose(aspace)
+ */
+      __pyx_t_6 = __pyx_f_4h5py_4defs_H5Tclose(__pyx_v_atype); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L11_error;}
+      goto __pyx_L12;
+    }
+    __pyx_L12:;
+
+    /* "h5py/_proxy.pyx":72
+ *         if atype > 0:
+ *             H5Tclose(atype)
+ *         if aspace > 0:             # <<<<<<<<<<<<<<
+ *             H5Sclose(aspace)
+ * 
+ */
+    __pyx_t_5 = (__pyx_v_aspace > 0);
+    if (__pyx_t_5) {
+
+      /* "h5py/_proxy.pyx":73
+ *             H5Tclose(atype)
+ *         if aspace > 0:
+ *             H5Sclose(aspace)             # <<<<<<<<<<<<<<
+ * 
+ *     return 0
+ */
+      __pyx_t_6 = __pyx_f_4h5py_4defs_H5Sclose(__pyx_v_aspace); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L11_error;}
+      goto __pyx_L13;
+    }
+    __pyx_L13:;
+    goto __pyx_L14;
+    __pyx_L11_error:;
+    if (__pyx_why == 4) {
+      Py_XDECREF(__pyx_exc_type);
+      Py_XDECREF(__pyx_exc_value);
+      Py_XDECREF(__pyx_exc_tb);
+    }
+    goto __pyx_L1_error;
+    __pyx_L14:;
+    switch (__pyx_why) {
+      case 4: {
+        __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb);
+        __pyx_lineno = __pyx_exc_lineno;
+        __pyx_exc_type = 0;
+        __pyx_exc_value = 0;
+        __pyx_exc_tb = 0;
+        goto __pyx_L1_error;
+      }
+    }
+  }
+
+  /* "h5py/_proxy.pyx":75
+ *             H5Sclose(aspace)
+ * 
+ *     return 0             # <<<<<<<<<<<<<<
+ * 
+ * # =============================================================================
+ */
+  __pyx_r = 0;
+  goto __pyx_L0;
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py._proxy.attr_rw", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/_proxy.pyx":80
+ * # Proxy functions to safely release the GIL around read/write operations
+ * 
+ * cdef herr_t H5PY_H5Dread(hid_t dset, hid_t mtype, hid_t mspace,             # <<<<<<<<<<<<<<
+ *                         hid_t fspace, hid_t dxpl, void* buf) except -1:
+ *     cdef herr_t retval
+ */
+
+static herr_t __pyx_f_4h5py_6_proxy_H5PY_H5Dread(hid_t __pyx_v_dset, hid_t __pyx_v_mtype, hid_t __pyx_v_mspace, hid_t __pyx_v_fspace, hid_t __pyx_v_dxpl, void *__pyx_v_buf) {
+  herr_t __pyx_v_retval;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  int __pyx_t_2;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5PY_H5Dread", 0);
+
+  /* "h5py/_proxy.pyx":84
+ *     cdef herr_t retval
+ *     #with nogil:
+ *     retval = H5Dread(dset, mtype, mspace, fspace, dxpl, buf)             # <<<<<<<<<<<<<<
+ *     if retval < 0:
+ *         return -1
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Dread(__pyx_v_dset, __pyx_v_mtype, __pyx_v_mspace, __pyx_v_fspace, __pyx_v_dxpl, __pyx_v_buf); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v_retval = __pyx_t_1;
+
+  /* "h5py/_proxy.pyx":85
+ *     #with nogil:
+ *     retval = H5Dread(dset, mtype, mspace, fspace, dxpl, buf)
+ *     if retval < 0:             # <<<<<<<<<<<<<<
+ *         return -1
+ *     return retval
+ */
+  __pyx_t_2 = (__pyx_v_retval < 0);
+  if (__pyx_t_2) {
+
+    /* "h5py/_proxy.pyx":86
+ *     retval = H5Dread(dset, mtype, mspace, fspace, dxpl, buf)
+ *     if retval < 0:
+ *         return -1             # <<<<<<<<<<<<<<
+ *     return retval
+ * 
+ */
+    __pyx_r = -1;
+    goto __pyx_L0;
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  /* "h5py/_proxy.pyx":87
+ *     if retval < 0:
+ *         return -1
+ *     return retval             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5PY_H5Dwrite(hid_t dset, hid_t mtype, hid_t mspace,
+ */
+  __pyx_r = __pyx_v_retval;
+  goto __pyx_L0;
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py._proxy.H5PY_H5Dread", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/_proxy.pyx":89
+ *     return retval
+ * 
+ * cdef herr_t H5PY_H5Dwrite(hid_t dset, hid_t mtype, hid_t mspace,             # <<<<<<<<<<<<<<
+ *                         hid_t fspace, hid_t dxpl, void* buf) except -1:
+ *     cdef herr_t retval
+ */
+
+static herr_t __pyx_f_4h5py_6_proxy_H5PY_H5Dwrite(hid_t __pyx_v_dset, hid_t __pyx_v_mtype, hid_t __pyx_v_mspace, hid_t __pyx_v_fspace, hid_t __pyx_v_dxpl, void *__pyx_v_buf) {
+  herr_t __pyx_v_retval;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  int __pyx_t_2;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5PY_H5Dwrite", 0);
+
+  /* "h5py/_proxy.pyx":93
+ *     cdef herr_t retval
+ *     #with nogil:
+ *     retval = H5Dwrite(dset, mtype, mspace, fspace, dxpl, buf)             # <<<<<<<<<<<<<<
+ *     if retval < 0:
+ *         return -1
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Dwrite(__pyx_v_dset, __pyx_v_mtype, __pyx_v_mspace, __pyx_v_fspace, __pyx_v_dxpl, __pyx_v_buf); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v_retval = __pyx_t_1;
+
+  /* "h5py/_proxy.pyx":94
+ *     #with nogil:
+ *     retval = H5Dwrite(dset, mtype, mspace, fspace, dxpl, buf)
+ *     if retval < 0:             # <<<<<<<<<<<<<<
+ *         return -1
+ *     return retval
+ */
+  __pyx_t_2 = (__pyx_v_retval < 0);
+  if (__pyx_t_2) {
+
+    /* "h5py/_proxy.pyx":95
+ *     retval = H5Dwrite(dset, mtype, mspace, fspace, dxpl, buf)
+ *     if retval < 0:
+ *         return -1             # <<<<<<<<<<<<<<
+ *     return retval
+ * 
+ */
+    __pyx_r = -1;
+    goto __pyx_L0;
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  /* "h5py/_proxy.pyx":96
+ *     if retval < 0:
+ *         return -1
+ *     return retval             # <<<<<<<<<<<<<<
+ * 
+ * # =============================================================================
+ */
+  __pyx_r = __pyx_v_retval;
+  goto __pyx_L0;
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py._proxy.H5PY_H5Dwrite", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/_proxy.pyx":102
+ * 
+ * 
+ * cdef herr_t dset_rw(hid_t dset, hid_t mtype, hid_t mspace, hid_t fspace,             # <<<<<<<<<<<<<<
+ *                     hid_t dxpl, void* progbuf, int read) except -1:
+ * 
+ */
+
+static herr_t __pyx_f_4h5py_6_proxy_dset_rw(hid_t __pyx_v_dset, hid_t __pyx_v_mtype, hid_t __pyx_v_mspace, hid_t __pyx_v_fspace, hid_t __pyx_v_dxpl, void *__pyx_v_progbuf, int __pyx_v_read) {
+  htri_t __pyx_v_need_bkg;
+  hid_t __pyx_v_dstype;
+  hid_t __pyx_v_rawdstype;
+  hid_t __pyx_v_dspace;
+  hid_t __pyx_v_cspace;
+  void *__pyx_v_back_buf;
+  void *__pyx_v_conv_buf;
+  hsize_t __pyx_v_npoints;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  enum H5T_class_t __pyx_t_1;
+  int __pyx_t_2;
+  int __pyx_t_3;
+  int __pyx_t_4;
+  hid_t __pyx_t_5;
+  herr_t __pyx_t_6;
+  htri_t __pyx_t_7;
+  htri_t __pyx_t_8;
+  hssize_t __pyx_t_9;
+  size_t __pyx_t_10;
+  size_t __pyx_t_11;
+  void *__pyx_t_12;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("dset_rw", 0);
+
+  /* "h5py/_proxy.pyx":106
+ * 
+ *     cdef htri_t need_bkg
+ *     cdef hid_t dstype = -1      # Dataset datatype             # <<<<<<<<<<<<<<
+ *     cdef hid_t rawdstype = -1
+ *     cdef hid_t dspace = -1      # Dataset dataspace
+ */
+  __pyx_v_dstype = -1;
+
+  /* "h5py/_proxy.pyx":107
+ *     cdef htri_t need_bkg
+ *     cdef hid_t dstype = -1      # Dataset datatype
+ *     cdef hid_t rawdstype = -1             # <<<<<<<<<<<<<<
+ *     cdef hid_t dspace = -1      # Dataset dataspace
+ *     cdef hid_t cspace = -1      # Temporary contiguous dataspaces
+ */
+  __pyx_v_rawdstype = -1;
+
+  /* "h5py/_proxy.pyx":108
+ *     cdef hid_t dstype = -1      # Dataset datatype
+ *     cdef hid_t rawdstype = -1
+ *     cdef hid_t dspace = -1      # Dataset dataspace             # <<<<<<<<<<<<<<
+ *     cdef hid_t cspace = -1      # Temporary contiguous dataspaces
+ * 
+ */
+  __pyx_v_dspace = -1;
+
+  /* "h5py/_proxy.pyx":109
+ *     cdef hid_t rawdstype = -1
+ *     cdef hid_t dspace = -1      # Dataset dataspace
+ *     cdef hid_t cspace = -1      # Temporary contiguous dataspaces             # <<<<<<<<<<<<<<
+ * 
+ *     cdef void* back_buf = NULL
+ */
+  __pyx_v_cspace = -1;
+
+  /* "h5py/_proxy.pyx":111
+ *     cdef hid_t cspace = -1      # Temporary contiguous dataspaces
+ * 
+ *     cdef void* back_buf = NULL             # <<<<<<<<<<<<<<
+ *     cdef void* conv_buf = NULL
+ *     cdef hsize_t npoints
+ */
+  __pyx_v_back_buf = NULL;
+
+  /* "h5py/_proxy.pyx":112
+ * 
+ *     cdef void* back_buf = NULL
+ *     cdef void* conv_buf = NULL             # <<<<<<<<<<<<<<
+ *     cdef hsize_t npoints
+ * 
+ */
+  __pyx_v_conv_buf = NULL;
+
+  /* "h5py/_proxy.pyx":115
+ *     cdef hsize_t npoints
+ * 
+ *     try:             # <<<<<<<<<<<<<<
+ *         # Issue 372: when a compound type is involved, using the dataset type
+ *         # may result in uninitialized data being sent to H5Tconvert for fields
+ */
+  /*try:*/ {
+
+    /* "h5py/_proxy.pyx":121
+ *         # to only those fields present in the memory type.  We can't use the
+ *         # memory type directly because of course that triggers HDFFV-1063.
+ *         if (H5Tget_class(mtype) == H5T_COMPOUND) and (not read):             # <<<<<<<<<<<<<<
+ *             rawdstype = H5Dget_type(dset)
+ *             dstype = make_reduced_type(mtype, rawdstype)
+ */
+    __pyx_t_1 = __pyx_f_4h5py_4defs_H5Tget_class(__pyx_v_mtype); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 121; __pyx_clineno = __LINE__; goto __pyx_L4;}
+    __pyx_t_2 = (__pyx_t_1 == H5T_COMPOUND);
+    if (__pyx_t_2) {
+      __pyx_t_3 = (!__pyx_v_read);
+      __pyx_t_4 = __pyx_t_3;
+    } else {
+      __pyx_t_4 = __pyx_t_2;
+    }
+    if (__pyx_t_4) {
+
+      /* "h5py/_proxy.pyx":122
+ *         # memory type directly because of course that triggers HDFFV-1063.
+ *         if (H5Tget_class(mtype) == H5T_COMPOUND) and (not read):
+ *             rawdstype = H5Dget_type(dset)             # <<<<<<<<<<<<<<
+ *             dstype = make_reduced_type(mtype, rawdstype)
+ *             H5Tclose(rawdstype)
+ */
+      __pyx_t_5 = __pyx_f_4h5py_4defs_H5Dget_type(__pyx_v_dset); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L4;}
+      __pyx_v_rawdstype = __pyx_t_5;
+
+      /* "h5py/_proxy.pyx":123
+ *         if (H5Tget_class(mtype) == H5T_COMPOUND) and (not read):
+ *             rawdstype = H5Dget_type(dset)
+ *             dstype = make_reduced_type(mtype, rawdstype)             # <<<<<<<<<<<<<<
+ *             H5Tclose(rawdstype)
+ *         else:
+ */
+      __pyx_v_dstype = __pyx_f_4h5py_6_proxy_make_reduced_type(__pyx_v_mtype, __pyx_v_rawdstype);
+
+      /* "h5py/_proxy.pyx":124
+ *             rawdstype = H5Dget_type(dset)
+ *             dstype = make_reduced_type(mtype, rawdstype)
+ *             H5Tclose(rawdstype)             # <<<<<<<<<<<<<<
+ *         else:
+ *             dstype = H5Dget_type(dset)
+ */
+      __pyx_t_6 = __pyx_f_4h5py_4defs_H5Tclose(__pyx_v_rawdstype); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L4;}
+      goto __pyx_L6;
+    }
+    /*else*/ {
+
+      /* "h5py/_proxy.pyx":126
+ *             H5Tclose(rawdstype)
+ *         else:
+ *             dstype = H5Dget_type(dset)             # <<<<<<<<<<<<<<
+ * 
+ *         if not (needs_proxy(dstype) or needs_proxy(mtype)):
+ */
+      __pyx_t_5 = __pyx_f_4h5py_4defs_H5Dget_type(__pyx_v_dset); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L4;}
+      __pyx_v_dstype = __pyx_t_5;
+    }
+    __pyx_L6:;
+
+    /* "h5py/_proxy.pyx":128
+ *             dstype = H5Dget_type(dset)
+ * 
+ *         if not (needs_proxy(dstype) or needs_proxy(mtype)):             # <<<<<<<<<<<<<<
+ *             if read:
+ *                 H5PY_H5Dread(dset, mtype, mspace, fspace, dxpl, progbuf)
+ */
+    __pyx_t_7 = __pyx_f_4h5py_6_proxy_needs_proxy(__pyx_v_dstype); if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L4;}
+    if (!__pyx_t_7) {
+      __pyx_t_8 = __pyx_f_4h5py_6_proxy_needs_proxy(__pyx_v_mtype); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L4;}
+      __pyx_t_4 = __pyx_t_8;
+    } else {
+      __pyx_t_4 = __pyx_t_7;
+    }
+    __pyx_t_2 = (!__pyx_t_4);
+    if (__pyx_t_2) {
+
+      /* "h5py/_proxy.pyx":129
+ * 
+ *         if not (needs_proxy(dstype) or needs_proxy(mtype)):
+ *             if read:             # <<<<<<<<<<<<<<
+ *                 H5PY_H5Dread(dset, mtype, mspace, fspace, dxpl, progbuf)
+ *             else:
+ */
+      if (__pyx_v_read) {
+
+        /* "h5py/_proxy.pyx":130
+ *         if not (needs_proxy(dstype) or needs_proxy(mtype)):
+ *             if read:
+ *                 H5PY_H5Dread(dset, mtype, mspace, fspace, dxpl, progbuf)             # <<<<<<<<<<<<<<
+ *             else:
+ *                 H5PY_H5Dwrite(dset, mtype, mspace, fspace, dxpl, progbuf)
+ */
+        __pyx_t_6 = __pyx_f_4h5py_6_proxy_H5PY_H5Dread(__pyx_v_dset, __pyx_v_mtype, __pyx_v_mspace, __pyx_v_fspace, __pyx_v_dxpl, __pyx_v_progbuf); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L4;}
+        goto __pyx_L8;
+      }
+      /*else*/ {
+
+        /* "h5py/_proxy.pyx":132
+ *                 H5PY_H5Dread(dset, mtype, mspace, fspace, dxpl, progbuf)
+ *             else:
+ *                 H5PY_H5Dwrite(dset, mtype, mspace, fspace, dxpl, progbuf)             # <<<<<<<<<<<<<<
+ *         else:
+ * 
+ */
+        __pyx_t_6 = __pyx_f_4h5py_6_proxy_H5PY_H5Dwrite(__pyx_v_dset, __pyx_v_mtype, __pyx_v_mspace, __pyx_v_fspace, __pyx_v_dxpl, __pyx_v_progbuf); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L4;}
+      }
+      __pyx_L8:;
+      goto __pyx_L7;
+    }
+    /*else*/ {
+
+      /* "h5py/_proxy.pyx":135
+ *         else:
+ * 
+ *             if mspace == H5S_ALL and fspace != H5S_ALL:             # <<<<<<<<<<<<<<
+ *                 mspace = fspace
+ *             elif mspace != H5S_ALL and fspace == H5S_ALL:
+ */
+      __pyx_t_2 = (__pyx_v_mspace == H5S_ALL);
+      if (__pyx_t_2) {
+        __pyx_t_4 = (__pyx_v_fspace != H5S_ALL);
+        __pyx_t_3 = __pyx_t_4;
+      } else {
+        __pyx_t_3 = __pyx_t_2;
+      }
+      if (__pyx_t_3) {
+
+        /* "h5py/_proxy.pyx":136
+ * 
+ *             if mspace == H5S_ALL and fspace != H5S_ALL:
+ *                 mspace = fspace             # <<<<<<<<<<<<<<
+ *             elif mspace != H5S_ALL and fspace == H5S_ALL:
+ *                 fspace = mspace
+ */
+        __pyx_v_mspace = __pyx_v_fspace;
+        goto __pyx_L9;
+      }
+
+      /* "h5py/_proxy.pyx":137
+ *             if mspace == H5S_ALL and fspace != H5S_ALL:
+ *                 mspace = fspace
+ *             elif mspace != H5S_ALL and fspace == H5S_ALL:             # <<<<<<<<<<<<<<
+ *                 fspace = mspace
+ *             elif mspace == H5S_ALL and fspace == H5S_ALL:
+ */
+      __pyx_t_3 = (__pyx_v_mspace != H5S_ALL);
+      if (__pyx_t_3) {
+        __pyx_t_2 = (__pyx_v_fspace == H5S_ALL);
+        __pyx_t_4 = __pyx_t_2;
+      } else {
+        __pyx_t_4 = __pyx_t_3;
+      }
+      if (__pyx_t_4) {
+
+        /* "h5py/_proxy.pyx":138
+ *                 mspace = fspace
+ *             elif mspace != H5S_ALL and fspace == H5S_ALL:
+ *                 fspace = mspace             # <<<<<<<<<<<<<<
+ *             elif mspace == H5S_ALL and fspace == H5S_ALL:
+ *                 fspace = mspace = dspace = H5Dget_space(dset)
+ */
+        __pyx_v_fspace = __pyx_v_mspace;
+        goto __pyx_L9;
+      }
+
+      /* "h5py/_proxy.pyx":139
+ *             elif mspace != H5S_ALL and fspace == H5S_ALL:
+ *                 fspace = mspace
+ *             elif mspace == H5S_ALL and fspace == H5S_ALL:             # <<<<<<<<<<<<<<
+ *                 fspace = mspace = dspace = H5Dget_space(dset)
+ * 
+ */
+      __pyx_t_4 = (__pyx_v_mspace == H5S_ALL);
+      if (__pyx_t_4) {
+        __pyx_t_3 = (__pyx_v_fspace == H5S_ALL);
+        __pyx_t_2 = __pyx_t_3;
+      } else {
+        __pyx_t_2 = __pyx_t_4;
+      }
+      if (__pyx_t_2) {
+
+        /* "h5py/_proxy.pyx":140
+ *                 fspace = mspace
+ *             elif mspace == H5S_ALL and fspace == H5S_ALL:
+ *                 fspace = mspace = dspace = H5Dget_space(dset)             # <<<<<<<<<<<<<<
+ * 
+ *             npoints = H5Sget_select_npoints(mspace)
+ */
+        __pyx_t_5 = __pyx_f_4h5py_4defs_H5Dget_space(__pyx_v_dset); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 140; __pyx_clineno = __LINE__; goto __pyx_L4;}
+        __pyx_v_fspace = __pyx_t_5;
+        __pyx_v_mspace = __pyx_t_5;
+        __pyx_v_dspace = __pyx_t_5;
+        goto __pyx_L9;
+      }
+      __pyx_L9:;
+
+      /* "h5py/_proxy.pyx":142
+ *                 fspace = mspace = dspace = H5Dget_space(dset)
+ * 
+ *             npoints = H5Sget_select_npoints(mspace)             # <<<<<<<<<<<<<<
+ *             cspace = H5Screate_simple(1, &npoints, NULL)
+ * 
+ */
+      __pyx_t_9 = __pyx_f_4h5py_4defs_H5Sget_select_npoints(__pyx_v_mspace); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L4;}
+      __pyx_v_npoints = __pyx_t_9;
+
+      /* "h5py/_proxy.pyx":143
+ * 
+ *             npoints = H5Sget_select_npoints(mspace)
+ *             cspace = H5Screate_simple(1, &npoints, NULL)             # <<<<<<<<<<<<<<
+ * 
+ *             conv_buf = create_buffer(H5Tget_size(dstype), H5Tget_size(mtype), npoints)
+ */
+      __pyx_t_5 = __pyx_f_4h5py_4defs_H5Screate_simple(1, (&__pyx_v_npoints), NULL); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 143; __pyx_clineno = __LINE__; goto __pyx_L4;}
+      __pyx_v_cspace = __pyx_t_5;
+
+      /* "h5py/_proxy.pyx":145
+ *             cspace = H5Screate_simple(1, &npoints, NULL)
+ * 
+ *             conv_buf = create_buffer(H5Tget_size(dstype), H5Tget_size(mtype), npoints)             # <<<<<<<<<<<<<<
+ * 
+ *             # Only create a (contiguous) backing buffer if absolutely
+ */
+      __pyx_t_10 = __pyx_f_4h5py_4defs_H5Tget_size(__pyx_v_dstype); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L4;}
+      __pyx_t_11 = __pyx_f_4h5py_4defs_H5Tget_size(__pyx_v_mtype); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L4;}
+      __pyx_t_12 = __pyx_f_4h5py_6_proxy_create_buffer(__pyx_t_10, __pyx_t_11, __pyx_v_npoints); if (unlikely(__pyx_t_12 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L4;}
+      __pyx_v_conv_buf = __pyx_t_12;
+
+      /* "h5py/_proxy.pyx":149
+ *             # Only create a (contiguous) backing buffer if absolutely
+ *             # necessary. Note this buffer always has memory type.
+ *             if read:             # <<<<<<<<<<<<<<
+ *                 need_bkg = needs_bkg_buffer(dstype, mtype)
+ *             else:
+ */
+      if (__pyx_v_read) {
+
+        /* "h5py/_proxy.pyx":150
+ *             # necessary. Note this buffer always has memory type.
+ *             if read:
+ *                 need_bkg = needs_bkg_buffer(dstype, mtype)             # <<<<<<<<<<<<<<
+ *             else:
+ *                 need_bkg = needs_bkg_buffer(mtype, dstype)
+ */
+        __pyx_t_7 = __pyx_f_4h5py_6_proxy_needs_bkg_buffer(__pyx_v_dstype, __pyx_v_mtype); if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L4;}
+        __pyx_v_need_bkg = __pyx_t_7;
+        goto __pyx_L10;
+      }
+      /*else*/ {
+
+        /* "h5py/_proxy.pyx":152
+ *                 need_bkg = needs_bkg_buffer(dstype, mtype)
+ *             else:
+ *                 need_bkg = needs_bkg_buffer(mtype, dstype)             # <<<<<<<<<<<<<<
+ *             if need_bkg:
+ *                 back_buf = create_buffer(H5Tget_size(dstype), H5Tget_size(mtype), npoints)
+ */
+        __pyx_t_7 = __pyx_f_4h5py_6_proxy_needs_bkg_buffer(__pyx_v_mtype, __pyx_v_dstype); if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 152; __pyx_clineno = __LINE__; goto __pyx_L4;}
+        __pyx_v_need_bkg = __pyx_t_7;
+      }
+      __pyx_L10:;
+
+      /* "h5py/_proxy.pyx":153
+ *             else:
+ *                 need_bkg = needs_bkg_buffer(mtype, dstype)
+ *             if need_bkg:             # <<<<<<<<<<<<<<
+ *                 back_buf = create_buffer(H5Tget_size(dstype), H5Tget_size(mtype), npoints)
+ *                 h5py_copy(mtype, mspace, back_buf, progbuf, H5PY_GATHER)
+ */
+      if (__pyx_v_need_bkg) {
+
+        /* "h5py/_proxy.pyx":154
+ *                 need_bkg = needs_bkg_buffer(mtype, dstype)
+ *             if need_bkg:
+ *                 back_buf = create_buffer(H5Tget_size(dstype), H5Tget_size(mtype), npoints)             # <<<<<<<<<<<<<<
+ *                 h5py_copy(mtype, mspace, back_buf, progbuf, H5PY_GATHER)
+ * 
+ */
+        __pyx_t_11 = __pyx_f_4h5py_4defs_H5Tget_size(__pyx_v_dstype); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 154; __pyx_clineno = __LINE__; goto __pyx_L4;}
+        __pyx_t_10 = __pyx_f_4h5py_4defs_H5Tget_size(__pyx_v_mtype); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 154; __pyx_clineno = __LINE__; goto __pyx_L4;}
+        __pyx_t_12 = __pyx_f_4h5py_6_proxy_create_buffer(__pyx_t_11, __pyx_t_10, __pyx_v_npoints); if (unlikely(__pyx_t_12 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 154; __pyx_clineno = __LINE__; goto __pyx_L4;}
+        __pyx_v_back_buf = __pyx_t_12;
+
+        /* "h5py/_proxy.pyx":155
+ *             if need_bkg:
+ *                 back_buf = create_buffer(H5Tget_size(dstype), H5Tget_size(mtype), npoints)
+ *                 h5py_copy(mtype, mspace, back_buf, progbuf, H5PY_GATHER)             # <<<<<<<<<<<<<<
+ * 
+ *             if read:
+ */
+        __pyx_t_6 = __pyx_f_4h5py_6_proxy_h5py_copy(__pyx_v_mtype, __pyx_v_mspace, __pyx_v_back_buf, __pyx_v_progbuf, __pyx_e_4h5py_6_proxy_H5PY_GATHER); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 155; __pyx_clineno = __LINE__; goto __pyx_L4;}
+        goto __pyx_L11;
+      }
+      __pyx_L11:;
+
+      /* "h5py/_proxy.pyx":157
+ *                 h5py_copy(mtype, mspace, back_buf, progbuf, H5PY_GATHER)
+ * 
+ *             if read:             # <<<<<<<<<<<<<<
+ *                 H5PY_H5Dread(dset, dstype, cspace, fspace, dxpl, conv_buf)
+ *                 H5Tconvert(dstype, mtype, npoints, conv_buf, back_buf, dxpl)
+ */
+      if (__pyx_v_read) {
+
+        /* "h5py/_proxy.pyx":158
+ * 
+ *             if read:
+ *                 H5PY_H5Dread(dset, dstype, cspace, fspace, dxpl, conv_buf)             # <<<<<<<<<<<<<<
+ *                 H5Tconvert(dstype, mtype, npoints, conv_buf, back_buf, dxpl)
+ *                 h5py_copy(mtype, mspace, conv_buf, progbuf, H5PY_SCATTER)
+ */
+        __pyx_t_6 = __pyx_f_4h5py_6_proxy_H5PY_H5Dread(__pyx_v_dset, __pyx_v_dstype, __pyx_v_cspace, __pyx_v_fspace, __pyx_v_dxpl, __pyx_v_conv_buf); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L4;}
+
+        /* "h5py/_proxy.pyx":159
+ *             if read:
+ *                 H5PY_H5Dread(dset, dstype, cspace, fspace, dxpl, conv_buf)
+ *                 H5Tconvert(dstype, mtype, npoints, conv_buf, back_buf, dxpl)             # <<<<<<<<<<<<<<
+ *                 h5py_copy(mtype, mspace, conv_buf, progbuf, H5PY_SCATTER)
+ *             else:
+ */
+        __pyx_t_6 = __pyx_f_4h5py_4defs_H5Tconvert(__pyx_v_dstype, __pyx_v_mtype, __pyx_v_npoints, __pyx_v_conv_buf, __pyx_v_back_buf, __pyx_v_dxpl); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 159; __pyx_clineno = __LINE__; goto __pyx_L4;}
+
+        /* "h5py/_proxy.pyx":160
+ *                 H5PY_H5Dread(dset, dstype, cspace, fspace, dxpl, conv_buf)
+ *                 H5Tconvert(dstype, mtype, npoints, conv_buf, back_buf, dxpl)
+ *                 h5py_copy(mtype, mspace, conv_buf, progbuf, H5PY_SCATTER)             # <<<<<<<<<<<<<<
+ *             else:
+ *                 h5py_copy(mtype, mspace, conv_buf, progbuf, H5PY_GATHER)
+ */
+        __pyx_t_6 = __pyx_f_4h5py_6_proxy_h5py_copy(__pyx_v_mtype, __pyx_v_mspace, __pyx_v_conv_buf, __pyx_v_progbuf, __pyx_e_4h5py_6_proxy_H5PY_SCATTER); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 160; __pyx_clineno = __LINE__; goto __pyx_L4;}
+        goto __pyx_L12;
+      }
+      /*else*/ {
+
+        /* "h5py/_proxy.pyx":162
+ *                 h5py_copy(mtype, mspace, conv_buf, progbuf, H5PY_SCATTER)
+ *             else:
+ *                 h5py_copy(mtype, mspace, conv_buf, progbuf, H5PY_GATHER)             # <<<<<<<<<<<<<<
+ *                 H5Tconvert(mtype, dstype, npoints, conv_buf, back_buf, dxpl)
+ *                 H5PY_H5Dwrite(dset, dstype, cspace, fspace, dxpl, conv_buf)
+ */
+        __pyx_t_6 = __pyx_f_4h5py_6_proxy_h5py_copy(__pyx_v_mtype, __pyx_v_mspace, __pyx_v_conv_buf, __pyx_v_progbuf, __pyx_e_4h5py_6_proxy_H5PY_GATHER); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L4;}
+
+        /* "h5py/_proxy.pyx":163
+ *             else:
+ *                 h5py_copy(mtype, mspace, conv_buf, progbuf, H5PY_GATHER)
+ *                 H5Tconvert(mtype, dstype, npoints, conv_buf, back_buf, dxpl)             # <<<<<<<<<<<<<<
+ *                 H5PY_H5Dwrite(dset, dstype, cspace, fspace, dxpl, conv_buf)
+ *                 H5Dvlen_reclaim(dstype, cspace, H5P_DEFAULT, conv_buf)
+ */
+        __pyx_t_6 = __pyx_f_4h5py_4defs_H5Tconvert(__pyx_v_mtype, __pyx_v_dstype, __pyx_v_npoints, __pyx_v_conv_buf, __pyx_v_back_buf, __pyx_v_dxpl); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 163; __pyx_clineno = __LINE__; goto __pyx_L4;}
+
+        /* "h5py/_proxy.pyx":164
+ *                 h5py_copy(mtype, mspace, conv_buf, progbuf, H5PY_GATHER)
+ *                 H5Tconvert(mtype, dstype, npoints, conv_buf, back_buf, dxpl)
+ *                 H5PY_H5Dwrite(dset, dstype, cspace, fspace, dxpl, conv_buf)             # <<<<<<<<<<<<<<
+ *                 H5Dvlen_reclaim(dstype, cspace, H5P_DEFAULT, conv_buf)
+ * 
+ */
+        __pyx_t_6 = __pyx_f_4h5py_6_proxy_H5PY_H5Dwrite(__pyx_v_dset, __pyx_v_dstype, __pyx_v_cspace, __pyx_v_fspace, __pyx_v_dxpl, __pyx_v_conv_buf); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 164; __pyx_clineno = __LINE__; goto __pyx_L4;}
+
+        /* "h5py/_proxy.pyx":165
+ *                 H5Tconvert(mtype, dstype, npoints, conv_buf, back_buf, dxpl)
+ *                 H5PY_H5Dwrite(dset, dstype, cspace, fspace, dxpl, conv_buf)
+ *                 H5Dvlen_reclaim(dstype, cspace, H5P_DEFAULT, conv_buf)             # <<<<<<<<<<<<<<
+ * 
+ *     finally:
+ */
+        __pyx_t_6 = __pyx_f_4h5py_4defs_H5Dvlen_reclaim(__pyx_v_dstype, __pyx_v_cspace, H5P_DEFAULT, __pyx_v_conv_buf); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 165; __pyx_clineno = __LINE__; goto __pyx_L4;}
+      }
+      __pyx_L12:;
+    }
+    __pyx_L7:;
+  }
+
+  /* "h5py/_proxy.pyx":168
+ * 
+ *     finally:
+ *         free(back_buf)             # <<<<<<<<<<<<<<
+ *         free(conv_buf)
+ *         if dstype > 0:
+ */
+  /*finally:*/ {
+    int __pyx_why;
+    PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb;
+    int __pyx_exc_lineno;
+    __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
+    __pyx_why = 0; goto __pyx_L5;
+    __pyx_L4: {
+      __pyx_why = 4;
+      __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb);
+      __pyx_exc_lineno = __pyx_lineno;
+      goto __pyx_L5;
+    }
+    __pyx_L5:;
+    free(__pyx_v_back_buf);
+
+    /* "h5py/_proxy.pyx":169
+ *     finally:
+ *         free(back_buf)
+ *         free(conv_buf)             # <<<<<<<<<<<<<<
+ *         if dstype > 0:
+ *             H5Tclose(dstype)
+ */
+    free(__pyx_v_conv_buf);
+
+    /* "h5py/_proxy.pyx":170
+ *         free(back_buf)
+ *         free(conv_buf)
+ *         if dstype > 0:             # <<<<<<<<<<<<<<
+ *             H5Tclose(dstype)
+ *         if dspace > 0:
+ */
+    __pyx_t_2 = (__pyx_v_dstype > 0);
+    if (__pyx_t_2) {
+
+      /* "h5py/_proxy.pyx":171
+ *         free(conv_buf)
+ *         if dstype > 0:
+ *             H5Tclose(dstype)             # <<<<<<<<<<<<<<
+ *         if dspace > 0:
+ *             H5Sclose(dspace)
+ */
+      __pyx_t_6 = __pyx_f_4h5py_4defs_H5Tclose(__pyx_v_dstype); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 171; __pyx_clineno = __LINE__; goto __pyx_L13_error;}
+      goto __pyx_L14;
+    }
+    __pyx_L14:;
+
+    /* "h5py/_proxy.pyx":172
+ *         if dstype > 0:
+ *             H5Tclose(dstype)
+ *         if dspace > 0:             # <<<<<<<<<<<<<<
+ *             H5Sclose(dspace)
+ *         if cspace > 0:
+ */
+    __pyx_t_2 = (__pyx_v_dspace > 0);
+    if (__pyx_t_2) {
+
+      /* "h5py/_proxy.pyx":173
+ *             H5Tclose(dstype)
+ *         if dspace > 0:
+ *             H5Sclose(dspace)             # <<<<<<<<<<<<<<
+ *         if cspace > 0:
+ *             H5Sclose(cspace)
+ */
+      __pyx_t_6 = __pyx_f_4h5py_4defs_H5Sclose(__pyx_v_dspace); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L13_error;}
+      goto __pyx_L15;
+    }
+    __pyx_L15:;
+
+    /* "h5py/_proxy.pyx":174
+ *         if dspace > 0:
+ *             H5Sclose(dspace)
+ *         if cspace > 0:             # <<<<<<<<<<<<<<
+ *             H5Sclose(cspace)
+ * 
+ */
+    __pyx_t_2 = (__pyx_v_cspace > 0);
+    if (__pyx_t_2) {
+
+      /* "h5py/_proxy.pyx":175
+ *             H5Sclose(dspace)
+ *         if cspace > 0:
+ *             H5Sclose(cspace)             # <<<<<<<<<<<<<<
+ * 
+ *     return 0
+ */
+      __pyx_t_6 = __pyx_f_4h5py_4defs_H5Sclose(__pyx_v_cspace); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 175; __pyx_clineno = __LINE__; goto __pyx_L13_error;}
+      goto __pyx_L16;
+    }
+    __pyx_L16:;
+    goto __pyx_L17;
+    __pyx_L13_error:;
+    if (__pyx_why == 4) {
+      Py_XDECREF(__pyx_exc_type);
+      Py_XDECREF(__pyx_exc_value);
+      Py_XDECREF(__pyx_exc_tb);
+    }
+    goto __pyx_L1_error;
+    __pyx_L17:;
+    switch (__pyx_why) {
+      case 4: {
+        __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb);
+        __pyx_lineno = __pyx_exc_lineno;
+        __pyx_exc_type = 0;
+        __pyx_exc_value = 0;
+        __pyx_exc_tb = 0;
+        goto __pyx_L1_error;
+      }
+    }
+  }
+
+  /* "h5py/_proxy.pyx":177
+ *             H5Sclose(cspace)
+ * 
+ *     return 0             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_r = 0;
+  goto __pyx_L0;
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py._proxy.dset_rw", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/_proxy.pyx":180
+ * 
+ * 
+ * cdef hid_t make_reduced_type(hid_t mtype, hid_t dstype):             # <<<<<<<<<<<<<<
+ *     # Go through dstype, pick out the fields which also appear in mtype, and
+ *     # return a new compound type with the fields packed together
+ */
+
+static hid_t __pyx_f_4h5py_6_proxy_make_reduced_type(hid_t __pyx_v_mtype, hid_t __pyx_v_dstype) {
+  hid_t __pyx_v_newtype;
+  hid_t __pyx_v_temptype;
+  hsize_t __pyx_v_newtype_size;
+  hsize_t __pyx_v_offset;
+  PyObject *__pyx_v_mtype_fields = NULL;
+  int __pyx_v_idx;
+  char *__pyx_v_name;
+  hid_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_t_2;
+  int __pyx_t_3;
+  char *__pyx_t_4;
+  int __pyx_t_5;
+  int __pyx_t_6;
+  hid_t __pyx_t_7;
+  size_t __pyx_t_8;
+  herr_t __pyx_t_9;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("make_reduced_type", 0);
+
+  /* "h5py/_proxy.pyx":189
+ * 
+ *     # Make a list of all names in the memory type.
+ *     mtype_fields = []             # <<<<<<<<<<<<<<
+ *     for idx in xrange(H5Tget_nmembers(mtype)):
+ *         mtype_fields.append(H5Tget_member_name(mtype, idx))
+ */
+  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 189; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_mtype_fields = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "h5py/_proxy.pyx":190
+ *     # Make a list of all names in the memory type.
+ *     mtype_fields = []
+ *     for idx in xrange(H5Tget_nmembers(mtype)):             # <<<<<<<<<<<<<<
+ *         mtype_fields.append(H5Tget_member_name(mtype, idx))
+ * 
+ */
+  __pyx_t_2 = __pyx_f_4h5py_4defs_H5Tget_nmembers(__pyx_v_mtype); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) {
+    __pyx_v_idx = __pyx_t_3;
+
+    /* "h5py/_proxy.pyx":191
+ *     mtype_fields = []
+ *     for idx in xrange(H5Tget_nmembers(mtype)):
+ *         mtype_fields.append(H5Tget_member_name(mtype, idx))             # <<<<<<<<<<<<<<
+ * 
+ *     # First pass: add up the sizes of matching fields so we know how large a
+ */
+    __pyx_t_4 = __pyx_f_4h5py_4defs_H5Tget_member_name(__pyx_v_mtype, __pyx_v_idx); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 191; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = PyBytes_FromString(__pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 191; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(((PyObject *)__pyx_t_1));
+    __pyx_t_5 = PyList_Append(__pyx_v_mtype_fields, ((PyObject *)__pyx_t_1)); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 191; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
+  }
+
+  /* "h5py/_proxy.pyx":195
+ *     # First pass: add up the sizes of matching fields so we know how large a
+ *     # type to make
+ *     newtype_size = 0             # <<<<<<<<<<<<<<
+ *     for idx in xrange(H5Tget_nmembers(dstype)):
+ *         name = H5Tget_member_name(dstype, idx)
+ */
+  __pyx_v_newtype_size = 0;
+
+  /* "h5py/_proxy.pyx":196
+ *     # type to make
+ *     newtype_size = 0
+ *     for idx in xrange(H5Tget_nmembers(dstype)):             # <<<<<<<<<<<<<<
+ *         name = H5Tget_member_name(dstype, idx)
+ *         if name not in mtype_fields:
+ */
+  __pyx_t_2 = __pyx_f_4h5py_4defs_H5Tget_nmembers(__pyx_v_dstype); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 196; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) {
+    __pyx_v_idx = __pyx_t_3;
+
+    /* "h5py/_proxy.pyx":197
+ *     newtype_size = 0
+ *     for idx in xrange(H5Tget_nmembers(dstype)):
+ *         name = H5Tget_member_name(dstype, idx)             # <<<<<<<<<<<<<<
+ *         if name not in mtype_fields:
+ *             continue
+ */
+    __pyx_t_4 = __pyx_f_4h5py_4defs_H5Tget_member_name(__pyx_v_dstype, __pyx_v_idx); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 197; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_v_name = __pyx_t_4;
+
+    /* "h5py/_proxy.pyx":198
+ *     for idx in xrange(H5Tget_nmembers(dstype)):
+ *         name = H5Tget_member_name(dstype, idx)
+ *         if name not in mtype_fields:             # <<<<<<<<<<<<<<
+ *             continue
+ *         temptype = H5Tget_member_type(dstype, idx)
+ */
+    __pyx_t_1 = PyBytes_FromString(__pyx_v_name); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 198; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(((PyObject *)__pyx_t_1));
+    __pyx_t_6 = (__Pyx_PySequence_Contains(((PyObject *)__pyx_t_1), ((PyObject *)__pyx_v_mtype_fields), Py_NE)); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 198; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
+    if (__pyx_t_6) {
+
+      /* "h5py/_proxy.pyx":199
+ *         name = H5Tget_member_name(dstype, idx)
+ *         if name not in mtype_fields:
+ *             continue             # <<<<<<<<<<<<<<
+ *         temptype = H5Tget_member_type(dstype, idx)
+ *         newtype_size += H5Tget_size(temptype)
+ */
+      goto __pyx_L5_continue;
+      goto __pyx_L7;
+    }
+    __pyx_L7:;
+
+    /* "h5py/_proxy.pyx":200
+ *         if name not in mtype_fields:
+ *             continue
+ *         temptype = H5Tget_member_type(dstype, idx)             # <<<<<<<<<<<<<<
+ *         newtype_size += H5Tget_size(temptype)
+ *         H5Tclose(temptype)
+ */
+    __pyx_t_7 = __pyx_f_4h5py_4defs_H5Tget_member_type(__pyx_v_dstype, __pyx_v_idx); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 200; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_v_temptype = __pyx_t_7;
+
+    /* "h5py/_proxy.pyx":201
+ *             continue
+ *         temptype = H5Tget_member_type(dstype, idx)
+ *         newtype_size += H5Tget_size(temptype)             # <<<<<<<<<<<<<<
+ *         H5Tclose(temptype)
+ * 
+ */
+    __pyx_t_8 = __pyx_f_4h5py_4defs_H5Tget_size(__pyx_v_temptype); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_v_newtype_size = (__pyx_v_newtype_size + __pyx_t_8);
+
+    /* "h5py/_proxy.pyx":202
+ *         temptype = H5Tget_member_type(dstype, idx)
+ *         newtype_size += H5Tget_size(temptype)
+ *         H5Tclose(temptype)             # <<<<<<<<<<<<<<
+ * 
+ *     newtype = H5Tcreate(H5T_COMPOUND, newtype_size)
+ */
+    __pyx_t_9 = __pyx_f_4h5py_4defs_H5Tclose(__pyx_v_temptype); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_L5_continue:;
+  }
+
+  /* "h5py/_proxy.pyx":204
+ *         H5Tclose(temptype)
+ * 
+ *     newtype = H5Tcreate(H5T_COMPOUND, newtype_size)             # <<<<<<<<<<<<<<
+ * 
+ *     # Second pass: pick out the matching fields and pack them in the new type
+ */
+  __pyx_t_7 = __pyx_f_4h5py_4defs_H5Tcreate(H5T_COMPOUND, __pyx_v_newtype_size); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 204; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v_newtype = __pyx_t_7;
+
+  /* "h5py/_proxy.pyx":207
+ * 
+ *     # Second pass: pick out the matching fields and pack them in the new type
+ *     offset = 0             # <<<<<<<<<<<<<<
+ *     for idx in xrange(H5Tget_nmembers(dstype)):
+ *         name = H5Tget_member_name(dstype, idx)
+ */
+  __pyx_v_offset = 0;
+
+  /* "h5py/_proxy.pyx":208
+ *     # Second pass: pick out the matching fields and pack them in the new type
+ *     offset = 0
+ *     for idx in xrange(H5Tget_nmembers(dstype)):             # <<<<<<<<<<<<<<
+ *         name = H5Tget_member_name(dstype, idx)
+ *         if name not in mtype_fields:
+ */
+  __pyx_t_2 = __pyx_f_4h5py_4defs_H5Tget_nmembers(__pyx_v_dstype); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) {
+    __pyx_v_idx = __pyx_t_3;
+
+    /* "h5py/_proxy.pyx":209
+ *     offset = 0
+ *     for idx in xrange(H5Tget_nmembers(dstype)):
+ *         name = H5Tget_member_name(dstype, idx)             # <<<<<<<<<<<<<<
+ *         if name not in mtype_fields:
+ *             continue
+ */
+    __pyx_t_4 = __pyx_f_4h5py_4defs_H5Tget_member_name(__pyx_v_dstype, __pyx_v_idx); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_v_name = __pyx_t_4;
+
+    /* "h5py/_proxy.pyx":210
+ *     for idx in xrange(H5Tget_nmembers(dstype)):
+ *         name = H5Tget_member_name(dstype, idx)
+ *         if name not in mtype_fields:             # <<<<<<<<<<<<<<
+ *             continue
+ *         temptype = H5Tget_member_type(dstype, idx)
+ */
+    __pyx_t_1 = PyBytes_FromString(__pyx_v_name); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(((PyObject *)__pyx_t_1));
+    __pyx_t_6 = (__Pyx_PySequence_Contains(((PyObject *)__pyx_t_1), ((PyObject *)__pyx_v_mtype_fields), Py_NE)); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
+    if (__pyx_t_6) {
+
+      /* "h5py/_proxy.pyx":211
+ *         name = H5Tget_member_name(dstype, idx)
+ *         if name not in mtype_fields:
+ *             continue             # <<<<<<<<<<<<<<
+ *         temptype = H5Tget_member_type(dstype, idx)
+ *         H5Tinsert(newtype, name, offset, temptype)
+ */
+      goto __pyx_L8_continue;
+      goto __pyx_L10;
+    }
+    __pyx_L10:;
+
+    /* "h5py/_proxy.pyx":212
+ *         if name not in mtype_fields:
+ *             continue
+ *         temptype = H5Tget_member_type(dstype, idx)             # <<<<<<<<<<<<<<
+ *         H5Tinsert(newtype, name, offset, temptype)
+ *         offset += H5Tget_size(temptype)
+ */
+    __pyx_t_7 = __pyx_f_4h5py_4defs_H5Tget_member_type(__pyx_v_dstype, __pyx_v_idx); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_v_temptype = __pyx_t_7;
+
+    /* "h5py/_proxy.pyx":213
+ *             continue
+ *         temptype = H5Tget_member_type(dstype, idx)
+ *         H5Tinsert(newtype, name, offset, temptype)             # <<<<<<<<<<<<<<
+ *         offset += H5Tget_size(temptype)
+ *         H5Tclose(temptype)
+ */
+    __pyx_t_9 = __pyx_f_4h5py_4defs_H5Tinsert(__pyx_v_newtype, __pyx_v_name, __pyx_v_offset, __pyx_v_temptype); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 213; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+    /* "h5py/_proxy.pyx":214
+ *         temptype = H5Tget_member_type(dstype, idx)
+ *         H5Tinsert(newtype, name, offset, temptype)
+ *         offset += H5Tget_size(temptype)             # <<<<<<<<<<<<<<
+ *         H5Tclose(temptype)
+ * 
+ */
+    __pyx_t_8 = __pyx_f_4h5py_4defs_H5Tget_size(__pyx_v_temptype); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 214; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_v_offset = (__pyx_v_offset + __pyx_t_8);
+
+    /* "h5py/_proxy.pyx":215
+ *         H5Tinsert(newtype, name, offset, temptype)
+ *         offset += H5Tget_size(temptype)
+ *         H5Tclose(temptype)             # <<<<<<<<<<<<<<
+ * 
+ *     return newtype
+ */
+    __pyx_t_9 = __pyx_f_4h5py_4defs_H5Tclose(__pyx_v_temptype); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 215; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_L8_continue:;
+  }
+
+  /* "h5py/_proxy.pyx":217
+ *         H5Tclose(temptype)
+ * 
+ *     return newtype             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_r = __pyx_v_newtype;
+  goto __pyx_L0;
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_WriteUnraisable("h5py._proxy.make_reduced_type", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_mtype_fields);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/_proxy.pyx":220
+ * 
+ * 
+ * cdef void* create_buffer(size_t ipt_size, size_t opt_size, size_t nl) except NULL:             # <<<<<<<<<<<<<<
+ * 
+ *     cdef size_t final_size
+ */
+
+static void *__pyx_f_4h5py_6_proxy_create_buffer(size_t __pyx_v_ipt_size, size_t __pyx_v_opt_size, size_t __pyx_v_nl) {
+  size_t __pyx_v_final_size;
+  void *__pyx_v_buf;
+  void *__pyx_r;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("create_buffer", 0);
+
+  /* "h5py/_proxy.pyx":225
+ *     cdef void* buf
+ * 
+ *     if ipt_size >= opt_size:             # <<<<<<<<<<<<<<
+ *         final_size = ipt_size*nl
+ *     else:
+ */
+  __pyx_t_1 = (__pyx_v_ipt_size >= __pyx_v_opt_size);
+  if (__pyx_t_1) {
+
+    /* "h5py/_proxy.pyx":226
+ * 
+ *     if ipt_size >= opt_size:
+ *         final_size = ipt_size*nl             # <<<<<<<<<<<<<<
+ *     else:
+ *         final_size = opt_size*nl
+ */
+    __pyx_v_final_size = (__pyx_v_ipt_size * __pyx_v_nl);
+    goto __pyx_L3;
+  }
+  /*else*/ {
+
+    /* "h5py/_proxy.pyx":228
+ *         final_size = ipt_size*nl
+ *     else:
+ *         final_size = opt_size*nl             # <<<<<<<<<<<<<<
+ * 
+ *     buf = malloc(final_size)
+ */
+    __pyx_v_final_size = (__pyx_v_opt_size * __pyx_v_nl);
+  }
+  __pyx_L3:;
+
+  /* "h5py/_proxy.pyx":230
+ *         final_size = opt_size*nl
+ * 
+ *     buf = malloc(final_size)             # <<<<<<<<<<<<<<
+ *     if buf == NULL:
+ *         raise MemoryError("Failed to allocate conversion buffer")
+ */
+  __pyx_v_buf = malloc(__pyx_v_final_size);
+
+  /* "h5py/_proxy.pyx":231
+ * 
+ *     buf = malloc(final_size)
+ *     if buf == NULL:             # <<<<<<<<<<<<<<
+ *         raise MemoryError("Failed to allocate conversion buffer")
+ * 
+ */
+  __pyx_t_1 = (__pyx_v_buf == NULL);
+  if (__pyx_t_1) {
+
+    /* "h5py/_proxy.pyx":232
+ *     buf = malloc(final_size)
+ *     if buf == NULL:
+ *         raise MemoryError("Failed to allocate conversion buffer")             # <<<<<<<<<<<<<<
+ * 
+ *     return buf
+ */
+    __pyx_t_2 = PyObject_Call(__pyx_builtin_MemoryError, ((PyObject *)__pyx_k_tuple_2), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 232; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 232; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    goto __pyx_L4;
+  }
+  __pyx_L4:;
+
+  /* "h5py/_proxy.pyx":234
+ *         raise MemoryError("Failed to allocate conversion buffer")
+ * 
+ *     return buf             # <<<<<<<<<<<<<<
+ * 
+ * # =============================================================================
+ */
+  __pyx_r = __pyx_v_buf;
+  goto __pyx_L0;
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py._proxy.create_buffer", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/_proxy.pyx":244
+ *     void* buf
+ * 
+ * cdef herr_t h5py_scatter_cb(void* elem, hid_t type_id, unsigned ndim,             # <<<<<<<<<<<<<<
+ *                 hsize_t *point, void *operator_data) except -1:
+ * 
+ */
+
+static herr_t __pyx_f_4h5py_6_proxy_h5py_scatter_cb(void *__pyx_v_elem, CYTHON_UNUSED hid_t __pyx_v_type_id, CYTHON_UNUSED unsigned int __pyx_v_ndim, CYTHON_UNUSED hsize_t *__pyx_v_point, void *__pyx_v_operator_data) {
+  __pyx_t_4h5py_6_proxy_h5py_scatter_t *__pyx_v_info;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  long __pyx_t_1;
+  __Pyx_RefNannySetupContext("h5py_scatter_cb", 0);
+
+  /* "h5py/_proxy.pyx":247
+ *                 hsize_t *point, void *operator_data) except -1:
+ * 
+ *     cdef h5py_scatter_t* info = <h5py_scatter_t*>operator_data             # <<<<<<<<<<<<<<
+ * 
+ *     memcpy(elem, (<char*>info[0].buf)+((info[0].i)*(info[0].elsize)),
+ */
+  __pyx_v_info = ((__pyx_t_4h5py_6_proxy_h5py_scatter_t *)__pyx_v_operator_data);
+
+  /* "h5py/_proxy.pyx":250
+ * 
+ *     memcpy(elem, (<char*>info[0].buf)+((info[0].i)*(info[0].elsize)),
+ *            info[0].elsize)             # <<<<<<<<<<<<<<
+ * 
+ *     info[0].i += 1
+ */
+  memcpy(__pyx_v_elem, (((char *)(__pyx_v_info[0]).buf) + ((__pyx_v_info[0]).i * (__pyx_v_info[0]).elsize)), (__pyx_v_info[0]).elsize);
+
+  /* "h5py/_proxy.pyx":252
+ *            info[0].elsize)
+ * 
+ *     info[0].i += 1             # <<<<<<<<<<<<<<
+ * 
+ *     return 0
+ */
+  __pyx_t_1 = 0;
+  (__pyx_v_info[__pyx_t_1]).i = ((__pyx_v_info[__pyx_t_1]).i + 1);
+
+  /* "h5py/_proxy.pyx":254
+ *     info[0].i += 1
+ * 
+ *     return 0             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t h5py_gather_cb(void* elem, hid_t type_id, unsigned ndim,
+ */
+  __pyx_r = 0;
+  goto __pyx_L0;
+
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/_proxy.pyx":256
+ *     return 0
+ * 
+ * cdef herr_t h5py_gather_cb(void* elem, hid_t type_id, unsigned ndim,             # <<<<<<<<<<<<<<
+ *                 hsize_t *point, void *operator_data) except -1:
+ * 
+ */
+
+static herr_t __pyx_f_4h5py_6_proxy_h5py_gather_cb(void *__pyx_v_elem, CYTHON_UNUSED hid_t __pyx_v_type_id, CYTHON_UNUSED unsigned int __pyx_v_ndim, CYTHON_UNUSED hsize_t *__pyx_v_point, void *__pyx_v_operator_data) {
+  __pyx_t_4h5py_6_proxy_h5py_scatter_t *__pyx_v_info;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  long __pyx_t_1;
+  __Pyx_RefNannySetupContext("h5py_gather_cb", 0);
+
+  /* "h5py/_proxy.pyx":259
+ *                 hsize_t *point, void *operator_data) except -1:
+ * 
+ *     cdef h5py_scatter_t* info = <h5py_scatter_t*>operator_data             # <<<<<<<<<<<<<<
+ * 
+ *     memcpy((<char*>info[0].buf)+((info[0].i)*(info[0].elsize)), elem,
+ */
+  __pyx_v_info = ((__pyx_t_4h5py_6_proxy_h5py_scatter_t *)__pyx_v_operator_data);
+
+  /* "h5py/_proxy.pyx":262
+ * 
+ *     memcpy((<char*>info[0].buf)+((info[0].i)*(info[0].elsize)), elem,
+ *             info[0].elsize)             # <<<<<<<<<<<<<<
+ * 
+ *     info[0].i += 1
+ */
+  memcpy((((char *)(__pyx_v_info[0]).buf) + ((__pyx_v_info[0]).i * (__pyx_v_info[0]).elsize)), __pyx_v_elem, (__pyx_v_info[0]).elsize);
+
+  /* "h5py/_proxy.pyx":264
+ *             info[0].elsize)
+ * 
+ *     info[0].i += 1             # <<<<<<<<<<<<<<
+ * 
+ *     return 0
+ */
+  __pyx_t_1 = 0;
+  (__pyx_v_info[__pyx_t_1]).i = ((__pyx_v_info[__pyx_t_1]).i + 1);
+
+  /* "h5py/_proxy.pyx":266
+ *     info[0].i += 1
+ * 
+ *     return 0             # <<<<<<<<<<<<<<
+ * 
+ * # Copy between a contiguous and non-contiguous buffer, with the layout
+ */
+  __pyx_r = 0;
+  goto __pyx_L0;
+
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/_proxy.pyx":270
+ * # Copy between a contiguous and non-contiguous buffer, with the layout
+ * # of the latter specified by a dataspace selection.
+ * cdef herr_t h5py_copy(hid_t tid, hid_t space, void* contig, void* noncontig,             # <<<<<<<<<<<<<<
+ *                  copy_dir op) except -1:
+ * 
+ */
+
+static herr_t __pyx_f_4h5py_6_proxy_h5py_copy(hid_t __pyx_v_tid, hid_t __pyx_v_space, void *__pyx_v_contig, void *__pyx_v_noncontig, enum __pyx_t_4h5py_6_proxy_copy_dir __pyx_v_op) {
+  __pyx_t_4h5py_6_proxy_h5py_scatter_t __pyx_v_info;
+  hsize_t __pyx_v_elsize;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  size_t __pyx_t_1;
+  int __pyx_t_2;
+  herr_t __pyx_t_3;
+  PyObject *__pyx_t_4 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("h5py_copy", 0);
+
+  /* "h5py/_proxy.pyx":276
+ *     cdef hsize_t elsize
+ * 
+ *     elsize = H5Tget_size(tid)             # <<<<<<<<<<<<<<
+ * 
+ *     info.i = 0
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Tget_size(__pyx_v_tid); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 276; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v_elsize = __pyx_t_1;
+
+  /* "h5py/_proxy.pyx":278
+ *     elsize = H5Tget_size(tid)
+ * 
+ *     info.i = 0             # <<<<<<<<<<<<<<
+ *     info.elsize = elsize
+ *     info.buf = contig
+ */
+  __pyx_v_info.i = 0;
+
+  /* "h5py/_proxy.pyx":279
+ * 
+ *     info.i = 0
+ *     info.elsize = elsize             # <<<<<<<<<<<<<<
+ *     info.buf = contig
+ * 
+ */
+  __pyx_v_info.elsize = __pyx_v_elsize;
+
+  /* "h5py/_proxy.pyx":280
+ *     info.i = 0
+ *     info.elsize = elsize
+ *     info.buf = contig             # <<<<<<<<<<<<<<
+ * 
+ *     if op == H5PY_SCATTER:
+ */
+  __pyx_v_info.buf = __pyx_v_contig;
+
+  /* "h5py/_proxy.pyx":282
+ *     info.buf = contig
+ * 
+ *     if op == H5PY_SCATTER:             # <<<<<<<<<<<<<<
+ *         H5Diterate(noncontig, tid, space, h5py_scatter_cb, &info)
+ *     elif op == H5PY_GATHER:
+ */
+  __pyx_t_2 = (__pyx_v_op == __pyx_e_4h5py_6_proxy_H5PY_SCATTER);
+  if (__pyx_t_2) {
+
+    /* "h5py/_proxy.pyx":283
+ * 
+ *     if op == H5PY_SCATTER:
+ *         H5Diterate(noncontig, tid, space, h5py_scatter_cb, &info)             # <<<<<<<<<<<<<<
+ *     elif op == H5PY_GATHER:
+ *         H5Diterate(noncontig, tid, space, h5py_gather_cb, &info)
+ */
+    __pyx_t_3 = __pyx_f_4h5py_4defs_H5Diterate(__pyx_v_noncontig, __pyx_v_tid, __pyx_v_space, __pyx_f_4h5py_6_proxy_h5py_scatter_cb, (&__pyx_v_info)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 283; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    goto __pyx_L3;
+  }
+
+  /* "h5py/_proxy.pyx":284
+ *     if op == H5PY_SCATTER:
+ *         H5Diterate(noncontig, tid, space, h5py_scatter_cb, &info)
+ *     elif op == H5PY_GATHER:             # <<<<<<<<<<<<<<
+ *         H5Diterate(noncontig, tid, space, h5py_gather_cb, &info)
+ *     else:
+ */
+  __pyx_t_2 = (__pyx_v_op == __pyx_e_4h5py_6_proxy_H5PY_GATHER);
+  if (__pyx_t_2) {
+
+    /* "h5py/_proxy.pyx":285
+ *         H5Diterate(noncontig, tid, space, h5py_scatter_cb, &info)
+ *     elif op == H5PY_GATHER:
+ *         H5Diterate(noncontig, tid, space, h5py_gather_cb, &info)             # <<<<<<<<<<<<<<
+ *     else:
+ *         raise RuntimeError("Illegal direction")
+ */
+    __pyx_t_3 = __pyx_f_4h5py_4defs_H5Diterate(__pyx_v_noncontig, __pyx_v_tid, __pyx_v_space, __pyx_f_4h5py_6_proxy_h5py_gather_cb, (&__pyx_v_info)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 285; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    goto __pyx_L3;
+  }
+  /*else*/ {
+
+    /* "h5py/_proxy.pyx":287
+ *         H5Diterate(noncontig, tid, space, h5py_gather_cb, &info)
+ *     else:
+ *         raise RuntimeError("Illegal direction")             # <<<<<<<<<<<<<<
+ * 
+ *     return 0
+ */
+    __pyx_t_4 = PyObject_Call(__pyx_builtin_RuntimeError, ((PyObject *)__pyx_k_tuple_4), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 287; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 287; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  }
+  __pyx_L3:;
+
+  /* "h5py/_proxy.pyx":289
+ *         raise RuntimeError("Illegal direction")
+ * 
+ *     return 0             # <<<<<<<<<<<<<<
+ * 
+ * # =============================================================================
+ */
+  __pyx_r = 0;
+  goto __pyx_L0;
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("h5py._proxy.h5py_copy", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/_proxy.pyx":294
+ * # VLEN support routines
+ * 
+ * cdef htri_t needs_bkg_buffer(hid_t src, hid_t dst) except -1:             # <<<<<<<<<<<<<<
+ * 
+ *     cdef H5T_cdata_t *info = NULL
+ */
+
+static htri_t __pyx_f_4h5py_6_proxy_needs_bkg_buffer(hid_t __pyx_v_src, hid_t __pyx_v_dst) {
+  H5T_cdata_t *__pyx_v_info;
+  htri_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  htri_t __pyx_t_1;
+  htri_t __pyx_t_2;
+  int __pyx_t_3;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  H5T_conv_t __pyx_t_7;
+  PyObject *__pyx_t_8 = NULL;
+  PyObject *__pyx_t_9 = NULL;
+  PyObject *__pyx_t_10 = NULL;
+  size_t __pyx_t_11;
+  PyObject *__pyx_t_12 = NULL;
+  char *__pyx_t_13;
+  PyObject *__pyx_t_14 = NULL;
+  PyObject *__pyx_t_15 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("needs_bkg_buffer", 0);
+
+  /* "h5py/_proxy.pyx":296
+ * cdef htri_t needs_bkg_buffer(hid_t src, hid_t dst) except -1:
+ * 
+ *     cdef H5T_cdata_t *info = NULL             # <<<<<<<<<<<<<<
+ * 
+ *     if H5Tdetect_class(src, H5T_COMPOUND) or H5Tdetect_class(dst, H5T_COMPOUND):
+ */
+  __pyx_v_info = NULL;
+
+  /* "h5py/_proxy.pyx":298
+ *     cdef H5T_cdata_t *info = NULL
+ * 
+ *     if H5Tdetect_class(src, H5T_COMPOUND) or H5Tdetect_class(dst, H5T_COMPOUND):             # <<<<<<<<<<<<<<
+ *         return 1
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Tdetect_class(__pyx_v_src, H5T_COMPOUND); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 298; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (!__pyx_t_1) {
+    __pyx_t_2 = __pyx_f_4h5py_4defs_H5Tdetect_class(__pyx_v_dst, H5T_COMPOUND); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 298; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __pyx_t_2;
+  } else {
+    __pyx_t_3 = __pyx_t_1;
+  }
+  if (__pyx_t_3) {
+
+    /* "h5py/_proxy.pyx":299
+ * 
+ *     if H5Tdetect_class(src, H5T_COMPOUND) or H5Tdetect_class(dst, H5T_COMPOUND):
+ *         return 1             # <<<<<<<<<<<<<<
+ * 
+ *     try:
+ */
+    __pyx_r = 1;
+    goto __pyx_L0;
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  /* "h5py/_proxy.pyx":301
+ *         return 1
+ * 
+ *     try:             # <<<<<<<<<<<<<<
+ *         H5Tfind(src, dst, &info)
+ *     except:
+ */
+  {
+    __Pyx_ExceptionSave(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6);
+    __Pyx_XGOTREF(__pyx_t_4);
+    __Pyx_XGOTREF(__pyx_t_5);
+    __Pyx_XGOTREF(__pyx_t_6);
+    /*try:*/ {
+
+      /* "h5py/_proxy.pyx":302
+ * 
+ *     try:
+ *         H5Tfind(src, dst, &info)             # <<<<<<<<<<<<<<
+ *     except:
+ *         print "Failed to find converter for %s -> %s" % (H5Tget_size(src), H5Tget_tag(dst))
+ */
+      __pyx_t_7 = __pyx_f_4h5py_4defs_H5Tfind(__pyx_v_src, __pyx_v_dst, (&__pyx_v_info)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 302; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    }
+    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+    goto __pyx_L11_try_end;
+    __pyx_L4_error:;
+
+    /* "h5py/_proxy.pyx":303
+ *     try:
+ *         H5Tfind(src, dst, &info)
+ *     except:             # <<<<<<<<<<<<<<
+ *         print "Failed to find converter for %s -> %s" % (H5Tget_size(src), H5Tget_tag(dst))
+ *         raise
+ */
+    /*except:*/ {
+      __Pyx_AddTraceback("h5py._proxy.needs_bkg_buffer", __pyx_clineno, __pyx_lineno, __pyx_filename);
+      if (__Pyx_GetException(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 303; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
+      __Pyx_GOTREF(__pyx_t_8);
+      __Pyx_GOTREF(__pyx_t_9);
+      __Pyx_GOTREF(__pyx_t_10);
+
+      /* "h5py/_proxy.pyx":304
+ *         H5Tfind(src, dst, &info)
+ *     except:
+ *         print "Failed to find converter for %s -> %s" % (H5Tget_size(src), H5Tget_tag(dst))             # <<<<<<<<<<<<<<
+ *         raise
+ * 
+ */
+      __pyx_t_11 = __pyx_f_4h5py_4defs_H5Tget_size(__pyx_v_src); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 304; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
+      __pyx_t_12 = __Pyx_PyInt_FromSize_t(__pyx_t_11); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 304; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
+      __Pyx_GOTREF(__pyx_t_12);
+      __pyx_t_13 = __pyx_f_4h5py_4defs_H5Tget_tag(__pyx_v_dst); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 304; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
+      __pyx_t_14 = PyBytes_FromString(__pyx_t_13); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 304; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
+      __Pyx_GOTREF(((PyObject *)__pyx_t_14));
+      __pyx_t_15 = PyTuple_New(2); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 304; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
+      __Pyx_GOTREF(__pyx_t_15);
+      PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_12);
+      __Pyx_GIVEREF(__pyx_t_12);
+      PyTuple_SET_ITEM(__pyx_t_15, 1, ((PyObject *)__pyx_t_14));
+      __Pyx_GIVEREF(((PyObject *)__pyx_t_14));
+      __pyx_t_12 = 0;
+      __pyx_t_14 = 0;
+      __pyx_t_14 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_5), ((PyObject *)__pyx_t_15)); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 304; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
+      __Pyx_GOTREF(((PyObject *)__pyx_t_14));
+      __Pyx_DECREF(((PyObject *)__pyx_t_15)); __pyx_t_15 = 0;
+      if (__Pyx_PrintOne(0, ((PyObject *)__pyx_t_14)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 304; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
+      __Pyx_DECREF(((PyObject *)__pyx_t_14)); __pyx_t_14 = 0;
+
+      /* "h5py/_proxy.pyx":305
+ *     except:
+ *         print "Failed to find converter for %s -> %s" % (H5Tget_size(src), H5Tget_tag(dst))
+ *         raise             # <<<<<<<<<<<<<<
+ * 
+ *     if info[0].need_bkg == H5T_BKG_YES:
+ */
+      __Pyx_GIVEREF(__pyx_t_8);
+      __Pyx_GIVEREF(__pyx_t_9);
+      __Pyx_GIVEREF(__pyx_t_10);
+      __Pyx_ErrRestore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+      __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; 
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
+      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+      goto __pyx_L5_exception_handled;
+    }
+    __pyx_L6_except_error:;
+    __Pyx_XGIVEREF(__pyx_t_4);
+    __Pyx_XGIVEREF(__pyx_t_5);
+    __Pyx_XGIVEREF(__pyx_t_6);
+    __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6);
+    goto __pyx_L1_error;
+    __pyx_L5_exception_handled:;
+    __Pyx_XGIVEREF(__pyx_t_4);
+    __Pyx_XGIVEREF(__pyx_t_5);
+    __Pyx_XGIVEREF(__pyx_t_6);
+    __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6);
+    __pyx_L11_try_end:;
+  }
+
+  /* "h5py/_proxy.pyx":307
+ *         raise
+ * 
+ *     if info[0].need_bkg == H5T_BKG_YES:             # <<<<<<<<<<<<<<
+ *         return 1
+ * 
+ */
+  __pyx_t_3 = ((__pyx_v_info[0]).need_bkg == H5T_BKG_YES);
+  if (__pyx_t_3) {
+
+    /* "h5py/_proxy.pyx":308
+ * 
+ *     if info[0].need_bkg == H5T_BKG_YES:
+ *         return 1             # <<<<<<<<<<<<<<
+ * 
+ *     return 0
+ */
+    __pyx_r = 1;
+    goto __pyx_L0;
+    goto __pyx_L14;
+  }
+  __pyx_L14:;
+
+  /* "h5py/_proxy.pyx":310
+ *         return 1
+ * 
+ *     return 0             # <<<<<<<<<<<<<<
+ * 
+ * # Determine if the given type requires proxy buffering
+ */
+  __pyx_r = 0;
+  goto __pyx_L0;
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_8);
+  __Pyx_XDECREF(__pyx_t_9);
+  __Pyx_XDECREF(__pyx_t_10);
+  __Pyx_XDECREF(__pyx_t_12);
+  __Pyx_XDECREF(__pyx_t_14);
+  __Pyx_XDECREF(__pyx_t_15);
+  __Pyx_AddTraceback("h5py._proxy.needs_bkg_buffer", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/_proxy.pyx":313
+ * 
+ * # Determine if the given type requires proxy buffering
+ * cdef htri_t needs_proxy(hid_t tid) except -1:             # <<<<<<<<<<<<<<
+ * 
+ *     cdef H5T_class_t cls
+ */
+
+static htri_t __pyx_f_4h5py_6_proxy_needs_proxy(hid_t __pyx_v_tid) {
+  enum H5T_class_t __pyx_v_cls;
+  hid_t __pyx_v_supertype;
+  int __pyx_v_i;
+  int __pyx_v_n;
+  htri_t __pyx_v_result;
+  htri_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  enum H5T_class_t __pyx_t_1;
+  int __pyx_t_2;
+  int __pyx_t_3;
+  int __pyx_t_4;
+  htri_t __pyx_t_5;
+  hid_t __pyx_t_6;
+  herr_t __pyx_t_7;
+  int __pyx_t_8;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("needs_proxy", 0);
+
+  /* "h5py/_proxy.pyx":320
+ *     cdef htri_t result
+ * 
+ *     cls = H5Tget_class(tid)             # <<<<<<<<<<<<<<
+ * 
+ *     if cls == H5T_VLEN or cls == H5T_REFERENCE:
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Tget_class(__pyx_v_tid); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 320; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v_cls = __pyx_t_1;
+
+  /* "h5py/_proxy.pyx":322
+ *     cls = H5Tget_class(tid)
+ * 
+ *     if cls == H5T_VLEN or cls == H5T_REFERENCE:             # <<<<<<<<<<<<<<
+ *         return 1
+ * 
+ */
+  __pyx_t_2 = (__pyx_v_cls == H5T_VLEN);
+  if (!__pyx_t_2) {
+    __pyx_t_3 = (__pyx_v_cls == H5T_REFERENCE);
+    __pyx_t_4 = __pyx_t_3;
+  } else {
+    __pyx_t_4 = __pyx_t_2;
+  }
+  if (__pyx_t_4) {
+
+    /* "h5py/_proxy.pyx":323
+ * 
+ *     if cls == H5T_VLEN or cls == H5T_REFERENCE:
+ *         return 1             # <<<<<<<<<<<<<<
+ * 
+ *     elif cls == H5T_STRING:
+ */
+    __pyx_r = 1;
+    goto __pyx_L0;
+    goto __pyx_L3;
+  }
+
+  /* "h5py/_proxy.pyx":325
+ *         return 1
+ * 
+ *     elif cls == H5T_STRING:             # <<<<<<<<<<<<<<
+ *         return H5Tis_variable_str(tid)
+ * 
+ */
+  __pyx_t_4 = (__pyx_v_cls == H5T_STRING);
+  if (__pyx_t_4) {
+
+    /* "h5py/_proxy.pyx":326
+ * 
+ *     elif cls == H5T_STRING:
+ *         return H5Tis_variable_str(tid)             # <<<<<<<<<<<<<<
+ * 
+ *     elif cls == H5T_ARRAY:
+ */
+    __pyx_t_5 = __pyx_f_4h5py_4defs_H5Tis_variable_str(__pyx_v_tid); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 326; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_r = __pyx_t_5;
+    goto __pyx_L0;
+    goto __pyx_L3;
+  }
+
+  /* "h5py/_proxy.pyx":328
+ *         return H5Tis_variable_str(tid)
+ * 
+ *     elif cls == H5T_ARRAY:             # <<<<<<<<<<<<<<
+ * 
+ *         supertype = H5Tget_super(tid)
+ */
+  __pyx_t_4 = (__pyx_v_cls == H5T_ARRAY);
+  if (__pyx_t_4) {
+
+    /* "h5py/_proxy.pyx":330
+ *     elif cls == H5T_ARRAY:
+ * 
+ *         supertype = H5Tget_super(tid)             # <<<<<<<<<<<<<<
+ *         try:
+ *             return needs_proxy(supertype)
+ */
+    __pyx_t_6 = __pyx_f_4h5py_4defs_H5Tget_super(__pyx_v_tid); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 330; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_v_supertype = __pyx_t_6;
+
+    /* "h5py/_proxy.pyx":331
+ * 
+ *         supertype = H5Tget_super(tid)
+ *         try:             # <<<<<<<<<<<<<<
+ *             return needs_proxy(supertype)
+ *         finally:
+ */
+    /*try:*/ {
+
+      /* "h5py/_proxy.pyx":332
+ *         supertype = H5Tget_super(tid)
+ *         try:
+ *             return needs_proxy(supertype)             # <<<<<<<<<<<<<<
+ *         finally:
+ *             H5Tclose(supertype)
+ */
+      __pyx_t_5 = __pyx_f_4h5py_6_proxy_needs_proxy(__pyx_v_supertype); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 332; __pyx_clineno = __LINE__; goto __pyx_L5;}
+      __pyx_r = __pyx_t_5;
+      goto __pyx_L4;
+    }
+
+    /* "h5py/_proxy.pyx":334
+ *             return needs_proxy(supertype)
+ *         finally:
+ *             H5Tclose(supertype)             # <<<<<<<<<<<<<<
+ * 
+ *     elif cls == H5T_COMPOUND:
+ */
+    /*finally:*/ {
+      int __pyx_why;
+      PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb;
+      int __pyx_exc_lineno;
+      __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
+      __pyx_why = 3; goto __pyx_L6;
+      __pyx_L5: {
+        __pyx_why = 4;
+        __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb);
+        __pyx_exc_lineno = __pyx_lineno;
+        goto __pyx_L6;
+      }
+      __pyx_L6:;
+      __pyx_t_7 = __pyx_f_4h5py_4defs_H5Tclose(__pyx_v_supertype); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 334; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+      goto __pyx_L8;
+      __pyx_L7_error:;
+      if (__pyx_why == 4) {
+        Py_XDECREF(__pyx_exc_type);
+        Py_XDECREF(__pyx_exc_value);
+        Py_XDECREF(__pyx_exc_tb);
+      }
+      goto __pyx_L1_error;
+      __pyx_L8:;
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+        case 4: {
+          __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb);
+          __pyx_lineno = __pyx_exc_lineno;
+          __pyx_exc_type = 0;
+          __pyx_exc_value = 0;
+          __pyx_exc_tb = 0;
+          goto __pyx_L1_error;
+        }
+      }
+    }
+    goto __pyx_L3;
+  }
+
+  /* "h5py/_proxy.pyx":336
+ *             H5Tclose(supertype)
+ * 
+ *     elif cls == H5T_COMPOUND:             # <<<<<<<<<<<<<<
+ * 
+ *         n = H5Tget_nmembers(tid)
+ */
+  __pyx_t_4 = (__pyx_v_cls == H5T_COMPOUND);
+  if (__pyx_t_4) {
+
+    /* "h5py/_proxy.pyx":338
+ *     elif cls == H5T_COMPOUND:
+ * 
+ *         n = H5Tget_nmembers(tid)             # <<<<<<<<<<<<<<
+ *         for i from 0<=i<n:
+ *             supertype = H5Tget_member_type(tid, i)
+ */
+    __pyx_t_8 = __pyx_f_4h5py_4defs_H5Tget_nmembers(__pyx_v_tid); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 338; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_v_n = __pyx_t_8;
+
+    /* "h5py/_proxy.pyx":339
+ * 
+ *         n = H5Tget_nmembers(tid)
+ *         for i from 0<=i<n:             # <<<<<<<<<<<<<<
+ *             supertype = H5Tget_member_type(tid, i)
+ *             try:
+ */
+    __pyx_t_8 = __pyx_v_n;
+    for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_8; __pyx_v_i++) {
+
+      /* "h5py/_proxy.pyx":340
+ *         n = H5Tget_nmembers(tid)
+ *         for i from 0<=i<n:
+ *             supertype = H5Tget_member_type(tid, i)             # <<<<<<<<<<<<<<
+ *             try:
+ *                 result = needs_proxy(supertype)
+ */
+      __pyx_t_6 = __pyx_f_4h5py_4defs_H5Tget_member_type(__pyx_v_tid, __pyx_v_i); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 340; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_v_supertype = __pyx_t_6;
+
+      /* "h5py/_proxy.pyx":341
+ *         for i from 0<=i<n:
+ *             supertype = H5Tget_member_type(tid, i)
+ *             try:             # <<<<<<<<<<<<<<
+ *                 result = needs_proxy(supertype)
+ *                 if result > 0:
+ */
+      /*try:*/ {
+
+        /* "h5py/_proxy.pyx":342
+ *             supertype = H5Tget_member_type(tid, i)
+ *             try:
+ *                 result = needs_proxy(supertype)             # <<<<<<<<<<<<<<
+ *                 if result > 0:
+ *                     return 1
+ */
+        __pyx_t_5 = __pyx_f_4h5py_6_proxy_needs_proxy(__pyx_v_supertype); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 342; __pyx_clineno = __LINE__; goto __pyx_L14;}
+        __pyx_v_result = __pyx_t_5;
+
+        /* "h5py/_proxy.pyx":343
+ *             try:
+ *                 result = needs_proxy(supertype)
+ *                 if result > 0:             # <<<<<<<<<<<<<<
+ *                     return 1
+ *             finally:
+ */
+        __pyx_t_4 = (__pyx_v_result > 0);
+        if (__pyx_t_4) {
+
+          /* "h5py/_proxy.pyx":344
+ *                 result = needs_proxy(supertype)
+ *                 if result > 0:
+ *                     return 1             # <<<<<<<<<<<<<<
+ *             finally:
+ *                 H5Tclose(supertype)
+ */
+          __pyx_r = 1;
+          goto __pyx_L13;
+          goto __pyx_L16;
+        }
+        __pyx_L16:;
+      }
+
+      /* "h5py/_proxy.pyx":346
+ *                     return 1
+ *             finally:
+ *                 H5Tclose(supertype)             # <<<<<<<<<<<<<<
+ *         return 0
+ * 
+ */
+      /*finally:*/ {
+        int __pyx_why;
+        PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb;
+        int __pyx_exc_lineno;
+        __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
+        __pyx_why = 0; goto __pyx_L15;
+        __pyx_L13: __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
+        __pyx_why = 3; goto __pyx_L15;
+        __pyx_L14: {
+          __pyx_why = 4;
+          __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb);
+          __pyx_exc_lineno = __pyx_lineno;
+          goto __pyx_L15;
+        }
+        __pyx_L15:;
+        __pyx_t_7 = __pyx_f_4h5py_4defs_H5Tclose(__pyx_v_supertype); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 346; __pyx_clineno = __LINE__; goto __pyx_L17_error;}
+        goto __pyx_L18;
+        __pyx_L17_error:;
+        if (__pyx_why == 4) {
+          Py_XDECREF(__pyx_exc_type);
+          Py_XDECREF(__pyx_exc_value);
+          Py_XDECREF(__pyx_exc_tb);
+        }
+        goto __pyx_L1_error;
+        __pyx_L18:;
+        switch (__pyx_why) {
+          case 3: goto __pyx_L0;
+          case 4: {
+            __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb);
+            __pyx_lineno = __pyx_exc_lineno;
+            __pyx_exc_type = 0;
+            __pyx_exc_value = 0;
+            __pyx_exc_tb = 0;
+            goto __pyx_L1_error;
+          }
+        }
+      }
+    }
+
+    /* "h5py/_proxy.pyx":347
+ *             finally:
+ *                 H5Tclose(supertype)
+ *         return 0             # <<<<<<<<<<<<<<
+ * 
+ *     return 0
+ */
+    __pyx_r = 0;
+    goto __pyx_L0;
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  /* "h5py/_proxy.pyx":349
+ *         return 0
+ * 
+ *     return 0             # <<<<<<<<<<<<<<
+ */
+  __pyx_r = 0;
+  goto __pyx_L0;
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py._proxy.needs_proxy", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyMethodDef __pyx_methods[] = {
+  {0, 0, 0, 0}
+};
+
+#if PY_MAJOR_VERSION >= 3
+static struct PyModuleDef __pyx_moduledef = {
+  #if PY_VERSION_HEX < 0x03020000
+    { PyObject_HEAD_INIT(NULL) NULL, 0, NULL },
+  #else
+    PyModuleDef_HEAD_INIT,
+  #endif
+    __Pyx_NAMESTR("_proxy"),
+    __Pyx_DOCSTR(__pyx_k_6), /* m_doc */
+    -1, /* m_size */
+    __pyx_methods /* m_methods */,
+    NULL, /* m_reload */
+    NULL, /* m_traverse */
+    NULL, /* m_clear */
+    NULL /* m_free */
+};
+#endif
+
+static __Pyx_StringTabEntry __pyx_string_tab[] = {
+  {&__pyx_kp_s_1, __pyx_k_1, sizeof(__pyx_k_1), 0, 0, 1, 0},
+  {&__pyx_kp_s_3, __pyx_k_3, sizeof(__pyx_k_3), 0, 0, 1, 0},
+  {&__pyx_kp_s_5, __pyx_k_5, sizeof(__pyx_k_5), 0, 0, 1, 0},
+  {&__pyx_n_s__MemoryError, __pyx_k__MemoryError, sizeof(__pyx_k__MemoryError), 0, 0, 1, 1},
+  {&__pyx_n_s__RuntimeError, __pyx_k__RuntimeError, sizeof(__pyx_k__RuntimeError), 0, 0, 1, 1},
+  {&__pyx_n_s____main__, __pyx_k____main__, sizeof(__pyx_k____main__), 0, 0, 1, 1},
+  {&__pyx_n_s____test__, __pyx_k____test__, sizeof(__pyx_k____test__), 0, 0, 1, 1},
+  {&__pyx_n_s__range, __pyx_k__range, sizeof(__pyx_k__range), 0, 0, 1, 1},
+  {&__pyx_n_s__xrange, __pyx_k__xrange, sizeof(__pyx_k__xrange), 0, 0, 1, 1},
+  {0, 0, 0, 0, 0, 0, 0}
+};
+static int __Pyx_InitCachedBuiltins(void) {
+  #if PY_MAJOR_VERSION >= 3
+  __pyx_builtin_xrange = __Pyx_GetName(__pyx_b, __pyx_n_s__range); if (!__pyx_builtin_xrange) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #else
+  __pyx_builtin_xrange = __Pyx_GetName(__pyx_b, __pyx_n_s__xrange); if (!__pyx_builtin_xrange) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #endif
+  __pyx_builtin_MemoryError = __Pyx_GetName(__pyx_b, __pyx_n_s__MemoryError); if (!__pyx_builtin_MemoryError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 232; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_builtin_RuntimeError = __Pyx_GetName(__pyx_b, __pyx_n_s__RuntimeError); if (!__pyx_builtin_RuntimeError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 287; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  return 0;
+  __pyx_L1_error:;
+  return -1;
+}
+
+static int __Pyx_InitCachedConstants(void) {
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0);
+
+  /* "h5py/_proxy.pyx":232
+ *     buf = malloc(final_size)
+ *     if buf == NULL:
+ *         raise MemoryError("Failed to allocate conversion buffer")             # <<<<<<<<<<<<<<
+ * 
+ *     return buf
+ */
+  __pyx_k_tuple_2 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_1)); if (unlikely(!__pyx_k_tuple_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 232; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_2);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_2));
+
+  /* "h5py/_proxy.pyx":287
+ *         H5Diterate(noncontig, tid, space, h5py_gather_cb, &info)
+ *     else:
+ *         raise RuntimeError("Illegal direction")             # <<<<<<<<<<<<<<
+ * 
+ *     return 0
+ */
+  __pyx_k_tuple_4 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_3)); if (unlikely(!__pyx_k_tuple_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 287; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_4);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_4));
+  __Pyx_RefNannyFinishContext();
+  return 0;
+  __pyx_L1_error:;
+  __Pyx_RefNannyFinishContext();
+  return -1;
+}
+
+static int __Pyx_InitGlobals(void) {
+  if (__Pyx_InitStrings(__pyx_string_tab) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  return 0;
+  __pyx_L1_error:;
+  return -1;
+}
+
+#if PY_MAJOR_VERSION < 3
+PyMODINIT_FUNC init_proxy(void); /*proto*/
+PyMODINIT_FUNC init_proxy(void)
+#else
+PyMODINIT_FUNC PyInit__proxy(void); /*proto*/
+PyMODINIT_FUNC PyInit__proxy(void)
+#endif
+{
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  __Pyx_RefNannyDeclarations
+  #if CYTHON_REFNANNY
+  __Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny");
+  if (!__Pyx_RefNanny) {
+      PyErr_Clear();
+      __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny");
+      if (!__Pyx_RefNanny)
+          Py_FatalError("failed to import 'refnanny' module");
+  }
+  #endif
+  __Pyx_RefNannySetupContext("PyMODINIT_FUNC PyInit__proxy(void)", 0);
+  if ( __Pyx_check_binary_version() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #ifdef __Pyx_CyFunction_USED
+  if (__Pyx_CyFunction_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #endif
+  #ifdef __Pyx_FusedFunction_USED
+  if (__pyx_FusedFunction_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #endif
+  #ifdef __Pyx_Generator_USED
+  if (__pyx_Generator_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #endif
+  /*--- Library function declarations ---*/
+  /*--- Threads initialization code ---*/
+  #if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS
+  #ifdef WITH_THREAD /* Python build with threading support? */
+  PyEval_InitThreads();
+  #endif
+  #endif
+  /*--- Module creation code ---*/
+  #if PY_MAJOR_VERSION < 3
+  __pyx_m = Py_InitModule4(__Pyx_NAMESTR("_proxy"), __pyx_methods, __Pyx_DOCSTR(__pyx_k_6), 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m);
+  #else
+  __pyx_m = PyModule_Create(&__pyx_moduledef);
+  #endif
+  if (unlikely(!__pyx_m)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #if PY_MAJOR_VERSION >= 3
+  {
+    PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (!PyDict_GetItemString(modules, "h5py._proxy")) {
+      if (unlikely(PyDict_SetItemString(modules, "h5py._proxy", __pyx_m) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    }
+  }
+  #endif
+  __pyx_b = PyImport_AddModule(__Pyx_NAMESTR(__Pyx_BUILTIN_MODULE_NAME)); if (unlikely(!__pyx_b)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #if CYTHON_COMPILING_IN_PYPY
+  Py_INCREF(__pyx_b);
+  #endif
+  if (__Pyx_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  /*--- Initialize various global constants etc. ---*/
+  if (unlikely(__Pyx_InitGlobals() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__pyx_module_is_main_h5py___proxy) {
+    if (__Pyx_SetAttrString(__pyx_m, "__name__", __pyx_n_s____main__) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  }
+  /*--- Builtin init code ---*/
+  if (unlikely(__Pyx_InitCachedBuiltins() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  /*--- Constants init code ---*/
+  if (unlikely(__Pyx_InitCachedConstants() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  /*--- Global init code ---*/
+  /*--- Variable export code ---*/
+  /*--- Function export code ---*/
+  if (__Pyx_ExportFunction("attr_rw", (void (*)(void))__pyx_f_4h5py_6_proxy_attr_rw, "herr_t (hid_t, hid_t, void *, int)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("dset_rw", (void (*)(void))__pyx_f_4h5py_6_proxy_dset_rw, "herr_t (hid_t, hid_t, hid_t, hid_t, hid_t, void *, int)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  /*--- Type init code ---*/
+  /*--- Type import code ---*/
+  /*--- Variable import code ---*/
+  /*--- Function import code ---*/
+  __pyx_t_1 = __Pyx_ImportModule("h5py.defs"); if (!__pyx_t_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Dget_space", (void (**)(void))&__pyx_f_4h5py_4defs_H5Dget_space, "hid_t (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Dget_type", (void (**)(void))&__pyx_f_4h5py_4defs_H5Dget_type, "hid_t (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Dread", (void (**)(void))&__pyx_f_4h5py_4defs_H5Dread, "herr_t (hid_t, hid_t, hid_t, hid_t, hid_t, void *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Dwrite", (void (**)(void))&__pyx_f_4h5py_4defs_H5Dwrite, "herr_t (hid_t, hid_t, hid_t, hid_t, hid_t, void *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Dvlen_reclaim", (void (**)(void))&__pyx_f_4h5py_4defs_H5Dvlen_reclaim, "herr_t (hid_t, hid_t, hid_t, void *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Diterate", (void (**)(void))&__pyx_f_4h5py_4defs_H5Diterate, "herr_t (void *, hid_t, hid_t, H5D_operator_t, void *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Sclose", (void (**)(void))&__pyx_f_4h5py_4defs_H5Sclose, "herr_t (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Screate_simple", (void (**)(void))&__pyx_f_4h5py_4defs_H5Screate_simple, "hid_t (int, hsize_t *, hsize_t *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Sget_select_npoints", (void (**)(void))&__pyx_f_4h5py_4defs_H5Sget_select_npoints, "hssize_t (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Tcreate", (void (**)(void))&__pyx_f_4h5py_4defs_H5Tcreate, "hid_t (enum H5T_class_t, size_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Tget_class", (void (**)(void))&__pyx_f_4h5py_4defs_H5Tget_class, "enum H5T_class_t (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Tget_size", (void (**)(void))&__pyx_f_4h5py_4defs_H5Tget_size, "size_t (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Tget_super", (void (**)(void))&__pyx_f_4h5py_4defs_H5Tget_super, "hid_t (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Tdetect_class", (void (**)(void))&__pyx_f_4h5py_4defs_H5Tdetect_class, "htri_t (hid_t, enum H5T_class_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Tclose", (void (**)(void))&__pyx_f_4h5py_4defs_H5Tclose, "herr_t (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Tconvert", (void (**)(void))&__pyx_f_4h5py_4defs_H5Tconvert, "herr_t (hid_t, hid_t, size_t, void *, void *, hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Tis_variable_str", (void (**)(void))&__pyx_f_4h5py_4defs_H5Tis_variable_str, "htri_t (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Tget_nmembers", (void (**)(void))&__pyx_f_4h5py_4defs_H5Tget_nmembers, "int (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Tget_member_name", (void (**)(void))&__pyx_f_4h5py_4defs_H5Tget_member_name, "char *(hid_t, unsigned int)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Tget_member_type", (void (**)(void))&__pyx_f_4h5py_4defs_H5Tget_member_type, "hid_t (hid_t, unsigned int)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Tinsert", (void (**)(void))&__pyx_f_4h5py_4defs_H5Tinsert, "herr_t (hid_t, char *, size_t, hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Tget_tag", (void (**)(void))&__pyx_f_4h5py_4defs_H5Tget_tag, "char *(hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Tfind", (void (**)(void))&__pyx_f_4h5py_4defs_H5Tfind, "H5T_conv_t (hid_t, hid_t, H5T_cdata_t **)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Aread", (void (**)(void))&__pyx_f_4h5py_4defs_H5Aread, "herr_t (hid_t, hid_t, void *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Awrite", (void (**)(void))&__pyx_f_4h5py_4defs_H5Awrite, "herr_t (hid_t, hid_t, void *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Aget_space", (void (**)(void))&__pyx_f_4h5py_4defs_H5Aget_space, "hid_t (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Aget_type", (void (**)(void))&__pyx_f_4h5py_4defs_H5Aget_type, "hid_t (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  Py_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  /*--- Execution code ---*/
+
+  /* "h5py/_proxy.pyx":1
+ * # cython: profile=False             # <<<<<<<<<<<<<<
+ * 
+ * # This file is part of h5py, a Python interface to the HDF5 library.
+ */
+  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s____test__, ((PyObject *)__pyx_t_2)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  if (__pyx_m) {
+    __Pyx_AddTraceback("init h5py._proxy", __pyx_clineno, __pyx_lineno, __pyx_filename);
+    Py_DECREF(__pyx_m); __pyx_m = 0;
+  } else if (!PyErr_Occurred()) {
+    PyErr_SetString(PyExc_ImportError, "init h5py._proxy");
+  }
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  #if PY_MAJOR_VERSION < 3
+  return;
+  #else
+  return __pyx_m;
+  #endif
+}
+
+/* Runtime support code */
+#if CYTHON_REFNANNY
+static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) {
+    PyObject *m = NULL, *p = NULL;
+    void *r = NULL;
+    m = PyImport_ImportModule((char *)modname);
+    if (!m) goto end;
+    p = PyObject_GetAttrString(m, (char *)"RefNannyAPI");
+    if (!p) goto end;
+    r = PyLong_AsVoidPtr(p);
+end:
+    Py_XDECREF(p);
+    Py_XDECREF(m);
+    return (__Pyx_RefNannyAPIStruct *)r;
+}
+#endif /* CYTHON_REFNANNY */
+
+static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name) {
+    PyObject *result;
+    result = PyObject_GetAttr(dict, name);
+    if (!result) {
+        if (dict != __pyx_b) {
+            PyErr_Clear();
+            result = PyObject_GetAttr(__pyx_b, name);
+        }
+        if (!result) {
+            PyErr_SetObject(PyExc_NameError, name);
+        }
+    }
+    return result;
+}
+
+static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb) {
+#if CYTHON_COMPILING_IN_CPYTHON
+    PyObject *tmp_type, *tmp_value, *tmp_tb;
+    PyThreadState *tstate = PyThreadState_GET();
+    tmp_type = tstate->curexc_type;
+    tmp_value = tstate->curexc_value;
+    tmp_tb = tstate->curexc_traceback;
+    tstate->curexc_type = type;
+    tstate->curexc_value = value;
+    tstate->curexc_traceback = tb;
+    Py_XDECREF(tmp_type);
+    Py_XDECREF(tmp_value);
+    Py_XDECREF(tmp_tb);
+#else
+    PyErr_Restore(type, value, tb);
+#endif
+}
+static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb) {
+#if CYTHON_COMPILING_IN_CPYTHON
+    PyThreadState *tstate = PyThreadState_GET();
+    *type = tstate->curexc_type;
+    *value = tstate->curexc_value;
+    *tb = tstate->curexc_traceback;
+    tstate->curexc_type = 0;
+    tstate->curexc_value = 0;
+    tstate->curexc_traceback = 0;
+#else
+    PyErr_Fetch(type, value, tb);
+#endif
+}
+
+#if PY_MAJOR_VERSION < 3
+static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb,
+                        CYTHON_UNUSED PyObject *cause) {
+    Py_XINCREF(type);
+    if (!value || value == Py_None)
+        value = NULL;
+    else
+        Py_INCREF(value);
+    if (!tb || tb == Py_None)
+        tb = NULL;
+    else {
+        Py_INCREF(tb);
+        if (!PyTraceBack_Check(tb)) {
+            PyErr_SetString(PyExc_TypeError,
+                "raise: arg 3 must be a traceback or None");
+            goto raise_error;
+        }
+    }
+    #if PY_VERSION_HEX < 0x02050000
+    if (PyClass_Check(type)) {
+    #else
+    if (PyType_Check(type)) {
+    #endif
+#if CYTHON_COMPILING_IN_PYPY
+        if (!value) {
+            Py_INCREF(Py_None);
+            value = Py_None;
+        }
+#endif
+        PyErr_NormalizeException(&type, &value, &tb);
+    } else {
+        if (value) {
+            PyErr_SetString(PyExc_TypeError,
+                "instance exception may not have a separate value");
+            goto raise_error;
+        }
+        value = type;
+        #if PY_VERSION_HEX < 0x02050000
+            if (PyInstance_Check(type)) {
+                type = (PyObject*) ((PyInstanceObject*)type)->in_class;
+                Py_INCREF(type);
+            }
+            else {
+                type = 0;
+                PyErr_SetString(PyExc_TypeError,
+                    "raise: exception must be an old-style class or instance");
+                goto raise_error;
+            }
+        #else
+            type = (PyObject*) Py_TYPE(type);
+            Py_INCREF(type);
+            if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) {
+                PyErr_SetString(PyExc_TypeError,
+                    "raise: exception class must be a subclass of BaseException");
+                goto raise_error;
+            }
+        #endif
+    }
+    __Pyx_ErrRestore(type, value, tb);
+    return;
+raise_error:
+    Py_XDECREF(value);
+    Py_XDECREF(type);
+    Py_XDECREF(tb);
+    return;
+}
+#else /* Python 3+ */
+static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) {
+    PyObject* owned_instance = NULL;
+    if (tb == Py_None) {
+        tb = 0;
+    } else if (tb && !PyTraceBack_Check(tb)) {
+        PyErr_SetString(PyExc_TypeError,
+            "raise: arg 3 must be a traceback or None");
+        goto bad;
+    }
+    if (value == Py_None)
+        value = 0;
+    if (PyExceptionInstance_Check(type)) {
+        if (value) {
+            PyErr_SetString(PyExc_TypeError,
+                "instance exception may not have a separate value");
+            goto bad;
+        }
+        value = type;
+        type = (PyObject*) Py_TYPE(value);
+    } else if (PyExceptionClass_Check(type)) {
+        PyObject *args;
+        if (!value)
+            args = PyTuple_New(0);
+        else if (PyTuple_Check(value)) {
+            Py_INCREF(value);
+            args = value;
+        }
+        else
+            args = PyTuple_Pack(1, value);
+        if (!args)
+            goto bad;
+        owned_instance = PyEval_CallObject(type, args);
+        Py_DECREF(args);
+        if (!owned_instance)
+            goto bad;
+        value = owned_instance;
+        if (!PyExceptionInstance_Check(value)) {
+            PyErr_Format(PyExc_TypeError,
+                         "calling %R should have returned an instance of "
+                         "BaseException, not %R",
+                         type, Py_TYPE(value));
+            goto bad;
+        }
+    } else {
+        PyErr_SetString(PyExc_TypeError,
+            "raise: exception class must be a subclass of BaseException");
+        goto bad;
+    }
+    if (cause && cause != Py_None) {
+        PyObject *fixed_cause;
+        if (PyExceptionClass_Check(cause)) {
+            fixed_cause = PyObject_CallObject(cause, NULL);
+            if (fixed_cause == NULL)
+                goto bad;
+        }
+        else if (PyExceptionInstance_Check(cause)) {
+            fixed_cause = cause;
+            Py_INCREF(fixed_cause);
+        }
+        else {
+            PyErr_SetString(PyExc_TypeError,
+                            "exception causes must derive from "
+                            "BaseException");
+            goto bad;
+        }
+        PyException_SetCause(value, fixed_cause);
+    }
+    PyErr_SetObject(type, value);
+    if (tb) {
+        PyThreadState *tstate = PyThreadState_GET();
+        PyObject* tmp_tb = tstate->curexc_traceback;
+        if (tb != tmp_tb) {
+            Py_INCREF(tb);
+            tstate->curexc_traceback = tb;
+            Py_XDECREF(tmp_tb);
+        }
+    }
+bad:
+    Py_XDECREF(owned_instance);
+    return;
+}
+#endif
+
+static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) {
+    PyObject *local_type, *local_value, *local_tb;
+#if CYTHON_COMPILING_IN_CPYTHON
+    PyObject *tmp_type, *tmp_value, *tmp_tb;
+    PyThreadState *tstate = PyThreadState_GET();
+    local_type = tstate->curexc_type;
+    local_value = tstate->curexc_value;
+    local_tb = tstate->curexc_traceback;
+    tstate->curexc_type = 0;
+    tstate->curexc_value = 0;
+    tstate->curexc_traceback = 0;
+#else
+    PyErr_Fetch(&local_type, &local_value, &local_tb);
+#endif
+    PyErr_NormalizeException(&local_type, &local_value, &local_tb);
+#if CYTHON_COMPILING_IN_CPYTHON
+    if (unlikely(tstate->curexc_type))
+#else
+    if (unlikely(PyErr_Occurred()))
+#endif
+        goto bad;
+    #if PY_MAJOR_VERSION >= 3
+    if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0))
+        goto bad;
+    #endif
+    Py_INCREF(local_type);
+    Py_INCREF(local_value);
+    Py_INCREF(local_tb);
+    *type = local_type;
+    *value = local_value;
+    *tb = local_tb;
+#if CYTHON_COMPILING_IN_CPYTHON
+    tmp_type = tstate->exc_type;
+    tmp_value = tstate->exc_value;
+    tmp_tb = tstate->exc_traceback;
+    tstate->exc_type = local_type;
+    tstate->exc_value = local_value;
+    tstate->exc_traceback = local_tb;
+    /* Make sure tstate is in a consistent state when we XDECREF
+       these objects (DECREF may run arbitrary code). */
+    Py_XDECREF(tmp_type);
+    Py_XDECREF(tmp_value);
+    Py_XDECREF(tmp_tb);
+#else
+    PyErr_SetExcInfo(local_type, local_value, local_tb);
+#endif
+    return 0;
+bad:
+    *type = 0;
+    *value = 0;
+    *tb = 0;
+    Py_XDECREF(local_type);
+    Py_XDECREF(local_value);
+    Py_XDECREF(local_tb);
+    return -1;
+}
+
+static CYTHON_INLINE void __Pyx_ExceptionSave(PyObject **type, PyObject **value, PyObject **tb) {
+#if CYTHON_COMPILING_IN_CPYTHON
+    PyThreadState *tstate = PyThreadState_GET();
+    *type = tstate->exc_type;
+    *value = tstate->exc_value;
+    *tb = tstate->exc_traceback;
+    Py_XINCREF(*type);
+    Py_XINCREF(*value);
+    Py_XINCREF(*tb);
+#else
+    PyErr_GetExcInfo(type, value, tb);
+#endif
+}
+static void __Pyx_ExceptionReset(PyObject *type, PyObject *value, PyObject *tb) {
+#if CYTHON_COMPILING_IN_CPYTHON
+    PyObject *tmp_type, *tmp_value, *tmp_tb;
+    PyThreadState *tstate = PyThreadState_GET();
+    tmp_type = tstate->exc_type;
+    tmp_value = tstate->exc_value;
+    tmp_tb = tstate->exc_traceback;
+    tstate->exc_type = type;
+    tstate->exc_value = value;
+    tstate->exc_traceback = tb;
+    Py_XDECREF(tmp_type);
+    Py_XDECREF(tmp_value);
+    Py_XDECREF(tmp_tb);
+#else
+    PyErr_SetExcInfo(type, value, tb);
+#endif
+}
+
+#if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION < 3
+static PyObject *__Pyx_GetStdout(void) {
+    PyObject *f = PySys_GetObject((char *)"stdout");
+    if (!f) {
+        PyErr_SetString(PyExc_RuntimeError, "lost sys.stdout");
+    }
+    return f;
+}
+static int __Pyx_Print(PyObject* f, PyObject *arg_tuple, int newline) {
+    int i;
+    if (!f) {
+        if (!(f = __Pyx_GetStdout()))
+            return -1;
+    }
+    Py_INCREF(f);
+    for (i=0; i < PyTuple_GET_SIZE(arg_tuple); i++) {
+        PyObject* v;
+        if (PyFile_SoftSpace(f, 1)) {
+            if (PyFile_WriteString(" ", f) < 0)
+                goto error;
+        }
+        v = PyTuple_GET_ITEM(arg_tuple, i);
+        if (PyFile_WriteObject(v, f, Py_PRINT_RAW) < 0)
+            goto error;
+        if (PyString_Check(v)) {
+            char *s = PyString_AsString(v);
+            Py_ssize_t len = PyString_Size(v);
+            if (len > 0 &&
+                isspace(Py_CHARMASK(s[len-1])) &&
+                s[len-1] != ' ')
+                    PyFile_SoftSpace(f, 0);
+        }
+    }
+    if (newline) {
+        if (PyFile_WriteString("\n", f) < 0)
+            goto error;
+        PyFile_SoftSpace(f, 0);
+    }
+    Py_DECREF(f);
+    return 0;
+error:
+    Py_DECREF(f);
+    return -1;
+}
+#else /* Python 3 has a print function */
+static int __Pyx_Print(PyObject* stream, PyObject *arg_tuple, int newline) {
+    PyObject* kwargs = 0;
+    PyObject* result = 0;
+    PyObject* end_string;
+    if (unlikely(!__pyx_print)) {
+        __pyx_print = __Pyx_GetAttrString(__pyx_b, "print");
+        if (!__pyx_print)
+            return -1;
+    }
+    if (stream) {
+        kwargs = PyDict_New();
+        if (unlikely(!kwargs))
+            return -1;
+        if (unlikely(PyDict_SetItemString(kwargs, "file", stream) < 0))
+            goto bad;
+        if (!newline) {
+            end_string = PyUnicode_FromStringAndSize(" ", 1);
+            if (unlikely(!end_string))
+                goto bad;
+            if (PyDict_SetItemString(kwargs, "end", end_string) < 0) {
+                Py_DECREF(end_string);
+                goto bad;
+            }
+            Py_DECREF(end_string);
+        }
+    } else if (!newline) {
+        if (unlikely(!__pyx_print_kwargs)) {
+            __pyx_print_kwargs = PyDict_New();
+            if (unlikely(!__pyx_print_kwargs))
+                return -1;
+            end_string = PyUnicode_FromStringAndSize(" ", 1);
+            if (unlikely(!end_string))
+                return -1;
+            if (PyDict_SetItemString(__pyx_print_kwargs, "end", end_string) < 0) {
+                Py_DECREF(end_string);
+                return -1;
+            }
+            Py_DECREF(end_string);
+        }
+        kwargs = __pyx_print_kwargs;
+    }
+    result = PyObject_Call(__pyx_print, arg_tuple, kwargs);
+    if (unlikely(kwargs) && (kwargs != __pyx_print_kwargs))
+        Py_DECREF(kwargs);
+    if (!result)
+        return -1;
+    Py_DECREF(result);
+    return 0;
+bad:
+    if (kwargs != __pyx_print_kwargs)
+        Py_XDECREF(kwargs);
+    return -1;
+}
+#endif
+
+#if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION < 3
+static int __Pyx_PrintOne(PyObject* f, PyObject *o) {
+    if (!f) {
+        if (!(f = __Pyx_GetStdout()))
+            return -1;
+    }
+    Py_INCREF(f);
+    if (PyFile_SoftSpace(f, 0)) {
+        if (PyFile_WriteString(" ", f) < 0)
+            goto error;
+    }
+    if (PyFile_WriteObject(o, f, Py_PRINT_RAW) < 0)
+        goto error;
+    if (PyFile_WriteString("\n", f) < 0)
+        goto error;
+    Py_DECREF(f);
+    return 0;
+error:
+    Py_DECREF(f);
+    return -1;
+    /* the line below is just to avoid C compiler
+     * warnings about unused functions */
+    return __Pyx_Print(f, NULL, 0);
+}
+#else /* Python 3 has a print function */
+static int __Pyx_PrintOne(PyObject* stream, PyObject *o) {
+    int res;
+    PyObject* arg_tuple = PyTuple_Pack(1, o);
+    if (unlikely(!arg_tuple))
+        return -1;
+    res = __Pyx_Print(stream, arg_tuple, 1);
+    Py_DECREF(arg_tuple);
+    return res;
+}
+#endif
+
+static CYTHON_INLINE unsigned char __Pyx_PyInt_AsUnsignedChar(PyObject* x) {
+    const unsigned char neg_one = (unsigned char)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(unsigned char) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(unsigned char)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to unsigned char" :
+                    "value too large to convert to unsigned char");
+            }
+            return (unsigned char)-1;
+        }
+        return (unsigned char)val;
+    }
+    return (unsigned char)__Pyx_PyInt_AsUnsignedLong(x);
+}
+
+static CYTHON_INLINE unsigned short __Pyx_PyInt_AsUnsignedShort(PyObject* x) {
+    const unsigned short neg_one = (unsigned short)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(unsigned short) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(unsigned short)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to unsigned short" :
+                    "value too large to convert to unsigned short");
+            }
+            return (unsigned short)-1;
+        }
+        return (unsigned short)val;
+    }
+    return (unsigned short)__Pyx_PyInt_AsUnsignedLong(x);
+}
+
+static CYTHON_INLINE unsigned int __Pyx_PyInt_AsUnsignedInt(PyObject* x) {
+    const unsigned int neg_one = (unsigned int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(unsigned int) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(unsigned int)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to unsigned int" :
+                    "value too large to convert to unsigned int");
+            }
+            return (unsigned int)-1;
+        }
+        return (unsigned int)val;
+    }
+    return (unsigned int)__Pyx_PyInt_AsUnsignedLong(x);
+}
+
+static CYTHON_INLINE char __Pyx_PyInt_AsChar(PyObject* x) {
+    const char neg_one = (char)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(char) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(char)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to char" :
+                    "value too large to convert to char");
+            }
+            return (char)-1;
+        }
+        return (char)val;
+    }
+    return (char)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE short __Pyx_PyInt_AsShort(PyObject* x) {
+    const short neg_one = (short)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(short) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(short)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to short" :
+                    "value too large to convert to short");
+            }
+            return (short)-1;
+        }
+        return (short)val;
+    }
+    return (short)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE int __Pyx_PyInt_AsInt(PyObject* x) {
+    const int neg_one = (int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(int) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(int)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to int" :
+                    "value too large to convert to int");
+            }
+            return (int)-1;
+        }
+        return (int)val;
+    }
+    return (int)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE signed char __Pyx_PyInt_AsSignedChar(PyObject* x) {
+    const signed char neg_one = (signed char)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(signed char) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(signed char)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to signed char" :
+                    "value too large to convert to signed char");
+            }
+            return (signed char)-1;
+        }
+        return (signed char)val;
+    }
+    return (signed char)__Pyx_PyInt_AsSignedLong(x);
+}
+
+static CYTHON_INLINE signed short __Pyx_PyInt_AsSignedShort(PyObject* x) {
+    const signed short neg_one = (signed short)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(signed short) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(signed short)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to signed short" :
+                    "value too large to convert to signed short");
+            }
+            return (signed short)-1;
+        }
+        return (signed short)val;
+    }
+    return (signed short)__Pyx_PyInt_AsSignedLong(x);
+}
+
+static CYTHON_INLINE signed int __Pyx_PyInt_AsSignedInt(PyObject* x) {
+    const signed int neg_one = (signed int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(signed int) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(signed int)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to signed int" :
+                    "value too large to convert to signed int");
+            }
+            return (signed int)-1;
+        }
+        return (signed int)val;
+    }
+    return (signed int)__Pyx_PyInt_AsSignedLong(x);
+}
+
+static CYTHON_INLINE int __Pyx_PyInt_AsLongDouble(PyObject* x) {
+    const int neg_one = (int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(int) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(int)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to int" :
+                    "value too large to convert to int");
+            }
+            return (int)-1;
+        }
+        return (int)val;
+    }
+    return (int)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE unsigned long __Pyx_PyInt_AsUnsignedLong(PyObject* x) {
+    const unsigned long neg_one = (unsigned long)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to unsigned long");
+            return (unsigned long)-1;
+        }
+        return (unsigned long)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to unsigned long");
+                return (unsigned long)-1;
+            }
+            return (unsigned long)PyLong_AsUnsignedLong(x);
+        } else {
+            return (unsigned long)PyLong_AsLong(x);
+        }
+    } else {
+        unsigned long val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (unsigned long)-1;
+        val = __Pyx_PyInt_AsUnsignedLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE unsigned PY_LONG_LONG __Pyx_PyInt_AsUnsignedLongLong(PyObject* x) {
+    const unsigned PY_LONG_LONG neg_one = (unsigned PY_LONG_LONG)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to unsigned PY_LONG_LONG");
+            return (unsigned PY_LONG_LONG)-1;
+        }
+        return (unsigned PY_LONG_LONG)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to unsigned PY_LONG_LONG");
+                return (unsigned PY_LONG_LONG)-1;
+            }
+            return (unsigned PY_LONG_LONG)PyLong_AsUnsignedLongLong(x);
+        } else {
+            return (unsigned PY_LONG_LONG)PyLong_AsLongLong(x);
+        }
+    } else {
+        unsigned PY_LONG_LONG val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (unsigned PY_LONG_LONG)-1;
+        val = __Pyx_PyInt_AsUnsignedLongLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE long __Pyx_PyInt_AsLong(PyObject* x) {
+    const long neg_one = (long)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to long");
+            return (long)-1;
+        }
+        return (long)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to long");
+                return (long)-1;
+            }
+            return (long)PyLong_AsUnsignedLong(x);
+        } else {
+            return (long)PyLong_AsLong(x);
+        }
+    } else {
+        long val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (long)-1;
+        val = __Pyx_PyInt_AsLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE PY_LONG_LONG __Pyx_PyInt_AsLongLong(PyObject* x) {
+    const PY_LONG_LONG neg_one = (PY_LONG_LONG)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to PY_LONG_LONG");
+            return (PY_LONG_LONG)-1;
+        }
+        return (PY_LONG_LONG)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to PY_LONG_LONG");
+                return (PY_LONG_LONG)-1;
+            }
+            return (PY_LONG_LONG)PyLong_AsUnsignedLongLong(x);
+        } else {
+            return (PY_LONG_LONG)PyLong_AsLongLong(x);
+        }
+    } else {
+        PY_LONG_LONG val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (PY_LONG_LONG)-1;
+        val = __Pyx_PyInt_AsLongLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE signed long __Pyx_PyInt_AsSignedLong(PyObject* x) {
+    const signed long neg_one = (signed long)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to signed long");
+            return (signed long)-1;
+        }
+        return (signed long)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to signed long");
+                return (signed long)-1;
+            }
+            return (signed long)PyLong_AsUnsignedLong(x);
+        } else {
+            return (signed long)PyLong_AsLong(x);
+        }
+    } else {
+        signed long val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (signed long)-1;
+        val = __Pyx_PyInt_AsSignedLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE signed PY_LONG_LONG __Pyx_PyInt_AsSignedLongLong(PyObject* x) {
+    const signed PY_LONG_LONG neg_one = (signed PY_LONG_LONG)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to signed PY_LONG_LONG");
+            return (signed PY_LONG_LONG)-1;
+        }
+        return (signed PY_LONG_LONG)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to signed PY_LONG_LONG");
+                return (signed PY_LONG_LONG)-1;
+            }
+            return (signed PY_LONG_LONG)PyLong_AsUnsignedLongLong(x);
+        } else {
+            return (signed PY_LONG_LONG)PyLong_AsLongLong(x);
+        }
+    } else {
+        signed PY_LONG_LONG val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (signed PY_LONG_LONG)-1;
+        val = __Pyx_PyInt_AsSignedLongLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static void __Pyx_WriteUnraisable(const char *name, CYTHON_UNUSED int clineno,
+                                  CYTHON_UNUSED int lineno, CYTHON_UNUSED const char *filename) {
+    PyObject *old_exc, *old_val, *old_tb;
+    PyObject *ctx;
+    __Pyx_ErrFetch(&old_exc, &old_val, &old_tb);
+    #if PY_MAJOR_VERSION < 3
+    ctx = PyString_FromString(name);
+    #else
+    ctx = PyUnicode_FromString(name);
+    #endif
+    __Pyx_ErrRestore(old_exc, old_val, old_tb);
+    if (!ctx) {
+        PyErr_WriteUnraisable(Py_None);
+    } else {
+        PyErr_WriteUnraisable(ctx);
+        Py_DECREF(ctx);
+    }
+}
+
+static int __Pyx_check_binary_version(void) {
+    char ctversion[4], rtversion[4];
+    PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION);
+    PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion());
+    if (ctversion[0] != rtversion[0] || ctversion[2] != rtversion[2]) {
+        char message[200];
+        PyOS_snprintf(message, sizeof(message),
+                      "compiletime version %s of module '%.100s' "
+                      "does not match runtime version %s",
+                      ctversion, __Pyx_MODULE_NAME, rtversion);
+        #if PY_VERSION_HEX < 0x02050000
+        return PyErr_Warn(NULL, message);
+        #else
+        return PyErr_WarnEx(NULL, message, 1);
+        #endif
+    }
+    return 0;
+}
+
+static int __Pyx_ExportFunction(const char *name, void (*f)(void), const char *sig) {
+    PyObject *d = 0;
+    PyObject *cobj = 0;
+    union {
+        void (*fp)(void);
+        void *p;
+    } tmp;
+    d = PyObject_GetAttrString(__pyx_m, (char *)"__pyx_capi__");
+    if (!d) {
+        PyErr_Clear();
+        d = PyDict_New();
+        if (!d)
+            goto bad;
+        Py_INCREF(d);
+        if (PyModule_AddObject(__pyx_m, (char *)"__pyx_capi__", d) < 0)
+            goto bad;
+    }
+    tmp.fp = f;
+#if PY_VERSION_HEX >= 0x02070000 && !(PY_MAJOR_VERSION==3&&PY_MINOR_VERSION==0)
+    cobj = PyCapsule_New(tmp.p, sig, 0);
+#else
+    cobj = PyCObject_FromVoidPtrAndDesc(tmp.p, (void *)sig, 0);
+#endif
+    if (!cobj)
+        goto bad;
+    if (PyDict_SetItemString(d, name, cobj) < 0)
+        goto bad;
+    Py_DECREF(cobj);
+    Py_DECREF(d);
+    return 0;
+bad:
+    Py_XDECREF(cobj);
+    Py_XDECREF(d);
+    return -1;
+}
+
+#ifndef __PYX_HAVE_RT_ImportModule
+#define __PYX_HAVE_RT_ImportModule
+static PyObject *__Pyx_ImportModule(const char *name) {
+    PyObject *py_name = 0;
+    PyObject *py_module = 0;
+    py_name = __Pyx_PyIdentifier_FromString(name);
+    if (!py_name)
+        goto bad;
+    py_module = PyImport_Import(py_name);
+    Py_DECREF(py_name);
+    return py_module;
+bad:
+    Py_XDECREF(py_name);
+    return 0;
+}
+#endif
+
+#ifndef __PYX_HAVE_RT_ImportFunction
+#define __PYX_HAVE_RT_ImportFunction
+static int __Pyx_ImportFunction(PyObject *module, const char *funcname, void (**f)(void), const char *sig) {
+    PyObject *d = 0;
+    PyObject *cobj = 0;
+    union {
+        void (*fp)(void);
+        void *p;
+    } tmp;
+    d = PyObject_GetAttrString(module, (char *)"__pyx_capi__");
+    if (!d)
+        goto bad;
+    cobj = PyDict_GetItemString(d, funcname);
+    if (!cobj) {
+        PyErr_Format(PyExc_ImportError,
+            "%s does not export expected C function %s",
+                PyModule_GetName(module), funcname);
+        goto bad;
+    }
+#if PY_VERSION_HEX >= 0x02070000 && !(PY_MAJOR_VERSION==3 && PY_MINOR_VERSION==0)
+    if (!PyCapsule_IsValid(cobj, sig)) {
+        PyErr_Format(PyExc_TypeError,
+            "C function %s.%s has wrong signature (expected %s, got %s)",
+             PyModule_GetName(module), funcname, sig, PyCapsule_GetName(cobj));
+        goto bad;
+    }
+    tmp.p = PyCapsule_GetPointer(cobj, sig);
+#else
+    {const char *desc, *s1, *s2;
+    desc = (const char *)PyCObject_GetDesc(cobj);
+    if (!desc)
+        goto bad;
+    s1 = desc; s2 = sig;
+    while (*s1 != '\0' && *s1 == *s2) { s1++; s2++; }
+    if (*s1 != *s2) {
+        PyErr_Format(PyExc_TypeError,
+            "C function %s.%s has wrong signature (expected %s, got %s)",
+             PyModule_GetName(module), funcname, sig, desc);
+        goto bad;
+    }
+    tmp.p = PyCObject_AsVoidPtr(cobj);}
+#endif
+    *f = tmp.fp;
+    if (!(*f))
+        goto bad;
+    Py_DECREF(d);
+    return 0;
+bad:
+    Py_XDECREF(d);
+    return -1;
+}
+#endif
+
+static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) {
+    int start = 0, mid = 0, end = count - 1;
+    if (end >= 0 && code_line > entries[end].code_line) {
+        return count;
+    }
+    while (start < end) {
+        mid = (start + end) / 2;
+        if (code_line < entries[mid].code_line) {
+            end = mid;
+        } else if (code_line > entries[mid].code_line) {
+             start = mid + 1;
+        } else {
+            return mid;
+        }
+    }
+    if (code_line <= entries[mid].code_line) {
+        return mid;
+    } else {
+        return mid + 1;
+    }
+}
+static PyCodeObject *__pyx_find_code_object(int code_line) {
+    PyCodeObject* code_object;
+    int pos;
+    if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) {
+        return NULL;
+    }
+    pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
+    if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) {
+        return NULL;
+    }
+    code_object = __pyx_code_cache.entries[pos].code_object;
+    Py_INCREF(code_object);
+    return code_object;
+}
+static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) {
+    int pos, i;
+    __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries;
+    if (unlikely(!code_line)) {
+        return;
+    }
+    if (unlikely(!entries)) {
+        entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry));
+        if (likely(entries)) {
+            __pyx_code_cache.entries = entries;
+            __pyx_code_cache.max_count = 64;
+            __pyx_code_cache.count = 1;
+            entries[0].code_line = code_line;
+            entries[0].code_object = code_object;
+            Py_INCREF(code_object);
+        }
+        return;
+    }
+    pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
+    if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) {
+        PyCodeObject* tmp = entries[pos].code_object;
+        entries[pos].code_object = code_object;
+        Py_DECREF(tmp);
+        return;
+    }
+    if (__pyx_code_cache.count == __pyx_code_cache.max_count) {
+        int new_max = __pyx_code_cache.max_count + 64;
+        entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc(
+            __pyx_code_cache.entries, new_max*sizeof(__Pyx_CodeObjectCacheEntry));
+        if (unlikely(!entries)) {
+            return;
+        }
+        __pyx_code_cache.entries = entries;
+        __pyx_code_cache.max_count = new_max;
+    }
+    for (i=__pyx_code_cache.count; i>pos; i--) {
+        entries[i] = entries[i-1];
+    }
+    entries[pos].code_line = code_line;
+    entries[pos].code_object = code_object;
+    __pyx_code_cache.count++;
+    Py_INCREF(code_object);
+}
+
+#include "compile.h"
+#include "frameobject.h"
+#include "traceback.h"
+static PyCodeObject* __Pyx_CreateCodeObjectForTraceback(
+            const char *funcname, int c_line,
+            int py_line, const char *filename) {
+    PyCodeObject *py_code = 0;
+    PyObject *py_srcfile = 0;
+    PyObject *py_funcname = 0;
+    #if PY_MAJOR_VERSION < 3
+    py_srcfile = PyString_FromString(filename);
+    #else
+    py_srcfile = PyUnicode_FromString(filename);
+    #endif
+    if (!py_srcfile) goto bad;
+    if (c_line) {
+        #if PY_MAJOR_VERSION < 3
+        py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
+        #else
+        py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
+        #endif
+    }
+    else {
+        #if PY_MAJOR_VERSION < 3
+        py_funcname = PyString_FromString(funcname);
+        #else
+        py_funcname = PyUnicode_FromString(funcname);
+        #endif
+    }
+    if (!py_funcname) goto bad;
+    py_code = __Pyx_PyCode_New(
+        0,            /*int argcount,*/
+        0,            /*int kwonlyargcount,*/
+        0,            /*int nlocals,*/
+        0,            /*int stacksize,*/
+        0,            /*int flags,*/
+        __pyx_empty_bytes, /*PyObject *code,*/
+        __pyx_empty_tuple, /*PyObject *consts,*/
+        __pyx_empty_tuple, /*PyObject *names,*/
+        __pyx_empty_tuple, /*PyObject *varnames,*/
+        __pyx_empty_tuple, /*PyObject *freevars,*/
+        __pyx_empty_tuple, /*PyObject *cellvars,*/
+        py_srcfile,   /*PyObject *filename,*/
+        py_funcname,  /*PyObject *name,*/
+        py_line,      /*int firstlineno,*/
+        __pyx_empty_bytes  /*PyObject *lnotab*/
+    );
+    Py_DECREF(py_srcfile);
+    Py_DECREF(py_funcname);
+    return py_code;
+bad:
+    Py_XDECREF(py_srcfile);
+    Py_XDECREF(py_funcname);
+    return NULL;
+}
+static void __Pyx_AddTraceback(const char *funcname, int c_line,
+                               int py_line, const char *filename) {
+    PyCodeObject *py_code = 0;
+    PyObject *py_globals = 0;
+    PyFrameObject *py_frame = 0;
+    py_code = __pyx_find_code_object(c_line ? c_line : py_line);
+    if (!py_code) {
+        py_code = __Pyx_CreateCodeObjectForTraceback(
+            funcname, c_line, py_line, filename);
+        if (!py_code) goto bad;
+        __pyx_insert_code_object(c_line ? c_line : py_line, py_code);
+    }
+    py_globals = PyModule_GetDict(__pyx_m);
+    if (!py_globals) goto bad;
+    py_frame = PyFrame_New(
+        PyThreadState_GET(), /*PyThreadState *tstate,*/
+        py_code,             /*PyCodeObject *code,*/
+        py_globals,          /*PyObject *globals,*/
+        0                    /*PyObject *locals*/
+    );
+    if (!py_frame) goto bad;
+    py_frame->f_lineno = py_line;
+    PyTraceBack_Here(py_frame);
+bad:
+    Py_XDECREF(py_code);
+    Py_XDECREF(py_frame);
+}
+
+static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
+    while (t->p) {
+        #if PY_MAJOR_VERSION < 3
+        if (t->is_unicode) {
+            *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL);
+        } else if (t->intern) {
+            *t->p = PyString_InternFromString(t->s);
+        } else {
+            *t->p = PyString_FromStringAndSize(t->s, t->n - 1);
+        }
+        #else  /* Python 3+ has unicode identifiers */
+        if (t->is_unicode | t->is_str) {
+            if (t->intern) {
+                *t->p = PyUnicode_InternFromString(t->s);
+            } else if (t->encoding) {
+                *t->p = PyUnicode_Decode(t->s, t->n - 1, t->encoding, NULL);
+            } else {
+                *t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1);
+            }
+        } else {
+            *t->p = PyBytes_FromStringAndSize(t->s, t->n - 1);
+        }
+        #endif
+        if (!*t->p)
+            return -1;
+        ++t;
+    }
+    return 0;
+}
+
+static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) {
+   int is_true = x == Py_True;
+   if (is_true | (x == Py_False) | (x == Py_None)) return is_true;
+   else return PyObject_IsTrue(x);
+}
+static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x) {
+  PyNumberMethods *m;
+  const char *name = NULL;
+  PyObject *res = NULL;
+#if PY_VERSION_HEX < 0x03000000
+  if (PyInt_Check(x) || PyLong_Check(x))
+#else
+  if (PyLong_Check(x))
+#endif
+    return Py_INCREF(x), x;
+  m = Py_TYPE(x)->tp_as_number;
+#if PY_VERSION_HEX < 0x03000000
+  if (m && m->nb_int) {
+    name = "int";
+    res = PyNumber_Int(x);
+  }
+  else if (m && m->nb_long) {
+    name = "long";
+    res = PyNumber_Long(x);
+  }
+#else
+  if (m && m->nb_int) {
+    name = "int";
+    res = PyNumber_Long(x);
+  }
+#endif
+  if (res) {
+#if PY_VERSION_HEX < 0x03000000
+    if (!PyInt_Check(res) && !PyLong_Check(res)) {
+#else
+    if (!PyLong_Check(res)) {
+#endif
+      PyErr_Format(PyExc_TypeError,
+                   "__%s__ returned non-%s (type %.200s)",
+                   name, name, Py_TYPE(res)->tp_name);
+      Py_DECREF(res);
+      return NULL;
+    }
+  }
+  else if (!PyErr_Occurred()) {
+    PyErr_SetString(PyExc_TypeError,
+                    "an integer is required");
+  }
+  return res;
+}
+static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
+  Py_ssize_t ival;
+  PyObject* x = PyNumber_Index(b);
+  if (!x) return -1;
+  ival = PyInt_AsSsize_t(x);
+  Py_DECREF(x);
+  return ival;
+}
+static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) {
+#if PY_VERSION_HEX < 0x02050000
+   if (ival <= LONG_MAX)
+       return PyInt_FromLong((long)ival);
+   else {
+       unsigned char *bytes = (unsigned char *) &ival;
+       int one = 1; int little = (int)*(unsigned char*)&one;
+       return _PyLong_FromByteArray(bytes, sizeof(size_t), little, 0);
+   }
+#else
+   return PyInt_FromSize_t(ival);
+#endif
+}
+static CYTHON_INLINE size_t __Pyx_PyInt_AsSize_t(PyObject* x) {
+   unsigned PY_LONG_LONG val = __Pyx_PyInt_AsUnsignedLongLong(x);
+   if (unlikely(val == (unsigned PY_LONG_LONG)-1 && PyErr_Occurred())) {
+       return (size_t)-1;
+   } else if (unlikely(val != (unsigned PY_LONG_LONG)(size_t)val)) {
+       PyErr_SetString(PyExc_OverflowError,
+                       "value too large to convert to size_t");
+       return (size_t)-1;
+   }
+   return (size_t)val;
+}
+
+
+#endif /* Py_PYTHON_H */
diff --git a/h5py/_proxy.pxd b/h5py/_proxy.pxd
new file mode 100644
index 0000000..84901e5
--- /dev/null
+++ b/h5py/_proxy.pxd
@@ -0,0 +1,16 @@
+# This file is part of h5py, a Python interface to the HDF5 library.
+#
+# http://www.h5py.org
+#
+# Copyright 2008-2013 Andrew Collette and contributors
+#
+# License:  Standard 3-clause BSD; see "license.txt" for full license terms
+#           and contributor agreement.
+
+from defs cimport *
+
+cdef herr_t attr_rw(hid_t attr, hid_t mtype, void *progbuf, int read) except -1
+
+cdef herr_t dset_rw(hid_t dset, hid_t mtype, hid_t mspace, hid_t fspace,
+                    hid_t dxpl, void* progbuf, int read) except -1
+
diff --git a/h5py/_proxy.pyx b/h5py/_proxy.pyx
new file mode 100644
index 0000000..0576d47
--- /dev/null
+++ b/h5py/_proxy.pyx
@@ -0,0 +1,349 @@
+# cython: profile=False
+
+# This file is part of h5py, a Python interface to the HDF5 library.
+#
+# http://www.h5py.org
+#
+# Copyright 2008-2013 Andrew Collette and contributors
+#
+# License:  Standard 3-clause BSD; see "license.txt" for full license terms
+#           and contributor agreement.
+
+"""
+    Proxy functions for read/write, to work around the HDF5 bogus type issue.
+"""
+
+cdef enum copy_dir:
+    H5PY_SCATTER = 0,
+    H5PY_GATHER
+
+cdef herr_t attr_rw(hid_t attr, hid_t mtype, void *progbuf, int read) except -1:
+
+    cdef htri_t need_bkg
+    cdef hid_t atype = -1
+    cdef hid_t aspace = -1
+    cdef hsize_t npoints
+
+    cdef size_t msize, asize
+    cdef void* conv_buf = NULL
+    cdef void* back_buf = NULL
+
+    try:
+        atype = H5Aget_type(attr)
+
+        if not (needs_proxy(atype) or needs_proxy(mtype)):
+            if read:
+                H5Aread(attr, mtype, progbuf)
+            else:
+                H5Awrite(attr, mtype, progbuf)
+
+        else:
+            
+            asize = H5Tget_size(atype)
+            msize = H5Tget_size(mtype)
+            aspace = H5Aget_space(attr)
+            npoints = H5Sget_select_npoints(aspace)
+
+            conv_buf = create_buffer(asize, msize, npoints)
+            
+            if read:
+                need_bkg = needs_bkg_buffer(atype, mtype)
+            else:
+                need_bkg = needs_bkg_buffer(mtype, atype)
+            if need_bkg:
+                back_buf = malloc(msize*npoints)
+                memcpy(back_buf, progbuf, msize*npoints)
+
+            if read:
+                H5Aread(attr, atype, conv_buf)
+                H5Tconvert(atype, mtype, npoints, conv_buf, back_buf, H5P_DEFAULT)
+                memcpy(progbuf, conv_buf, msize*npoints)
+            else:
+                memcpy(conv_buf, progbuf, msize*npoints)
+                H5Tconvert(mtype, atype, npoints, conv_buf, back_buf, H5P_DEFAULT)
+                H5Awrite(attr, atype, conv_buf)
+                H5Dvlen_reclaim(atype, aspace, H5P_DEFAULT, conv_buf)
+
+    finally:
+        free(conv_buf)
+        free(back_buf)
+        if atype > 0:
+            H5Tclose(atype)
+        if aspace > 0:
+            H5Sclose(aspace)
+
+    return 0
+
+# =============================================================================
+# Proxy functions to safely release the GIL around read/write operations
+
+cdef herr_t H5PY_H5Dread(hid_t dset, hid_t mtype, hid_t mspace,
+                        hid_t fspace, hid_t dxpl, void* buf) except -1:
+    cdef herr_t retval
+    #with nogil:
+    retval = H5Dread(dset, mtype, mspace, fspace, dxpl, buf)
+    if retval < 0:
+        return -1
+    return retval
+
+cdef herr_t H5PY_H5Dwrite(hid_t dset, hid_t mtype, hid_t mspace,
+                        hid_t fspace, hid_t dxpl, void* buf) except -1:
+    cdef herr_t retval
+    #with nogil:
+    retval = H5Dwrite(dset, mtype, mspace, fspace, dxpl, buf)
+    if retval < 0:
+        return -1
+    return retval
+
+# =============================================================================
+# Proxy for vlen buf workaround
+
+
+cdef herr_t dset_rw(hid_t dset, hid_t mtype, hid_t mspace, hid_t fspace,
+                    hid_t dxpl, void* progbuf, int read) except -1:
+
+    cdef htri_t need_bkg
+    cdef hid_t dstype = -1      # Dataset datatype
+    cdef hid_t rawdstype = -1
+    cdef hid_t dspace = -1      # Dataset dataspace
+    cdef hid_t cspace = -1      # Temporary contiguous dataspaces
+
+    cdef void* back_buf = NULL
+    cdef void* conv_buf = NULL
+    cdef hsize_t npoints
+
+    try:
+        # Issue 372: when a compound type is involved, using the dataset type
+        # may result in uninitialized data being sent to H5Tconvert for fields
+        # not present in the memory type.  Limit the type used for the dataset
+        # to only those fields present in the memory type.  We can't use the
+        # memory type directly because of course that triggers HDFFV-1063.
+        if (H5Tget_class(mtype) == H5T_COMPOUND) and (not read):
+            rawdstype = H5Dget_type(dset)
+            dstype = make_reduced_type(mtype, rawdstype)
+            H5Tclose(rawdstype)
+        else:
+            dstype = H5Dget_type(dset)
+
+        if not (needs_proxy(dstype) or needs_proxy(mtype)):
+            if read:
+                H5PY_H5Dread(dset, mtype, mspace, fspace, dxpl, progbuf)
+            else:
+                H5PY_H5Dwrite(dset, mtype, mspace, fspace, dxpl, progbuf)
+        else:
+
+            if mspace == H5S_ALL and fspace != H5S_ALL:
+                mspace = fspace
+            elif mspace != H5S_ALL and fspace == H5S_ALL:
+                fspace = mspace
+            elif mspace == H5S_ALL and fspace == H5S_ALL:
+                fspace = mspace = dspace = H5Dget_space(dset)
+
+            npoints = H5Sget_select_npoints(mspace)
+            cspace = H5Screate_simple(1, &npoints, NULL)
+
+            conv_buf = create_buffer(H5Tget_size(dstype), H5Tget_size(mtype), npoints)
+
+            # Only create a (contiguous) backing buffer if absolutely
+            # necessary. Note this buffer always has memory type.
+            if read:
+                need_bkg = needs_bkg_buffer(dstype, mtype)
+            else:
+                need_bkg = needs_bkg_buffer(mtype, dstype)
+            if need_bkg:
+                back_buf = create_buffer(H5Tget_size(dstype), H5Tget_size(mtype), npoints)
+                h5py_copy(mtype, mspace, back_buf, progbuf, H5PY_GATHER)
+
+            if read:
+                H5PY_H5Dread(dset, dstype, cspace, fspace, dxpl, conv_buf)
+                H5Tconvert(dstype, mtype, npoints, conv_buf, back_buf, dxpl)
+                h5py_copy(mtype, mspace, conv_buf, progbuf, H5PY_SCATTER)
+            else:
+                h5py_copy(mtype, mspace, conv_buf, progbuf, H5PY_GATHER)
+                H5Tconvert(mtype, dstype, npoints, conv_buf, back_buf, dxpl)
+                H5PY_H5Dwrite(dset, dstype, cspace, fspace, dxpl, conv_buf)
+                H5Dvlen_reclaim(dstype, cspace, H5P_DEFAULT, conv_buf)
+ 
+    finally:
+        free(back_buf)
+        free(conv_buf)
+        if dstype > 0:
+            H5Tclose(dstype)
+        if dspace > 0:
+            H5Sclose(dspace)
+        if cspace > 0:
+            H5Sclose(cspace)
+
+    return 0
+
+
+cdef hid_t make_reduced_type(hid_t mtype, hid_t dstype):
+    # Go through dstype, pick out the fields which also appear in mtype, and
+    # return a new compound type with the fields packed together
+    # See also: issue 372
+
+    cdef hid_t newtype, temptype
+    cdef hsize_t newtype_size, offset
+
+    # Make a list of all names in the memory type.
+    mtype_fields = []
+    for idx in xrange(H5Tget_nmembers(mtype)):
+        mtype_fields.append(H5Tget_member_name(mtype, idx))
+
+    # First pass: add up the sizes of matching fields so we know how large a
+    # type to make
+    newtype_size = 0
+    for idx in xrange(H5Tget_nmembers(dstype)):
+        name = H5Tget_member_name(dstype, idx)
+        if name not in mtype_fields:
+            continue
+        temptype = H5Tget_member_type(dstype, idx)
+        newtype_size += H5Tget_size(temptype)
+        H5Tclose(temptype)
+
+    newtype = H5Tcreate(H5T_COMPOUND, newtype_size)
+
+    # Second pass: pick out the matching fields and pack them in the new type
+    offset = 0
+    for idx in xrange(H5Tget_nmembers(dstype)):
+        name = H5Tget_member_name(dstype, idx)
+        if name not in mtype_fields:
+            continue
+        temptype = H5Tget_member_type(dstype, idx)
+        H5Tinsert(newtype, name, offset, temptype)
+        offset += H5Tget_size(temptype)
+        H5Tclose(temptype)
+
+    return newtype
+
+
+cdef void* create_buffer(size_t ipt_size, size_t opt_size, size_t nl) except NULL:
+    
+    cdef size_t final_size
+    cdef void* buf
+
+    if ipt_size >= opt_size:
+        final_size = ipt_size*nl
+    else:
+        final_size = opt_size*nl
+        
+    buf = malloc(final_size)
+    if buf == NULL:
+        raise MemoryError("Failed to allocate conversion buffer")
+
+    return buf
+
+# =============================================================================
+# Scatter/gather routines
+
+ctypedef struct h5py_scatter_t:
+    size_t i
+    size_t elsize
+    void* buf
+
+cdef herr_t h5py_scatter_cb(void* elem, hid_t type_id, unsigned ndim,
+                hsize_t *point, void *operator_data) except -1:
+
+    cdef h5py_scatter_t* info = <h5py_scatter_t*>operator_data
+   
+    memcpy(elem, (<char*>info[0].buf)+((info[0].i)*(info[0].elsize)), 
+           info[0].elsize)
+    
+    info[0].i += 1
+
+    return 0
+
+cdef herr_t h5py_gather_cb(void* elem, hid_t type_id, unsigned ndim,
+                hsize_t *point, void *operator_data) except -1:
+
+    cdef h5py_scatter_t* info = <h5py_scatter_t*>operator_data
+   
+    memcpy((<char*>info[0].buf)+((info[0].i)*(info[0].elsize)), elem, 
+            info[0].elsize)
+    
+    info[0].i += 1
+
+    return 0
+
+# Copy between a contiguous and non-contiguous buffer, with the layout
+# of the latter specified by a dataspace selection.
+cdef herr_t h5py_copy(hid_t tid, hid_t space, void* contig, void* noncontig,
+                 copy_dir op) except -1:
+
+    cdef h5py_scatter_t info
+    cdef hsize_t elsize
+
+    elsize = H5Tget_size(tid)
+
+    info.i = 0
+    info.elsize = elsize
+    info.buf = contig
+
+    if op == H5PY_SCATTER:
+        H5Diterate(noncontig, tid, space, h5py_scatter_cb, &info)
+    elif op == H5PY_GATHER:
+        H5Diterate(noncontig, tid, space, h5py_gather_cb, &info)
+    else:
+        raise RuntimeError("Illegal direction")
+
+    return 0
+
+# =============================================================================
+# VLEN support routines
+
+cdef htri_t needs_bkg_buffer(hid_t src, hid_t dst) except -1:
+    
+    cdef H5T_cdata_t *info = NULL
+
+    if H5Tdetect_class(src, H5T_COMPOUND) or H5Tdetect_class(dst, H5T_COMPOUND):
+        return 1
+
+    try:
+        H5Tfind(src, dst, &info)
+    except:
+        print "Failed to find converter for %s -> %s" % (H5Tget_size(src), H5Tget_tag(dst))
+        raise
+
+    if info[0].need_bkg == H5T_BKG_YES:
+        return 1
+
+    return 0
+
+# Determine if the given type requires proxy buffering
+cdef htri_t needs_proxy(hid_t tid) except -1:
+    
+    cdef H5T_class_t cls
+    cdef hid_t supertype
+    cdef int i, n
+    cdef htri_t result
+
+    cls = H5Tget_class(tid)
+
+    if cls == H5T_VLEN or cls == H5T_REFERENCE:
+        return 1
+
+    elif cls == H5T_STRING:
+        return H5Tis_variable_str(tid)
+
+    elif cls == H5T_ARRAY:
+        
+        supertype = H5Tget_super(tid)
+        try:
+            return needs_proxy(supertype)
+        finally:
+            H5Tclose(supertype)
+
+    elif cls == H5T_COMPOUND:
+
+        n = H5Tget_nmembers(tid)
+        for i from 0<=i<n:
+            supertype = H5Tget_member_type(tid, i)
+            try:
+                result = needs_proxy(supertype)
+                if result > 0:
+                    return 1
+            finally:
+                H5Tclose(supertype)
+        return 0
+
+    return 0
diff --git a/h5py/api_compat.h b/h5py/api_compat.h
new file mode 100644
index 0000000..7118f49
--- /dev/null
+++ b/h5py/api_compat.h
@@ -0,0 +1,35 @@
+/***** Preamble block *********************************************************
+* 
+* This file is part of h5py, a Python interface to the HDF5 library.
+*
+* http://www.h5py.org
+*
+* Copyright 2008-2013 Andrew Collette and contributors
+*
+* License:  Standard 3-clause BSD; see "license.txt" for full license terms
+*           and contributor agreement.
+* 
+****** End preamble block ****************************************************/
+
+/* Contains compatibility macros and definitions for use by Cython code */
+
+#ifndef H5PY_COMPAT
+#define H5PY_COMPAT
+
+#include <stddef.h>
+#include "Python.h"
+#include "numpy/arrayobject.h"
+#include "hdf5.h"
+
+/* The HOFFSET macro can't be used from Cython. */
+
+#define h5py_size_n64 (sizeof(npy_complex64))
+#define h5py_size_n128 (sizeof(npy_complex128))
+
+#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))
+
+#endif
+
diff --git a/h5py/api_functions.txt b/h5py/api_functions.txt
new file mode 100644
index 0000000..ed27a7f
--- /dev/null
+++ b/h5py/api_functions.txt
@@ -0,0 +1,558 @@
+# This file is part of h5py, a Python interface to the HDF5 library.
+#
+# http://www.h5py.org
+#
+# Copyright 2008-2013 Andrew Collette and contributors
+#
+# License:  Standard 3-clause BSD; see "license.txt" for full license terms
+#           and contributor agreement.
+
+hdf5:
+  herr_t H5open()
+  herr_t H5close()
+
+  herr_t H5get_libversion(unsigned *majnum, unsigned *minnum, unsigned *relnum)
+
+  hid_t H5Dcreate2(hid_t loc_id, char *name, hid_t type_id, hid_t space_id, hid_t lcpl_id, hid_t dcpl_id, hid_t dapl_id)
+  hid_t H5Dcreate_anon(hid_t file_id, hid_t type_id, hid_t space_id, hid_t plist_id, hid_t dapl_id)
+
+  hid_t     H5Dopen(hid_t file_id, char *name)
+  herr_t    H5Dclose(hid_t dset_id)
+
+  hid_t     H5Dget_space(hid_t dset_id)
+  herr_t    H5Dget_space_status(hid_t dset_id, H5D_space_status_t *status)
+  hid_t     H5Dget_type(hid_t dset_id)
+  hid_t     H5Dget_create_plist(hid_t dataset_id)
+
+  haddr_t   H5Dget_offset(hid_t dset_id)
+  hsize_t   H5Dget_storage_size(hid_t dset_id)
+
+  # These must have their return values checked manually, in order to
+  # allow the GIL to be released during reading and writing.
+  herr_t    H5Dread(hid_t dset_id, hid_t mem_type_id, hid_t mem_space_id, hid_t file_space_id, hid_t plist_id, void *buf)
+  herr_t    H5Dwrite(hid_t dset_id, hid_t mem_type, hid_t mem_space, hid_t file_space, hid_t xfer_plist, void* buf)
+
+  herr_t    H5Dextend(hid_t dataset_id, hsize_t *size)
+
+  herr_t    H5Dfill(void *fill, hid_t fill_type_id, void *buf,  hid_t buf_type_id, hid_t space_id )
+  herr_t    H5Dvlen_get_buf_size(hid_t dset_id, hid_t type_id, hid_t space_id, hsize_t *size)
+  herr_t    H5Dvlen_reclaim(hid_t type_id, hid_t space_id,  hid_t plist, void *buf)
+
+  herr_t    H5Diterate(void *buf, hid_t type_id, hid_t space_id,  H5D_operator_t op, void* operator_data)
+  herr_t    H5Dset_extent(hid_t dset_id, hsize_t* size)
+
+
+
+# === H5F - File API ==========================================================
+
+
+  hid_t  H5Fcreate(char *filename, unsigned int flags, hid_t create_plist, hid_t access_plist)
+  hid_t  H5Fopen(char *name, unsigned flags, hid_t access_id)
+  herr_t H5Fclose (hid_t file_id)
+  htri_t H5Fis_hdf5(char *name)
+  herr_t H5Fflush(hid_t object_id, H5F_scope_t scope)
+
+  hid_t     H5Freopen(hid_t file_id)
+  herr_t    H5Fmount(hid_t loc_id, char *name, hid_t child_id, hid_t plist_id)
+  herr_t    H5Funmount(hid_t loc_id, char *name)
+  herr_t    H5Fget_filesize(hid_t file_id, hsize_t *size)
+  hid_t     H5Fget_create_plist(hid_t file_id )
+  hid_t     H5Fget_access_plist(hid_t file_id)
+  hssize_t  H5Fget_freespace(hid_t file_id)
+  ssize_t   H5Fget_name(hid_t obj_id, char *name, size_t size)
+  int       H5Fget_obj_count(hid_t file_id, unsigned int types)
+  int       H5Fget_obj_ids(hid_t file_id, unsigned int types, int max_objs, hid_t *obj_id_list)
+  herr_t    H5Fget_vfd_handle(hid_t file_id, hid_t fapl_id, void **file_handle)
+
+
+  herr_t H5Fget_intent(hid_t file_id, unsigned int *intent)
+
+  herr_t H5Fget_mdc_config(hid_t file_id, H5AC_cache_config_t *config_ptr)
+  herr_t H5Fget_mdc_hit_rate(hid_t file_id, double *hit_rate_ptr)
+  herr_t H5Fget_mdc_size(hid_t file_id, size_t *max_size_ptr, size_t *min_clean_size_ptr, size_t *cur_size_ptr, int *cur_num_entries_ptr)
+  herr_t H5Freset_mdc_hit_rate_stats(hid_t file_id)
+  herr_t H5Fset_mdc_config(hid_t file_id, H5AC_cache_config_t *config_ptr)
+# === H5FD - Low-level file descriptor API ====================================
+
+# === H5G - Groups API ========================================================
+
+
+
+  hid_t  H5Gcreate(hid_t loc_id, char *name, size_t size_hint)
+  hid_t  H5Gopen(hid_t loc_id, char *name)
+  herr_t H5Gclose(hid_t group_id)
+  herr_t H5Glink2( hid_t curr_loc_id, char *current_name, H5G_link_t link_type, hid_t new_loc_id, char *new_name)
+
+  herr_t H5Gunlink (hid_t file_id, char *name)
+  herr_t H5Gmove2(hid_t src_loc_id, char *src_name, hid_t dst_loc_id, char *dst_name)
+  herr_t H5Gget_num_objs(hid_t loc_id, hsize_t*  num_obj)
+  int    H5Gget_objname_by_idx(hid_t loc_id, hsize_t idx, char *name, size_t size)
+  int    H5Gget_objtype_by_idx(hid_t loc_id, hsize_t idx)
+
+  herr_t H5Giterate(hid_t loc_id, char *name, int *idx, H5G_iterate_t op, void* data)
+  herr_t H5Gget_objinfo(hid_t loc_id, char* name, int follow_link, H5G_stat_t *statbuf)
+
+  herr_t H5Gget_linkval(hid_t loc_id, char *name, size_t size, char *value)
+  herr_t H5Gset_comment(hid_t loc_id, char *name, char *comment)
+  int H5Gget_comment(hid_t loc_id, char *name, size_t bufsize, char *comment)
+
+  # New extensions in 1.8.X
+
+
+  hid_t   H5Gcreate_anon( hid_t loc_id, hid_t gcpl_id, hid_t gapl_id)
+  hid_t   H5Gcreate2(hid_t loc_id, char *name, hid_t lcpl_id, hid_t gcpl_id, hid_t gapl_id)
+  hid_t   H5Gopen2( hid_t loc_id, char * name, hid_t gapl_id)
+  herr_t  H5Gget_info( hid_t group_id, H5G_info_t *group_info)
+  herr_t  H5Gget_info_by_name( hid_t loc_id, char *group_name, H5G_info_t *group_info, hid_t lapl_id)
+  hid_t   H5Gget_create_plist(hid_t group_id)
+
+
+# === H5I - Identifier and reflection interface ===============================
+
+
+
+  H5I_type_t H5Iget_type(hid_t obj_id)
+  ssize_t    H5Iget_name( hid_t obj_id, char *name, size_t size)
+  hid_t      H5Iget_file_id(hid_t obj_id)
+  int        H5Idec_ref(hid_t obj_id)
+  int        H5Iget_ref(hid_t obj_id)
+  int        H5Iinc_ref(hid_t obj_id)
+
+
+# === H5L - Links interface (1.8.X only) ======================================
+
+
+
+
+
+    # Links API
+
+  herr_t H5Lmove(hid_t src_loc, char *src_name, hid_t dst_loc, char *dst_name, hid_t lcpl_id, hid_t lapl_id)
+
+  herr_t H5Lcopy(hid_t src_loc, char *src_name, hid_t dst_loc, char *dst_name, hid_t lcpl_id, hid_t lapl_id)
+
+  herr_t H5Lcreate_hard(hid_t cur_loc, char *cur_name, hid_t dst_loc, char *dst_name, hid_t lcpl_id, hid_t lapl_id)
+
+  herr_t H5Lcreate_soft(char *link_target, hid_t link_loc_id, char *link_name, hid_t lcpl_id, hid_t lapl_id)
+
+  herr_t H5Ldelete(hid_t loc_id, char *name, hid_t lapl_id)
+
+  herr_t H5Ldelete_by_idx(hid_t loc_id, char *group_name, H5_index_t idx_type, H5_iter_order_t order, hsize_t n, hid_t lapl_id)
+
+  herr_t H5Lget_val(hid_t loc_id, char *name, void *bufout, size_t size, hid_t lapl_id)
+
+  herr_t H5Lget_val_by_idx(hid_t loc_id, char *group_name,  H5_index_t idx_type, H5_iter_order_t order, hsize_t n, void *bufout, size_t size, hid_t lapl_id)
+
+  htri_t H5Lexists(hid_t loc_id, char *name, hid_t lapl_id)
+
+  herr_t H5Lget_info(hid_t loc_id, char *name, H5L_info_t *linfo, hid_t lapl_id)
+
+  herr_t H5Lget_info_by_idx(hid_t loc_id, char *group_name, H5_index_t idx_type, H5_iter_order_t order, hsize_t n, H5L_info_t *linfo, hid_t lapl_id)
+
+  ssize_t H5Lget_name_by_idx(hid_t loc_id, char *group_name, H5_index_t idx_type, H5_iter_order_t order, hsize_t n, char *name, size_t size, hid_t lapl_id)
+
+  herr_t H5Literate(hid_t grp_id, H5_index_t idx_type, H5_iter_order_t order, hsize_t *idx, H5L_iterate_t op, void *op_data)
+
+  herr_t H5Literate_by_name(hid_t loc_id, char *group_name, H5_index_t idx_type, H5_iter_order_t order, hsize_t *idx, H5L_iterate_t op, void *op_data, hid_t lapl_id)
+
+  herr_t H5Lvisit(hid_t grp_id, H5_index_t idx_type, H5_iter_order_t order, H5L_iterate_t op, void *op_data)
+
+  herr_t H5Lvisit_by_name(hid_t loc_id, char *group_name, H5_index_t idx_type, H5_iter_order_t order, H5L_iterate_t op, void *op_data, hid_t lapl_id)
+
+  herr_t H5Lunpack_elink_val(void *ext_linkval, size_t link_size, unsigned *flags, char **filename, char **obj_path)
+
+  herr_t H5Lcreate_external(char *file_name, char *obj_name, hid_t link_loc_id, char *link_name, hid_t lcpl_id, hid_t lapl_id)
+
+# === H5O - General object operations (1.8.X only) ============================
+
+
+
+
+
+    # --- H5O API -------------------------------------------------------------
+
+  hid_t H5Oopen(hid_t loc_id, char *name, hid_t lapl_id)
+  hid_t H5Oopen_by_addr(hid_t loc_id, haddr_t addr)
+  hid_t H5Oopen_by_idx(hid_t loc_id, char *group_name, H5_index_t idx_type, H5_iter_order_t order, hsize_t n, hid_t lapl_id)
+
+  herr_t H5Oget_info(hid_t loc_id, H5O_info_t *oinfo)
+  herr_t H5Oget_info_by_name(hid_t loc_id, char *name, H5O_info_t *oinfo, hid_t lapl_id)
+  herr_t H5Oget_info_by_idx(hid_t loc_id, char *group_name,  H5_index_t idx_type, H5_iter_order_t order, hsize_t n, H5O_info_t *oinfo, hid_t lapl_id)
+
+  herr_t H5Olink(hid_t obj_id, hid_t new_loc_id, char *new_name, hid_t lcpl_id, hid_t lapl_id)
+  herr_t H5Ocopy(hid_t src_loc_id, char *src_name, hid_t dst_loc_id,  char *dst_name, hid_t ocpypl_id, hid_t lcpl_id)
+
+  herr_t H5Oincr_refcount(hid_t object_id)
+  herr_t H5Odecr_refcount(hid_t object_id)
+
+  herr_t H5Oset_comment(hid_t obj_id, char *comment)
+  herr_t H5Oset_comment_by_name(hid_t loc_id, char *name,  char *comment, hid_t lapl_id)
+  ssize_t H5Oget_comment(hid_t obj_id, char *comment, size_t bufsize)
+  ssize_t H5Oget_comment_by_name(hid_t loc_id, char *name, char *comment, size_t bufsize, hid_t lapl_id)
+
+  herr_t H5Ovisit(hid_t obj_id, H5_index_t idx_type, H5_iter_order_t order,  H5O_iterate_t op, void *op_data)
+  herr_t H5Ovisit_by_name(hid_t loc_id, char *obj_name, H5_index_t idx_type, H5_iter_order_t order, H5O_iterate_t op, void *op_data, hid_t lapl_id)
+
+  herr_t H5Oclose(hid_t object_id)
+
+# === H5P - Property list API =================================================
+
+
+
+
+
+  # General operations
+  hid_t  H5Pcreate(hid_t plist_id)
+  hid_t  H5Pcopy(hid_t plist_id)
+  int    H5Pget_class(hid_t plist_id)
+  herr_t H5Pclose(hid_t plist_id)
+  htri_t H5Pequal( hid_t id1, hid_t id2 )
+  herr_t H5Pclose_class(hid_t id)
+
+  # File creation properties
+  herr_t H5Pget_version(hid_t plist, unsigned int *super_, unsigned int* freelist,  unsigned int *stab, unsigned int *shhdr)
+  herr_t H5Pset_userblock(hid_t plist, hsize_t size)
+  herr_t H5Pget_userblock(hid_t plist, hsize_t * size)
+  herr_t H5Pset_sizes(hid_t plist, size_t sizeof_addr, size_t sizeof_size)
+  herr_t H5Pget_sizes(hid_t plist, size_t *sizeof_addr, size_t *sizeof_size)
+  herr_t H5Pset_sym_k(hid_t plist, unsigned int ik, unsigned int lk)
+  herr_t H5Pget_sym_k(hid_t plist, unsigned int *ik, unsigned int *lk)
+  herr_t H5Pset_istore_k(hid_t plist, unsigned int ik)
+  herr_t H5Pget_istore_k(hid_t plist, unsigned int *ik)
+
+  # File access
+  herr_t    H5Pset_fclose_degree(hid_t fapl_id, H5F_close_degree_t fc_degree)
+  herr_t    H5Pget_fclose_degree(hid_t fapl_id, H5F_close_degree_t *fc_degree)
+  herr_t    H5Pset_fapl_core( hid_t fapl_id, size_t increment, hbool_t backing_store)
+  herr_t    H5Pget_fapl_core( hid_t fapl_id, size_t *increment, hbool_t *backing_store)
+  herr_t    H5Pset_fapl_family ( hid_t fapl_id,  hsize_t memb_size, hid_t memb_fapl_id )
+  herr_t    H5Pget_fapl_family ( hid_t fapl_id, hsize_t *memb_size, hid_t *memb_fapl_id )
+  herr_t    H5Pset_family_offset ( hid_t fapl_id, hsize_t offset)
+  herr_t    H5Pget_family_offset ( hid_t fapl_id, hsize_t *offset)
+  herr_t    H5Pset_fapl_log(hid_t fapl_id, char *logfile, unsigned int flags, size_t buf_size)
+  herr_t    H5Pset_fapl_multi(hid_t fapl_id, H5FD_mem_t *memb_map, hid_t *memb_fapl, char **memb_name, haddr_t *memb_addr, hbool_t relax)
+  herr_t H5Pset_cache(hid_t plist_id, int mdc_nelmts, int rdcc_nelmts,  size_t rdcc_nbytes, double rdcc_w0)
+  herr_t H5Pget_cache(hid_t plist_id, int *mdc_nelmts, int *rdcc_nelmts, size_t *rdcc_nbytes, double *rdcc_w0)
+  herr_t H5Pset_fapl_sec2(hid_t fapl_id)
+  herr_t H5Pset_fapl_stdio(hid_t fapl_id)
+  hid_t  H5Pget_driver(hid_t fapl_id)
+
+
+  herr_t H5Pget_mdc_config(hid_t plist_id, H5AC_cache_config_t *config_ptr)
+  herr_t H5Pset_mdc_config(hid_t plist_id, H5AC_cache_config_t *config_ptr)
+
+
+  # Dataset creation properties
+  herr_t        H5Pset_layout(hid_t plist, int layout)
+  H5D_layout_t  H5Pget_layout(hid_t plist)
+  herr_t        H5Pset_chunk(hid_t plist, int ndims, hsize_t * dim)
+  int           H5Pget_chunk(hid_t plist, int max_ndims, hsize_t * dims )
+  herr_t        H5Pset_deflate( hid_t plist, int level)
+  herr_t        H5Pset_fill_value(hid_t plist_id, hid_t type_id, void *value )
+  herr_t        H5Pget_fill_value(hid_t plist_id, hid_t type_id, void *value )
+  herr_t        H5Pfill_value_defined(hid_t plist_id, H5D_fill_value_t *status )
+  herr_t        H5Pset_fill_time(hid_t plist_id, H5D_fill_time_t fill_time )
+  herr_t        H5Pget_fill_time(hid_t plist_id, H5D_fill_time_t *fill_time )
+  herr_t        H5Pset_alloc_time(hid_t plist_id, H5D_alloc_time_t alloc_time )
+  herr_t        H5Pget_alloc_time(hid_t plist_id, H5D_alloc_time_t *alloc_time )
+  herr_t        H5Pset_filter(hid_t plist, H5Z_filter_t filter, unsigned int flags, size_t cd_nelmts, unsigned int* cd_values )
+  htri_t        H5Pall_filters_avail(hid_t dcpl_id)
+  int           H5Pget_nfilters(hid_t plist)
+  H5Z_filter_t  H5Pget_filter(hid_t plist, unsigned int filter_number,   unsigned int *flags, size_t *cd_nelmts,  unsigned int* cd_values, size_t namelen, char* name )
+  herr_t        H5Pget_filter_by_id( hid_t plist_id, H5Z_filter_t filter,  unsigned int *flags, size_t *cd_nelmts,  unsigned int* cd_values, size_t namelen, char* name)
+  herr_t        H5Pmodify_filter(hid_t plist, H5Z_filter_t filter, unsigned int flags, size_t cd_nelmts, unsigned int *cd_values)
+  herr_t        H5Premove_filter(hid_t plist, H5Z_filter_t filter )
+  herr_t        H5Pset_fletcher32(hid_t plist)
+  herr_t        H5Pset_shuffle(hid_t plist_id)
+  herr_t        H5Pset_szip(hid_t plist, unsigned int options_mask, unsigned int pixels_per_block)
+  herr_t        H5Pset_scaleoffset(hid_t plist, H5Z_SO_scale_type_t scale_type, int scale_factor)
+
+  # Dataset Acces, Memory, and Tranfer Properties
+  herr_t    H5Pset_edc_check(hid_t plist, H5Z_EDC_t check)
+  H5Z_EDC_t H5Pget_edc_check(hid_t plist)
+  herr_t    H5Pset_chunk_cache( hid_t dapl_id, size_t rdcc_nslots, size_t rdcc_nbytes, double rdcc_w0 )
+  herr_t    H5Pget_chunk_cache( hid_t dapl_id, size_t *rdcc_nslots, size_t *rdcc_nbytes, double *rdcc_w0 )
+
+  # Other properties
+  herr_t H5Pset_sieve_buf_size(hid_t fapl_id, size_t size)
+  herr_t H5Pget_sieve_buf_size(hid_t fapl_id, size_t *size)
+
+  # New in 1.8
+
+
+  herr_t H5Pset_nlinks(hid_t plist_id, size_t nlinks)
+  herr_t H5Pget_nlinks(hid_t plist_id, size_t *nlinks)
+  herr_t H5Pset_elink_prefix(hid_t plist_id, char *prefix)
+  ssize_t H5Pget_elink_prefix(hid_t plist_id, char *prefix, size_t size)
+  hid_t  H5Pget_elink_fapl(hid_t lapl_id)
+  herr_t H5Pset_elink_fapl(hid_t lapl_id, hid_t fapl_id)
+
+  herr_t H5Pset_create_intermediate_group(hid_t plist_id, unsigned crt_intmd)
+  herr_t H5Pget_create_intermediate_group(hid_t plist_id, unsigned *crt_intmd)
+
+  herr_t H5Pset_copy_object(hid_t plist_id, unsigned crt_intmd)
+  herr_t H5Pget_copy_object(hid_t plist_id, unsigned *crt_intmd)
+
+  herr_t H5Pset_char_encoding(hid_t plist_id, H5T_cset_t encoding)
+  herr_t H5Pget_char_encoding(hid_t plist_id, H5T_cset_t *encoding)
+
+  herr_t H5Pset_obj_track_times( hid_t ocpl_id, hbool_t track_times )
+  herr_t H5Pget_obj_track_times( hid_t ocpl_id, hbool_t *track_times )
+
+  herr_t H5Pset_local_heap_size_hint(hid_t plist_id, size_t size_hint)
+  herr_t H5Pget_local_heap_size_hint(hid_t plist_id, size_t *size_hint)
+  herr_t H5Pset_link_phase_change(hid_t plist_id, unsigned max_compact, unsigned min_dense)
+  herr_t H5Pget_link_phase_change(hid_t plist_id, unsigned *max_compact , unsigned *min_dense)
+  herr_t H5Pset_est_link_info(hid_t plist_id, unsigned est_num_entries, unsigned est_name_len)
+  herr_t H5Pget_est_link_info(hid_t plist_id, unsigned *est_num_entries , unsigned *est_name_len)
+  herr_t H5Pset_link_creation_order(hid_t plist_id, unsigned crt_order_flags)
+  herr_t H5Pget_link_creation_order(hid_t plist_id, unsigned *crt_order_flags)
+
+  herr_t H5Pset_libver_bounds(hid_t fapl_id, H5F_libver_t libver_low, H5F_libver_t libver_high)
+  herr_t H5Pget_libver_bounds(hid_t fapl_id, H5F_libver_t *libver_low, H5F_libver_t *libver_high)
+
+
+
+
+# === H5R - Reference API =====================================================
+
+
+
+  herr_t    H5Rcreate(void *ref, hid_t loc_id, char *name, H5R_type_t ref_type,  hid_t space_id)
+  hid_t     H5Rdereference(hid_t obj_id, H5R_type_t ref_type, void *ref)
+  hid_t     H5Rget_region(hid_t dataset, H5R_type_t ref_type, void *ref)
+  H5G_obj_t H5Rget_obj_type(hid_t id, H5R_type_t ref_type, void *ref)
+
+
+  ssize_t H5Rget_name(hid_t loc_id, H5R_type_t ref_type, void *ref, char *name, size_t size)
+
+# === H5S - Dataspaces ========================================================
+
+
+
+  # Basic operations
+  hid_t     H5Screate(H5S_class_t type)
+  hid_t     H5Scopy(hid_t space_id )
+  herr_t    H5Sclose(hid_t space_id)
+
+  # Simple dataspace operations
+  hid_t     H5Screate_simple(int rank, hsize_t *dims, hsize_t *maxdims)
+  htri_t    H5Sis_simple(hid_t space_id)
+  herr_t    H5Soffset_simple(hid_t space_id, hssize_t *offset )
+
+  int       H5Sget_simple_extent_ndims(hid_t space_id)
+  int       H5Sget_simple_extent_dims(hid_t space_id, hsize_t *dims, hsize_t *maxdims)
+  hssize_t  H5Sget_simple_extent_npoints(hid_t space_id)
+  H5S_class_t H5Sget_simple_extent_type(hid_t space_id)
+
+  # Extents
+  herr_t    H5Sextent_copy(hid_t dest_space_id, hid_t source_space_id )
+  herr_t    H5Sset_extent_simple(hid_t space_id, int rank, hsize_t *current_size, hsize_t *maximum_size )
+  herr_t    H5Sset_extent_none(hid_t space_id)
+
+  # Dataspace selection
+  H5S_sel_type H5Sget_select_type(hid_t space_id)
+  hssize_t  H5Sget_select_npoints(hid_t space_id)
+  herr_t    H5Sget_select_bounds(hid_t space_id, hsize_t *start, hsize_t *end)
+
+  herr_t    H5Sselect_all(hid_t space_id)
+  herr_t    H5Sselect_none(hid_t space_id)
+  htri_t    H5Sselect_valid(hid_t space_id)
+
+  hssize_t  H5Sget_select_elem_npoints(hid_t space_id)
+  herr_t    H5Sget_select_elem_pointlist(hid_t space_id, hsize_t startpoint,  hsize_t numpoints, hsize_t *buf)
+  herr_t    H5Sselect_elements(hid_t space_id, H5S_seloper_t op,  size_t num_elements, hsize_t **coord)
+
+  hssize_t  H5Sget_select_hyper_nblocks(hid_t space_id )
+  herr_t    H5Sget_select_hyper_blocklist(hid_t space_id,  hsize_t startblock, hsize_t numblocks, hsize_t *buf )
+  herr_t H5Sselect_hyperslab(hid_t space_id, H5S_seloper_t op,  hsize_t *start, hsize_t *_stride, hsize_t *count, hsize_t *_block)
+
+
+  herr_t  H5Sencode(hid_t obj_id, void *buf, size_t *nalloc)
+  hid_t   H5Sdecode(void *buf)
+
+
+# === H5T - Datatypes =========================================================
+
+
+
+  #hid_t H5P_DEFAULT
+
+
+
+  # --- Datatype operations ---------------------------------------------------
+
+  # General operations
+  hid_t         H5Tcreate(H5T_class_t type, size_t size)
+  hid_t         H5Topen(hid_t loc, char* name)
+  herr_t        H5Tcommit(hid_t loc_id, char* name, hid_t type)
+  htri_t        H5Tcommitted(hid_t type)
+  hid_t         H5Tcopy(hid_t type_id)
+  htri_t        H5Tequal(hid_t type_id1, hid_t type_id2 )
+  herr_t        H5Tlock(hid_t type_id)
+  H5T_class_t   H5Tget_class(hid_t type_id)
+  size_t        H5Tget_size(hid_t type_id)
+  hid_t         H5Tget_super(hid_t type)
+  htri_t        H5Tdetect_class(hid_t type_id, H5T_class_t dtype_class)
+  herr_t        H5Tclose(hid_t type_id)
+
+  hid_t         H5Tget_native_type(hid_t type_id, H5T_direction_t direction)
+
+  # Not for public API
+  herr_t        H5Tconvert(hid_t src_id, hid_t dst_id, size_t nelmts, void *buf, void *background, hid_t plist_id)
+
+  # Atomic datatypes
+  herr_t        H5Tset_size(hid_t type_id, size_t size)
+
+  H5T_order_t   H5Tget_order(hid_t type_id)
+  herr_t        H5Tset_order(hid_t type_id, H5T_order_t order)
+
+  hsize_t       H5Tget_precision(hid_t type_id)
+  herr_t        H5Tset_precision(hid_t type_id, size_t prec)
+
+  int           H5Tget_offset(hid_t type_id)
+  herr_t        H5Tset_offset(hid_t type_id, size_t offset)
+
+  herr_t        H5Tget_pad(hid_t type_id, H5T_pad_t * lsb, H5T_pad_t * msb )
+  herr_t        H5Tset_pad(hid_t type_id, H5T_pad_t lsb, H5T_pad_t msb )
+
+  H5T_sign_t    H5Tget_sign(hid_t type_id)
+  herr_t        H5Tset_sign(hid_t type_id, H5T_sign_t sign)
+
+  herr_t        H5Tget_fields(hid_t type_id, size_t *spos, size_t *epos, size_t *esize, size_t *mpos, size_t *msize )
+  herr_t        H5Tset_fields(hid_t type_id, size_t spos, size_t epos, size_t esize, size_t mpos, size_t msize )
+
+  size_t        H5Tget_ebias(hid_t type_id)
+  herr_t        H5Tset_ebias(hid_t type_id, size_t ebias)
+  H5T_norm_t    H5Tget_norm(hid_t type_id)
+  herr_t        H5Tset_norm(hid_t type_id, H5T_norm_t norm)
+  H5T_pad_t     H5Tget_inpad(hid_t type_id)
+  herr_t        H5Tset_inpad(hid_t type_id, H5T_pad_t inpad)
+  H5T_cset_t    H5Tget_cset(hid_t type_id)
+  herr_t        H5Tset_cset(hid_t type_id, H5T_cset_t cset)
+  H5T_str_t     H5Tget_strpad(hid_t type_id)
+  herr_t        H5Tset_strpad(hid_t type_id, H5T_str_t strpad)
+
+  # VLENs
+  hid_t     H5Tvlen_create(hid_t base_type_id)
+  htri_t    H5Tis_variable_str(hid_t dtype_id)
+
+  # Compound data types
+  int           H5Tget_nmembers(hid_t type_id)
+  H5T_class_t   H5Tget_member_class(hid_t type_id, int member_no)
+  char*         H5Tget_member_name(hid_t type_id, unsigned membno)
+  hid_t         H5Tget_member_type(hid_t type_id, unsigned membno)
+  int           H5Tget_member_offset(hid_t type_id, int membno)
+  int           H5Tget_member_index(hid_t type_id, char* name)
+  herr_t        H5Tinsert(hid_t parent_id, char *name, size_t offset, hid_t member_id)
+  herr_t        H5Tpack(hid_t type_id)
+
+  # Enumerated types
+  hid_t     H5Tenum_create(hid_t base_id)
+  herr_t    H5Tenum_insert(hid_t type, char *name, void *value)
+  herr_t    H5Tenum_nameof( hid_t type, void *value, char *name, size_t size )
+  herr_t    H5Tenum_valueof( hid_t type, char *name, void *value )
+  herr_t    H5Tget_member_value(hid_t type,  unsigned int memb_no, void *value )
+
+  # Array data types
+  hid_t H5Tarray_create(hid_t base_id, int ndims, hsize_t *dims, int *perm)
+  int   H5Tget_array_ndims(hid_t type_id)
+  int   H5Tget_array_dims(hid_t type_id, hsize_t *dims, int *perm)
+
+  # Opaque data types
+  herr_t    H5Tset_tag(hid_t type_id, char* tag)
+  char*     H5Tget_tag(hid_t type_id)
+
+  # 1.8-specific functions
+
+  hid_t H5Tdecode(unsigned char *buf)
+  herr_t H5Tencode(hid_t obj_id, unsigned char *buf, size_t *nalloc)
+
+  herr_t H5Tcommit2(hid_t loc_id, char *name, hid_t dtype_id, hid_t lcpl_id, hid_t tcpl_id, hid_t tapl_id)
+
+  H5T_conv_t H5Tfind(hid_t src_id, hid_t dst_id, H5T_cdata_t **pcdata)
+
+  herr_t    H5Tregister(H5T_pers_t pers, char *name, hid_t src_id, hid_t dst_id, H5T_conv_t func)
+  herr_t    H5Tunregister(H5T_pers_t pers, char *name, hid_t src_id, hid_t dst_id, H5T_conv_t func)
+
+
+
+# === H5Z - Filters ===========================================================
+
+
+
+
+    htri_t H5Zfilter_avail(H5Z_filter_t id_)
+    herr_t H5Zget_filter_info(H5Z_filter_t filter_, unsigned int *filter_config_flags)
+
+
+# === H5A - Attributes API ====================================================
+
+
+
+  hid_t     H5Acreate(hid_t loc_id, char *name, hid_t type_id, hid_t space_id, hid_t create_plist)
+  hid_t     H5Aopen_idx(hid_t loc_id, unsigned int idx)
+  hid_t     H5Aopen_name(hid_t loc_id, char *name)
+  herr_t    H5Aclose(hid_t attr_id)
+  herr_t    H5Adelete(hid_t loc_id, char *name)
+
+  herr_t    H5Aread(hid_t attr_id, hid_t mem_type_id, void *buf)
+  herr_t    H5Awrite(hid_t attr_id, hid_t mem_type_id, void *buf )
+
+  int       H5Aget_num_attrs(hid_t loc_id)
+  ssize_t   H5Aget_name(hid_t attr_id, size_t buf_size, char *buf)
+  hid_t     H5Aget_space(hid_t attr_id)
+  hid_t     H5Aget_type(hid_t attr_id)
+  herr_t    H5Aiterate(hid_t loc_id, unsigned * idx, H5A_operator_t op, void* op_data)
+
+
+
+  herr_t  H5Adelete_by_name(hid_t loc_id, char *obj_name, char *attr_name, hid_t lapl_id)
+  herr_t  H5Adelete_by_idx(hid_t loc_id, char *obj_name, H5_index_t idx_type, H5_iter_order_t order, hsize_t n, hid_t lapl_id)
+
+  hid_t H5Acreate_by_name(hid_t loc_id, char *obj_name, char *attr_name, hid_t type_id, hid_t space_id, hid_t acpl_id, hid_t aapl_id, hid_t lapl_id)
+
+  herr_t H5Aopen(hid_t obj_id, char *attr_name, hid_t aapl_id)
+  herr_t H5Aopen_by_name( hid_t loc_id, char *obj_name, char *attr_name, hid_t aapl_id, hid_t lapl_id)
+  herr_t H5Aopen_by_idx(hid_t loc_id, char *obj_name, H5_index_t idx_type, H5_iter_order_t order, hsize_t n, hid_t aapl_id, hid_t lapl_id)
+  htri_t H5Aexists_by_name( hid_t loc_id, char *obj_name, char *attr_name, hid_t lapl_id)
+  htri_t H5Aexists(hid_t obj_id, char *attr_name)
+
+  herr_t H5Arename(hid_t loc_id, char *old_attr_name, char *new_attr_name)
+  herr_t H5Arename_by_name(hid_t loc_id, char *obj_name, char *old_attr_name, char *new_attr_name, hid_t lapl_id)
+
+  herr_t H5Aget_info( hid_t attr_id, H5A_info_t *ainfo)
+  herr_t H5Aget_info_by_name(hid_t loc_id, char *obj_name, char *attr_name, H5A_info_t *ainfo, hid_t lapl_id)
+  herr_t H5Aget_info_by_idx(hid_t loc_id, char *obj_name, H5_index_t idx_type, H5_iter_order_t order, hsize_t n, H5A_info_t *ainfo, hid_t lapl_id)
+
+  herr_t H5Aiterate2(hid_t obj_id, H5_index_t idx_type, H5_iter_order_t order, hsize_t *n, H5A_operator2_t op, void *op_data)
+
+  hsize_t H5Aget_storage_size(hid_t attr_id)
+
+  MPI herr_t H5Pset_fapl_mpio(hid_t fapl_id, MPI_Comm comm, MPI_Info info)
+  MPI herr_t H5Pset_fapl_mpiposix(hid_t fapl_id, MPI_Comm comm, hbool_t hints)
+  MPI 1.8.9 herr_t H5Fset_mpi_atomicity(hid_t file_id, hbool_t flag)
+  MPI 1.8.9 herr_t H5Fget_mpi_atomicity(hid_t file_id, hbool_t *flag)
+
+hdf5_hl:
+# === H5DS - Dimension Scales API =============================================
+
+  herr_t  H5DSattach_scale(hid_t did, hid_t dsid, unsigned int idx)
+
+  herr_t  H5DSdetach_scale(hid_t did, hid_t dsid, unsigned int idx)
+
+  herr_t  H5DSset_scale(hid_t dsid, char *dimname)
+
+  int H5DSget_num_scales(hid_t did, unsigned int dim)
+
+  herr_t  H5DSset_label(hid_t did, unsigned int idx, char *label)
+
+  ssize_t H5DSget_label(hid_t did, unsigned int idx, char *label, size_t size)
+
+  ssize_t H5DSget_scale_name(hid_t did, char *name, size_t size)
+
+  htri_t H5DSis_scale(hid_t did)
+
+  herr_t  H5DSiterate_scales(hid_t did, unsigned int dim, int *idx, H5DS_iterate_t visitor, void *visitor_data)
+
+  htri_t H5DSis_attached(hid_t did, hid_t dsid, unsigned int idx)
diff --git a/h5py/api_types_ext.pxd b/h5py/api_types_ext.pxd
new file mode 100644
index 0000000..b9b7b55
--- /dev/null
+++ b/h5py/api_types_ext.pxd
@@ -0,0 +1,74 @@
+# This file is part of h5py, a Python interface to the HDF5 library.
+#
+# http://www.h5py.org
+#
+# Copyright 2008-2013 Andrew Collette and contributors
+#
+# License:  Standard 3-clause BSD; see "license.txt" for full license terms
+#           and contributor agreement.
+
+# === Standard C library types and functions ==================================
+
+include 'config.pxi'
+
+IF MPI:
+    from mpi4py.MPI cimport MPI_Comm, MPI_Info, Comm, Info
+
+cdef extern from "stdlib.h":
+  ctypedef long size_t
+  void *malloc(size_t size)
+  void free(void *ptr)
+
+cdef extern from "string.h":
+  size_t strlen(char* s)
+  char *strchr(char *s, int c)
+  char *strcpy(char *dest, char *src)
+  char *strncpy(char *dest, char *src, size_t n)
+  int strcmp(char *s1, char *s2)
+  char *strdup(char *s)
+  void *memcpy(void *dest, void *src, size_t n)
+  void *memset(void *s, int c, size_t n)
+
+cdef extern from "time.h":
+  ctypedef int time_t
+
+IF UNAME_SYSNAME != "Windows":
+  cdef extern from "unistd.h":
+    ctypedef long ssize_t
+ELSE:
+  ctypedef long ssize_t
+
+cdef extern from "stdint.h":
+  ctypedef signed char int8_t
+  ctypedef unsigned char uint8_t
+  ctypedef signed int int16_t
+  ctypedef unsigned int uint16_t
+  ctypedef signed long int int32_t
+  ctypedef unsigned long int uint32_t
+  ctypedef signed long long int int64_t
+  ctypedef signed long long int uint64_t 
+
+# Can't use Cython defs because they keep moving them around
+cdef extern from "Python.h":
+  ctypedef void PyObject
+  ctypedef ssize_t Py_ssize_t
+
+  PyObject* PyErr_Occurred()
+  void PyErr_SetString(object type, char *message)
+  object PyBytes_FromStringAndSize(char *v, Py_ssize_t len)
+
+# === Compatibility definitions and macros for h5py ===========================
+
+cdef extern from "api_compat.h":
+
+  size_t h5py_size_n64
+  size_t h5py_size_n128
+  size_t h5py_offset_n64_real
+  size_t h5py_offset_n64_imag
+  size_t h5py_offset_n128_real
+  size_t h5py_offset_n128_imag
+
+cdef extern from "lzf_filter.h":
+
+  int H5PY_FILTER_LZF
+  int register_lzf() except *
diff --git a/h5py/api_types_hdf5.pxd b/h5py/api_types_hdf5.pxd
new file mode 100644
index 0000000..7a0b13a
--- /dev/null
+++ b/h5py/api_types_hdf5.pxd
@@ -0,0 +1,754 @@
+# This file is part of h5py, a Python interface to the HDF5 library.
+#
+# http://www.h5py.org
+#
+# Copyright 2008-2013 Andrew Collette and contributors
+#
+# License:  Standard 3-clause BSD; see "license.txt" for full license terms
+#           and contributor agreement.
+
+from api_types_ext cimport *
+
+cdef extern from "hdf5.h":
+  # Basic types
+  ctypedef int hid_t
+  ctypedef int hbool_t
+  ctypedef int herr_t
+  ctypedef int htri_t
+  ctypedef long long hsize_t
+  ctypedef signed long long hssize_t
+  ctypedef signed long long haddr_t
+
+  ctypedef struct hvl_t:
+    size_t len                 # Length of VL data (in base type units)
+    void *p                    # Pointer to VL data
+
+  int HADDR_UNDEF
+
+  # New in 1.8.X
+  ctypedef enum H5_iter_order_t:
+    H5_ITER_UNKNOWN = -1,       # Unknown order
+    H5_ITER_INC,                # Increasing order
+    H5_ITER_DEC,                # Decreasing order
+    H5_ITER_NATIVE,             # No particular order, whatever is fastest
+    H5_ITER_N                   # Number of iteration orders
+
+  ctypedef enum H5_index_t:
+    H5_INDEX_UNKNOWN = -1,      # Unknown index type
+    H5_INDEX_NAME,              # Index on names
+    H5_INDEX_CRT_ORDER,         # Index on creation order
+    H5_INDEX_N                  # Number of indices defined
+
+# === H5D - Dataset API =======================================================
+
+  ctypedef enum H5D_layout_t:
+    H5D_LAYOUT_ERROR    = -1,
+    H5D_COMPACT         = 0,
+    H5D_CONTIGUOUS      = 1,
+    H5D_CHUNKED         = 2,
+    H5D_NLAYOUTS        = 3
+
+  ctypedef enum H5D_alloc_time_t:
+    H5D_ALLOC_TIME_ERROR    =-1,
+    H5D_ALLOC_TIME_DEFAULT  =0,
+    H5D_ALLOC_TIME_EARLY    =1,
+    H5D_ALLOC_TIME_LATE        =2,
+    H5D_ALLOC_TIME_INCR        =3
+
+  ctypedef enum H5D_space_status_t:
+    H5D_SPACE_STATUS_ERROR            =-1,
+    H5D_SPACE_STATUS_NOT_ALLOCATED    =0,
+    H5D_SPACE_STATUS_PART_ALLOCATED    =1,
+    H5D_SPACE_STATUS_ALLOCATED        =2
+
+  ctypedef enum H5D_fill_time_t:
+    H5D_FILL_TIME_ERROR    =-1,
+    H5D_FILL_TIME_ALLOC =0,
+    H5D_FILL_TIME_NEVER    =1,
+    H5D_FILL_TIME_IFSET    =2
+
+  ctypedef enum H5D_fill_value_t:
+    H5D_FILL_VALUE_ERROR        =-1,
+    H5D_FILL_VALUE_UNDEFINED    =0,
+    H5D_FILL_VALUE_DEFAULT      =1,
+    H5D_FILL_VALUE_USER_DEFINED =2
+
+  ctypedef  herr_t (*H5D_operator_t)(void *elem, hid_t type_id, unsigned ndim,
+                    hsize_t *point, void *operator_data) except -1
+
+# === H5F - File API ==========================================================
+
+  # File constants
+  cdef enum:
+    H5F_ACC_TRUNC
+    H5F_ACC_RDONLY
+    H5F_ACC_RDWR
+    H5F_ACC_EXCL
+    H5F_ACC_DEBUG
+    H5F_ACC_CREAT
+
+  # The difference between a single file and a set of mounted files
+  cdef enum H5F_scope_t:
+    H5F_SCOPE_LOCAL     = 0,    # specified file handle only
+    H5F_SCOPE_GLOBAL    = 1,    # entire virtual file
+    H5F_SCOPE_DOWN      = 2     # for internal use only
+
+  cdef enum H5F_close_degree_t:
+    H5F_CLOSE_WEAK  = 0,
+    H5F_CLOSE_SEMI  = 1,
+    H5F_CLOSE_STRONG = 2,
+    H5F_CLOSE_DEFAULT = 3
+
+  int H5F_OBJ_FILE
+  int H5F_OBJ_DATASET
+  int H5F_OBJ_GROUP
+  int H5F_OBJ_DATATYPE
+  int H5F_OBJ_ATTR
+  int H5F_OBJ_ALL
+  int H5F_OBJ_LOCAL
+
+  ctypedef enum H5F_libver_t:
+    H5F_LIBVER_EARLIEST        #/* Use the earliest possible format for storing objects */
+    H5F_LIBVER_LATEST          #/* Use the latest possible format available for storing objects*/
+
+# === H5FD - Low-level file descriptor API ====================================
+
+  ctypedef enum H5FD_mem_t:
+    H5FD_MEM_NOLIST    = -1,
+    H5FD_MEM_DEFAULT    = 0,
+    H5FD_MEM_SUPER      = 1,
+    H5FD_MEM_BTREE      = 2,
+    H5FD_MEM_DRAW       = 3,
+    H5FD_MEM_GHEAP      = 4,
+    H5FD_MEM_LHEAP      = 5,
+    H5FD_MEM_OHDR       = 6,
+    H5FD_MEM_NTYPES
+
+  # HDF5 uses a clever scheme wherein these are actually init() calls
+  # Hopefully Cython won't have a problem with this.
+  # Thankfully they are defined but -1 if unavailable
+  hid_t H5FD_CORE
+  hid_t H5FD_FAMILY
+# hid_t H5FD_GASS  not in 1.8.X
+  hid_t H5FD_LOG
+  hid_t H5FD_MPIO
+  hid_t H5FD_MULTI
+  hid_t H5FD_SEC2
+  hid_t H5FD_STDIO
+
+  int H5FD_LOG_LOC_READ   # 0x0001
+  int H5FD_LOG_LOC_WRITE  # 0x0002
+  int H5FD_LOG_LOC_SEEK   # 0x0004
+  int H5FD_LOG_LOC_IO     # (H5FD_LOG_LOC_READ|H5FD_LOG_LOC_WRITE|H5FD_LOG_LOC_SEEK)
+
+  # Flags for tracking number of times each byte is read/written
+  int H5FD_LOG_FILE_READ  # 0x0008
+  int H5FD_LOG_FILE_WRITE # 0x0010
+  int H5FD_LOG_FILE_IO    # (H5FD_LOG_FILE_READ|H5FD_LOG_FILE_WRITE)
+
+  # Flag for tracking "flavor" (type) of information stored at each byte
+  int H5FD_LOG_FLAVOR     # 0x0020
+
+  # Flags for tracking total number of reads/writes/seeks
+  int H5FD_LOG_NUM_READ   # 0x0040
+  int H5FD_LOG_NUM_WRITE  # 0x0080
+  int H5FD_LOG_NUM_SEEK   # 0x0100
+  int H5FD_LOG_NUM_IO     # (H5FD_LOG_NUM_READ|H5FD_LOG_NUM_WRITE|H5FD_LOG_NUM_SEEK)
+
+  # Flags for tracking time spent in open/read/write/seek/close
+  int H5FD_LOG_TIME_OPEN  # 0x0200        # Not implemented yet
+  int H5FD_LOG_TIME_READ  # 0x0400        # Not implemented yet
+  int H5FD_LOG_TIME_WRITE # 0x0800        # Partially implemented (need to track total time)
+  int H5FD_LOG_TIME_SEEK  # 0x1000        # Partially implemented (need to track total time & track time for seeks during reading)
+  int H5FD_LOG_TIME_CLOSE # 0x2000        # Fully implemented
+  int H5FD_LOG_TIME_IO    # (H5FD_LOG_TIME_OPEN|H5FD_LOG_TIME_READ|H5FD_LOG_TIME_WRITE|H5FD_LOG_TIME_SEEK|H5FD_LOG_TIME_CLOSE)
+
+  # Flag for tracking allocation of space in file
+  int H5FD_LOG_ALLOC      # 0x4000
+  int H5FD_LOG_ALL        # (H5FD_LOG_ALLOC|H5FD_LOG_TIME_IO|H5FD_LOG_NUM_IO|H5FD_LOG_FLAVOR|H5FD_LOG_FILE_IO|H5FD_LOG_LOC_IO)
+
+# === H5G - Groups API ========================================================
+
+  ctypedef enum H5G_link_t:
+    H5G_LINK_ERROR      = -1,
+    H5G_LINK_HARD       = 0,
+    H5G_LINK_SOFT       = 1
+
+  cdef enum H5G_obj_t:
+    H5G_UNKNOWN = -1,           # Unknown object type
+    H5G_LINK,                   # Object is a symbolic link
+    H5G_GROUP,                  # Object is a group
+    H5G_DATASET,                # Object is a dataset
+    H5G_TYPE,                   # Object is a named data type
+
+  ctypedef struct H5G_stat_t:
+    unsigned long fileno[2]
+    unsigned long objno[2]
+    unsigned int nlink
+    H5G_obj_t type              # new in HDF5 1.6
+    time_t mtime
+    size_t linklen
+    #H5O_stat_t ohdr            # Object header information. New in HDF5 1.6
+
+  ctypedef herr_t (*H5G_iterate_t)(hid_t group, char *name, void* op_data) except 2
+
+  ctypedef enum H5G_storage_type_t:
+      H5G_STORAGE_TYPE_UNKNOWN = -1,
+      H5G_STORAGE_TYPE_SYMBOL_TABLE,
+      H5G_STORAGE_TYPE_COMPACT,
+      H5G_STORAGE_TYPE_DENSE
+
+  ctypedef struct H5G_info_t:
+      H5G_storage_type_t     storage_type
+      hsize_t     nlinks
+      int64_t     max_corder
+
+# === H5I - Identifier and reflection interface ===============================
+
+  ctypedef enum H5I_type_t:
+    H5I_BADID        = -1,  # invalid Group
+    H5I_FILE        = 1,    # group ID for File objects
+    H5I_GROUP,              # group ID for Group objects
+    H5I_DATATYPE,           # group ID for Datatype objects
+    H5I_DATASPACE,          # group ID for Dataspace objects
+    H5I_DATASET,            # group ID for Dataset objects
+    H5I_ATTR,               # group ID for Attribute objects
+    H5I_REFERENCE,          # group ID for Reference objects
+    H5I_VFL,                # group ID for virtual file layer
+    H5I_GENPROP_CLS,        # group ID for generic property list classes
+    H5I_GENPROP_LST,        # group ID for generic property lists
+    H5I_NGROUPS             # number of valid groups, MUST BE LAST!
+
+# === H5L/H5O - Links interface (1.8.X only) ======================================
+
+  # TODO: put both versions in h5t.pxd
+  ctypedef enum H5T_cset_t:
+    H5T_CSET_ERROR       = -1,  #
+    H5T_CSET_ASCII       = 0,   # US ASCII
+    H5T_CSET_UTF8        = 1,   # UTF-8 Unicode encoding
+
+  unsigned int H5L_MAX_LINK_NAME_LEN #  ((uint32_t) (-1)) (4GB - 1)
+
+  # Link class types.
+  # * Values less than 64 are reserved for the HDF5 library's internal use.
+  # * Values 64 to 255 are for "user-defined" link class types; these types are
+  # * defined by HDF5 but their behavior can be overridden by users.
+  # * Users who want to create new classes of links should contact the HDF5
+  # * development team at hdfhelp at ncsa.uiuc.edu .
+  # * These values can never change because they appear in HDF5 files.
+  #
+  ctypedef enum H5L_type_t:
+    H5L_TYPE_ERROR = (-1),      #  Invalid link type id
+    H5L_TYPE_HARD = 0,          #  Hard link id
+    H5L_TYPE_SOFT = 1,          #  Soft link id
+    H5L_TYPE_EXTERNAL = 64,     #  External link id
+    H5L_TYPE_MAX = 255          #  Maximum link type id
+
+  #  Information struct for link (for H5Lget_info/H5Lget_info_by_idx)
+  cdef union _add_u:
+    haddr_t address   #  Address hard link points to
+    size_t val_size   #  Size of a soft link or UD link value
+
+  ctypedef struct H5L_info_t:
+    H5L_type_t  type            #  Type of link
+    hbool_t     corder_valid    #  Indicate if creation order is valid
+    int64_t     corder          #  Creation order
+    H5T_cset_t  cset            #  Character set of link name
+    _add_u u
+
+  #  Prototype for H5Literate/H5Literate_by_name() operator
+  ctypedef herr_t (*H5L_iterate_t) (hid_t group, char *name, H5L_info_t *info,
+                    void *op_data) except 2
+
+  ctypedef uint32_t H5O_msg_crt_idx_t
+
+  ctypedef enum H5O_type_t:
+    H5O_TYPE_UNKNOWN = -1,      # Unknown object type
+    H5O_TYPE_GROUP,             # Object is a group
+    H5O_TYPE_DATASET,           # Object is a dataset
+    H5O_TYPE_NAMED_DATATYPE,    # Object is a named data type
+    H5O_TYPE_NTYPES             # Number of different object types (must be last!)
+
+  unsigned int H5O_COPY_SHALLOW_HIERARCHY_FLAG    # (0x0001u) Copy only immediate members
+  unsigned int H5O_COPY_EXPAND_SOFT_LINK_FLAG     # (0x0002u) Expand soft links into new objects
+  unsigned int H5O_COPY_EXPAND_EXT_LINK_FLAG      # (0x0004u) Expand external links into new objects
+  unsigned int H5O_COPY_EXPAND_REFERENCE_FLAG     # (0x0008u) Copy objects that are pointed by references
+  unsigned int H5O_COPY_WITHOUT_ATTR_FLAG         # (0x0010u) Copy object without copying attributes
+  unsigned int H5O_COPY_PRESERVE_NULL_FLAG        # (0x0020u) Copy NULL messages (empty space)
+  unsigned int H5O_COPY_ALL                       # (0x003Fu) All object copying flags (for internal checking)
+
+  # --- Components for the H5O_info_t struct ----------------------------------
+
+  ctypedef struct space:
+    hsize_t total           #  Total space for storing object header in file
+    hsize_t meta            #  Space within header for object header metadata information
+    hsize_t mesg            #  Space within header for actual message information
+    hsize_t free            #  Free space within object header
+
+  ctypedef struct mesg:
+    unsigned long present   #  Flags to indicate presence of message type in header
+    unsigned long shared    #  Flags to indicate message type is shared in header
+
+  ctypedef struct hdr:
+    unsigned version        #  Version number of header format in file
+    unsigned nmesgs         #  Number of object header messages
+    unsigned nchunks        #  Number of object header chunks
+    unsigned flags          #  Object header status flags
+    space space
+    mesg mesg
+
+  ctypedef struct H5_ih_info_t:
+    hsize_t     index_size,  # btree and/or list
+    hsize_t     heap_size
+
+  cdef struct meta_size:
+    H5_ih_info_t   obj,    #        v1/v2 B-tree & local/fractal heap for groups, B-tree for chunked datasets
+    H5_ih_info_t   attr    #        v2 B-tree & heap for attributes
+
+  ctypedef struct H5O_info_t:
+    unsigned long   fileno      #  File number that object is located in
+    haddr_t         addr        #  Object address in file
+    H5O_type_t      type        #  Basic object type (group, dataset, etc.)
+    unsigned        rc          #  Reference count of object
+    time_t          atime       #  Access time
+    time_t          mtime       #  Modification time
+    time_t          ctime       #  Change time
+    time_t          btime       #  Birth time
+    hsize_t         num_attrs   #  # of attributes attached to object
+    hdr             hdr
+    meta_size       meta_size
+
+  ctypedef herr_t (*H5O_iterate_t)(hid_t obj, char *name, H5O_info_t *info,
+                    void *op_data) except 2
+
+# === H5P - Property list API =================================================
+
+  int H5P_DEFAULT
+
+  ctypedef int H5Z_filter_t
+
+  # HDF5 layouts
+  ctypedef enum H5D_layout_t:
+    H5D_LAYOUT_ERROR    = -1,
+    H5D_COMPACT         = 0,    # raw data is very small
+    H5D_CONTIGUOUS      = 1,    # the default
+    H5D_CHUNKED         = 2,    # slow and fancy
+    H5D_NLAYOUTS        = 3     # this one must be last!
+
+  ctypedef enum H5D_alloc_time_t:
+    H5D_ALLOC_TIME_ERROR    =-1,
+    H5D_ALLOC_TIME_DEFAULT  =0,
+    H5D_ALLOC_TIME_EARLY    =1,
+    H5D_ALLOC_TIME_LATE        =2,
+    H5D_ALLOC_TIME_INCR        =3
+
+  ctypedef enum H5D_space_status_t:
+    H5D_SPACE_STATUS_ERROR            =-1,
+    H5D_SPACE_STATUS_NOT_ALLOCATED    =0,
+    H5D_SPACE_STATUS_PART_ALLOCATED    =1,
+    H5D_SPACE_STATUS_ALLOCATED        =2
+
+  ctypedef enum H5D_fill_time_t:
+    H5D_FILL_TIME_ERROR    =-1,
+    H5D_FILL_TIME_ALLOC =0,
+    H5D_FILL_TIME_NEVER    =1,
+    H5D_FILL_TIME_IFSET    =2
+
+  ctypedef enum H5D_fill_value_t:
+    H5D_FILL_VALUE_ERROR        =-1,
+    H5D_FILL_VALUE_UNDEFINED    =0,
+    H5D_FILL_VALUE_DEFAULT      =1,
+    H5D_FILL_VALUE_USER_DEFINED =2
+
+  cdef enum H5Z_EDC_t:
+    H5Z_ERROR_EDC       = -1,
+    H5Z_DISABLE_EDC     = 0,
+    H5Z_ENABLE_EDC      = 1,
+    H5Z_NO_EDC          = 2
+
+  cdef enum H5F_close_degree_t:
+    H5F_CLOSE_WEAK  = 0,
+    H5F_CLOSE_SEMI  = 1,
+    H5F_CLOSE_STRONG = 2,
+    H5F_CLOSE_DEFAULT = 3
+
+  ctypedef enum H5FD_mem_t:
+    H5FD_MEM_NOLIST    = -1,
+    H5FD_MEM_DEFAULT    = 0,
+    H5FD_MEM_SUPER      = 1,
+    H5FD_MEM_BTREE      = 2,
+    H5FD_MEM_DRAW       = 3,
+    H5FD_MEM_GHEAP      = 4,
+    H5FD_MEM_LHEAP      = 5,
+    H5FD_MEM_OHDR       = 6,
+    H5FD_MEM_NTYPES
+
+  # Property list classes
+  hid_t H5P_NO_CLASS
+  hid_t H5P_FILE_CREATE
+  hid_t H5P_FILE_ACCESS
+  hid_t H5P_DATASET_CREATE
+  hid_t H5P_DATASET_ACCESS
+  hid_t H5P_DATASET_XFER
+
+  hid_t H5P_OBJECT_CREATE
+  hid_t H5P_OBJECT_COPY
+  hid_t H5P_LINK_CREATE
+  hid_t H5P_LINK_ACCESS
+  hid_t H5P_GROUP_CREATE
+  hid_t H5P_CRT_ORDER_TRACKED
+  hid_t H5P_CRT_ORDER_INDEXED
+
+# === H5R - Reference API =====================================================
+
+  size_t H5R_DSET_REG_REF_BUF_SIZE
+  size_t H5R_OBJ_REF_BUF_SIZE
+
+  ctypedef enum H5R_type_t:
+    H5R_BADTYPE = (-1),
+    H5R_OBJECT,
+    H5R_DATASET_REGION,
+    H5R_INTERNAL,
+    H5R_MAXTYPE
+
+# === H5S - Dataspaces ========================================================
+
+  int H5S_ALL, H5S_MAX_RANK
+  hsize_t H5S_UNLIMITED
+
+  # Codes for defining selections
+  ctypedef enum H5S_seloper_t:
+    H5S_SELECT_NOOP      = -1,
+    H5S_SELECT_SET       = 0,
+    H5S_SELECT_OR,
+    H5S_SELECT_AND,
+    H5S_SELECT_XOR,
+    H5S_SELECT_NOTB,
+    H5S_SELECT_NOTA,
+    H5S_SELECT_APPEND,
+    H5S_SELECT_PREPEND,
+    H5S_SELECT_INVALID    # Must be the last one
+
+  ctypedef enum H5S_class_t:
+    H5S_NO_CLASS         = -1,  #/*error
+    H5S_SCALAR           = 0,   #/*scalar variable
+    H5S_SIMPLE           = 1,   #/*simple data space
+    H5S_NULL             = 2,   # NULL data space
+    # no longer defined in 1.8
+    #H5S_COMPLEX          = 2    #/*complex data space
+
+  ctypedef enum H5S_sel_type:
+    H5S_SEL_ERROR    = -1,         #Error
+    H5S_SEL_NONE    = 0,        #Nothing selected
+    H5S_SEL_POINTS    = 1,        #Sequence of points selected
+    H5S_SEL_HYPERSLABS  = 2,    #"New-style" hyperslab selection defined
+    H5S_SEL_ALL        = 3,        #Entire extent selected
+    H5S_SEL_N        = 4            #/*THIS MUST BE LAST
+
+# === H5T - Datatypes =========================================================
+
+  # --- Enumerated constants --------------------------------------------------
+
+  # Byte orders
+  ctypedef enum H5T_order_t:
+    H5T_ORDER_ERROR      = -1,  # error
+    H5T_ORDER_LE         = 0,   # little endian
+    H5T_ORDER_BE         = 1,   # bit endian
+    H5T_ORDER_VAX        = 2,   # VAX mixed endian
+    H5T_ORDER_NONE       = 3    # no particular order (strings, bits,..)
+
+  # HDF5 signed enums
+  ctypedef enum H5T_sign_t:
+    H5T_SGN_ERROR        = -1,  # error
+    H5T_SGN_NONE         = 0,   # this is an unsigned type
+    H5T_SGN_2            = 1,   # two's complement
+    H5T_NSGN             = 2    # this must be last!
+
+  ctypedef enum H5T_norm_t:
+    H5T_NORM_ERROR       = -1,
+    H5T_NORM_IMPLIED     = 0,
+    H5T_NORM_MSBSET      = 1,
+    H5T_NORM_NONE        = 2
+
+  ctypedef enum H5T_cset_t:
+    H5T_CSET_ERROR       = -1,
+    H5T_CSET_ASCII       = 0
+
+  ctypedef enum H5T_str_t:
+    H5T_STR_ERROR        = -1,
+    H5T_STR_NULLTERM     = 0,
+    H5T_STR_NULLPAD      = 1,
+    H5T_STR_SPACEPAD     = 2
+
+  # Atomic datatype padding
+  ctypedef enum H5T_pad_t:
+    H5T_PAD_ZERO        = 0,
+    H5T_PAD_ONE         = 1,
+    H5T_PAD_BACKGROUND  = 2
+
+  # HDF5 type classes
+  cdef enum H5T_class_t:
+    H5T_NO_CLASS         = -1,  # error
+    H5T_INTEGER          = 0,   # integer types
+    H5T_FLOAT            = 1,   # floating-point types
+    H5T_TIME             = 2,   # date and time types
+    H5T_STRING           = 3,   # character string types
+    H5T_BITFIELD         = 4,   # bit field types
+    H5T_OPAQUE           = 5,   # opaque types
+    H5T_COMPOUND         = 6,   # compound types
+    H5T_REFERENCE        = 7,   # reference types
+    H5T_ENUM             = 8,   # enumeration types
+    H5T_VLEN             = 9,   # variable-length types
+    H5T_ARRAY            = 10,  # array types
+    H5T_NCLASSES                # this must be last
+
+  # Native search direction
+  cdef enum H5T_direction_t:
+    H5T_DIR_DEFAULT,
+    H5T_DIR_ASCEND,
+    H5T_DIR_DESCEND
+
+  # For vlen strings
+  cdef size_t H5T_VARIABLE
+
+  # --- Predefined datatypes --------------------------------------------------
+
+  cdef enum:
+    H5T_NATIVE_B8
+    H5T_NATIVE_CHAR
+    H5T_NATIVE_SCHAR
+    H5T_NATIVE_UCHAR
+    H5T_NATIVE_SHORT
+    H5T_NATIVE_USHORT
+    H5T_NATIVE_INT
+    H5T_NATIVE_UINT
+    H5T_NATIVE_LONG
+    H5T_NATIVE_ULONG
+    H5T_NATIVE_LLONG
+    H5T_NATIVE_ULLONG
+    H5T_NATIVE_FLOAT
+    H5T_NATIVE_DOUBLE
+    H5T_NATIVE_LDOUBLE
+
+  # "Standard" types
+  cdef enum:
+    H5T_STD_I8LE
+    H5T_STD_I16LE
+    H5T_STD_I32LE
+    H5T_STD_I64LE
+    H5T_STD_U8LE
+    H5T_STD_U16LE
+    H5T_STD_U32LE
+    H5T_STD_U64LE
+    H5T_STD_B8LE
+    H5T_STD_B16LE
+    H5T_STD_B32LE
+    H5T_STD_B64LE
+    H5T_IEEE_F32LE
+    H5T_IEEE_F64LE
+    H5T_STD_I8BE
+    H5T_STD_I16BE
+    H5T_STD_I32BE
+    H5T_STD_I64BE
+    H5T_STD_U8BE
+    H5T_STD_U16BE
+    H5T_STD_U32BE
+    H5T_STD_U64BE
+    H5T_STD_B8BE
+    H5T_STD_B16BE
+    H5T_STD_B32BE
+    H5T_STD_B64BE
+    H5T_IEEE_F32BE
+    H5T_IEEE_F64BE
+
+  cdef enum:
+    H5T_NATIVE_INT8
+    H5T_NATIVE_UINT8
+    H5T_NATIVE_INT16
+    H5T_NATIVE_UINT16
+    H5T_NATIVE_INT32
+    H5T_NATIVE_UINT32
+    H5T_NATIVE_INT64
+    H5T_NATIVE_UINT64
+
+  # Unix time types
+  cdef enum:
+    H5T_UNIX_D32LE
+    H5T_UNIX_D64LE
+    H5T_UNIX_D32BE
+    H5T_UNIX_D64BE
+
+  # String types
+  cdef enum:
+    H5T_FORTRAN_S1
+    H5T_C_S1
+
+  # References
+  cdef enum:
+    H5T_STD_REF_OBJ
+    H5T_STD_REF_DSETREG
+
+  # Type-conversion infrastructure
+
+  ctypedef enum H5T_pers_t:
+    H5T_PERS_DONTCARE	= -1,
+    H5T_PERS_HARD	= 0,	    # /*hard conversion function		     */
+    H5T_PERS_SOFT	= 1 	    # /*soft conversion function		     */
+
+  ctypedef enum H5T_cmd_t:
+    H5T_CONV_INIT	= 0,	#/*query and/or initialize private data	     */
+    H5T_CONV_CONV	= 1, 	#/*convert data from source to dest datatype */
+    H5T_CONV_FREE	= 2	    #/*function is being removed from path	     */
+
+  ctypedef enum H5T_bkg_t:
+    H5T_BKG_NO		= 0, 	#/*background buffer is not needed, send NULL */
+    H5T_BKG_TEMP	= 1,	#/*bkg buffer used as temp storage only       */
+    H5T_BKG_YES		= 2	    #/*init bkg buf with data before conversion   */
+
+  ctypedef struct H5T_cdata_t:
+    H5T_cmd_t		command     # /*what should the conversion function do?    */
+    H5T_bkg_t		need_bkg   #/*is the background buffer needed?	     */
+    hbool_t		recalc	        # /*recalculate private data		     */
+    void		*priv	        # /*private data				     */
+
+  ctypedef struct hvl_t:
+      size_t len # /* Length of VL data (in base type units) */
+      void *p    #/* Pointer to VL data */
+
+  ctypedef herr_t (*H5T_conv_t)(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
+      size_t nelmts, size_t buf_stride, size_t bkg_stride, void *buf,
+      void *bkg, hid_t dset_xfer_plist) except -1
+
+# === H5Z - Filters ===========================================================
+
+  ctypedef int H5Z_filter_t
+
+  int H5Z_FILTER_ERROR
+  int H5Z_FILTER_NONE
+  int H5Z_FILTER_ALL
+  int H5Z_FILTER_DEFLATE
+  int H5Z_FILTER_SHUFFLE
+  int H5Z_FILTER_FLETCHER32
+  int H5Z_FILTER_SZIP
+  int H5Z_FILTER_NBIT
+  int H5Z_FILTER_SCALEOFFSET
+  int H5Z_FILTER_RESERVED
+  int H5Z_FILTER_MAX
+  int H5Z_MAX_NFILTERS
+
+  int H5Z_FLAG_DEFMASK
+  int H5Z_FLAG_MANDATORY
+  int H5Z_FLAG_OPTIONAL
+
+  int H5Z_FLAG_INVMASK
+  int H5Z_FLAG_REVERSE
+  int H5Z_FLAG_SKIP_EDC
+
+  int H5_SZIP_ALLOW_K13_OPTION_MASK   #1
+  int H5_SZIP_CHIP_OPTION_MASK        #2
+  int H5_SZIP_EC_OPTION_MASK          #4
+  int H5_SZIP_NN_OPTION_MASK          #32
+  int H5_SZIP_MAX_PIXELS_PER_BLOCK    #32
+
+  int H5Z_SO_INT_MINBITS_DEFAULT
+
+  int H5Z_FILTER_CONFIG_ENCODE_ENABLED #(0x0001)
+  int H5Z_FILTER_CONFIG_DECODE_ENABLED #(0x0002)
+
+  cdef enum H5Z_EDC_t:
+      H5Z_ERROR_EDC       = -1,
+      H5Z_DISABLE_EDC     = 0,
+      H5Z_ENABLE_EDC      = 1,
+      H5Z_NO_EDC          = 2
+
+  cdef enum H5Z_SO_scale_type_t:
+      H5Z_SO_FLOAT_DSCALE = 0,
+      H5Z_SO_FLOAT_ESCALE = 1,
+      H5Z_SO_INT          = 2
+
+# === H5A - Attributes API ====================================================
+
+  ctypedef herr_t (*H5A_operator_t)(hid_t loc_id, char *attr_name, void* operator_data) except 2
+
+  ctypedef struct H5A_info_t:
+    hbool_t corder_valid          # Indicate if creation order is valid
+    H5O_msg_crt_idx_t corder      # Creation order
+    H5T_cset_t        cset        # Character set of attribute name
+    hsize_t           data_size   # Size of raw data
+
+  ctypedef herr_t (*H5A_operator2_t)(hid_t location_id, char *attr_name,
+          H5A_info_t *ainfo, void *op_data) except 2
+
+
+
+#  === H5AC - Attribute Cache configuration API ================================
+
+
+  unsigned int H5AC__CURR_CACHE_CONFIG_VERSION  # 	1
+  # I don't really understand why this works, but
+  # https://groups.google.com/forum/?fromgroups#!topic/cython-users/-fLG08E5lYM
+  # suggests it and it _does_ work
+  enum: H5AC__MAX_TRACE_FILE_NAME_LEN	#	1024
+
+  unsigned int H5AC_METADATA_WRITE_STRATEGY__PROCESS_0_ONLY   # 0
+  unsigned int H5AC_METADATA_WRITE_STRATEGY__DISTRIBUTED      # 1
+
+
+  cdef extern from "H5Cpublic.h":
+  # === H5C - Cache configuration API ================================
+    cdef enum H5C_cache_incr_mode:
+      H5C_incr__off,
+      H5C_incr__threshold,
+
+
+    cdef enum H5C_cache_flash_incr_mode:
+      H5C_flash_incr__off,
+      H5C_flash_incr__add_space
+
+
+    cdef enum H5C_cache_decr_mode:
+      H5C_decr__off,
+      H5C_decr__threshold,
+      H5C_decr__age_out,
+      H5C_decr__age_out_with_threshold
+
+    ctypedef struct H5AC_cache_config_t:
+      #     /* general configuration fields: */
+      int version
+      hbool_t rpt_fcn_enabled
+      hbool_t evictions_enabled
+      hbool_t set_initial_size
+      size_t initial_size
+      double min_clean_fraction
+      size_t max_size
+      size_t min_size
+      long int epoch_length
+      #    /* size increase control fields: */
+      H5C_cache_incr_mode incr_mode
+      double lower_hr_threshold
+      double increment
+      hbool_t apply_max_increment
+      size_t max_increment
+      H5C_cache_flash_incr_mode flash_incr_mode
+      double flash_multiple
+      double flash_threshold
+      # /* size decrease control fields: */
+      H5C_cache_decr_mode decr_mode
+      double upper_hr_threshold
+      double decrement
+      hbool_t apply_max_decrement
+      size_t max_decrement
+      int epochs_before_eviction
+      hbool_t apply_empty_reserve
+      double empty_reserve
+      # /* parallel configuration fields: */
+      int dirty_bytes_threshold
+      #  int metadata_write_strategy # present in 1.8.6 and higher
+
+
+
+
+cdef extern from "hdf5_hl.h":
+# === H5DS - Dimension Scales API =============================================
+
+  ctypedef herr_t  (*H5DS_iterate_t)(hid_t dset, unsigned dim, hid_t scale, void *visitor_data) except 2
diff --git a/h5py/config.pxi b/h5py/config.pxi
new file mode 100644
index 0000000..5a9aca3
--- /dev/null
+++ b/h5py/config.pxi
@@ -0,0 +1,4 @@
+# This file is automatically generated by the h5py setup script.  Don't modify.
+
+DEF MPI = False
+DEF HDF5_VERSION = (1, 9, 170)
diff --git a/h5py/defs.c b/h5py/defs.c
new file mode 100644
index 0000000..109ed85
--- /dev/null
+++ b/h5py/defs.c
@@ -0,0 +1,81484 @@
+/* Generated by Cython 0.18 on Mon Dec  9 16:00:33 2013 */
+
+#define PY_SSIZE_T_CLEAN
+#include "Python.h"
+#ifndef Py_PYTHON_H
+    #error Python headers needed to compile C extensions, please install development version of Python.
+#elif PY_VERSION_HEX < 0x02040000
+    #error Cython requires Python 2.4+.
+#else
+#include <stddef.h> /* For offsetof */
+#ifndef offsetof
+#define offsetof(type, member) ( (size_t) & ((type*)0) -> member )
+#endif
+#if !defined(WIN32) && !defined(MS_WINDOWS)
+  #ifndef __stdcall
+    #define __stdcall
+  #endif
+  #ifndef __cdecl
+    #define __cdecl
+  #endif
+  #ifndef __fastcall
+    #define __fastcall
+  #endif
+#endif
+#ifndef DL_IMPORT
+  #define DL_IMPORT(t) t
+#endif
+#ifndef DL_EXPORT
+  #define DL_EXPORT(t) t
+#endif
+#ifndef PY_LONG_LONG
+  #define PY_LONG_LONG LONG_LONG
+#endif
+#ifndef Py_HUGE_VAL
+  #define Py_HUGE_VAL HUGE_VAL
+#endif
+#ifdef PYPY_VERSION
+#define CYTHON_COMPILING_IN_PYPY 1
+#define CYTHON_COMPILING_IN_CPYTHON 0
+#else
+#define CYTHON_COMPILING_IN_PYPY 0
+#define CYTHON_COMPILING_IN_CPYTHON 1
+#endif
+#if PY_VERSION_HEX < 0x02050000
+  typedef int Py_ssize_t;
+  #define PY_SSIZE_T_MAX INT_MAX
+  #define PY_SSIZE_T_MIN INT_MIN
+  #define PY_FORMAT_SIZE_T ""
+  #define CYTHON_FORMAT_SSIZE_T ""
+  #define PyInt_FromSsize_t(z) PyInt_FromLong(z)
+  #define PyInt_AsSsize_t(o)   __Pyx_PyInt_AsInt(o)
+  #define PyNumber_Index(o)    ((PyNumber_Check(o) && !PyFloat_Check(o)) ? PyNumber_Int(o) : \
+                                (PyErr_Format(PyExc_TypeError, \
+                                              "expected index value, got %.200s", Py_TYPE(o)->tp_name), \
+                                 (PyObject*)0))
+  #define __Pyx_PyIndex_Check(o) (PyNumber_Check(o) && !PyFloat_Check(o) && \
+                                  !PyComplex_Check(o))
+  #define PyIndex_Check __Pyx_PyIndex_Check
+  #define PyErr_WarnEx(category, message, stacklevel) PyErr_Warn(category, message)
+  #define __PYX_BUILD_PY_SSIZE_T "i"
+#else
+  #define __PYX_BUILD_PY_SSIZE_T "n"
+  #define CYTHON_FORMAT_SSIZE_T "z"
+  #define __Pyx_PyIndex_Check PyIndex_Check
+#endif
+#if PY_VERSION_HEX < 0x02060000
+  #define Py_REFCNT(ob) (((PyObject*)(ob))->ob_refcnt)
+  #define Py_TYPE(ob)   (((PyObject*)(ob))->ob_type)
+  #define Py_SIZE(ob)   (((PyVarObject*)(ob))->ob_size)
+  #define PyVarObject_HEAD_INIT(type, size) \
+          PyObject_HEAD_INIT(type) size,
+  #define PyType_Modified(t)
+  typedef struct {
+     void *buf;
+     PyObject *obj;
+     Py_ssize_t len;
+     Py_ssize_t itemsize;
+     int readonly;
+     int ndim;
+     char *format;
+     Py_ssize_t *shape;
+     Py_ssize_t *strides;
+     Py_ssize_t *suboffsets;
+     void *internal;
+  } Py_buffer;
+  #define PyBUF_SIMPLE 0
+  #define PyBUF_WRITABLE 0x0001
+  #define PyBUF_FORMAT 0x0004
+  #define PyBUF_ND 0x0008
+  #define PyBUF_STRIDES (0x0010 | PyBUF_ND)
+  #define PyBUF_C_CONTIGUOUS (0x0020 | PyBUF_STRIDES)
+  #define PyBUF_F_CONTIGUOUS (0x0040 | PyBUF_STRIDES)
+  #define PyBUF_ANY_CONTIGUOUS (0x0080 | PyBUF_STRIDES)
+  #define PyBUF_INDIRECT (0x0100 | PyBUF_STRIDES)
+  #define PyBUF_RECORDS (PyBUF_STRIDES | PyBUF_FORMAT | PyBUF_WRITABLE)
+  #define PyBUF_FULL (PyBUF_INDIRECT | PyBUF_FORMAT | PyBUF_WRITABLE)
+  typedef int (*getbufferproc)(PyObject *, Py_buffer *, int);
+  typedef void (*releasebufferproc)(PyObject *, Py_buffer *);
+#endif
+#if PY_MAJOR_VERSION < 3
+  #define __Pyx_BUILTIN_MODULE_NAME "__builtin__"
+  #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) \
+          PyCode_New(a, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
+#else
+  #define __Pyx_BUILTIN_MODULE_NAME "builtins"
+  #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) \
+          PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
+#endif
+#if PY_MAJOR_VERSION < 3 && PY_MINOR_VERSION < 6
+  #define PyUnicode_FromString(s) PyUnicode_Decode(s, strlen(s), "UTF-8", "strict")
+#endif
+#if PY_MAJOR_VERSION >= 3
+  #define Py_TPFLAGS_CHECKTYPES 0
+  #define Py_TPFLAGS_HAVE_INDEX 0
+#endif
+#if (PY_VERSION_HEX < 0x02060000) || (PY_MAJOR_VERSION >= 3)
+  #define Py_TPFLAGS_HAVE_NEWBUFFER 0
+#endif
+#if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND)
+  #define CYTHON_PEP393_ENABLED 1
+  #define __Pyx_PyUnicode_READY(op)       (likely(PyUnicode_IS_READY(op)) ? \
+                                              0 : _PyUnicode_Ready((PyObject *)(op)))
+  #define __Pyx_PyUnicode_GET_LENGTH(u)   PyUnicode_GET_LENGTH(u)
+  #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i)
+  #define __Pyx_PyUnicode_READ(k, d, i)   PyUnicode_READ(k, d, i)
+#else
+  #define CYTHON_PEP393_ENABLED 0
+  #define __Pyx_PyUnicode_READY(op)       (0)
+  #define __Pyx_PyUnicode_GET_LENGTH(u)   PyUnicode_GET_SIZE(u)
+  #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i]))
+  #define __Pyx_PyUnicode_READ(k, d, i)   ((k=k), (Py_UCS4)(((Py_UNICODE*)d)[i]))
+#endif
+#if PY_MAJOR_VERSION >= 3
+  #define PyBaseString_Type            PyUnicode_Type
+  #define PyStringObject               PyUnicodeObject
+  #define PyString_Type                PyUnicode_Type
+  #define PyString_Check               PyUnicode_Check
+  #define PyString_CheckExact          PyUnicode_CheckExact
+#endif
+#if PY_VERSION_HEX < 0x02060000
+  #define PyBytesObject                PyStringObject
+  #define PyBytes_Type                 PyString_Type
+  #define PyBytes_Check                PyString_Check
+  #define PyBytes_CheckExact           PyString_CheckExact
+  #define PyBytes_FromString           PyString_FromString
+  #define PyBytes_FromStringAndSize    PyString_FromStringAndSize
+  #define PyBytes_FromFormat           PyString_FromFormat
+  #define PyBytes_DecodeEscape         PyString_DecodeEscape
+  #define PyBytes_AsString             PyString_AsString
+  #define PyBytes_AsStringAndSize      PyString_AsStringAndSize
+  #define PyBytes_Size                 PyString_Size
+  #define PyBytes_AS_STRING            PyString_AS_STRING
+  #define PyBytes_GET_SIZE             PyString_GET_SIZE
+  #define PyBytes_Repr                 PyString_Repr
+  #define PyBytes_Concat               PyString_Concat
+  #define PyBytes_ConcatAndDel         PyString_ConcatAndDel
+#endif
+#if PY_VERSION_HEX < 0x02060000
+  #define PySet_Check(obj)             PyObject_TypeCheck(obj, &PySet_Type)
+  #define PyFrozenSet_Check(obj)       PyObject_TypeCheck(obj, &PyFrozenSet_Type)
+#endif
+#ifndef PySet_CheckExact
+  #define PySet_CheckExact(obj)        (Py_TYPE(obj) == &PySet_Type)
+#endif
+#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type)
+#if PY_MAJOR_VERSION >= 3
+  #define PyIntObject                  PyLongObject
+  #define PyInt_Type                   PyLong_Type
+  #define PyInt_Check(op)              PyLong_Check(op)
+  #define PyInt_CheckExact(op)         PyLong_CheckExact(op)
+  #define PyInt_FromString             PyLong_FromString
+  #define PyInt_FromUnicode            PyLong_FromUnicode
+  #define PyInt_FromLong               PyLong_FromLong
+  #define PyInt_FromSize_t             PyLong_FromSize_t
+  #define PyInt_FromSsize_t            PyLong_FromSsize_t
+  #define PyInt_AsLong                 PyLong_AsLong
+  #define PyInt_AS_LONG                PyLong_AS_LONG
+  #define PyInt_AsSsize_t              PyLong_AsSsize_t
+  #define PyInt_AsUnsignedLongMask     PyLong_AsUnsignedLongMask
+  #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask
+#endif
+#if PY_MAJOR_VERSION >= 3
+  #define PyBoolObject                 PyLongObject
+#endif
+#if PY_VERSION_HEX < 0x03020000
+  typedef long Py_hash_t;
+  #define __Pyx_PyInt_FromHash_t PyInt_FromLong
+  #define __Pyx_PyInt_AsHash_t   PyInt_AsLong
+#else
+  #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t
+  #define __Pyx_PyInt_AsHash_t   PyInt_AsSsize_t
+#endif
+#if (PY_MAJOR_VERSION < 3) || (PY_VERSION_HEX >= 0x03010300)
+  #define __Pyx_PySequence_GetSlice(obj, a, b) PySequence_GetSlice(obj, a, b)
+  #define __Pyx_PySequence_SetSlice(obj, a, b, value) PySequence_SetSlice(obj, a, b, value)
+  #define __Pyx_PySequence_DelSlice(obj, a, b) PySequence_DelSlice(obj, a, b)
+#else
+  #define __Pyx_PySequence_GetSlice(obj, a, b) (unlikely(!(obj)) ? \
+        (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), (PyObject*)0) : \
+        (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_GetSlice(obj, a, b)) : \
+            (PyErr_Format(PyExc_TypeError, "'%.200s' object is unsliceable", (obj)->ob_type->tp_name), (PyObject*)0)))
+  #define __Pyx_PySequence_SetSlice(obj, a, b, value) (unlikely(!(obj)) ? \
+        (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), -1) : \
+        (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_SetSlice(obj, a, b, value)) : \
+            (PyErr_Format(PyExc_TypeError, "'%.200s' object doesn't support slice assignment", (obj)->ob_type->tp_name), -1)))
+  #define __Pyx_PySequence_DelSlice(obj, a, b) (unlikely(!(obj)) ? \
+        (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), -1) : \
+        (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_DelSlice(obj, a, b)) : \
+            (PyErr_Format(PyExc_TypeError, "'%.200s' object doesn't support slice deletion", (obj)->ob_type->tp_name), -1)))
+#endif
+#if PY_MAJOR_VERSION >= 3
+  #define PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, self) : PyInstanceMethod_New(func))
+#endif
+#if PY_VERSION_HEX < 0x02050000
+  #define __Pyx_GetAttrString(o,n)   PyObject_GetAttrString((o),((char *)(n)))
+  #define __Pyx_SetAttrString(o,n,a) PyObject_SetAttrString((o),((char *)(n)),(a))
+  #define __Pyx_DelAttrString(o,n)   PyObject_DelAttrString((o),((char *)(n)))
+#else
+  #define __Pyx_GetAttrString(o,n)   PyObject_GetAttrString((o),(n))
+  #define __Pyx_SetAttrString(o,n,a) PyObject_SetAttrString((o),(n),(a))
+  #define __Pyx_DelAttrString(o,n)   PyObject_DelAttrString((o),(n))
+#endif
+#if PY_VERSION_HEX < 0x02050000
+  #define __Pyx_NAMESTR(n) ((char *)(n))
+  #define __Pyx_DOCSTR(n)  ((char *)(n))
+#else
+  #define __Pyx_NAMESTR(n) (n)
+  #define __Pyx_DOCSTR(n)  (n)
+#endif
+
+
+#if PY_MAJOR_VERSION >= 3
+  #define __Pyx_PyNumber_Divide(x,y)         PyNumber_TrueDivide(x,y)
+  #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceTrueDivide(x,y)
+#else
+  #define __Pyx_PyNumber_Divide(x,y)         PyNumber_Divide(x,y)
+  #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceDivide(x,y)
+#endif
+
+#ifndef __PYX_EXTERN_C
+  #ifdef __cplusplus
+    #define __PYX_EXTERN_C extern "C"
+  #else
+    #define __PYX_EXTERN_C extern
+  #endif
+#endif
+
+#if defined(WIN32) || defined(MS_WINDOWS)
+#define _USE_MATH_DEFINES
+#endif
+#include <math.h>
+#define __PYX_HAVE__h5py__defs
+#define __PYX_HAVE_API__h5py__defs
+#include "stdlib.h"
+#include "string.h"
+#include "time.h"
+#include "unistd.h"
+#include "stdint.h"
+#include "api_compat.h"
+#include "lzf_filter.h"
+#include "hdf5.h"
+#include "H5Cpublic.h"
+#include "hdf5_hl.h"
+#include "stdio.h"
+#include "pythread.h"
+#ifdef _OPENMP
+#include <omp.h>
+#endif /* _OPENMP */
+
+#ifdef PYREX_WITHOUT_ASSERTIONS
+#define CYTHON_WITHOUT_ASSERTIONS
+#endif
+
+#ifndef CYTHON_INLINE
+  #if defined(__GNUC__)
+    #define CYTHON_INLINE __inline__
+  #elif defined(_MSC_VER)
+    #define CYTHON_INLINE __inline
+  #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+    #define CYTHON_INLINE inline
+  #else
+    #define CYTHON_INLINE
+  #endif
+#endif
+#ifndef CYTHON_UNUSED
+# if defined(__GNUC__)
+#   if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
+#     define CYTHON_UNUSED __attribute__ ((__unused__))
+#   else
+#     define CYTHON_UNUSED
+#   endif
+# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER))
+#   define CYTHON_UNUSED __attribute__ ((__unused__))
+# else
+#   define CYTHON_UNUSED
+# endif
+#endif
+typedef struct {PyObject **p; char *s; const long n; const char* encoding; const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; /*proto*/
+
+#define __Pyx_PyBytes_FromUString(s) PyBytes_FromString((char*)s)
+#define __Pyx_PyBytes_AsUString(s)   ((unsigned char*) PyBytes_AsString(s))
+#define __Pyx_Owned_Py_None(b) (Py_INCREF(Py_None), Py_None)
+#define __Pyx_PyBool_FromLong(b) ((b) ? (Py_INCREF(Py_True), Py_True) : (Py_INCREF(Py_False), Py_False))
+static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*);
+static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x);
+static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*);
+static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t);
+static CYTHON_INLINE size_t __Pyx_PyInt_AsSize_t(PyObject*);
+#if CYTHON_COMPILING_IN_CPYTHON
+#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x))
+#else
+#define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x)
+#endif
+#define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x))
+
+
+#ifdef __GNUC__
+  /* Test for GCC > 2.95 */
+  #if __GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))
+    #define likely(x)   __builtin_expect(!!(x), 1)
+    #define unlikely(x) __builtin_expect(!!(x), 0)
+  #else /* __GNUC__ > 2 ... */
+    #define likely(x)   (x)
+    #define unlikely(x) (x)
+  #endif /* __GNUC__ > 2 ... */
+#else /* __GNUC__ */
+  #define likely(x)   (x)
+  #define unlikely(x) (x)
+#endif /* __GNUC__ */
+    
+static PyObject *__pyx_m;
+static PyObject *__pyx_b;
+static PyObject *__pyx_empty_tuple;
+static PyObject *__pyx_empty_bytes;
+static int __pyx_lineno;
+static int __pyx_clineno = 0;
+static const char * __pyx_cfilenm= __FILE__;
+static const char *__pyx_filename;
+
+
+static const char *__pyx_f[] = {
+  "_locks.pxi",
+  "defs.pyx",
+  "type.pxd",
+  "bool.pxd",
+  "complex.pxd",
+};
+
+/*--- Type declarations ---*/
+struct __pyx_obj_4h5py_4defs_FastRLock;
+struct __pyx_t_4h5py_7_errors_err_cookie;
+typedef struct __pyx_t_4h5py_7_errors_err_cookie __pyx_t_4h5py_7_errors_err_cookie;
+
+/* "_errors.pxd":230
+ * # --- Functions for managing the HDF5 error callback mechanism ---
+ * 
+ * ctypedef struct err_cookie:             # <<<<<<<<<<<<<<
+ *     # Defines the error handler state (callback and callback data)
+ *     H5E_auto_t func
+ */
+struct __pyx_t_4h5py_7_errors_err_cookie {
+  H5E_auto_t func;
+  void *data;
+};
+
+/* "/home/computer/h5py/h5py/_locks.pxi":5
+ * from cpython.exc cimport PyErr_NoMemory
+ * 
+ * cdef class FastRLock:             # <<<<<<<<<<<<<<
+ *     """Fast, re-entrant locking.
+ * 
+ */
+struct __pyx_obj_4h5py_4defs_FastRLock {
+  PyObject_HEAD
+  PyThread_type_lock _real_lock;
+  long _owner;
+  int _count;
+  int _pending_requests;
+  int _is_locked;
+};
+
+#ifndef CYTHON_REFNANNY
+  #define CYTHON_REFNANNY 0
+#endif
+#if CYTHON_REFNANNY
+  typedef struct {
+    void (*INCREF)(void*, PyObject*, int);
+    void (*DECREF)(void*, PyObject*, int);
+    void (*GOTREF)(void*, PyObject*, int);
+    void (*GIVEREF)(void*, PyObject*, int);
+    void* (*SetupContext)(const char*, int, const char*);
+    void (*FinishContext)(void**);
+  } __Pyx_RefNannyAPIStruct;
+  static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL;
+  static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); /*proto*/
+  #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL;
+#ifdef WITH_THREAD
+  #define __Pyx_RefNannySetupContext(name, acquire_gil) \
+          if (acquire_gil) { \
+              PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); \
+              __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__); \
+              PyGILState_Release(__pyx_gilstate_save); \
+          } else { \
+              __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__); \
+          }
+#else
+  #define __Pyx_RefNannySetupContext(name, acquire_gil) \
+          __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__)
+#endif
+  #define __Pyx_RefNannyFinishContext() \
+          __Pyx_RefNanny->FinishContext(&__pyx_refnanny)
+  #define __Pyx_INCREF(r)  __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_DECREF(r)  __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_GOTREF(r)  __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_XINCREF(r)  do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0)
+  #define __Pyx_XDECREF(r)  do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0)
+  #define __Pyx_XGOTREF(r)  do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0)
+  #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0)
+#else
+  #define __Pyx_RefNannyDeclarations
+  #define __Pyx_RefNannySetupContext(name, acquire_gil)
+  #define __Pyx_RefNannyFinishContext()
+  #define __Pyx_INCREF(r) Py_INCREF(r)
+  #define __Pyx_DECREF(r) Py_DECREF(r)
+  #define __Pyx_GOTREF(r)
+  #define __Pyx_GIVEREF(r)
+  #define __Pyx_XINCREF(r) Py_XINCREF(r)
+  #define __Pyx_XDECREF(r) Py_XDECREF(r)
+  #define __Pyx_XGOTREF(r)
+  #define __Pyx_XGIVEREF(r)
+#endif /* CYTHON_REFNANNY */
+#define __Pyx_CLEAR(r)    do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0)
+#define __Pyx_XCLEAR(r)   do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0)
+
+static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name); /*proto*/
+
+static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact,
+    Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); /*proto*/
+
+static CYTHON_INLINE int __Pyx_CheckKeywordStrings(PyObject *kwdict, const char* function_name, int kw_allowed); /*proto*/
+
+static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name); /*proto*/
+
+static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[], \
+    PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args, \
+    const char* function_name); /*proto*/
+
+static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb); /*proto*/
+static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb); /*proto*/
+
+static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause); /*proto*/
+
+static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb); /*proto*/
+
+static CYTHON_INLINE void __Pyx_ExceptionSave(PyObject **type, PyObject **value, PyObject **tb); /*proto*/
+static void __Pyx_ExceptionReset(PyObject *type, PyObject *value, PyObject *tb); /*proto*/
+
+#ifndef __PYX_FORCE_INIT_THREADS
+  #define __PYX_FORCE_INIT_THREADS 0
+#endif
+
+static CYTHON_INLINE unsigned char __Pyx_PyInt_AsUnsignedChar(PyObject *);
+
+static CYTHON_INLINE unsigned short __Pyx_PyInt_AsUnsignedShort(PyObject *);
+
+static CYTHON_INLINE unsigned int __Pyx_PyInt_AsUnsignedInt(PyObject *);
+
+static CYTHON_INLINE char __Pyx_PyInt_AsChar(PyObject *);
+
+static CYTHON_INLINE short __Pyx_PyInt_AsShort(PyObject *);
+
+static CYTHON_INLINE int __Pyx_PyInt_AsInt(PyObject *);
+
+static CYTHON_INLINE signed char __Pyx_PyInt_AsSignedChar(PyObject *);
+
+static CYTHON_INLINE signed short __Pyx_PyInt_AsSignedShort(PyObject *);
+
+static CYTHON_INLINE signed int __Pyx_PyInt_AsSignedInt(PyObject *);
+
+static CYTHON_INLINE int __Pyx_PyInt_AsLongDouble(PyObject *);
+
+static CYTHON_INLINE unsigned long __Pyx_PyInt_AsUnsignedLong(PyObject *);
+
+static CYTHON_INLINE unsigned PY_LONG_LONG __Pyx_PyInt_AsUnsignedLongLong(PyObject *);
+
+static CYTHON_INLINE long __Pyx_PyInt_AsLong(PyObject *);
+
+static CYTHON_INLINE PY_LONG_LONG __Pyx_PyInt_AsLongLong(PyObject *);
+
+static CYTHON_INLINE signed long __Pyx_PyInt_AsSignedLong(PyObject *);
+
+static CYTHON_INLINE signed PY_LONG_LONG __Pyx_PyInt_AsSignedLongLong(PyObject *);
+
+static int __Pyx_check_binary_version(void);
+
+static int __Pyx_ExportFunction(const char *name, void (*f)(void), const char *sig); /*proto*/
+
+#if !defined(__Pyx_PyIdentifier_FromString)
+#if PY_MAJOR_VERSION < 3
+  #define __Pyx_PyIdentifier_FromString(s) PyString_FromString(s)
+#else
+  #define __Pyx_PyIdentifier_FromString(s) PyUnicode_FromString(s)
+#endif
+#endif
+
+static PyObject *__Pyx_ImportModule(const char *name); /*proto*/
+
+static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name, size_t size, int strict);  /*proto*/
+
+static int __Pyx_ImportFunction(PyObject *module, const char *funcname, void (**f)(void), const char *sig); /*proto*/
+
+typedef struct {
+    int code_line;
+    PyCodeObject* code_object;
+} __Pyx_CodeObjectCacheEntry;
+struct __Pyx_CodeObjectCache {
+    int count;
+    int max_count;
+    __Pyx_CodeObjectCacheEntry* entries;
+};
+static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL};
+static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line);
+static PyCodeObject *__pyx_find_code_object(int code_line);
+static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object);
+
+static void __Pyx_AddTraceback(const char *funcname, int c_line,
+                               int py_line, const char *filename); /*proto*/
+
+static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); /*proto*/
+
+
+/* Module declarations from 'h5py.api_types_ext' */
+
+/* Module declarations from 'h5py.api_types_hdf5' */
+
+/* Module declarations from 'h5py._hdf5' */
+
+/* Module declarations from 'h5py._errors' */
+static int (*__pyx_f_4h5py_7_errors_set_exception)(void); /*proto*/
+
+/* Module declarations from 'cpython.version' */
+
+/* Module declarations from 'cpython.ref' */
+
+/* Module declarations from 'cpython.exc' */
+
+/* Module declarations from 'cpython.module' */
+
+/* Module declarations from 'cpython.mem' */
+
+/* Module declarations from 'cpython.tuple' */
+
+/* Module declarations from 'cpython.list' */
+
+/* Module declarations from 'libc.string' */
+
+/* Module declarations from 'libc.stdio' */
+
+/* Module declarations from 'cpython.object' */
+
+/* Module declarations from 'cpython.sequence' */
+
+/* Module declarations from 'cpython.mapping' */
+
+/* Module declarations from 'cpython.iterator' */
+
+/* Module declarations from '__builtin__' */
+
+/* Module declarations from 'cpython.type' */
+static PyTypeObject *__pyx_ptype_7cpython_4type_type = 0;
+
+/* Module declarations from 'cpython.number' */
+
+/* Module declarations from 'cpython.int' */
+
+/* Module declarations from '__builtin__' */
+
+/* Module declarations from 'cpython.bool' */
+static PyTypeObject *__pyx_ptype_7cpython_4bool_bool = 0;
+
+/* Module declarations from 'cpython.long' */
+
+/* Module declarations from 'cpython.float' */
+
+/* Module declarations from '__builtin__' */
+
+/* Module declarations from 'cpython.complex' */
+static PyTypeObject *__pyx_ptype_7cpython_7complex_complex = 0;
+
+/* Module declarations from 'cpython.string' */
+
+/* Module declarations from 'cpython.unicode' */
+
+/* Module declarations from 'cpython.dict' */
+
+/* Module declarations from 'cpython.instance' */
+
+/* Module declarations from 'cpython.function' */
+
+/* Module declarations from 'cpython.method' */
+
+/* Module declarations from 'cpython.weakref' */
+
+/* Module declarations from 'cpython.getargs' */
+
+/* Module declarations from 'cpython.pythread' */
+
+/* Module declarations from 'cpython.pystate' */
+
+/* Module declarations from 'cpython.cobject' */
+
+/* Module declarations from 'cpython.oldbuffer' */
+
+/* Module declarations from 'cpython.set' */
+
+/* Module declarations from 'cpython.buffer' */
+
+/* Module declarations from 'cpython.bytes' */
+
+/* Module declarations from 'cpython.pycapsule' */
+
+/* Module declarations from 'cpython' */
+
+/* Module declarations from 'h5py.defs' */
+static PyTypeObject *__pyx_ptype_4h5py_4defs_FastRLock = 0;
+static CYTHON_INLINE int __pyx_f_4h5py_4defs_lock_lock(struct __pyx_obj_4h5py_4defs_FastRLock *, long, int); /*proto*/
+static int __pyx_f_4h5py_4defs__acquire_lock(struct __pyx_obj_4h5py_4defs_FastRLock *, long, int); /*proto*/
+static CYTHON_INLINE void __pyx_f_4h5py_4defs_unlock_lock(struct __pyx_obj_4h5py_4defs_FastRLock *); /*proto*/
+#define __Pyx_MODULE_NAME "h5py.defs"
+int __pyx_module_is_main_h5py__defs = 0;
+
+/* Implementation of 'h5py.defs' */
+static PyObject *__pyx_builtin_RuntimeError;
+static int __pyx_pf_4h5py_4defs_9FastRLock___cinit__(struct __pyx_obj_4h5py_4defs_FastRLock *__pyx_v_self); /* proto */
+static void __pyx_pf_4h5py_4defs_9FastRLock_2__dealloc__(struct __pyx_obj_4h5py_4defs_FastRLock *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_4defs_9FastRLock_4acquire(struct __pyx_obj_4h5py_4defs_FastRLock *__pyx_v_self, int __pyx_v_blocking); /* proto */
+static PyObject *__pyx_pf_4h5py_4defs_9FastRLock_6release(struct __pyx_obj_4h5py_4defs_FastRLock *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_4defs_9FastRLock_8__enter__(struct __pyx_obj_4h5py_4defs_FastRLock *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_4defs_9FastRLock_10__exit__(struct __pyx_obj_4h5py_4defs_FastRLock *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_t, CYTHON_UNUSED PyObject *__pyx_v_v, CYTHON_UNUSED PyObject *__pyx_v_tb); /* proto */
+static PyObject *__pyx_pf_4h5py_4defs_9FastRLock_12_is_owned(struct __pyx_obj_4h5py_4defs_FastRLock *__pyx_v_self); /* proto */
+static char __pyx_k_1[] = "cannot release un-acquired lock";
+static char __pyx_k__t[] = "t";
+static char __pyx_k__v[] = "v";
+static char __pyx_k__tb[] = "tb";
+static char __pyx_k__rlock[] = "rlock";
+static char __pyx_k____exit__[] = "__exit__";
+static char __pyx_k____main__[] = "__main__";
+static char __pyx_k____test__[] = "__test__";
+static char __pyx_k__blocking[] = "blocking";
+static char __pyx_k____enter__[] = "__enter__";
+static char __pyx_k__RuntimeError[] = "RuntimeError";
+static PyObject *__pyx_kp_s_1;
+static PyObject *__pyx_n_s__RuntimeError;
+static PyObject *__pyx_n_s____enter__;
+static PyObject *__pyx_n_s____exit__;
+static PyObject *__pyx_n_s____main__;
+static PyObject *__pyx_n_s____test__;
+static PyObject *__pyx_n_s__blocking;
+static PyObject *__pyx_n_s__rlock;
+static PyObject *__pyx_n_s__t;
+static PyObject *__pyx_n_s__tb;
+static PyObject *__pyx_n_s__v;
+static PyObject *__pyx_k_tuple_2;
+static PyObject *__pyx_k_tuple_3;
+static PyObject *__pyx_k_tuple_4;
+static PyObject *__pyx_k_tuple_5;
+static PyObject *__pyx_k_tuple_6;
+static PyObject *__pyx_k_tuple_7;
+static PyObject *__pyx_k_tuple_8;
+static PyObject *__pyx_k_tuple_9;
+static PyObject *__pyx_k_tuple_10;
+static PyObject *__pyx_k_tuple_11;
+static PyObject *__pyx_k_tuple_12;
+static PyObject *__pyx_k_tuple_13;
+static PyObject *__pyx_k_tuple_14;
+static PyObject *__pyx_k_tuple_15;
+static PyObject *__pyx_k_tuple_16;
+static PyObject *__pyx_k_tuple_17;
+static PyObject *__pyx_k_tuple_18;
+static PyObject *__pyx_k_tuple_19;
+static PyObject *__pyx_k_tuple_20;
+static PyObject *__pyx_k_tuple_21;
+static PyObject *__pyx_k_tuple_22;
+static PyObject *__pyx_k_tuple_23;
+static PyObject *__pyx_k_tuple_24;
+static PyObject *__pyx_k_tuple_25;
+static PyObject *__pyx_k_tuple_26;
+static PyObject *__pyx_k_tuple_27;
+static PyObject *__pyx_k_tuple_28;
+static PyObject *__pyx_k_tuple_29;
+static PyObject *__pyx_k_tuple_30;
+static PyObject *__pyx_k_tuple_31;
+static PyObject *__pyx_k_tuple_32;
+static PyObject *__pyx_k_tuple_33;
+static PyObject *__pyx_k_tuple_34;
+static PyObject *__pyx_k_tuple_35;
+static PyObject *__pyx_k_tuple_36;
+static PyObject *__pyx_k_tuple_37;
+static PyObject *__pyx_k_tuple_38;
+static PyObject *__pyx_k_tuple_39;
+static PyObject *__pyx_k_tuple_40;
+static PyObject *__pyx_k_tuple_41;
+static PyObject *__pyx_k_tuple_42;
+static PyObject *__pyx_k_tuple_43;
+static PyObject *__pyx_k_tuple_44;
+static PyObject *__pyx_k_tuple_45;
+static PyObject *__pyx_k_tuple_46;
+static PyObject *__pyx_k_tuple_47;
+static PyObject *__pyx_k_tuple_48;
+static PyObject *__pyx_k_tuple_49;
+static PyObject *__pyx_k_tuple_50;
+static PyObject *__pyx_k_tuple_51;
+static PyObject *__pyx_k_tuple_52;
+static PyObject *__pyx_k_tuple_53;
+static PyObject *__pyx_k_tuple_54;
+static PyObject *__pyx_k_tuple_55;
+static PyObject *__pyx_k_tuple_56;
+static PyObject *__pyx_k_tuple_57;
+static PyObject *__pyx_k_tuple_58;
+static PyObject *__pyx_k_tuple_59;
+static PyObject *__pyx_k_tuple_60;
+static PyObject *__pyx_k_tuple_61;
+static PyObject *__pyx_k_tuple_62;
+static PyObject *__pyx_k_tuple_63;
+static PyObject *__pyx_k_tuple_64;
+static PyObject *__pyx_k_tuple_65;
+static PyObject *__pyx_k_tuple_66;
+static PyObject *__pyx_k_tuple_67;
+static PyObject *__pyx_k_tuple_68;
+static PyObject *__pyx_k_tuple_69;
+static PyObject *__pyx_k_tuple_70;
+static PyObject *__pyx_k_tuple_71;
+static PyObject *__pyx_k_tuple_72;
+static PyObject *__pyx_k_tuple_73;
+static PyObject *__pyx_k_tuple_74;
+static PyObject *__pyx_k_tuple_75;
+static PyObject *__pyx_k_tuple_76;
+static PyObject *__pyx_k_tuple_77;
+static PyObject *__pyx_k_tuple_78;
+static PyObject *__pyx_k_tuple_79;
+static PyObject *__pyx_k_tuple_80;
+static PyObject *__pyx_k_tuple_81;
+static PyObject *__pyx_k_tuple_82;
+static PyObject *__pyx_k_tuple_83;
+static PyObject *__pyx_k_tuple_84;
+static PyObject *__pyx_k_tuple_85;
+static PyObject *__pyx_k_tuple_86;
+static PyObject *__pyx_k_tuple_87;
+static PyObject *__pyx_k_tuple_88;
+static PyObject *__pyx_k_tuple_89;
+static PyObject *__pyx_k_tuple_90;
+static PyObject *__pyx_k_tuple_91;
+static PyObject *__pyx_k_tuple_92;
+static PyObject *__pyx_k_tuple_93;
+static PyObject *__pyx_k_tuple_94;
+static PyObject *__pyx_k_tuple_95;
+static PyObject *__pyx_k_tuple_96;
+static PyObject *__pyx_k_tuple_97;
+static PyObject *__pyx_k_tuple_98;
+static PyObject *__pyx_k_tuple_99;
+static PyObject *__pyx_k_tuple_100;
+static PyObject *__pyx_k_tuple_101;
+static PyObject *__pyx_k_tuple_102;
+static PyObject *__pyx_k_tuple_103;
+static PyObject *__pyx_k_tuple_104;
+static PyObject *__pyx_k_tuple_105;
+static PyObject *__pyx_k_tuple_106;
+static PyObject *__pyx_k_tuple_107;
+static PyObject *__pyx_k_tuple_108;
+static PyObject *__pyx_k_tuple_109;
+static PyObject *__pyx_k_tuple_110;
+static PyObject *__pyx_k_tuple_111;
+static PyObject *__pyx_k_tuple_112;
+static PyObject *__pyx_k_tuple_113;
+static PyObject *__pyx_k_tuple_114;
+static PyObject *__pyx_k_tuple_115;
+static PyObject *__pyx_k_tuple_116;
+static PyObject *__pyx_k_tuple_117;
+static PyObject *__pyx_k_tuple_118;
+static PyObject *__pyx_k_tuple_119;
+static PyObject *__pyx_k_tuple_120;
+static PyObject *__pyx_k_tuple_121;
+static PyObject *__pyx_k_tuple_122;
+static PyObject *__pyx_k_tuple_123;
+static PyObject *__pyx_k_tuple_124;
+static PyObject *__pyx_k_tuple_125;
+static PyObject *__pyx_k_tuple_126;
+static PyObject *__pyx_k_tuple_127;
+static PyObject *__pyx_k_tuple_128;
+static PyObject *__pyx_k_tuple_129;
+static PyObject *__pyx_k_tuple_130;
+static PyObject *__pyx_k_tuple_131;
+static PyObject *__pyx_k_tuple_132;
+static PyObject *__pyx_k_tuple_133;
+static PyObject *__pyx_k_tuple_134;
+static PyObject *__pyx_k_tuple_135;
+static PyObject *__pyx_k_tuple_136;
+static PyObject *__pyx_k_tuple_137;
+static PyObject *__pyx_k_tuple_138;
+static PyObject *__pyx_k_tuple_139;
+static PyObject *__pyx_k_tuple_140;
+static PyObject *__pyx_k_tuple_141;
+static PyObject *__pyx_k_tuple_142;
+static PyObject *__pyx_k_tuple_143;
+static PyObject *__pyx_k_tuple_144;
+static PyObject *__pyx_k_tuple_145;
+static PyObject *__pyx_k_tuple_146;
+static PyObject *__pyx_k_tuple_147;
+static PyObject *__pyx_k_tuple_148;
+static PyObject *__pyx_k_tuple_149;
+static PyObject *__pyx_k_tuple_150;
+static PyObject *__pyx_k_tuple_151;
+static PyObject *__pyx_k_tuple_152;
+static PyObject *__pyx_k_tuple_153;
+static PyObject *__pyx_k_tuple_154;
+static PyObject *__pyx_k_tuple_155;
+static PyObject *__pyx_k_tuple_156;
+static PyObject *__pyx_k_tuple_157;
+static PyObject *__pyx_k_tuple_158;
+static PyObject *__pyx_k_tuple_159;
+static PyObject *__pyx_k_tuple_160;
+static PyObject *__pyx_k_tuple_161;
+static PyObject *__pyx_k_tuple_162;
+static PyObject *__pyx_k_tuple_163;
+static PyObject *__pyx_k_tuple_164;
+static PyObject *__pyx_k_tuple_165;
+static PyObject *__pyx_k_tuple_166;
+static PyObject *__pyx_k_tuple_167;
+static PyObject *__pyx_k_tuple_168;
+static PyObject *__pyx_k_tuple_169;
+static PyObject *__pyx_k_tuple_170;
+static PyObject *__pyx_k_tuple_171;
+static PyObject *__pyx_k_tuple_172;
+static PyObject *__pyx_k_tuple_173;
+static PyObject *__pyx_k_tuple_174;
+static PyObject *__pyx_k_tuple_175;
+static PyObject *__pyx_k_tuple_176;
+static PyObject *__pyx_k_tuple_177;
+static PyObject *__pyx_k_tuple_178;
+static PyObject *__pyx_k_tuple_179;
+static PyObject *__pyx_k_tuple_180;
+static PyObject *__pyx_k_tuple_181;
+static PyObject *__pyx_k_tuple_182;
+static PyObject *__pyx_k_tuple_183;
+static PyObject *__pyx_k_tuple_184;
+static PyObject *__pyx_k_tuple_185;
+static PyObject *__pyx_k_tuple_186;
+static PyObject *__pyx_k_tuple_187;
+static PyObject *__pyx_k_tuple_188;
+static PyObject *__pyx_k_tuple_189;
+static PyObject *__pyx_k_tuple_190;
+static PyObject *__pyx_k_tuple_191;
+static PyObject *__pyx_k_tuple_192;
+static PyObject *__pyx_k_tuple_193;
+static PyObject *__pyx_k_tuple_194;
+static PyObject *__pyx_k_tuple_195;
+static PyObject *__pyx_k_tuple_196;
+static PyObject *__pyx_k_tuple_197;
+static PyObject *__pyx_k_tuple_198;
+static PyObject *__pyx_k_tuple_199;
+static PyObject *__pyx_k_tuple_200;
+static PyObject *__pyx_k_tuple_201;
+static PyObject *__pyx_k_tuple_202;
+static PyObject *__pyx_k_tuple_203;
+static PyObject *__pyx_k_tuple_204;
+static PyObject *__pyx_k_tuple_205;
+static PyObject *__pyx_k_tuple_206;
+static PyObject *__pyx_k_tuple_207;
+static PyObject *__pyx_k_tuple_208;
+static PyObject *__pyx_k_tuple_209;
+static PyObject *__pyx_k_tuple_210;
+static PyObject *__pyx_k_tuple_211;
+static PyObject *__pyx_k_tuple_212;
+static PyObject *__pyx_k_tuple_213;
+static PyObject *__pyx_k_tuple_214;
+static PyObject *__pyx_k_tuple_215;
+static PyObject *__pyx_k_tuple_216;
+static PyObject *__pyx_k_tuple_217;
+static PyObject *__pyx_k_tuple_218;
+static PyObject *__pyx_k_tuple_219;
+static PyObject *__pyx_k_tuple_220;
+static PyObject *__pyx_k_tuple_221;
+static PyObject *__pyx_k_tuple_222;
+static PyObject *__pyx_k_tuple_223;
+static PyObject *__pyx_k_tuple_224;
+static PyObject *__pyx_k_tuple_225;
+static PyObject *__pyx_k_tuple_226;
+static PyObject *__pyx_k_tuple_227;
+static PyObject *__pyx_k_tuple_228;
+static PyObject *__pyx_k_tuple_229;
+static PyObject *__pyx_k_tuple_230;
+static PyObject *__pyx_k_tuple_231;
+static PyObject *__pyx_k_tuple_232;
+static PyObject *__pyx_k_tuple_233;
+static PyObject *__pyx_k_tuple_234;
+static PyObject *__pyx_k_tuple_235;
+static PyObject *__pyx_k_tuple_236;
+static PyObject *__pyx_k_tuple_237;
+static PyObject *__pyx_k_tuple_238;
+static PyObject *__pyx_k_tuple_239;
+static PyObject *__pyx_k_tuple_240;
+static PyObject *__pyx_k_tuple_241;
+static PyObject *__pyx_k_tuple_242;
+static PyObject *__pyx_k_tuple_243;
+static PyObject *__pyx_k_tuple_244;
+static PyObject *__pyx_k_tuple_245;
+static PyObject *__pyx_k_tuple_246;
+static PyObject *__pyx_k_tuple_247;
+static PyObject *__pyx_k_tuple_248;
+static PyObject *__pyx_k_tuple_249;
+static PyObject *__pyx_k_tuple_250;
+static PyObject *__pyx_k_tuple_251;
+static PyObject *__pyx_k_tuple_252;
+static PyObject *__pyx_k_tuple_253;
+static PyObject *__pyx_k_tuple_254;
+static PyObject *__pyx_k_tuple_255;
+static PyObject *__pyx_k_tuple_256;
+static PyObject *__pyx_k_tuple_257;
+static PyObject *__pyx_k_tuple_258;
+static PyObject *__pyx_k_tuple_259;
+static PyObject *__pyx_k_tuple_260;
+static PyObject *__pyx_k_tuple_261;
+static PyObject *__pyx_k_tuple_262;
+static PyObject *__pyx_k_tuple_263;
+static PyObject *__pyx_k_tuple_264;
+static PyObject *__pyx_k_tuple_265;
+static PyObject *__pyx_k_tuple_266;
+static PyObject *__pyx_k_tuple_267;
+static PyObject *__pyx_k_tuple_268;
+static PyObject *__pyx_k_tuple_269;
+static PyObject *__pyx_k_tuple_270;
+static PyObject *__pyx_k_tuple_271;
+static PyObject *__pyx_k_tuple_272;
+static PyObject *__pyx_k_tuple_273;
+static PyObject *__pyx_k_tuple_274;
+static PyObject *__pyx_k_tuple_275;
+static PyObject *__pyx_k_tuple_276;
+static PyObject *__pyx_k_tuple_277;
+static PyObject *__pyx_k_tuple_278;
+static PyObject *__pyx_k_tuple_279;
+static PyObject *__pyx_k_tuple_280;
+static PyObject *__pyx_k_tuple_281;
+static PyObject *__pyx_k_tuple_282;
+static PyObject *__pyx_k_tuple_283;
+static PyObject *__pyx_k_tuple_284;
+static PyObject *__pyx_k_tuple_285;
+static PyObject *__pyx_k_tuple_286;
+static PyObject *__pyx_k_tuple_287;
+static PyObject *__pyx_k_tuple_288;
+static PyObject *__pyx_k_tuple_289;
+static PyObject *__pyx_k_tuple_290;
+static PyObject *__pyx_k_tuple_291;
+static PyObject *__pyx_k_tuple_292;
+static PyObject *__pyx_k_tuple_293;
+static PyObject *__pyx_k_tuple_294;
+static PyObject *__pyx_k_tuple_295;
+static PyObject *__pyx_k_tuple_296;
+static PyObject *__pyx_k_tuple_297;
+static PyObject *__pyx_k_tuple_298;
+static PyObject *__pyx_k_tuple_299;
+static PyObject *__pyx_k_tuple_300;
+static PyObject *__pyx_k_tuple_301;
+static PyObject *__pyx_k_tuple_302;
+static PyObject *__pyx_k_tuple_303;
+static PyObject *__pyx_k_tuple_304;
+static PyObject *__pyx_k_tuple_305;
+static PyObject *__pyx_k_tuple_306;
+static PyObject *__pyx_k_tuple_307;
+static PyObject *__pyx_k_tuple_308;
+static PyObject *__pyx_k_tuple_309;
+static PyObject *__pyx_k_tuple_310;
+static PyObject *__pyx_k_tuple_311;
+static PyObject *__pyx_k_tuple_312;
+static PyObject *__pyx_k_tuple_313;
+static PyObject *__pyx_k_tuple_314;
+static PyObject *__pyx_k_tuple_315;
+static PyObject *__pyx_k_tuple_316;
+static PyObject *__pyx_k_tuple_317;
+static PyObject *__pyx_k_tuple_318;
+static PyObject *__pyx_k_tuple_319;
+static PyObject *__pyx_k_tuple_320;
+static PyObject *__pyx_k_tuple_321;
+static PyObject *__pyx_k_tuple_322;
+static PyObject *__pyx_k_tuple_323;
+static PyObject *__pyx_k_tuple_324;
+static PyObject *__pyx_k_tuple_325;
+static PyObject *__pyx_k_tuple_326;
+
+/* Python wrapper */
+static int __pyx_pw_4h5py_4defs_9FastRLock_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_4h5py_4defs_9FastRLock_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
+  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
+    __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
+  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;
+  __pyx_r = __pyx_pf_4h5py_4defs_9FastRLock___cinit__(((struct __pyx_obj_4h5py_4defs_FastRLock *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "/home/computer/h5py/h5py/_locks.pxi":20
+ *     cdef bint _is_locked        # whether the real lock is acquired
+ * 
+ *     def __cinit__(self):             # <<<<<<<<<<<<<<
+ *         self._owner = -1
+ *         self._count = 0
+ */
+
+static int __pyx_pf_4h5py_4defs_9FastRLock___cinit__(struct __pyx_obj_4h5py_4defs_FastRLock *__pyx_v_self) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  PyObject *__pyx_t_2;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__cinit__", 0);
+
+  /* "/home/computer/h5py/h5py/_locks.pxi":21
+ * 
+ *     def __cinit__(self):
+ *         self._owner = -1             # <<<<<<<<<<<<<<
+ *         self._count = 0
+ *         self._is_locked = False
+ */
+  __pyx_v_self->_owner = -1;
+
+  /* "/home/computer/h5py/h5py/_locks.pxi":22
+ *     def __cinit__(self):
+ *         self._owner = -1
+ *         self._count = 0             # <<<<<<<<<<<<<<
+ *         self._is_locked = False
+ *         self._pending_requests = 0
+ */
+  __pyx_v_self->_count = 0;
+
+  /* "/home/computer/h5py/h5py/_locks.pxi":23
+ *         self._owner = -1
+ *         self._count = 0
+ *         self._is_locked = False             # <<<<<<<<<<<<<<
+ *         self._pending_requests = 0
+ *         self._real_lock = pythread.PyThread_allocate_lock()
+ */
+  __pyx_v_self->_is_locked = 0;
+
+  /* "/home/computer/h5py/h5py/_locks.pxi":24
+ *         self._count = 0
+ *         self._is_locked = False
+ *         self._pending_requests = 0             # <<<<<<<<<<<<<<
+ *         self._real_lock = pythread.PyThread_allocate_lock()
+ *         if self._real_lock is NULL:
+ */
+  __pyx_v_self->_pending_requests = 0;
+
+  /* "/home/computer/h5py/h5py/_locks.pxi":25
+ *         self._is_locked = False
+ *         self._pending_requests = 0
+ *         self._real_lock = pythread.PyThread_allocate_lock()             # <<<<<<<<<<<<<<
+ *         if self._real_lock is NULL:
+ *             PyErr_NoMemory()
+ */
+  __pyx_v_self->_real_lock = PyThread_allocate_lock();
+
+  /* "/home/computer/h5py/h5py/_locks.pxi":26
+ *         self._pending_requests = 0
+ *         self._real_lock = pythread.PyThread_allocate_lock()
+ *         if self._real_lock is NULL:             # <<<<<<<<<<<<<<
+ *             PyErr_NoMemory()
+ * 
+ */
+  __pyx_t_1 = (__pyx_v_self->_real_lock == NULL);
+  if (__pyx_t_1) {
+
+    /* "/home/computer/h5py/h5py/_locks.pxi":27
+ *         self._real_lock = pythread.PyThread_allocate_lock()
+ *         if self._real_lock is NULL:
+ *             PyErr_NoMemory()             # <<<<<<<<<<<<<<
+ * 
+ *     def __dealloc__(self):
+ */
+    __pyx_t_2 = PyErr_NoMemory(); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py.defs.FastRLock.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static void __pyx_pw_4h5py_4defs_9FastRLock_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
+static void __pyx_pw_4h5py_4defs_9FastRLock_3__dealloc__(PyObject *__pyx_v_self) {
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
+  __pyx_pf_4h5py_4defs_9FastRLock_2__dealloc__(((struct __pyx_obj_4h5py_4defs_FastRLock *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+}
+
+/* "/home/computer/h5py/h5py/_locks.pxi":29
+ *             PyErr_NoMemory()
+ * 
+ *     def __dealloc__(self):             # <<<<<<<<<<<<<<
+ *         if self._real_lock is not NULL:
+ *             pythread.PyThread_free_lock(self._real_lock)
+ */
+
+static void __pyx_pf_4h5py_4defs_9FastRLock_2__dealloc__(struct __pyx_obj_4h5py_4defs_FastRLock *__pyx_v_self) {
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  __Pyx_RefNannySetupContext("__dealloc__", 0);
+
+  /* "/home/computer/h5py/h5py/_locks.pxi":30
+ * 
+ *     def __dealloc__(self):
+ *         if self._real_lock is not NULL:             # <<<<<<<<<<<<<<
+ *             pythread.PyThread_free_lock(self._real_lock)
+ *             self._real_lock = NULL
+ */
+  __pyx_t_1 = (__pyx_v_self->_real_lock != NULL);
+  if (__pyx_t_1) {
+
+    /* "/home/computer/h5py/h5py/_locks.pxi":31
+ *     def __dealloc__(self):
+ *         if self._real_lock is not NULL:
+ *             pythread.PyThread_free_lock(self._real_lock)             # <<<<<<<<<<<<<<
+ *             self._real_lock = NULL
+ * 
+ */
+    PyThread_free_lock(__pyx_v_self->_real_lock);
+
+    /* "/home/computer/h5py/h5py/_locks.pxi":32
+ *         if self._real_lock is not NULL:
+ *             pythread.PyThread_free_lock(self._real_lock)
+ *             self._real_lock = NULL             # <<<<<<<<<<<<<<
+ * 
+ *     def acquire(self, bint blocking=True):
+ */
+    __pyx_v_self->_real_lock = NULL;
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  __Pyx_RefNannyFinishContext();
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_4defs_9FastRLock_5acquire(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_4h5py_4defs_9FastRLock_5acquire(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  int __pyx_v_blocking;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("acquire (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__blocking,0};
+    PyObject* values[1] = {0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__blocking);
+          if (value) { values[0] = value; kw_args--; }
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "acquire") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else {
+      switch (PyTuple_GET_SIZE(__pyx_args)) {
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+    }
+    if (values[0]) {
+      __pyx_v_blocking = __Pyx_PyObject_IsTrue(values[0]); if (unlikely((__pyx_v_blocking == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    } else {
+
+      /* "/home/computer/h5py/h5py/_locks.pxi":34
+ *             self._real_lock = NULL
+ * 
+ *     def acquire(self, bint blocking=True):             # <<<<<<<<<<<<<<
+ *         return lock_lock(self, pythread.PyThread_get_thread_ident(), blocking)
+ * 
+ */
+      __pyx_v_blocking = ((int)1);
+    }
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("acquire", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.defs.FastRLock.acquire", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_4defs_9FastRLock_4acquire(((struct __pyx_obj_4h5py_4defs_FastRLock *)__pyx_v_self), __pyx_v_blocking);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_4h5py_4defs_9FastRLock_4acquire(struct __pyx_obj_4h5py_4defs_FastRLock *__pyx_v_self, int __pyx_v_blocking) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("acquire", 0);
+
+  /* "/home/computer/h5py/h5py/_locks.pxi":35
+ * 
+ *     def acquire(self, bint blocking=True):
+ *         return lock_lock(self, pythread.PyThread_get_thread_ident(), blocking)             # <<<<<<<<<<<<<<
+ * 
+ *     def release(self):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_f_4h5py_4defs_lock_lock(__pyx_v_self, PyThread_get_thread_ident(), __pyx_v_blocking)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py.defs.FastRLock.acquire", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_4defs_9FastRLock_7release(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static PyObject *__pyx_pw_4h5py_4defs_9FastRLock_7release(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("release (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_4defs_9FastRLock_6release(((struct __pyx_obj_4h5py_4defs_FastRLock *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "/home/computer/h5py/h5py/_locks.pxi":37
+ *         return lock_lock(self, pythread.PyThread_get_thread_ident(), blocking)
+ * 
+ *     def release(self):             # <<<<<<<<<<<<<<
+ *         if self._owner != pythread.PyThread_get_thread_ident():
+ *             raise RuntimeError("cannot release un-acquired lock")
+ */
+
+static PyObject *__pyx_pf_4h5py_4defs_9FastRLock_6release(struct __pyx_obj_4h5py_4defs_FastRLock *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("release", 0);
+
+  /* "/home/computer/h5py/h5py/_locks.pxi":38
+ * 
+ *     def release(self):
+ *         if self._owner != pythread.PyThread_get_thread_ident():             # <<<<<<<<<<<<<<
+ *             raise RuntimeError("cannot release un-acquired lock")
+ *         unlock_lock(self)
+ */
+  __pyx_t_1 = (__pyx_v_self->_owner != PyThread_get_thread_ident());
+  if (__pyx_t_1) {
+
+    /* "/home/computer/h5py/h5py/_locks.pxi":39
+ *     def release(self):
+ *         if self._owner != pythread.PyThread_get_thread_ident():
+ *             raise RuntimeError("cannot release un-acquired lock")             # <<<<<<<<<<<<<<
+ *         unlock_lock(self)
+ * 
+ */
+    __pyx_t_2 = PyObject_Call(__pyx_builtin_RuntimeError, ((PyObject *)__pyx_k_tuple_2), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  /* "/home/computer/h5py/h5py/_locks.pxi":40
+ *         if self._owner != pythread.PyThread_get_thread_ident():
+ *             raise RuntimeError("cannot release un-acquired lock")
+ *         unlock_lock(self)             # <<<<<<<<<<<<<<
+ * 
+ *     # compatibility with threading.RLock
+ */
+  __pyx_f_4h5py_4defs_unlock_lock(__pyx_v_self);
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.defs.FastRLock.release", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_4defs_9FastRLock_9__enter__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static PyObject *__pyx_pw_4h5py_4defs_9FastRLock_9__enter__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__enter__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_4defs_9FastRLock_8__enter__(((struct __pyx_obj_4h5py_4defs_FastRLock *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "/home/computer/h5py/h5py/_locks.pxi":44
+ *     # compatibility with threading.RLock
+ * 
+ *     def __enter__(self):             # <<<<<<<<<<<<<<
+ *         # self.acquire()
+ *         return lock_lock(self, pythread.PyThread_get_thread_ident(), True)
+ */
+
+static PyObject *__pyx_pf_4h5py_4defs_9FastRLock_8__enter__(struct __pyx_obj_4h5py_4defs_FastRLock *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__enter__", 0);
+
+  /* "/home/computer/h5py/h5py/_locks.pxi":46
+ *     def __enter__(self):
+ *         # self.acquire()
+ *         return lock_lock(self, pythread.PyThread_get_thread_ident(), True)             # <<<<<<<<<<<<<<
+ * 
+ *     def __exit__(self, t, v, tb):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_f_4h5py_4defs_lock_lock(__pyx_v_self, PyThread_get_thread_ident(), 1)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py.defs.FastRLock.__enter__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_4defs_9FastRLock_11__exit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_4h5py_4defs_9FastRLock_11__exit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  CYTHON_UNUSED PyObject *__pyx_v_t = 0;
+  CYTHON_UNUSED PyObject *__pyx_v_v = 0;
+  CYTHON_UNUSED PyObject *__pyx_v_tb = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__exit__ (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__t,&__pyx_n_s__v,&__pyx_n_s__tb,0};
+    PyObject* values[3] = {0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__t)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__v)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+        case  2:
+        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__tb)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__exit__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+    }
+    __pyx_v_t = values[0];
+    __pyx_v_v = values[1];
+    __pyx_v_tb = values[2];
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.defs.FastRLock.__exit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_4defs_9FastRLock_10__exit__(((struct __pyx_obj_4h5py_4defs_FastRLock *)__pyx_v_self), __pyx_v_t, __pyx_v_v, __pyx_v_tb);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "/home/computer/h5py/h5py/_locks.pxi":48
+ *         return lock_lock(self, pythread.PyThread_get_thread_ident(), True)
+ * 
+ *     def __exit__(self, t, v, tb):             # <<<<<<<<<<<<<<
+ *         # self.release()
+ *         if self._owner != pythread.PyThread_get_thread_ident():
+ */
+
+static PyObject *__pyx_pf_4h5py_4defs_9FastRLock_10__exit__(struct __pyx_obj_4h5py_4defs_FastRLock *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_t, CYTHON_UNUSED PyObject *__pyx_v_v, CYTHON_UNUSED PyObject *__pyx_v_tb) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__exit__", 0);
+
+  /* "/home/computer/h5py/h5py/_locks.pxi":50
+ *     def __exit__(self, t, v, tb):
+ *         # self.release()
+ *         if self._owner != pythread.PyThread_get_thread_ident():             # <<<<<<<<<<<<<<
+ *             raise RuntimeError("cannot release un-acquired lock")
+ *         unlock_lock(self)
+ */
+  __pyx_t_1 = (__pyx_v_self->_owner != PyThread_get_thread_ident());
+  if (__pyx_t_1) {
+
+    /* "/home/computer/h5py/h5py/_locks.pxi":51
+ *         # self.release()
+ *         if self._owner != pythread.PyThread_get_thread_ident():
+ *             raise RuntimeError("cannot release un-acquired lock")             # <<<<<<<<<<<<<<
+ *         unlock_lock(self)
+ * 
+ */
+    __pyx_t_2 = PyObject_Call(__pyx_builtin_RuntimeError, ((PyObject *)__pyx_k_tuple_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  /* "/home/computer/h5py/h5py/_locks.pxi":52
+ *         if self._owner != pythread.PyThread_get_thread_ident():
+ *             raise RuntimeError("cannot release un-acquired lock")
+ *         unlock_lock(self)             # <<<<<<<<<<<<<<
+ * 
+ *     def _is_owned(self):
+ */
+  __pyx_f_4h5py_4defs_unlock_lock(__pyx_v_self);
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.defs.FastRLock.__exit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_4defs_9FastRLock_13_is_owned(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static PyObject *__pyx_pw_4h5py_4defs_9FastRLock_13_is_owned(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("_is_owned (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_4defs_9FastRLock_12_is_owned(((struct __pyx_obj_4h5py_4defs_FastRLock *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "/home/computer/h5py/h5py/_locks.pxi":54
+ *         unlock_lock(self)
+ * 
+ *     def _is_owned(self):             # <<<<<<<<<<<<<<
+ *         return self._owner == pythread.PyThread_get_thread_ident()
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_4defs_9FastRLock_12_is_owned(struct __pyx_obj_4h5py_4defs_FastRLock *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_is_owned", 0);
+
+  /* "/home/computer/h5py/h5py/_locks.pxi":55
+ * 
+ *     def _is_owned(self):
+ *         return self._owner == pythread.PyThread_get_thread_ident()             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyBool_FromLong((__pyx_v_self->_owner == PyThread_get_thread_ident())); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py.defs.FastRLock._is_owned", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "/home/computer/h5py/h5py/_locks.pxi":58
+ * 
+ * 
+ * cdef inline bint lock_lock(FastRLock lock, long current_thread, bint blocking) 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
+ */
+
+static CYTHON_INLINE int __pyx_f_4h5py_4defs_lock_lock(struct __pyx_obj_4h5py_4defs_FastRLock *__pyx_v_lock, long __pyx_v_current_thread, int __pyx_v_blocking) {
+  int __pyx_r;
+  int __pyx_t_1;
+  int __pyx_t_2;
+
+  /* "/home/computer/h5py/h5py/_locks.pxi":63
+ *     # code execution slips in that might free the GIL
+ * 
+ *     if lock._count:             # <<<<<<<<<<<<<<
+ *         # locked! - by myself?
+ *         if current_thread == lock._owner:
+ */
+  if (__pyx_v_lock->_count) {
+
+    /* "/home/computer/h5py/h5py/_locks.pxi":65
+ *     if lock._count:
+ *         # locked! - by myself?
+ *         if current_thread == lock._owner:             # <<<<<<<<<<<<<<
+ *             lock._count += 1
+ *             return 1
+ */
+    __pyx_t_1 = (__pyx_v_current_thread == __pyx_v_lock->_owner);
+    if (__pyx_t_1) {
+
+      /* "/home/computer/h5py/h5py/_locks.pxi":66
+ *         # locked! - by myself?
+ *         if current_thread == lock._owner:
+ *             lock._count += 1             # <<<<<<<<<<<<<<
+ *             return 1
+ *     elif not lock._pending_requests:
+ */
+      __pyx_v_lock->_count = (__pyx_v_lock->_count + 1);
+
+      /* "/home/computer/h5py/h5py/_locks.pxi":67
+ *         if current_thread == lock._owner:
+ *             lock._count += 1
+ *             return 1             # <<<<<<<<<<<<<<
+ *     elif not lock._pending_requests:
+ *         # not locked, not requested - go!
+ */
+      __pyx_r = 1;
+      goto __pyx_L0;
+      goto __pyx_L4;
+    }
+    __pyx_L4:;
+    goto __pyx_L3;
+  }
+
+  /* "/home/computer/h5py/h5py/_locks.pxi":68
+ *             lock._count += 1
+ *             return 1
+ *     elif not lock._pending_requests:             # <<<<<<<<<<<<<<
+ *         # not locked, not requested - go!
+ *         lock._owner = current_thread
+ */
+  __pyx_t_1 = (!__pyx_v_lock->_pending_requests);
+  if (__pyx_t_1) {
+
+    /* "/home/computer/h5py/h5py/_locks.pxi":70
+ *     elif not lock._pending_requests:
+ *         # not locked, not requested - go!
+ *         lock._owner = current_thread             # <<<<<<<<<<<<<<
+ *         lock._count = 1
+ *         return 1
+ */
+    __pyx_v_lock->_owner = __pyx_v_current_thread;
+
+    /* "/home/computer/h5py/h5py/_locks.pxi":71
+ *         # not locked, not requested - go!
+ *         lock._owner = current_thread
+ *         lock._count = 1             # <<<<<<<<<<<<<<
+ *         return 1
+ *     # need to get the real lock
+ */
+    __pyx_v_lock->_count = 1;
+
+    /* "/home/computer/h5py/h5py/_locks.pxi":72
+ *         lock._owner = current_thread
+ *         lock._count = 1
+ *         return 1             # <<<<<<<<<<<<<<
+ *     # need to get the real lock
+ *     return _acquire_lock(
+ */
+    __pyx_r = 1;
+    goto __pyx_L0;
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  /* "/home/computer/h5py/h5py/_locks.pxi":76
+ *     return _acquire_lock(
+ *         lock, current_thread,
+ *         pythread.WAIT_LOCK if blocking else pythread.NOWAIT_LOCK)             # <<<<<<<<<<<<<<
+ * 
+ * cdef bint _acquire_lock(FastRLock lock, long current_thread, int wait) nogil:
+ */
+  if (__pyx_v_blocking) {
+    __pyx_t_2 = WAIT_LOCK;
+  } else {
+    __pyx_t_2 = NOWAIT_LOCK;
+  }
+  __pyx_r = __pyx_f_4h5py_4defs__acquire_lock(__pyx_v_lock, __pyx_v_current_thread, __pyx_t_2);
+  goto __pyx_L0;
+
+  __pyx_r = 0;
+  __pyx_L0:;
+  return __pyx_r;
+}
+
+/* "/home/computer/h5py/h5py/_locks.pxi":78
+ *         pythread.WAIT_LOCK if blocking else pythread.NOWAIT_LOCK)
+ * 
+ * cdef bint _acquire_lock(FastRLock lock, long current_thread, int wait) 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
+ */
+
+static int __pyx_f_4h5py_4defs__acquire_lock(struct __pyx_obj_4h5py_4defs_FastRLock *__pyx_v_lock, long __pyx_v_current_thread, int __pyx_v_wait) {
+  int __pyx_v_locked;
+  int __pyx_r;
+  int __pyx_t_1;
+  int __pyx_t_2;
+  int __pyx_t_3;
+
+  /* "/home/computer/h5py/h5py/_locks.pxi":83
+ *     # code execution slips in that might free the GIL
+ * 
+ *     if not lock._is_locked and not lock._pending_requests:             # <<<<<<<<<<<<<<
+ *         # someone owns it but didn't acquire the real lock - do that
+ *         # now and tell the owner to release it when done. Note that we
+ */
+  __pyx_t_1 = (!__pyx_v_lock->_is_locked);
+  if (__pyx_t_1) {
+    __pyx_t_2 = (!__pyx_v_lock->_pending_requests);
+    __pyx_t_3 = __pyx_t_2;
+  } else {
+    __pyx_t_3 = __pyx_t_1;
+  }
+  if (__pyx_t_3) {
+
+    /* "/home/computer/h5py/h5py/_locks.pxi":88
+ *         # do not release the GIL here as we must absolutely be the one
+ *         # who acquires the lock now.
+ *         if not pythread.PyThread_acquire_lock(lock._real_lock, wait):             # <<<<<<<<<<<<<<
+ *             return 0
+ *         #assert not lock._is_locked
+ */
+    __pyx_t_3 = (!PyThread_acquire_lock(__pyx_v_lock->_real_lock, __pyx_v_wait));
+    if (__pyx_t_3) {
+
+      /* "/home/computer/h5py/h5py/_locks.pxi":89
+ *         # who acquires the lock now.
+ *         if not pythread.PyThread_acquire_lock(lock._real_lock, wait):
+ *             return 0             # <<<<<<<<<<<<<<
+ *         #assert not lock._is_locked
+ *         lock._is_locked = True
+ */
+      __pyx_r = 0;
+      goto __pyx_L0;
+      goto __pyx_L4;
+    }
+    __pyx_L4:;
+
+    /* "/home/computer/h5py/h5py/_locks.pxi":91
+ *             return 0
+ *         #assert not lock._is_locked
+ *         lock._is_locked = True             # <<<<<<<<<<<<<<
+ *     lock._pending_requests += 1
+ *     with nogil:
+ */
+    __pyx_v_lock->_is_locked = 1;
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  /* "/home/computer/h5py/h5py/_locks.pxi":92
+ *         #assert not lock._is_locked
+ *         lock._is_locked = True
+ *     lock._pending_requests += 1             # <<<<<<<<<<<<<<
+ *     with nogil:
+ *         # wait for the lock owning thread to release it
+ */
+  __pyx_v_lock->_pending_requests = (__pyx_v_lock->_pending_requests + 1);
+
+  /* "/home/computer/h5py/h5py/_locks.pxi":93
+ *         lock._is_locked = True
+ *     lock._pending_requests += 1
+ *     with nogil:             # <<<<<<<<<<<<<<
+ *         # wait for the lock owning thread to release it
+ *         locked = pythread.PyThread_acquire_lock(lock._real_lock, wait)
+ */
+  {
+      #ifdef WITH_THREAD
+      PyThreadState *_save = NULL;
+      #endif
+      Py_UNBLOCK_THREADS
+      /*try:*/ {
+
+        /* "/home/computer/h5py/h5py/_locks.pxi":95
+ *     with nogil:
+ *         # wait for the lock owning thread to release it
+ *         locked = pythread.PyThread_acquire_lock(lock._real_lock, wait)             # <<<<<<<<<<<<<<
+ *     lock._pending_requests -= 1
+ *     #assert not lock._is_locked
+ */
+        __pyx_v_locked = PyThread_acquire_lock(__pyx_v_lock->_real_lock, __pyx_v_wait);
+      }
+
+      /* "/home/computer/h5py/h5py/_locks.pxi":93
+ *         lock._is_locked = True
+ *     lock._pending_requests += 1
+ *     with nogil:             # <<<<<<<<<<<<<<
+ *         # wait for the lock owning thread to release it
+ *         locked = pythread.PyThread_acquire_lock(lock._real_lock, wait)
+ */
+      /*finally:*/ {
+        Py_BLOCK_THREADS
+      }
+  }
+
+  /* "/home/computer/h5py/h5py/_locks.pxi":96
+ *         # wait for the lock owning thread to release it
+ *         locked = pythread.PyThread_acquire_lock(lock._real_lock, wait)
+ *     lock._pending_requests -= 1             # <<<<<<<<<<<<<<
+ *     #assert not lock._is_locked
+ *     #assert lock._count == 0
+ */
+  __pyx_v_lock->_pending_requests = (__pyx_v_lock->_pending_requests - 1);
+
+  /* "/home/computer/h5py/h5py/_locks.pxi":99
+ *     #assert not lock._is_locked
+ *     #assert lock._count == 0
+ *     if not locked:             # <<<<<<<<<<<<<<
+ *         return 0
+ *     lock._is_locked = True
+ */
+  __pyx_t_3 = (!__pyx_v_locked);
+  if (__pyx_t_3) {
+
+    /* "/home/computer/h5py/h5py/_locks.pxi":100
+ *     #assert lock._count == 0
+ *     if not locked:
+ *         return 0             # <<<<<<<<<<<<<<
+ *     lock._is_locked = True
+ *     lock._owner = current_thread
+ */
+    __pyx_r = 0;
+    goto __pyx_L0;
+    goto __pyx_L8;
+  }
+  __pyx_L8:;
+
+  /* "/home/computer/h5py/h5py/_locks.pxi":101
+ *     if not locked:
+ *         return 0
+ *     lock._is_locked = True             # <<<<<<<<<<<<<<
+ *     lock._owner = current_thread
+ *     lock._count = 1
+ */
+  __pyx_v_lock->_is_locked = 1;
+
+  /* "/home/computer/h5py/h5py/_locks.pxi":102
+ *         return 0
+ *     lock._is_locked = True
+ *     lock._owner = current_thread             # <<<<<<<<<<<<<<
+ *     lock._count = 1
+ *     return 1
+ */
+  __pyx_v_lock->_owner = __pyx_v_current_thread;
+
+  /* "/home/computer/h5py/h5py/_locks.pxi":103
+ *     lock._is_locked = True
+ *     lock._owner = current_thread
+ *     lock._count = 1             # <<<<<<<<<<<<<<
+ *     return 1
+ * 
+ */
+  __pyx_v_lock->_count = 1;
+
+  /* "/home/computer/h5py/h5py/_locks.pxi":104
+ *     lock._owner = current_thread
+ *     lock._count = 1
+ *     return 1             # <<<<<<<<<<<<<<
+ * 
+ * cdef inline void unlock_lock(FastRLock lock) nogil:
+ */
+  __pyx_r = 1;
+  goto __pyx_L0;
+
+  __pyx_r = 0;
+  __pyx_L0:;
+  return __pyx_r;
+}
+
+/* "/home/computer/h5py/h5py/_locks.pxi":106
+ *     return 1
+ * 
+ * cdef inline void unlock_lock(FastRLock lock) 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
+ */
+
+static CYTHON_INLINE void __pyx_f_4h5py_4defs_unlock_lock(struct __pyx_obj_4h5py_4defs_FastRLock *__pyx_v_lock) {
+  int __pyx_t_1;
+
+  /* "/home/computer/h5py/h5py/_locks.pxi":113
+ *     #assert lock._owner == pythread.PyThread_get_thread_ident()
+ *     #assert lock._count > 0
+ *     lock._count -= 1             # <<<<<<<<<<<<<<
+ *     if lock._count == 0:
+ *         lock._owner = -1
+ */
+  __pyx_v_lock->_count = (__pyx_v_lock->_count - 1);
+
+  /* "/home/computer/h5py/h5py/_locks.pxi":114
+ *     #assert lock._count > 0
+ *     lock._count -= 1
+ *     if lock._count == 0:             # <<<<<<<<<<<<<<
+ *         lock._owner = -1
+ *         if lock._is_locked:
+ */
+  __pyx_t_1 = (__pyx_v_lock->_count == 0);
+  if (__pyx_t_1) {
+
+    /* "/home/computer/h5py/h5py/_locks.pxi":115
+ *     lock._count -= 1
+ *     if lock._count == 0:
+ *         lock._owner = -1             # <<<<<<<<<<<<<<
+ *         if lock._is_locked:
+ *             pythread.PyThread_release_lock(lock._real_lock)
+ */
+    __pyx_v_lock->_owner = -1;
+
+    /* "/home/computer/h5py/h5py/_locks.pxi":116
+ *     if lock._count == 0:
+ *         lock._owner = -1
+ *         if lock._is_locked:             # <<<<<<<<<<<<<<
+ *             pythread.PyThread_release_lock(lock._real_lock)
+ *             lock._is_locked = False
+ */
+    if (__pyx_v_lock->_is_locked) {
+
+      /* "/home/computer/h5py/h5py/_locks.pxi":117
+ *         lock._owner = -1
+ *         if lock._is_locked:
+ *             pythread.PyThread_release_lock(lock._real_lock)             # <<<<<<<<<<<<<<
+ *             lock._is_locked = False
+ * ## end of http://code.activestate.com/recipes/577336/ }}}
+ */
+      PyThread_release_lock(__pyx_v_lock->_real_lock);
+
+      /* "/home/computer/h5py/h5py/_locks.pxi":118
+ *         if lock._is_locked:
+ *             pythread.PyThread_release_lock(lock._real_lock)
+ *             lock._is_locked = False             # <<<<<<<<<<<<<<
+ * ## end of http://code.activestate.com/recipes/577336/ }}}
+ * 
+ */
+      __pyx_v_lock->_is_locked = 0;
+      goto __pyx_L4;
+    }
+    __pyx_L4:;
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+}
+
+/* "h5py/defs.pyx":12
+ * 
+ * rlock = FastRLock()
+ * cdef herr_t H5open() except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5open(void) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5open", 0);
+
+  /* "h5py/defs.pyx":14
+ * cdef herr_t H5open() except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5open()
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":15
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5open()             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5open(); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":16
+ *     with rlock:
+ *         r = _hdf5.H5open()
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":17
+ *         r = _hdf5.H5open()
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":18
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":19
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5close() except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":14
+ * cdef herr_t H5open() except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5open()
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5open", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_4, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5open", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":21
+ *         return r
+ * 
+ * cdef herr_t H5close() except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5close(void) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5close", 0);
+
+  /* "h5py/defs.pyx":23
+ * cdef herr_t H5close() except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5close()
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":24
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5close()             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5close(); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":25
+ *     with rlock:
+ *         r = _hdf5.H5close()
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":26
+ *         r = _hdf5.H5close()
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":27
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":28
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5get_libversion(unsigned *majnum, unsigned *minnum, unsigned *relnum) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":23
+ * cdef herr_t H5close() except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5close()
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5close", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_5, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5close", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":30
+ *         return r
+ * 
+ * cdef herr_t H5get_libversion(unsigned *majnum, unsigned *minnum, unsigned *relnum) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5get_libversion(unsigned int *__pyx_v_majnum, unsigned int *__pyx_v_minnum, unsigned int *__pyx_v_relnum) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5get_libversion", 0);
+
+  /* "h5py/defs.pyx":32
+ * cdef herr_t H5get_libversion(unsigned *majnum, unsigned *minnum, unsigned *relnum) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5get_libversion(majnum, minnum, relnum)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":33
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5get_libversion(majnum, minnum, relnum)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5get_libversion(__pyx_v_majnum, __pyx_v_minnum, __pyx_v_relnum); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":34
+ *     with rlock:
+ *         r = _hdf5.H5get_libversion(majnum, minnum, relnum)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":35
+ *         r = _hdf5.H5get_libversion(majnum, minnum, relnum)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":36
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":37
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef hid_t H5Dcreate2(hid_t loc_id, char *name, hid_t type_id, hid_t space_id, hid_t lcpl_id, hid_t dcpl_id, hid_t dapl_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":32
+ * cdef herr_t H5get_libversion(unsigned *majnum, unsigned *minnum, unsigned *relnum) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5get_libversion(majnum, minnum, relnum)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5get_libversion", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_6, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5get_libversion", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":39
+ *         return r
+ * 
+ * cdef hid_t H5Dcreate2(hid_t loc_id, char *name, hid_t type_id, hid_t space_id, hid_t lcpl_id, hid_t dcpl_id, hid_t dapl_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef hid_t r
+ *     with rlock:
+ */
+
+static hid_t __pyx_f_4h5py_4defs_H5Dcreate2(hid_t __pyx_v_loc_id, char *__pyx_v_name, hid_t __pyx_v_type_id, hid_t __pyx_v_space_id, hid_t __pyx_v_lcpl_id, hid_t __pyx_v_dcpl_id, hid_t __pyx_v_dapl_id) {
+  hid_t __pyx_v_r;
+  hid_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  hid_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Dcreate2", 0);
+
+  /* "h5py/defs.pyx":41
+ * cdef hid_t H5Dcreate2(hid_t loc_id, char *name, hid_t type_id, hid_t space_id, hid_t lcpl_id, hid_t dcpl_id, hid_t dapl_id) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Dcreate2(loc_id, name, type_id, space_id, lcpl_id, dcpl_id, dapl_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":42
+ *     cdef hid_t r
+ *     with rlock:
+ *         r = _hdf5.H5Dcreate2(loc_id, name, type_id, space_id, lcpl_id, dcpl_id, dapl_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Dcreate2(__pyx_v_loc_id, __pyx_v_name, __pyx_v_type_id, __pyx_v_space_id, __pyx_v_lcpl_id, __pyx_v_dcpl_id, __pyx_v_dapl_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 42; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":43
+ *     with rlock:
+ *         r = _hdf5.H5Dcreate2(loc_id, name, type_id, space_id, lcpl_id, dcpl_id, dapl_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":44
+ *         r = _hdf5.H5Dcreate2(loc_id, name, type_id, space_id, lcpl_id, dcpl_id, dapl_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <hid_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":45
+ *         if r<0:
+ *             if set_exception():
+ *                 return <hid_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((hid_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":46
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef hid_t H5Dcreate_anon(hid_t file_id, hid_t type_id, hid_t space_id, hid_t plist_id, hid_t dapl_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":41
+ * cdef hid_t H5Dcreate2(hid_t loc_id, char *name, hid_t type_id, hid_t space_id, hid_t lcpl_id, hid_t dcpl_id, hid_t dapl_id) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Dcreate2(loc_id, name, type_id, space_id, lcpl_id, dcpl_id, dapl_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Dcreate2", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_7, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Dcreate2", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":48
+ *         return r
+ * 
+ * cdef hid_t H5Dcreate_anon(hid_t file_id, hid_t type_id, hid_t space_id, hid_t plist_id, hid_t dapl_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef hid_t r
+ *     with rlock:
+ */
+
+static hid_t __pyx_f_4h5py_4defs_H5Dcreate_anon(hid_t __pyx_v_file_id, hid_t __pyx_v_type_id, hid_t __pyx_v_space_id, hid_t __pyx_v_plist_id, hid_t __pyx_v_dapl_id) {
+  hid_t __pyx_v_r;
+  hid_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  hid_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Dcreate_anon", 0);
+
+  /* "h5py/defs.pyx":50
+ * cdef hid_t H5Dcreate_anon(hid_t file_id, hid_t type_id, hid_t space_id, hid_t plist_id, hid_t dapl_id) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Dcreate_anon(file_id, type_id, space_id, plist_id, dapl_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":51
+ *     cdef hid_t r
+ *     with rlock:
+ *         r = _hdf5.H5Dcreate_anon(file_id, type_id, space_id, plist_id, dapl_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Dcreate_anon(__pyx_v_file_id, __pyx_v_type_id, __pyx_v_space_id, __pyx_v_plist_id, __pyx_v_dapl_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":52
+ *     with rlock:
+ *         r = _hdf5.H5Dcreate_anon(file_id, type_id, space_id, plist_id, dapl_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":53
+ *         r = _hdf5.H5Dcreate_anon(file_id, type_id, space_id, plist_id, dapl_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <hid_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":54
+ *         if r<0:
+ *             if set_exception():
+ *                 return <hid_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((hid_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":55
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef hid_t H5Dopen(hid_t file_id, char *name) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":50
+ * cdef hid_t H5Dcreate_anon(hid_t file_id, hid_t type_id, hid_t space_id, hid_t plist_id, hid_t dapl_id) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Dcreate_anon(file_id, type_id, space_id, plist_id, dapl_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Dcreate_anon", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_8, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Dcreate_anon", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":57
+ *         return r
+ * 
+ * cdef hid_t H5Dopen(hid_t file_id, char *name) except *:             # <<<<<<<<<<<<<<
+ *     cdef hid_t r
+ *     with rlock:
+ */
+
+static hid_t __pyx_f_4h5py_4defs_H5Dopen(hid_t __pyx_v_file_id, char *__pyx_v_name) {
+  hid_t __pyx_v_r;
+  hid_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  hid_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Dopen", 0);
+
+  /* "h5py/defs.pyx":59
+ * cdef hid_t H5Dopen(hid_t file_id, char *name) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Dopen(file_id, name)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":60
+ *     cdef hid_t r
+ *     with rlock:
+ *         r = _hdf5.H5Dopen(file_id, name)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Dopen(__pyx_v_file_id, __pyx_v_name); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":61
+ *     with rlock:
+ *         r = _hdf5.H5Dopen(file_id, name)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":62
+ *         r = _hdf5.H5Dopen(file_id, name)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <hid_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":63
+ *         if r<0:
+ *             if set_exception():
+ *                 return <hid_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((hid_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":64
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Dclose(hid_t dset_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":59
+ * cdef hid_t H5Dopen(hid_t file_id, char *name) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Dopen(file_id, name)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Dopen", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_9, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Dopen", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":66
+ *         return r
+ * 
+ * cdef herr_t H5Dclose(hid_t dset_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Dclose(hid_t __pyx_v_dset_id) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Dclose", 0);
+
+  /* "h5py/defs.pyx":68
+ * cdef herr_t H5Dclose(hid_t dset_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Dclose(dset_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":69
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Dclose(dset_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Dclose(__pyx_v_dset_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":70
+ *     with rlock:
+ *         r = _hdf5.H5Dclose(dset_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":71
+ *         r = _hdf5.H5Dclose(dset_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":72
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":73
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef hid_t H5Dget_space(hid_t dset_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":68
+ * cdef herr_t H5Dclose(hid_t dset_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Dclose(dset_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Dclose", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_10, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Dclose", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":75
+ *         return r
+ * 
+ * cdef hid_t H5Dget_space(hid_t dset_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef hid_t r
+ *     with rlock:
+ */
+
+static hid_t __pyx_f_4h5py_4defs_H5Dget_space(hid_t __pyx_v_dset_id) {
+  hid_t __pyx_v_r;
+  hid_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  hid_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Dget_space", 0);
+
+  /* "h5py/defs.pyx":77
+ * cdef hid_t H5Dget_space(hid_t dset_id) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Dget_space(dset_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":78
+ *     cdef hid_t r
+ *     with rlock:
+ *         r = _hdf5.H5Dget_space(dset_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Dget_space(__pyx_v_dset_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":79
+ *     with rlock:
+ *         r = _hdf5.H5Dget_space(dset_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":80
+ *         r = _hdf5.H5Dget_space(dset_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <hid_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":81
+ *         if r<0:
+ *             if set_exception():
+ *                 return <hid_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((hid_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":82
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Dget_space_status(hid_t dset_id, H5D_space_status_t *status) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":77
+ * cdef hid_t H5Dget_space(hid_t dset_id) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Dget_space(dset_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Dget_space", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_11, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Dget_space", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":84
+ *         return r
+ * 
+ * cdef herr_t H5Dget_space_status(hid_t dset_id, H5D_space_status_t *status) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Dget_space_status(hid_t __pyx_v_dset_id, H5D_space_status_t *__pyx_v_status) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Dget_space_status", 0);
+
+  /* "h5py/defs.pyx":86
+ * cdef herr_t H5Dget_space_status(hid_t dset_id, H5D_space_status_t *status) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Dget_space_status(dset_id, status)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":87
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Dget_space_status(dset_id, status)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Dget_space_status(__pyx_v_dset_id, __pyx_v_status); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":88
+ *     with rlock:
+ *         r = _hdf5.H5Dget_space_status(dset_id, status)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":89
+ *         r = _hdf5.H5Dget_space_status(dset_id, status)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":90
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":91
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef hid_t H5Dget_type(hid_t dset_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":86
+ * cdef herr_t H5Dget_space_status(hid_t dset_id, H5D_space_status_t *status) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Dget_space_status(dset_id, status)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Dget_space_status", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_12, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Dget_space_status", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":93
+ *         return r
+ * 
+ * cdef hid_t H5Dget_type(hid_t dset_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef hid_t r
+ *     with rlock:
+ */
+
+static hid_t __pyx_f_4h5py_4defs_H5Dget_type(hid_t __pyx_v_dset_id) {
+  hid_t __pyx_v_r;
+  hid_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  hid_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Dget_type", 0);
+
+  /* "h5py/defs.pyx":95
+ * cdef hid_t H5Dget_type(hid_t dset_id) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Dget_type(dset_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":96
+ *     cdef hid_t r
+ *     with rlock:
+ *         r = _hdf5.H5Dget_type(dset_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Dget_type(__pyx_v_dset_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":97
+ *     with rlock:
+ *         r = _hdf5.H5Dget_type(dset_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":98
+ *         r = _hdf5.H5Dget_type(dset_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <hid_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 98; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":99
+ *         if r<0:
+ *             if set_exception():
+ *                 return <hid_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((hid_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":100
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef hid_t H5Dget_create_plist(hid_t dataset_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":95
+ * cdef hid_t H5Dget_type(hid_t dset_id) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Dget_type(dset_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Dget_type", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_13, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Dget_type", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":102
+ *         return r
+ * 
+ * cdef hid_t H5Dget_create_plist(hid_t dataset_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef hid_t r
+ *     with rlock:
+ */
+
+static hid_t __pyx_f_4h5py_4defs_H5Dget_create_plist(hid_t __pyx_v_dataset_id) {
+  hid_t __pyx_v_r;
+  hid_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  hid_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Dget_create_plist", 0);
+
+  /* "h5py/defs.pyx":104
+ * cdef hid_t H5Dget_create_plist(hid_t dataset_id) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Dget_create_plist(dataset_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":105
+ *     cdef hid_t r
+ *     with rlock:
+ *         r = _hdf5.H5Dget_create_plist(dataset_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Dget_create_plist(__pyx_v_dataset_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":106
+ *     with rlock:
+ *         r = _hdf5.H5Dget_create_plist(dataset_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":107
+ *         r = _hdf5.H5Dget_create_plist(dataset_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <hid_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":108
+ *         if r<0:
+ *             if set_exception():
+ *                 return <hid_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((hid_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":109
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef haddr_t H5Dget_offset(hid_t dset_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":104
+ * cdef hid_t H5Dget_create_plist(hid_t dataset_id) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Dget_create_plist(dataset_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Dget_create_plist", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_14, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Dget_create_plist", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":111
+ *         return r
+ * 
+ * cdef haddr_t H5Dget_offset(hid_t dset_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef haddr_t r
+ *     with rlock:
+ */
+
+static haddr_t __pyx_f_4h5py_4defs_H5Dget_offset(hid_t __pyx_v_dset_id) {
+  haddr_t __pyx_v_r;
+  haddr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  haddr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Dget_offset", 0);
+
+  /* "h5py/defs.pyx":113
+ * cdef haddr_t H5Dget_offset(hid_t dset_id) except *:
+ *     cdef haddr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Dget_offset(dset_id)
+ *         if r==0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":114
+ *     cdef haddr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Dget_offset(dset_id)             # <<<<<<<<<<<<<<
+ *         if r==0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Dget_offset(__pyx_v_dset_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":115
+ *     with rlock:
+ *         r = _hdf5.H5Dget_offset(dset_id)
+ *         if r==0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <haddr_t>0;
+ */
+          __pyx_t_9 = (__pyx_v_r == 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":116
+ *         r = _hdf5.H5Dget_offset(dset_id)
+ *         if r==0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <haddr_t>0;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":117
+ *         if r==0:
+ *             if set_exception():
+ *                 return <haddr_t>0;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((haddr_t)0);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":118
+ *             if set_exception():
+ *                 return <haddr_t>0;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef hsize_t H5Dget_storage_size(hid_t dset_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":113
+ * cdef haddr_t H5Dget_offset(hid_t dset_id) except *:
+ *     cdef haddr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Dget_offset(dset_id)
+ *         if r==0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Dget_offset", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_15, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Dget_offset", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":120
+ *         return r
+ * 
+ * cdef hsize_t H5Dget_storage_size(hid_t dset_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef hsize_t r
+ *     with rlock:
+ */
+
+static hsize_t __pyx_f_4h5py_4defs_H5Dget_storage_size(hid_t __pyx_v_dset_id) {
+  hsize_t __pyx_v_r;
+  hsize_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  hsize_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Dget_storage_size", 0);
+
+  /* "h5py/defs.pyx":122
+ * cdef hsize_t H5Dget_storage_size(hid_t dset_id) except *:
+ *     cdef hsize_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Dget_storage_size(dset_id)
+ *         if r==0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":123
+ *     cdef hsize_t r
+ *     with rlock:
+ *         r = _hdf5.H5Dget_storage_size(dset_id)             # <<<<<<<<<<<<<<
+ *         if r==0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Dget_storage_size(__pyx_v_dset_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":124
+ *     with rlock:
+ *         r = _hdf5.H5Dget_storage_size(dset_id)
+ *         if r==0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <hsize_t>0;
+ */
+          __pyx_t_9 = (__pyx_v_r == 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":125
+ *         r = _hdf5.H5Dget_storage_size(dset_id)
+ *         if r==0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <hsize_t>0;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 125; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":126
+ *         if r==0:
+ *             if set_exception():
+ *                 return <hsize_t>0;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((hsize_t)0);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":127
+ *             if set_exception():
+ *                 return <hsize_t>0;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Dread(hid_t dset_id, hid_t mem_type_id, hid_t mem_space_id, hid_t file_space_id, hid_t plist_id, void *buf) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":122
+ * cdef hsize_t H5Dget_storage_size(hid_t dset_id) except *:
+ *     cdef hsize_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Dget_storage_size(dset_id)
+ *         if r==0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Dget_storage_size", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_16, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Dget_storage_size", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":129
+ *         return r
+ * 
+ * cdef herr_t H5Dread(hid_t dset_id, hid_t mem_type_id, hid_t mem_space_id, hid_t file_space_id, hid_t plist_id, void *buf) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Dread(hid_t __pyx_v_dset_id, hid_t __pyx_v_mem_type_id, hid_t __pyx_v_mem_space_id, hid_t __pyx_v_file_space_id, hid_t __pyx_v_plist_id, void *__pyx_v_buf) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Dread", 0);
+
+  /* "h5py/defs.pyx":131
+ * cdef herr_t H5Dread(hid_t dset_id, hid_t mem_type_id, hid_t mem_space_id, hid_t file_space_id, hid_t plist_id, void *buf) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Dread(dset_id, mem_type_id, mem_space_id, file_space_id, plist_id, buf)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":132
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Dread(dset_id, mem_type_id, mem_space_id, file_space_id, plist_id, buf)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Dread(__pyx_v_dset_id, __pyx_v_mem_type_id, __pyx_v_mem_space_id, __pyx_v_file_space_id, __pyx_v_plist_id, __pyx_v_buf); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":133
+ *     with rlock:
+ *         r = _hdf5.H5Dread(dset_id, mem_type_id, mem_space_id, file_space_id, plist_id, buf)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":134
+ *         r = _hdf5.H5Dread(dset_id, mem_type_id, mem_space_id, file_space_id, plist_id, buf)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 134; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":135
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":136
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Dwrite(hid_t dset_id, hid_t mem_type, hid_t mem_space, hid_t file_space, hid_t xfer_plist, void* buf) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":131
+ * cdef herr_t H5Dread(hid_t dset_id, hid_t mem_type_id, hid_t mem_space_id, hid_t file_space_id, hid_t plist_id, void *buf) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Dread(dset_id, mem_type_id, mem_space_id, file_space_id, plist_id, buf)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Dread", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_17, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Dread", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":138
+ *         return r
+ * 
+ * cdef herr_t H5Dwrite(hid_t dset_id, hid_t mem_type, hid_t mem_space, hid_t file_space, hid_t xfer_plist, void* buf) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Dwrite(hid_t __pyx_v_dset_id, hid_t __pyx_v_mem_type, hid_t __pyx_v_mem_space, hid_t __pyx_v_file_space, hid_t __pyx_v_xfer_plist, void *__pyx_v_buf) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Dwrite", 0);
+
+  /* "h5py/defs.pyx":140
+ * cdef herr_t H5Dwrite(hid_t dset_id, hid_t mem_type, hid_t mem_space, hid_t file_space, hid_t xfer_plist, void* buf) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Dwrite(dset_id, mem_type, mem_space, file_space, xfer_plist, buf)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 140; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 140; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 140; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 140; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":141
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Dwrite(dset_id, mem_type, mem_space, file_space, xfer_plist, buf)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Dwrite(__pyx_v_dset_id, __pyx_v_mem_type, __pyx_v_mem_space, __pyx_v_file_space, __pyx_v_xfer_plist, __pyx_v_buf); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":142
+ *     with rlock:
+ *         r = _hdf5.H5Dwrite(dset_id, mem_type, mem_space, file_space, xfer_plist, buf)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":143
+ *         r = _hdf5.H5Dwrite(dset_id, mem_type, mem_space, file_space, xfer_plist, buf)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 143; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":144
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":145
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Dextend(hid_t dataset_id, hsize_t *size) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":140
+ * cdef herr_t H5Dwrite(hid_t dset_id, hid_t mem_type, hid_t mem_space, hid_t file_space, hid_t xfer_plist, void* buf) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Dwrite(dset_id, mem_type, mem_space, file_space, xfer_plist, buf)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Dwrite", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 140; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 140; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 140; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 140; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 140; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_18, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 140; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 140; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Dwrite", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":147
+ *         return r
+ * 
+ * cdef herr_t H5Dextend(hid_t dataset_id, hsize_t *size) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Dextend(hid_t __pyx_v_dataset_id, hsize_t *__pyx_v_size) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Dextend", 0);
+
+  /* "h5py/defs.pyx":149
+ * cdef herr_t H5Dextend(hid_t dataset_id, hsize_t *size) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Dextend(dataset_id, size)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 149; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 149; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":150
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Dextend(dataset_id, size)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Dextend(__pyx_v_dataset_id, __pyx_v_size); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":151
+ *     with rlock:
+ *         r = _hdf5.H5Dextend(dataset_id, size)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":152
+ *         r = _hdf5.H5Dextend(dataset_id, size)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 152; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":153
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":154
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Dfill(void *fill, hid_t fill_type_id, void *buf,  hid_t buf_type_id, hid_t space_id ) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":149
+ * cdef herr_t H5Dextend(hid_t dataset_id, hsize_t *size) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Dextend(dataset_id, size)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Dextend", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 149; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 149; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 149; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 149; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 149; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_19, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Dextend", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":156
+ *         return r
+ * 
+ * cdef herr_t H5Dfill(void *fill, hid_t fill_type_id, void *buf,  hid_t buf_type_id, hid_t space_id ) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Dfill(void *__pyx_v_fill, hid_t __pyx_v_fill_type_id, void *__pyx_v_buf, hid_t __pyx_v_buf_type_id, hid_t __pyx_v_space_id) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Dfill", 0);
+
+  /* "h5py/defs.pyx":158
+ * cdef herr_t H5Dfill(void *fill, hid_t fill_type_id, void *buf,  hid_t buf_type_id, hid_t space_id ) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Dfill(fill, fill_type_id, buf, buf_type_id, space_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":159
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Dfill(fill, fill_type_id, buf, buf_type_id, space_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Dfill(__pyx_v_fill, __pyx_v_fill_type_id, __pyx_v_buf, __pyx_v_buf_type_id, __pyx_v_space_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 159; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":160
+ *     with rlock:
+ *         r = _hdf5.H5Dfill(fill, fill_type_id, buf, buf_type_id, space_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":161
+ *         r = _hdf5.H5Dfill(fill, fill_type_id, buf, buf_type_id, space_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":162
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":163
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Dvlen_get_buf_size(hid_t dset_id, hid_t type_id, hid_t space_id, hsize_t *size) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":158
+ * cdef herr_t H5Dfill(void *fill, hid_t fill_type_id, void *buf,  hid_t buf_type_id, hid_t space_id ) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Dfill(fill, fill_type_id, buf, buf_type_id, space_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Dfill", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_20, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Dfill", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":165
+ *         return r
+ * 
+ * cdef herr_t H5Dvlen_get_buf_size(hid_t dset_id, hid_t type_id, hid_t space_id, hsize_t *size) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Dvlen_get_buf_size(hid_t __pyx_v_dset_id, hid_t __pyx_v_type_id, hid_t __pyx_v_space_id, hsize_t *__pyx_v_size) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Dvlen_get_buf_size", 0);
+
+  /* "h5py/defs.pyx":167
+ * cdef herr_t H5Dvlen_get_buf_size(hid_t dset_id, hid_t type_id, hid_t space_id, hsize_t *size) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Dvlen_get_buf_size(dset_id, type_id, space_id, size)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 167; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 167; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":168
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Dvlen_get_buf_size(dset_id, type_id, space_id, size)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Dvlen_get_buf_size(__pyx_v_dset_id, __pyx_v_type_id, __pyx_v_space_id, __pyx_v_size); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 168; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":169
+ *     with rlock:
+ *         r = _hdf5.H5Dvlen_get_buf_size(dset_id, type_id, space_id, size)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":170
+ *         r = _hdf5.H5Dvlen_get_buf_size(dset_id, type_id, space_id, size)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":171
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":172
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Dvlen_reclaim(hid_t type_id, hid_t space_id,  hid_t plist, void *buf) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":167
+ * cdef herr_t H5Dvlen_get_buf_size(hid_t dset_id, hid_t type_id, hid_t space_id, hsize_t *size) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Dvlen_get_buf_size(dset_id, type_id, space_id, size)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Dvlen_get_buf_size", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 167; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 167; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 167; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 167; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 167; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_21, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Dvlen_get_buf_size", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":174
+ *         return r
+ * 
+ * cdef herr_t H5Dvlen_reclaim(hid_t type_id, hid_t space_id,  hid_t plist, void *buf) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Dvlen_reclaim(hid_t __pyx_v_type_id, hid_t __pyx_v_space_id, hid_t __pyx_v_plist, void *__pyx_v_buf) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Dvlen_reclaim", 0);
+
+  /* "h5py/defs.pyx":176
+ * cdef herr_t H5Dvlen_reclaim(hid_t type_id, hid_t space_id,  hid_t plist, void *buf) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Dvlen_reclaim(type_id, space_id, plist, buf)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 176; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 176; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 176; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 176; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":177
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Dvlen_reclaim(type_id, space_id, plist, buf)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Dvlen_reclaim(__pyx_v_type_id, __pyx_v_space_id, __pyx_v_plist, __pyx_v_buf); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 177; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":178
+ *     with rlock:
+ *         r = _hdf5.H5Dvlen_reclaim(type_id, space_id, plist, buf)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":179
+ *         r = _hdf5.H5Dvlen_reclaim(type_id, space_id, plist, buf)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 179; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":180
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":181
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Diterate(void *buf, hid_t type_id, hid_t space_id,  H5D_operator_t op, void* operator_data) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":176
+ * cdef herr_t H5Dvlen_reclaim(hid_t type_id, hid_t space_id,  hid_t plist, void *buf) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Dvlen_reclaim(type_id, space_id, plist, buf)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Dvlen_reclaim", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 176; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 176; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 176; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 176; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 176; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_22, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 176; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 176; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Dvlen_reclaim", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":183
+ *         return r
+ * 
+ * cdef herr_t H5Diterate(void *buf, hid_t type_id, hid_t space_id,  H5D_operator_t op, void* operator_data) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Diterate(void *__pyx_v_buf, hid_t __pyx_v_type_id, hid_t __pyx_v_space_id, H5D_operator_t __pyx_v_op, void *__pyx_v_operator_data) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Diterate", 0);
+
+  /* "h5py/defs.pyx":185
+ * cdef herr_t H5Diterate(void *buf, hid_t type_id, hid_t space_id,  H5D_operator_t op, void* operator_data) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Diterate(buf, type_id, space_id, op, operator_data)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 185; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 185; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 185; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 185; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":186
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Diterate(buf, type_id, space_id, op, operator_data)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Diterate(__pyx_v_buf, __pyx_v_type_id, __pyx_v_space_id, __pyx_v_op, __pyx_v_operator_data); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":187
+ *     with rlock:
+ *         r = _hdf5.H5Diterate(buf, type_id, space_id, op, operator_data)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":188
+ *         r = _hdf5.H5Diterate(buf, type_id, space_id, op, operator_data)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 188; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":189
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":190
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Dset_extent(hid_t dset_id, hsize_t* size) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":185
+ * cdef herr_t H5Diterate(void *buf, hid_t type_id, hid_t space_id,  H5D_operator_t op, void* operator_data) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Diterate(buf, type_id, space_id, op, operator_data)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Diterate", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 185; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 185; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 185; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 185; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 185; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_23, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 185; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 185; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Diterate", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":192
+ *         return r
+ * 
+ * cdef herr_t H5Dset_extent(hid_t dset_id, hsize_t* size) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Dset_extent(hid_t __pyx_v_dset_id, hsize_t *__pyx_v_size) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Dset_extent", 0);
+
+  /* "h5py/defs.pyx":194
+ * cdef herr_t H5Dset_extent(hid_t dset_id, hsize_t* size) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Dset_extent(dset_id, size)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 194; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 194; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 194; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 194; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":195
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Dset_extent(dset_id, size)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Dset_extent(__pyx_v_dset_id, __pyx_v_size); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 195; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":196
+ *     with rlock:
+ *         r = _hdf5.H5Dset_extent(dset_id, size)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":197
+ *         r = _hdf5.H5Dset_extent(dset_id, size)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 197; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":198
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":199
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef hid_t H5Fcreate(char *filename, unsigned int flags, hid_t create_plist, hid_t access_plist) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":194
+ * cdef herr_t H5Dset_extent(hid_t dset_id, hsize_t* size) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Dset_extent(dset_id, size)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Dset_extent", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 194; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 194; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 194; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 194; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 194; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_24, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 194; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 194; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Dset_extent", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":201
+ *         return r
+ * 
+ * cdef hid_t H5Fcreate(char *filename, unsigned int flags, hid_t create_plist, hid_t access_plist) except *:             # <<<<<<<<<<<<<<
+ *     cdef hid_t r
+ *     with rlock:
+ */
+
+static hid_t __pyx_f_4h5py_4defs_H5Fcreate(char *__pyx_v_filename, unsigned int __pyx_v_flags, hid_t __pyx_v_create_plist, hid_t __pyx_v_access_plist) {
+  hid_t __pyx_v_r;
+  hid_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  hid_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Fcreate", 0);
+
+  /* "h5py/defs.pyx":203
+ * cdef hid_t H5Fcreate(char *filename, unsigned int flags, hid_t create_plist, hid_t access_plist) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Fcreate(filename, flags, create_plist, access_plist)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 203; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 203; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 203; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 203; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":204
+ *     cdef hid_t r
+ *     with rlock:
+ *         r = _hdf5.H5Fcreate(filename, flags, create_plist, access_plist)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Fcreate(__pyx_v_filename, __pyx_v_flags, __pyx_v_create_plist, __pyx_v_access_plist); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 204; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":205
+ *     with rlock:
+ *         r = _hdf5.H5Fcreate(filename, flags, create_plist, access_plist)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":206
+ *         r = _hdf5.H5Fcreate(filename, flags, create_plist, access_plist)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <hid_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 206; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":207
+ *         if r<0:
+ *             if set_exception():
+ *                 return <hid_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((hid_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":208
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef hid_t H5Fopen(char *name, unsigned flags, hid_t access_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":203
+ * cdef hid_t H5Fcreate(char *filename, unsigned int flags, hid_t create_plist, hid_t access_plist) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Fcreate(filename, flags, create_plist, access_plist)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Fcreate", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 203; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 203; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 203; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 203; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 203; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_25, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 203; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 203; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Fcreate", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":210
+ *         return r
+ * 
+ * cdef hid_t H5Fopen(char *name, unsigned flags, hid_t access_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef hid_t r
+ *     with rlock:
+ */
+
+static hid_t __pyx_f_4h5py_4defs_H5Fopen(char *__pyx_v_name, unsigned int __pyx_v_flags, hid_t __pyx_v_access_id) {
+  hid_t __pyx_v_r;
+  hid_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  hid_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Fopen", 0);
+
+  /* "h5py/defs.pyx":212
+ * cdef hid_t H5Fopen(char *name, unsigned flags, hid_t access_id) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Fopen(name, flags, access_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":213
+ *     cdef hid_t r
+ *     with rlock:
+ *         r = _hdf5.H5Fopen(name, flags, access_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Fopen(__pyx_v_name, __pyx_v_flags, __pyx_v_access_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 213; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":214
+ *     with rlock:
+ *         r = _hdf5.H5Fopen(name, flags, access_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":215
+ *         r = _hdf5.H5Fopen(name, flags, access_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <hid_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 215; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":216
+ *         if r<0:
+ *             if set_exception():
+ *                 return <hid_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((hid_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":217
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Fclose(hid_t file_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":212
+ * cdef hid_t H5Fopen(char *name, unsigned flags, hid_t access_id) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Fopen(name, flags, access_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Fopen", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_26, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Fopen", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":219
+ *         return r
+ * 
+ * cdef herr_t H5Fclose(hid_t file_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Fclose(hid_t __pyx_v_file_id) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Fclose", 0);
+
+  /* "h5py/defs.pyx":221
+ * cdef herr_t H5Fclose(hid_t file_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Fclose(file_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 221; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 221; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 221; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 221; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":222
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Fclose(file_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Fclose(__pyx_v_file_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 222; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":223
+ *     with rlock:
+ *         r = _hdf5.H5Fclose(file_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":224
+ *         r = _hdf5.H5Fclose(file_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 224; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":225
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":226
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef htri_t H5Fis_hdf5(char *name) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":221
+ * cdef herr_t H5Fclose(hid_t file_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Fclose(file_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Fclose", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 221; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 221; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 221; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 221; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 221; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_27, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 221; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 221; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Fclose", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":228
+ *         return r
+ * 
+ * cdef htri_t H5Fis_hdf5(char *name) except *:             # <<<<<<<<<<<<<<
+ *     cdef htri_t r
+ *     with rlock:
+ */
+
+static htri_t __pyx_f_4h5py_4defs_H5Fis_hdf5(char *__pyx_v_name) {
+  htri_t __pyx_v_r;
+  htri_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  htri_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Fis_hdf5", 0);
+
+  /* "h5py/defs.pyx":230
+ * cdef htri_t H5Fis_hdf5(char *name) except *:
+ *     cdef htri_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Fis_hdf5(name)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 230; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 230; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 230; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 230; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":231
+ *     cdef htri_t r
+ *     with rlock:
+ *         r = _hdf5.H5Fis_hdf5(name)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Fis_hdf5(__pyx_v_name); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":232
+ *     with rlock:
+ *         r = _hdf5.H5Fis_hdf5(name)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <htri_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":233
+ *         r = _hdf5.H5Fis_hdf5(name)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <htri_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":234
+ *         if r<0:
+ *             if set_exception():
+ *                 return <htri_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((htri_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":235
+ *             if set_exception():
+ *                 return <htri_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Fflush(hid_t object_id, H5F_scope_t scope) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":230
+ * cdef htri_t H5Fis_hdf5(char *name) except *:
+ *     cdef htri_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Fis_hdf5(name)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Fis_hdf5", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 230; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 230; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 230; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 230; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 230; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_28, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 230; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 230; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Fis_hdf5", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":237
+ *         return r
+ * 
+ * cdef herr_t H5Fflush(hid_t object_id, H5F_scope_t scope) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Fflush(hid_t __pyx_v_object_id, enum H5F_scope_t __pyx_v_scope) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Fflush", 0);
+
+  /* "h5py/defs.pyx":239
+ * cdef herr_t H5Fflush(hid_t object_id, H5F_scope_t scope) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Fflush(object_id, scope)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 239; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 239; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 239; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 239; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":240
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Fflush(object_id, scope)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Fflush(__pyx_v_object_id, __pyx_v_scope); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 240; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":241
+ *     with rlock:
+ *         r = _hdf5.H5Fflush(object_id, scope)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":242
+ *         r = _hdf5.H5Fflush(object_id, scope)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 242; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":243
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":244
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef hid_t H5Freopen(hid_t file_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":239
+ * cdef herr_t H5Fflush(hid_t object_id, H5F_scope_t scope) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Fflush(object_id, scope)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Fflush", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 239; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 239; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 239; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 239; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 239; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_29, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 239; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 239; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Fflush", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":246
+ *         return r
+ * 
+ * cdef hid_t H5Freopen(hid_t file_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef hid_t r
+ *     with rlock:
+ */
+
+static hid_t __pyx_f_4h5py_4defs_H5Freopen(hid_t __pyx_v_file_id) {
+  hid_t __pyx_v_r;
+  hid_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  hid_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Freopen", 0);
+
+  /* "h5py/defs.pyx":248
+ * cdef hid_t H5Freopen(hid_t file_id) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Freopen(file_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 248; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 248; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 248; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 248; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":249
+ *     cdef hid_t r
+ *     with rlock:
+ *         r = _hdf5.H5Freopen(file_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Freopen(__pyx_v_file_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":250
+ *     with rlock:
+ *         r = _hdf5.H5Freopen(file_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":251
+ *         r = _hdf5.H5Freopen(file_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <hid_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":252
+ *         if r<0:
+ *             if set_exception():
+ *                 return <hid_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((hid_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":253
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Fmount(hid_t loc_id, char *name, hid_t child_id, hid_t plist_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":248
+ * cdef hid_t H5Freopen(hid_t file_id) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Freopen(file_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Freopen", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 248; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 248; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 248; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 248; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 248; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_30, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 248; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 248; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Freopen", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":255
+ *         return r
+ * 
+ * cdef herr_t H5Fmount(hid_t loc_id, char *name, hid_t child_id, hid_t plist_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Fmount(hid_t __pyx_v_loc_id, char *__pyx_v_name, hid_t __pyx_v_child_id, hid_t __pyx_v_plist_id) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Fmount", 0);
+
+  /* "h5py/defs.pyx":257
+ * cdef herr_t H5Fmount(hid_t loc_id, char *name, hid_t child_id, hid_t plist_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Fmount(loc_id, name, child_id, plist_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":258
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Fmount(loc_id, name, child_id, plist_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Fmount(__pyx_v_loc_id, __pyx_v_name, __pyx_v_child_id, __pyx_v_plist_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 258; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":259
+ *     with rlock:
+ *         r = _hdf5.H5Fmount(loc_id, name, child_id, plist_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":260
+ *         r = _hdf5.H5Fmount(loc_id, name, child_id, plist_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 260; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":261
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":262
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Funmount(hid_t loc_id, char *name) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":257
+ * cdef herr_t H5Fmount(hid_t loc_id, char *name, hid_t child_id, hid_t plist_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Fmount(loc_id, name, child_id, plist_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Fmount", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_31, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Fmount", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":264
+ *         return r
+ * 
+ * cdef herr_t H5Funmount(hid_t loc_id, char *name) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Funmount(hid_t __pyx_v_loc_id, char *__pyx_v_name) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Funmount", 0);
+
+  /* "h5py/defs.pyx":266
+ * cdef herr_t H5Funmount(hid_t loc_id, char *name) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Funmount(loc_id, name)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 266; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 266; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 266; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 266; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":267
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Funmount(loc_id, name)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Funmount(__pyx_v_loc_id, __pyx_v_name); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 267; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":268
+ *     with rlock:
+ *         r = _hdf5.H5Funmount(loc_id, name)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":269
+ *         r = _hdf5.H5Funmount(loc_id, name)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 269; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":270
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":271
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Fget_filesize(hid_t file_id, hsize_t *size) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":266
+ * cdef herr_t H5Funmount(hid_t loc_id, char *name) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Funmount(loc_id, name)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Funmount", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 266; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 266; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 266; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 266; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 266; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_32, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 266; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 266; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Funmount", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":273
+ *         return r
+ * 
+ * cdef herr_t H5Fget_filesize(hid_t file_id, hsize_t *size) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Fget_filesize(hid_t __pyx_v_file_id, hsize_t *__pyx_v_size) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Fget_filesize", 0);
+
+  /* "h5py/defs.pyx":275
+ * cdef herr_t H5Fget_filesize(hid_t file_id, hsize_t *size) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Fget_filesize(file_id, size)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 275; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 275; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 275; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 275; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":276
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Fget_filesize(file_id, size)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Fget_filesize(__pyx_v_file_id, __pyx_v_size); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 276; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":277
+ *     with rlock:
+ *         r = _hdf5.H5Fget_filesize(file_id, size)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":278
+ *         r = _hdf5.H5Fget_filesize(file_id, size)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 278; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":279
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":280
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef hid_t H5Fget_create_plist(hid_t file_id ) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":275
+ * cdef herr_t H5Fget_filesize(hid_t file_id, hsize_t *size) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Fget_filesize(file_id, size)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Fget_filesize", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 275; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 275; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 275; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 275; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 275; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_33, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 275; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 275; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Fget_filesize", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":282
+ *         return r
+ * 
+ * cdef hid_t H5Fget_create_plist(hid_t file_id ) except *:             # <<<<<<<<<<<<<<
+ *     cdef hid_t r
+ *     with rlock:
+ */
+
+static hid_t __pyx_f_4h5py_4defs_H5Fget_create_plist(hid_t __pyx_v_file_id) {
+  hid_t __pyx_v_r;
+  hid_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  hid_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Fget_create_plist", 0);
+
+  /* "h5py/defs.pyx":284
+ * cdef hid_t H5Fget_create_plist(hid_t file_id ) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Fget_create_plist(file_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 284; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 284; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 284; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 284; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":285
+ *     cdef hid_t r
+ *     with rlock:
+ *         r = _hdf5.H5Fget_create_plist(file_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Fget_create_plist(__pyx_v_file_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 285; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":286
+ *     with rlock:
+ *         r = _hdf5.H5Fget_create_plist(file_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":287
+ *         r = _hdf5.H5Fget_create_plist(file_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <hid_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 287; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":288
+ *         if r<0:
+ *             if set_exception():
+ *                 return <hid_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((hid_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":289
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef hid_t H5Fget_access_plist(hid_t file_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":284
+ * cdef hid_t H5Fget_create_plist(hid_t file_id ) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Fget_create_plist(file_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Fget_create_plist", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 284; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 284; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 284; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 284; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 284; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_34, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 284; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 284; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Fget_create_plist", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":291
+ *         return r
+ * 
+ * cdef hid_t H5Fget_access_plist(hid_t file_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef hid_t r
+ *     with rlock:
+ */
+
+static hid_t __pyx_f_4h5py_4defs_H5Fget_access_plist(hid_t __pyx_v_file_id) {
+  hid_t __pyx_v_r;
+  hid_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  hid_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Fget_access_plist", 0);
+
+  /* "h5py/defs.pyx":293
+ * cdef hid_t H5Fget_access_plist(hid_t file_id) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Fget_access_plist(file_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 293; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 293; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 293; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 293; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":294
+ *     cdef hid_t r
+ *     with rlock:
+ *         r = _hdf5.H5Fget_access_plist(file_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Fget_access_plist(__pyx_v_file_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 294; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":295
+ *     with rlock:
+ *         r = _hdf5.H5Fget_access_plist(file_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":296
+ *         r = _hdf5.H5Fget_access_plist(file_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <hid_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 296; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":297
+ *         if r<0:
+ *             if set_exception():
+ *                 return <hid_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((hid_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":298
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef hssize_t H5Fget_freespace(hid_t file_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":293
+ * cdef hid_t H5Fget_access_plist(hid_t file_id) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Fget_access_plist(file_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Fget_access_plist", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 293; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 293; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 293; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 293; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 293; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_35, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 293; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 293; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Fget_access_plist", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":300
+ *         return r
+ * 
+ * cdef hssize_t H5Fget_freespace(hid_t file_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef hssize_t r
+ *     with rlock:
+ */
+
+static hssize_t __pyx_f_4h5py_4defs_H5Fget_freespace(hid_t __pyx_v_file_id) {
+  hssize_t __pyx_v_r;
+  hssize_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  hssize_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Fget_freespace", 0);
+
+  /* "h5py/defs.pyx":302
+ * cdef hssize_t H5Fget_freespace(hid_t file_id) except *:
+ *     cdef hssize_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Fget_freespace(file_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 302; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 302; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 302; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 302; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":303
+ *     cdef hssize_t r
+ *     with rlock:
+ *         r = _hdf5.H5Fget_freespace(file_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Fget_freespace(__pyx_v_file_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 303; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":304
+ *     with rlock:
+ *         r = _hdf5.H5Fget_freespace(file_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <hssize_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":305
+ *         r = _hdf5.H5Fget_freespace(file_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <hssize_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":306
+ *         if r<0:
+ *             if set_exception():
+ *                 return <hssize_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((hssize_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":307
+ *             if set_exception():
+ *                 return <hssize_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef ssize_t H5Fget_name(hid_t obj_id, char *name, size_t size) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":302
+ * cdef hssize_t H5Fget_freespace(hid_t file_id) except *:
+ *     cdef hssize_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Fget_freespace(file_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Fget_freespace", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 302; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 302; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 302; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 302; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 302; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_36, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 302; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 302; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Fget_freespace", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":309
+ *         return r
+ * 
+ * cdef ssize_t H5Fget_name(hid_t obj_id, char *name, size_t size) except *:             # <<<<<<<<<<<<<<
+ *     cdef ssize_t r
+ *     with rlock:
+ */
+
+static Py_ssize_t __pyx_f_4h5py_4defs_H5Fget_name(hid_t __pyx_v_obj_id, char *__pyx_v_name, size_t __pyx_v_size) {
+  Py_ssize_t __pyx_v_r;
+  Py_ssize_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  Py_ssize_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Fget_name", 0);
+
+  /* "h5py/defs.pyx":311
+ * cdef ssize_t H5Fget_name(hid_t obj_id, char *name, size_t size) except *:
+ *     cdef ssize_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Fget_name(obj_id, name, size)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 311; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 311; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 311; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 311; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":312
+ *     cdef ssize_t r
+ *     with rlock:
+ *         r = _hdf5.H5Fget_name(obj_id, name, size)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Fget_name(__pyx_v_obj_id, __pyx_v_name, __pyx_v_size); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":313
+ *     with rlock:
+ *         r = _hdf5.H5Fget_name(obj_id, name, size)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <ssize_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":314
+ *         r = _hdf5.H5Fget_name(obj_id, name, size)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <ssize_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 314; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":315
+ *         if r<0:
+ *             if set_exception():
+ *                 return <ssize_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((Py_ssize_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":316
+ *             if set_exception():
+ *                 return <ssize_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef int H5Fget_obj_count(hid_t file_id, unsigned int types) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":311
+ * cdef ssize_t H5Fget_name(hid_t obj_id, char *name, size_t size) except *:
+ *     cdef ssize_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Fget_name(obj_id, name, size)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Fget_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 311; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 311; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 311; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 311; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 311; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_37, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 311; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 311; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Fget_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":318
+ *         return r
+ * 
+ * cdef int H5Fget_obj_count(hid_t file_id, unsigned int types) except *:             # <<<<<<<<<<<<<<
+ *     cdef int r
+ *     with rlock:
+ */
+
+static int __pyx_f_4h5py_4defs_H5Fget_obj_count(hid_t __pyx_v_file_id, unsigned int __pyx_v_types) {
+  int __pyx_v_r;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  int __pyx_t_8;
+  int __pyx_t_9;
+  PyObject *__pyx_t_10 = NULL;
+  PyObject *__pyx_t_11 = NULL;
+  int __pyx_t_12;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Fget_obj_count", 0);
+
+  /* "h5py/defs.pyx":320
+ * cdef int H5Fget_obj_count(hid_t file_id, unsigned int types) except *:
+ *     cdef int r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Fget_obj_count(file_id, types)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 320; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 320; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 320; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 320; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":321
+ *     cdef int r
+ *     with rlock:
+ *         r = _hdf5.H5Fget_obj_count(file_id, types)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Fget_obj_count(__pyx_v_file_id, __pyx_v_types); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 321; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":322
+ *     with rlock:
+ *         r = _hdf5.H5Fget_obj_count(file_id, types)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <int>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":323
+ *         r = _hdf5.H5Fget_obj_count(file_id, types)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <int>-1;
+ *         return r
+ */
+            __pyx_t_8 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 323; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_8) {
+
+              /* "h5py/defs.pyx":324
+ *         if r<0:
+ *             if set_exception():
+ *                 return <int>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((int)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":325
+ *             if set_exception():
+ *                 return <int>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef int H5Fget_obj_ids(hid_t file_id, unsigned int types, int max_objs, hid_t *obj_id_list) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":320
+ * cdef int H5Fget_obj_count(hid_t file_id, unsigned int types) except *:
+ *     cdef int r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Fget_obj_count(file_id, types)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Fget_obj_count", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 320; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_10 = PyTuple_New(3); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 320; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_10);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_10, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_11 = PyObject_Call(__pyx_t_2, __pyx_t_10, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 320; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_11);
+          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 320; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_12 = (!__pyx_t_9);
+          if (__pyx_t_12) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 320; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_10)); __pyx_t_10 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_38, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 320; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 320; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_10);
+  __Pyx_AddTraceback("h5py.defs.H5Fget_obj_count", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":327
+ *         return r
+ * 
+ * cdef int H5Fget_obj_ids(hid_t file_id, unsigned int types, int max_objs, hid_t *obj_id_list) except *:             # <<<<<<<<<<<<<<
+ *     cdef int r
+ *     with rlock:
+ */
+
+static int __pyx_f_4h5py_4defs_H5Fget_obj_ids(hid_t __pyx_v_file_id, unsigned int __pyx_v_types, int __pyx_v_max_objs, hid_t *__pyx_v_obj_id_list) {
+  int __pyx_v_r;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  int __pyx_t_8;
+  int __pyx_t_9;
+  PyObject *__pyx_t_10 = NULL;
+  PyObject *__pyx_t_11 = NULL;
+  int __pyx_t_12;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Fget_obj_ids", 0);
+
+  /* "h5py/defs.pyx":329
+ * cdef int H5Fget_obj_ids(hid_t file_id, unsigned int types, int max_objs, hid_t *obj_id_list) except *:
+ *     cdef int r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Fget_obj_ids(file_id, types, max_objs, obj_id_list)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 329; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 329; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 329; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 329; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":330
+ *     cdef int r
+ *     with rlock:
+ *         r = _hdf5.H5Fget_obj_ids(file_id, types, max_objs, obj_id_list)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Fget_obj_ids(__pyx_v_file_id, __pyx_v_types, __pyx_v_max_objs, __pyx_v_obj_id_list); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 330; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":331
+ *     with rlock:
+ *         r = _hdf5.H5Fget_obj_ids(file_id, types, max_objs, obj_id_list)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <int>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":332
+ *         r = _hdf5.H5Fget_obj_ids(file_id, types, max_objs, obj_id_list)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <int>-1;
+ *         return r
+ */
+            __pyx_t_8 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 332; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_8) {
+
+              /* "h5py/defs.pyx":333
+ *         if r<0:
+ *             if set_exception():
+ *                 return <int>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((int)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":334
+ *             if set_exception():
+ *                 return <int>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Fget_vfd_handle(hid_t file_id, hid_t fapl_id, void **file_handle) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":329
+ * cdef int H5Fget_obj_ids(hid_t file_id, unsigned int types, int max_objs, hid_t *obj_id_list) except *:
+ *     cdef int r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Fget_obj_ids(file_id, types, max_objs, obj_id_list)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Fget_obj_ids", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 329; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_10 = PyTuple_New(3); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 329; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_10);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_10, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_11 = PyObject_Call(__pyx_t_2, __pyx_t_10, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 329; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_11);
+          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 329; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_12 = (!__pyx_t_9);
+          if (__pyx_t_12) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 329; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_10)); __pyx_t_10 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_39, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 329; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 329; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_10);
+  __Pyx_AddTraceback("h5py.defs.H5Fget_obj_ids", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":336
+ *         return r
+ * 
+ * cdef herr_t H5Fget_vfd_handle(hid_t file_id, hid_t fapl_id, void **file_handle) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Fget_vfd_handle(hid_t __pyx_v_file_id, hid_t __pyx_v_fapl_id, void **__pyx_v_file_handle) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Fget_vfd_handle", 0);
+
+  /* "h5py/defs.pyx":338
+ * cdef herr_t H5Fget_vfd_handle(hid_t file_id, hid_t fapl_id, void **file_handle) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Fget_vfd_handle(file_id, fapl_id, file_handle)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 338; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 338; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 338; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 338; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":339
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Fget_vfd_handle(file_id, fapl_id, file_handle)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Fget_vfd_handle(__pyx_v_file_id, __pyx_v_fapl_id, __pyx_v_file_handle); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 339; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":340
+ *     with rlock:
+ *         r = _hdf5.H5Fget_vfd_handle(file_id, fapl_id, file_handle)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":341
+ *         r = _hdf5.H5Fget_vfd_handle(file_id, fapl_id, file_handle)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 341; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":342
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":343
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Fget_intent(hid_t file_id, unsigned int *intent) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":338
+ * cdef herr_t H5Fget_vfd_handle(hid_t file_id, hid_t fapl_id, void **file_handle) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Fget_vfd_handle(file_id, fapl_id, file_handle)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Fget_vfd_handle", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 338; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 338; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 338; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 338; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 338; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_40, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 338; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 338; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Fget_vfd_handle", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":345
+ *         return r
+ * 
+ * cdef herr_t H5Fget_intent(hid_t file_id, unsigned int *intent) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Fget_intent(hid_t __pyx_v_file_id, unsigned int *__pyx_v_intent) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Fget_intent", 0);
+
+  /* "h5py/defs.pyx":347
+ * cdef herr_t H5Fget_intent(hid_t file_id, unsigned int *intent) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Fget_intent(file_id, intent)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 347; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 347; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 347; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 347; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":348
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Fget_intent(file_id, intent)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Fget_intent(__pyx_v_file_id, __pyx_v_intent); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 348; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":349
+ *     with rlock:
+ *         r = _hdf5.H5Fget_intent(file_id, intent)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":350
+ *         r = _hdf5.H5Fget_intent(file_id, intent)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 350; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":351
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":352
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Fget_mdc_config(hid_t file_id, H5AC_cache_config_t *config_ptr) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":347
+ * cdef herr_t H5Fget_intent(hid_t file_id, unsigned int *intent) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Fget_intent(file_id, intent)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Fget_intent", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 347; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 347; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 347; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 347; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 347; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_41, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 347; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 347; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Fget_intent", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":354
+ *         return r
+ * 
+ * cdef herr_t H5Fget_mdc_config(hid_t file_id, H5AC_cache_config_t *config_ptr) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Fget_mdc_config(hid_t __pyx_v_file_id, H5AC_cache_config_t *__pyx_v_config_ptr) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Fget_mdc_config", 0);
+
+  /* "h5py/defs.pyx":356
+ * cdef herr_t H5Fget_mdc_config(hid_t file_id, H5AC_cache_config_t *config_ptr) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Fget_mdc_config(file_id, config_ptr)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 356; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 356; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 356; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 356; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":357
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Fget_mdc_config(file_id, config_ptr)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Fget_mdc_config(__pyx_v_file_id, __pyx_v_config_ptr); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 357; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":358
+ *     with rlock:
+ *         r = _hdf5.H5Fget_mdc_config(file_id, config_ptr)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":359
+ *         r = _hdf5.H5Fget_mdc_config(file_id, config_ptr)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 359; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":360
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":361
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Fget_mdc_hit_rate(hid_t file_id, double *hit_rate_ptr) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":356
+ * cdef herr_t H5Fget_mdc_config(hid_t file_id, H5AC_cache_config_t *config_ptr) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Fget_mdc_config(file_id, config_ptr)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Fget_mdc_config", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 356; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 356; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 356; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 356; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 356; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_42, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 356; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 356; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Fget_mdc_config", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":363
+ *         return r
+ * 
+ * cdef herr_t H5Fget_mdc_hit_rate(hid_t file_id, double *hit_rate_ptr) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Fget_mdc_hit_rate(hid_t __pyx_v_file_id, double *__pyx_v_hit_rate_ptr) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Fget_mdc_hit_rate", 0);
+
+  /* "h5py/defs.pyx":365
+ * cdef herr_t H5Fget_mdc_hit_rate(hid_t file_id, double *hit_rate_ptr) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Fget_mdc_hit_rate(file_id, hit_rate_ptr)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 365; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 365; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 365; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 365; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":366
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Fget_mdc_hit_rate(file_id, hit_rate_ptr)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Fget_mdc_hit_rate(__pyx_v_file_id, __pyx_v_hit_rate_ptr); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 366; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":367
+ *     with rlock:
+ *         r = _hdf5.H5Fget_mdc_hit_rate(file_id, hit_rate_ptr)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":368
+ *         r = _hdf5.H5Fget_mdc_hit_rate(file_id, hit_rate_ptr)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 368; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":369
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":370
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Fget_mdc_size(hid_t file_id, size_t *max_size_ptr, size_t *min_clean_size_ptr, size_t *cur_size_ptr, int *cur_num_entries_ptr) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":365
+ * cdef herr_t H5Fget_mdc_hit_rate(hid_t file_id, double *hit_rate_ptr) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Fget_mdc_hit_rate(file_id, hit_rate_ptr)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Fget_mdc_hit_rate", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 365; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 365; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 365; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 365; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 365; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_43, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 365; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 365; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Fget_mdc_hit_rate", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":372
+ *         return r
+ * 
+ * cdef herr_t H5Fget_mdc_size(hid_t file_id, size_t *max_size_ptr, size_t *min_clean_size_ptr, size_t *cur_size_ptr, int *cur_num_entries_ptr) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Fget_mdc_size(hid_t __pyx_v_file_id, size_t *__pyx_v_max_size_ptr, size_t *__pyx_v_min_clean_size_ptr, size_t *__pyx_v_cur_size_ptr, int *__pyx_v_cur_num_entries_ptr) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Fget_mdc_size", 0);
+
+  /* "h5py/defs.pyx":374
+ * cdef herr_t H5Fget_mdc_size(hid_t file_id, size_t *max_size_ptr, size_t *min_clean_size_ptr, size_t *cur_size_ptr, int *cur_num_entries_ptr) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Fget_mdc_size(file_id, max_size_ptr, min_clean_size_ptr, cur_size_ptr, cur_num_entries_ptr)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 374; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 374; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 374; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 374; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":375
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Fget_mdc_size(file_id, max_size_ptr, min_clean_size_ptr, cur_size_ptr, cur_num_entries_ptr)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Fget_mdc_size(__pyx_v_file_id, __pyx_v_max_size_ptr, __pyx_v_min_clean_size_ptr, __pyx_v_cur_size_ptr, __pyx_v_cur_num_entries_ptr); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 375; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":376
+ *     with rlock:
+ *         r = _hdf5.H5Fget_mdc_size(file_id, max_size_ptr, min_clean_size_ptr, cur_size_ptr, cur_num_entries_ptr)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":377
+ *         r = _hdf5.H5Fget_mdc_size(file_id, max_size_ptr, min_clean_size_ptr, cur_size_ptr, cur_num_entries_ptr)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 377; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":378
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":379
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Freset_mdc_hit_rate_stats(hid_t file_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":374
+ * cdef herr_t H5Fget_mdc_size(hid_t file_id, size_t *max_size_ptr, size_t *min_clean_size_ptr, size_t *cur_size_ptr, int *cur_num_entries_ptr) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Fget_mdc_size(file_id, max_size_ptr, min_clean_size_ptr, cur_size_ptr, cur_num_entries_ptr)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Fget_mdc_size", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 374; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 374; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 374; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 374; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 374; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_44, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 374; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 374; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Fget_mdc_size", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":381
+ *         return r
+ * 
+ * cdef herr_t H5Freset_mdc_hit_rate_stats(hid_t file_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Freset_mdc_hit_rate_stats(hid_t __pyx_v_file_id) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Freset_mdc_hit_rate_stats", 0);
+
+  /* "h5py/defs.pyx":383
+ * cdef herr_t H5Freset_mdc_hit_rate_stats(hid_t file_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Freset_mdc_hit_rate_stats(file_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 383; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 383; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 383; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 383; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":384
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Freset_mdc_hit_rate_stats(file_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Freset_mdc_hit_rate_stats(__pyx_v_file_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":385
+ *     with rlock:
+ *         r = _hdf5.H5Freset_mdc_hit_rate_stats(file_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":386
+ *         r = _hdf5.H5Freset_mdc_hit_rate_stats(file_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 386; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":387
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":388
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Fset_mdc_config(hid_t file_id, H5AC_cache_config_t *config_ptr) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":383
+ * cdef herr_t H5Freset_mdc_hit_rate_stats(hid_t file_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Freset_mdc_hit_rate_stats(file_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Freset_mdc_hit_rate_stats", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 383; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 383; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 383; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 383; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 383; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_45, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 383; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 383; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Freset_mdc_hit_rate_stats", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":390
+ *         return r
+ * 
+ * cdef herr_t H5Fset_mdc_config(hid_t file_id, H5AC_cache_config_t *config_ptr) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Fset_mdc_config(hid_t __pyx_v_file_id, H5AC_cache_config_t *__pyx_v_config_ptr) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Fset_mdc_config", 0);
+
+  /* "h5py/defs.pyx":392
+ * cdef herr_t H5Fset_mdc_config(hid_t file_id, H5AC_cache_config_t *config_ptr) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Fset_mdc_config(file_id, config_ptr)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 392; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 392; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 392; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 392; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":393
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Fset_mdc_config(file_id, config_ptr)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Fset_mdc_config(__pyx_v_file_id, __pyx_v_config_ptr); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 393; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":394
+ *     with rlock:
+ *         r = _hdf5.H5Fset_mdc_config(file_id, config_ptr)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":395
+ *         r = _hdf5.H5Fset_mdc_config(file_id, config_ptr)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 395; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":396
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":397
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef hid_t H5Gcreate(hid_t loc_id, char *name, size_t size_hint) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":392
+ * cdef herr_t H5Fset_mdc_config(hid_t file_id, H5AC_cache_config_t *config_ptr) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Fset_mdc_config(file_id, config_ptr)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Fset_mdc_config", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 392; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 392; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 392; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 392; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 392; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_46, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 392; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 392; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Fset_mdc_config", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":399
+ *         return r
+ * 
+ * cdef hid_t H5Gcreate(hid_t loc_id, char *name, size_t size_hint) except *:             # <<<<<<<<<<<<<<
+ *     cdef hid_t r
+ *     with rlock:
+ */
+
+static hid_t __pyx_f_4h5py_4defs_H5Gcreate(hid_t __pyx_v_loc_id, char *__pyx_v_name, size_t __pyx_v_size_hint) {
+  hid_t __pyx_v_r;
+  hid_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  hid_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Gcreate", 0);
+
+  /* "h5py/defs.pyx":401
+ * cdef hid_t H5Gcreate(hid_t loc_id, char *name, size_t size_hint) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Gcreate(loc_id, name, size_hint)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 401; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 401; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 401; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 401; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":402
+ *     cdef hid_t r
+ *     with rlock:
+ *         r = _hdf5.H5Gcreate(loc_id, name, size_hint)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Gcreate(__pyx_v_loc_id, __pyx_v_name, __pyx_v_size_hint); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 402; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":403
+ *     with rlock:
+ *         r = _hdf5.H5Gcreate(loc_id, name, size_hint)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":404
+ *         r = _hdf5.H5Gcreate(loc_id, name, size_hint)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <hid_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":405
+ *         if r<0:
+ *             if set_exception():
+ *                 return <hid_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((hid_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":406
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef hid_t H5Gopen(hid_t loc_id, char *name) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":401
+ * cdef hid_t H5Gcreate(hid_t loc_id, char *name, size_t size_hint) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Gcreate(loc_id, name, size_hint)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Gcreate", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 401; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 401; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 401; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 401; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 401; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_47, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 401; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 401; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Gcreate", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":408
+ *         return r
+ * 
+ * cdef hid_t H5Gopen(hid_t loc_id, char *name) except *:             # <<<<<<<<<<<<<<
+ *     cdef hid_t r
+ *     with rlock:
+ */
+
+static hid_t __pyx_f_4h5py_4defs_H5Gopen(hid_t __pyx_v_loc_id, char *__pyx_v_name) {
+  hid_t __pyx_v_r;
+  hid_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  hid_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Gopen", 0);
+
+  /* "h5py/defs.pyx":410
+ * cdef hid_t H5Gopen(hid_t loc_id, char *name) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Gopen(loc_id, name)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 410; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 410; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 410; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 410; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":411
+ *     cdef hid_t r
+ *     with rlock:
+ *         r = _hdf5.H5Gopen(loc_id, name)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Gopen(__pyx_v_loc_id, __pyx_v_name); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 411; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":412
+ *     with rlock:
+ *         r = _hdf5.H5Gopen(loc_id, name)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":413
+ *         r = _hdf5.H5Gopen(loc_id, name)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <hid_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 413; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":414
+ *         if r<0:
+ *             if set_exception():
+ *                 return <hid_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((hid_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":415
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Gclose(hid_t group_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":410
+ * cdef hid_t H5Gopen(hid_t loc_id, char *name) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Gopen(loc_id, name)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Gopen", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 410; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 410; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 410; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 410; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 410; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_48, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 410; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 410; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Gopen", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":417
+ *         return r
+ * 
+ * cdef herr_t H5Gclose(hid_t group_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Gclose(hid_t __pyx_v_group_id) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Gclose", 0);
+
+  /* "h5py/defs.pyx":419
+ * cdef herr_t H5Gclose(hid_t group_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Gclose(group_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 419; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 419; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 419; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 419; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":420
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Gclose(group_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Gclose(__pyx_v_group_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 420; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":421
+ *     with rlock:
+ *         r = _hdf5.H5Gclose(group_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":422
+ *         r = _hdf5.H5Gclose(group_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 422; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":423
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":424
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Glink2( hid_t curr_loc_id, char *current_name, H5G_link_t link_type, hid_t new_loc_id, char *new_name) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":419
+ * cdef herr_t H5Gclose(hid_t group_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Gclose(group_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Gclose", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 419; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 419; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 419; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 419; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 419; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_49, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 419; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 419; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Gclose", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":426
+ *         return r
+ * 
+ * cdef herr_t H5Glink2( hid_t curr_loc_id, char *current_name, H5G_link_t link_type, hid_t new_loc_id, char *new_name) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Glink2(hid_t __pyx_v_curr_loc_id, char *__pyx_v_current_name, H5G_link_t __pyx_v_link_type, hid_t __pyx_v_new_loc_id, char *__pyx_v_new_name) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Glink2", 0);
+
+  /* "h5py/defs.pyx":428
+ * cdef herr_t H5Glink2( hid_t curr_loc_id, char *current_name, H5G_link_t link_type, hid_t new_loc_id, char *new_name) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Glink2(curr_loc_id, current_name, link_type, new_loc_id, new_name)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 428; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 428; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 428; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 428; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":429
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Glink2(curr_loc_id, current_name, link_type, new_loc_id, new_name)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Glink2(__pyx_v_curr_loc_id, __pyx_v_current_name, __pyx_v_link_type, __pyx_v_new_loc_id, __pyx_v_new_name); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 429; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":430
+ *     with rlock:
+ *         r = _hdf5.H5Glink2(curr_loc_id, current_name, link_type, new_loc_id, new_name)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":431
+ *         r = _hdf5.H5Glink2(curr_loc_id, current_name, link_type, new_loc_id, new_name)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 431; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":432
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":433
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Gunlink(hid_t file_id, char *name) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":428
+ * cdef herr_t H5Glink2( hid_t curr_loc_id, char *current_name, H5G_link_t link_type, hid_t new_loc_id, char *new_name) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Glink2(curr_loc_id, current_name, link_type, new_loc_id, new_name)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Glink2", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 428; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 428; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 428; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 428; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 428; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_50, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 428; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 428; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Glink2", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":435
+ *         return r
+ * 
+ * cdef herr_t H5Gunlink(hid_t file_id, char *name) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Gunlink(hid_t __pyx_v_file_id, char *__pyx_v_name) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Gunlink", 0);
+
+  /* "h5py/defs.pyx":437
+ * cdef herr_t H5Gunlink(hid_t file_id, char *name) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Gunlink(file_id, name)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 437; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 437; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 437; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 437; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":438
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Gunlink(file_id, name)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Gunlink(__pyx_v_file_id, __pyx_v_name); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 438; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":439
+ *     with rlock:
+ *         r = _hdf5.H5Gunlink(file_id, name)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":440
+ *         r = _hdf5.H5Gunlink(file_id, name)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 440; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":441
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":442
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Gmove2(hid_t src_loc_id, char *src_name, hid_t dst_loc_id, char *dst_name) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":437
+ * cdef herr_t H5Gunlink(hid_t file_id, char *name) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Gunlink(file_id, name)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Gunlink", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 437; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 437; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 437; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 437; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 437; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_51, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 437; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 437; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Gunlink", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":444
+ *         return r
+ * 
+ * cdef herr_t H5Gmove2(hid_t src_loc_id, char *src_name, hid_t dst_loc_id, char *dst_name) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Gmove2(hid_t __pyx_v_src_loc_id, char *__pyx_v_src_name, hid_t __pyx_v_dst_loc_id, char *__pyx_v_dst_name) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Gmove2", 0);
+
+  /* "h5py/defs.pyx":446
+ * cdef herr_t H5Gmove2(hid_t src_loc_id, char *src_name, hid_t dst_loc_id, char *dst_name) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Gmove2(src_loc_id, src_name, dst_loc_id, dst_name)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 446; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 446; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 446; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 446; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":447
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Gmove2(src_loc_id, src_name, dst_loc_id, dst_name)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Gmove2(__pyx_v_src_loc_id, __pyx_v_src_name, __pyx_v_dst_loc_id, __pyx_v_dst_name); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 447; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":448
+ *     with rlock:
+ *         r = _hdf5.H5Gmove2(src_loc_id, src_name, dst_loc_id, dst_name)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":449
+ *         r = _hdf5.H5Gmove2(src_loc_id, src_name, dst_loc_id, dst_name)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 449; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":450
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":451
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Gget_num_objs(hid_t loc_id, hsize_t*  num_obj) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":446
+ * cdef herr_t H5Gmove2(hid_t src_loc_id, char *src_name, hid_t dst_loc_id, char *dst_name) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Gmove2(src_loc_id, src_name, dst_loc_id, dst_name)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Gmove2", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 446; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 446; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 446; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 446; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 446; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_52, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 446; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 446; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Gmove2", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":453
+ *         return r
+ * 
+ * cdef herr_t H5Gget_num_objs(hid_t loc_id, hsize_t*  num_obj) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Gget_num_objs(hid_t __pyx_v_loc_id, hsize_t *__pyx_v_num_obj) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Gget_num_objs", 0);
+
+  /* "h5py/defs.pyx":455
+ * cdef herr_t H5Gget_num_objs(hid_t loc_id, hsize_t*  num_obj) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Gget_num_objs(loc_id, num_obj)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 455; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 455; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 455; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 455; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":456
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Gget_num_objs(loc_id, num_obj)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Gget_num_objs(__pyx_v_loc_id, __pyx_v_num_obj); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 456; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":457
+ *     with rlock:
+ *         r = _hdf5.H5Gget_num_objs(loc_id, num_obj)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":458
+ *         r = _hdf5.H5Gget_num_objs(loc_id, num_obj)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 458; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":459
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":460
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef int H5Gget_objname_by_idx(hid_t loc_id, hsize_t idx, char *name, size_t size) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":455
+ * cdef herr_t H5Gget_num_objs(hid_t loc_id, hsize_t*  num_obj) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Gget_num_objs(loc_id, num_obj)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Gget_num_objs", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 455; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 455; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 455; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 455; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 455; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_53, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 455; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 455; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Gget_num_objs", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":462
+ *         return r
+ * 
+ * cdef int H5Gget_objname_by_idx(hid_t loc_id, hsize_t idx, char *name, size_t size) except *:             # <<<<<<<<<<<<<<
+ *     cdef int r
+ *     with rlock:
+ */
+
+static int __pyx_f_4h5py_4defs_H5Gget_objname_by_idx(hid_t __pyx_v_loc_id, hsize_t __pyx_v_idx, char *__pyx_v_name, size_t __pyx_v_size) {
+  int __pyx_v_r;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  int __pyx_t_8;
+  int __pyx_t_9;
+  PyObject *__pyx_t_10 = NULL;
+  PyObject *__pyx_t_11 = NULL;
+  int __pyx_t_12;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Gget_objname_by_idx", 0);
+
+  /* "h5py/defs.pyx":464
+ * cdef int H5Gget_objname_by_idx(hid_t loc_id, hsize_t idx, char *name, size_t size) except *:
+ *     cdef int r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Gget_objname_by_idx(loc_id, idx, name, size)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 464; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 464; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 464; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 464; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":465
+ *     cdef int r
+ *     with rlock:
+ *         r = _hdf5.H5Gget_objname_by_idx(loc_id, idx, name, size)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Gget_objname_by_idx(__pyx_v_loc_id, __pyx_v_idx, __pyx_v_name, __pyx_v_size); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":466
+ *     with rlock:
+ *         r = _hdf5.H5Gget_objname_by_idx(loc_id, idx, name, size)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <int>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":467
+ *         r = _hdf5.H5Gget_objname_by_idx(loc_id, idx, name, size)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <int>-1;
+ *         return r
+ */
+            __pyx_t_8 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 467; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_8) {
+
+              /* "h5py/defs.pyx":468
+ *         if r<0:
+ *             if set_exception():
+ *                 return <int>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((int)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":469
+ *             if set_exception():
+ *                 return <int>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef int H5Gget_objtype_by_idx(hid_t loc_id, hsize_t idx) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":464
+ * cdef int H5Gget_objname_by_idx(hid_t loc_id, hsize_t idx, char *name, size_t size) except *:
+ *     cdef int r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Gget_objname_by_idx(loc_id, idx, name, size)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Gget_objname_by_idx", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 464; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_10 = PyTuple_New(3); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 464; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_10);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_10, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_11 = PyObject_Call(__pyx_t_2, __pyx_t_10, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 464; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_11);
+          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 464; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_12 = (!__pyx_t_9);
+          if (__pyx_t_12) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 464; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_10)); __pyx_t_10 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_54, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 464; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 464; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_10);
+  __Pyx_AddTraceback("h5py.defs.H5Gget_objname_by_idx", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":471
+ *         return r
+ * 
+ * cdef int H5Gget_objtype_by_idx(hid_t loc_id, hsize_t idx) except *:             # <<<<<<<<<<<<<<
+ *     cdef int r
+ *     with rlock:
+ */
+
+static int __pyx_f_4h5py_4defs_H5Gget_objtype_by_idx(hid_t __pyx_v_loc_id, hsize_t __pyx_v_idx) {
+  int __pyx_v_r;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  int __pyx_t_8;
+  int __pyx_t_9;
+  PyObject *__pyx_t_10 = NULL;
+  PyObject *__pyx_t_11 = NULL;
+  int __pyx_t_12;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Gget_objtype_by_idx", 0);
+
+  /* "h5py/defs.pyx":473
+ * cdef int H5Gget_objtype_by_idx(hid_t loc_id, hsize_t idx) except *:
+ *     cdef int r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Gget_objtype_by_idx(loc_id, idx)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 473; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 473; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 473; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 473; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":474
+ *     cdef int r
+ *     with rlock:
+ *         r = _hdf5.H5Gget_objtype_by_idx(loc_id, idx)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Gget_objtype_by_idx(__pyx_v_loc_id, __pyx_v_idx); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 474; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":475
+ *     with rlock:
+ *         r = _hdf5.H5Gget_objtype_by_idx(loc_id, idx)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <int>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":476
+ *         r = _hdf5.H5Gget_objtype_by_idx(loc_id, idx)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <int>-1;
+ *         return r
+ */
+            __pyx_t_8 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 476; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_8) {
+
+              /* "h5py/defs.pyx":477
+ *         if r<0:
+ *             if set_exception():
+ *                 return <int>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((int)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":478
+ *             if set_exception():
+ *                 return <int>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Giterate(hid_t loc_id, char *name, int *idx, H5G_iterate_t op, void* data) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":473
+ * cdef int H5Gget_objtype_by_idx(hid_t loc_id, hsize_t idx) except *:
+ *     cdef int r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Gget_objtype_by_idx(loc_id, idx)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Gget_objtype_by_idx", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 473; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_10 = PyTuple_New(3); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 473; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_10);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_10, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_11 = PyObject_Call(__pyx_t_2, __pyx_t_10, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 473; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_11);
+          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 473; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_12 = (!__pyx_t_9);
+          if (__pyx_t_12) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 473; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_10)); __pyx_t_10 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_55, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 473; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 473; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_10);
+  __Pyx_AddTraceback("h5py.defs.H5Gget_objtype_by_idx", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":480
+ *         return r
+ * 
+ * cdef herr_t H5Giterate(hid_t loc_id, char *name, int *idx, H5G_iterate_t op, void* data) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Giterate(hid_t __pyx_v_loc_id, char *__pyx_v_name, int *__pyx_v_idx, H5G_iterate_t __pyx_v_op, void *__pyx_v_data) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Giterate", 0);
+
+  /* "h5py/defs.pyx":482
+ * cdef herr_t H5Giterate(hid_t loc_id, char *name, int *idx, H5G_iterate_t op, void* data) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Giterate(loc_id, name, idx, op, data)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 482; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 482; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 482; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 482; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":483
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Giterate(loc_id, name, idx, op, data)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Giterate(__pyx_v_loc_id, __pyx_v_name, __pyx_v_idx, __pyx_v_op, __pyx_v_data); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 483; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":484
+ *     with rlock:
+ *         r = _hdf5.H5Giterate(loc_id, name, idx, op, data)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":485
+ *         r = _hdf5.H5Giterate(loc_id, name, idx, op, data)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 485; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":486
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":487
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Gget_objinfo(hid_t loc_id, char* name, int follow_link, H5G_stat_t *statbuf) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":482
+ * cdef herr_t H5Giterate(hid_t loc_id, char *name, int *idx, H5G_iterate_t op, void* data) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Giterate(loc_id, name, idx, op, data)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Giterate", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 482; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 482; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 482; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 482; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 482; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_56, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 482; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 482; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Giterate", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":489
+ *         return r
+ * 
+ * cdef herr_t H5Gget_objinfo(hid_t loc_id, char* name, int follow_link, H5G_stat_t *statbuf) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Gget_objinfo(hid_t __pyx_v_loc_id, char *__pyx_v_name, int __pyx_v_follow_link, H5G_stat_t *__pyx_v_statbuf) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Gget_objinfo", 0);
+
+  /* "h5py/defs.pyx":491
+ * cdef herr_t H5Gget_objinfo(hid_t loc_id, char* name, int follow_link, H5G_stat_t *statbuf) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Gget_objinfo(loc_id, name, follow_link, statbuf)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 491; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 491; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 491; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 491; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":492
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Gget_objinfo(loc_id, name, follow_link, statbuf)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Gget_objinfo(__pyx_v_loc_id, __pyx_v_name, __pyx_v_follow_link, __pyx_v_statbuf); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 492; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":493
+ *     with rlock:
+ *         r = _hdf5.H5Gget_objinfo(loc_id, name, follow_link, statbuf)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":494
+ *         r = _hdf5.H5Gget_objinfo(loc_id, name, follow_link, statbuf)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 494; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":495
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":496
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Gget_linkval(hid_t loc_id, char *name, size_t size, char *value) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":491
+ * cdef herr_t H5Gget_objinfo(hid_t loc_id, char* name, int follow_link, H5G_stat_t *statbuf) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Gget_objinfo(loc_id, name, follow_link, statbuf)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Gget_objinfo", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 491; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 491; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 491; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 491; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 491; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_57, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 491; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 491; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Gget_objinfo", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":498
+ *         return r
+ * 
+ * cdef herr_t H5Gget_linkval(hid_t loc_id, char *name, size_t size, char *value) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Gget_linkval(hid_t __pyx_v_loc_id, char *__pyx_v_name, size_t __pyx_v_size, char *__pyx_v_value) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Gget_linkval", 0);
+
+  /* "h5py/defs.pyx":500
+ * cdef herr_t H5Gget_linkval(hid_t loc_id, char *name, size_t size, char *value) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Gget_linkval(loc_id, name, size, value)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 500; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 500; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 500; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 500; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":501
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Gget_linkval(loc_id, name, size, value)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Gget_linkval(__pyx_v_loc_id, __pyx_v_name, __pyx_v_size, __pyx_v_value); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 501; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":502
+ *     with rlock:
+ *         r = _hdf5.H5Gget_linkval(loc_id, name, size, value)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":503
+ *         r = _hdf5.H5Gget_linkval(loc_id, name, size, value)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 503; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":504
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":505
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Gset_comment(hid_t loc_id, char *name, char *comment) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":500
+ * cdef herr_t H5Gget_linkval(hid_t loc_id, char *name, size_t size, char *value) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Gget_linkval(loc_id, name, size, value)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Gget_linkval", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 500; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 500; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 500; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 500; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 500; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_58, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 500; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 500; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Gget_linkval", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":507
+ *         return r
+ * 
+ * cdef herr_t H5Gset_comment(hid_t loc_id, char *name, char *comment) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Gset_comment(hid_t __pyx_v_loc_id, char *__pyx_v_name, char *__pyx_v_comment) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Gset_comment", 0);
+
+  /* "h5py/defs.pyx":509
+ * cdef herr_t H5Gset_comment(hid_t loc_id, char *name, char *comment) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Gset_comment(loc_id, name, comment)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":510
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Gset_comment(loc_id, name, comment)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Gset_comment(__pyx_v_loc_id, __pyx_v_name, __pyx_v_comment); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 510; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":511
+ *     with rlock:
+ *         r = _hdf5.H5Gset_comment(loc_id, name, comment)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":512
+ *         r = _hdf5.H5Gset_comment(loc_id, name, comment)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 512; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":513
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":514
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef int H5Gget_comment(hid_t loc_id, char *name, size_t bufsize, char *comment) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":509
+ * cdef herr_t H5Gset_comment(hid_t loc_id, char *name, char *comment) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Gset_comment(loc_id, name, comment)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Gset_comment", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_59, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Gset_comment", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":516
+ *         return r
+ * 
+ * cdef int H5Gget_comment(hid_t loc_id, char *name, size_t bufsize, char *comment) except *:             # <<<<<<<<<<<<<<
+ *     cdef int r
+ *     with rlock:
+ */
+
+static int __pyx_f_4h5py_4defs_H5Gget_comment(hid_t __pyx_v_loc_id, char *__pyx_v_name, size_t __pyx_v_bufsize, char *__pyx_v_comment) {
+  int __pyx_v_r;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  int __pyx_t_8;
+  int __pyx_t_9;
+  PyObject *__pyx_t_10 = NULL;
+  PyObject *__pyx_t_11 = NULL;
+  int __pyx_t_12;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Gget_comment", 0);
+
+  /* "h5py/defs.pyx":518
+ * cdef int H5Gget_comment(hid_t loc_id, char *name, size_t bufsize, char *comment) except *:
+ *     cdef int r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Gget_comment(loc_id, name, bufsize, comment)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 518; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 518; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 518; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 518; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":519
+ *     cdef int r
+ *     with rlock:
+ *         r = _hdf5.H5Gget_comment(loc_id, name, bufsize, comment)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Gget_comment(__pyx_v_loc_id, __pyx_v_name, __pyx_v_bufsize, __pyx_v_comment); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 519; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":520
+ *     with rlock:
+ *         r = _hdf5.H5Gget_comment(loc_id, name, bufsize, comment)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <int>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":521
+ *         r = _hdf5.H5Gget_comment(loc_id, name, bufsize, comment)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <int>-1;
+ *         return r
+ */
+            __pyx_t_8 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 521; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_8) {
+
+              /* "h5py/defs.pyx":522
+ *         if r<0:
+ *             if set_exception():
+ *                 return <int>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((int)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":523
+ *             if set_exception():
+ *                 return <int>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef hid_t H5Gcreate_anon( hid_t loc_id, hid_t gcpl_id, hid_t gapl_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":518
+ * cdef int H5Gget_comment(hid_t loc_id, char *name, size_t bufsize, char *comment) except *:
+ *     cdef int r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Gget_comment(loc_id, name, bufsize, comment)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Gget_comment", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 518; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_10 = PyTuple_New(3); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 518; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_10);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_10, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_11 = PyObject_Call(__pyx_t_2, __pyx_t_10, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 518; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_11);
+          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 518; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_12 = (!__pyx_t_9);
+          if (__pyx_t_12) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 518; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_10)); __pyx_t_10 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_60, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 518; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 518; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_10);
+  __Pyx_AddTraceback("h5py.defs.H5Gget_comment", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":525
+ *         return r
+ * 
+ * cdef hid_t H5Gcreate_anon( hid_t loc_id, hid_t gcpl_id, hid_t gapl_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef hid_t r
+ *     with rlock:
+ */
+
+static hid_t __pyx_f_4h5py_4defs_H5Gcreate_anon(hid_t __pyx_v_loc_id, hid_t __pyx_v_gcpl_id, hid_t __pyx_v_gapl_id) {
+  hid_t __pyx_v_r;
+  hid_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  hid_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Gcreate_anon", 0);
+
+  /* "h5py/defs.pyx":527
+ * cdef hid_t H5Gcreate_anon( hid_t loc_id, hid_t gcpl_id, hid_t gapl_id) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Gcreate_anon(loc_id, gcpl_id, gapl_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 527; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 527; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 527; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 527; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":528
+ *     cdef hid_t r
+ *     with rlock:
+ *         r = _hdf5.H5Gcreate_anon(loc_id, gcpl_id, gapl_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Gcreate_anon(__pyx_v_loc_id, __pyx_v_gcpl_id, __pyx_v_gapl_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 528; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":529
+ *     with rlock:
+ *         r = _hdf5.H5Gcreate_anon(loc_id, gcpl_id, gapl_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":530
+ *         r = _hdf5.H5Gcreate_anon(loc_id, gcpl_id, gapl_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <hid_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 530; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":531
+ *         if r<0:
+ *             if set_exception():
+ *                 return <hid_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((hid_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":532
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef hid_t H5Gcreate2(hid_t loc_id, char *name, hid_t lcpl_id, hid_t gcpl_id, hid_t gapl_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":527
+ * cdef hid_t H5Gcreate_anon( hid_t loc_id, hid_t gcpl_id, hid_t gapl_id) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Gcreate_anon(loc_id, gcpl_id, gapl_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Gcreate_anon", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 527; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 527; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 527; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 527; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 527; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_61, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 527; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 527; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Gcreate_anon", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":534
+ *         return r
+ * 
+ * cdef hid_t H5Gcreate2(hid_t loc_id, char *name, hid_t lcpl_id, hid_t gcpl_id, hid_t gapl_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef hid_t r
+ *     with rlock:
+ */
+
+static hid_t __pyx_f_4h5py_4defs_H5Gcreate2(hid_t __pyx_v_loc_id, char *__pyx_v_name, hid_t __pyx_v_lcpl_id, hid_t __pyx_v_gcpl_id, hid_t __pyx_v_gapl_id) {
+  hid_t __pyx_v_r;
+  hid_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  hid_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Gcreate2", 0);
+
+  /* "h5py/defs.pyx":536
+ * cdef hid_t H5Gcreate2(hid_t loc_id, char *name, hid_t lcpl_id, hid_t gcpl_id, hid_t gapl_id) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Gcreate2(loc_id, name, lcpl_id, gcpl_id, gapl_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 536; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 536; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 536; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 536; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":537
+ *     cdef hid_t r
+ *     with rlock:
+ *         r = _hdf5.H5Gcreate2(loc_id, name, lcpl_id, gcpl_id, gapl_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Gcreate2(__pyx_v_loc_id, __pyx_v_name, __pyx_v_lcpl_id, __pyx_v_gcpl_id, __pyx_v_gapl_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 537; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":538
+ *     with rlock:
+ *         r = _hdf5.H5Gcreate2(loc_id, name, lcpl_id, gcpl_id, gapl_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":539
+ *         r = _hdf5.H5Gcreate2(loc_id, name, lcpl_id, gcpl_id, gapl_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <hid_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 539; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":540
+ *         if r<0:
+ *             if set_exception():
+ *                 return <hid_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((hid_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":541
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef hid_t H5Gopen2( hid_t loc_id, char * name, hid_t gapl_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":536
+ * cdef hid_t H5Gcreate2(hid_t loc_id, char *name, hid_t lcpl_id, hid_t gcpl_id, hid_t gapl_id) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Gcreate2(loc_id, name, lcpl_id, gcpl_id, gapl_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Gcreate2", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 536; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 536; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 536; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 536; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 536; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_62, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 536; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 536; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Gcreate2", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":543
+ *         return r
+ * 
+ * cdef hid_t H5Gopen2( hid_t loc_id, char * name, hid_t gapl_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef hid_t r
+ *     with rlock:
+ */
+
+static hid_t __pyx_f_4h5py_4defs_H5Gopen2(hid_t __pyx_v_loc_id, char *__pyx_v_name, hid_t __pyx_v_gapl_id) {
+  hid_t __pyx_v_r;
+  hid_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  hid_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Gopen2", 0);
+
+  /* "h5py/defs.pyx":545
+ * cdef hid_t H5Gopen2( hid_t loc_id, char * name, hid_t gapl_id) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Gopen2(loc_id, name, gapl_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 545; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 545; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 545; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 545; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":546
+ *     cdef hid_t r
+ *     with rlock:
+ *         r = _hdf5.H5Gopen2(loc_id, name, gapl_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Gopen2(__pyx_v_loc_id, __pyx_v_name, __pyx_v_gapl_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 546; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":547
+ *     with rlock:
+ *         r = _hdf5.H5Gopen2(loc_id, name, gapl_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":548
+ *         r = _hdf5.H5Gopen2(loc_id, name, gapl_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <hid_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 548; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":549
+ *         if r<0:
+ *             if set_exception():
+ *                 return <hid_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((hid_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":550
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Gget_info( hid_t group_id, H5G_info_t *group_info) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":545
+ * cdef hid_t H5Gopen2( hid_t loc_id, char * name, hid_t gapl_id) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Gopen2(loc_id, name, gapl_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Gopen2", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 545; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 545; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 545; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 545; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 545; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_63, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 545; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 545; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Gopen2", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":552
+ *         return r
+ * 
+ * cdef herr_t H5Gget_info( hid_t group_id, H5G_info_t *group_info) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Gget_info(hid_t __pyx_v_group_id, H5G_info_t *__pyx_v_group_info) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Gget_info", 0);
+
+  /* "h5py/defs.pyx":554
+ * cdef herr_t H5Gget_info( hid_t group_id, H5G_info_t *group_info) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Gget_info(group_id, group_info)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 554; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 554; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 554; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 554; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":555
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Gget_info(group_id, group_info)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Gget_info(__pyx_v_group_id, __pyx_v_group_info); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 555; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":556
+ *     with rlock:
+ *         r = _hdf5.H5Gget_info(group_id, group_info)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":557
+ *         r = _hdf5.H5Gget_info(group_id, group_info)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 557; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":558
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":559
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Gget_info_by_name( hid_t loc_id, char *group_name, H5G_info_t *group_info, hid_t lapl_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":554
+ * cdef herr_t H5Gget_info( hid_t group_id, H5G_info_t *group_info) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Gget_info(group_id, group_info)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Gget_info", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 554; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 554; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 554; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 554; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 554; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_64, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 554; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 554; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Gget_info", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":561
+ *         return r
+ * 
+ * cdef herr_t H5Gget_info_by_name( hid_t loc_id, char *group_name, H5G_info_t *group_info, hid_t lapl_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Gget_info_by_name(hid_t __pyx_v_loc_id, char *__pyx_v_group_name, H5G_info_t *__pyx_v_group_info, hid_t __pyx_v_lapl_id) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Gget_info_by_name", 0);
+
+  /* "h5py/defs.pyx":563
+ * cdef herr_t H5Gget_info_by_name( hid_t loc_id, char *group_name, H5G_info_t *group_info, hid_t lapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Gget_info_by_name(loc_id, group_name, group_info, lapl_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 563; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 563; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 563; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 563; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":564
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Gget_info_by_name(loc_id, group_name, group_info, lapl_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Gget_info_by_name(__pyx_v_loc_id, __pyx_v_group_name, __pyx_v_group_info, __pyx_v_lapl_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 564; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":565
+ *     with rlock:
+ *         r = _hdf5.H5Gget_info_by_name(loc_id, group_name, group_info, lapl_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":566
+ *         r = _hdf5.H5Gget_info_by_name(loc_id, group_name, group_info, lapl_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 566; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":567
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":568
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef hid_t H5Gget_create_plist(hid_t group_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":563
+ * cdef herr_t H5Gget_info_by_name( hid_t loc_id, char *group_name, H5G_info_t *group_info, hid_t lapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Gget_info_by_name(loc_id, group_name, group_info, lapl_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Gget_info_by_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 563; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 563; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 563; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 563; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 563; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_65, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 563; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 563; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Gget_info_by_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":570
+ *         return r
+ * 
+ * cdef hid_t H5Gget_create_plist(hid_t group_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef hid_t r
+ *     with rlock:
+ */
+
+static hid_t __pyx_f_4h5py_4defs_H5Gget_create_plist(hid_t __pyx_v_group_id) {
+  hid_t __pyx_v_r;
+  hid_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  hid_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Gget_create_plist", 0);
+
+  /* "h5py/defs.pyx":572
+ * cdef hid_t H5Gget_create_plist(hid_t group_id) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Gget_create_plist(group_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 572; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 572; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 572; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 572; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":573
+ *     cdef hid_t r
+ *     with rlock:
+ *         r = _hdf5.H5Gget_create_plist(group_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Gget_create_plist(__pyx_v_group_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 573; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":574
+ *     with rlock:
+ *         r = _hdf5.H5Gget_create_plist(group_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":575
+ *         r = _hdf5.H5Gget_create_plist(group_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <hid_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 575; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":576
+ *         if r<0:
+ *             if set_exception():
+ *                 return <hid_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((hid_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":577
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef H5I_type_t H5Iget_type(hid_t obj_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":572
+ * cdef hid_t H5Gget_create_plist(hid_t group_id) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Gget_create_plist(group_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Gget_create_plist", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 572; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 572; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 572; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 572; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 572; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_66, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 572; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 572; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Gget_create_plist", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":579
+ *         return r
+ * 
+ * cdef H5I_type_t H5Iget_type(hid_t obj_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef H5I_type_t r
+ *     with rlock:
+ */
+
+static H5I_type_t __pyx_f_4h5py_4defs_H5Iget_type(hid_t __pyx_v_obj_id) {
+  H5I_type_t __pyx_v_r;
+  H5I_type_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  H5I_type_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Iget_type", 0);
+
+  /* "h5py/defs.pyx":581
+ * cdef H5I_type_t H5Iget_type(hid_t obj_id) except *:
+ *     cdef H5I_type_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Iget_type(obj_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 581; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 581; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 581; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 581; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":582
+ *     cdef H5I_type_t r
+ *     with rlock:
+ *         r = _hdf5.H5Iget_type(obj_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Iget_type(__pyx_v_obj_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 582; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":583
+ *     with rlock:
+ *         r = _hdf5.H5Iget_type(obj_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <H5I_type_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":584
+ *         r = _hdf5.H5Iget_type(obj_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <H5I_type_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 584; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":585
+ *         if r<0:
+ *             if set_exception():
+ *                 return <H5I_type_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((H5I_type_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":586
+ *             if set_exception():
+ *                 return <H5I_type_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef ssize_t H5Iget_name( hid_t obj_id, char *name, size_t size) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":581
+ * cdef H5I_type_t H5Iget_type(hid_t obj_id) except *:
+ *     cdef H5I_type_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Iget_type(obj_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Iget_type", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 581; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 581; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 581; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 581; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 581; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_67, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 581; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 581; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Iget_type", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":588
+ *         return r
+ * 
+ * cdef ssize_t H5Iget_name( hid_t obj_id, char *name, size_t size) except *:             # <<<<<<<<<<<<<<
+ *     cdef ssize_t r
+ *     with rlock:
+ */
+
+static Py_ssize_t __pyx_f_4h5py_4defs_H5Iget_name(hid_t __pyx_v_obj_id, char *__pyx_v_name, size_t __pyx_v_size) {
+  Py_ssize_t __pyx_v_r;
+  Py_ssize_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  Py_ssize_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Iget_name", 0);
+
+  /* "h5py/defs.pyx":590
+ * cdef ssize_t H5Iget_name( hid_t obj_id, char *name, size_t size) except *:
+ *     cdef ssize_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Iget_name(obj_id, name, size)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 590; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 590; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 590; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 590; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":591
+ *     cdef ssize_t r
+ *     with rlock:
+ *         r = _hdf5.H5Iget_name(obj_id, name, size)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Iget_name(__pyx_v_obj_id, __pyx_v_name, __pyx_v_size); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 591; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":592
+ *     with rlock:
+ *         r = _hdf5.H5Iget_name(obj_id, name, size)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <ssize_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":593
+ *         r = _hdf5.H5Iget_name(obj_id, name, size)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <ssize_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 593; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":594
+ *         if r<0:
+ *             if set_exception():
+ *                 return <ssize_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((Py_ssize_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":595
+ *             if set_exception():
+ *                 return <ssize_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef hid_t H5Iget_file_id(hid_t obj_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":590
+ * cdef ssize_t H5Iget_name( hid_t obj_id, char *name, size_t size) except *:
+ *     cdef ssize_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Iget_name(obj_id, name, size)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Iget_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 590; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 590; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 590; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 590; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 590; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_68, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 590; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 590; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Iget_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":597
+ *         return r
+ * 
+ * cdef hid_t H5Iget_file_id(hid_t obj_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef hid_t r
+ *     with rlock:
+ */
+
+static hid_t __pyx_f_4h5py_4defs_H5Iget_file_id(hid_t __pyx_v_obj_id) {
+  hid_t __pyx_v_r;
+  hid_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  hid_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Iget_file_id", 0);
+
+  /* "h5py/defs.pyx":599
+ * cdef hid_t H5Iget_file_id(hid_t obj_id) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Iget_file_id(obj_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 599; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 599; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 599; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 599; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":600
+ *     cdef hid_t r
+ *     with rlock:
+ *         r = _hdf5.H5Iget_file_id(obj_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Iget_file_id(__pyx_v_obj_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 600; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":601
+ *     with rlock:
+ *         r = _hdf5.H5Iget_file_id(obj_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":602
+ *         r = _hdf5.H5Iget_file_id(obj_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <hid_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 602; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":603
+ *         if r<0:
+ *             if set_exception():
+ *                 return <hid_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((hid_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":604
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef int H5Idec_ref(hid_t obj_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":599
+ * cdef hid_t H5Iget_file_id(hid_t obj_id) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Iget_file_id(obj_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Iget_file_id", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 599; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 599; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 599; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 599; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 599; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_69, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 599; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 599; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Iget_file_id", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":606
+ *         return r
+ * 
+ * cdef int H5Idec_ref(hid_t obj_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef int r
+ *     with rlock:
+ */
+
+static int __pyx_f_4h5py_4defs_H5Idec_ref(hid_t __pyx_v_obj_id) {
+  int __pyx_v_r;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  int __pyx_t_8;
+  int __pyx_t_9;
+  PyObject *__pyx_t_10 = NULL;
+  PyObject *__pyx_t_11 = NULL;
+  int __pyx_t_12;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Idec_ref", 0);
+
+  /* "h5py/defs.pyx":608
+ * cdef int H5Idec_ref(hid_t obj_id) except *:
+ *     cdef int r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Idec_ref(obj_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 608; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 608; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 608; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 608; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":609
+ *     cdef int r
+ *     with rlock:
+ *         r = _hdf5.H5Idec_ref(obj_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Idec_ref(__pyx_v_obj_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 609; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":610
+ *     with rlock:
+ *         r = _hdf5.H5Idec_ref(obj_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <int>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":611
+ *         r = _hdf5.H5Idec_ref(obj_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <int>-1;
+ *         return r
+ */
+            __pyx_t_8 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 611; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_8) {
+
+              /* "h5py/defs.pyx":612
+ *         if r<0:
+ *             if set_exception():
+ *                 return <int>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((int)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":613
+ *             if set_exception():
+ *                 return <int>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef int H5Iget_ref(hid_t obj_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":608
+ * cdef int H5Idec_ref(hid_t obj_id) except *:
+ *     cdef int r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Idec_ref(obj_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Idec_ref", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 608; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_10 = PyTuple_New(3); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 608; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_10);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_10, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_11 = PyObject_Call(__pyx_t_2, __pyx_t_10, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 608; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_11);
+          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 608; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_12 = (!__pyx_t_9);
+          if (__pyx_t_12) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 608; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_10)); __pyx_t_10 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_70, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 608; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 608; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_10);
+  __Pyx_AddTraceback("h5py.defs.H5Idec_ref", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":615
+ *         return r
+ * 
+ * cdef int H5Iget_ref(hid_t obj_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef int r
+ *     with rlock:
+ */
+
+static int __pyx_f_4h5py_4defs_H5Iget_ref(hid_t __pyx_v_obj_id) {
+  int __pyx_v_r;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  int __pyx_t_8;
+  int __pyx_t_9;
+  PyObject *__pyx_t_10 = NULL;
+  PyObject *__pyx_t_11 = NULL;
+  int __pyx_t_12;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Iget_ref", 0);
+
+  /* "h5py/defs.pyx":617
+ * cdef int H5Iget_ref(hid_t obj_id) except *:
+ *     cdef int r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Iget_ref(obj_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 617; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 617; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 617; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 617; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":618
+ *     cdef int r
+ *     with rlock:
+ *         r = _hdf5.H5Iget_ref(obj_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Iget_ref(__pyx_v_obj_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 618; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":619
+ *     with rlock:
+ *         r = _hdf5.H5Iget_ref(obj_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <int>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":620
+ *         r = _hdf5.H5Iget_ref(obj_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <int>-1;
+ *         return r
+ */
+            __pyx_t_8 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 620; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_8) {
+
+              /* "h5py/defs.pyx":621
+ *         if r<0:
+ *             if set_exception():
+ *                 return <int>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((int)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":622
+ *             if set_exception():
+ *                 return <int>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef int H5Iinc_ref(hid_t obj_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":617
+ * cdef int H5Iget_ref(hid_t obj_id) except *:
+ *     cdef int r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Iget_ref(obj_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Iget_ref", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 617; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_10 = PyTuple_New(3); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 617; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_10);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_10, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_11 = PyObject_Call(__pyx_t_2, __pyx_t_10, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 617; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_11);
+          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 617; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_12 = (!__pyx_t_9);
+          if (__pyx_t_12) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 617; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_10)); __pyx_t_10 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_71, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 617; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 617; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_10);
+  __Pyx_AddTraceback("h5py.defs.H5Iget_ref", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":624
+ *         return r
+ * 
+ * cdef int H5Iinc_ref(hid_t obj_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef int r
+ *     with rlock:
+ */
+
+static int __pyx_f_4h5py_4defs_H5Iinc_ref(hid_t __pyx_v_obj_id) {
+  int __pyx_v_r;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  int __pyx_t_8;
+  int __pyx_t_9;
+  PyObject *__pyx_t_10 = NULL;
+  PyObject *__pyx_t_11 = NULL;
+  int __pyx_t_12;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Iinc_ref", 0);
+
+  /* "h5py/defs.pyx":626
+ * cdef int H5Iinc_ref(hid_t obj_id) except *:
+ *     cdef int r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Iinc_ref(obj_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 626; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 626; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 626; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 626; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":627
+ *     cdef int r
+ *     with rlock:
+ *         r = _hdf5.H5Iinc_ref(obj_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Iinc_ref(__pyx_v_obj_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 627; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":628
+ *     with rlock:
+ *         r = _hdf5.H5Iinc_ref(obj_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <int>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":629
+ *         r = _hdf5.H5Iinc_ref(obj_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <int>-1;
+ *         return r
+ */
+            __pyx_t_8 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 629; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_8) {
+
+              /* "h5py/defs.pyx":630
+ *         if r<0:
+ *             if set_exception():
+ *                 return <int>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((int)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":631
+ *             if set_exception():
+ *                 return <int>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Lmove(hid_t src_loc, char *src_name, hid_t dst_loc, char *dst_name, hid_t lcpl_id, hid_t lapl_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":626
+ * cdef int H5Iinc_ref(hid_t obj_id) except *:
+ *     cdef int r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Iinc_ref(obj_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Iinc_ref", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 626; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_10 = PyTuple_New(3); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 626; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_10);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_10, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_11 = PyObject_Call(__pyx_t_2, __pyx_t_10, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 626; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_11);
+          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 626; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_12 = (!__pyx_t_9);
+          if (__pyx_t_12) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 626; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_10)); __pyx_t_10 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_72, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 626; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 626; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_10);
+  __Pyx_AddTraceback("h5py.defs.H5Iinc_ref", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":633
+ *         return r
+ * 
+ * cdef herr_t H5Lmove(hid_t src_loc, char *src_name, hid_t dst_loc, char *dst_name, hid_t lcpl_id, hid_t lapl_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Lmove(hid_t __pyx_v_src_loc, char *__pyx_v_src_name, hid_t __pyx_v_dst_loc, char *__pyx_v_dst_name, hid_t __pyx_v_lcpl_id, hid_t __pyx_v_lapl_id) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Lmove", 0);
+
+  /* "h5py/defs.pyx":635
+ * cdef herr_t H5Lmove(hid_t src_loc, char *src_name, hid_t dst_loc, char *dst_name, hid_t lcpl_id, hid_t lapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Lmove(src_loc, src_name, dst_loc, dst_name, lcpl_id, lapl_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 635; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 635; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 635; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 635; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":636
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Lmove(src_loc, src_name, dst_loc, dst_name, lcpl_id, lapl_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Lmove(__pyx_v_src_loc, __pyx_v_src_name, __pyx_v_dst_loc, __pyx_v_dst_name, __pyx_v_lcpl_id, __pyx_v_lapl_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 636; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":637
+ *     with rlock:
+ *         r = _hdf5.H5Lmove(src_loc, src_name, dst_loc, dst_name, lcpl_id, lapl_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":638
+ *         r = _hdf5.H5Lmove(src_loc, src_name, dst_loc, dst_name, lcpl_id, lapl_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 638; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":639
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":640
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Lcopy(hid_t src_loc, char *src_name, hid_t dst_loc, char *dst_name, hid_t lcpl_id, hid_t lapl_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":635
+ * cdef herr_t H5Lmove(hid_t src_loc, char *src_name, hid_t dst_loc, char *dst_name, hid_t lcpl_id, hid_t lapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Lmove(src_loc, src_name, dst_loc, dst_name, lcpl_id, lapl_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Lmove", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 635; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 635; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 635; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 635; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 635; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_73, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 635; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 635; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Lmove", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":642
+ *         return r
+ * 
+ * cdef herr_t H5Lcopy(hid_t src_loc, char *src_name, hid_t dst_loc, char *dst_name, hid_t lcpl_id, hid_t lapl_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Lcopy(hid_t __pyx_v_src_loc, char *__pyx_v_src_name, hid_t __pyx_v_dst_loc, char *__pyx_v_dst_name, hid_t __pyx_v_lcpl_id, hid_t __pyx_v_lapl_id) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Lcopy", 0);
+
+  /* "h5py/defs.pyx":644
+ * cdef herr_t H5Lcopy(hid_t src_loc, char *src_name, hid_t dst_loc, char *dst_name, hid_t lcpl_id, hid_t lapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Lcopy(src_loc, src_name, dst_loc, dst_name, lcpl_id, lapl_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 644; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 644; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 644; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 644; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":645
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Lcopy(src_loc, src_name, dst_loc, dst_name, lcpl_id, lapl_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Lcopy(__pyx_v_src_loc, __pyx_v_src_name, __pyx_v_dst_loc, __pyx_v_dst_name, __pyx_v_lcpl_id, __pyx_v_lapl_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 645; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":646
+ *     with rlock:
+ *         r = _hdf5.H5Lcopy(src_loc, src_name, dst_loc, dst_name, lcpl_id, lapl_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":647
+ *         r = _hdf5.H5Lcopy(src_loc, src_name, dst_loc, dst_name, lcpl_id, lapl_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 647; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":648
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":649
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Lcreate_hard(hid_t cur_loc, char *cur_name, hid_t dst_loc, char *dst_name, hid_t lcpl_id, hid_t lapl_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":644
+ * cdef herr_t H5Lcopy(hid_t src_loc, char *src_name, hid_t dst_loc, char *dst_name, hid_t lcpl_id, hid_t lapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Lcopy(src_loc, src_name, dst_loc, dst_name, lcpl_id, lapl_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Lcopy", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 644; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 644; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 644; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 644; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 644; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_74, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 644; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 644; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Lcopy", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":651
+ *         return r
+ * 
+ * cdef herr_t H5Lcreate_hard(hid_t cur_loc, char *cur_name, hid_t dst_loc, char *dst_name, hid_t lcpl_id, hid_t lapl_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Lcreate_hard(hid_t __pyx_v_cur_loc, char *__pyx_v_cur_name, hid_t __pyx_v_dst_loc, char *__pyx_v_dst_name, hid_t __pyx_v_lcpl_id, hid_t __pyx_v_lapl_id) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Lcreate_hard", 0);
+
+  /* "h5py/defs.pyx":653
+ * cdef herr_t H5Lcreate_hard(hid_t cur_loc, char *cur_name, hid_t dst_loc, char *dst_name, hid_t lcpl_id, hid_t lapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Lcreate_hard(cur_loc, cur_name, dst_loc, dst_name, lcpl_id, lapl_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 653; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 653; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 653; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 653; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":654
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Lcreate_hard(cur_loc, cur_name, dst_loc, dst_name, lcpl_id, lapl_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Lcreate_hard(__pyx_v_cur_loc, __pyx_v_cur_name, __pyx_v_dst_loc, __pyx_v_dst_name, __pyx_v_lcpl_id, __pyx_v_lapl_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 654; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":655
+ *     with rlock:
+ *         r = _hdf5.H5Lcreate_hard(cur_loc, cur_name, dst_loc, dst_name, lcpl_id, lapl_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":656
+ *         r = _hdf5.H5Lcreate_hard(cur_loc, cur_name, dst_loc, dst_name, lcpl_id, lapl_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 656; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":657
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":658
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Lcreate_soft(char *link_target, hid_t link_loc_id, char *link_name, hid_t lcpl_id, hid_t lapl_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":653
+ * cdef herr_t H5Lcreate_hard(hid_t cur_loc, char *cur_name, hid_t dst_loc, char *dst_name, hid_t lcpl_id, hid_t lapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Lcreate_hard(cur_loc, cur_name, dst_loc, dst_name, lcpl_id, lapl_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Lcreate_hard", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 653; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 653; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 653; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 653; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 653; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_75, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 653; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 653; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Lcreate_hard", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":660
+ *         return r
+ * 
+ * cdef herr_t H5Lcreate_soft(char *link_target, hid_t link_loc_id, char *link_name, hid_t lcpl_id, hid_t lapl_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Lcreate_soft(char *__pyx_v_link_target, hid_t __pyx_v_link_loc_id, char *__pyx_v_link_name, hid_t __pyx_v_lcpl_id, hid_t __pyx_v_lapl_id) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Lcreate_soft", 0);
+
+  /* "h5py/defs.pyx":662
+ * cdef herr_t H5Lcreate_soft(char *link_target, hid_t link_loc_id, char *link_name, hid_t lcpl_id, hid_t lapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Lcreate_soft(link_target, link_loc_id, link_name, lcpl_id, lapl_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 662; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 662; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 662; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 662; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":663
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Lcreate_soft(link_target, link_loc_id, link_name, lcpl_id, lapl_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Lcreate_soft(__pyx_v_link_target, __pyx_v_link_loc_id, __pyx_v_link_name, __pyx_v_lcpl_id, __pyx_v_lapl_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 663; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":664
+ *     with rlock:
+ *         r = _hdf5.H5Lcreate_soft(link_target, link_loc_id, link_name, lcpl_id, lapl_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":665
+ *         r = _hdf5.H5Lcreate_soft(link_target, link_loc_id, link_name, lcpl_id, lapl_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 665; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":666
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":667
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Ldelete(hid_t loc_id, char *name, hid_t lapl_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":662
+ * cdef herr_t H5Lcreate_soft(char *link_target, hid_t link_loc_id, char *link_name, hid_t lcpl_id, hid_t lapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Lcreate_soft(link_target, link_loc_id, link_name, lcpl_id, lapl_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Lcreate_soft", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 662; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 662; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 662; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 662; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 662; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_76, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 662; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 662; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Lcreate_soft", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":669
+ *         return r
+ * 
+ * cdef herr_t H5Ldelete(hid_t loc_id, char *name, hid_t lapl_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Ldelete(hid_t __pyx_v_loc_id, char *__pyx_v_name, hid_t __pyx_v_lapl_id) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Ldelete", 0);
+
+  /* "h5py/defs.pyx":671
+ * cdef herr_t H5Ldelete(hid_t loc_id, char *name, hid_t lapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Ldelete(loc_id, name, lapl_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 671; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 671; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 671; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 671; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":672
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Ldelete(loc_id, name, lapl_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Ldelete(__pyx_v_loc_id, __pyx_v_name, __pyx_v_lapl_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 672; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":673
+ *     with rlock:
+ *         r = _hdf5.H5Ldelete(loc_id, name, lapl_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":674
+ *         r = _hdf5.H5Ldelete(loc_id, name, lapl_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 674; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":675
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":676
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Ldelete_by_idx(hid_t loc_id, char *group_name, H5_index_t idx_type, H5_iter_order_t order, hsize_t n, hid_t lapl_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":671
+ * cdef herr_t H5Ldelete(hid_t loc_id, char *name, hid_t lapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Ldelete(loc_id, name, lapl_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Ldelete", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 671; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 671; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 671; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 671; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 671; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_77, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 671; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 671; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Ldelete", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":678
+ *         return r
+ * 
+ * cdef herr_t H5Ldelete_by_idx(hid_t loc_id, char *group_name, H5_index_t idx_type, H5_iter_order_t order, hsize_t n, hid_t lapl_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Ldelete_by_idx(hid_t __pyx_v_loc_id, char *__pyx_v_group_name, H5_index_t __pyx_v_idx_type, H5_iter_order_t __pyx_v_order, hsize_t __pyx_v_n, hid_t __pyx_v_lapl_id) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Ldelete_by_idx", 0);
+
+  /* "h5py/defs.pyx":680
+ * cdef herr_t H5Ldelete_by_idx(hid_t loc_id, char *group_name, H5_index_t idx_type, H5_iter_order_t order, hsize_t n, hid_t lapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Ldelete_by_idx(loc_id, group_name, idx_type, order, n, lapl_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 680; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 680; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 680; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 680; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":681
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Ldelete_by_idx(loc_id, group_name, idx_type, order, n, lapl_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Ldelete_by_idx(__pyx_v_loc_id, __pyx_v_group_name, __pyx_v_idx_type, __pyx_v_order, __pyx_v_n, __pyx_v_lapl_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 681; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":682
+ *     with rlock:
+ *         r = _hdf5.H5Ldelete_by_idx(loc_id, group_name, idx_type, order, n, lapl_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":683
+ *         r = _hdf5.H5Ldelete_by_idx(loc_id, group_name, idx_type, order, n, lapl_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 683; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":684
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":685
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Lget_val(hid_t loc_id, char *name, void *bufout, size_t size, hid_t lapl_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":680
+ * cdef herr_t H5Ldelete_by_idx(hid_t loc_id, char *group_name, H5_index_t idx_type, H5_iter_order_t order, hsize_t n, hid_t lapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Ldelete_by_idx(loc_id, group_name, idx_type, order, n, lapl_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Ldelete_by_idx", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 680; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 680; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 680; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 680; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 680; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_78, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 680; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 680; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Ldelete_by_idx", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":687
+ *         return r
+ * 
+ * cdef herr_t H5Lget_val(hid_t loc_id, char *name, void *bufout, size_t size, hid_t lapl_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Lget_val(hid_t __pyx_v_loc_id, char *__pyx_v_name, void *__pyx_v_bufout, size_t __pyx_v_size, hid_t __pyx_v_lapl_id) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Lget_val", 0);
+
+  /* "h5py/defs.pyx":689
+ * cdef herr_t H5Lget_val(hid_t loc_id, char *name, void *bufout, size_t size, hid_t lapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Lget_val(loc_id, name, bufout, size, lapl_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 689; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 689; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 689; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 689; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":690
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Lget_val(loc_id, name, bufout, size, lapl_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Lget_val(__pyx_v_loc_id, __pyx_v_name, __pyx_v_bufout, __pyx_v_size, __pyx_v_lapl_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 690; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":691
+ *     with rlock:
+ *         r = _hdf5.H5Lget_val(loc_id, name, bufout, size, lapl_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":692
+ *         r = _hdf5.H5Lget_val(loc_id, name, bufout, size, lapl_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 692; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":693
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":694
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Lget_val_by_idx(hid_t loc_id, char *group_name,  H5_index_t idx_type, H5_iter_order_t order, hsize_t n, void *bufout, size_t size, hid_t lapl_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":689
+ * cdef herr_t H5Lget_val(hid_t loc_id, char *name, void *bufout, size_t size, hid_t lapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Lget_val(loc_id, name, bufout, size, lapl_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Lget_val", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 689; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 689; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 689; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 689; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 689; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_79, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 689; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 689; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Lget_val", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":696
+ *         return r
+ * 
+ * cdef herr_t H5Lget_val_by_idx(hid_t loc_id, char *group_name,  H5_index_t idx_type, H5_iter_order_t order, hsize_t n, void *bufout, size_t size, hid_t lapl_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Lget_val_by_idx(hid_t __pyx_v_loc_id, char *__pyx_v_group_name, H5_index_t __pyx_v_idx_type, H5_iter_order_t __pyx_v_order, hsize_t __pyx_v_n, void *__pyx_v_bufout, size_t __pyx_v_size, hid_t __pyx_v_lapl_id) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Lget_val_by_idx", 0);
+
+  /* "h5py/defs.pyx":698
+ * cdef herr_t H5Lget_val_by_idx(hid_t loc_id, char *group_name,  H5_index_t idx_type, H5_iter_order_t order, hsize_t n, void *bufout, size_t size, hid_t lapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Lget_val_by_idx(loc_id, group_name, idx_type, order, n, bufout, size, lapl_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 698; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 698; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 698; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 698; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":699
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Lget_val_by_idx(loc_id, group_name, idx_type, order, n, bufout, size, lapl_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Lget_val_by_idx(__pyx_v_loc_id, __pyx_v_group_name, __pyx_v_idx_type, __pyx_v_order, __pyx_v_n, __pyx_v_bufout, __pyx_v_size, __pyx_v_lapl_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 699; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":700
+ *     with rlock:
+ *         r = _hdf5.H5Lget_val_by_idx(loc_id, group_name, idx_type, order, n, bufout, size, lapl_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":701
+ *         r = _hdf5.H5Lget_val_by_idx(loc_id, group_name, idx_type, order, n, bufout, size, lapl_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 701; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":702
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":703
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef htri_t H5Lexists(hid_t loc_id, char *name, hid_t lapl_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":698
+ * cdef herr_t H5Lget_val_by_idx(hid_t loc_id, char *group_name,  H5_index_t idx_type, H5_iter_order_t order, hsize_t n, void *bufout, size_t size, hid_t lapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Lget_val_by_idx(loc_id, group_name, idx_type, order, n, bufout, size, lapl_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Lget_val_by_idx", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 698; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 698; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 698; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 698; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 698; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_80, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 698; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 698; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Lget_val_by_idx", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":705
+ *         return r
+ * 
+ * cdef htri_t H5Lexists(hid_t loc_id, char *name, hid_t lapl_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef htri_t r
+ *     with rlock:
+ */
+
+static htri_t __pyx_f_4h5py_4defs_H5Lexists(hid_t __pyx_v_loc_id, char *__pyx_v_name, hid_t __pyx_v_lapl_id) {
+  htri_t __pyx_v_r;
+  htri_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  htri_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Lexists", 0);
+
+  /* "h5py/defs.pyx":707
+ * cdef htri_t H5Lexists(hid_t loc_id, char *name, hid_t lapl_id) except *:
+ *     cdef htri_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Lexists(loc_id, name, lapl_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 707; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 707; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 707; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 707; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":708
+ *     cdef htri_t r
+ *     with rlock:
+ *         r = _hdf5.H5Lexists(loc_id, name, lapl_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Lexists(__pyx_v_loc_id, __pyx_v_name, __pyx_v_lapl_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 708; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":709
+ *     with rlock:
+ *         r = _hdf5.H5Lexists(loc_id, name, lapl_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <htri_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":710
+ *         r = _hdf5.H5Lexists(loc_id, name, lapl_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <htri_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 710; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":711
+ *         if r<0:
+ *             if set_exception():
+ *                 return <htri_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((htri_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":712
+ *             if set_exception():
+ *                 return <htri_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Lget_info(hid_t loc_id, char *name, H5L_info_t *linfo, hid_t lapl_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":707
+ * cdef htri_t H5Lexists(hid_t loc_id, char *name, hid_t lapl_id) except *:
+ *     cdef htri_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Lexists(loc_id, name, lapl_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Lexists", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 707; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 707; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 707; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 707; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 707; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_81, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 707; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 707; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Lexists", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":714
+ *         return r
+ * 
+ * cdef herr_t H5Lget_info(hid_t loc_id, char *name, H5L_info_t *linfo, hid_t lapl_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Lget_info(hid_t __pyx_v_loc_id, char *__pyx_v_name, H5L_info_t *__pyx_v_linfo, hid_t __pyx_v_lapl_id) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Lget_info", 0);
+
+  /* "h5py/defs.pyx":716
+ * cdef herr_t H5Lget_info(hid_t loc_id, char *name, H5L_info_t *linfo, hid_t lapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Lget_info(loc_id, name, linfo, lapl_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 716; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 716; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 716; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 716; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":717
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Lget_info(loc_id, name, linfo, lapl_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Lget_info(__pyx_v_loc_id, __pyx_v_name, __pyx_v_linfo, __pyx_v_lapl_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 717; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":718
+ *     with rlock:
+ *         r = _hdf5.H5Lget_info(loc_id, name, linfo, lapl_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":719
+ *         r = _hdf5.H5Lget_info(loc_id, name, linfo, lapl_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 719; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":720
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":721
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Lget_info_by_idx(hid_t loc_id, char *group_name, H5_index_t idx_type, H5_iter_order_t order, hsize_t n, H5L_info_t *linfo, hid_t lapl_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":716
+ * cdef herr_t H5Lget_info(hid_t loc_id, char *name, H5L_info_t *linfo, hid_t lapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Lget_info(loc_id, name, linfo, lapl_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Lget_info", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 716; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 716; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 716; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 716; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 716; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_82, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 716; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 716; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Lget_info", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":723
+ *         return r
+ * 
+ * cdef herr_t H5Lget_info_by_idx(hid_t loc_id, char *group_name, H5_index_t idx_type, H5_iter_order_t order, hsize_t n, H5L_info_t *linfo, hid_t lapl_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Lget_info_by_idx(hid_t __pyx_v_loc_id, char *__pyx_v_group_name, H5_index_t __pyx_v_idx_type, H5_iter_order_t __pyx_v_order, hsize_t __pyx_v_n, H5L_info_t *__pyx_v_linfo, hid_t __pyx_v_lapl_id) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Lget_info_by_idx", 0);
+
+  /* "h5py/defs.pyx":725
+ * cdef herr_t H5Lget_info_by_idx(hid_t loc_id, char *group_name, H5_index_t idx_type, H5_iter_order_t order, hsize_t n, H5L_info_t *linfo, hid_t lapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Lget_info_by_idx(loc_id, group_name, idx_type, order, n, linfo, lapl_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 725; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 725; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 725; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 725; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":726
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Lget_info_by_idx(loc_id, group_name, idx_type, order, n, linfo, lapl_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Lget_info_by_idx(__pyx_v_loc_id, __pyx_v_group_name, __pyx_v_idx_type, __pyx_v_order, __pyx_v_n, __pyx_v_linfo, __pyx_v_lapl_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 726; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":727
+ *     with rlock:
+ *         r = _hdf5.H5Lget_info_by_idx(loc_id, group_name, idx_type, order, n, linfo, lapl_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":728
+ *         r = _hdf5.H5Lget_info_by_idx(loc_id, group_name, idx_type, order, n, linfo, lapl_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 728; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":729
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":730
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef ssize_t H5Lget_name_by_idx(hid_t loc_id, char *group_name, H5_index_t idx_type, H5_iter_order_t order, hsize_t n, char *name, size_t size, hid_t lapl_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":725
+ * cdef herr_t H5Lget_info_by_idx(hid_t loc_id, char *group_name, H5_index_t idx_type, H5_iter_order_t order, hsize_t n, H5L_info_t *linfo, hid_t lapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Lget_info_by_idx(loc_id, group_name, idx_type, order, n, linfo, lapl_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Lget_info_by_idx", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 725; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 725; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 725; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 725; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 725; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_83, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 725; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 725; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Lget_info_by_idx", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":732
+ *         return r
+ * 
+ * cdef ssize_t H5Lget_name_by_idx(hid_t loc_id, char *group_name, H5_index_t idx_type, H5_iter_order_t order, hsize_t n, char *name, size_t size, hid_t lapl_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef ssize_t r
+ *     with rlock:
+ */
+
+static Py_ssize_t __pyx_f_4h5py_4defs_H5Lget_name_by_idx(hid_t __pyx_v_loc_id, char *__pyx_v_group_name, H5_index_t __pyx_v_idx_type, H5_iter_order_t __pyx_v_order, hsize_t __pyx_v_n, char *__pyx_v_name, size_t __pyx_v_size, hid_t __pyx_v_lapl_id) {
+  Py_ssize_t __pyx_v_r;
+  Py_ssize_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  Py_ssize_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Lget_name_by_idx", 0);
+
+  /* "h5py/defs.pyx":734
+ * cdef ssize_t H5Lget_name_by_idx(hid_t loc_id, char *group_name, H5_index_t idx_type, H5_iter_order_t order, hsize_t n, char *name, size_t size, hid_t lapl_id) except *:
+ *     cdef ssize_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Lget_name_by_idx(loc_id, group_name, idx_type, order, n, name, size, lapl_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 734; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 734; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 734; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 734; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":735
+ *     cdef ssize_t r
+ *     with rlock:
+ *         r = _hdf5.H5Lget_name_by_idx(loc_id, group_name, idx_type, order, n, name, size, lapl_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Lget_name_by_idx(__pyx_v_loc_id, __pyx_v_group_name, __pyx_v_idx_type, __pyx_v_order, __pyx_v_n, __pyx_v_name, __pyx_v_size, __pyx_v_lapl_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 735; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":736
+ *     with rlock:
+ *         r = _hdf5.H5Lget_name_by_idx(loc_id, group_name, idx_type, order, n, name, size, lapl_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <ssize_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":737
+ *         r = _hdf5.H5Lget_name_by_idx(loc_id, group_name, idx_type, order, n, name, size, lapl_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <ssize_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 737; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":738
+ *         if r<0:
+ *             if set_exception():
+ *                 return <ssize_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((Py_ssize_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":739
+ *             if set_exception():
+ *                 return <ssize_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Literate(hid_t grp_id, H5_index_t idx_type, H5_iter_order_t order, hsize_t *idx, H5L_iterate_t op, void *op_data) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":734
+ * cdef ssize_t H5Lget_name_by_idx(hid_t loc_id, char *group_name, H5_index_t idx_type, H5_iter_order_t order, hsize_t n, char *name, size_t size, hid_t lapl_id) except *:
+ *     cdef ssize_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Lget_name_by_idx(loc_id, group_name, idx_type, order, n, name, size, lapl_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Lget_name_by_idx", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 734; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 734; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 734; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 734; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 734; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_84, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 734; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 734; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Lget_name_by_idx", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":741
+ *         return r
+ * 
+ * cdef herr_t H5Literate(hid_t grp_id, H5_index_t idx_type, H5_iter_order_t order, hsize_t *idx, H5L_iterate_t op, void *op_data) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Literate(hid_t __pyx_v_grp_id, H5_index_t __pyx_v_idx_type, H5_iter_order_t __pyx_v_order, hsize_t *__pyx_v_idx, H5L_iterate_t __pyx_v_op, void *__pyx_v_op_data) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Literate", 0);
+
+  /* "h5py/defs.pyx":743
+ * cdef herr_t H5Literate(hid_t grp_id, H5_index_t idx_type, H5_iter_order_t order, hsize_t *idx, H5L_iterate_t op, void *op_data) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Literate(grp_id, idx_type, order, idx, op, op_data)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 743; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 743; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 743; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 743; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":744
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Literate(grp_id, idx_type, order, idx, op, op_data)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Literate(__pyx_v_grp_id, __pyx_v_idx_type, __pyx_v_order, __pyx_v_idx, __pyx_v_op, __pyx_v_op_data); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 744; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":745
+ *     with rlock:
+ *         r = _hdf5.H5Literate(grp_id, idx_type, order, idx, op, op_data)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":746
+ *         r = _hdf5.H5Literate(grp_id, idx_type, order, idx, op, op_data)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 746; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":747
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":748
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Literate_by_name(hid_t loc_id, char *group_name, H5_index_t idx_type, H5_iter_order_t order, hsize_t *idx, H5L_iterate_t op, void *op_data, hid_t lapl_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":743
+ * cdef herr_t H5Literate(hid_t grp_id, H5_index_t idx_type, H5_iter_order_t order, hsize_t *idx, H5L_iterate_t op, void *op_data) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Literate(grp_id, idx_type, order, idx, op, op_data)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Literate", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 743; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 743; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 743; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 743; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 743; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_85, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 743; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 743; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Literate", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":750
+ *         return r
+ * 
+ * cdef herr_t H5Literate_by_name(hid_t loc_id, char *group_name, H5_index_t idx_type, H5_iter_order_t order, hsize_t *idx, H5L_iterate_t op, void *op_data, hid_t lapl_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Literate_by_name(hid_t __pyx_v_loc_id, char *__pyx_v_group_name, H5_index_t __pyx_v_idx_type, H5_iter_order_t __pyx_v_order, hsize_t *__pyx_v_idx, H5L_iterate_t __pyx_v_op, void *__pyx_v_op_data, hid_t __pyx_v_lapl_id) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Literate_by_name", 0);
+
+  /* "h5py/defs.pyx":752
+ * cdef herr_t H5Literate_by_name(hid_t loc_id, char *group_name, H5_index_t idx_type, H5_iter_order_t order, hsize_t *idx, H5L_iterate_t op, void *op_data, hid_t lapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Literate_by_name(loc_id, group_name, idx_type, order, idx, op, op_data, lapl_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 752; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 752; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 752; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 752; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":753
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Literate_by_name(loc_id, group_name, idx_type, order, idx, op, op_data, lapl_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Literate_by_name(__pyx_v_loc_id, __pyx_v_group_name, __pyx_v_idx_type, __pyx_v_order, __pyx_v_idx, __pyx_v_op, __pyx_v_op_data, __pyx_v_lapl_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 753; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":754
+ *     with rlock:
+ *         r = _hdf5.H5Literate_by_name(loc_id, group_name, idx_type, order, idx, op, op_data, lapl_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":755
+ *         r = _hdf5.H5Literate_by_name(loc_id, group_name, idx_type, order, idx, op, op_data, lapl_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 755; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":756
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":757
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Lvisit(hid_t grp_id, H5_index_t idx_type, H5_iter_order_t order, H5L_iterate_t op, void *op_data) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":752
+ * cdef herr_t H5Literate_by_name(hid_t loc_id, char *group_name, H5_index_t idx_type, H5_iter_order_t order, hsize_t *idx, H5L_iterate_t op, void *op_data, hid_t lapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Literate_by_name(loc_id, group_name, idx_type, order, idx, op, op_data, lapl_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Literate_by_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 752; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 752; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 752; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 752; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 752; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_86, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 752; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 752; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Literate_by_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":759
+ *         return r
+ * 
+ * cdef herr_t H5Lvisit(hid_t grp_id, H5_index_t idx_type, H5_iter_order_t order, H5L_iterate_t op, void *op_data) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Lvisit(hid_t __pyx_v_grp_id, H5_index_t __pyx_v_idx_type, H5_iter_order_t __pyx_v_order, H5L_iterate_t __pyx_v_op, void *__pyx_v_op_data) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Lvisit", 0);
+
+  /* "h5py/defs.pyx":761
+ * cdef herr_t H5Lvisit(hid_t grp_id, H5_index_t idx_type, H5_iter_order_t order, H5L_iterate_t op, void *op_data) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Lvisit(grp_id, idx_type, order, op, op_data)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 761; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 761; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 761; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 761; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":762
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Lvisit(grp_id, idx_type, order, op, op_data)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Lvisit(__pyx_v_grp_id, __pyx_v_idx_type, __pyx_v_order, __pyx_v_op, __pyx_v_op_data); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 762; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":763
+ *     with rlock:
+ *         r = _hdf5.H5Lvisit(grp_id, idx_type, order, op, op_data)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":764
+ *         r = _hdf5.H5Lvisit(grp_id, idx_type, order, op, op_data)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 764; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":765
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":766
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Lvisit_by_name(hid_t loc_id, char *group_name, H5_index_t idx_type, H5_iter_order_t order, H5L_iterate_t op, void *op_data, hid_t lapl_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":761
+ * cdef herr_t H5Lvisit(hid_t grp_id, H5_index_t idx_type, H5_iter_order_t order, H5L_iterate_t op, void *op_data) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Lvisit(grp_id, idx_type, order, op, op_data)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Lvisit", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 761; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 761; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 761; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 761; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 761; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_87, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 761; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 761; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Lvisit", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":768
+ *         return r
+ * 
+ * cdef herr_t H5Lvisit_by_name(hid_t loc_id, char *group_name, H5_index_t idx_type, H5_iter_order_t order, H5L_iterate_t op, void *op_data, hid_t lapl_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Lvisit_by_name(hid_t __pyx_v_loc_id, char *__pyx_v_group_name, H5_index_t __pyx_v_idx_type, H5_iter_order_t __pyx_v_order, H5L_iterate_t __pyx_v_op, void *__pyx_v_op_data, hid_t __pyx_v_lapl_id) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Lvisit_by_name", 0);
+
+  /* "h5py/defs.pyx":770
+ * cdef herr_t H5Lvisit_by_name(hid_t loc_id, char *group_name, H5_index_t idx_type, H5_iter_order_t order, H5L_iterate_t op, void *op_data, hid_t lapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Lvisit_by_name(loc_id, group_name, idx_type, order, op, op_data, lapl_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 770; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 770; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 770; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 770; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":771
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Lvisit_by_name(loc_id, group_name, idx_type, order, op, op_data, lapl_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Lvisit_by_name(__pyx_v_loc_id, __pyx_v_group_name, __pyx_v_idx_type, __pyx_v_order, __pyx_v_op, __pyx_v_op_data, __pyx_v_lapl_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 771; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":772
+ *     with rlock:
+ *         r = _hdf5.H5Lvisit_by_name(loc_id, group_name, idx_type, order, op, op_data, lapl_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":773
+ *         r = _hdf5.H5Lvisit_by_name(loc_id, group_name, idx_type, order, op, op_data, lapl_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 773; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":774
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":775
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Lunpack_elink_val(void *ext_linkval, size_t link_size, unsigned *flags, char **filename, char **obj_path) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":770
+ * cdef herr_t H5Lvisit_by_name(hid_t loc_id, char *group_name, H5_index_t idx_type, H5_iter_order_t order, H5L_iterate_t op, void *op_data, hid_t lapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Lvisit_by_name(loc_id, group_name, idx_type, order, op, op_data, lapl_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Lvisit_by_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 770; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 770; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 770; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 770; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 770; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_88, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 770; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 770; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Lvisit_by_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":777
+ *         return r
+ * 
+ * cdef herr_t H5Lunpack_elink_val(void *ext_linkval, size_t link_size, unsigned *flags, char **filename, char **obj_path) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Lunpack_elink_val(void *__pyx_v_ext_linkval, size_t __pyx_v_link_size, unsigned int *__pyx_v_flags, char **__pyx_v_filename, char **__pyx_v_obj_path) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Lunpack_elink_val", 0);
+
+  /* "h5py/defs.pyx":779
+ * cdef herr_t H5Lunpack_elink_val(void *ext_linkval, size_t link_size, unsigned *flags, char **filename, char **obj_path) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Lunpack_elink_val(ext_linkval, link_size, flags, filename, obj_path)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 779; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 779; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 779; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 779; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":780
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Lunpack_elink_val(ext_linkval, link_size, flags, filename, obj_path)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Lunpack_elink_val(__pyx_v_ext_linkval, __pyx_v_link_size, __pyx_v_flags, __pyx_v_filename, __pyx_v_obj_path); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 780; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":781
+ *     with rlock:
+ *         r = _hdf5.H5Lunpack_elink_val(ext_linkval, link_size, flags, filename, obj_path)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":782
+ *         r = _hdf5.H5Lunpack_elink_val(ext_linkval, link_size, flags, filename, obj_path)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 782; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":783
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":784
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Lcreate_external(char *file_name, char *obj_name, hid_t link_loc_id, char *link_name, hid_t lcpl_id, hid_t lapl_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":779
+ * cdef herr_t H5Lunpack_elink_val(void *ext_linkval, size_t link_size, unsigned *flags, char **filename, char **obj_path) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Lunpack_elink_val(ext_linkval, link_size, flags, filename, obj_path)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Lunpack_elink_val", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 779; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 779; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 779; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 779; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 779; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_89, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 779; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 779; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Lunpack_elink_val", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":786
+ *         return r
+ * 
+ * cdef herr_t H5Lcreate_external(char *file_name, char *obj_name, hid_t link_loc_id, char *link_name, hid_t lcpl_id, hid_t lapl_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Lcreate_external(char *__pyx_v_file_name, char *__pyx_v_obj_name, hid_t __pyx_v_link_loc_id, char *__pyx_v_link_name, hid_t __pyx_v_lcpl_id, hid_t __pyx_v_lapl_id) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Lcreate_external", 0);
+
+  /* "h5py/defs.pyx":788
+ * cdef herr_t H5Lcreate_external(char *file_name, char *obj_name, hid_t link_loc_id, char *link_name, hid_t lcpl_id, hid_t lapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Lcreate_external(file_name, obj_name, link_loc_id, link_name, lcpl_id, lapl_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 788; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 788; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 788; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 788; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":789
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Lcreate_external(file_name, obj_name, link_loc_id, link_name, lcpl_id, lapl_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Lcreate_external(__pyx_v_file_name, __pyx_v_obj_name, __pyx_v_link_loc_id, __pyx_v_link_name, __pyx_v_lcpl_id, __pyx_v_lapl_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 789; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":790
+ *     with rlock:
+ *         r = _hdf5.H5Lcreate_external(file_name, obj_name, link_loc_id, link_name, lcpl_id, lapl_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":791
+ *         r = _hdf5.H5Lcreate_external(file_name, obj_name, link_loc_id, link_name, lcpl_id, lapl_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 791; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":792
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":793
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef hid_t H5Oopen(hid_t loc_id, char *name, hid_t lapl_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":788
+ * cdef herr_t H5Lcreate_external(char *file_name, char *obj_name, hid_t link_loc_id, char *link_name, hid_t lcpl_id, hid_t lapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Lcreate_external(file_name, obj_name, link_loc_id, link_name, lcpl_id, lapl_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Lcreate_external", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 788; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 788; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 788; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 788; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 788; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_90, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 788; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 788; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Lcreate_external", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":795
+ *         return r
+ * 
+ * cdef hid_t H5Oopen(hid_t loc_id, char *name, hid_t lapl_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef hid_t r
+ *     with rlock:
+ */
+
+static hid_t __pyx_f_4h5py_4defs_H5Oopen(hid_t __pyx_v_loc_id, char *__pyx_v_name, hid_t __pyx_v_lapl_id) {
+  hid_t __pyx_v_r;
+  hid_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  hid_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Oopen", 0);
+
+  /* "h5py/defs.pyx":797
+ * cdef hid_t H5Oopen(hid_t loc_id, char *name, hid_t lapl_id) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Oopen(loc_id, name, lapl_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 797; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 797; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 797; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 797; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":798
+ *     cdef hid_t r
+ *     with rlock:
+ *         r = _hdf5.H5Oopen(loc_id, name, lapl_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Oopen(__pyx_v_loc_id, __pyx_v_name, __pyx_v_lapl_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 798; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":799
+ *     with rlock:
+ *         r = _hdf5.H5Oopen(loc_id, name, lapl_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":800
+ *         r = _hdf5.H5Oopen(loc_id, name, lapl_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <hid_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 800; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":801
+ *         if r<0:
+ *             if set_exception():
+ *                 return <hid_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((hid_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":802
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef hid_t H5Oopen_by_addr(hid_t loc_id, haddr_t addr) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":797
+ * cdef hid_t H5Oopen(hid_t loc_id, char *name, hid_t lapl_id) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Oopen(loc_id, name, lapl_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Oopen", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 797; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 797; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 797; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 797; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 797; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_91, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 797; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 797; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Oopen", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":804
+ *         return r
+ * 
+ * cdef hid_t H5Oopen_by_addr(hid_t loc_id, haddr_t addr) except *:             # <<<<<<<<<<<<<<
+ *     cdef hid_t r
+ *     with rlock:
+ */
+
+static hid_t __pyx_f_4h5py_4defs_H5Oopen_by_addr(hid_t __pyx_v_loc_id, haddr_t __pyx_v_addr) {
+  hid_t __pyx_v_r;
+  hid_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  hid_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Oopen_by_addr", 0);
+
+  /* "h5py/defs.pyx":806
+ * cdef hid_t H5Oopen_by_addr(hid_t loc_id, haddr_t addr) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Oopen_by_addr(loc_id, addr)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 806; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 806; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 806; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 806; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":807
+ *     cdef hid_t r
+ *     with rlock:
+ *         r = _hdf5.H5Oopen_by_addr(loc_id, addr)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Oopen_by_addr(__pyx_v_loc_id, __pyx_v_addr); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 807; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":808
+ *     with rlock:
+ *         r = _hdf5.H5Oopen_by_addr(loc_id, addr)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":809
+ *         r = _hdf5.H5Oopen_by_addr(loc_id, addr)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <hid_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 809; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":810
+ *         if r<0:
+ *             if set_exception():
+ *                 return <hid_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((hid_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":811
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef hid_t H5Oopen_by_idx(hid_t loc_id, char *group_name, H5_index_t idx_type, H5_iter_order_t order, hsize_t n, hid_t lapl_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":806
+ * cdef hid_t H5Oopen_by_addr(hid_t loc_id, haddr_t addr) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Oopen_by_addr(loc_id, addr)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Oopen_by_addr", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 806; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 806; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 806; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 806; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 806; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_92, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 806; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 806; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Oopen_by_addr", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":813
+ *         return r
+ * 
+ * cdef hid_t H5Oopen_by_idx(hid_t loc_id, char *group_name, H5_index_t idx_type, H5_iter_order_t order, hsize_t n, hid_t lapl_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef hid_t r
+ *     with rlock:
+ */
+
+static hid_t __pyx_f_4h5py_4defs_H5Oopen_by_idx(hid_t __pyx_v_loc_id, char *__pyx_v_group_name, H5_index_t __pyx_v_idx_type, H5_iter_order_t __pyx_v_order, hsize_t __pyx_v_n, hid_t __pyx_v_lapl_id) {
+  hid_t __pyx_v_r;
+  hid_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  hid_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Oopen_by_idx", 0);
+
+  /* "h5py/defs.pyx":815
+ * cdef hid_t H5Oopen_by_idx(hid_t loc_id, char *group_name, H5_index_t idx_type, H5_iter_order_t order, hsize_t n, hid_t lapl_id) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Oopen_by_idx(loc_id, group_name, idx_type, order, n, lapl_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 815; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 815; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 815; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 815; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":816
+ *     cdef hid_t r
+ *     with rlock:
+ *         r = _hdf5.H5Oopen_by_idx(loc_id, group_name, idx_type, order, n, lapl_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Oopen_by_idx(__pyx_v_loc_id, __pyx_v_group_name, __pyx_v_idx_type, __pyx_v_order, __pyx_v_n, __pyx_v_lapl_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 816; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":817
+ *     with rlock:
+ *         r = _hdf5.H5Oopen_by_idx(loc_id, group_name, idx_type, order, n, lapl_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":818
+ *         r = _hdf5.H5Oopen_by_idx(loc_id, group_name, idx_type, order, n, lapl_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <hid_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 818; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":819
+ *         if r<0:
+ *             if set_exception():
+ *                 return <hid_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((hid_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":820
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Oget_info(hid_t loc_id, H5O_info_t *oinfo) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":815
+ * cdef hid_t H5Oopen_by_idx(hid_t loc_id, char *group_name, H5_index_t idx_type, H5_iter_order_t order, hsize_t n, hid_t lapl_id) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Oopen_by_idx(loc_id, group_name, idx_type, order, n, lapl_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Oopen_by_idx", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 815; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 815; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 815; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 815; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 815; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_93, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 815; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 815; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Oopen_by_idx", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":822
+ *         return r
+ * 
+ * cdef herr_t H5Oget_info(hid_t loc_id, H5O_info_t *oinfo) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Oget_info(hid_t __pyx_v_loc_id, H5O_info_t *__pyx_v_oinfo) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Oget_info", 0);
+
+  /* "h5py/defs.pyx":824
+ * cdef herr_t H5Oget_info(hid_t loc_id, H5O_info_t *oinfo) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Oget_info(loc_id, oinfo)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 824; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 824; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 824; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 824; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":825
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Oget_info(loc_id, oinfo)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Oget_info(__pyx_v_loc_id, __pyx_v_oinfo); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 825; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":826
+ *     with rlock:
+ *         r = _hdf5.H5Oget_info(loc_id, oinfo)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":827
+ *         r = _hdf5.H5Oget_info(loc_id, oinfo)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 827; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":828
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":829
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Oget_info_by_name(hid_t loc_id, char *name, H5O_info_t *oinfo, hid_t lapl_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":824
+ * cdef herr_t H5Oget_info(hid_t loc_id, H5O_info_t *oinfo) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Oget_info(loc_id, oinfo)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Oget_info", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 824; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 824; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 824; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 824; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 824; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_94, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 824; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 824; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Oget_info", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":831
+ *         return r
+ * 
+ * cdef herr_t H5Oget_info_by_name(hid_t loc_id, char *name, H5O_info_t *oinfo, hid_t lapl_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Oget_info_by_name(hid_t __pyx_v_loc_id, char *__pyx_v_name, H5O_info_t *__pyx_v_oinfo, hid_t __pyx_v_lapl_id) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Oget_info_by_name", 0);
+
+  /* "h5py/defs.pyx":833
+ * cdef herr_t H5Oget_info_by_name(hid_t loc_id, char *name, H5O_info_t *oinfo, hid_t lapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Oget_info_by_name(loc_id, name, oinfo, lapl_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 833; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 833; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 833; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 833; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":834
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Oget_info_by_name(loc_id, name, oinfo, lapl_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Oget_info_by_name(__pyx_v_loc_id, __pyx_v_name, __pyx_v_oinfo, __pyx_v_lapl_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 834; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":835
+ *     with rlock:
+ *         r = _hdf5.H5Oget_info_by_name(loc_id, name, oinfo, lapl_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":836
+ *         r = _hdf5.H5Oget_info_by_name(loc_id, name, oinfo, lapl_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 836; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":837
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":838
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Oget_info_by_idx(hid_t loc_id, char *group_name,  H5_index_t idx_type, H5_iter_order_t order, hsize_t n, H5O_info_t *oinfo, hid_t lapl_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":833
+ * cdef herr_t H5Oget_info_by_name(hid_t loc_id, char *name, H5O_info_t *oinfo, hid_t lapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Oget_info_by_name(loc_id, name, oinfo, lapl_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Oget_info_by_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 833; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 833; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 833; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 833; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 833; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_95, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 833; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 833; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Oget_info_by_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":840
+ *         return r
+ * 
+ * cdef herr_t H5Oget_info_by_idx(hid_t loc_id, char *group_name,  H5_index_t idx_type, H5_iter_order_t order, hsize_t n, H5O_info_t *oinfo, hid_t lapl_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Oget_info_by_idx(hid_t __pyx_v_loc_id, char *__pyx_v_group_name, H5_index_t __pyx_v_idx_type, H5_iter_order_t __pyx_v_order, hsize_t __pyx_v_n, H5O_info_t *__pyx_v_oinfo, hid_t __pyx_v_lapl_id) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Oget_info_by_idx", 0);
+
+  /* "h5py/defs.pyx":842
+ * cdef herr_t H5Oget_info_by_idx(hid_t loc_id, char *group_name,  H5_index_t idx_type, H5_iter_order_t order, hsize_t n, H5O_info_t *oinfo, hid_t lapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Oget_info_by_idx(loc_id, group_name, idx_type, order, n, oinfo, lapl_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 842; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 842; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 842; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 842; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":843
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Oget_info_by_idx(loc_id, group_name, idx_type, order, n, oinfo, lapl_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Oget_info_by_idx(__pyx_v_loc_id, __pyx_v_group_name, __pyx_v_idx_type, __pyx_v_order, __pyx_v_n, __pyx_v_oinfo, __pyx_v_lapl_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 843; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":844
+ *     with rlock:
+ *         r = _hdf5.H5Oget_info_by_idx(loc_id, group_name, idx_type, order, n, oinfo, lapl_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":845
+ *         r = _hdf5.H5Oget_info_by_idx(loc_id, group_name, idx_type, order, n, oinfo, lapl_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 845; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":846
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":847
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Olink(hid_t obj_id, hid_t new_loc_id, char *new_name, hid_t lcpl_id, hid_t lapl_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":842
+ * cdef herr_t H5Oget_info_by_idx(hid_t loc_id, char *group_name,  H5_index_t idx_type, H5_iter_order_t order, hsize_t n, H5O_info_t *oinfo, hid_t lapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Oget_info_by_idx(loc_id, group_name, idx_type, order, n, oinfo, lapl_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Oget_info_by_idx", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 842; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 842; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 842; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 842; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 842; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_96, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 842; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 842; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Oget_info_by_idx", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":849
+ *         return r
+ * 
+ * cdef herr_t H5Olink(hid_t obj_id, hid_t new_loc_id, char *new_name, hid_t lcpl_id, hid_t lapl_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Olink(hid_t __pyx_v_obj_id, hid_t __pyx_v_new_loc_id, char *__pyx_v_new_name, hid_t __pyx_v_lcpl_id, hid_t __pyx_v_lapl_id) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Olink", 0);
+
+  /* "h5py/defs.pyx":851
+ * cdef herr_t H5Olink(hid_t obj_id, hid_t new_loc_id, char *new_name, hid_t lcpl_id, hid_t lapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Olink(obj_id, new_loc_id, new_name, lcpl_id, lapl_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 851; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 851; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 851; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 851; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":852
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Olink(obj_id, new_loc_id, new_name, lcpl_id, lapl_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Olink(__pyx_v_obj_id, __pyx_v_new_loc_id, __pyx_v_new_name, __pyx_v_lcpl_id, __pyx_v_lapl_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 852; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":853
+ *     with rlock:
+ *         r = _hdf5.H5Olink(obj_id, new_loc_id, new_name, lcpl_id, lapl_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":854
+ *         r = _hdf5.H5Olink(obj_id, new_loc_id, new_name, lcpl_id, lapl_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 854; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":855
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":856
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Ocopy(hid_t src_loc_id, char *src_name, hid_t dst_loc_id,  char *dst_name, hid_t ocpypl_id, hid_t lcpl_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":851
+ * cdef herr_t H5Olink(hid_t obj_id, hid_t new_loc_id, char *new_name, hid_t lcpl_id, hid_t lapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Olink(obj_id, new_loc_id, new_name, lcpl_id, lapl_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Olink", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 851; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 851; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 851; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 851; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 851; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_97, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 851; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 851; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Olink", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":858
+ *         return r
+ * 
+ * cdef herr_t H5Ocopy(hid_t src_loc_id, char *src_name, hid_t dst_loc_id,  char *dst_name, hid_t ocpypl_id, hid_t lcpl_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Ocopy(hid_t __pyx_v_src_loc_id, char *__pyx_v_src_name, hid_t __pyx_v_dst_loc_id, char *__pyx_v_dst_name, hid_t __pyx_v_ocpypl_id, hid_t __pyx_v_lcpl_id) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Ocopy", 0);
+
+  /* "h5py/defs.pyx":860
+ * cdef herr_t H5Ocopy(hid_t src_loc_id, char *src_name, hid_t dst_loc_id,  char *dst_name, hid_t ocpypl_id, hid_t lcpl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Ocopy(src_loc_id, src_name, dst_loc_id, dst_name, ocpypl_id, lcpl_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 860; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 860; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 860; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 860; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":861
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Ocopy(src_loc_id, src_name, dst_loc_id, dst_name, ocpypl_id, lcpl_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Ocopy(__pyx_v_src_loc_id, __pyx_v_src_name, __pyx_v_dst_loc_id, __pyx_v_dst_name, __pyx_v_ocpypl_id, __pyx_v_lcpl_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 861; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":862
+ *     with rlock:
+ *         r = _hdf5.H5Ocopy(src_loc_id, src_name, dst_loc_id, dst_name, ocpypl_id, lcpl_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":863
+ *         r = _hdf5.H5Ocopy(src_loc_id, src_name, dst_loc_id, dst_name, ocpypl_id, lcpl_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 863; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":864
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":865
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Oincr_refcount(hid_t object_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":860
+ * cdef herr_t H5Ocopy(hid_t src_loc_id, char *src_name, hid_t dst_loc_id,  char *dst_name, hid_t ocpypl_id, hid_t lcpl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Ocopy(src_loc_id, src_name, dst_loc_id, dst_name, ocpypl_id, lcpl_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Ocopy", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 860; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 860; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 860; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 860; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 860; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_98, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 860; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 860; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Ocopy", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":867
+ *         return r
+ * 
+ * cdef herr_t H5Oincr_refcount(hid_t object_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Oincr_refcount(hid_t __pyx_v_object_id) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Oincr_refcount", 0);
+
+  /* "h5py/defs.pyx":869
+ * cdef herr_t H5Oincr_refcount(hid_t object_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Oincr_refcount(object_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 869; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 869; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 869; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 869; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":870
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Oincr_refcount(object_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Oincr_refcount(__pyx_v_object_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 870; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":871
+ *     with rlock:
+ *         r = _hdf5.H5Oincr_refcount(object_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":872
+ *         r = _hdf5.H5Oincr_refcount(object_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 872; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":873
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":874
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Odecr_refcount(hid_t object_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":869
+ * cdef herr_t H5Oincr_refcount(hid_t object_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Oincr_refcount(object_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Oincr_refcount", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 869; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 869; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 869; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 869; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 869; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_99, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 869; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 869; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Oincr_refcount", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":876
+ *         return r
+ * 
+ * cdef herr_t H5Odecr_refcount(hid_t object_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Odecr_refcount(hid_t __pyx_v_object_id) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Odecr_refcount", 0);
+
+  /* "h5py/defs.pyx":878
+ * cdef herr_t H5Odecr_refcount(hid_t object_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Odecr_refcount(object_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 878; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 878; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 878; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 878; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":879
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Odecr_refcount(object_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Odecr_refcount(__pyx_v_object_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 879; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":880
+ *     with rlock:
+ *         r = _hdf5.H5Odecr_refcount(object_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":881
+ *         r = _hdf5.H5Odecr_refcount(object_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 881; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":882
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":883
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Oset_comment(hid_t obj_id, char *comment) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":878
+ * cdef herr_t H5Odecr_refcount(hid_t object_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Odecr_refcount(object_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Odecr_refcount", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 878; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 878; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 878; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 878; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 878; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_100, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 878; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 878; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Odecr_refcount", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":885
+ *         return r
+ * 
+ * cdef herr_t H5Oset_comment(hid_t obj_id, char *comment) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Oset_comment(hid_t __pyx_v_obj_id, char *__pyx_v_comment) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Oset_comment", 0);
+
+  /* "h5py/defs.pyx":887
+ * cdef herr_t H5Oset_comment(hid_t obj_id, char *comment) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Oset_comment(obj_id, comment)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 887; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 887; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 887; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 887; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":888
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Oset_comment(obj_id, comment)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Oset_comment(__pyx_v_obj_id, __pyx_v_comment); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 888; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":889
+ *     with rlock:
+ *         r = _hdf5.H5Oset_comment(obj_id, comment)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":890
+ *         r = _hdf5.H5Oset_comment(obj_id, comment)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 890; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":891
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":892
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Oset_comment_by_name(hid_t loc_id, char *name,  char *comment, hid_t lapl_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":887
+ * cdef herr_t H5Oset_comment(hid_t obj_id, char *comment) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Oset_comment(obj_id, comment)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Oset_comment", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 887; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 887; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 887; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 887; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 887; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_101, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 887; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 887; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Oset_comment", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":894
+ *         return r
+ * 
+ * cdef herr_t H5Oset_comment_by_name(hid_t loc_id, char *name,  char *comment, hid_t lapl_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Oset_comment_by_name(hid_t __pyx_v_loc_id, char *__pyx_v_name, char *__pyx_v_comment, hid_t __pyx_v_lapl_id) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Oset_comment_by_name", 0);
+
+  /* "h5py/defs.pyx":896
+ * cdef herr_t H5Oset_comment_by_name(hid_t loc_id, char *name,  char *comment, hid_t lapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Oset_comment_by_name(loc_id, name, comment, lapl_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 896; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 896; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 896; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 896; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":897
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Oset_comment_by_name(loc_id, name, comment, lapl_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Oset_comment_by_name(__pyx_v_loc_id, __pyx_v_name, __pyx_v_comment, __pyx_v_lapl_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 897; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":898
+ *     with rlock:
+ *         r = _hdf5.H5Oset_comment_by_name(loc_id, name, comment, lapl_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":899
+ *         r = _hdf5.H5Oset_comment_by_name(loc_id, name, comment, lapl_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 899; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":900
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":901
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef ssize_t H5Oget_comment(hid_t obj_id, char *comment, size_t bufsize) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":896
+ * cdef herr_t H5Oset_comment_by_name(hid_t loc_id, char *name,  char *comment, hid_t lapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Oset_comment_by_name(loc_id, name, comment, lapl_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Oset_comment_by_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 896; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 896; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 896; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 896; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 896; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_102, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 896; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 896; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Oset_comment_by_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":903
+ *         return r
+ * 
+ * cdef ssize_t H5Oget_comment(hid_t obj_id, char *comment, size_t bufsize) except *:             # <<<<<<<<<<<<<<
+ *     cdef ssize_t r
+ *     with rlock:
+ */
+
+static Py_ssize_t __pyx_f_4h5py_4defs_H5Oget_comment(hid_t __pyx_v_obj_id, char *__pyx_v_comment, size_t __pyx_v_bufsize) {
+  Py_ssize_t __pyx_v_r;
+  Py_ssize_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  Py_ssize_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Oget_comment", 0);
+
+  /* "h5py/defs.pyx":905
+ * cdef ssize_t H5Oget_comment(hid_t obj_id, char *comment, size_t bufsize) except *:
+ *     cdef ssize_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Oget_comment(obj_id, comment, bufsize)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 905; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 905; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 905; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 905; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":906
+ *     cdef ssize_t r
+ *     with rlock:
+ *         r = _hdf5.H5Oget_comment(obj_id, comment, bufsize)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Oget_comment(__pyx_v_obj_id, __pyx_v_comment, __pyx_v_bufsize); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 906; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":907
+ *     with rlock:
+ *         r = _hdf5.H5Oget_comment(obj_id, comment, bufsize)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <ssize_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":908
+ *         r = _hdf5.H5Oget_comment(obj_id, comment, bufsize)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <ssize_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 908; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":909
+ *         if r<0:
+ *             if set_exception():
+ *                 return <ssize_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((Py_ssize_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":910
+ *             if set_exception():
+ *                 return <ssize_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef ssize_t H5Oget_comment_by_name(hid_t loc_id, char *name, char *comment, size_t bufsize, hid_t lapl_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":905
+ * cdef ssize_t H5Oget_comment(hid_t obj_id, char *comment, size_t bufsize) except *:
+ *     cdef ssize_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Oget_comment(obj_id, comment, bufsize)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Oget_comment", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 905; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 905; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 905; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 905; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 905; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_103, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 905; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 905; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Oget_comment", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":912
+ *         return r
+ * 
+ * cdef ssize_t H5Oget_comment_by_name(hid_t loc_id, char *name, char *comment, size_t bufsize, hid_t lapl_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef ssize_t r
+ *     with rlock:
+ */
+
+static Py_ssize_t __pyx_f_4h5py_4defs_H5Oget_comment_by_name(hid_t __pyx_v_loc_id, char *__pyx_v_name, char *__pyx_v_comment, size_t __pyx_v_bufsize, hid_t __pyx_v_lapl_id) {
+  Py_ssize_t __pyx_v_r;
+  Py_ssize_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  Py_ssize_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Oget_comment_by_name", 0);
+
+  /* "h5py/defs.pyx":914
+ * cdef ssize_t H5Oget_comment_by_name(hid_t loc_id, char *name, char *comment, size_t bufsize, hid_t lapl_id) except *:
+ *     cdef ssize_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Oget_comment_by_name(loc_id, name, comment, bufsize, lapl_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 914; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 914; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 914; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 914; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":915
+ *     cdef ssize_t r
+ *     with rlock:
+ *         r = _hdf5.H5Oget_comment_by_name(loc_id, name, comment, bufsize, lapl_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Oget_comment_by_name(__pyx_v_loc_id, __pyx_v_name, __pyx_v_comment, __pyx_v_bufsize, __pyx_v_lapl_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 915; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":916
+ *     with rlock:
+ *         r = _hdf5.H5Oget_comment_by_name(loc_id, name, comment, bufsize, lapl_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <ssize_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":917
+ *         r = _hdf5.H5Oget_comment_by_name(loc_id, name, comment, bufsize, lapl_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <ssize_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 917; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":918
+ *         if r<0:
+ *             if set_exception():
+ *                 return <ssize_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((Py_ssize_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":919
+ *             if set_exception():
+ *                 return <ssize_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Ovisit(hid_t obj_id, H5_index_t idx_type, H5_iter_order_t order,  H5O_iterate_t op, void *op_data) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":914
+ * cdef ssize_t H5Oget_comment_by_name(hid_t loc_id, char *name, char *comment, size_t bufsize, hid_t lapl_id) except *:
+ *     cdef ssize_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Oget_comment_by_name(loc_id, name, comment, bufsize, lapl_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Oget_comment_by_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 914; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 914; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 914; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 914; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 914; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_104, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 914; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 914; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Oget_comment_by_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":921
+ *         return r
+ * 
+ * cdef herr_t H5Ovisit(hid_t obj_id, H5_index_t idx_type, H5_iter_order_t order,  H5O_iterate_t op, void *op_data) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Ovisit(hid_t __pyx_v_obj_id, H5_index_t __pyx_v_idx_type, H5_iter_order_t __pyx_v_order, H5O_iterate_t __pyx_v_op, void *__pyx_v_op_data) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Ovisit", 0);
+
+  /* "h5py/defs.pyx":923
+ * cdef herr_t H5Ovisit(hid_t obj_id, H5_index_t idx_type, H5_iter_order_t order,  H5O_iterate_t op, void *op_data) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Ovisit(obj_id, idx_type, order, op, op_data)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 923; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 923; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 923; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 923; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":924
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Ovisit(obj_id, idx_type, order, op, op_data)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Ovisit(__pyx_v_obj_id, __pyx_v_idx_type, __pyx_v_order, __pyx_v_op, __pyx_v_op_data); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 924; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":925
+ *     with rlock:
+ *         r = _hdf5.H5Ovisit(obj_id, idx_type, order, op, op_data)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":926
+ *         r = _hdf5.H5Ovisit(obj_id, idx_type, order, op, op_data)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 926; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":927
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":928
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Ovisit_by_name(hid_t loc_id, char *obj_name, H5_index_t idx_type, H5_iter_order_t order, H5O_iterate_t op, void *op_data, hid_t lapl_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":923
+ * cdef herr_t H5Ovisit(hid_t obj_id, H5_index_t idx_type, H5_iter_order_t order,  H5O_iterate_t op, void *op_data) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Ovisit(obj_id, idx_type, order, op, op_data)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Ovisit", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 923; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 923; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 923; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 923; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 923; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_105, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 923; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 923; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Ovisit", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":930
+ *         return r
+ * 
+ * cdef herr_t H5Ovisit_by_name(hid_t loc_id, char *obj_name, H5_index_t idx_type, H5_iter_order_t order, H5O_iterate_t op, void *op_data, hid_t lapl_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Ovisit_by_name(hid_t __pyx_v_loc_id, char *__pyx_v_obj_name, H5_index_t __pyx_v_idx_type, H5_iter_order_t __pyx_v_order, H5O_iterate_t __pyx_v_op, void *__pyx_v_op_data, hid_t __pyx_v_lapl_id) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Ovisit_by_name", 0);
+
+  /* "h5py/defs.pyx":932
+ * cdef herr_t H5Ovisit_by_name(hid_t loc_id, char *obj_name, H5_index_t idx_type, H5_iter_order_t order, H5O_iterate_t op, void *op_data, hid_t lapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Ovisit_by_name(loc_id, obj_name, idx_type, order, op, op_data, lapl_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 932; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 932; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 932; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 932; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":933
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Ovisit_by_name(loc_id, obj_name, idx_type, order, op, op_data, lapl_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Ovisit_by_name(__pyx_v_loc_id, __pyx_v_obj_name, __pyx_v_idx_type, __pyx_v_order, __pyx_v_op, __pyx_v_op_data, __pyx_v_lapl_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 933; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":934
+ *     with rlock:
+ *         r = _hdf5.H5Ovisit_by_name(loc_id, obj_name, idx_type, order, op, op_data, lapl_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":935
+ *         r = _hdf5.H5Ovisit_by_name(loc_id, obj_name, idx_type, order, op, op_data, lapl_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 935; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":936
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":937
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Oclose(hid_t object_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":932
+ * cdef herr_t H5Ovisit_by_name(hid_t loc_id, char *obj_name, H5_index_t idx_type, H5_iter_order_t order, H5O_iterate_t op, void *op_data, hid_t lapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Ovisit_by_name(loc_id, obj_name, idx_type, order, op, op_data, lapl_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Ovisit_by_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 932; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 932; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 932; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 932; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 932; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_106, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 932; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 932; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Ovisit_by_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":939
+ *         return r
+ * 
+ * cdef herr_t H5Oclose(hid_t object_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Oclose(hid_t __pyx_v_object_id) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Oclose", 0);
+
+  /* "h5py/defs.pyx":941
+ * cdef herr_t H5Oclose(hid_t object_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Oclose(object_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 941; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 941; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 941; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 941; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":942
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Oclose(object_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Oclose(__pyx_v_object_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 942; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":943
+ *     with rlock:
+ *         r = _hdf5.H5Oclose(object_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":944
+ *         r = _hdf5.H5Oclose(object_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 944; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":945
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":946
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef hid_t H5Pcreate(hid_t plist_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":941
+ * cdef herr_t H5Oclose(hid_t object_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Oclose(object_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Oclose", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 941; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 941; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 941; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 941; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 941; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_107, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 941; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 941; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Oclose", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":948
+ *         return r
+ * 
+ * cdef hid_t H5Pcreate(hid_t plist_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef hid_t r
+ *     with rlock:
+ */
+
+static hid_t __pyx_f_4h5py_4defs_H5Pcreate(hid_t __pyx_v_plist_id) {
+  hid_t __pyx_v_r;
+  hid_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  hid_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Pcreate", 0);
+
+  /* "h5py/defs.pyx":950
+ * cdef hid_t H5Pcreate(hid_t plist_id) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pcreate(plist_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 950; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 950; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 950; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 950; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":951
+ *     cdef hid_t r
+ *     with rlock:
+ *         r = _hdf5.H5Pcreate(plist_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Pcreate(__pyx_v_plist_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 951; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":952
+ *     with rlock:
+ *         r = _hdf5.H5Pcreate(plist_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":953
+ *         r = _hdf5.H5Pcreate(plist_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <hid_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 953; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":954
+ *         if r<0:
+ *             if set_exception():
+ *                 return <hid_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((hid_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":955
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef hid_t H5Pcopy(hid_t plist_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":950
+ * cdef hid_t H5Pcreate(hid_t plist_id) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pcreate(plist_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Pcreate", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 950; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 950; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 950; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 950; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 950; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_108, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 950; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 950; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Pcreate", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":957
+ *         return r
+ * 
+ * cdef hid_t H5Pcopy(hid_t plist_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef hid_t r
+ *     with rlock:
+ */
+
+static hid_t __pyx_f_4h5py_4defs_H5Pcopy(hid_t __pyx_v_plist_id) {
+  hid_t __pyx_v_r;
+  hid_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  hid_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Pcopy", 0);
+
+  /* "h5py/defs.pyx":959
+ * cdef hid_t H5Pcopy(hid_t plist_id) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pcopy(plist_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 959; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 959; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 959; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 959; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":960
+ *     cdef hid_t r
+ *     with rlock:
+ *         r = _hdf5.H5Pcopy(plist_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Pcopy(__pyx_v_plist_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 960; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":961
+ *     with rlock:
+ *         r = _hdf5.H5Pcopy(plist_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":962
+ *         r = _hdf5.H5Pcopy(plist_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <hid_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 962; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":963
+ *         if r<0:
+ *             if set_exception():
+ *                 return <hid_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((hid_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":964
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef int H5Pget_class(hid_t plist_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":959
+ * cdef hid_t H5Pcopy(hid_t plist_id) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pcopy(plist_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Pcopy", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 959; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 959; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 959; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 959; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 959; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_109, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 959; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 959; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Pcopy", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":966
+ *         return r
+ * 
+ * cdef int H5Pget_class(hid_t plist_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef int r
+ *     with rlock:
+ */
+
+static int __pyx_f_4h5py_4defs_H5Pget_class(hid_t __pyx_v_plist_id) {
+  int __pyx_v_r;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  int __pyx_t_8;
+  int __pyx_t_9;
+  PyObject *__pyx_t_10 = NULL;
+  PyObject *__pyx_t_11 = NULL;
+  int __pyx_t_12;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Pget_class", 0);
+
+  /* "h5py/defs.pyx":968
+ * cdef int H5Pget_class(hid_t plist_id) except *:
+ *     cdef int r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_class(plist_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 968; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 968; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 968; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 968; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":969
+ *     cdef int r
+ *     with rlock:
+ *         r = _hdf5.H5Pget_class(plist_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Pget_class(__pyx_v_plist_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 969; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":970
+ *     with rlock:
+ *         r = _hdf5.H5Pget_class(plist_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <int>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":971
+ *         r = _hdf5.H5Pget_class(plist_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <int>-1;
+ *         return r
+ */
+            __pyx_t_8 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 971; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_8) {
+
+              /* "h5py/defs.pyx":972
+ *         if r<0:
+ *             if set_exception():
+ *                 return <int>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((int)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":973
+ *             if set_exception():
+ *                 return <int>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Pclose(hid_t plist_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":968
+ * cdef int H5Pget_class(hid_t plist_id) except *:
+ *     cdef int r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_class(plist_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Pget_class", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 968; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_10 = PyTuple_New(3); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 968; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_10);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_10, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_11 = PyObject_Call(__pyx_t_2, __pyx_t_10, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 968; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_11);
+          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 968; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_12 = (!__pyx_t_9);
+          if (__pyx_t_12) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 968; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_10)); __pyx_t_10 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_110, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 968; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 968; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_10);
+  __Pyx_AddTraceback("h5py.defs.H5Pget_class", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":975
+ *         return r
+ * 
+ * cdef herr_t H5Pclose(hid_t plist_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Pclose(hid_t __pyx_v_plist_id) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Pclose", 0);
+
+  /* "h5py/defs.pyx":977
+ * cdef herr_t H5Pclose(hid_t plist_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pclose(plist_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 977; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 977; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 977; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 977; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":978
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Pclose(plist_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Pclose(__pyx_v_plist_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 978; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":979
+ *     with rlock:
+ *         r = _hdf5.H5Pclose(plist_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":980
+ *         r = _hdf5.H5Pclose(plist_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 980; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":981
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":982
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef htri_t H5Pequal( hid_t id1, hid_t id2 ) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":977
+ * cdef herr_t H5Pclose(hid_t plist_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pclose(plist_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Pclose", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 977; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 977; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 977; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 977; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 977; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_111, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 977; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 977; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Pclose", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":984
+ *         return r
+ * 
+ * cdef htri_t H5Pequal( hid_t id1, hid_t id2 ) except *:             # <<<<<<<<<<<<<<
+ *     cdef htri_t r
+ *     with rlock:
+ */
+
+static htri_t __pyx_f_4h5py_4defs_H5Pequal(hid_t __pyx_v_id1, hid_t __pyx_v_id2) {
+  htri_t __pyx_v_r;
+  htri_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  htri_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Pequal", 0);
+
+  /* "h5py/defs.pyx":986
+ * cdef htri_t H5Pequal( hid_t id1, hid_t id2 ) except *:
+ *     cdef htri_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pequal(id1, id2)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 986; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 986; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 986; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 986; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":987
+ *     cdef htri_t r
+ *     with rlock:
+ *         r = _hdf5.H5Pequal(id1, id2)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Pequal(__pyx_v_id1, __pyx_v_id2); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 987; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":988
+ *     with rlock:
+ *         r = _hdf5.H5Pequal(id1, id2)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <htri_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":989
+ *         r = _hdf5.H5Pequal(id1, id2)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <htri_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 989; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":990
+ *         if r<0:
+ *             if set_exception():
+ *                 return <htri_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((htri_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":991
+ *             if set_exception():
+ *                 return <htri_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Pclose_class(hid_t id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":986
+ * cdef htri_t H5Pequal( hid_t id1, hid_t id2 ) except *:
+ *     cdef htri_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pequal(id1, id2)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Pequal", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 986; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 986; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 986; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 986; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 986; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_112, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 986; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 986; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Pequal", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":993
+ *         return r
+ * 
+ * cdef herr_t H5Pclose_class(hid_t id) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Pclose_class(hid_t __pyx_v_id) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Pclose_class", 0);
+
+  /* "h5py/defs.pyx":995
+ * cdef herr_t H5Pclose_class(hid_t id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pclose_class(id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 995; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 995; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 995; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 995; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":996
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Pclose_class(id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Pclose_class(__pyx_v_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 996; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":997
+ *     with rlock:
+ *         r = _hdf5.H5Pclose_class(id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":998
+ *         r = _hdf5.H5Pclose_class(id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 998; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":999
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1000
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Pget_version(hid_t plist, unsigned int *super_, unsigned int* freelist,  unsigned int *stab, unsigned int *shhdr) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":995
+ * cdef herr_t H5Pclose_class(hid_t id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pclose_class(id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Pclose_class", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 995; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 995; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 995; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 995; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 995; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_113, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 995; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 995; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Pclose_class", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1002
+ *         return r
+ * 
+ * cdef herr_t H5Pget_version(hid_t plist, unsigned int *super_, unsigned int* freelist,  unsigned int *stab, unsigned int *shhdr) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Pget_version(hid_t __pyx_v_plist, unsigned int *__pyx_v_super_, unsigned int *__pyx_v_freelist, unsigned int *__pyx_v_stab, unsigned int *__pyx_v_shhdr) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Pget_version", 0);
+
+  /* "h5py/defs.pyx":1004
+ * cdef herr_t H5Pget_version(hid_t plist, unsigned int *super_, unsigned int* freelist,  unsigned int *stab, unsigned int *shhdr) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_version(plist, super_, freelist, stab, shhdr)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1004; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1004; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1004; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1004; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1005
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Pget_version(plist, super_, freelist, stab, shhdr)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Pget_version(__pyx_v_plist, __pyx_v_super_, __pyx_v_freelist, __pyx_v_stab, __pyx_v_shhdr); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1005; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1006
+ *     with rlock:
+ *         r = _hdf5.H5Pget_version(plist, super_, freelist, stab, shhdr)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1007
+ *         r = _hdf5.H5Pget_version(plist, super_, freelist, stab, shhdr)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1007; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1008
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1009
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Pset_userblock(hid_t plist, hsize_t size) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1004
+ * cdef herr_t H5Pget_version(hid_t plist, unsigned int *super_, unsigned int* freelist,  unsigned int *stab, unsigned int *shhdr) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_version(plist, super_, freelist, stab, shhdr)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Pget_version", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1004; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1004; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1004; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1004; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1004; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_114, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1004; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1004; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Pget_version", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1011
+ *         return r
+ * 
+ * cdef herr_t H5Pset_userblock(hid_t plist, hsize_t size) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Pset_userblock(hid_t __pyx_v_plist, hsize_t __pyx_v_size) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Pset_userblock", 0);
+
+  /* "h5py/defs.pyx":1013
+ * cdef herr_t H5Pset_userblock(hid_t plist, hsize_t size) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_userblock(plist, size)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1013; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1013; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1013; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1013; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1014
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Pset_userblock(plist, size)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Pset_userblock(__pyx_v_plist, __pyx_v_size); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1014; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1015
+ *     with rlock:
+ *         r = _hdf5.H5Pset_userblock(plist, size)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1016
+ *         r = _hdf5.H5Pset_userblock(plist, size)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1016; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1017
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1018
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Pget_userblock(hid_t plist, hsize_t * size) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1013
+ * cdef herr_t H5Pset_userblock(hid_t plist, hsize_t size) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_userblock(plist, size)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Pset_userblock", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1013; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1013; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1013; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1013; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1013; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_115, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1013; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1013; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Pset_userblock", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1020
+ *         return r
+ * 
+ * cdef herr_t H5Pget_userblock(hid_t plist, hsize_t * size) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Pget_userblock(hid_t __pyx_v_plist, hsize_t *__pyx_v_size) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Pget_userblock", 0);
+
+  /* "h5py/defs.pyx":1022
+ * cdef herr_t H5Pget_userblock(hid_t plist, hsize_t * size) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_userblock(plist, size)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1022; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1022; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1022; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1022; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1023
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Pget_userblock(plist, size)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Pget_userblock(__pyx_v_plist, __pyx_v_size); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1023; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1024
+ *     with rlock:
+ *         r = _hdf5.H5Pget_userblock(plist, size)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1025
+ *         r = _hdf5.H5Pget_userblock(plist, size)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1025; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1026
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1027
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Pset_sizes(hid_t plist, size_t sizeof_addr, size_t sizeof_size) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1022
+ * cdef herr_t H5Pget_userblock(hid_t plist, hsize_t * size) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_userblock(plist, size)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Pget_userblock", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1022; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1022; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1022; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1022; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1022; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_116, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1022; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1022; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Pget_userblock", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1029
+ *         return r
+ * 
+ * cdef herr_t H5Pset_sizes(hid_t plist, size_t sizeof_addr, size_t sizeof_size) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Pset_sizes(hid_t __pyx_v_plist, size_t __pyx_v_sizeof_addr, size_t __pyx_v_sizeof_size) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Pset_sizes", 0);
+
+  /* "h5py/defs.pyx":1031
+ * cdef herr_t H5Pset_sizes(hid_t plist, size_t sizeof_addr, size_t sizeof_size) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_sizes(plist, sizeof_addr, sizeof_size)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1032
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Pset_sizes(plist, sizeof_addr, sizeof_size)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Pset_sizes(__pyx_v_plist, __pyx_v_sizeof_addr, __pyx_v_sizeof_size); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1032; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1033
+ *     with rlock:
+ *         r = _hdf5.H5Pset_sizes(plist, sizeof_addr, sizeof_size)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1034
+ *         r = _hdf5.H5Pset_sizes(plist, sizeof_addr, sizeof_size)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1034; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1035
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1036
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Pget_sizes(hid_t plist, size_t *sizeof_addr, size_t *sizeof_size) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1031
+ * cdef herr_t H5Pset_sizes(hid_t plist, size_t sizeof_addr, size_t sizeof_size) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_sizes(plist, sizeof_addr, sizeof_size)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Pset_sizes", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_117, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Pset_sizes", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1038
+ *         return r
+ * 
+ * cdef herr_t H5Pget_sizes(hid_t plist, size_t *sizeof_addr, size_t *sizeof_size) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Pget_sizes(hid_t __pyx_v_plist, size_t *__pyx_v_sizeof_addr, size_t *__pyx_v_sizeof_size) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Pget_sizes", 0);
+
+  /* "h5py/defs.pyx":1040
+ * cdef herr_t H5Pget_sizes(hid_t plist, size_t *sizeof_addr, size_t *sizeof_size) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_sizes(plist, sizeof_addr, sizeof_size)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1040; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1040; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1040; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1040; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1041
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Pget_sizes(plist, sizeof_addr, sizeof_size)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Pget_sizes(__pyx_v_plist, __pyx_v_sizeof_addr, __pyx_v_sizeof_size); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1041; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1042
+ *     with rlock:
+ *         r = _hdf5.H5Pget_sizes(plist, sizeof_addr, sizeof_size)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1043
+ *         r = _hdf5.H5Pget_sizes(plist, sizeof_addr, sizeof_size)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1043; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1044
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1045
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Pset_sym_k(hid_t plist, unsigned int ik, unsigned int lk) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1040
+ * cdef herr_t H5Pget_sizes(hid_t plist, size_t *sizeof_addr, size_t *sizeof_size) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_sizes(plist, sizeof_addr, sizeof_size)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Pget_sizes", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1040; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1040; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1040; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1040; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1040; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_118, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1040; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1040; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Pget_sizes", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1047
+ *         return r
+ * 
+ * cdef herr_t H5Pset_sym_k(hid_t plist, unsigned int ik, unsigned int lk) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Pset_sym_k(hid_t __pyx_v_plist, unsigned int __pyx_v_ik, unsigned int __pyx_v_lk) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Pset_sym_k", 0);
+
+  /* "h5py/defs.pyx":1049
+ * cdef herr_t H5Pset_sym_k(hid_t plist, unsigned int ik, unsigned int lk) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_sym_k(plist, ik, lk)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1049; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1049; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1049; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1049; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1050
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Pset_sym_k(plist, ik, lk)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Pset_sym_k(__pyx_v_plist, __pyx_v_ik, __pyx_v_lk); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1050; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1051
+ *     with rlock:
+ *         r = _hdf5.H5Pset_sym_k(plist, ik, lk)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1052
+ *         r = _hdf5.H5Pset_sym_k(plist, ik, lk)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1052; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1053
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1054
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Pget_sym_k(hid_t plist, unsigned int *ik, unsigned int *lk) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1049
+ * cdef herr_t H5Pset_sym_k(hid_t plist, unsigned int ik, unsigned int lk) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_sym_k(plist, ik, lk)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Pset_sym_k", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1049; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1049; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1049; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1049; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1049; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_119, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1049; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1049; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Pset_sym_k", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1056
+ *         return r
+ * 
+ * cdef herr_t H5Pget_sym_k(hid_t plist, unsigned int *ik, unsigned int *lk) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Pget_sym_k(hid_t __pyx_v_plist, unsigned int *__pyx_v_ik, unsigned int *__pyx_v_lk) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Pget_sym_k", 0);
+
+  /* "h5py/defs.pyx":1058
+ * cdef herr_t H5Pget_sym_k(hid_t plist, unsigned int *ik, unsigned int *lk) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_sym_k(plist, ik, lk)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1058; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1058; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1058; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1058; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1059
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Pget_sym_k(plist, ik, lk)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Pget_sym_k(__pyx_v_plist, __pyx_v_ik, __pyx_v_lk); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1059; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1060
+ *     with rlock:
+ *         r = _hdf5.H5Pget_sym_k(plist, ik, lk)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1061
+ *         r = _hdf5.H5Pget_sym_k(plist, ik, lk)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1061; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1062
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1063
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Pset_istore_k(hid_t plist, unsigned int ik) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1058
+ * cdef herr_t H5Pget_sym_k(hid_t plist, unsigned int *ik, unsigned int *lk) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_sym_k(plist, ik, lk)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Pget_sym_k", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1058; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1058; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1058; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1058; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1058; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_120, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1058; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1058; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Pget_sym_k", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1065
+ *         return r
+ * 
+ * cdef herr_t H5Pset_istore_k(hid_t plist, unsigned int ik) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Pset_istore_k(hid_t __pyx_v_plist, unsigned int __pyx_v_ik) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Pset_istore_k", 0);
+
+  /* "h5py/defs.pyx":1067
+ * cdef herr_t H5Pset_istore_k(hid_t plist, unsigned int ik) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_istore_k(plist, ik)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1067; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1067; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1067; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1067; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1068
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Pset_istore_k(plist, ik)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Pset_istore_k(__pyx_v_plist, __pyx_v_ik); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1068; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1069
+ *     with rlock:
+ *         r = _hdf5.H5Pset_istore_k(plist, ik)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1070
+ *         r = _hdf5.H5Pset_istore_k(plist, ik)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1070; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1071
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1072
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Pget_istore_k(hid_t plist, unsigned int *ik) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1067
+ * cdef herr_t H5Pset_istore_k(hid_t plist, unsigned int ik) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_istore_k(plist, ik)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Pset_istore_k", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1067; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1067; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1067; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1067; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1067; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_121, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1067; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1067; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Pset_istore_k", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1074
+ *         return r
+ * 
+ * cdef herr_t H5Pget_istore_k(hid_t plist, unsigned int *ik) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Pget_istore_k(hid_t __pyx_v_plist, unsigned int *__pyx_v_ik) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Pget_istore_k", 0);
+
+  /* "h5py/defs.pyx":1076
+ * cdef herr_t H5Pget_istore_k(hid_t plist, unsigned int *ik) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_istore_k(plist, ik)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1076; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1076; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1076; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1076; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1077
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Pget_istore_k(plist, ik)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Pget_istore_k(__pyx_v_plist, __pyx_v_ik); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1077; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1078
+ *     with rlock:
+ *         r = _hdf5.H5Pget_istore_k(plist, ik)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1079
+ *         r = _hdf5.H5Pget_istore_k(plist, ik)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1079; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1080
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1081
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Pset_fclose_degree(hid_t fapl_id, H5F_close_degree_t fc_degree) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1076
+ * cdef herr_t H5Pget_istore_k(hid_t plist, unsigned int *ik) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_istore_k(plist, ik)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Pget_istore_k", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1076; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1076; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1076; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1076; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1076; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_122, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1076; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1076; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Pget_istore_k", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1083
+ *         return r
+ * 
+ * cdef herr_t H5Pset_fclose_degree(hid_t fapl_id, H5F_close_degree_t fc_degree) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Pset_fclose_degree(hid_t __pyx_v_fapl_id, enum H5F_close_degree_t __pyx_v_fc_degree) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Pset_fclose_degree", 0);
+
+  /* "h5py/defs.pyx":1085
+ * cdef herr_t H5Pset_fclose_degree(hid_t fapl_id, H5F_close_degree_t fc_degree) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_fclose_degree(fapl_id, fc_degree)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1085; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1085; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1085; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1085; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1086
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Pset_fclose_degree(fapl_id, fc_degree)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Pset_fclose_degree(__pyx_v_fapl_id, __pyx_v_fc_degree); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1086; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1087
+ *     with rlock:
+ *         r = _hdf5.H5Pset_fclose_degree(fapl_id, fc_degree)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1088
+ *         r = _hdf5.H5Pset_fclose_degree(fapl_id, fc_degree)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1088; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1089
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1090
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Pget_fclose_degree(hid_t fapl_id, H5F_close_degree_t *fc_degree) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1085
+ * cdef herr_t H5Pset_fclose_degree(hid_t fapl_id, H5F_close_degree_t fc_degree) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_fclose_degree(fapl_id, fc_degree)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Pset_fclose_degree", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1085; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1085; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1085; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1085; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1085; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_123, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1085; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1085; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Pset_fclose_degree", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1092
+ *         return r
+ * 
+ * cdef herr_t H5Pget_fclose_degree(hid_t fapl_id, H5F_close_degree_t *fc_degree) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Pget_fclose_degree(hid_t __pyx_v_fapl_id, enum H5F_close_degree_t *__pyx_v_fc_degree) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Pget_fclose_degree", 0);
+
+  /* "h5py/defs.pyx":1094
+ * cdef herr_t H5Pget_fclose_degree(hid_t fapl_id, H5F_close_degree_t *fc_degree) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_fclose_degree(fapl_id, fc_degree)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1094; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1094; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1094; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1094; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1095
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Pget_fclose_degree(fapl_id, fc_degree)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Pget_fclose_degree(__pyx_v_fapl_id, __pyx_v_fc_degree); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1095; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1096
+ *     with rlock:
+ *         r = _hdf5.H5Pget_fclose_degree(fapl_id, fc_degree)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1097
+ *         r = _hdf5.H5Pget_fclose_degree(fapl_id, fc_degree)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1097; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1098
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1099
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Pset_fapl_core( hid_t fapl_id, size_t increment, hbool_t backing_store) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1094
+ * cdef herr_t H5Pget_fclose_degree(hid_t fapl_id, H5F_close_degree_t *fc_degree) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_fclose_degree(fapl_id, fc_degree)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Pget_fclose_degree", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1094; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1094; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1094; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1094; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1094; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_124, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1094; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1094; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Pget_fclose_degree", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1101
+ *         return r
+ * 
+ * cdef herr_t H5Pset_fapl_core( hid_t fapl_id, size_t increment, hbool_t backing_store) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Pset_fapl_core(hid_t __pyx_v_fapl_id, size_t __pyx_v_increment, hbool_t __pyx_v_backing_store) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Pset_fapl_core", 0);
+
+  /* "h5py/defs.pyx":1103
+ * cdef herr_t H5Pset_fapl_core( hid_t fapl_id, size_t increment, hbool_t backing_store) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_fapl_core(fapl_id, increment, backing_store)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1103; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1103; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1104
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Pset_fapl_core(fapl_id, increment, backing_store)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Pset_fapl_core(__pyx_v_fapl_id, __pyx_v_increment, __pyx_v_backing_store); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1104; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1105
+ *     with rlock:
+ *         r = _hdf5.H5Pset_fapl_core(fapl_id, increment, backing_store)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1106
+ *         r = _hdf5.H5Pset_fapl_core(fapl_id, increment, backing_store)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1106; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1107
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1108
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Pget_fapl_core( hid_t fapl_id, size_t *increment, hbool_t *backing_store) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1103
+ * cdef herr_t H5Pset_fapl_core( hid_t fapl_id, size_t increment, hbool_t backing_store) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_fapl_core(fapl_id, increment, backing_store)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Pset_fapl_core", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1103; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1103; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1103; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1103; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1103; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_125, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Pset_fapl_core", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1110
+ *         return r
+ * 
+ * cdef herr_t H5Pget_fapl_core( hid_t fapl_id, size_t *increment, hbool_t *backing_store) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Pget_fapl_core(hid_t __pyx_v_fapl_id, size_t *__pyx_v_increment, hbool_t *__pyx_v_backing_store) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Pget_fapl_core", 0);
+
+  /* "h5py/defs.pyx":1112
+ * cdef herr_t H5Pget_fapl_core( hid_t fapl_id, size_t *increment, hbool_t *backing_store) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_fapl_core(fapl_id, increment, backing_store)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1112; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1112; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1113
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Pget_fapl_core(fapl_id, increment, backing_store)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Pget_fapl_core(__pyx_v_fapl_id, __pyx_v_increment, __pyx_v_backing_store); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1113; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1114
+ *     with rlock:
+ *         r = _hdf5.H5Pget_fapl_core(fapl_id, increment, backing_store)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1115
+ *         r = _hdf5.H5Pget_fapl_core(fapl_id, increment, backing_store)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1115; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1116
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1117
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Pset_fapl_family( hid_t fapl_id,  hsize_t memb_size, hid_t memb_fapl_id ) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1112
+ * cdef herr_t H5Pget_fapl_core( hid_t fapl_id, size_t *increment, hbool_t *backing_store) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_fapl_core(fapl_id, increment, backing_store)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Pget_fapl_core", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1112; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1112; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1112; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1112; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1112; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_126, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Pget_fapl_core", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1119
+ *         return r
+ * 
+ * cdef herr_t H5Pset_fapl_family( hid_t fapl_id,  hsize_t memb_size, hid_t memb_fapl_id ) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Pset_fapl_family(hid_t __pyx_v_fapl_id, hsize_t __pyx_v_memb_size, hid_t __pyx_v_memb_fapl_id) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Pset_fapl_family", 0);
+
+  /* "h5py/defs.pyx":1121
+ * cdef herr_t H5Pset_fapl_family( hid_t fapl_id,  hsize_t memb_size, hid_t memb_fapl_id ) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_fapl_family(fapl_id, memb_size, memb_fapl_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1121; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1121; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1122
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Pset_fapl_family(fapl_id, memb_size, memb_fapl_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Pset_fapl_family(__pyx_v_fapl_id, __pyx_v_memb_size, __pyx_v_memb_fapl_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1122; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1123
+ *     with rlock:
+ *         r = _hdf5.H5Pset_fapl_family(fapl_id, memb_size, memb_fapl_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1124
+ *         r = _hdf5.H5Pset_fapl_family(fapl_id, memb_size, memb_fapl_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1124; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1125
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1126
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Pget_fapl_family( hid_t fapl_id, hsize_t *memb_size, hid_t *memb_fapl_id ) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1121
+ * cdef herr_t H5Pset_fapl_family( hid_t fapl_id,  hsize_t memb_size, hid_t memb_fapl_id ) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_fapl_family(fapl_id, memb_size, memb_fapl_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Pset_fapl_family", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1121; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1121; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1121; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1121; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1121; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_127, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Pset_fapl_family", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1128
+ *         return r
+ * 
+ * cdef herr_t H5Pget_fapl_family( hid_t fapl_id, hsize_t *memb_size, hid_t *memb_fapl_id ) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Pget_fapl_family(hid_t __pyx_v_fapl_id, hsize_t *__pyx_v_memb_size, hid_t *__pyx_v_memb_fapl_id) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Pget_fapl_family", 0);
+
+  /* "h5py/defs.pyx":1130
+ * cdef herr_t H5Pget_fapl_family( hid_t fapl_id, hsize_t *memb_size, hid_t *memb_fapl_id ) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_fapl_family(fapl_id, memb_size, memb_fapl_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1130; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1130; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1131
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Pget_fapl_family(fapl_id, memb_size, memb_fapl_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Pget_fapl_family(__pyx_v_fapl_id, __pyx_v_memb_size, __pyx_v_memb_fapl_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1131; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1132
+ *     with rlock:
+ *         r = _hdf5.H5Pget_fapl_family(fapl_id, memb_size, memb_fapl_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1133
+ *         r = _hdf5.H5Pget_fapl_family(fapl_id, memb_size, memb_fapl_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1133; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1134
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1135
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Pset_family_offset( hid_t fapl_id, hsize_t offset) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1130
+ * cdef herr_t H5Pget_fapl_family( hid_t fapl_id, hsize_t *memb_size, hid_t *memb_fapl_id ) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_fapl_family(fapl_id, memb_size, memb_fapl_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Pget_fapl_family", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1130; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1130; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1130; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1130; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1130; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_128, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Pget_fapl_family", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1137
+ *         return r
+ * 
+ * cdef herr_t H5Pset_family_offset( hid_t fapl_id, hsize_t offset) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Pset_family_offset(hid_t __pyx_v_fapl_id, hsize_t __pyx_v_offset) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Pset_family_offset", 0);
+
+  /* "h5py/defs.pyx":1139
+ * cdef herr_t H5Pset_family_offset( hid_t fapl_id, hsize_t offset) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_family_offset(fapl_id, offset)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1139; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1139; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1139; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1139; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1140
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Pset_family_offset(fapl_id, offset)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Pset_family_offset(__pyx_v_fapl_id, __pyx_v_offset); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1140; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1141
+ *     with rlock:
+ *         r = _hdf5.H5Pset_family_offset(fapl_id, offset)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1142
+ *         r = _hdf5.H5Pset_family_offset(fapl_id, offset)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1142; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1143
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1144
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Pget_family_offset( hid_t fapl_id, hsize_t *offset) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1139
+ * cdef herr_t H5Pset_family_offset( hid_t fapl_id, hsize_t offset) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_family_offset(fapl_id, offset)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Pset_family_offset", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1139; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1139; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1139; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1139; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1139; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_129, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1139; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1139; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Pset_family_offset", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1146
+ *         return r
+ * 
+ * cdef herr_t H5Pget_family_offset( hid_t fapl_id, hsize_t *offset) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Pget_family_offset(hid_t __pyx_v_fapl_id, hsize_t *__pyx_v_offset) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Pget_family_offset", 0);
+
+  /* "h5py/defs.pyx":1148
+ * cdef herr_t H5Pget_family_offset( hid_t fapl_id, hsize_t *offset) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_family_offset(fapl_id, offset)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1148; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1148; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1149
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Pget_family_offset(fapl_id, offset)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Pget_family_offset(__pyx_v_fapl_id, __pyx_v_offset); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1149; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1150
+ *     with rlock:
+ *         r = _hdf5.H5Pget_family_offset(fapl_id, offset)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1151
+ *         r = _hdf5.H5Pget_family_offset(fapl_id, offset)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1151; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1152
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1153
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Pset_fapl_log(hid_t fapl_id, char *logfile, unsigned int flags, size_t buf_size) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1148
+ * cdef herr_t H5Pget_family_offset( hid_t fapl_id, hsize_t *offset) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_family_offset(fapl_id, offset)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Pget_family_offset", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1148; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1148; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1148; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1148; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1148; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_130, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Pget_family_offset", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1155
+ *         return r
+ * 
+ * cdef herr_t H5Pset_fapl_log(hid_t fapl_id, char *logfile, unsigned int flags, size_t buf_size) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Pset_fapl_log(hid_t __pyx_v_fapl_id, char *__pyx_v_logfile, unsigned int __pyx_v_flags, size_t __pyx_v_buf_size) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Pset_fapl_log", 0);
+
+  /* "h5py/defs.pyx":1157
+ * cdef herr_t H5Pset_fapl_log(hid_t fapl_id, char *logfile, unsigned int flags, size_t buf_size) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_fapl_log(fapl_id, logfile, flags, buf_size)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1157; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1157; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1158
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Pset_fapl_log(fapl_id, logfile, flags, buf_size)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Pset_fapl_log(__pyx_v_fapl_id, __pyx_v_logfile, __pyx_v_flags, __pyx_v_buf_size); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1158; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1159
+ *     with rlock:
+ *         r = _hdf5.H5Pset_fapl_log(fapl_id, logfile, flags, buf_size)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1160
+ *         r = _hdf5.H5Pset_fapl_log(fapl_id, logfile, flags, buf_size)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1160; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1161
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1162
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Pset_fapl_multi(hid_t fapl_id, H5FD_mem_t *memb_map, hid_t *memb_fapl, char **memb_name, haddr_t *memb_addr, hbool_t relax) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1157
+ * cdef herr_t H5Pset_fapl_log(hid_t fapl_id, char *logfile, unsigned int flags, size_t buf_size) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_fapl_log(fapl_id, logfile, flags, buf_size)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Pset_fapl_log", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1157; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1157; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1157; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1157; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1157; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_131, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Pset_fapl_log", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1164
+ *         return r
+ * 
+ * cdef herr_t H5Pset_fapl_multi(hid_t fapl_id, H5FD_mem_t *memb_map, hid_t *memb_fapl, char **memb_name, haddr_t *memb_addr, hbool_t relax) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Pset_fapl_multi(hid_t __pyx_v_fapl_id, H5FD_mem_t *__pyx_v_memb_map, hid_t *__pyx_v_memb_fapl, char **__pyx_v_memb_name, haddr_t *__pyx_v_memb_addr, hbool_t __pyx_v_relax) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Pset_fapl_multi", 0);
+
+  /* "h5py/defs.pyx":1166
+ * cdef herr_t H5Pset_fapl_multi(hid_t fapl_id, H5FD_mem_t *memb_map, hid_t *memb_fapl, char **memb_name, haddr_t *memb_addr, hbool_t relax) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_fapl_multi(fapl_id, memb_map, memb_fapl, memb_name, memb_addr, relax)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1166; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1166; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1167
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Pset_fapl_multi(fapl_id, memb_map, memb_fapl, memb_name, memb_addr, relax)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Pset_fapl_multi(__pyx_v_fapl_id, __pyx_v_memb_map, __pyx_v_memb_fapl, __pyx_v_memb_name, __pyx_v_memb_addr, __pyx_v_relax); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1167; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1168
+ *     with rlock:
+ *         r = _hdf5.H5Pset_fapl_multi(fapl_id, memb_map, memb_fapl, memb_name, memb_addr, relax)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1169
+ *         r = _hdf5.H5Pset_fapl_multi(fapl_id, memb_map, memb_fapl, memb_name, memb_addr, relax)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1169; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1170
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1171
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Pset_cache(hid_t plist_id, int mdc_nelmts, int rdcc_nelmts,  size_t rdcc_nbytes, double rdcc_w0) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1166
+ * cdef herr_t H5Pset_fapl_multi(hid_t fapl_id, H5FD_mem_t *memb_map, hid_t *memb_fapl, char **memb_name, haddr_t *memb_addr, hbool_t relax) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_fapl_multi(fapl_id, memb_map, memb_fapl, memb_name, memb_addr, relax)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Pset_fapl_multi", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1166; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1166; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1166; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1166; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1166; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_132, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Pset_fapl_multi", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1173
+ *         return r
+ * 
+ * cdef herr_t H5Pset_cache(hid_t plist_id, int mdc_nelmts, int rdcc_nelmts,  size_t rdcc_nbytes, double rdcc_w0) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Pset_cache(hid_t __pyx_v_plist_id, int __pyx_v_mdc_nelmts, int __pyx_v_rdcc_nelmts, size_t __pyx_v_rdcc_nbytes, double __pyx_v_rdcc_w0) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Pset_cache", 0);
+
+  /* "h5py/defs.pyx":1175
+ * cdef herr_t H5Pset_cache(hid_t plist_id, int mdc_nelmts, int rdcc_nelmts,  size_t rdcc_nbytes, double rdcc_w0) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_cache(plist_id, mdc_nelmts, rdcc_nelmts, rdcc_nbytes, rdcc_w0)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1175; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1175; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1175; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1175; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1176
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Pset_cache(plist_id, mdc_nelmts, rdcc_nelmts, rdcc_nbytes, rdcc_w0)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Pset_cache(__pyx_v_plist_id, __pyx_v_mdc_nelmts, __pyx_v_rdcc_nelmts, __pyx_v_rdcc_nbytes, __pyx_v_rdcc_w0); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1176; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1177
+ *     with rlock:
+ *         r = _hdf5.H5Pset_cache(plist_id, mdc_nelmts, rdcc_nelmts, rdcc_nbytes, rdcc_w0)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1178
+ *         r = _hdf5.H5Pset_cache(plist_id, mdc_nelmts, rdcc_nelmts, rdcc_nbytes, rdcc_w0)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1178; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1179
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1180
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Pget_cache(hid_t plist_id, int *mdc_nelmts, int *rdcc_nelmts, size_t *rdcc_nbytes, double *rdcc_w0) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1175
+ * cdef herr_t H5Pset_cache(hid_t plist_id, int mdc_nelmts, int rdcc_nelmts,  size_t rdcc_nbytes, double rdcc_w0) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_cache(plist_id, mdc_nelmts, rdcc_nelmts, rdcc_nbytes, rdcc_w0)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Pset_cache", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1175; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1175; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1175; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1175; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1175; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_133, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1175; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1175; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Pset_cache", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1182
+ *         return r
+ * 
+ * cdef herr_t H5Pget_cache(hid_t plist_id, int *mdc_nelmts, int *rdcc_nelmts, size_t *rdcc_nbytes, double *rdcc_w0) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Pget_cache(hid_t __pyx_v_plist_id, int *__pyx_v_mdc_nelmts, int *__pyx_v_rdcc_nelmts, size_t *__pyx_v_rdcc_nbytes, double *__pyx_v_rdcc_w0) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Pget_cache", 0);
+
+  /* "h5py/defs.pyx":1184
+ * cdef herr_t H5Pget_cache(hid_t plist_id, int *mdc_nelmts, int *rdcc_nelmts, size_t *rdcc_nbytes, double *rdcc_w0) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_cache(plist_id, mdc_nelmts, rdcc_nelmts, rdcc_nbytes, rdcc_w0)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1184; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1184; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1185
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Pget_cache(plist_id, mdc_nelmts, rdcc_nelmts, rdcc_nbytes, rdcc_w0)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Pget_cache(__pyx_v_plist_id, __pyx_v_mdc_nelmts, __pyx_v_rdcc_nelmts, __pyx_v_rdcc_nbytes, __pyx_v_rdcc_w0); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1185; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1186
+ *     with rlock:
+ *         r = _hdf5.H5Pget_cache(plist_id, mdc_nelmts, rdcc_nelmts, rdcc_nbytes, rdcc_w0)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1187
+ *         r = _hdf5.H5Pget_cache(plist_id, mdc_nelmts, rdcc_nelmts, rdcc_nbytes, rdcc_w0)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1187; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1188
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1189
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Pset_fapl_sec2(hid_t fapl_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1184
+ * cdef herr_t H5Pget_cache(hid_t plist_id, int *mdc_nelmts, int *rdcc_nelmts, size_t *rdcc_nbytes, double *rdcc_w0) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_cache(plist_id, mdc_nelmts, rdcc_nelmts, rdcc_nbytes, rdcc_w0)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Pget_cache", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1184; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1184; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1184; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1184; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1184; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_134, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Pget_cache", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1191
+ *         return r
+ * 
+ * cdef herr_t H5Pset_fapl_sec2(hid_t fapl_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Pset_fapl_sec2(hid_t __pyx_v_fapl_id) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Pset_fapl_sec2", 0);
+
+  /* "h5py/defs.pyx":1193
+ * cdef herr_t H5Pset_fapl_sec2(hid_t fapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_fapl_sec2(fapl_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1193; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1193; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1194
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Pset_fapl_sec2(fapl_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Pset_fapl_sec2(__pyx_v_fapl_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1194; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1195
+ *     with rlock:
+ *         r = _hdf5.H5Pset_fapl_sec2(fapl_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1196
+ *         r = _hdf5.H5Pset_fapl_sec2(fapl_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1196; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1197
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1198
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Pset_fapl_stdio(hid_t fapl_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1193
+ * cdef herr_t H5Pset_fapl_sec2(hid_t fapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_fapl_sec2(fapl_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Pset_fapl_sec2", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1193; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1193; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1193; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1193; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1193; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_135, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Pset_fapl_sec2", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1200
+ *         return r
+ * 
+ * cdef herr_t H5Pset_fapl_stdio(hid_t fapl_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Pset_fapl_stdio(hid_t __pyx_v_fapl_id) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Pset_fapl_stdio", 0);
+
+  /* "h5py/defs.pyx":1202
+ * cdef herr_t H5Pset_fapl_stdio(hid_t fapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_fapl_stdio(fapl_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1202; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1202; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1202; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1202; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1203
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Pset_fapl_stdio(fapl_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Pset_fapl_stdio(__pyx_v_fapl_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1203; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1204
+ *     with rlock:
+ *         r = _hdf5.H5Pset_fapl_stdio(fapl_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1205
+ *         r = _hdf5.H5Pset_fapl_stdio(fapl_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1205; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1206
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1207
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef hid_t H5Pget_driver(hid_t fapl_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1202
+ * cdef herr_t H5Pset_fapl_stdio(hid_t fapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_fapl_stdio(fapl_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Pset_fapl_stdio", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1202; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1202; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1202; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1202; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1202; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_136, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1202; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1202; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Pset_fapl_stdio", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1209
+ *         return r
+ * 
+ * cdef hid_t H5Pget_driver(hid_t fapl_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef hid_t r
+ *     with rlock:
+ */
+
+static hid_t __pyx_f_4h5py_4defs_H5Pget_driver(hid_t __pyx_v_fapl_id) {
+  hid_t __pyx_v_r;
+  hid_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  hid_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Pget_driver", 0);
+
+  /* "h5py/defs.pyx":1211
+ * cdef hid_t H5Pget_driver(hid_t fapl_id) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_driver(fapl_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1211; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1211; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1211; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1211; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1212
+ *     cdef hid_t r
+ *     with rlock:
+ *         r = _hdf5.H5Pget_driver(fapl_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Pget_driver(__pyx_v_fapl_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1212; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1213
+ *     with rlock:
+ *         r = _hdf5.H5Pget_driver(fapl_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1214
+ *         r = _hdf5.H5Pget_driver(fapl_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <hid_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1214; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1215
+ *         if r<0:
+ *             if set_exception():
+ *                 return <hid_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((hid_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1216
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Pget_mdc_config(hid_t plist_id, H5AC_cache_config_t *config_ptr) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1211
+ * cdef hid_t H5Pget_driver(hid_t fapl_id) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_driver(fapl_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Pget_driver", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1211; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1211; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1211; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1211; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1211; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_137, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1211; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1211; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Pget_driver", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1218
+ *         return r
+ * 
+ * cdef herr_t H5Pget_mdc_config(hid_t plist_id, H5AC_cache_config_t *config_ptr) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Pget_mdc_config(hid_t __pyx_v_plist_id, H5AC_cache_config_t *__pyx_v_config_ptr) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Pget_mdc_config", 0);
+
+  /* "h5py/defs.pyx":1220
+ * cdef herr_t H5Pget_mdc_config(hid_t plist_id, H5AC_cache_config_t *config_ptr) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_mdc_config(plist_id, config_ptr)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1220; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1220; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1220; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1220; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1221
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Pget_mdc_config(plist_id, config_ptr)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Pget_mdc_config(__pyx_v_plist_id, __pyx_v_config_ptr); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1221; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1222
+ *     with rlock:
+ *         r = _hdf5.H5Pget_mdc_config(plist_id, config_ptr)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1223
+ *         r = _hdf5.H5Pget_mdc_config(plist_id, config_ptr)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1223; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1224
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1225
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Pset_mdc_config(hid_t plist_id, H5AC_cache_config_t *config_ptr) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1220
+ * cdef herr_t H5Pget_mdc_config(hid_t plist_id, H5AC_cache_config_t *config_ptr) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_mdc_config(plist_id, config_ptr)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Pget_mdc_config", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1220; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1220; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1220; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1220; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1220; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_138, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1220; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1220; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Pget_mdc_config", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1227
+ *         return r
+ * 
+ * cdef herr_t H5Pset_mdc_config(hid_t plist_id, H5AC_cache_config_t *config_ptr) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Pset_mdc_config(hid_t __pyx_v_plist_id, H5AC_cache_config_t *__pyx_v_config_ptr) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Pset_mdc_config", 0);
+
+  /* "h5py/defs.pyx":1229
+ * cdef herr_t H5Pset_mdc_config(hid_t plist_id, H5AC_cache_config_t *config_ptr) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_mdc_config(plist_id, config_ptr)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1229; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1229; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1229; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1229; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1230
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Pset_mdc_config(plist_id, config_ptr)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Pset_mdc_config(__pyx_v_plist_id, __pyx_v_config_ptr); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1230; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1231
+ *     with rlock:
+ *         r = _hdf5.H5Pset_mdc_config(plist_id, config_ptr)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1232
+ *         r = _hdf5.H5Pset_mdc_config(plist_id, config_ptr)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1232; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1233
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1234
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Pset_layout(hid_t plist, int layout) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1229
+ * cdef herr_t H5Pset_mdc_config(hid_t plist_id, H5AC_cache_config_t *config_ptr) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_mdc_config(plist_id, config_ptr)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Pset_mdc_config", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1229; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1229; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1229; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1229; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1229; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_139, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1229; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1229; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Pset_mdc_config", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1236
+ *         return r
+ * 
+ * cdef herr_t H5Pset_layout(hid_t plist, int layout) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Pset_layout(hid_t __pyx_v_plist, int __pyx_v_layout) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Pset_layout", 0);
+
+  /* "h5py/defs.pyx":1238
+ * cdef herr_t H5Pset_layout(hid_t plist, int layout) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_layout(plist, layout)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1238; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1238; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1238; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1238; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1239
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Pset_layout(plist, layout)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Pset_layout(__pyx_v_plist, __pyx_v_layout); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1239; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1240
+ *     with rlock:
+ *         r = _hdf5.H5Pset_layout(plist, layout)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1241
+ *         r = _hdf5.H5Pset_layout(plist, layout)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1241; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1242
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1243
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef H5D_layout_t H5Pget_layout(hid_t plist) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1238
+ * cdef herr_t H5Pset_layout(hid_t plist, int layout) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_layout(plist, layout)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Pset_layout", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1238; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1238; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1238; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1238; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1238; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_140, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1238; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1238; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Pset_layout", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1245
+ *         return r
+ * 
+ * cdef H5D_layout_t H5Pget_layout(hid_t plist) except *:             # <<<<<<<<<<<<<<
+ *     cdef H5D_layout_t r
+ *     with rlock:
+ */
+
+static H5D_layout_t __pyx_f_4h5py_4defs_H5Pget_layout(hid_t __pyx_v_plist) {
+  H5D_layout_t __pyx_v_r;
+  H5D_layout_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  H5D_layout_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Pget_layout", 0);
+
+  /* "h5py/defs.pyx":1247
+ * cdef H5D_layout_t H5Pget_layout(hid_t plist) except *:
+ *     cdef H5D_layout_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_layout(plist)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1247; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1247; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1247; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1247; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1248
+ *     cdef H5D_layout_t r
+ *     with rlock:
+ *         r = _hdf5.H5Pget_layout(plist)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Pget_layout(__pyx_v_plist); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1248; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1249
+ *     with rlock:
+ *         r = _hdf5.H5Pget_layout(plist)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <H5D_layout_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1250
+ *         r = _hdf5.H5Pget_layout(plist)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <H5D_layout_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1250; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1251
+ *         if r<0:
+ *             if set_exception():
+ *                 return <H5D_layout_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((H5D_layout_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1252
+ *             if set_exception():
+ *                 return <H5D_layout_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Pset_chunk(hid_t plist, int ndims, hsize_t * dim) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1247
+ * cdef H5D_layout_t H5Pget_layout(hid_t plist) except *:
+ *     cdef H5D_layout_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_layout(plist)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Pget_layout", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1247; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1247; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1247; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1247; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1247; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_141, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1247; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1247; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Pget_layout", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1254
+ *         return r
+ * 
+ * cdef herr_t H5Pset_chunk(hid_t plist, int ndims, hsize_t * dim) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Pset_chunk(hid_t __pyx_v_plist, int __pyx_v_ndims, hsize_t *__pyx_v_dim) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Pset_chunk", 0);
+
+  /* "h5py/defs.pyx":1256
+ * cdef herr_t H5Pset_chunk(hid_t plist, int ndims, hsize_t * dim) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_chunk(plist, ndims, dim)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1256; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1256; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1256; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1256; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1257
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Pset_chunk(plist, ndims, dim)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Pset_chunk(__pyx_v_plist, __pyx_v_ndims, __pyx_v_dim); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1257; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1258
+ *     with rlock:
+ *         r = _hdf5.H5Pset_chunk(plist, ndims, dim)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1259
+ *         r = _hdf5.H5Pset_chunk(plist, ndims, dim)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1259; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1260
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1261
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef int H5Pget_chunk(hid_t plist, int max_ndims, hsize_t * dims ) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1256
+ * cdef herr_t H5Pset_chunk(hid_t plist, int ndims, hsize_t * dim) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_chunk(plist, ndims, dim)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Pset_chunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1256; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1256; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1256; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1256; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1256; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_142, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1256; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1256; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Pset_chunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1263
+ *         return r
+ * 
+ * cdef int H5Pget_chunk(hid_t plist, int max_ndims, hsize_t * dims ) except *:             # <<<<<<<<<<<<<<
+ *     cdef int r
+ *     with rlock:
+ */
+
+static int __pyx_f_4h5py_4defs_H5Pget_chunk(hid_t __pyx_v_plist, int __pyx_v_max_ndims, hsize_t *__pyx_v_dims) {
+  int __pyx_v_r;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  int __pyx_t_8;
+  int __pyx_t_9;
+  PyObject *__pyx_t_10 = NULL;
+  PyObject *__pyx_t_11 = NULL;
+  int __pyx_t_12;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Pget_chunk", 0);
+
+  /* "h5py/defs.pyx":1265
+ * cdef int H5Pget_chunk(hid_t plist, int max_ndims, hsize_t * dims ) except *:
+ *     cdef int r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_chunk(plist, max_ndims, dims)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1265; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1265; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1265; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1265; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1266
+ *     cdef int r
+ *     with rlock:
+ *         r = _hdf5.H5Pget_chunk(plist, max_ndims, dims)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Pget_chunk(__pyx_v_plist, __pyx_v_max_ndims, __pyx_v_dims); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1266; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1267
+ *     with rlock:
+ *         r = _hdf5.H5Pget_chunk(plist, max_ndims, dims)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <int>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1268
+ *         r = _hdf5.H5Pget_chunk(plist, max_ndims, dims)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <int>-1;
+ *         return r
+ */
+            __pyx_t_8 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1268; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_8) {
+
+              /* "h5py/defs.pyx":1269
+ *         if r<0:
+ *             if set_exception():
+ *                 return <int>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((int)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1270
+ *             if set_exception():
+ *                 return <int>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Pset_deflate( hid_t plist, int level) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1265
+ * cdef int H5Pget_chunk(hid_t plist, int max_ndims, hsize_t * dims ) except *:
+ *     cdef int r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_chunk(plist, max_ndims, dims)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Pget_chunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1265; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_10 = PyTuple_New(3); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1265; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_10);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_10, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_11 = PyObject_Call(__pyx_t_2, __pyx_t_10, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1265; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_11);
+          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1265; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_12 = (!__pyx_t_9);
+          if (__pyx_t_12) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1265; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_10)); __pyx_t_10 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_143, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1265; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1265; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_10);
+  __Pyx_AddTraceback("h5py.defs.H5Pget_chunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1272
+ *         return r
+ * 
+ * cdef herr_t H5Pset_deflate( hid_t plist, int level) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Pset_deflate(hid_t __pyx_v_plist, int __pyx_v_level) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Pset_deflate", 0);
+
+  /* "h5py/defs.pyx":1274
+ * cdef herr_t H5Pset_deflate( hid_t plist, int level) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_deflate(plist, level)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1274; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1274; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1274; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1274; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1275
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Pset_deflate(plist, level)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Pset_deflate(__pyx_v_plist, __pyx_v_level); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1275; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1276
+ *     with rlock:
+ *         r = _hdf5.H5Pset_deflate(plist, level)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1277
+ *         r = _hdf5.H5Pset_deflate(plist, level)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1277; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1278
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1279
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Pset_fill_value(hid_t plist_id, hid_t type_id, void *value ) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1274
+ * cdef herr_t H5Pset_deflate( hid_t plist, int level) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_deflate(plist, level)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Pset_deflate", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1274; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1274; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1274; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1274; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1274; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_144, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1274; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1274; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Pset_deflate", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1281
+ *         return r
+ * 
+ * cdef herr_t H5Pset_fill_value(hid_t plist_id, hid_t type_id, void *value ) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Pset_fill_value(hid_t __pyx_v_plist_id, hid_t __pyx_v_type_id, void *__pyx_v_value) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Pset_fill_value", 0);
+
+  /* "h5py/defs.pyx":1283
+ * cdef herr_t H5Pset_fill_value(hid_t plist_id, hid_t type_id, void *value ) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_fill_value(plist_id, type_id, value)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1283; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1283; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1283; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1283; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1284
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Pset_fill_value(plist_id, type_id, value)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Pset_fill_value(__pyx_v_plist_id, __pyx_v_type_id, __pyx_v_value); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1284; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1285
+ *     with rlock:
+ *         r = _hdf5.H5Pset_fill_value(plist_id, type_id, value)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1286
+ *         r = _hdf5.H5Pset_fill_value(plist_id, type_id, value)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1286; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1287
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1288
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Pget_fill_value(hid_t plist_id, hid_t type_id, void *value ) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1283
+ * cdef herr_t H5Pset_fill_value(hid_t plist_id, hid_t type_id, void *value ) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_fill_value(plist_id, type_id, value)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Pset_fill_value", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1283; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1283; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1283; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1283; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1283; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_145, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1283; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1283; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Pset_fill_value", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1290
+ *         return r
+ * 
+ * cdef herr_t H5Pget_fill_value(hid_t plist_id, hid_t type_id, void *value ) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Pget_fill_value(hid_t __pyx_v_plist_id, hid_t __pyx_v_type_id, void *__pyx_v_value) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Pget_fill_value", 0);
+
+  /* "h5py/defs.pyx":1292
+ * cdef herr_t H5Pget_fill_value(hid_t plist_id, hid_t type_id, void *value ) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_fill_value(plist_id, type_id, value)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1292; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1292; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1292; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1292; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1293
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Pget_fill_value(plist_id, type_id, value)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Pget_fill_value(__pyx_v_plist_id, __pyx_v_type_id, __pyx_v_value); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1293; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1294
+ *     with rlock:
+ *         r = _hdf5.H5Pget_fill_value(plist_id, type_id, value)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1295
+ *         r = _hdf5.H5Pget_fill_value(plist_id, type_id, value)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1295; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1296
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1297
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Pfill_value_defined(hid_t plist_id, H5D_fill_value_t *status ) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1292
+ * cdef herr_t H5Pget_fill_value(hid_t plist_id, hid_t type_id, void *value ) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_fill_value(plist_id, type_id, value)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Pget_fill_value", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1292; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1292; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1292; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1292; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1292; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_146, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1292; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1292; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Pget_fill_value", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1299
+ *         return r
+ * 
+ * cdef herr_t H5Pfill_value_defined(hid_t plist_id, H5D_fill_value_t *status ) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Pfill_value_defined(hid_t __pyx_v_plist_id, H5D_fill_value_t *__pyx_v_status) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Pfill_value_defined", 0);
+
+  /* "h5py/defs.pyx":1301
+ * cdef herr_t H5Pfill_value_defined(hid_t plist_id, H5D_fill_value_t *status ) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pfill_value_defined(plist_id, status)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1301; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1301; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1301; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1301; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1302
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Pfill_value_defined(plist_id, status)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Pfill_value_defined(__pyx_v_plist_id, __pyx_v_status); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1302; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1303
+ *     with rlock:
+ *         r = _hdf5.H5Pfill_value_defined(plist_id, status)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1304
+ *         r = _hdf5.H5Pfill_value_defined(plist_id, status)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1304; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1305
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1306
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Pset_fill_time(hid_t plist_id, H5D_fill_time_t fill_time ) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1301
+ * cdef herr_t H5Pfill_value_defined(hid_t plist_id, H5D_fill_value_t *status ) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pfill_value_defined(plist_id, status)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Pfill_value_defined", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1301; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1301; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1301; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1301; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1301; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_147, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1301; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1301; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Pfill_value_defined", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1308
+ *         return r
+ * 
+ * cdef herr_t H5Pset_fill_time(hid_t plist_id, H5D_fill_time_t fill_time ) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Pset_fill_time(hid_t __pyx_v_plist_id, H5D_fill_time_t __pyx_v_fill_time) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Pset_fill_time", 0);
+
+  /* "h5py/defs.pyx":1310
+ * cdef herr_t H5Pset_fill_time(hid_t plist_id, H5D_fill_time_t fill_time ) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_fill_time(plist_id, fill_time)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1310; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1310; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1310; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1310; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1311
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Pset_fill_time(plist_id, fill_time)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Pset_fill_time(__pyx_v_plist_id, __pyx_v_fill_time); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1311; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1312
+ *     with rlock:
+ *         r = _hdf5.H5Pset_fill_time(plist_id, fill_time)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1313
+ *         r = _hdf5.H5Pset_fill_time(plist_id, fill_time)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1313; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1314
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1315
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Pget_fill_time(hid_t plist_id, H5D_fill_time_t *fill_time ) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1310
+ * cdef herr_t H5Pset_fill_time(hid_t plist_id, H5D_fill_time_t fill_time ) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_fill_time(plist_id, fill_time)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Pset_fill_time", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1310; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1310; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1310; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1310; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1310; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_148, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1310; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1310; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Pset_fill_time", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1317
+ *         return r
+ * 
+ * cdef herr_t H5Pget_fill_time(hid_t plist_id, H5D_fill_time_t *fill_time ) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Pget_fill_time(hid_t __pyx_v_plist_id, H5D_fill_time_t *__pyx_v_fill_time) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Pget_fill_time", 0);
+
+  /* "h5py/defs.pyx":1319
+ * cdef herr_t H5Pget_fill_time(hid_t plist_id, H5D_fill_time_t *fill_time ) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_fill_time(plist_id, fill_time)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1319; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1319; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1319; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1319; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1320
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Pget_fill_time(plist_id, fill_time)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Pget_fill_time(__pyx_v_plist_id, __pyx_v_fill_time); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1320; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1321
+ *     with rlock:
+ *         r = _hdf5.H5Pget_fill_time(plist_id, fill_time)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1322
+ *         r = _hdf5.H5Pget_fill_time(plist_id, fill_time)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1322; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1323
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1324
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Pset_alloc_time(hid_t plist_id, H5D_alloc_time_t alloc_time ) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1319
+ * cdef herr_t H5Pget_fill_time(hid_t plist_id, H5D_fill_time_t *fill_time ) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_fill_time(plist_id, fill_time)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Pget_fill_time", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1319; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1319; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1319; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1319; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1319; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_149, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1319; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1319; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Pget_fill_time", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1326
+ *         return r
+ * 
+ * cdef herr_t H5Pset_alloc_time(hid_t plist_id, H5D_alloc_time_t alloc_time ) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Pset_alloc_time(hid_t __pyx_v_plist_id, H5D_alloc_time_t __pyx_v_alloc_time) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Pset_alloc_time", 0);
+
+  /* "h5py/defs.pyx":1328
+ * cdef herr_t H5Pset_alloc_time(hid_t plist_id, H5D_alloc_time_t alloc_time ) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_alloc_time(plist_id, alloc_time)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1328; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1328; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1328; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1328; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1329
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Pset_alloc_time(plist_id, alloc_time)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Pset_alloc_time(__pyx_v_plist_id, __pyx_v_alloc_time); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1329; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1330
+ *     with rlock:
+ *         r = _hdf5.H5Pset_alloc_time(plist_id, alloc_time)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1331
+ *         r = _hdf5.H5Pset_alloc_time(plist_id, alloc_time)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1331; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1332
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1333
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Pget_alloc_time(hid_t plist_id, H5D_alloc_time_t *alloc_time ) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1328
+ * cdef herr_t H5Pset_alloc_time(hid_t plist_id, H5D_alloc_time_t alloc_time ) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_alloc_time(plist_id, alloc_time)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Pset_alloc_time", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1328; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1328; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1328; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1328; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1328; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_150, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1328; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1328; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Pset_alloc_time", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1335
+ *         return r
+ * 
+ * cdef herr_t H5Pget_alloc_time(hid_t plist_id, H5D_alloc_time_t *alloc_time ) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Pget_alloc_time(hid_t __pyx_v_plist_id, H5D_alloc_time_t *__pyx_v_alloc_time) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Pget_alloc_time", 0);
+
+  /* "h5py/defs.pyx":1337
+ * cdef herr_t H5Pget_alloc_time(hid_t plist_id, H5D_alloc_time_t *alloc_time ) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_alloc_time(plist_id, alloc_time)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1337; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1337; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1337; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1337; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1338
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Pget_alloc_time(plist_id, alloc_time)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Pget_alloc_time(__pyx_v_plist_id, __pyx_v_alloc_time); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1338; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1339
+ *     with rlock:
+ *         r = _hdf5.H5Pget_alloc_time(plist_id, alloc_time)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1340
+ *         r = _hdf5.H5Pget_alloc_time(plist_id, alloc_time)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1340; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1341
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1342
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Pset_filter(hid_t plist, H5Z_filter_t filter, unsigned int flags, size_t cd_nelmts, unsigned int* cd_values ) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1337
+ * cdef herr_t H5Pget_alloc_time(hid_t plist_id, H5D_alloc_time_t *alloc_time ) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_alloc_time(plist_id, alloc_time)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Pget_alloc_time", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1337; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1337; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1337; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1337; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1337; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_151, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1337; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1337; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Pget_alloc_time", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1344
+ *         return r
+ * 
+ * cdef herr_t H5Pset_filter(hid_t plist, H5Z_filter_t filter, unsigned int flags, size_t cd_nelmts, unsigned int* cd_values ) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Pset_filter(hid_t __pyx_v_plist, H5Z_filter_t __pyx_v_filter, unsigned int __pyx_v_flags, size_t __pyx_v_cd_nelmts, unsigned int *__pyx_v_cd_values) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Pset_filter", 0);
+
+  /* "h5py/defs.pyx":1346
+ * cdef herr_t H5Pset_filter(hid_t plist, H5Z_filter_t filter, unsigned int flags, size_t cd_nelmts, unsigned int* cd_values ) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_filter(plist, filter, flags, cd_nelmts, cd_values)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1346; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1346; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1346; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1346; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1347
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Pset_filter(plist, filter, flags, cd_nelmts, cd_values)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Pset_filter(__pyx_v_plist, __pyx_v_filter, __pyx_v_flags, __pyx_v_cd_nelmts, __pyx_v_cd_values); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1347; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1348
+ *     with rlock:
+ *         r = _hdf5.H5Pset_filter(plist, filter, flags, cd_nelmts, cd_values)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1349
+ *         r = _hdf5.H5Pset_filter(plist, filter, flags, cd_nelmts, cd_values)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1349; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1350
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1351
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef htri_t H5Pall_filters_avail(hid_t dcpl_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1346
+ * cdef herr_t H5Pset_filter(hid_t plist, H5Z_filter_t filter, unsigned int flags, size_t cd_nelmts, unsigned int* cd_values ) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_filter(plist, filter, flags, cd_nelmts, cd_values)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Pset_filter", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1346; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1346; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1346; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1346; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1346; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_152, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1346; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1346; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Pset_filter", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1353
+ *         return r
+ * 
+ * cdef htri_t H5Pall_filters_avail(hid_t dcpl_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef htri_t r
+ *     with rlock:
+ */
+
+static htri_t __pyx_f_4h5py_4defs_H5Pall_filters_avail(hid_t __pyx_v_dcpl_id) {
+  htri_t __pyx_v_r;
+  htri_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  htri_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Pall_filters_avail", 0);
+
+  /* "h5py/defs.pyx":1355
+ * cdef htri_t H5Pall_filters_avail(hid_t dcpl_id) except *:
+ *     cdef htri_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pall_filters_avail(dcpl_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1355; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1355; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1355; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1355; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1356
+ *     cdef htri_t r
+ *     with rlock:
+ *         r = _hdf5.H5Pall_filters_avail(dcpl_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Pall_filters_avail(__pyx_v_dcpl_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1356; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1357
+ *     with rlock:
+ *         r = _hdf5.H5Pall_filters_avail(dcpl_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <htri_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1358
+ *         r = _hdf5.H5Pall_filters_avail(dcpl_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <htri_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1358; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1359
+ *         if r<0:
+ *             if set_exception():
+ *                 return <htri_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((htri_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1360
+ *             if set_exception():
+ *                 return <htri_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef int H5Pget_nfilters(hid_t plist) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1355
+ * cdef htri_t H5Pall_filters_avail(hid_t dcpl_id) except *:
+ *     cdef htri_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pall_filters_avail(dcpl_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Pall_filters_avail", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1355; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1355; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1355; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1355; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1355; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_153, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1355; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1355; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Pall_filters_avail", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1362
+ *         return r
+ * 
+ * cdef int H5Pget_nfilters(hid_t plist) except *:             # <<<<<<<<<<<<<<
+ *     cdef int r
+ *     with rlock:
+ */
+
+static int __pyx_f_4h5py_4defs_H5Pget_nfilters(hid_t __pyx_v_plist) {
+  int __pyx_v_r;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  int __pyx_t_8;
+  int __pyx_t_9;
+  PyObject *__pyx_t_10 = NULL;
+  PyObject *__pyx_t_11 = NULL;
+  int __pyx_t_12;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Pget_nfilters", 0);
+
+  /* "h5py/defs.pyx":1364
+ * cdef int H5Pget_nfilters(hid_t plist) except *:
+ *     cdef int r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_nfilters(plist)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1364; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1364; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1364; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1364; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1365
+ *     cdef int r
+ *     with rlock:
+ *         r = _hdf5.H5Pget_nfilters(plist)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Pget_nfilters(__pyx_v_plist); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1365; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1366
+ *     with rlock:
+ *         r = _hdf5.H5Pget_nfilters(plist)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <int>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1367
+ *         r = _hdf5.H5Pget_nfilters(plist)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <int>-1;
+ *         return r
+ */
+            __pyx_t_8 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1367; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_8) {
+
+              /* "h5py/defs.pyx":1368
+ *         if r<0:
+ *             if set_exception():
+ *                 return <int>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((int)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1369
+ *             if set_exception():
+ *                 return <int>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef H5Z_filter_t H5Pget_filter(hid_t plist, unsigned int filter_number,   unsigned int *flags, size_t *cd_nelmts,  unsigned int* cd_values, size_t namelen, char* name ) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1364
+ * cdef int H5Pget_nfilters(hid_t plist) except *:
+ *     cdef int r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_nfilters(plist)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Pget_nfilters", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1364; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_10 = PyTuple_New(3); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1364; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_10);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_10, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_11 = PyObject_Call(__pyx_t_2, __pyx_t_10, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1364; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_11);
+          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1364; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_12 = (!__pyx_t_9);
+          if (__pyx_t_12) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1364; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_10)); __pyx_t_10 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_154, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1364; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1364; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_10);
+  __Pyx_AddTraceback("h5py.defs.H5Pget_nfilters", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1371
+ *         return r
+ * 
+ * cdef H5Z_filter_t H5Pget_filter(hid_t plist, unsigned int filter_number,   unsigned int *flags, size_t *cd_nelmts,  unsigned int* cd_values, size_t namelen, char* name ) except *:             # <<<<<<<<<<<<<<
+ *     cdef H5Z_filter_t r
+ *     with rlock:
+ */
+
+static H5Z_filter_t __pyx_f_4h5py_4defs_H5Pget_filter(hid_t __pyx_v_plist, unsigned int __pyx_v_filter_number, unsigned int *__pyx_v_flags, size_t *__pyx_v_cd_nelmts, unsigned int *__pyx_v_cd_values, size_t __pyx_v_namelen, char *__pyx_v_name) {
+  H5Z_filter_t __pyx_v_r;
+  H5Z_filter_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  H5Z_filter_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Pget_filter", 0);
+
+  /* "h5py/defs.pyx":1373
+ * cdef H5Z_filter_t H5Pget_filter(hid_t plist, unsigned int filter_number,   unsigned int *flags, size_t *cd_nelmts,  unsigned int* cd_values, size_t namelen, char* name ) except *:
+ *     cdef H5Z_filter_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_filter(plist, filter_number, flags, cd_nelmts, cd_values, namelen, name)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1373; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1373; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1373; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1373; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1374
+ *     cdef H5Z_filter_t r
+ *     with rlock:
+ *         r = _hdf5.H5Pget_filter(plist, filter_number, flags, cd_nelmts, cd_values, namelen, name)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Pget_filter(__pyx_v_plist, __pyx_v_filter_number, __pyx_v_flags, __pyx_v_cd_nelmts, __pyx_v_cd_values, __pyx_v_namelen, __pyx_v_name); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1374; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1375
+ *     with rlock:
+ *         r = _hdf5.H5Pget_filter(plist, filter_number, flags, cd_nelmts, cd_values, namelen, name)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <H5Z_filter_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1376
+ *         r = _hdf5.H5Pget_filter(plist, filter_number, flags, cd_nelmts, cd_values, namelen, name)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <H5Z_filter_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1376; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1377
+ *         if r<0:
+ *             if set_exception():
+ *                 return <H5Z_filter_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((H5Z_filter_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1378
+ *             if set_exception():
+ *                 return <H5Z_filter_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Pget_filter_by_id( hid_t plist_id, H5Z_filter_t filter,  unsigned int *flags, size_t *cd_nelmts,  unsigned int* cd_values, size_t namelen, char* name) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1373
+ * cdef H5Z_filter_t H5Pget_filter(hid_t plist, unsigned int filter_number,   unsigned int *flags, size_t *cd_nelmts,  unsigned int* cd_values, size_t namelen, char* name ) except *:
+ *     cdef H5Z_filter_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_filter(plist, filter_number, flags, cd_nelmts, cd_values, namelen, name)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Pget_filter", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1373; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1373; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1373; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1373; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1373; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_155, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1373; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1373; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Pget_filter", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1380
+ *         return r
+ * 
+ * cdef herr_t H5Pget_filter_by_id( hid_t plist_id, H5Z_filter_t filter,  unsigned int *flags, size_t *cd_nelmts,  unsigned int* cd_values, size_t namelen, char* name) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Pget_filter_by_id(hid_t __pyx_v_plist_id, H5Z_filter_t __pyx_v_filter, unsigned int *__pyx_v_flags, size_t *__pyx_v_cd_nelmts, unsigned int *__pyx_v_cd_values, size_t __pyx_v_namelen, char *__pyx_v_name) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Pget_filter_by_id", 0);
+
+  /* "h5py/defs.pyx":1382
+ * cdef herr_t H5Pget_filter_by_id( hid_t plist_id, H5Z_filter_t filter,  unsigned int *flags, size_t *cd_nelmts,  unsigned int* cd_values, size_t namelen, char* name) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_filter_by_id(plist_id, filter, flags, cd_nelmts, cd_values, namelen, name)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1382; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1382; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1382; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1382; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1383
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Pget_filter_by_id(plist_id, filter, flags, cd_nelmts, cd_values, namelen, name)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Pget_filter_by_id(__pyx_v_plist_id, __pyx_v_filter, __pyx_v_flags, __pyx_v_cd_nelmts, __pyx_v_cd_values, __pyx_v_namelen, __pyx_v_name); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1383; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1384
+ *     with rlock:
+ *         r = _hdf5.H5Pget_filter_by_id(plist_id, filter, flags, cd_nelmts, cd_values, namelen, name)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1385
+ *         r = _hdf5.H5Pget_filter_by_id(plist_id, filter, flags, cd_nelmts, cd_values, namelen, name)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1385; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1386
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1387
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Pmodify_filter(hid_t plist, H5Z_filter_t filter, unsigned int flags, size_t cd_nelmts, unsigned int *cd_values) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1382
+ * cdef herr_t H5Pget_filter_by_id( hid_t plist_id, H5Z_filter_t filter,  unsigned int *flags, size_t *cd_nelmts,  unsigned int* cd_values, size_t namelen, char* name) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_filter_by_id(plist_id, filter, flags, cd_nelmts, cd_values, namelen, name)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Pget_filter_by_id", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1382; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1382; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1382; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1382; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1382; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_156, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1382; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1382; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Pget_filter_by_id", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1389
+ *         return r
+ * 
+ * cdef herr_t H5Pmodify_filter(hid_t plist, H5Z_filter_t filter, unsigned int flags, size_t cd_nelmts, unsigned int *cd_values) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Pmodify_filter(hid_t __pyx_v_plist, H5Z_filter_t __pyx_v_filter, unsigned int __pyx_v_flags, size_t __pyx_v_cd_nelmts, unsigned int *__pyx_v_cd_values) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Pmodify_filter", 0);
+
+  /* "h5py/defs.pyx":1391
+ * cdef herr_t H5Pmodify_filter(hid_t plist, H5Z_filter_t filter, unsigned int flags, size_t cd_nelmts, unsigned int *cd_values) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pmodify_filter(plist, filter, flags, cd_nelmts, cd_values)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1391; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1391; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1391; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1391; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1392
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Pmodify_filter(plist, filter, flags, cd_nelmts, cd_values)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Pmodify_filter(__pyx_v_plist, __pyx_v_filter, __pyx_v_flags, __pyx_v_cd_nelmts, __pyx_v_cd_values); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1392; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1393
+ *     with rlock:
+ *         r = _hdf5.H5Pmodify_filter(plist, filter, flags, cd_nelmts, cd_values)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1394
+ *         r = _hdf5.H5Pmodify_filter(plist, filter, flags, cd_nelmts, cd_values)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1394; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1395
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1396
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Premove_filter(hid_t plist, H5Z_filter_t filter ) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1391
+ * cdef herr_t H5Pmodify_filter(hid_t plist, H5Z_filter_t filter, unsigned int flags, size_t cd_nelmts, unsigned int *cd_values) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pmodify_filter(plist, filter, flags, cd_nelmts, cd_values)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Pmodify_filter", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1391; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1391; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1391; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1391; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1391; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_157, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1391; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1391; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Pmodify_filter", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1398
+ *         return r
+ * 
+ * cdef herr_t H5Premove_filter(hid_t plist, H5Z_filter_t filter ) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Premove_filter(hid_t __pyx_v_plist, H5Z_filter_t __pyx_v_filter) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Premove_filter", 0);
+
+  /* "h5py/defs.pyx":1400
+ * cdef herr_t H5Premove_filter(hid_t plist, H5Z_filter_t filter ) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Premove_filter(plist, filter)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1400; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1400; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1400; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1400; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1401
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Premove_filter(plist, filter)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Premove_filter(__pyx_v_plist, __pyx_v_filter); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1401; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1402
+ *     with rlock:
+ *         r = _hdf5.H5Premove_filter(plist, filter)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1403
+ *         r = _hdf5.H5Premove_filter(plist, filter)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1403; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1404
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1405
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Pset_fletcher32(hid_t plist) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1400
+ * cdef herr_t H5Premove_filter(hid_t plist, H5Z_filter_t filter ) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Premove_filter(plist, filter)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Premove_filter", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1400; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1400; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1400; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1400; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1400; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_158, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1400; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1400; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Premove_filter", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1407
+ *         return r
+ * 
+ * cdef herr_t H5Pset_fletcher32(hid_t plist) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Pset_fletcher32(hid_t __pyx_v_plist) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Pset_fletcher32", 0);
+
+  /* "h5py/defs.pyx":1409
+ * cdef herr_t H5Pset_fletcher32(hid_t plist) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_fletcher32(plist)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1409; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1409; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1409; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1409; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1410
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Pset_fletcher32(plist)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Pset_fletcher32(__pyx_v_plist); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1410; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1411
+ *     with rlock:
+ *         r = _hdf5.H5Pset_fletcher32(plist)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1412
+ *         r = _hdf5.H5Pset_fletcher32(plist)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1412; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1413
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1414
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Pset_shuffle(hid_t plist_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1409
+ * cdef herr_t H5Pset_fletcher32(hid_t plist) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_fletcher32(plist)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Pset_fletcher32", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1409; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1409; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1409; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1409; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1409; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_159, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1409; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1409; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Pset_fletcher32", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1416
+ *         return r
+ * 
+ * cdef herr_t H5Pset_shuffle(hid_t plist_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Pset_shuffle(hid_t __pyx_v_plist_id) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Pset_shuffle", 0);
+
+  /* "h5py/defs.pyx":1418
+ * cdef herr_t H5Pset_shuffle(hid_t plist_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_shuffle(plist_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1418; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1418; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1418; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1418; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1419
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Pset_shuffle(plist_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Pset_shuffle(__pyx_v_plist_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1419; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1420
+ *     with rlock:
+ *         r = _hdf5.H5Pset_shuffle(plist_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1421
+ *         r = _hdf5.H5Pset_shuffle(plist_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1421; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1422
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1423
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Pset_szip(hid_t plist, unsigned int options_mask, unsigned int pixels_per_block) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1418
+ * cdef herr_t H5Pset_shuffle(hid_t plist_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_shuffle(plist_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Pset_shuffle", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1418; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1418; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1418; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1418; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1418; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_160, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1418; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1418; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Pset_shuffle", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1425
+ *         return r
+ * 
+ * cdef herr_t H5Pset_szip(hid_t plist, unsigned int options_mask, unsigned int pixels_per_block) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Pset_szip(hid_t __pyx_v_plist, unsigned int __pyx_v_options_mask, unsigned int __pyx_v_pixels_per_block) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Pset_szip", 0);
+
+  /* "h5py/defs.pyx":1427
+ * cdef herr_t H5Pset_szip(hid_t plist, unsigned int options_mask, unsigned int pixels_per_block) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_szip(plist, options_mask, pixels_per_block)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1427; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1427; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1427; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1427; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1428
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Pset_szip(plist, options_mask, pixels_per_block)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Pset_szip(__pyx_v_plist, __pyx_v_options_mask, __pyx_v_pixels_per_block); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1428; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1429
+ *     with rlock:
+ *         r = _hdf5.H5Pset_szip(plist, options_mask, pixels_per_block)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1430
+ *         r = _hdf5.H5Pset_szip(plist, options_mask, pixels_per_block)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1430; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1431
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1432
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Pset_scaleoffset(hid_t plist, H5Z_SO_scale_type_t scale_type, int scale_factor) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1427
+ * cdef herr_t H5Pset_szip(hid_t plist, unsigned int options_mask, unsigned int pixels_per_block) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_szip(plist, options_mask, pixels_per_block)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Pset_szip", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1427; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1427; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1427; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1427; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1427; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_161, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1427; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1427; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Pset_szip", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1434
+ *         return r
+ * 
+ * cdef herr_t H5Pset_scaleoffset(hid_t plist, H5Z_SO_scale_type_t scale_type, int scale_factor) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Pset_scaleoffset(hid_t __pyx_v_plist, enum H5Z_SO_scale_type_t __pyx_v_scale_type, int __pyx_v_scale_factor) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Pset_scaleoffset", 0);
+
+  /* "h5py/defs.pyx":1436
+ * cdef herr_t H5Pset_scaleoffset(hid_t plist, H5Z_SO_scale_type_t scale_type, int scale_factor) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_scaleoffset(plist, scale_type, scale_factor)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1436; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1436; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1436; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1436; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1437
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Pset_scaleoffset(plist, scale_type, scale_factor)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Pset_scaleoffset(__pyx_v_plist, __pyx_v_scale_type, __pyx_v_scale_factor); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1437; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1438
+ *     with rlock:
+ *         r = _hdf5.H5Pset_scaleoffset(plist, scale_type, scale_factor)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1439
+ *         r = _hdf5.H5Pset_scaleoffset(plist, scale_type, scale_factor)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1439; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1440
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1441
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Pset_edc_check(hid_t plist, H5Z_EDC_t check) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1436
+ * cdef herr_t H5Pset_scaleoffset(hid_t plist, H5Z_SO_scale_type_t scale_type, int scale_factor) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_scaleoffset(plist, scale_type, scale_factor)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Pset_scaleoffset", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1436; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1436; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1436; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1436; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1436; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_162, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1436; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1436; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Pset_scaleoffset", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1443
+ *         return r
+ * 
+ * cdef herr_t H5Pset_edc_check(hid_t plist, H5Z_EDC_t check) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Pset_edc_check(hid_t __pyx_v_plist, enum H5Z_EDC_t __pyx_v_check) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Pset_edc_check", 0);
+
+  /* "h5py/defs.pyx":1445
+ * cdef herr_t H5Pset_edc_check(hid_t plist, H5Z_EDC_t check) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_edc_check(plist, check)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1445; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1445; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1445; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1445; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1446
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Pset_edc_check(plist, check)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Pset_edc_check(__pyx_v_plist, __pyx_v_check); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1446; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1447
+ *     with rlock:
+ *         r = _hdf5.H5Pset_edc_check(plist, check)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1448
+ *         r = _hdf5.H5Pset_edc_check(plist, check)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1448; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1449
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1450
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef H5Z_EDC_t H5Pget_edc_check(hid_t plist) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1445
+ * cdef herr_t H5Pset_edc_check(hid_t plist, H5Z_EDC_t check) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_edc_check(plist, check)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Pset_edc_check", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1445; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1445; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1445; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1445; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1445; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_163, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1445; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1445; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Pset_edc_check", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1452
+ *         return r
+ * 
+ * cdef H5Z_EDC_t H5Pget_edc_check(hid_t plist) except *:             # <<<<<<<<<<<<<<
+ *     cdef H5Z_EDC_t r
+ *     with rlock:
+ */
+
+static enum H5Z_EDC_t __pyx_f_4h5py_4defs_H5Pget_edc_check(hid_t __pyx_v_plist) {
+  enum H5Z_EDC_t __pyx_v_r;
+  enum H5Z_EDC_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  enum H5Z_EDC_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Pget_edc_check", 0);
+
+  /* "h5py/defs.pyx":1454
+ * cdef H5Z_EDC_t H5Pget_edc_check(hid_t plist) except *:
+ *     cdef H5Z_EDC_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_edc_check(plist)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1454; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1454; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1454; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1454; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1455
+ *     cdef H5Z_EDC_t r
+ *     with rlock:
+ *         r = _hdf5.H5Pget_edc_check(plist)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Pget_edc_check(__pyx_v_plist); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1455; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1456
+ *     with rlock:
+ *         r = _hdf5.H5Pget_edc_check(plist)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <H5Z_EDC_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1457
+ *         r = _hdf5.H5Pget_edc_check(plist)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <H5Z_EDC_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1457; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1458
+ *         if r<0:
+ *             if set_exception():
+ *                 return <H5Z_EDC_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((enum H5Z_EDC_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1459
+ *             if set_exception():
+ *                 return <H5Z_EDC_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Pset_chunk_cache( hid_t dapl_id, size_t rdcc_nslots, size_t rdcc_nbytes, double rdcc_w0 ) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1454
+ * cdef H5Z_EDC_t H5Pget_edc_check(hid_t plist) except *:
+ *     cdef H5Z_EDC_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_edc_check(plist)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Pget_edc_check", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1454; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1454; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1454; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1454; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1454; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_164, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1454; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1454; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Pget_edc_check", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1461
+ *         return r
+ * 
+ * cdef herr_t H5Pset_chunk_cache( hid_t dapl_id, size_t rdcc_nslots, size_t rdcc_nbytes, double rdcc_w0 ) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Pset_chunk_cache(hid_t __pyx_v_dapl_id, size_t __pyx_v_rdcc_nslots, size_t __pyx_v_rdcc_nbytes, double __pyx_v_rdcc_w0) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Pset_chunk_cache", 0);
+
+  /* "h5py/defs.pyx":1463
+ * cdef herr_t H5Pset_chunk_cache( hid_t dapl_id, size_t rdcc_nslots, size_t rdcc_nbytes, double rdcc_w0 ) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_chunk_cache(dapl_id, rdcc_nslots, rdcc_nbytes, rdcc_w0)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1463; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1463; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1463; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1463; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1464
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Pset_chunk_cache(dapl_id, rdcc_nslots, rdcc_nbytes, rdcc_w0)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Pset_chunk_cache(__pyx_v_dapl_id, __pyx_v_rdcc_nslots, __pyx_v_rdcc_nbytes, __pyx_v_rdcc_w0); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1464; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1465
+ *     with rlock:
+ *         r = _hdf5.H5Pset_chunk_cache(dapl_id, rdcc_nslots, rdcc_nbytes, rdcc_w0)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1466
+ *         r = _hdf5.H5Pset_chunk_cache(dapl_id, rdcc_nslots, rdcc_nbytes, rdcc_w0)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1466; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1467
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1468
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Pget_chunk_cache( hid_t dapl_id, size_t *rdcc_nslots, size_t *rdcc_nbytes, double *rdcc_w0 ) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1463
+ * cdef herr_t H5Pset_chunk_cache( hid_t dapl_id, size_t rdcc_nslots, size_t rdcc_nbytes, double rdcc_w0 ) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_chunk_cache(dapl_id, rdcc_nslots, rdcc_nbytes, rdcc_w0)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Pset_chunk_cache", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1463; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1463; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1463; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1463; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1463; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_165, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1463; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1463; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Pset_chunk_cache", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1470
+ *         return r
+ * 
+ * cdef herr_t H5Pget_chunk_cache( hid_t dapl_id, size_t *rdcc_nslots, size_t *rdcc_nbytes, double *rdcc_w0 ) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Pget_chunk_cache(hid_t __pyx_v_dapl_id, size_t *__pyx_v_rdcc_nslots, size_t *__pyx_v_rdcc_nbytes, double *__pyx_v_rdcc_w0) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Pget_chunk_cache", 0);
+
+  /* "h5py/defs.pyx":1472
+ * cdef herr_t H5Pget_chunk_cache( hid_t dapl_id, size_t *rdcc_nslots, size_t *rdcc_nbytes, double *rdcc_w0 ) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_chunk_cache(dapl_id, rdcc_nslots, rdcc_nbytes, rdcc_w0)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1472; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1472; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1472; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1472; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1473
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Pget_chunk_cache(dapl_id, rdcc_nslots, rdcc_nbytes, rdcc_w0)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Pget_chunk_cache(__pyx_v_dapl_id, __pyx_v_rdcc_nslots, __pyx_v_rdcc_nbytes, __pyx_v_rdcc_w0); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1473; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1474
+ *     with rlock:
+ *         r = _hdf5.H5Pget_chunk_cache(dapl_id, rdcc_nslots, rdcc_nbytes, rdcc_w0)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1475
+ *         r = _hdf5.H5Pget_chunk_cache(dapl_id, rdcc_nslots, rdcc_nbytes, rdcc_w0)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1475; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1476
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1477
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Pset_sieve_buf_size(hid_t fapl_id, size_t size) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1472
+ * cdef herr_t H5Pget_chunk_cache( hid_t dapl_id, size_t *rdcc_nslots, size_t *rdcc_nbytes, double *rdcc_w0 ) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_chunk_cache(dapl_id, rdcc_nslots, rdcc_nbytes, rdcc_w0)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Pget_chunk_cache", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1472; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1472; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1472; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1472; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1472; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_166, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1472; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1472; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Pget_chunk_cache", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1479
+ *         return r
+ * 
+ * cdef herr_t H5Pset_sieve_buf_size(hid_t fapl_id, size_t size) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Pset_sieve_buf_size(hid_t __pyx_v_fapl_id, size_t __pyx_v_size) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Pset_sieve_buf_size", 0);
+
+  /* "h5py/defs.pyx":1481
+ * cdef herr_t H5Pset_sieve_buf_size(hid_t fapl_id, size_t size) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_sieve_buf_size(fapl_id, size)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1481; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1481; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1481; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1481; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1482
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Pset_sieve_buf_size(fapl_id, size)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Pset_sieve_buf_size(__pyx_v_fapl_id, __pyx_v_size); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1482; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1483
+ *     with rlock:
+ *         r = _hdf5.H5Pset_sieve_buf_size(fapl_id, size)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1484
+ *         r = _hdf5.H5Pset_sieve_buf_size(fapl_id, size)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1484; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1485
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1486
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Pget_sieve_buf_size(hid_t fapl_id, size_t *size) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1481
+ * cdef herr_t H5Pset_sieve_buf_size(hid_t fapl_id, size_t size) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_sieve_buf_size(fapl_id, size)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Pset_sieve_buf_size", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1481; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1481; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1481; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1481; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1481; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_167, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1481; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1481; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Pset_sieve_buf_size", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1488
+ *         return r
+ * 
+ * cdef herr_t H5Pget_sieve_buf_size(hid_t fapl_id, size_t *size) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Pget_sieve_buf_size(hid_t __pyx_v_fapl_id, size_t *__pyx_v_size) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Pget_sieve_buf_size", 0);
+
+  /* "h5py/defs.pyx":1490
+ * cdef herr_t H5Pget_sieve_buf_size(hid_t fapl_id, size_t *size) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_sieve_buf_size(fapl_id, size)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1490; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1490; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1490; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1490; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1491
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Pget_sieve_buf_size(fapl_id, size)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Pget_sieve_buf_size(__pyx_v_fapl_id, __pyx_v_size); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1491; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1492
+ *     with rlock:
+ *         r = _hdf5.H5Pget_sieve_buf_size(fapl_id, size)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1493
+ *         r = _hdf5.H5Pget_sieve_buf_size(fapl_id, size)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1493; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1494
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1495
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Pset_nlinks(hid_t plist_id, size_t nlinks) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1490
+ * cdef herr_t H5Pget_sieve_buf_size(hid_t fapl_id, size_t *size) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_sieve_buf_size(fapl_id, size)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Pget_sieve_buf_size", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1490; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1490; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1490; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1490; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1490; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_168, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1490; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1490; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Pget_sieve_buf_size", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1497
+ *         return r
+ * 
+ * cdef herr_t H5Pset_nlinks(hid_t plist_id, size_t nlinks) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Pset_nlinks(hid_t __pyx_v_plist_id, size_t __pyx_v_nlinks) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Pset_nlinks", 0);
+
+  /* "h5py/defs.pyx":1499
+ * cdef herr_t H5Pset_nlinks(hid_t plist_id, size_t nlinks) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_nlinks(plist_id, nlinks)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1499; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1499; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1499; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1499; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1500
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Pset_nlinks(plist_id, nlinks)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Pset_nlinks(__pyx_v_plist_id, __pyx_v_nlinks); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1500; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1501
+ *     with rlock:
+ *         r = _hdf5.H5Pset_nlinks(plist_id, nlinks)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1502
+ *         r = _hdf5.H5Pset_nlinks(plist_id, nlinks)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1502; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1503
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1504
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Pget_nlinks(hid_t plist_id, size_t *nlinks) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1499
+ * cdef herr_t H5Pset_nlinks(hid_t plist_id, size_t nlinks) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_nlinks(plist_id, nlinks)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Pset_nlinks", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1499; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1499; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1499; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1499; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1499; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_169, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1499; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1499; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Pset_nlinks", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1506
+ *         return r
+ * 
+ * cdef herr_t H5Pget_nlinks(hid_t plist_id, size_t *nlinks) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Pget_nlinks(hid_t __pyx_v_plist_id, size_t *__pyx_v_nlinks) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Pget_nlinks", 0);
+
+  /* "h5py/defs.pyx":1508
+ * cdef herr_t H5Pget_nlinks(hid_t plist_id, size_t *nlinks) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_nlinks(plist_id, nlinks)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1508; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1508; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1508; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1508; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1509
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Pget_nlinks(plist_id, nlinks)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Pget_nlinks(__pyx_v_plist_id, __pyx_v_nlinks); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1509; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1510
+ *     with rlock:
+ *         r = _hdf5.H5Pget_nlinks(plist_id, nlinks)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1511
+ *         r = _hdf5.H5Pget_nlinks(plist_id, nlinks)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1511; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1512
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1513
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Pset_elink_prefix(hid_t plist_id, char *prefix) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1508
+ * cdef herr_t H5Pget_nlinks(hid_t plist_id, size_t *nlinks) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_nlinks(plist_id, nlinks)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Pget_nlinks", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1508; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1508; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1508; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1508; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1508; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_170, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1508; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1508; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Pget_nlinks", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1515
+ *         return r
+ * 
+ * cdef herr_t H5Pset_elink_prefix(hid_t plist_id, char *prefix) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Pset_elink_prefix(hid_t __pyx_v_plist_id, char *__pyx_v_prefix) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Pset_elink_prefix", 0);
+
+  /* "h5py/defs.pyx":1517
+ * cdef herr_t H5Pset_elink_prefix(hid_t plist_id, char *prefix) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_elink_prefix(plist_id, prefix)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1517; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1517; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1517; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1517; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1518
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Pset_elink_prefix(plist_id, prefix)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Pset_elink_prefix(__pyx_v_plist_id, __pyx_v_prefix); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1518; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1519
+ *     with rlock:
+ *         r = _hdf5.H5Pset_elink_prefix(plist_id, prefix)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1520
+ *         r = _hdf5.H5Pset_elink_prefix(plist_id, prefix)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1520; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1521
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1522
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef ssize_t H5Pget_elink_prefix(hid_t plist_id, char *prefix, size_t size) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1517
+ * cdef herr_t H5Pset_elink_prefix(hid_t plist_id, char *prefix) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_elink_prefix(plist_id, prefix)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Pset_elink_prefix", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1517; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1517; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1517; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1517; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1517; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_171, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1517; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1517; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Pset_elink_prefix", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1524
+ *         return r
+ * 
+ * cdef ssize_t H5Pget_elink_prefix(hid_t plist_id, char *prefix, size_t size) except *:             # <<<<<<<<<<<<<<
+ *     cdef ssize_t r
+ *     with rlock:
+ */
+
+static Py_ssize_t __pyx_f_4h5py_4defs_H5Pget_elink_prefix(hid_t __pyx_v_plist_id, char *__pyx_v_prefix, size_t __pyx_v_size) {
+  Py_ssize_t __pyx_v_r;
+  Py_ssize_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  Py_ssize_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Pget_elink_prefix", 0);
+
+  /* "h5py/defs.pyx":1526
+ * cdef ssize_t H5Pget_elink_prefix(hid_t plist_id, char *prefix, size_t size) except *:
+ *     cdef ssize_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_elink_prefix(plist_id, prefix, size)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1526; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1526; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1526; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1526; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1527
+ *     cdef ssize_t r
+ *     with rlock:
+ *         r = _hdf5.H5Pget_elink_prefix(plist_id, prefix, size)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Pget_elink_prefix(__pyx_v_plist_id, __pyx_v_prefix, __pyx_v_size); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1527; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1528
+ *     with rlock:
+ *         r = _hdf5.H5Pget_elink_prefix(plist_id, prefix, size)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <ssize_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1529
+ *         r = _hdf5.H5Pget_elink_prefix(plist_id, prefix, size)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <ssize_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1529; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1530
+ *         if r<0:
+ *             if set_exception():
+ *                 return <ssize_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((Py_ssize_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1531
+ *             if set_exception():
+ *                 return <ssize_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef hid_t H5Pget_elink_fapl(hid_t lapl_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1526
+ * cdef ssize_t H5Pget_elink_prefix(hid_t plist_id, char *prefix, size_t size) except *:
+ *     cdef ssize_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_elink_prefix(plist_id, prefix, size)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Pget_elink_prefix", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1526; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1526; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1526; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1526; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1526; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_172, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1526; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1526; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Pget_elink_prefix", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1533
+ *         return r
+ * 
+ * cdef hid_t H5Pget_elink_fapl(hid_t lapl_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef hid_t r
+ *     with rlock:
+ */
+
+static hid_t __pyx_f_4h5py_4defs_H5Pget_elink_fapl(hid_t __pyx_v_lapl_id) {
+  hid_t __pyx_v_r;
+  hid_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  hid_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Pget_elink_fapl", 0);
+
+  /* "h5py/defs.pyx":1535
+ * cdef hid_t H5Pget_elink_fapl(hid_t lapl_id) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_elink_fapl(lapl_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1535; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1535; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1535; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1535; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1536
+ *     cdef hid_t r
+ *     with rlock:
+ *         r = _hdf5.H5Pget_elink_fapl(lapl_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Pget_elink_fapl(__pyx_v_lapl_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1536; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1537
+ *     with rlock:
+ *         r = _hdf5.H5Pget_elink_fapl(lapl_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1538
+ *         r = _hdf5.H5Pget_elink_fapl(lapl_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <hid_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1538; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1539
+ *         if r<0:
+ *             if set_exception():
+ *                 return <hid_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((hid_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1540
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Pset_elink_fapl(hid_t lapl_id, hid_t fapl_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1535
+ * cdef hid_t H5Pget_elink_fapl(hid_t lapl_id) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_elink_fapl(lapl_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Pget_elink_fapl", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1535; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1535; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1535; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1535; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1535; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_173, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1535; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1535; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Pget_elink_fapl", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1542
+ *         return r
+ * 
+ * cdef herr_t H5Pset_elink_fapl(hid_t lapl_id, hid_t fapl_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Pset_elink_fapl(hid_t __pyx_v_lapl_id, hid_t __pyx_v_fapl_id) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Pset_elink_fapl", 0);
+
+  /* "h5py/defs.pyx":1544
+ * cdef herr_t H5Pset_elink_fapl(hid_t lapl_id, hid_t fapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_elink_fapl(lapl_id, fapl_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1544; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1544; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1544; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1544; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1545
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Pset_elink_fapl(lapl_id, fapl_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Pset_elink_fapl(__pyx_v_lapl_id, __pyx_v_fapl_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1545; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1546
+ *     with rlock:
+ *         r = _hdf5.H5Pset_elink_fapl(lapl_id, fapl_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1547
+ *         r = _hdf5.H5Pset_elink_fapl(lapl_id, fapl_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1547; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1548
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1549
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Pset_create_intermediate_group(hid_t plist_id, unsigned crt_intmd) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1544
+ * cdef herr_t H5Pset_elink_fapl(hid_t lapl_id, hid_t fapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_elink_fapl(lapl_id, fapl_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Pset_elink_fapl", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1544; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1544; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1544; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1544; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1544; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_174, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1544; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1544; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Pset_elink_fapl", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1551
+ *         return r
+ * 
+ * cdef herr_t H5Pset_create_intermediate_group(hid_t plist_id, unsigned crt_intmd) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Pset_create_intermediate_group(hid_t __pyx_v_plist_id, unsigned int __pyx_v_crt_intmd) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Pset_create_intermediate_group", 0);
+
+  /* "h5py/defs.pyx":1553
+ * cdef herr_t H5Pset_create_intermediate_group(hid_t plist_id, unsigned crt_intmd) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_create_intermediate_group(plist_id, crt_intmd)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1553; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1553; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1553; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1553; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1554
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Pset_create_intermediate_group(plist_id, crt_intmd)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Pset_create_intermediate_group(__pyx_v_plist_id, __pyx_v_crt_intmd); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1554; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1555
+ *     with rlock:
+ *         r = _hdf5.H5Pset_create_intermediate_group(plist_id, crt_intmd)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1556
+ *         r = _hdf5.H5Pset_create_intermediate_group(plist_id, crt_intmd)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1556; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1557
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1558
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Pget_create_intermediate_group(hid_t plist_id, unsigned *crt_intmd) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1553
+ * cdef herr_t H5Pset_create_intermediate_group(hid_t plist_id, unsigned crt_intmd) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_create_intermediate_group(plist_id, crt_intmd)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Pset_create_intermediate_group", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1553; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1553; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1553; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1553; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1553; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_175, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1553; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1553; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Pset_create_intermediate_group", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1560
+ *         return r
+ * 
+ * cdef herr_t H5Pget_create_intermediate_group(hid_t plist_id, unsigned *crt_intmd) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Pget_create_intermediate_group(hid_t __pyx_v_plist_id, unsigned int *__pyx_v_crt_intmd) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Pget_create_intermediate_group", 0);
+
+  /* "h5py/defs.pyx":1562
+ * cdef herr_t H5Pget_create_intermediate_group(hid_t plist_id, unsigned *crt_intmd) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_create_intermediate_group(plist_id, crt_intmd)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1562; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1562; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1562; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1562; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1563
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Pget_create_intermediate_group(plist_id, crt_intmd)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Pget_create_intermediate_group(__pyx_v_plist_id, __pyx_v_crt_intmd); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1563; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1564
+ *     with rlock:
+ *         r = _hdf5.H5Pget_create_intermediate_group(plist_id, crt_intmd)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1565
+ *         r = _hdf5.H5Pget_create_intermediate_group(plist_id, crt_intmd)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1565; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1566
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1567
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Pset_copy_object(hid_t plist_id, unsigned crt_intmd) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1562
+ * cdef herr_t H5Pget_create_intermediate_group(hid_t plist_id, unsigned *crt_intmd) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_create_intermediate_group(plist_id, crt_intmd)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Pget_create_intermediate_group", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1562; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1562; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1562; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1562; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1562; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_176, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1562; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1562; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Pget_create_intermediate_group", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1569
+ *         return r
+ * 
+ * cdef herr_t H5Pset_copy_object(hid_t plist_id, unsigned crt_intmd) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Pset_copy_object(hid_t __pyx_v_plist_id, unsigned int __pyx_v_crt_intmd) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Pset_copy_object", 0);
+
+  /* "h5py/defs.pyx":1571
+ * cdef herr_t H5Pset_copy_object(hid_t plist_id, unsigned crt_intmd) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_copy_object(plist_id, crt_intmd)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1571; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1571; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1571; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1571; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1572
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Pset_copy_object(plist_id, crt_intmd)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Pset_copy_object(__pyx_v_plist_id, __pyx_v_crt_intmd); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1572; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1573
+ *     with rlock:
+ *         r = _hdf5.H5Pset_copy_object(plist_id, crt_intmd)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1574
+ *         r = _hdf5.H5Pset_copy_object(plist_id, crt_intmd)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1574; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1575
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1576
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Pget_copy_object(hid_t plist_id, unsigned *crt_intmd) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1571
+ * cdef herr_t H5Pset_copy_object(hid_t plist_id, unsigned crt_intmd) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_copy_object(plist_id, crt_intmd)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Pset_copy_object", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1571; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1571; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1571; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1571; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1571; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_177, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1571; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1571; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Pset_copy_object", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1578
+ *         return r
+ * 
+ * cdef herr_t H5Pget_copy_object(hid_t plist_id, unsigned *crt_intmd) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Pget_copy_object(hid_t __pyx_v_plist_id, unsigned int *__pyx_v_crt_intmd) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Pget_copy_object", 0);
+
+  /* "h5py/defs.pyx":1580
+ * cdef herr_t H5Pget_copy_object(hid_t plist_id, unsigned *crt_intmd) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_copy_object(plist_id, crt_intmd)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1580; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1580; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1580; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1580; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1581
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Pget_copy_object(plist_id, crt_intmd)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Pget_copy_object(__pyx_v_plist_id, __pyx_v_crt_intmd); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1581; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1582
+ *     with rlock:
+ *         r = _hdf5.H5Pget_copy_object(plist_id, crt_intmd)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1583
+ *         r = _hdf5.H5Pget_copy_object(plist_id, crt_intmd)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1583; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1584
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1585
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Pset_char_encoding(hid_t plist_id, H5T_cset_t encoding) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1580
+ * cdef herr_t H5Pget_copy_object(hid_t plist_id, unsigned *crt_intmd) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_copy_object(plist_id, crt_intmd)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Pget_copy_object", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1580; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1580; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1580; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1580; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1580; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_178, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1580; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1580; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Pget_copy_object", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1587
+ *         return r
+ * 
+ * cdef herr_t H5Pset_char_encoding(hid_t plist_id, H5T_cset_t encoding) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Pset_char_encoding(hid_t __pyx_v_plist_id, H5T_cset_t __pyx_v_encoding) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Pset_char_encoding", 0);
+
+  /* "h5py/defs.pyx":1589
+ * cdef herr_t H5Pset_char_encoding(hid_t plist_id, H5T_cset_t encoding) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_char_encoding(plist_id, encoding)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1589; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1589; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1589; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1589; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1590
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Pset_char_encoding(plist_id, encoding)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Pset_char_encoding(__pyx_v_plist_id, __pyx_v_encoding); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1590; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1591
+ *     with rlock:
+ *         r = _hdf5.H5Pset_char_encoding(plist_id, encoding)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1592
+ *         r = _hdf5.H5Pset_char_encoding(plist_id, encoding)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1592; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1593
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1594
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Pget_char_encoding(hid_t plist_id, H5T_cset_t *encoding) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1589
+ * cdef herr_t H5Pset_char_encoding(hid_t plist_id, H5T_cset_t encoding) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_char_encoding(plist_id, encoding)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Pset_char_encoding", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1589; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1589; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1589; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1589; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1589; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_179, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1589; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1589; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Pset_char_encoding", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1596
+ *         return r
+ * 
+ * cdef herr_t H5Pget_char_encoding(hid_t plist_id, H5T_cset_t *encoding) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Pget_char_encoding(hid_t __pyx_v_plist_id, H5T_cset_t *__pyx_v_encoding) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Pget_char_encoding", 0);
+
+  /* "h5py/defs.pyx":1598
+ * cdef herr_t H5Pget_char_encoding(hid_t plist_id, H5T_cset_t *encoding) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_char_encoding(plist_id, encoding)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1598; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1598; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1598; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1598; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1599
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Pget_char_encoding(plist_id, encoding)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Pget_char_encoding(__pyx_v_plist_id, __pyx_v_encoding); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1599; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1600
+ *     with rlock:
+ *         r = _hdf5.H5Pget_char_encoding(plist_id, encoding)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1601
+ *         r = _hdf5.H5Pget_char_encoding(plist_id, encoding)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1601; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1602
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1603
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Pset_obj_track_times( hid_t ocpl_id, hbool_t track_times ) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1598
+ * cdef herr_t H5Pget_char_encoding(hid_t plist_id, H5T_cset_t *encoding) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_char_encoding(plist_id, encoding)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Pget_char_encoding", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1598; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1598; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1598; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1598; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1598; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_180, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1598; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1598; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Pget_char_encoding", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1605
+ *         return r
+ * 
+ * cdef herr_t H5Pset_obj_track_times( hid_t ocpl_id, hbool_t track_times ) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Pset_obj_track_times(hid_t __pyx_v_ocpl_id, hbool_t __pyx_v_track_times) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Pset_obj_track_times", 0);
+
+  /* "h5py/defs.pyx":1607
+ * cdef herr_t H5Pset_obj_track_times( hid_t ocpl_id, hbool_t track_times ) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_obj_track_times(ocpl_id, track_times)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1607; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1607; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1607; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1607; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1608
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Pset_obj_track_times(ocpl_id, track_times)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Pset_obj_track_times(__pyx_v_ocpl_id, __pyx_v_track_times); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1608; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1609
+ *     with rlock:
+ *         r = _hdf5.H5Pset_obj_track_times(ocpl_id, track_times)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1610
+ *         r = _hdf5.H5Pset_obj_track_times(ocpl_id, track_times)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1610; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1611
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1612
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Pget_obj_track_times( hid_t ocpl_id, hbool_t *track_times ) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1607
+ * cdef herr_t H5Pset_obj_track_times( hid_t ocpl_id, hbool_t track_times ) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_obj_track_times(ocpl_id, track_times)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Pset_obj_track_times", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1607; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1607; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1607; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1607; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1607; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_181, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1607; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1607; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Pset_obj_track_times", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1614
+ *         return r
+ * 
+ * cdef herr_t H5Pget_obj_track_times( hid_t ocpl_id, hbool_t *track_times ) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Pget_obj_track_times(hid_t __pyx_v_ocpl_id, hbool_t *__pyx_v_track_times) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Pget_obj_track_times", 0);
+
+  /* "h5py/defs.pyx":1616
+ * cdef herr_t H5Pget_obj_track_times( hid_t ocpl_id, hbool_t *track_times ) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_obj_track_times(ocpl_id, track_times)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1616; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1616; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1616; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1616; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1617
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Pget_obj_track_times(ocpl_id, track_times)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Pget_obj_track_times(__pyx_v_ocpl_id, __pyx_v_track_times); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1617; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1618
+ *     with rlock:
+ *         r = _hdf5.H5Pget_obj_track_times(ocpl_id, track_times)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1619
+ *         r = _hdf5.H5Pget_obj_track_times(ocpl_id, track_times)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1619; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1620
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1621
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Pset_local_heap_size_hint(hid_t plist_id, size_t size_hint) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1616
+ * cdef herr_t H5Pget_obj_track_times( hid_t ocpl_id, hbool_t *track_times ) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_obj_track_times(ocpl_id, track_times)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Pget_obj_track_times", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1616; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1616; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1616; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1616; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1616; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_182, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1616; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1616; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Pget_obj_track_times", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1623
+ *         return r
+ * 
+ * cdef herr_t H5Pset_local_heap_size_hint(hid_t plist_id, size_t size_hint) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Pset_local_heap_size_hint(hid_t __pyx_v_plist_id, size_t __pyx_v_size_hint) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Pset_local_heap_size_hint", 0);
+
+  /* "h5py/defs.pyx":1625
+ * cdef herr_t H5Pset_local_heap_size_hint(hid_t plist_id, size_t size_hint) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_local_heap_size_hint(plist_id, size_hint)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1625; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1625; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1625; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1625; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1626
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Pset_local_heap_size_hint(plist_id, size_hint)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Pset_local_heap_size_hint(__pyx_v_plist_id, __pyx_v_size_hint); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1626; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1627
+ *     with rlock:
+ *         r = _hdf5.H5Pset_local_heap_size_hint(plist_id, size_hint)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1628
+ *         r = _hdf5.H5Pset_local_heap_size_hint(plist_id, size_hint)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1628; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1629
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1630
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Pget_local_heap_size_hint(hid_t plist_id, size_t *size_hint) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1625
+ * cdef herr_t H5Pset_local_heap_size_hint(hid_t plist_id, size_t size_hint) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_local_heap_size_hint(plist_id, size_hint)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Pset_local_heap_size_hint", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1625; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1625; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1625; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1625; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1625; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_183, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1625; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1625; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Pset_local_heap_size_hint", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1632
+ *         return r
+ * 
+ * cdef herr_t H5Pget_local_heap_size_hint(hid_t plist_id, size_t *size_hint) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Pget_local_heap_size_hint(hid_t __pyx_v_plist_id, size_t *__pyx_v_size_hint) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Pget_local_heap_size_hint", 0);
+
+  /* "h5py/defs.pyx":1634
+ * cdef herr_t H5Pget_local_heap_size_hint(hid_t plist_id, size_t *size_hint) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_local_heap_size_hint(plist_id, size_hint)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1634; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1634; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1634; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1634; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1635
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Pget_local_heap_size_hint(plist_id, size_hint)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Pget_local_heap_size_hint(__pyx_v_plist_id, __pyx_v_size_hint); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1635; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1636
+ *     with rlock:
+ *         r = _hdf5.H5Pget_local_heap_size_hint(plist_id, size_hint)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1637
+ *         r = _hdf5.H5Pget_local_heap_size_hint(plist_id, size_hint)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1637; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1638
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1639
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Pset_link_phase_change(hid_t plist_id, unsigned max_compact, unsigned min_dense) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1634
+ * cdef herr_t H5Pget_local_heap_size_hint(hid_t plist_id, size_t *size_hint) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_local_heap_size_hint(plist_id, size_hint)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Pget_local_heap_size_hint", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1634; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1634; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1634; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1634; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1634; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_184, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1634; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1634; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Pget_local_heap_size_hint", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1641
+ *         return r
+ * 
+ * cdef herr_t H5Pset_link_phase_change(hid_t plist_id, unsigned max_compact, unsigned min_dense) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Pset_link_phase_change(hid_t __pyx_v_plist_id, unsigned int __pyx_v_max_compact, unsigned int __pyx_v_min_dense) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Pset_link_phase_change", 0);
+
+  /* "h5py/defs.pyx":1643
+ * cdef herr_t H5Pset_link_phase_change(hid_t plist_id, unsigned max_compact, unsigned min_dense) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_link_phase_change(plist_id, max_compact, min_dense)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1643; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1643; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1643; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1643; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1644
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Pset_link_phase_change(plist_id, max_compact, min_dense)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Pset_link_phase_change(__pyx_v_plist_id, __pyx_v_max_compact, __pyx_v_min_dense); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1644; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1645
+ *     with rlock:
+ *         r = _hdf5.H5Pset_link_phase_change(plist_id, max_compact, min_dense)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1646
+ *         r = _hdf5.H5Pset_link_phase_change(plist_id, max_compact, min_dense)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1646; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1647
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1648
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Pget_link_phase_change(hid_t plist_id, unsigned *max_compact , unsigned *min_dense) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1643
+ * cdef herr_t H5Pset_link_phase_change(hid_t plist_id, unsigned max_compact, unsigned min_dense) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_link_phase_change(plist_id, max_compact, min_dense)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Pset_link_phase_change", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1643; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1643; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1643; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1643; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1643; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_185, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1643; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1643; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Pset_link_phase_change", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1650
+ *         return r
+ * 
+ * cdef herr_t H5Pget_link_phase_change(hid_t plist_id, unsigned *max_compact , unsigned *min_dense) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Pget_link_phase_change(hid_t __pyx_v_plist_id, unsigned int *__pyx_v_max_compact, unsigned int *__pyx_v_min_dense) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Pget_link_phase_change", 0);
+
+  /* "h5py/defs.pyx":1652
+ * cdef herr_t H5Pget_link_phase_change(hid_t plist_id, unsigned *max_compact , unsigned *min_dense) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_link_phase_change(plist_id, max_compact, min_dense)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1652; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1652; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1652; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1652; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1653
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Pget_link_phase_change(plist_id, max_compact, min_dense)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Pget_link_phase_change(__pyx_v_plist_id, __pyx_v_max_compact, __pyx_v_min_dense); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1653; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1654
+ *     with rlock:
+ *         r = _hdf5.H5Pget_link_phase_change(plist_id, max_compact, min_dense)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1655
+ *         r = _hdf5.H5Pget_link_phase_change(plist_id, max_compact, min_dense)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1655; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1656
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1657
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Pset_est_link_info(hid_t plist_id, unsigned est_num_entries, unsigned est_name_len) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1652
+ * cdef herr_t H5Pget_link_phase_change(hid_t plist_id, unsigned *max_compact , unsigned *min_dense) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_link_phase_change(plist_id, max_compact, min_dense)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Pget_link_phase_change", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1652; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1652; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1652; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1652; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1652; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_186, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1652; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1652; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Pget_link_phase_change", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1659
+ *         return r
+ * 
+ * cdef herr_t H5Pset_est_link_info(hid_t plist_id, unsigned est_num_entries, unsigned est_name_len) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Pset_est_link_info(hid_t __pyx_v_plist_id, unsigned int __pyx_v_est_num_entries, unsigned int __pyx_v_est_name_len) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Pset_est_link_info", 0);
+
+  /* "h5py/defs.pyx":1661
+ * cdef herr_t H5Pset_est_link_info(hid_t plist_id, unsigned est_num_entries, unsigned est_name_len) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_est_link_info(plist_id, est_num_entries, est_name_len)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1661; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1661; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1661; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1661; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1662
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Pset_est_link_info(plist_id, est_num_entries, est_name_len)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Pset_est_link_info(__pyx_v_plist_id, __pyx_v_est_num_entries, __pyx_v_est_name_len); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1662; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1663
+ *     with rlock:
+ *         r = _hdf5.H5Pset_est_link_info(plist_id, est_num_entries, est_name_len)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1664
+ *         r = _hdf5.H5Pset_est_link_info(plist_id, est_num_entries, est_name_len)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1664; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1665
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1666
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Pget_est_link_info(hid_t plist_id, unsigned *est_num_entries , unsigned *est_name_len) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1661
+ * cdef herr_t H5Pset_est_link_info(hid_t plist_id, unsigned est_num_entries, unsigned est_name_len) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_est_link_info(plist_id, est_num_entries, est_name_len)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Pset_est_link_info", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1661; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1661; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1661; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1661; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1661; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_187, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1661; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1661; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Pset_est_link_info", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1668
+ *         return r
+ * 
+ * cdef herr_t H5Pget_est_link_info(hid_t plist_id, unsigned *est_num_entries , unsigned *est_name_len) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Pget_est_link_info(hid_t __pyx_v_plist_id, unsigned int *__pyx_v_est_num_entries, unsigned int *__pyx_v_est_name_len) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Pget_est_link_info", 0);
+
+  /* "h5py/defs.pyx":1670
+ * cdef herr_t H5Pget_est_link_info(hid_t plist_id, unsigned *est_num_entries , unsigned *est_name_len) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_est_link_info(plist_id, est_num_entries, est_name_len)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1670; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1670; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1670; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1670; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1671
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Pget_est_link_info(plist_id, est_num_entries, est_name_len)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Pget_est_link_info(__pyx_v_plist_id, __pyx_v_est_num_entries, __pyx_v_est_name_len); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1671; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1672
+ *     with rlock:
+ *         r = _hdf5.H5Pget_est_link_info(plist_id, est_num_entries, est_name_len)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1673
+ *         r = _hdf5.H5Pget_est_link_info(plist_id, est_num_entries, est_name_len)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1673; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1674
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1675
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Pset_link_creation_order(hid_t plist_id, unsigned crt_order_flags) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1670
+ * cdef herr_t H5Pget_est_link_info(hid_t plist_id, unsigned *est_num_entries , unsigned *est_name_len) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_est_link_info(plist_id, est_num_entries, est_name_len)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Pget_est_link_info", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1670; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1670; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1670; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1670; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1670; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_188, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1670; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1670; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Pget_est_link_info", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1677
+ *         return r
+ * 
+ * cdef herr_t H5Pset_link_creation_order(hid_t plist_id, unsigned crt_order_flags) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Pset_link_creation_order(hid_t __pyx_v_plist_id, unsigned int __pyx_v_crt_order_flags) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Pset_link_creation_order", 0);
+
+  /* "h5py/defs.pyx":1679
+ * cdef herr_t H5Pset_link_creation_order(hid_t plist_id, unsigned crt_order_flags) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_link_creation_order(plist_id, crt_order_flags)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1679; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1679; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1679; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1679; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1680
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Pset_link_creation_order(plist_id, crt_order_flags)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Pset_link_creation_order(__pyx_v_plist_id, __pyx_v_crt_order_flags); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1680; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1681
+ *     with rlock:
+ *         r = _hdf5.H5Pset_link_creation_order(plist_id, crt_order_flags)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1682
+ *         r = _hdf5.H5Pset_link_creation_order(plist_id, crt_order_flags)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1682; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1683
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1684
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Pget_link_creation_order(hid_t plist_id, unsigned *crt_order_flags) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1679
+ * cdef herr_t H5Pset_link_creation_order(hid_t plist_id, unsigned crt_order_flags) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_link_creation_order(plist_id, crt_order_flags)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Pset_link_creation_order", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1679; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1679; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1679; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1679; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1679; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_189, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1679; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1679; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Pset_link_creation_order", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1686
+ *         return r
+ * 
+ * cdef herr_t H5Pget_link_creation_order(hid_t plist_id, unsigned *crt_order_flags) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Pget_link_creation_order(hid_t __pyx_v_plist_id, unsigned int *__pyx_v_crt_order_flags) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Pget_link_creation_order", 0);
+
+  /* "h5py/defs.pyx":1688
+ * cdef herr_t H5Pget_link_creation_order(hid_t plist_id, unsigned *crt_order_flags) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_link_creation_order(plist_id, crt_order_flags)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1688; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1688; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1688; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1688; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1689
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Pget_link_creation_order(plist_id, crt_order_flags)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Pget_link_creation_order(__pyx_v_plist_id, __pyx_v_crt_order_flags); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1689; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1690
+ *     with rlock:
+ *         r = _hdf5.H5Pget_link_creation_order(plist_id, crt_order_flags)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1691
+ *         r = _hdf5.H5Pget_link_creation_order(plist_id, crt_order_flags)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1691; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1692
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1693
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Pset_libver_bounds(hid_t fapl_id, H5F_libver_t libver_low, H5F_libver_t libver_high) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1688
+ * cdef herr_t H5Pget_link_creation_order(hid_t plist_id, unsigned *crt_order_flags) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_link_creation_order(plist_id, crt_order_flags)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Pget_link_creation_order", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1688; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1688; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1688; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1688; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1688; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_190, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1688; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1688; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Pget_link_creation_order", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1695
+ *         return r
+ * 
+ * cdef herr_t H5Pset_libver_bounds(hid_t fapl_id, H5F_libver_t libver_low, H5F_libver_t libver_high) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Pset_libver_bounds(hid_t __pyx_v_fapl_id, H5F_libver_t __pyx_v_libver_low, H5F_libver_t __pyx_v_libver_high) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Pset_libver_bounds", 0);
+
+  /* "h5py/defs.pyx":1697
+ * cdef herr_t H5Pset_libver_bounds(hid_t fapl_id, H5F_libver_t libver_low, H5F_libver_t libver_high) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_libver_bounds(fapl_id, libver_low, libver_high)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1697; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1697; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1697; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1697; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1698
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Pset_libver_bounds(fapl_id, libver_low, libver_high)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Pset_libver_bounds(__pyx_v_fapl_id, __pyx_v_libver_low, __pyx_v_libver_high); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1698; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1699
+ *     with rlock:
+ *         r = _hdf5.H5Pset_libver_bounds(fapl_id, libver_low, libver_high)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1700
+ *         r = _hdf5.H5Pset_libver_bounds(fapl_id, libver_low, libver_high)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1700; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1701
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1702
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Pget_libver_bounds(hid_t fapl_id, H5F_libver_t *libver_low, H5F_libver_t *libver_high) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1697
+ * cdef herr_t H5Pset_libver_bounds(hid_t fapl_id, H5F_libver_t libver_low, H5F_libver_t libver_high) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_libver_bounds(fapl_id, libver_low, libver_high)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Pset_libver_bounds", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1697; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1697; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1697; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1697; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1697; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_191, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1697; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1697; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Pset_libver_bounds", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1704
+ *         return r
+ * 
+ * cdef herr_t H5Pget_libver_bounds(hid_t fapl_id, H5F_libver_t *libver_low, H5F_libver_t *libver_high) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Pget_libver_bounds(hid_t __pyx_v_fapl_id, H5F_libver_t *__pyx_v_libver_low, H5F_libver_t *__pyx_v_libver_high) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Pget_libver_bounds", 0);
+
+  /* "h5py/defs.pyx":1706
+ * cdef herr_t H5Pget_libver_bounds(hid_t fapl_id, H5F_libver_t *libver_low, H5F_libver_t *libver_high) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_libver_bounds(fapl_id, libver_low, libver_high)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1706; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1706; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1706; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1706; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1707
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Pget_libver_bounds(fapl_id, libver_low, libver_high)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Pget_libver_bounds(__pyx_v_fapl_id, __pyx_v_libver_low, __pyx_v_libver_high); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1707; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1708
+ *     with rlock:
+ *         r = _hdf5.H5Pget_libver_bounds(fapl_id, libver_low, libver_high)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1709
+ *         r = _hdf5.H5Pget_libver_bounds(fapl_id, libver_low, libver_high)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1709; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1710
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1711
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Rcreate(void *ref, hid_t loc_id, char *name, H5R_type_t ref_type,  hid_t space_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1706
+ * cdef herr_t H5Pget_libver_bounds(hid_t fapl_id, H5F_libver_t *libver_low, H5F_libver_t *libver_high) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_libver_bounds(fapl_id, libver_low, libver_high)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Pget_libver_bounds", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1706; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1706; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1706; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1706; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1706; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_192, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1706; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1706; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Pget_libver_bounds", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1713
+ *         return r
+ * 
+ * cdef herr_t H5Rcreate(void *ref, hid_t loc_id, char *name, H5R_type_t ref_type,  hid_t space_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Rcreate(void *__pyx_v_ref, hid_t __pyx_v_loc_id, char *__pyx_v_name, H5R_type_t __pyx_v_ref_type, hid_t __pyx_v_space_id) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Rcreate", 0);
+
+  /* "h5py/defs.pyx":1715
+ * cdef herr_t H5Rcreate(void *ref, hid_t loc_id, char *name, H5R_type_t ref_type,  hid_t space_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Rcreate(ref, loc_id, name, ref_type, space_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1715; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1715; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1715; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1715; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1716
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Rcreate(ref, loc_id, name, ref_type, space_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Rcreate(__pyx_v_ref, __pyx_v_loc_id, __pyx_v_name, __pyx_v_ref_type, __pyx_v_space_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1716; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1717
+ *     with rlock:
+ *         r = _hdf5.H5Rcreate(ref, loc_id, name, ref_type, space_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1718
+ *         r = _hdf5.H5Rcreate(ref, loc_id, name, ref_type, space_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1718; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1719
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1720
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef hid_t H5Rdereference(hid_t obj_id, H5R_type_t ref_type, void *ref) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1715
+ * cdef herr_t H5Rcreate(void *ref, hid_t loc_id, char *name, H5R_type_t ref_type,  hid_t space_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Rcreate(ref, loc_id, name, ref_type, space_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Rcreate", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1715; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1715; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1715; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1715; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1715; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_193, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1715; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1715; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Rcreate", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1722
+ *         return r
+ * 
+ * cdef hid_t H5Rdereference(hid_t obj_id, H5R_type_t ref_type, void *ref) except *:             # <<<<<<<<<<<<<<
+ *     cdef hid_t r
+ *     with rlock:
+ */
+
+static hid_t __pyx_f_4h5py_4defs_H5Rdereference(hid_t __pyx_v_obj_id, H5R_type_t __pyx_v_ref_type, void *__pyx_v_ref) {
+  hid_t __pyx_v_r;
+  hid_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  hid_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Rdereference", 0);
+
+  /* "h5py/defs.pyx":1724
+ * cdef hid_t H5Rdereference(hid_t obj_id, H5R_type_t ref_type, void *ref) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Rdereference(obj_id, ref_type, ref)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1724; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1724; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1724; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1724; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1725
+ *     cdef hid_t r
+ *     with rlock:
+ *         r = _hdf5.H5Rdereference(obj_id, ref_type, ref)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Rdereference(__pyx_v_obj_id, __pyx_v_ref_type, __pyx_v_ref); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1725; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1726
+ *     with rlock:
+ *         r = _hdf5.H5Rdereference(obj_id, ref_type, ref)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1727
+ *         r = _hdf5.H5Rdereference(obj_id, ref_type, ref)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <hid_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1727; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1728
+ *         if r<0:
+ *             if set_exception():
+ *                 return <hid_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((hid_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1729
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef hid_t H5Rget_region(hid_t dataset, H5R_type_t ref_type, void *ref) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1724
+ * cdef hid_t H5Rdereference(hid_t obj_id, H5R_type_t ref_type, void *ref) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Rdereference(obj_id, ref_type, ref)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Rdereference", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1724; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1724; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1724; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1724; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1724; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_194, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1724; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1724; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Rdereference", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1731
+ *         return r
+ * 
+ * cdef hid_t H5Rget_region(hid_t dataset, H5R_type_t ref_type, void *ref) except *:             # <<<<<<<<<<<<<<
+ *     cdef hid_t r
+ *     with rlock:
+ */
+
+static hid_t __pyx_f_4h5py_4defs_H5Rget_region(hid_t __pyx_v_dataset, H5R_type_t __pyx_v_ref_type, void *__pyx_v_ref) {
+  hid_t __pyx_v_r;
+  hid_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  hid_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Rget_region", 0);
+
+  /* "h5py/defs.pyx":1733
+ * cdef hid_t H5Rget_region(hid_t dataset, H5R_type_t ref_type, void *ref) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Rget_region(dataset, ref_type, ref)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1733; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1733; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1733; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1733; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1734
+ *     cdef hid_t r
+ *     with rlock:
+ *         r = _hdf5.H5Rget_region(dataset, ref_type, ref)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Rget_region(__pyx_v_dataset, __pyx_v_ref_type, __pyx_v_ref); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1734; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1735
+ *     with rlock:
+ *         r = _hdf5.H5Rget_region(dataset, ref_type, ref)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1736
+ *         r = _hdf5.H5Rget_region(dataset, ref_type, ref)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <hid_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1736; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1737
+ *         if r<0:
+ *             if set_exception():
+ *                 return <hid_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((hid_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1738
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef H5G_obj_t H5Rget_obj_type(hid_t id, H5R_type_t ref_type, void *ref) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1733
+ * cdef hid_t H5Rget_region(hid_t dataset, H5R_type_t ref_type, void *ref) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Rget_region(dataset, ref_type, ref)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Rget_region", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1733; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1733; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1733; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1733; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1733; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_195, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1733; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1733; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Rget_region", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1740
+ *         return r
+ * 
+ * cdef H5G_obj_t H5Rget_obj_type(hid_t id, H5R_type_t ref_type, void *ref) except *:             # <<<<<<<<<<<<<<
+ *     cdef H5G_obj_t r
+ *     with rlock:
+ */
+
+static enum H5G_obj_t __pyx_f_4h5py_4defs_H5Rget_obj_type(hid_t __pyx_v_id, H5R_type_t __pyx_v_ref_type, void *__pyx_v_ref) {
+  enum H5G_obj_t __pyx_v_r;
+  enum H5G_obj_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  enum H5G_obj_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Rget_obj_type", 0);
+
+  /* "h5py/defs.pyx":1742
+ * cdef H5G_obj_t H5Rget_obj_type(hid_t id, H5R_type_t ref_type, void *ref) except *:
+ *     cdef H5G_obj_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Rget_obj_type(id, ref_type, ref)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1742; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1742; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1742; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1742; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1743
+ *     cdef H5G_obj_t r
+ *     with rlock:
+ *         r = _hdf5.H5Rget_obj_type(id, ref_type, ref)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Rget_obj_type(__pyx_v_id, __pyx_v_ref_type, __pyx_v_ref); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1743; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1744
+ *     with rlock:
+ *         r = _hdf5.H5Rget_obj_type(id, ref_type, ref)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <H5G_obj_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1745
+ *         r = _hdf5.H5Rget_obj_type(id, ref_type, ref)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <H5G_obj_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1745; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1746
+ *         if r<0:
+ *             if set_exception():
+ *                 return <H5G_obj_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((enum H5G_obj_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1747
+ *             if set_exception():
+ *                 return <H5G_obj_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef ssize_t H5Rget_name(hid_t loc_id, H5R_type_t ref_type, void *ref, char *name, size_t size) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1742
+ * cdef H5G_obj_t H5Rget_obj_type(hid_t id, H5R_type_t ref_type, void *ref) except *:
+ *     cdef H5G_obj_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Rget_obj_type(id, ref_type, ref)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Rget_obj_type", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1742; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1742; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1742; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1742; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1742; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_196, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1742; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1742; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Rget_obj_type", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1749
+ *         return r
+ * 
+ * cdef ssize_t H5Rget_name(hid_t loc_id, H5R_type_t ref_type, void *ref, char *name, size_t size) except *:             # <<<<<<<<<<<<<<
+ *     cdef ssize_t r
+ *     with rlock:
+ */
+
+static Py_ssize_t __pyx_f_4h5py_4defs_H5Rget_name(hid_t __pyx_v_loc_id, H5R_type_t __pyx_v_ref_type, void *__pyx_v_ref, char *__pyx_v_name, size_t __pyx_v_size) {
+  Py_ssize_t __pyx_v_r;
+  Py_ssize_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  Py_ssize_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Rget_name", 0);
+
+  /* "h5py/defs.pyx":1751
+ * cdef ssize_t H5Rget_name(hid_t loc_id, H5R_type_t ref_type, void *ref, char *name, size_t size) except *:
+ *     cdef ssize_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Rget_name(loc_id, ref_type, ref, name, size)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1751; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1751; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1751; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1751; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1752
+ *     cdef ssize_t r
+ *     with rlock:
+ *         r = _hdf5.H5Rget_name(loc_id, ref_type, ref, name, size)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Rget_name(__pyx_v_loc_id, __pyx_v_ref_type, __pyx_v_ref, __pyx_v_name, __pyx_v_size); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1752; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1753
+ *     with rlock:
+ *         r = _hdf5.H5Rget_name(loc_id, ref_type, ref, name, size)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <ssize_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1754
+ *         r = _hdf5.H5Rget_name(loc_id, ref_type, ref, name, size)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <ssize_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1754; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1755
+ *         if r<0:
+ *             if set_exception():
+ *                 return <ssize_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((Py_ssize_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1756
+ *             if set_exception():
+ *                 return <ssize_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef hid_t H5Screate(H5S_class_t type) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1751
+ * cdef ssize_t H5Rget_name(hid_t loc_id, H5R_type_t ref_type, void *ref, char *name, size_t size) except *:
+ *     cdef ssize_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Rget_name(loc_id, ref_type, ref, name, size)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Rget_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1751; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1751; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1751; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1751; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1751; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_197, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1751; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1751; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Rget_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1758
+ *         return r
+ * 
+ * cdef hid_t H5Screate(H5S_class_t type) except *:             # <<<<<<<<<<<<<<
+ *     cdef hid_t r
+ *     with rlock:
+ */
+
+static hid_t __pyx_f_4h5py_4defs_H5Screate(H5S_class_t __pyx_v_type) {
+  hid_t __pyx_v_r;
+  hid_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  hid_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Screate", 0);
+
+  /* "h5py/defs.pyx":1760
+ * cdef hid_t H5Screate(H5S_class_t type) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Screate(type)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1760; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1760; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1760; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1760; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1761
+ *     cdef hid_t r
+ *     with rlock:
+ *         r = _hdf5.H5Screate(type)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Screate(__pyx_v_type); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1761; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1762
+ *     with rlock:
+ *         r = _hdf5.H5Screate(type)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1763
+ *         r = _hdf5.H5Screate(type)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <hid_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1763; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1764
+ *         if r<0:
+ *             if set_exception():
+ *                 return <hid_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((hid_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1765
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef hid_t H5Scopy(hid_t space_id ) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1760
+ * cdef hid_t H5Screate(H5S_class_t type) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Screate(type)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Screate", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1760; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1760; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1760; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1760; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1760; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_198, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1760; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1760; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Screate", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1767
+ *         return r
+ * 
+ * cdef hid_t H5Scopy(hid_t space_id ) except *:             # <<<<<<<<<<<<<<
+ *     cdef hid_t r
+ *     with rlock:
+ */
+
+static hid_t __pyx_f_4h5py_4defs_H5Scopy(hid_t __pyx_v_space_id) {
+  hid_t __pyx_v_r;
+  hid_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  hid_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Scopy", 0);
+
+  /* "h5py/defs.pyx":1769
+ * cdef hid_t H5Scopy(hid_t space_id ) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Scopy(space_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1769; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1769; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1769; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1769; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1770
+ *     cdef hid_t r
+ *     with rlock:
+ *         r = _hdf5.H5Scopy(space_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Scopy(__pyx_v_space_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1770; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1771
+ *     with rlock:
+ *         r = _hdf5.H5Scopy(space_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1772
+ *         r = _hdf5.H5Scopy(space_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <hid_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1772; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1773
+ *         if r<0:
+ *             if set_exception():
+ *                 return <hid_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((hid_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1774
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Sclose(hid_t space_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1769
+ * cdef hid_t H5Scopy(hid_t space_id ) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Scopy(space_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Scopy", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1769; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1769; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1769; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1769; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1769; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_199, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1769; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1769; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Scopy", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1776
+ *         return r
+ * 
+ * cdef herr_t H5Sclose(hid_t space_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Sclose(hid_t __pyx_v_space_id) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Sclose", 0);
+
+  /* "h5py/defs.pyx":1778
+ * cdef herr_t H5Sclose(hid_t space_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Sclose(space_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1778; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1778; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1778; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1778; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1779
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Sclose(space_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Sclose(__pyx_v_space_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1779; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1780
+ *     with rlock:
+ *         r = _hdf5.H5Sclose(space_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1781
+ *         r = _hdf5.H5Sclose(space_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1781; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1782
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1783
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef hid_t H5Screate_simple(int rank, hsize_t *dims, hsize_t *maxdims) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1778
+ * cdef herr_t H5Sclose(hid_t space_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Sclose(space_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Sclose", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1778; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1778; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1778; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1778; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1778; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_200, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1778; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1778; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Sclose", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1785
+ *         return r
+ * 
+ * cdef hid_t H5Screate_simple(int rank, hsize_t *dims, hsize_t *maxdims) except *:             # <<<<<<<<<<<<<<
+ *     cdef hid_t r
+ *     with rlock:
+ */
+
+static hid_t __pyx_f_4h5py_4defs_H5Screate_simple(int __pyx_v_rank, hsize_t *__pyx_v_dims, hsize_t *__pyx_v_maxdims) {
+  hid_t __pyx_v_r;
+  hid_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  hid_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Screate_simple", 0);
+
+  /* "h5py/defs.pyx":1787
+ * cdef hid_t H5Screate_simple(int rank, hsize_t *dims, hsize_t *maxdims) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Screate_simple(rank, dims, maxdims)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1787; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1787; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1787; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1787; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1788
+ *     cdef hid_t r
+ *     with rlock:
+ *         r = _hdf5.H5Screate_simple(rank, dims, maxdims)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Screate_simple(__pyx_v_rank, __pyx_v_dims, __pyx_v_maxdims); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1788; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1789
+ *     with rlock:
+ *         r = _hdf5.H5Screate_simple(rank, dims, maxdims)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1790
+ *         r = _hdf5.H5Screate_simple(rank, dims, maxdims)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <hid_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1790; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1791
+ *         if r<0:
+ *             if set_exception():
+ *                 return <hid_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((hid_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1792
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef htri_t H5Sis_simple(hid_t space_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1787
+ * cdef hid_t H5Screate_simple(int rank, hsize_t *dims, hsize_t *maxdims) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Screate_simple(rank, dims, maxdims)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Screate_simple", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1787; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1787; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1787; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1787; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1787; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_201, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1787; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1787; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Screate_simple", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1794
+ *         return r
+ * 
+ * cdef htri_t H5Sis_simple(hid_t space_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef htri_t r
+ *     with rlock:
+ */
+
+static htri_t __pyx_f_4h5py_4defs_H5Sis_simple(hid_t __pyx_v_space_id) {
+  htri_t __pyx_v_r;
+  htri_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  htri_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Sis_simple", 0);
+
+  /* "h5py/defs.pyx":1796
+ * cdef htri_t H5Sis_simple(hid_t space_id) except *:
+ *     cdef htri_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Sis_simple(space_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1796; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1796; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1796; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1796; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1797
+ *     cdef htri_t r
+ *     with rlock:
+ *         r = _hdf5.H5Sis_simple(space_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Sis_simple(__pyx_v_space_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1797; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1798
+ *     with rlock:
+ *         r = _hdf5.H5Sis_simple(space_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <htri_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1799
+ *         r = _hdf5.H5Sis_simple(space_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <htri_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1799; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1800
+ *         if r<0:
+ *             if set_exception():
+ *                 return <htri_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((htri_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1801
+ *             if set_exception():
+ *                 return <htri_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Soffset_simple(hid_t space_id, hssize_t *offset ) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1796
+ * cdef htri_t H5Sis_simple(hid_t space_id) except *:
+ *     cdef htri_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Sis_simple(space_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Sis_simple", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1796; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1796; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1796; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1796; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1796; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_202, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1796; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1796; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Sis_simple", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1803
+ *         return r
+ * 
+ * cdef herr_t H5Soffset_simple(hid_t space_id, hssize_t *offset ) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Soffset_simple(hid_t __pyx_v_space_id, hssize_t *__pyx_v_offset) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Soffset_simple", 0);
+
+  /* "h5py/defs.pyx":1805
+ * cdef herr_t H5Soffset_simple(hid_t space_id, hssize_t *offset ) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Soffset_simple(space_id, offset)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1805; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1805; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1805; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1805; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1806
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Soffset_simple(space_id, offset)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Soffset_simple(__pyx_v_space_id, __pyx_v_offset); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1806; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1807
+ *     with rlock:
+ *         r = _hdf5.H5Soffset_simple(space_id, offset)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1808
+ *         r = _hdf5.H5Soffset_simple(space_id, offset)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1808; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1809
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1810
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef int H5Sget_simple_extent_ndims(hid_t space_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1805
+ * cdef herr_t H5Soffset_simple(hid_t space_id, hssize_t *offset ) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Soffset_simple(space_id, offset)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Soffset_simple", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1805; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1805; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1805; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1805; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1805; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_203, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1805; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1805; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Soffset_simple", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1812
+ *         return r
+ * 
+ * cdef int H5Sget_simple_extent_ndims(hid_t space_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef int r
+ *     with rlock:
+ */
+
+static int __pyx_f_4h5py_4defs_H5Sget_simple_extent_ndims(hid_t __pyx_v_space_id) {
+  int __pyx_v_r;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  int __pyx_t_8;
+  int __pyx_t_9;
+  PyObject *__pyx_t_10 = NULL;
+  PyObject *__pyx_t_11 = NULL;
+  int __pyx_t_12;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Sget_simple_extent_ndims", 0);
+
+  /* "h5py/defs.pyx":1814
+ * cdef int H5Sget_simple_extent_ndims(hid_t space_id) except *:
+ *     cdef int r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Sget_simple_extent_ndims(space_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1814; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1814; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1814; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1814; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1815
+ *     cdef int r
+ *     with rlock:
+ *         r = _hdf5.H5Sget_simple_extent_ndims(space_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Sget_simple_extent_ndims(__pyx_v_space_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1815; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1816
+ *     with rlock:
+ *         r = _hdf5.H5Sget_simple_extent_ndims(space_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <int>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1817
+ *         r = _hdf5.H5Sget_simple_extent_ndims(space_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <int>-1;
+ *         return r
+ */
+            __pyx_t_8 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1817; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_8) {
+
+              /* "h5py/defs.pyx":1818
+ *         if r<0:
+ *             if set_exception():
+ *                 return <int>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((int)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1819
+ *             if set_exception():
+ *                 return <int>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef int H5Sget_simple_extent_dims(hid_t space_id, hsize_t *dims, hsize_t *maxdims) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1814
+ * cdef int H5Sget_simple_extent_ndims(hid_t space_id) except *:
+ *     cdef int r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Sget_simple_extent_ndims(space_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Sget_simple_extent_ndims", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1814; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_10 = PyTuple_New(3); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1814; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_10);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_10, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_11 = PyObject_Call(__pyx_t_2, __pyx_t_10, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1814; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_11);
+          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1814; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_12 = (!__pyx_t_9);
+          if (__pyx_t_12) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1814; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_10)); __pyx_t_10 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_204, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1814; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1814; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_10);
+  __Pyx_AddTraceback("h5py.defs.H5Sget_simple_extent_ndims", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1821
+ *         return r
+ * 
+ * cdef int H5Sget_simple_extent_dims(hid_t space_id, hsize_t *dims, hsize_t *maxdims) except *:             # <<<<<<<<<<<<<<
+ *     cdef int r
+ *     with rlock:
+ */
+
+static int __pyx_f_4h5py_4defs_H5Sget_simple_extent_dims(hid_t __pyx_v_space_id, hsize_t *__pyx_v_dims, hsize_t *__pyx_v_maxdims) {
+  int __pyx_v_r;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  int __pyx_t_8;
+  int __pyx_t_9;
+  PyObject *__pyx_t_10 = NULL;
+  PyObject *__pyx_t_11 = NULL;
+  int __pyx_t_12;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Sget_simple_extent_dims", 0);
+
+  /* "h5py/defs.pyx":1823
+ * cdef int H5Sget_simple_extent_dims(hid_t space_id, hsize_t *dims, hsize_t *maxdims) except *:
+ *     cdef int r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Sget_simple_extent_dims(space_id, dims, maxdims)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1823; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1823; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1823; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1823; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1824
+ *     cdef int r
+ *     with rlock:
+ *         r = _hdf5.H5Sget_simple_extent_dims(space_id, dims, maxdims)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Sget_simple_extent_dims(__pyx_v_space_id, __pyx_v_dims, __pyx_v_maxdims); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1824; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1825
+ *     with rlock:
+ *         r = _hdf5.H5Sget_simple_extent_dims(space_id, dims, maxdims)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <int>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1826
+ *         r = _hdf5.H5Sget_simple_extent_dims(space_id, dims, maxdims)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <int>-1;
+ *         return r
+ */
+            __pyx_t_8 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1826; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_8) {
+
+              /* "h5py/defs.pyx":1827
+ *         if r<0:
+ *             if set_exception():
+ *                 return <int>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((int)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1828
+ *             if set_exception():
+ *                 return <int>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef hssize_t H5Sget_simple_extent_npoints(hid_t space_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1823
+ * cdef int H5Sget_simple_extent_dims(hid_t space_id, hsize_t *dims, hsize_t *maxdims) except *:
+ *     cdef int r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Sget_simple_extent_dims(space_id, dims, maxdims)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Sget_simple_extent_dims", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1823; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_10 = PyTuple_New(3); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1823; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_10);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_10, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_11 = PyObject_Call(__pyx_t_2, __pyx_t_10, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1823; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_11);
+          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1823; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_12 = (!__pyx_t_9);
+          if (__pyx_t_12) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1823; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_10)); __pyx_t_10 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_205, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1823; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1823; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_10);
+  __Pyx_AddTraceback("h5py.defs.H5Sget_simple_extent_dims", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1830
+ *         return r
+ * 
+ * cdef hssize_t H5Sget_simple_extent_npoints(hid_t space_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef hssize_t r
+ *     with rlock:
+ */
+
+static hssize_t __pyx_f_4h5py_4defs_H5Sget_simple_extent_npoints(hid_t __pyx_v_space_id) {
+  hssize_t __pyx_v_r;
+  hssize_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  hssize_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Sget_simple_extent_npoints", 0);
+
+  /* "h5py/defs.pyx":1832
+ * cdef hssize_t H5Sget_simple_extent_npoints(hid_t space_id) except *:
+ *     cdef hssize_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Sget_simple_extent_npoints(space_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1832; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1832; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1832; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1832; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1833
+ *     cdef hssize_t r
+ *     with rlock:
+ *         r = _hdf5.H5Sget_simple_extent_npoints(space_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Sget_simple_extent_npoints(__pyx_v_space_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1833; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1834
+ *     with rlock:
+ *         r = _hdf5.H5Sget_simple_extent_npoints(space_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <hssize_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1835
+ *         r = _hdf5.H5Sget_simple_extent_npoints(space_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <hssize_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1835; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1836
+ *         if r<0:
+ *             if set_exception():
+ *                 return <hssize_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((hssize_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1837
+ *             if set_exception():
+ *                 return <hssize_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef H5S_class_t H5Sget_simple_extent_type(hid_t space_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1832
+ * cdef hssize_t H5Sget_simple_extent_npoints(hid_t space_id) except *:
+ *     cdef hssize_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Sget_simple_extent_npoints(space_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Sget_simple_extent_npoints", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1832; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1832; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1832; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1832; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1832; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_206, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1832; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1832; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Sget_simple_extent_npoints", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1839
+ *         return r
+ * 
+ * cdef H5S_class_t H5Sget_simple_extent_type(hid_t space_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef H5S_class_t r
+ *     with rlock:
+ */
+
+static H5S_class_t __pyx_f_4h5py_4defs_H5Sget_simple_extent_type(hid_t __pyx_v_space_id) {
+  H5S_class_t __pyx_v_r;
+  H5S_class_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  H5S_class_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Sget_simple_extent_type", 0);
+
+  /* "h5py/defs.pyx":1841
+ * cdef H5S_class_t H5Sget_simple_extent_type(hid_t space_id) except *:
+ *     cdef H5S_class_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Sget_simple_extent_type(space_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1841; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1841; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1841; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1841; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1842
+ *     cdef H5S_class_t r
+ *     with rlock:
+ *         r = _hdf5.H5Sget_simple_extent_type(space_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Sget_simple_extent_type(__pyx_v_space_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1842; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1843
+ *     with rlock:
+ *         r = _hdf5.H5Sget_simple_extent_type(space_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <H5S_class_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1844
+ *         r = _hdf5.H5Sget_simple_extent_type(space_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <H5S_class_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1844; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1845
+ *         if r<0:
+ *             if set_exception():
+ *                 return <H5S_class_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((H5S_class_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1846
+ *             if set_exception():
+ *                 return <H5S_class_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Sextent_copy(hid_t dest_space_id, hid_t source_space_id ) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1841
+ * cdef H5S_class_t H5Sget_simple_extent_type(hid_t space_id) except *:
+ *     cdef H5S_class_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Sget_simple_extent_type(space_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Sget_simple_extent_type", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1841; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1841; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1841; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1841; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1841; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_207, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1841; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1841; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Sget_simple_extent_type", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1848
+ *         return r
+ * 
+ * cdef herr_t H5Sextent_copy(hid_t dest_space_id, hid_t source_space_id ) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Sextent_copy(hid_t __pyx_v_dest_space_id, hid_t __pyx_v_source_space_id) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Sextent_copy", 0);
+
+  /* "h5py/defs.pyx":1850
+ * cdef herr_t H5Sextent_copy(hid_t dest_space_id, hid_t source_space_id ) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Sextent_copy(dest_space_id, source_space_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1850; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1850; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1850; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1850; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1851
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Sextent_copy(dest_space_id, source_space_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Sextent_copy(__pyx_v_dest_space_id, __pyx_v_source_space_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1851; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1852
+ *     with rlock:
+ *         r = _hdf5.H5Sextent_copy(dest_space_id, source_space_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1853
+ *         r = _hdf5.H5Sextent_copy(dest_space_id, source_space_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1853; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1854
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1855
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Sset_extent_simple(hid_t space_id, int rank, hsize_t *current_size, hsize_t *maximum_size ) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1850
+ * cdef herr_t H5Sextent_copy(hid_t dest_space_id, hid_t source_space_id ) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Sextent_copy(dest_space_id, source_space_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Sextent_copy", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1850; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1850; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1850; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1850; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1850; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_208, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1850; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1850; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Sextent_copy", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1857
+ *         return r
+ * 
+ * cdef herr_t H5Sset_extent_simple(hid_t space_id, int rank, hsize_t *current_size, hsize_t *maximum_size ) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Sset_extent_simple(hid_t __pyx_v_space_id, int __pyx_v_rank, hsize_t *__pyx_v_current_size, hsize_t *__pyx_v_maximum_size) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Sset_extent_simple", 0);
+
+  /* "h5py/defs.pyx":1859
+ * cdef herr_t H5Sset_extent_simple(hid_t space_id, int rank, hsize_t *current_size, hsize_t *maximum_size ) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Sset_extent_simple(space_id, rank, current_size, maximum_size)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1859; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1859; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1859; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1859; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1860
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Sset_extent_simple(space_id, rank, current_size, maximum_size)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Sset_extent_simple(__pyx_v_space_id, __pyx_v_rank, __pyx_v_current_size, __pyx_v_maximum_size); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1860; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1861
+ *     with rlock:
+ *         r = _hdf5.H5Sset_extent_simple(space_id, rank, current_size, maximum_size)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1862
+ *         r = _hdf5.H5Sset_extent_simple(space_id, rank, current_size, maximum_size)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1862; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1863
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1864
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Sset_extent_none(hid_t space_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1859
+ * cdef herr_t H5Sset_extent_simple(hid_t space_id, int rank, hsize_t *current_size, hsize_t *maximum_size ) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Sset_extent_simple(space_id, rank, current_size, maximum_size)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Sset_extent_simple", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1859; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1859; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1859; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1859; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1859; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_209, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1859; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1859; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Sset_extent_simple", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1866
+ *         return r
+ * 
+ * cdef herr_t H5Sset_extent_none(hid_t space_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Sset_extent_none(hid_t __pyx_v_space_id) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Sset_extent_none", 0);
+
+  /* "h5py/defs.pyx":1868
+ * cdef herr_t H5Sset_extent_none(hid_t space_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Sset_extent_none(space_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1868; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1868; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1868; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1868; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1869
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Sset_extent_none(space_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Sset_extent_none(__pyx_v_space_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1869; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1870
+ *     with rlock:
+ *         r = _hdf5.H5Sset_extent_none(space_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1871
+ *         r = _hdf5.H5Sset_extent_none(space_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1871; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1872
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1873
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef H5S_sel_type H5Sget_select_type(hid_t space_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1868
+ * cdef herr_t H5Sset_extent_none(hid_t space_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Sset_extent_none(space_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Sset_extent_none", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1868; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1868; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1868; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1868; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1868; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_210, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1868; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1868; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Sset_extent_none", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1875
+ *         return r
+ * 
+ * cdef H5S_sel_type H5Sget_select_type(hid_t space_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef H5S_sel_type r
+ *     with rlock:
+ */
+
+static H5S_sel_type __pyx_f_4h5py_4defs_H5Sget_select_type(hid_t __pyx_v_space_id) {
+  H5S_sel_type __pyx_v_r;
+  H5S_sel_type __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  H5S_sel_type __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Sget_select_type", 0);
+
+  /* "h5py/defs.pyx":1877
+ * cdef H5S_sel_type H5Sget_select_type(hid_t space_id) except *:
+ *     cdef H5S_sel_type r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Sget_select_type(space_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1877; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1877; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1877; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1877; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1878
+ *     cdef H5S_sel_type r
+ *     with rlock:
+ *         r = _hdf5.H5Sget_select_type(space_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Sget_select_type(__pyx_v_space_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1878; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1879
+ *     with rlock:
+ *         r = _hdf5.H5Sget_select_type(space_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <H5S_sel_type>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1880
+ *         r = _hdf5.H5Sget_select_type(space_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <H5S_sel_type>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1880; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1881
+ *         if r<0:
+ *             if set_exception():
+ *                 return <H5S_sel_type>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((H5S_sel_type)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1882
+ *             if set_exception():
+ *                 return <H5S_sel_type>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef hssize_t H5Sget_select_npoints(hid_t space_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1877
+ * cdef H5S_sel_type H5Sget_select_type(hid_t space_id) except *:
+ *     cdef H5S_sel_type r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Sget_select_type(space_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Sget_select_type", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1877; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1877; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1877; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1877; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1877; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_211, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1877; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1877; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Sget_select_type", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1884
+ *         return r
+ * 
+ * cdef hssize_t H5Sget_select_npoints(hid_t space_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef hssize_t r
+ *     with rlock:
+ */
+
+static hssize_t __pyx_f_4h5py_4defs_H5Sget_select_npoints(hid_t __pyx_v_space_id) {
+  hssize_t __pyx_v_r;
+  hssize_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  hssize_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Sget_select_npoints", 0);
+
+  /* "h5py/defs.pyx":1886
+ * cdef hssize_t H5Sget_select_npoints(hid_t space_id) except *:
+ *     cdef hssize_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Sget_select_npoints(space_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1886; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1886; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1886; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1886; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1887
+ *     cdef hssize_t r
+ *     with rlock:
+ *         r = _hdf5.H5Sget_select_npoints(space_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Sget_select_npoints(__pyx_v_space_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1887; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1888
+ *     with rlock:
+ *         r = _hdf5.H5Sget_select_npoints(space_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <hssize_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1889
+ *         r = _hdf5.H5Sget_select_npoints(space_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <hssize_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1889; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1890
+ *         if r<0:
+ *             if set_exception():
+ *                 return <hssize_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((hssize_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1891
+ *             if set_exception():
+ *                 return <hssize_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Sget_select_bounds(hid_t space_id, hsize_t *start, hsize_t *end) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1886
+ * cdef hssize_t H5Sget_select_npoints(hid_t space_id) except *:
+ *     cdef hssize_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Sget_select_npoints(space_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Sget_select_npoints", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1886; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1886; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1886; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1886; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1886; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_212, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1886; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1886; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Sget_select_npoints", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1893
+ *         return r
+ * 
+ * cdef herr_t H5Sget_select_bounds(hid_t space_id, hsize_t *start, hsize_t *end) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Sget_select_bounds(hid_t __pyx_v_space_id, hsize_t *__pyx_v_start, hsize_t *__pyx_v_end) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Sget_select_bounds", 0);
+
+  /* "h5py/defs.pyx":1895
+ * cdef herr_t H5Sget_select_bounds(hid_t space_id, hsize_t *start, hsize_t *end) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Sget_select_bounds(space_id, start, end)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1895; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1895; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1895; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1895; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1896
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Sget_select_bounds(space_id, start, end)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Sget_select_bounds(__pyx_v_space_id, __pyx_v_start, __pyx_v_end); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1896; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1897
+ *     with rlock:
+ *         r = _hdf5.H5Sget_select_bounds(space_id, start, end)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1898
+ *         r = _hdf5.H5Sget_select_bounds(space_id, start, end)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1898; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1899
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1900
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Sselect_all(hid_t space_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1895
+ * cdef herr_t H5Sget_select_bounds(hid_t space_id, hsize_t *start, hsize_t *end) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Sget_select_bounds(space_id, start, end)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Sget_select_bounds", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1895; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1895; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1895; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1895; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1895; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_213, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1895; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1895; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Sget_select_bounds", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1902
+ *         return r
+ * 
+ * cdef herr_t H5Sselect_all(hid_t space_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Sselect_all(hid_t __pyx_v_space_id) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Sselect_all", 0);
+
+  /* "h5py/defs.pyx":1904
+ * cdef herr_t H5Sselect_all(hid_t space_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Sselect_all(space_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1904; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1904; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1904; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1904; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1905
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Sselect_all(space_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Sselect_all(__pyx_v_space_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1905; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1906
+ *     with rlock:
+ *         r = _hdf5.H5Sselect_all(space_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1907
+ *         r = _hdf5.H5Sselect_all(space_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1907; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1908
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1909
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Sselect_none(hid_t space_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1904
+ * cdef herr_t H5Sselect_all(hid_t space_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Sselect_all(space_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Sselect_all", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1904; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1904; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1904; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1904; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1904; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_214, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1904; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1904; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Sselect_all", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1911
+ *         return r
+ * 
+ * cdef herr_t H5Sselect_none(hid_t space_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Sselect_none(hid_t __pyx_v_space_id) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Sselect_none", 0);
+
+  /* "h5py/defs.pyx":1913
+ * cdef herr_t H5Sselect_none(hid_t space_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Sselect_none(space_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1913; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1913; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1913; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1913; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1914
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Sselect_none(space_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Sselect_none(__pyx_v_space_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1914; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1915
+ *     with rlock:
+ *         r = _hdf5.H5Sselect_none(space_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1916
+ *         r = _hdf5.H5Sselect_none(space_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1916; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1917
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1918
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef htri_t H5Sselect_valid(hid_t space_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1913
+ * cdef herr_t H5Sselect_none(hid_t space_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Sselect_none(space_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Sselect_none", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1913; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1913; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1913; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1913; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1913; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_215, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1913; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1913; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Sselect_none", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1920
+ *         return r
+ * 
+ * cdef htri_t H5Sselect_valid(hid_t space_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef htri_t r
+ *     with rlock:
+ */
+
+static htri_t __pyx_f_4h5py_4defs_H5Sselect_valid(hid_t __pyx_v_space_id) {
+  htri_t __pyx_v_r;
+  htri_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  htri_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Sselect_valid", 0);
+
+  /* "h5py/defs.pyx":1922
+ * cdef htri_t H5Sselect_valid(hid_t space_id) except *:
+ *     cdef htri_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Sselect_valid(space_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1922; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1922; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1922; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1922; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1923
+ *     cdef htri_t r
+ *     with rlock:
+ *         r = _hdf5.H5Sselect_valid(space_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Sselect_valid(__pyx_v_space_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1923; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1924
+ *     with rlock:
+ *         r = _hdf5.H5Sselect_valid(space_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <htri_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1925
+ *         r = _hdf5.H5Sselect_valid(space_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <htri_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1925; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1926
+ *         if r<0:
+ *             if set_exception():
+ *                 return <htri_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((htri_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1927
+ *             if set_exception():
+ *                 return <htri_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef hssize_t H5Sget_select_elem_npoints(hid_t space_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1922
+ * cdef htri_t H5Sselect_valid(hid_t space_id) except *:
+ *     cdef htri_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Sselect_valid(space_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Sselect_valid", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1922; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1922; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1922; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1922; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1922; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_216, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1922; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1922; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Sselect_valid", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1929
+ *         return r
+ * 
+ * cdef hssize_t H5Sget_select_elem_npoints(hid_t space_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef hssize_t r
+ *     with rlock:
+ */
+
+static hssize_t __pyx_f_4h5py_4defs_H5Sget_select_elem_npoints(hid_t __pyx_v_space_id) {
+  hssize_t __pyx_v_r;
+  hssize_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  hssize_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Sget_select_elem_npoints", 0);
+
+  /* "h5py/defs.pyx":1931
+ * cdef hssize_t H5Sget_select_elem_npoints(hid_t space_id) except *:
+ *     cdef hssize_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Sget_select_elem_npoints(space_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1931; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1931; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1931; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1931; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1932
+ *     cdef hssize_t r
+ *     with rlock:
+ *         r = _hdf5.H5Sget_select_elem_npoints(space_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Sget_select_elem_npoints(__pyx_v_space_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1932; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1933
+ *     with rlock:
+ *         r = _hdf5.H5Sget_select_elem_npoints(space_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <hssize_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1934
+ *         r = _hdf5.H5Sget_select_elem_npoints(space_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <hssize_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1934; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1935
+ *         if r<0:
+ *             if set_exception():
+ *                 return <hssize_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((hssize_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1936
+ *             if set_exception():
+ *                 return <hssize_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Sget_select_elem_pointlist(hid_t space_id, hsize_t startpoint,  hsize_t numpoints, hsize_t *buf) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1931
+ * cdef hssize_t H5Sget_select_elem_npoints(hid_t space_id) except *:
+ *     cdef hssize_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Sget_select_elem_npoints(space_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Sget_select_elem_npoints", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1931; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1931; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1931; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1931; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1931; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_217, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1931; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1931; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Sget_select_elem_npoints", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1938
+ *         return r
+ * 
+ * cdef herr_t H5Sget_select_elem_pointlist(hid_t space_id, hsize_t startpoint,  hsize_t numpoints, hsize_t *buf) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Sget_select_elem_pointlist(hid_t __pyx_v_space_id, hsize_t __pyx_v_startpoint, hsize_t __pyx_v_numpoints, hsize_t *__pyx_v_buf) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Sget_select_elem_pointlist", 0);
+
+  /* "h5py/defs.pyx":1940
+ * cdef herr_t H5Sget_select_elem_pointlist(hid_t space_id, hsize_t startpoint,  hsize_t numpoints, hsize_t *buf) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Sget_select_elem_pointlist(space_id, startpoint, numpoints, buf)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1940; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1940; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1940; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1940; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1941
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Sget_select_elem_pointlist(space_id, startpoint, numpoints, buf)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Sget_select_elem_pointlist(__pyx_v_space_id, __pyx_v_startpoint, __pyx_v_numpoints, __pyx_v_buf); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1941; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1942
+ *     with rlock:
+ *         r = _hdf5.H5Sget_select_elem_pointlist(space_id, startpoint, numpoints, buf)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1943
+ *         r = _hdf5.H5Sget_select_elem_pointlist(space_id, startpoint, numpoints, buf)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1943; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1944
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1945
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Sselect_elements(hid_t space_id, H5S_seloper_t op,  size_t num_elements, hsize_t **coord) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1940
+ * cdef herr_t H5Sget_select_elem_pointlist(hid_t space_id, hsize_t startpoint,  hsize_t numpoints, hsize_t *buf) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Sget_select_elem_pointlist(space_id, startpoint, numpoints, buf)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Sget_select_elem_pointlist", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1940; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1940; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1940; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1940; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1940; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_218, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1940; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1940; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Sget_select_elem_pointlist", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1947
+ *         return r
+ * 
+ * cdef herr_t H5Sselect_elements(hid_t space_id, H5S_seloper_t op,  size_t num_elements, hsize_t **coord) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Sselect_elements(hid_t __pyx_v_space_id, H5S_seloper_t __pyx_v_op, size_t __pyx_v_num_elements, hsize_t **__pyx_v_coord) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Sselect_elements", 0);
+
+  /* "h5py/defs.pyx":1949
+ * cdef herr_t H5Sselect_elements(hid_t space_id, H5S_seloper_t op,  size_t num_elements, hsize_t **coord) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Sselect_elements(space_id, op, num_elements, coord)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1949; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1949; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1949; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1949; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1950
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Sselect_elements(space_id, op, num_elements, coord)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Sselect_elements(__pyx_v_space_id, __pyx_v_op, __pyx_v_num_elements, __pyx_v_coord); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1950; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1951
+ *     with rlock:
+ *         r = _hdf5.H5Sselect_elements(space_id, op, num_elements, coord)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1952
+ *         r = _hdf5.H5Sselect_elements(space_id, op, num_elements, coord)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1952; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1953
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1954
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef hssize_t H5Sget_select_hyper_nblocks(hid_t space_id ) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1949
+ * cdef herr_t H5Sselect_elements(hid_t space_id, H5S_seloper_t op,  size_t num_elements, hsize_t **coord) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Sselect_elements(space_id, op, num_elements, coord)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Sselect_elements", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1949; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1949; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1949; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1949; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1949; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_219, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1949; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1949; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Sselect_elements", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1956
+ *         return r
+ * 
+ * cdef hssize_t H5Sget_select_hyper_nblocks(hid_t space_id ) except *:             # <<<<<<<<<<<<<<
+ *     cdef hssize_t r
+ *     with rlock:
+ */
+
+static hssize_t __pyx_f_4h5py_4defs_H5Sget_select_hyper_nblocks(hid_t __pyx_v_space_id) {
+  hssize_t __pyx_v_r;
+  hssize_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  hssize_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Sget_select_hyper_nblocks", 0);
+
+  /* "h5py/defs.pyx":1958
+ * cdef hssize_t H5Sget_select_hyper_nblocks(hid_t space_id ) except *:
+ *     cdef hssize_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Sget_select_hyper_nblocks(space_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1958; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1958; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1958; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1958; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1959
+ *     cdef hssize_t r
+ *     with rlock:
+ *         r = _hdf5.H5Sget_select_hyper_nblocks(space_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Sget_select_hyper_nblocks(__pyx_v_space_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1959; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1960
+ *     with rlock:
+ *         r = _hdf5.H5Sget_select_hyper_nblocks(space_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <hssize_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1961
+ *         r = _hdf5.H5Sget_select_hyper_nblocks(space_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <hssize_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1961; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1962
+ *         if r<0:
+ *             if set_exception():
+ *                 return <hssize_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((hssize_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1963
+ *             if set_exception():
+ *                 return <hssize_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Sget_select_hyper_blocklist(hid_t space_id,  hsize_t startblock, hsize_t numblocks, hsize_t *buf ) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1958
+ * cdef hssize_t H5Sget_select_hyper_nblocks(hid_t space_id ) except *:
+ *     cdef hssize_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Sget_select_hyper_nblocks(space_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Sget_select_hyper_nblocks", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1958; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1958; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1958; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1958; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1958; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_220, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1958; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1958; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Sget_select_hyper_nblocks", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1965
+ *         return r
+ * 
+ * cdef herr_t H5Sget_select_hyper_blocklist(hid_t space_id,  hsize_t startblock, hsize_t numblocks, hsize_t *buf ) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Sget_select_hyper_blocklist(hid_t __pyx_v_space_id, hsize_t __pyx_v_startblock, hsize_t __pyx_v_numblocks, hsize_t *__pyx_v_buf) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Sget_select_hyper_blocklist", 0);
+
+  /* "h5py/defs.pyx":1967
+ * cdef herr_t H5Sget_select_hyper_blocklist(hid_t space_id,  hsize_t startblock, hsize_t numblocks, hsize_t *buf ) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Sget_select_hyper_blocklist(space_id, startblock, numblocks, buf)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1967; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1967; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1967; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1967; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1968
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Sget_select_hyper_blocklist(space_id, startblock, numblocks, buf)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Sget_select_hyper_blocklist(__pyx_v_space_id, __pyx_v_startblock, __pyx_v_numblocks, __pyx_v_buf); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1968; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1969
+ *     with rlock:
+ *         r = _hdf5.H5Sget_select_hyper_blocklist(space_id, startblock, numblocks, buf)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1970
+ *         r = _hdf5.H5Sget_select_hyper_blocklist(space_id, startblock, numblocks, buf)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1970; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1971
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1972
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Sselect_hyperslab(hid_t space_id, H5S_seloper_t op,  hsize_t *start, hsize_t *_stride, hsize_t *count, hsize_t *_block) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1967
+ * cdef herr_t H5Sget_select_hyper_blocklist(hid_t space_id,  hsize_t startblock, hsize_t numblocks, hsize_t *buf ) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Sget_select_hyper_blocklist(space_id, startblock, numblocks, buf)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Sget_select_hyper_blocklist", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1967; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1967; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1967; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1967; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1967; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_221, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1967; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1967; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Sget_select_hyper_blocklist", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1974
+ *         return r
+ * 
+ * cdef herr_t H5Sselect_hyperslab(hid_t space_id, H5S_seloper_t op,  hsize_t *start, hsize_t *_stride, hsize_t *count, hsize_t *_block) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Sselect_hyperslab(hid_t __pyx_v_space_id, H5S_seloper_t __pyx_v_op, hsize_t *__pyx_v_start, hsize_t *__pyx_v__stride, hsize_t *__pyx_v_count, hsize_t *__pyx_v__block) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Sselect_hyperslab", 0);
+
+  /* "h5py/defs.pyx":1976
+ * cdef herr_t H5Sselect_hyperslab(hid_t space_id, H5S_seloper_t op,  hsize_t *start, hsize_t *_stride, hsize_t *count, hsize_t *_block) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Sselect_hyperslab(space_id, op, start, _stride, count, _block)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1976; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1976; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1976; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1976; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1977
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Sselect_hyperslab(space_id, op, start, _stride, count, _block)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Sselect_hyperslab(__pyx_v_space_id, __pyx_v_op, __pyx_v_start, __pyx_v__stride, __pyx_v_count, __pyx_v__block); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1977; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1978
+ *     with rlock:
+ *         r = _hdf5.H5Sselect_hyperslab(space_id, op, start, _stride, count, _block)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1979
+ *         r = _hdf5.H5Sselect_hyperslab(space_id, op, start, _stride, count, _block)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1979; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1980
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1981
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Sencode(hid_t obj_id, void *buf, size_t *nalloc) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1976
+ * cdef herr_t H5Sselect_hyperslab(hid_t space_id, H5S_seloper_t op,  hsize_t *start, hsize_t *_stride, hsize_t *count, hsize_t *_block) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Sselect_hyperslab(space_id, op, start, _stride, count, _block)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Sselect_hyperslab", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1976; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1976; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1976; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1976; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1976; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_222, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1976; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1976; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Sselect_hyperslab", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1983
+ *         return r
+ * 
+ * cdef herr_t H5Sencode(hid_t obj_id, void *buf, size_t *nalloc) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Sencode(hid_t __pyx_v_obj_id, void *__pyx_v_buf, size_t *__pyx_v_nalloc) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Sencode", 0);
+
+  /* "h5py/defs.pyx":1985
+ * cdef herr_t H5Sencode(hid_t obj_id, void *buf, size_t *nalloc) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Sencode(obj_id, buf, nalloc)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1985; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1985; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1985; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1985; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1986
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Sencode(obj_id, buf, nalloc)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Sencode(__pyx_v_obj_id, __pyx_v_buf, __pyx_v_nalloc); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1986; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1987
+ *     with rlock:
+ *         r = _hdf5.H5Sencode(obj_id, buf, nalloc)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1988
+ *         r = _hdf5.H5Sencode(obj_id, buf, nalloc)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1988; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1989
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1990
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef hid_t H5Sdecode(void *buf) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1985
+ * cdef herr_t H5Sencode(hid_t obj_id, void *buf, size_t *nalloc) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Sencode(obj_id, buf, nalloc)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Sencode", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1985; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1985; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1985; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1985; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1985; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_223, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1985; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1985; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Sencode", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":1992
+ *         return r
+ * 
+ * cdef hid_t H5Sdecode(void *buf) except *:             # <<<<<<<<<<<<<<
+ *     cdef hid_t r
+ *     with rlock:
+ */
+
+static hid_t __pyx_f_4h5py_4defs_H5Sdecode(void *__pyx_v_buf) {
+  hid_t __pyx_v_r;
+  hid_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  hid_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Sdecode", 0);
+
+  /* "h5py/defs.pyx":1994
+ * cdef hid_t H5Sdecode(void *buf) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Sdecode(buf)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1994; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1994; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1994; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1994; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":1995
+ *     cdef hid_t r
+ *     with rlock:
+ *         r = _hdf5.H5Sdecode(buf)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Sdecode(__pyx_v_buf); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1995; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":1996
+ *     with rlock:
+ *         r = _hdf5.H5Sdecode(buf)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":1997
+ *         r = _hdf5.H5Sdecode(buf)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <hid_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1997; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":1998
+ *         if r<0:
+ *             if set_exception():
+ *                 return <hid_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((hid_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":1999
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef hid_t H5Tcreate(H5T_class_t type, size_t size) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":1994
+ * cdef hid_t H5Sdecode(void *buf) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Sdecode(buf)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Sdecode", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1994; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1994; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1994; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1994; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1994; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_224, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1994; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1994; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Sdecode", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2001
+ *         return r
+ * 
+ * cdef hid_t H5Tcreate(H5T_class_t type, size_t size) except *:             # <<<<<<<<<<<<<<
+ *     cdef hid_t r
+ *     with rlock:
+ */
+
+static hid_t __pyx_f_4h5py_4defs_H5Tcreate(enum H5T_class_t __pyx_v_type, size_t __pyx_v_size) {
+  hid_t __pyx_v_r;
+  hid_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  hid_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Tcreate", 0);
+
+  /* "h5py/defs.pyx":2003
+ * cdef hid_t H5Tcreate(H5T_class_t type, size_t size) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tcreate(type, size)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2003; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2003; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2003; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2003; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2004
+ *     cdef hid_t r
+ *     with rlock:
+ *         r = _hdf5.H5Tcreate(type, size)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Tcreate(__pyx_v_type, __pyx_v_size); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2004; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2005
+ *     with rlock:
+ *         r = _hdf5.H5Tcreate(type, size)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2006
+ *         r = _hdf5.H5Tcreate(type, size)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <hid_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2006; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2007
+ *         if r<0:
+ *             if set_exception():
+ *                 return <hid_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((hid_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2008
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef hid_t H5Topen(hid_t loc, char* name) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2003
+ * cdef hid_t H5Tcreate(H5T_class_t type, size_t size) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tcreate(type, size)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Tcreate", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2003; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2003; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2003; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2003; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2003; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_225, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2003; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2003; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Tcreate", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2010
+ *         return r
+ * 
+ * cdef hid_t H5Topen(hid_t loc, char* name) except *:             # <<<<<<<<<<<<<<
+ *     cdef hid_t r
+ *     with rlock:
+ */
+
+static hid_t __pyx_f_4h5py_4defs_H5Topen(hid_t __pyx_v_loc, char *__pyx_v_name) {
+  hid_t __pyx_v_r;
+  hid_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  hid_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Topen", 0);
+
+  /* "h5py/defs.pyx":2012
+ * cdef hid_t H5Topen(hid_t loc, char* name) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Topen(loc, name)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2012; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2012; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2012; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2012; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2013
+ *     cdef hid_t r
+ *     with rlock:
+ *         r = _hdf5.H5Topen(loc, name)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Topen(__pyx_v_loc, __pyx_v_name); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2013; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2014
+ *     with rlock:
+ *         r = _hdf5.H5Topen(loc, name)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2015
+ *         r = _hdf5.H5Topen(loc, name)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <hid_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2015; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2016
+ *         if r<0:
+ *             if set_exception():
+ *                 return <hid_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((hid_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2017
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Tcommit(hid_t loc_id, char* name, hid_t type) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2012
+ * cdef hid_t H5Topen(hid_t loc, char* name) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Topen(loc, name)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Topen", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2012; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2012; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2012; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2012; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2012; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_226, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2012; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2012; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Topen", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2019
+ *         return r
+ * 
+ * cdef herr_t H5Tcommit(hid_t loc_id, char* name, hid_t type) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Tcommit(hid_t __pyx_v_loc_id, char *__pyx_v_name, hid_t __pyx_v_type) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Tcommit", 0);
+
+  /* "h5py/defs.pyx":2021
+ * cdef herr_t H5Tcommit(hid_t loc_id, char* name, hid_t type) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tcommit(loc_id, name, type)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2021; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2021; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2021; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2021; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2022
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Tcommit(loc_id, name, type)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Tcommit(__pyx_v_loc_id, __pyx_v_name, __pyx_v_type); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2022; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2023
+ *     with rlock:
+ *         r = _hdf5.H5Tcommit(loc_id, name, type)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2024
+ *         r = _hdf5.H5Tcommit(loc_id, name, type)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2024; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2025
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2026
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef htri_t H5Tcommitted(hid_t type) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2021
+ * cdef herr_t H5Tcommit(hid_t loc_id, char* name, hid_t type) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tcommit(loc_id, name, type)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Tcommit", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2021; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2021; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2021; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2021; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2021; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_227, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2021; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2021; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Tcommit", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2028
+ *         return r
+ * 
+ * cdef htri_t H5Tcommitted(hid_t type) except *:             # <<<<<<<<<<<<<<
+ *     cdef htri_t r
+ *     with rlock:
+ */
+
+static htri_t __pyx_f_4h5py_4defs_H5Tcommitted(hid_t __pyx_v_type) {
+  htri_t __pyx_v_r;
+  htri_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  htri_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Tcommitted", 0);
+
+  /* "h5py/defs.pyx":2030
+ * cdef htri_t H5Tcommitted(hid_t type) except *:
+ *     cdef htri_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tcommitted(type)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2030; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2030; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2030; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2030; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2031
+ *     cdef htri_t r
+ *     with rlock:
+ *         r = _hdf5.H5Tcommitted(type)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Tcommitted(__pyx_v_type); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2031; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2032
+ *     with rlock:
+ *         r = _hdf5.H5Tcommitted(type)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <htri_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2033
+ *         r = _hdf5.H5Tcommitted(type)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <htri_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2033; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2034
+ *         if r<0:
+ *             if set_exception():
+ *                 return <htri_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((htri_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2035
+ *             if set_exception():
+ *                 return <htri_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef hid_t H5Tcopy(hid_t type_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2030
+ * cdef htri_t H5Tcommitted(hid_t type) except *:
+ *     cdef htri_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tcommitted(type)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Tcommitted", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2030; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2030; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2030; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2030; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2030; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_228, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2030; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2030; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Tcommitted", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2037
+ *         return r
+ * 
+ * cdef hid_t H5Tcopy(hid_t type_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef hid_t r
+ *     with rlock:
+ */
+
+static hid_t __pyx_f_4h5py_4defs_H5Tcopy(hid_t __pyx_v_type_id) {
+  hid_t __pyx_v_r;
+  hid_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  hid_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Tcopy", 0);
+
+  /* "h5py/defs.pyx":2039
+ * cdef hid_t H5Tcopy(hid_t type_id) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tcopy(type_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2039; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2039; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2039; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2039; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2040
+ *     cdef hid_t r
+ *     with rlock:
+ *         r = _hdf5.H5Tcopy(type_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Tcopy(__pyx_v_type_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2040; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2041
+ *     with rlock:
+ *         r = _hdf5.H5Tcopy(type_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2042
+ *         r = _hdf5.H5Tcopy(type_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <hid_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2042; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2043
+ *         if r<0:
+ *             if set_exception():
+ *                 return <hid_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((hid_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2044
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef htri_t H5Tequal(hid_t type_id1, hid_t type_id2 ) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2039
+ * cdef hid_t H5Tcopy(hid_t type_id) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tcopy(type_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Tcopy", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2039; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2039; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2039; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2039; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2039; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_229, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2039; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2039; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Tcopy", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2046
+ *         return r
+ * 
+ * cdef htri_t H5Tequal(hid_t type_id1, hid_t type_id2 ) except *:             # <<<<<<<<<<<<<<
+ *     cdef htri_t r
+ *     with rlock:
+ */
+
+static htri_t __pyx_f_4h5py_4defs_H5Tequal(hid_t __pyx_v_type_id1, hid_t __pyx_v_type_id2) {
+  htri_t __pyx_v_r;
+  htri_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  htri_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Tequal", 0);
+
+  /* "h5py/defs.pyx":2048
+ * cdef htri_t H5Tequal(hid_t type_id1, hid_t type_id2 ) except *:
+ *     cdef htri_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tequal(type_id1, type_id2)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2048; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2048; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2048; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2048; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2049
+ *     cdef htri_t r
+ *     with rlock:
+ *         r = _hdf5.H5Tequal(type_id1, type_id2)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Tequal(__pyx_v_type_id1, __pyx_v_type_id2); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2049; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2050
+ *     with rlock:
+ *         r = _hdf5.H5Tequal(type_id1, type_id2)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <htri_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2051
+ *         r = _hdf5.H5Tequal(type_id1, type_id2)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <htri_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2051; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2052
+ *         if r<0:
+ *             if set_exception():
+ *                 return <htri_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((htri_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2053
+ *             if set_exception():
+ *                 return <htri_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Tlock(hid_t type_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2048
+ * cdef htri_t H5Tequal(hid_t type_id1, hid_t type_id2 ) except *:
+ *     cdef htri_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tequal(type_id1, type_id2)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Tequal", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2048; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2048; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2048; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2048; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2048; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_230, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2048; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2048; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Tequal", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2055
+ *         return r
+ * 
+ * cdef herr_t H5Tlock(hid_t type_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Tlock(hid_t __pyx_v_type_id) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Tlock", 0);
+
+  /* "h5py/defs.pyx":2057
+ * cdef herr_t H5Tlock(hid_t type_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tlock(type_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2057; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2057; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2057; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2057; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2058
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Tlock(type_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Tlock(__pyx_v_type_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2058; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2059
+ *     with rlock:
+ *         r = _hdf5.H5Tlock(type_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2060
+ *         r = _hdf5.H5Tlock(type_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2060; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2061
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2062
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef H5T_class_t H5Tget_class(hid_t type_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2057
+ * cdef herr_t H5Tlock(hid_t type_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tlock(type_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Tlock", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2057; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2057; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2057; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2057; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2057; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_231, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2057; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2057; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Tlock", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2064
+ *         return r
+ * 
+ * cdef H5T_class_t H5Tget_class(hid_t type_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef H5T_class_t r
+ *     with rlock:
+ */
+
+static enum H5T_class_t __pyx_f_4h5py_4defs_H5Tget_class(hid_t __pyx_v_type_id) {
+  enum H5T_class_t __pyx_v_r;
+  enum H5T_class_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  enum H5T_class_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Tget_class", 0);
+
+  /* "h5py/defs.pyx":2066
+ * cdef H5T_class_t H5Tget_class(hid_t type_id) except *:
+ *     cdef H5T_class_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tget_class(type_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2066; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2066; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2066; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2066; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2067
+ *     cdef H5T_class_t r
+ *     with rlock:
+ *         r = _hdf5.H5Tget_class(type_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Tget_class(__pyx_v_type_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2067; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2068
+ *     with rlock:
+ *         r = _hdf5.H5Tget_class(type_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <H5T_class_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2069
+ *         r = _hdf5.H5Tget_class(type_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <H5T_class_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2069; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2070
+ *         if r<0:
+ *             if set_exception():
+ *                 return <H5T_class_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((enum H5T_class_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2071
+ *             if set_exception():
+ *                 return <H5T_class_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef size_t H5Tget_size(hid_t type_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2066
+ * cdef H5T_class_t H5Tget_class(hid_t type_id) except *:
+ *     cdef H5T_class_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tget_class(type_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Tget_class", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2066; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2066; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2066; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2066; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2066; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_232, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2066; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2066; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Tget_class", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2073
+ *         return r
+ * 
+ * cdef size_t H5Tget_size(hid_t type_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef size_t r
+ *     with rlock:
+ */
+
+static size_t __pyx_f_4h5py_4defs_H5Tget_size(hid_t __pyx_v_type_id) {
+  size_t __pyx_v_r;
+  size_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  size_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Tget_size", 0);
+
+  /* "h5py/defs.pyx":2075
+ * cdef size_t H5Tget_size(hid_t type_id) except *:
+ *     cdef size_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tget_size(type_id)
+ *         if r==0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2075; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2075; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2075; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2075; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2076
+ *     cdef size_t r
+ *     with rlock:
+ *         r = _hdf5.H5Tget_size(type_id)             # <<<<<<<<<<<<<<
+ *         if r==0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Tget_size(__pyx_v_type_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2076; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2077
+ *     with rlock:
+ *         r = _hdf5.H5Tget_size(type_id)
+ *         if r==0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <size_t>0;
+ */
+          __pyx_t_9 = (__pyx_v_r == 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2078
+ *         r = _hdf5.H5Tget_size(type_id)
+ *         if r==0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <size_t>0;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2078; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2079
+ *         if r==0:
+ *             if set_exception():
+ *                 return <size_t>0;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((size_t)0);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2080
+ *             if set_exception():
+ *                 return <size_t>0;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef hid_t H5Tget_super(hid_t type) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2075
+ * cdef size_t H5Tget_size(hid_t type_id) except *:
+ *     cdef size_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tget_size(type_id)
+ *         if r==0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Tget_size", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2075; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2075; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2075; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2075; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2075; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_233, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2075; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2075; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Tget_size", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2082
+ *         return r
+ * 
+ * cdef hid_t H5Tget_super(hid_t type) except *:             # <<<<<<<<<<<<<<
+ *     cdef hid_t r
+ *     with rlock:
+ */
+
+static hid_t __pyx_f_4h5py_4defs_H5Tget_super(hid_t __pyx_v_type) {
+  hid_t __pyx_v_r;
+  hid_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  hid_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Tget_super", 0);
+
+  /* "h5py/defs.pyx":2084
+ * cdef hid_t H5Tget_super(hid_t type) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tget_super(type)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2084; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2084; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2084; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2084; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2085
+ *     cdef hid_t r
+ *     with rlock:
+ *         r = _hdf5.H5Tget_super(type)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Tget_super(__pyx_v_type); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2085; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2086
+ *     with rlock:
+ *         r = _hdf5.H5Tget_super(type)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2087
+ *         r = _hdf5.H5Tget_super(type)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <hid_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2087; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2088
+ *         if r<0:
+ *             if set_exception():
+ *                 return <hid_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((hid_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2089
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef htri_t H5Tdetect_class(hid_t type_id, H5T_class_t dtype_class) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2084
+ * cdef hid_t H5Tget_super(hid_t type) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tget_super(type)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Tget_super", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2084; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2084; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2084; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2084; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2084; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_234, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2084; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2084; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Tget_super", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2091
+ *         return r
+ * 
+ * cdef htri_t H5Tdetect_class(hid_t type_id, H5T_class_t dtype_class) except *:             # <<<<<<<<<<<<<<
+ *     cdef htri_t r
+ *     with rlock:
+ */
+
+static htri_t __pyx_f_4h5py_4defs_H5Tdetect_class(hid_t __pyx_v_type_id, enum H5T_class_t __pyx_v_dtype_class) {
+  htri_t __pyx_v_r;
+  htri_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  htri_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Tdetect_class", 0);
+
+  /* "h5py/defs.pyx":2093
+ * cdef htri_t H5Tdetect_class(hid_t type_id, H5T_class_t dtype_class) except *:
+ *     cdef htri_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tdetect_class(type_id, dtype_class)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2093; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2093; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2093; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2093; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2094
+ *     cdef htri_t r
+ *     with rlock:
+ *         r = _hdf5.H5Tdetect_class(type_id, dtype_class)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Tdetect_class(__pyx_v_type_id, __pyx_v_dtype_class); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2094; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2095
+ *     with rlock:
+ *         r = _hdf5.H5Tdetect_class(type_id, dtype_class)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <htri_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2096
+ *         r = _hdf5.H5Tdetect_class(type_id, dtype_class)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <htri_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2096; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2097
+ *         if r<0:
+ *             if set_exception():
+ *                 return <htri_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((htri_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2098
+ *             if set_exception():
+ *                 return <htri_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Tclose(hid_t type_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2093
+ * cdef htri_t H5Tdetect_class(hid_t type_id, H5T_class_t dtype_class) except *:
+ *     cdef htri_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tdetect_class(type_id, dtype_class)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Tdetect_class", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2093; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2093; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2093; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2093; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2093; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_235, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2093; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2093; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Tdetect_class", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2100
+ *         return r
+ * 
+ * cdef herr_t H5Tclose(hid_t type_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Tclose(hid_t __pyx_v_type_id) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Tclose", 0);
+
+  /* "h5py/defs.pyx":2102
+ * cdef herr_t H5Tclose(hid_t type_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tclose(type_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2102; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2102; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2103
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Tclose(type_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Tclose(__pyx_v_type_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2103; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2104
+ *     with rlock:
+ *         r = _hdf5.H5Tclose(type_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2105
+ *         r = _hdf5.H5Tclose(type_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2105; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2106
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2107
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef hid_t H5Tget_native_type(hid_t type_id, H5T_direction_t direction) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2102
+ * cdef herr_t H5Tclose(hid_t type_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tclose(type_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Tclose", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2102; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2102; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2102; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2102; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2102; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_236, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Tclose", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2109
+ *         return r
+ * 
+ * cdef hid_t H5Tget_native_type(hid_t type_id, H5T_direction_t direction) except *:             # <<<<<<<<<<<<<<
+ *     cdef hid_t r
+ *     with rlock:
+ */
+
+static hid_t __pyx_f_4h5py_4defs_H5Tget_native_type(hid_t __pyx_v_type_id, enum H5T_direction_t __pyx_v_direction) {
+  hid_t __pyx_v_r;
+  hid_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  hid_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Tget_native_type", 0);
+
+  /* "h5py/defs.pyx":2111
+ * cdef hid_t H5Tget_native_type(hid_t type_id, H5T_direction_t direction) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tget_native_type(type_id, direction)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2111; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2111; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2112
+ *     cdef hid_t r
+ *     with rlock:
+ *         r = _hdf5.H5Tget_native_type(type_id, direction)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Tget_native_type(__pyx_v_type_id, __pyx_v_direction); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2112; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2113
+ *     with rlock:
+ *         r = _hdf5.H5Tget_native_type(type_id, direction)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2114
+ *         r = _hdf5.H5Tget_native_type(type_id, direction)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <hid_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2114; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2115
+ *         if r<0:
+ *             if set_exception():
+ *                 return <hid_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((hid_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2116
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Tconvert(hid_t src_id, hid_t dst_id, size_t nelmts, void *buf, void *background, hid_t plist_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2111
+ * cdef hid_t H5Tget_native_type(hid_t type_id, H5T_direction_t direction) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tget_native_type(type_id, direction)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Tget_native_type", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2111; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2111; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2111; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2111; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2111; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_237, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Tget_native_type", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2118
+ *         return r
+ * 
+ * cdef herr_t H5Tconvert(hid_t src_id, hid_t dst_id, size_t nelmts, void *buf, void *background, hid_t plist_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Tconvert(hid_t __pyx_v_src_id, hid_t __pyx_v_dst_id, size_t __pyx_v_nelmts, void *__pyx_v_buf, void *__pyx_v_background, hid_t __pyx_v_plist_id) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Tconvert", 0);
+
+  /* "h5py/defs.pyx":2120
+ * cdef herr_t H5Tconvert(hid_t src_id, hid_t dst_id, size_t nelmts, void *buf, void *background, hid_t plist_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tconvert(src_id, dst_id, nelmts, buf, background, plist_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2120; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2120; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2120; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2120; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2121
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Tconvert(src_id, dst_id, nelmts, buf, background, plist_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Tconvert(__pyx_v_src_id, __pyx_v_dst_id, __pyx_v_nelmts, __pyx_v_buf, __pyx_v_background, __pyx_v_plist_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2121; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2122
+ *     with rlock:
+ *         r = _hdf5.H5Tconvert(src_id, dst_id, nelmts, buf, background, plist_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2123
+ *         r = _hdf5.H5Tconvert(src_id, dst_id, nelmts, buf, background, plist_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2123; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2124
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2125
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Tset_size(hid_t type_id, size_t size) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2120
+ * cdef herr_t H5Tconvert(hid_t src_id, hid_t dst_id, size_t nelmts, void *buf, void *background, hid_t plist_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tconvert(src_id, dst_id, nelmts, buf, background, plist_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Tconvert", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2120; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2120; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2120; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2120; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2120; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_238, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2120; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2120; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Tconvert", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2127
+ *         return r
+ * 
+ * cdef herr_t H5Tset_size(hid_t type_id, size_t size) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Tset_size(hid_t __pyx_v_type_id, size_t __pyx_v_size) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Tset_size", 0);
+
+  /* "h5py/defs.pyx":2129
+ * cdef herr_t H5Tset_size(hid_t type_id, size_t size) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tset_size(type_id, size)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2129; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2129; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2129; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2129; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2130
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Tset_size(type_id, size)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Tset_size(__pyx_v_type_id, __pyx_v_size); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2130; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2131
+ *     with rlock:
+ *         r = _hdf5.H5Tset_size(type_id, size)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2132
+ *         r = _hdf5.H5Tset_size(type_id, size)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2132; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2133
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2134
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef H5T_order_t H5Tget_order(hid_t type_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2129
+ * cdef herr_t H5Tset_size(hid_t type_id, size_t size) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tset_size(type_id, size)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Tset_size", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2129; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2129; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2129; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2129; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2129; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_239, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2129; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2129; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Tset_size", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2136
+ *         return r
+ * 
+ * cdef H5T_order_t H5Tget_order(hid_t type_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef H5T_order_t r
+ *     with rlock:
+ */
+
+static H5T_order_t __pyx_f_4h5py_4defs_H5Tget_order(hid_t __pyx_v_type_id) {
+  H5T_order_t __pyx_v_r;
+  H5T_order_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  H5T_order_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Tget_order", 0);
+
+  /* "h5py/defs.pyx":2138
+ * cdef H5T_order_t H5Tget_order(hid_t type_id) except *:
+ *     cdef H5T_order_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tget_order(type_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2138; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2138; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2139
+ *     cdef H5T_order_t r
+ *     with rlock:
+ *         r = _hdf5.H5Tget_order(type_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Tget_order(__pyx_v_type_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2139; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2140
+ *     with rlock:
+ *         r = _hdf5.H5Tget_order(type_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <H5T_order_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2141
+ *         r = _hdf5.H5Tget_order(type_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <H5T_order_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2141; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2142
+ *         if r<0:
+ *             if set_exception():
+ *                 return <H5T_order_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((H5T_order_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2143
+ *             if set_exception():
+ *                 return <H5T_order_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Tset_order(hid_t type_id, H5T_order_t order) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2138
+ * cdef H5T_order_t H5Tget_order(hid_t type_id) except *:
+ *     cdef H5T_order_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tget_order(type_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Tget_order", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2138; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2138; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2138; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2138; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2138; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_240, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Tget_order", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2145
+ *         return r
+ * 
+ * cdef herr_t H5Tset_order(hid_t type_id, H5T_order_t order) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Tset_order(hid_t __pyx_v_type_id, H5T_order_t __pyx_v_order) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Tset_order", 0);
+
+  /* "h5py/defs.pyx":2147
+ * cdef herr_t H5Tset_order(hid_t type_id, H5T_order_t order) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tset_order(type_id, order)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2147; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2147; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2147; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2147; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2148
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Tset_order(type_id, order)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Tset_order(__pyx_v_type_id, __pyx_v_order); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2148; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2149
+ *     with rlock:
+ *         r = _hdf5.H5Tset_order(type_id, order)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2150
+ *         r = _hdf5.H5Tset_order(type_id, order)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2150; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2151
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2152
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef hsize_t H5Tget_precision(hid_t type_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2147
+ * cdef herr_t H5Tset_order(hid_t type_id, H5T_order_t order) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tset_order(type_id, order)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Tset_order", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2147; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2147; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2147; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2147; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2147; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_241, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2147; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2147; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Tset_order", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2154
+ *         return r
+ * 
+ * cdef hsize_t H5Tget_precision(hid_t type_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef hsize_t r
+ *     with rlock:
+ */
+
+static hsize_t __pyx_f_4h5py_4defs_H5Tget_precision(hid_t __pyx_v_type_id) {
+  hsize_t __pyx_v_r;
+  hsize_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  hsize_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Tget_precision", 0);
+
+  /* "h5py/defs.pyx":2156
+ * cdef hsize_t H5Tget_precision(hid_t type_id) except *:
+ *     cdef hsize_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tget_precision(type_id)
+ *         if r==0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2156; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2156; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2157
+ *     cdef hsize_t r
+ *     with rlock:
+ *         r = _hdf5.H5Tget_precision(type_id)             # <<<<<<<<<<<<<<
+ *         if r==0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Tget_precision(__pyx_v_type_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2157; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2158
+ *     with rlock:
+ *         r = _hdf5.H5Tget_precision(type_id)
+ *         if r==0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <hsize_t>0;
+ */
+          __pyx_t_9 = (__pyx_v_r == 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2159
+ *         r = _hdf5.H5Tget_precision(type_id)
+ *         if r==0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <hsize_t>0;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2159; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2160
+ *         if r==0:
+ *             if set_exception():
+ *                 return <hsize_t>0;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((hsize_t)0);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2161
+ *             if set_exception():
+ *                 return <hsize_t>0;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Tset_precision(hid_t type_id, size_t prec) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2156
+ * cdef hsize_t H5Tget_precision(hid_t type_id) except *:
+ *     cdef hsize_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tget_precision(type_id)
+ *         if r==0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Tget_precision", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2156; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2156; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2156; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2156; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2156; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_242, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Tget_precision", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2163
+ *         return r
+ * 
+ * cdef herr_t H5Tset_precision(hid_t type_id, size_t prec) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Tset_precision(hid_t __pyx_v_type_id, size_t __pyx_v_prec) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Tset_precision", 0);
+
+  /* "h5py/defs.pyx":2165
+ * cdef herr_t H5Tset_precision(hid_t type_id, size_t prec) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tset_precision(type_id, prec)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2165; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2165; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2165; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2165; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2166
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Tset_precision(type_id, prec)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Tset_precision(__pyx_v_type_id, __pyx_v_prec); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2166; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2167
+ *     with rlock:
+ *         r = _hdf5.H5Tset_precision(type_id, prec)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2168
+ *         r = _hdf5.H5Tset_precision(type_id, prec)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2168; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2169
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2170
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef int H5Tget_offset(hid_t type_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2165
+ * cdef herr_t H5Tset_precision(hid_t type_id, size_t prec) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tset_precision(type_id, prec)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Tset_precision", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2165; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2165; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2165; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2165; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2165; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_243, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2165; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2165; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Tset_precision", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2172
+ *         return r
+ * 
+ * cdef int H5Tget_offset(hid_t type_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef int r
+ *     with rlock:
+ */
+
+static int __pyx_f_4h5py_4defs_H5Tget_offset(hid_t __pyx_v_type_id) {
+  int __pyx_v_r;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  int __pyx_t_8;
+  int __pyx_t_9;
+  PyObject *__pyx_t_10 = NULL;
+  PyObject *__pyx_t_11 = NULL;
+  int __pyx_t_12;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Tget_offset", 0);
+
+  /* "h5py/defs.pyx":2174
+ * cdef int H5Tget_offset(hid_t type_id) except *:
+ *     cdef int r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tget_offset(type_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2174; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2174; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2175
+ *     cdef int r
+ *     with rlock:
+ *         r = _hdf5.H5Tget_offset(type_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Tget_offset(__pyx_v_type_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2175; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2176
+ *     with rlock:
+ *         r = _hdf5.H5Tget_offset(type_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <int>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2177
+ *         r = _hdf5.H5Tget_offset(type_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <int>-1;
+ *         return r
+ */
+            __pyx_t_8 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2177; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_8) {
+
+              /* "h5py/defs.pyx":2178
+ *         if r<0:
+ *             if set_exception():
+ *                 return <int>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((int)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2179
+ *             if set_exception():
+ *                 return <int>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Tset_offset(hid_t type_id, size_t offset) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2174
+ * cdef int H5Tget_offset(hid_t type_id) except *:
+ *     cdef int r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tget_offset(type_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Tget_offset", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2174; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_10 = PyTuple_New(3); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2174; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_10);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_10, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_11 = PyObject_Call(__pyx_t_2, __pyx_t_10, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2174; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_11);
+          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2174; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_12 = (!__pyx_t_9);
+          if (__pyx_t_12) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2174; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_10)); __pyx_t_10 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_244, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_10);
+  __Pyx_AddTraceback("h5py.defs.H5Tget_offset", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2181
+ *         return r
+ * 
+ * cdef herr_t H5Tset_offset(hid_t type_id, size_t offset) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Tset_offset(hid_t __pyx_v_type_id, size_t __pyx_v_offset) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Tset_offset", 0);
+
+  /* "h5py/defs.pyx":2183
+ * cdef herr_t H5Tset_offset(hid_t type_id, size_t offset) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tset_offset(type_id, offset)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2183; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2183; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2183; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2183; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2184
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Tset_offset(type_id, offset)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Tset_offset(__pyx_v_type_id, __pyx_v_offset); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2184; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2185
+ *     with rlock:
+ *         r = _hdf5.H5Tset_offset(type_id, offset)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2186
+ *         r = _hdf5.H5Tset_offset(type_id, offset)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2186; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2187
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2188
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Tget_pad(hid_t type_id, H5T_pad_t * lsb, H5T_pad_t * msb ) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2183
+ * cdef herr_t H5Tset_offset(hid_t type_id, size_t offset) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tset_offset(type_id, offset)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Tset_offset", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2183; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2183; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2183; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2183; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2183; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_245, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2183; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2183; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Tset_offset", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2190
+ *         return r
+ * 
+ * cdef herr_t H5Tget_pad(hid_t type_id, H5T_pad_t * lsb, H5T_pad_t * msb ) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Tget_pad(hid_t __pyx_v_type_id, H5T_pad_t *__pyx_v_lsb, H5T_pad_t *__pyx_v_msb) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Tget_pad", 0);
+
+  /* "h5py/defs.pyx":2192
+ * cdef herr_t H5Tget_pad(hid_t type_id, H5T_pad_t * lsb, H5T_pad_t * msb ) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tget_pad(type_id, lsb, msb)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2192; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2192; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2193
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Tget_pad(type_id, lsb, msb)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Tget_pad(__pyx_v_type_id, __pyx_v_lsb, __pyx_v_msb); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2193; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2194
+ *     with rlock:
+ *         r = _hdf5.H5Tget_pad(type_id, lsb, msb)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2195
+ *         r = _hdf5.H5Tget_pad(type_id, lsb, msb)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2195; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2196
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2197
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Tset_pad(hid_t type_id, H5T_pad_t lsb, H5T_pad_t msb ) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2192
+ * cdef herr_t H5Tget_pad(hid_t type_id, H5T_pad_t * lsb, H5T_pad_t * msb ) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tget_pad(type_id, lsb, msb)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Tget_pad", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2192; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2192; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2192; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2192; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2192; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_246, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Tget_pad", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2199
+ *         return r
+ * 
+ * cdef herr_t H5Tset_pad(hid_t type_id, H5T_pad_t lsb, H5T_pad_t msb ) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Tset_pad(hid_t __pyx_v_type_id, H5T_pad_t __pyx_v_lsb, H5T_pad_t __pyx_v_msb) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Tset_pad", 0);
+
+  /* "h5py/defs.pyx":2201
+ * cdef herr_t H5Tset_pad(hid_t type_id, H5T_pad_t lsb, H5T_pad_t msb ) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tset_pad(type_id, lsb, msb)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2201; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2201; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2201; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2201; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2202
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Tset_pad(type_id, lsb, msb)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Tset_pad(__pyx_v_type_id, __pyx_v_lsb, __pyx_v_msb); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2202; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2203
+ *     with rlock:
+ *         r = _hdf5.H5Tset_pad(type_id, lsb, msb)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2204
+ *         r = _hdf5.H5Tset_pad(type_id, lsb, msb)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2204; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2205
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2206
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef H5T_sign_t H5Tget_sign(hid_t type_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2201
+ * cdef herr_t H5Tset_pad(hid_t type_id, H5T_pad_t lsb, H5T_pad_t msb ) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tset_pad(type_id, lsb, msb)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Tset_pad", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2201; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2201; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2201; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2201; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2201; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_247, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2201; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2201; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Tset_pad", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2208
+ *         return r
+ * 
+ * cdef H5T_sign_t H5Tget_sign(hid_t type_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef H5T_sign_t r
+ *     with rlock:
+ */
+
+static H5T_sign_t __pyx_f_4h5py_4defs_H5Tget_sign(hid_t __pyx_v_type_id) {
+  H5T_sign_t __pyx_v_r;
+  H5T_sign_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  H5T_sign_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Tget_sign", 0);
+
+  /* "h5py/defs.pyx":2210
+ * cdef H5T_sign_t H5Tget_sign(hid_t type_id) except *:
+ *     cdef H5T_sign_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tget_sign(type_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2210; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2210; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2211
+ *     cdef H5T_sign_t r
+ *     with rlock:
+ *         r = _hdf5.H5Tget_sign(type_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Tget_sign(__pyx_v_type_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2211; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2212
+ *     with rlock:
+ *         r = _hdf5.H5Tget_sign(type_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <H5T_sign_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2213
+ *         r = _hdf5.H5Tget_sign(type_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <H5T_sign_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2213; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2214
+ *         if r<0:
+ *             if set_exception():
+ *                 return <H5T_sign_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((H5T_sign_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2215
+ *             if set_exception():
+ *                 return <H5T_sign_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Tset_sign(hid_t type_id, H5T_sign_t sign) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2210
+ * cdef H5T_sign_t H5Tget_sign(hid_t type_id) except *:
+ *     cdef H5T_sign_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tget_sign(type_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Tget_sign", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2210; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2210; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2210; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2210; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2210; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_248, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Tget_sign", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2217
+ *         return r
+ * 
+ * cdef herr_t H5Tset_sign(hid_t type_id, H5T_sign_t sign) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Tset_sign(hid_t __pyx_v_type_id, H5T_sign_t __pyx_v_sign) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Tset_sign", 0);
+
+  /* "h5py/defs.pyx":2219
+ * cdef herr_t H5Tset_sign(hid_t type_id, H5T_sign_t sign) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tset_sign(type_id, sign)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2219; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2219; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2219; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2219; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2220
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Tset_sign(type_id, sign)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Tset_sign(__pyx_v_type_id, __pyx_v_sign); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2220; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2221
+ *     with rlock:
+ *         r = _hdf5.H5Tset_sign(type_id, sign)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2222
+ *         r = _hdf5.H5Tset_sign(type_id, sign)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2222; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2223
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2224
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Tget_fields(hid_t type_id, size_t *spos, size_t *epos, size_t *esize, size_t *mpos, size_t *msize ) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2219
+ * cdef herr_t H5Tset_sign(hid_t type_id, H5T_sign_t sign) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tset_sign(type_id, sign)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Tset_sign", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2219; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2219; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2219; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2219; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2219; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_249, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2219; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2219; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Tset_sign", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2226
+ *         return r
+ * 
+ * cdef herr_t H5Tget_fields(hid_t type_id, size_t *spos, size_t *epos, size_t *esize, size_t *mpos, size_t *msize ) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Tget_fields(hid_t __pyx_v_type_id, size_t *__pyx_v_spos, size_t *__pyx_v_epos, size_t *__pyx_v_esize, size_t *__pyx_v_mpos, size_t *__pyx_v_msize) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Tget_fields", 0);
+
+  /* "h5py/defs.pyx":2228
+ * cdef herr_t H5Tget_fields(hid_t type_id, size_t *spos, size_t *epos, size_t *esize, size_t *mpos, size_t *msize ) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tget_fields(type_id, spos, epos, esize, mpos, msize)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2228; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2228; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2228; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2228; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2229
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Tget_fields(type_id, spos, epos, esize, mpos, msize)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Tget_fields(__pyx_v_type_id, __pyx_v_spos, __pyx_v_epos, __pyx_v_esize, __pyx_v_mpos, __pyx_v_msize); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2229; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2230
+ *     with rlock:
+ *         r = _hdf5.H5Tget_fields(type_id, spos, epos, esize, mpos, msize)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2231
+ *         r = _hdf5.H5Tget_fields(type_id, spos, epos, esize, mpos, msize)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2231; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2232
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2233
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Tset_fields(hid_t type_id, size_t spos, size_t epos, size_t esize, size_t mpos, size_t msize ) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2228
+ * cdef herr_t H5Tget_fields(hid_t type_id, size_t *spos, size_t *epos, size_t *esize, size_t *mpos, size_t *msize ) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tget_fields(type_id, spos, epos, esize, mpos, msize)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Tget_fields", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2228; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2228; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2228; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2228; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2228; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_250, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2228; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2228; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Tget_fields", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2235
+ *         return r
+ * 
+ * cdef herr_t H5Tset_fields(hid_t type_id, size_t spos, size_t epos, size_t esize, size_t mpos, size_t msize ) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Tset_fields(hid_t __pyx_v_type_id, size_t __pyx_v_spos, size_t __pyx_v_epos, size_t __pyx_v_esize, size_t __pyx_v_mpos, size_t __pyx_v_msize) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Tset_fields", 0);
+
+  /* "h5py/defs.pyx":2237
+ * cdef herr_t H5Tset_fields(hid_t type_id, size_t spos, size_t epos, size_t esize, size_t mpos, size_t msize ) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tset_fields(type_id, spos, epos, esize, mpos, msize)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2237; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2237; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2237; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2237; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2238
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Tset_fields(type_id, spos, epos, esize, mpos, msize)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Tset_fields(__pyx_v_type_id, __pyx_v_spos, __pyx_v_epos, __pyx_v_esize, __pyx_v_mpos, __pyx_v_msize); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2238; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2239
+ *     with rlock:
+ *         r = _hdf5.H5Tset_fields(type_id, spos, epos, esize, mpos, msize)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2240
+ *         r = _hdf5.H5Tset_fields(type_id, spos, epos, esize, mpos, msize)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2240; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2241
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2242
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef size_t H5Tget_ebias(hid_t type_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2237
+ * cdef herr_t H5Tset_fields(hid_t type_id, size_t spos, size_t epos, size_t esize, size_t mpos, size_t msize ) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tset_fields(type_id, spos, epos, esize, mpos, msize)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Tset_fields", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2237; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2237; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2237; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2237; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2237; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_251, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2237; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2237; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Tset_fields", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2244
+ *         return r
+ * 
+ * cdef size_t H5Tget_ebias(hid_t type_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef size_t r
+ *     with rlock:
+ */
+
+static size_t __pyx_f_4h5py_4defs_H5Tget_ebias(hid_t __pyx_v_type_id) {
+  size_t __pyx_v_r;
+  size_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  size_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Tget_ebias", 0);
+
+  /* "h5py/defs.pyx":2246
+ * cdef size_t H5Tget_ebias(hid_t type_id) except *:
+ *     cdef size_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tget_ebias(type_id)
+ *         if r==0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2246; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2246; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2246; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2246; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2247
+ *     cdef size_t r
+ *     with rlock:
+ *         r = _hdf5.H5Tget_ebias(type_id)             # <<<<<<<<<<<<<<
+ *         if r==0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Tget_ebias(__pyx_v_type_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2247; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2248
+ *     with rlock:
+ *         r = _hdf5.H5Tget_ebias(type_id)
+ *         if r==0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <size_t>0;
+ */
+          __pyx_t_9 = (__pyx_v_r == 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2249
+ *         r = _hdf5.H5Tget_ebias(type_id)
+ *         if r==0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <size_t>0;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2249; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2250
+ *         if r==0:
+ *             if set_exception():
+ *                 return <size_t>0;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((size_t)0);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2251
+ *             if set_exception():
+ *                 return <size_t>0;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Tset_ebias(hid_t type_id, size_t ebias) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2246
+ * cdef size_t H5Tget_ebias(hid_t type_id) except *:
+ *     cdef size_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tget_ebias(type_id)
+ *         if r==0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Tget_ebias", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2246; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2246; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2246; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2246; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2246; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_252, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2246; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2246; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Tget_ebias", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2253
+ *         return r
+ * 
+ * cdef herr_t H5Tset_ebias(hid_t type_id, size_t ebias) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Tset_ebias(hid_t __pyx_v_type_id, size_t __pyx_v_ebias) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Tset_ebias", 0);
+
+  /* "h5py/defs.pyx":2255
+ * cdef herr_t H5Tset_ebias(hid_t type_id, size_t ebias) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tset_ebias(type_id, ebias)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2255; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2255; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2255; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2255; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2256
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Tset_ebias(type_id, ebias)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Tset_ebias(__pyx_v_type_id, __pyx_v_ebias); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2256; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2257
+ *     with rlock:
+ *         r = _hdf5.H5Tset_ebias(type_id, ebias)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2258
+ *         r = _hdf5.H5Tset_ebias(type_id, ebias)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2258; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2259
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2260
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef H5T_norm_t H5Tget_norm(hid_t type_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2255
+ * cdef herr_t H5Tset_ebias(hid_t type_id, size_t ebias) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tset_ebias(type_id, ebias)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Tset_ebias", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2255; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2255; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2255; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2255; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2255; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_253, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2255; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2255; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Tset_ebias", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2262
+ *         return r
+ * 
+ * cdef H5T_norm_t H5Tget_norm(hid_t type_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef H5T_norm_t r
+ *     with rlock:
+ */
+
+static H5T_norm_t __pyx_f_4h5py_4defs_H5Tget_norm(hid_t __pyx_v_type_id) {
+  H5T_norm_t __pyx_v_r;
+  H5T_norm_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  H5T_norm_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Tget_norm", 0);
+
+  /* "h5py/defs.pyx":2264
+ * cdef H5T_norm_t H5Tget_norm(hid_t type_id) except *:
+ *     cdef H5T_norm_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tget_norm(type_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2264; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2264; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2264; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2264; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2265
+ *     cdef H5T_norm_t r
+ *     with rlock:
+ *         r = _hdf5.H5Tget_norm(type_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Tget_norm(__pyx_v_type_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2265; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2266
+ *     with rlock:
+ *         r = _hdf5.H5Tget_norm(type_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <H5T_norm_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2267
+ *         r = _hdf5.H5Tget_norm(type_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <H5T_norm_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2267; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2268
+ *         if r<0:
+ *             if set_exception():
+ *                 return <H5T_norm_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((H5T_norm_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2269
+ *             if set_exception():
+ *                 return <H5T_norm_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Tset_norm(hid_t type_id, H5T_norm_t norm) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2264
+ * cdef H5T_norm_t H5Tget_norm(hid_t type_id) except *:
+ *     cdef H5T_norm_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tget_norm(type_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Tget_norm", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2264; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2264; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2264; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2264; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2264; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_254, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2264; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2264; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Tget_norm", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2271
+ *         return r
+ * 
+ * cdef herr_t H5Tset_norm(hid_t type_id, H5T_norm_t norm) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Tset_norm(hid_t __pyx_v_type_id, H5T_norm_t __pyx_v_norm) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Tset_norm", 0);
+
+  /* "h5py/defs.pyx":2273
+ * cdef herr_t H5Tset_norm(hid_t type_id, H5T_norm_t norm) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tset_norm(type_id, norm)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2273; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2273; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2273; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2273; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2274
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Tset_norm(type_id, norm)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Tset_norm(__pyx_v_type_id, __pyx_v_norm); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2274; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2275
+ *     with rlock:
+ *         r = _hdf5.H5Tset_norm(type_id, norm)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2276
+ *         r = _hdf5.H5Tset_norm(type_id, norm)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2276; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2277
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2278
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef H5T_pad_t H5Tget_inpad(hid_t type_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2273
+ * cdef herr_t H5Tset_norm(hid_t type_id, H5T_norm_t norm) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tset_norm(type_id, norm)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Tset_norm", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2273; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2273; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2273; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2273; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2273; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_255, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2273; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2273; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Tset_norm", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2280
+ *         return r
+ * 
+ * cdef H5T_pad_t H5Tget_inpad(hid_t type_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef H5T_pad_t r
+ *     with rlock:
+ */
+
+static H5T_pad_t __pyx_f_4h5py_4defs_H5Tget_inpad(hid_t __pyx_v_type_id) {
+  H5T_pad_t __pyx_v_r;
+  H5T_pad_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  H5T_pad_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Tget_inpad", 0);
+
+  /* "h5py/defs.pyx":2282
+ * cdef H5T_pad_t H5Tget_inpad(hid_t type_id) except *:
+ *     cdef H5T_pad_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tget_inpad(type_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2282; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2282; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2282; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2282; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2283
+ *     cdef H5T_pad_t r
+ *     with rlock:
+ *         r = _hdf5.H5Tget_inpad(type_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Tget_inpad(__pyx_v_type_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2283; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2284
+ *     with rlock:
+ *         r = _hdf5.H5Tget_inpad(type_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <H5T_pad_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2285
+ *         r = _hdf5.H5Tget_inpad(type_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <H5T_pad_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2285; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2286
+ *         if r<0:
+ *             if set_exception():
+ *                 return <H5T_pad_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((H5T_pad_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2287
+ *             if set_exception():
+ *                 return <H5T_pad_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Tset_inpad(hid_t type_id, H5T_pad_t inpad) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2282
+ * cdef H5T_pad_t H5Tget_inpad(hid_t type_id) except *:
+ *     cdef H5T_pad_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tget_inpad(type_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Tget_inpad", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2282; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2282; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2282; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2282; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2282; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_256, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2282; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2282; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Tget_inpad", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2289
+ *         return r
+ * 
+ * cdef herr_t H5Tset_inpad(hid_t type_id, H5T_pad_t inpad) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Tset_inpad(hid_t __pyx_v_type_id, H5T_pad_t __pyx_v_inpad) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Tset_inpad", 0);
+
+  /* "h5py/defs.pyx":2291
+ * cdef herr_t H5Tset_inpad(hid_t type_id, H5T_pad_t inpad) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tset_inpad(type_id, inpad)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2291; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2291; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2291; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2291; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2292
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Tset_inpad(type_id, inpad)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Tset_inpad(__pyx_v_type_id, __pyx_v_inpad); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2292; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2293
+ *     with rlock:
+ *         r = _hdf5.H5Tset_inpad(type_id, inpad)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2294
+ *         r = _hdf5.H5Tset_inpad(type_id, inpad)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2294; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2295
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2296
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef H5T_cset_t H5Tget_cset(hid_t type_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2291
+ * cdef herr_t H5Tset_inpad(hid_t type_id, H5T_pad_t inpad) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tset_inpad(type_id, inpad)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Tset_inpad", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2291; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2291; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2291; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2291; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2291; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_257, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2291; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2291; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Tset_inpad", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2298
+ *         return r
+ * 
+ * cdef H5T_cset_t H5Tget_cset(hid_t type_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef H5T_cset_t r
+ *     with rlock:
+ */
+
+static H5T_cset_t __pyx_f_4h5py_4defs_H5Tget_cset(hid_t __pyx_v_type_id) {
+  H5T_cset_t __pyx_v_r;
+  H5T_cset_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  H5T_cset_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Tget_cset", 0);
+
+  /* "h5py/defs.pyx":2300
+ * cdef H5T_cset_t H5Tget_cset(hid_t type_id) except *:
+ *     cdef H5T_cset_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tget_cset(type_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2300; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2300; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2300; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2300; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2301
+ *     cdef H5T_cset_t r
+ *     with rlock:
+ *         r = _hdf5.H5Tget_cset(type_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Tget_cset(__pyx_v_type_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2301; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2302
+ *     with rlock:
+ *         r = _hdf5.H5Tget_cset(type_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <H5T_cset_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2303
+ *         r = _hdf5.H5Tget_cset(type_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <H5T_cset_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2303; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2304
+ *         if r<0:
+ *             if set_exception():
+ *                 return <H5T_cset_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((H5T_cset_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2305
+ *             if set_exception():
+ *                 return <H5T_cset_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Tset_cset(hid_t type_id, H5T_cset_t cset) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2300
+ * cdef H5T_cset_t H5Tget_cset(hid_t type_id) except *:
+ *     cdef H5T_cset_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tget_cset(type_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Tget_cset", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2300; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2300; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2300; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2300; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2300; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_258, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2300; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2300; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Tget_cset", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2307
+ *         return r
+ * 
+ * cdef herr_t H5Tset_cset(hid_t type_id, H5T_cset_t cset) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Tset_cset(hid_t __pyx_v_type_id, H5T_cset_t __pyx_v_cset) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Tset_cset", 0);
+
+  /* "h5py/defs.pyx":2309
+ * cdef herr_t H5Tset_cset(hid_t type_id, H5T_cset_t cset) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tset_cset(type_id, cset)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2309; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2309; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2309; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2309; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2310
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Tset_cset(type_id, cset)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Tset_cset(__pyx_v_type_id, __pyx_v_cset); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2310; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2311
+ *     with rlock:
+ *         r = _hdf5.H5Tset_cset(type_id, cset)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2312
+ *         r = _hdf5.H5Tset_cset(type_id, cset)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2312; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2313
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2314
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef H5T_str_t H5Tget_strpad(hid_t type_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2309
+ * cdef herr_t H5Tset_cset(hid_t type_id, H5T_cset_t cset) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tset_cset(type_id, cset)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Tset_cset", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2309; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2309; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2309; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2309; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2309; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_259, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2309; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2309; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Tset_cset", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2316
+ *         return r
+ * 
+ * cdef H5T_str_t H5Tget_strpad(hid_t type_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef H5T_str_t r
+ *     with rlock:
+ */
+
+static H5T_str_t __pyx_f_4h5py_4defs_H5Tget_strpad(hid_t __pyx_v_type_id) {
+  H5T_str_t __pyx_v_r;
+  H5T_str_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  H5T_str_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Tget_strpad", 0);
+
+  /* "h5py/defs.pyx":2318
+ * cdef H5T_str_t H5Tget_strpad(hid_t type_id) except *:
+ *     cdef H5T_str_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tget_strpad(type_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2318; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2318; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2318; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2318; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2319
+ *     cdef H5T_str_t r
+ *     with rlock:
+ *         r = _hdf5.H5Tget_strpad(type_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Tget_strpad(__pyx_v_type_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2319; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2320
+ *     with rlock:
+ *         r = _hdf5.H5Tget_strpad(type_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <H5T_str_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2321
+ *         r = _hdf5.H5Tget_strpad(type_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <H5T_str_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2321; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2322
+ *         if r<0:
+ *             if set_exception():
+ *                 return <H5T_str_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((H5T_str_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2323
+ *             if set_exception():
+ *                 return <H5T_str_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Tset_strpad(hid_t type_id, H5T_str_t strpad) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2318
+ * cdef H5T_str_t H5Tget_strpad(hid_t type_id) except *:
+ *     cdef H5T_str_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tget_strpad(type_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Tget_strpad", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2318; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2318; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2318; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2318; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2318; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_260, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2318; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2318; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Tget_strpad", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2325
+ *         return r
+ * 
+ * cdef herr_t H5Tset_strpad(hid_t type_id, H5T_str_t strpad) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Tset_strpad(hid_t __pyx_v_type_id, H5T_str_t __pyx_v_strpad) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Tset_strpad", 0);
+
+  /* "h5py/defs.pyx":2327
+ * cdef herr_t H5Tset_strpad(hid_t type_id, H5T_str_t strpad) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tset_strpad(type_id, strpad)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2327; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2327; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2327; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2327; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2328
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Tset_strpad(type_id, strpad)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Tset_strpad(__pyx_v_type_id, __pyx_v_strpad); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2328; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2329
+ *     with rlock:
+ *         r = _hdf5.H5Tset_strpad(type_id, strpad)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2330
+ *         r = _hdf5.H5Tset_strpad(type_id, strpad)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2330; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2331
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2332
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef hid_t H5Tvlen_create(hid_t base_type_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2327
+ * cdef herr_t H5Tset_strpad(hid_t type_id, H5T_str_t strpad) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tset_strpad(type_id, strpad)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Tset_strpad", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2327; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2327; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2327; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2327; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2327; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_261, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2327; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2327; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Tset_strpad", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2334
+ *         return r
+ * 
+ * cdef hid_t H5Tvlen_create(hid_t base_type_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef hid_t r
+ *     with rlock:
+ */
+
+static hid_t __pyx_f_4h5py_4defs_H5Tvlen_create(hid_t __pyx_v_base_type_id) {
+  hid_t __pyx_v_r;
+  hid_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  hid_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Tvlen_create", 0);
+
+  /* "h5py/defs.pyx":2336
+ * cdef hid_t H5Tvlen_create(hid_t base_type_id) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tvlen_create(base_type_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2336; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2336; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2336; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2336; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2337
+ *     cdef hid_t r
+ *     with rlock:
+ *         r = _hdf5.H5Tvlen_create(base_type_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Tvlen_create(__pyx_v_base_type_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2337; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2338
+ *     with rlock:
+ *         r = _hdf5.H5Tvlen_create(base_type_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2339
+ *         r = _hdf5.H5Tvlen_create(base_type_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <hid_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2339; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2340
+ *         if r<0:
+ *             if set_exception():
+ *                 return <hid_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((hid_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2341
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef htri_t H5Tis_variable_str(hid_t dtype_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2336
+ * cdef hid_t H5Tvlen_create(hid_t base_type_id) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tvlen_create(base_type_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Tvlen_create", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2336; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2336; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2336; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2336; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2336; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_262, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2336; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2336; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Tvlen_create", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2343
+ *         return r
+ * 
+ * cdef htri_t H5Tis_variable_str(hid_t dtype_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef htri_t r
+ *     with rlock:
+ */
+
+static htri_t __pyx_f_4h5py_4defs_H5Tis_variable_str(hid_t __pyx_v_dtype_id) {
+  htri_t __pyx_v_r;
+  htri_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  htri_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Tis_variable_str", 0);
+
+  /* "h5py/defs.pyx":2345
+ * cdef htri_t H5Tis_variable_str(hid_t dtype_id) except *:
+ *     cdef htri_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tis_variable_str(dtype_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2345; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2345; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2345; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2345; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2346
+ *     cdef htri_t r
+ *     with rlock:
+ *         r = _hdf5.H5Tis_variable_str(dtype_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Tis_variable_str(__pyx_v_dtype_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2346; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2347
+ *     with rlock:
+ *         r = _hdf5.H5Tis_variable_str(dtype_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <htri_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2348
+ *         r = _hdf5.H5Tis_variable_str(dtype_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <htri_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2348; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2349
+ *         if r<0:
+ *             if set_exception():
+ *                 return <htri_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((htri_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2350
+ *             if set_exception():
+ *                 return <htri_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef int H5Tget_nmembers(hid_t type_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2345
+ * cdef htri_t H5Tis_variable_str(hid_t dtype_id) except *:
+ *     cdef htri_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tis_variable_str(dtype_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Tis_variable_str", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2345; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2345; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2345; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2345; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2345; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_263, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2345; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2345; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Tis_variable_str", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2352
+ *         return r
+ * 
+ * cdef int H5Tget_nmembers(hid_t type_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef int r
+ *     with rlock:
+ */
+
+static int __pyx_f_4h5py_4defs_H5Tget_nmembers(hid_t __pyx_v_type_id) {
+  int __pyx_v_r;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  int __pyx_t_8;
+  int __pyx_t_9;
+  PyObject *__pyx_t_10 = NULL;
+  PyObject *__pyx_t_11 = NULL;
+  int __pyx_t_12;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Tget_nmembers", 0);
+
+  /* "h5py/defs.pyx":2354
+ * cdef int H5Tget_nmembers(hid_t type_id) except *:
+ *     cdef int r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tget_nmembers(type_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2354; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2354; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2354; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2354; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2355
+ *     cdef int r
+ *     with rlock:
+ *         r = _hdf5.H5Tget_nmembers(type_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Tget_nmembers(__pyx_v_type_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2355; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2356
+ *     with rlock:
+ *         r = _hdf5.H5Tget_nmembers(type_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <int>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2357
+ *         r = _hdf5.H5Tget_nmembers(type_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <int>-1;
+ *         return r
+ */
+            __pyx_t_8 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2357; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_8) {
+
+              /* "h5py/defs.pyx":2358
+ *         if r<0:
+ *             if set_exception():
+ *                 return <int>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((int)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2359
+ *             if set_exception():
+ *                 return <int>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef H5T_class_t H5Tget_member_class(hid_t type_id, int member_no) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2354
+ * cdef int H5Tget_nmembers(hid_t type_id) except *:
+ *     cdef int r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tget_nmembers(type_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Tget_nmembers", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2354; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_10 = PyTuple_New(3); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2354; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_10);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_10, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_11 = PyObject_Call(__pyx_t_2, __pyx_t_10, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2354; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_11);
+          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2354; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_12 = (!__pyx_t_9);
+          if (__pyx_t_12) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2354; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_10)); __pyx_t_10 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_264, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2354; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2354; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_10);
+  __Pyx_AddTraceback("h5py.defs.H5Tget_nmembers", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2361
+ *         return r
+ * 
+ * cdef H5T_class_t H5Tget_member_class(hid_t type_id, int member_no) except *:             # <<<<<<<<<<<<<<
+ *     cdef H5T_class_t r
+ *     with rlock:
+ */
+
+static enum H5T_class_t __pyx_f_4h5py_4defs_H5Tget_member_class(hid_t __pyx_v_type_id, int __pyx_v_member_no) {
+  enum H5T_class_t __pyx_v_r;
+  enum H5T_class_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  enum H5T_class_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Tget_member_class", 0);
+
+  /* "h5py/defs.pyx":2363
+ * cdef H5T_class_t H5Tget_member_class(hid_t type_id, int member_no) except *:
+ *     cdef H5T_class_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tget_member_class(type_id, member_no)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2363; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2363; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2363; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2363; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2364
+ *     cdef H5T_class_t r
+ *     with rlock:
+ *         r = _hdf5.H5Tget_member_class(type_id, member_no)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Tget_member_class(__pyx_v_type_id, __pyx_v_member_no); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2364; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2365
+ *     with rlock:
+ *         r = _hdf5.H5Tget_member_class(type_id, member_no)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <H5T_class_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2366
+ *         r = _hdf5.H5Tget_member_class(type_id, member_no)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <H5T_class_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2366; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2367
+ *         if r<0:
+ *             if set_exception():
+ *                 return <H5T_class_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((enum H5T_class_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2368
+ *             if set_exception():
+ *                 return <H5T_class_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef char* H5Tget_member_name(hid_t type_id, unsigned membno) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2363
+ * cdef H5T_class_t H5Tget_member_class(hid_t type_id, int member_no) except *:
+ *     cdef H5T_class_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tget_member_class(type_id, member_no)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Tget_member_class", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2363; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2363; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2363; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2363; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2363; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_265, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2363; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2363; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Tget_member_class", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2370
+ *         return r
+ * 
+ * cdef char* H5Tget_member_name(hid_t type_id, unsigned membno) except *:             # <<<<<<<<<<<<<<
+ *     cdef char* r
+ *     with rlock:
+ */
+
+static char *__pyx_f_4h5py_4defs_H5Tget_member_name(hid_t __pyx_v_type_id, unsigned int __pyx_v_membno) {
+  char *__pyx_v_r;
+  char *__pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  char *__pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Tget_member_name", 0);
+
+  /* "h5py/defs.pyx":2372
+ * cdef char* H5Tget_member_name(hid_t type_id, unsigned membno) except *:
+ *     cdef char* r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tget_member_name(type_id, membno)
+ *         if r==NULL:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2372; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2372; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2372; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2372; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2373
+ *     cdef char* r
+ *     with rlock:
+ *         r = _hdf5.H5Tget_member_name(type_id, membno)             # <<<<<<<<<<<<<<
+ *         if r==NULL:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Tget_member_name(__pyx_v_type_id, __pyx_v_membno); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2373; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2374
+ *     with rlock:
+ *         r = _hdf5.H5Tget_member_name(type_id, membno)
+ *         if r==NULL:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <char*>NULL;
+ */
+          __pyx_t_9 = (__pyx_v_r == NULL);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2375
+ *         r = _hdf5.H5Tget_member_name(type_id, membno)
+ *         if r==NULL:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <char*>NULL;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2375; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2376
+ *         if r==NULL:
+ *             if set_exception():
+ *                 return <char*>NULL;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((char *)NULL);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2377
+ *             if set_exception():
+ *                 return <char*>NULL;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef hid_t H5Tget_member_type(hid_t type_id, unsigned membno) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2372
+ * cdef char* H5Tget_member_name(hid_t type_id, unsigned membno) except *:
+ *     cdef char* r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tget_member_name(type_id, membno)
+ *         if r==NULL:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Tget_member_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2372; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2372; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2372; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2372; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2372; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_266, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2372; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2372; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Tget_member_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2379
+ *         return r
+ * 
+ * cdef hid_t H5Tget_member_type(hid_t type_id, unsigned membno) except *:             # <<<<<<<<<<<<<<
+ *     cdef hid_t r
+ *     with rlock:
+ */
+
+static hid_t __pyx_f_4h5py_4defs_H5Tget_member_type(hid_t __pyx_v_type_id, unsigned int __pyx_v_membno) {
+  hid_t __pyx_v_r;
+  hid_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  hid_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Tget_member_type", 0);
+
+  /* "h5py/defs.pyx":2381
+ * cdef hid_t H5Tget_member_type(hid_t type_id, unsigned membno) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tget_member_type(type_id, membno)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2381; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2381; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2381; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2381; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2382
+ *     cdef hid_t r
+ *     with rlock:
+ *         r = _hdf5.H5Tget_member_type(type_id, membno)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Tget_member_type(__pyx_v_type_id, __pyx_v_membno); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2382; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2383
+ *     with rlock:
+ *         r = _hdf5.H5Tget_member_type(type_id, membno)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2384
+ *         r = _hdf5.H5Tget_member_type(type_id, membno)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <hid_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2384; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2385
+ *         if r<0:
+ *             if set_exception():
+ *                 return <hid_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((hid_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2386
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef int H5Tget_member_offset(hid_t type_id, int membno) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2381
+ * cdef hid_t H5Tget_member_type(hid_t type_id, unsigned membno) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tget_member_type(type_id, membno)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Tget_member_type", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2381; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2381; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2381; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2381; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2381; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_267, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2381; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2381; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Tget_member_type", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2388
+ *         return r
+ * 
+ * cdef int H5Tget_member_offset(hid_t type_id, int membno) except *:             # <<<<<<<<<<<<<<
+ *     cdef int r
+ *     with rlock:
+ */
+
+static int __pyx_f_4h5py_4defs_H5Tget_member_offset(hid_t __pyx_v_type_id, int __pyx_v_membno) {
+  int __pyx_v_r;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  int __pyx_t_8;
+  int __pyx_t_9;
+  PyObject *__pyx_t_10 = NULL;
+  PyObject *__pyx_t_11 = NULL;
+  int __pyx_t_12;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Tget_member_offset", 0);
+
+  /* "h5py/defs.pyx":2390
+ * cdef int H5Tget_member_offset(hid_t type_id, int membno) except *:
+ *     cdef int r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tget_member_offset(type_id, membno)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2390; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2390; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2390; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2390; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2391
+ *     cdef int r
+ *     with rlock:
+ *         r = _hdf5.H5Tget_member_offset(type_id, membno)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Tget_member_offset(__pyx_v_type_id, __pyx_v_membno); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2391; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2392
+ *     with rlock:
+ *         r = _hdf5.H5Tget_member_offset(type_id, membno)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <int>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2393
+ *         r = _hdf5.H5Tget_member_offset(type_id, membno)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <int>-1;
+ *         return r
+ */
+            __pyx_t_8 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2393; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_8) {
+
+              /* "h5py/defs.pyx":2394
+ *         if r<0:
+ *             if set_exception():
+ *                 return <int>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((int)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2395
+ *             if set_exception():
+ *                 return <int>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef int H5Tget_member_index(hid_t type_id, char* name) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2390
+ * cdef int H5Tget_member_offset(hid_t type_id, int membno) except *:
+ *     cdef int r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tget_member_offset(type_id, membno)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Tget_member_offset", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2390; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_10 = PyTuple_New(3); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2390; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_10);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_10, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_11 = PyObject_Call(__pyx_t_2, __pyx_t_10, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2390; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_11);
+          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2390; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_12 = (!__pyx_t_9);
+          if (__pyx_t_12) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2390; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_10)); __pyx_t_10 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_268, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2390; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2390; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_10);
+  __Pyx_AddTraceback("h5py.defs.H5Tget_member_offset", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2397
+ *         return r
+ * 
+ * cdef int H5Tget_member_index(hid_t type_id, char* name) except *:             # <<<<<<<<<<<<<<
+ *     cdef int r
+ *     with rlock:
+ */
+
+static int __pyx_f_4h5py_4defs_H5Tget_member_index(hid_t __pyx_v_type_id, char *__pyx_v_name) {
+  int __pyx_v_r;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  int __pyx_t_8;
+  int __pyx_t_9;
+  PyObject *__pyx_t_10 = NULL;
+  PyObject *__pyx_t_11 = NULL;
+  int __pyx_t_12;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Tget_member_index", 0);
+
+  /* "h5py/defs.pyx":2399
+ * cdef int H5Tget_member_index(hid_t type_id, char* name) except *:
+ *     cdef int r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tget_member_index(type_id, name)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2399; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2399; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2399; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2399; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2400
+ *     cdef int r
+ *     with rlock:
+ *         r = _hdf5.H5Tget_member_index(type_id, name)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Tget_member_index(__pyx_v_type_id, __pyx_v_name); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2400; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2401
+ *     with rlock:
+ *         r = _hdf5.H5Tget_member_index(type_id, name)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <int>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2402
+ *         r = _hdf5.H5Tget_member_index(type_id, name)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <int>-1;
+ *         return r
+ */
+            __pyx_t_8 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2402; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_8) {
+
+              /* "h5py/defs.pyx":2403
+ *         if r<0:
+ *             if set_exception():
+ *                 return <int>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((int)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2404
+ *             if set_exception():
+ *                 return <int>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Tinsert(hid_t parent_id, char *name, size_t offset, hid_t member_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2399
+ * cdef int H5Tget_member_index(hid_t type_id, char* name) except *:
+ *     cdef int r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tget_member_index(type_id, name)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Tget_member_index", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2399; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_10 = PyTuple_New(3); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2399; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_10);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_10, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_11 = PyObject_Call(__pyx_t_2, __pyx_t_10, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2399; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_11);
+          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2399; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_12 = (!__pyx_t_9);
+          if (__pyx_t_12) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2399; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_10)); __pyx_t_10 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_269, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2399; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2399; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_10);
+  __Pyx_AddTraceback("h5py.defs.H5Tget_member_index", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2406
+ *         return r
+ * 
+ * cdef herr_t H5Tinsert(hid_t parent_id, char *name, size_t offset, hid_t member_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Tinsert(hid_t __pyx_v_parent_id, char *__pyx_v_name, size_t __pyx_v_offset, hid_t __pyx_v_member_id) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Tinsert", 0);
+
+  /* "h5py/defs.pyx":2408
+ * cdef herr_t H5Tinsert(hid_t parent_id, char *name, size_t offset, hid_t member_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tinsert(parent_id, name, offset, member_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2408; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2408; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2408; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2408; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2409
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Tinsert(parent_id, name, offset, member_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Tinsert(__pyx_v_parent_id, __pyx_v_name, __pyx_v_offset, __pyx_v_member_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2409; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2410
+ *     with rlock:
+ *         r = _hdf5.H5Tinsert(parent_id, name, offset, member_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2411
+ *         r = _hdf5.H5Tinsert(parent_id, name, offset, member_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2411; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2412
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2413
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Tpack(hid_t type_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2408
+ * cdef herr_t H5Tinsert(hid_t parent_id, char *name, size_t offset, hid_t member_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tinsert(parent_id, name, offset, member_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Tinsert", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2408; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2408; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2408; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2408; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2408; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_270, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2408; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2408; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Tinsert", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2415
+ *         return r
+ * 
+ * cdef herr_t H5Tpack(hid_t type_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Tpack(hid_t __pyx_v_type_id) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Tpack", 0);
+
+  /* "h5py/defs.pyx":2417
+ * cdef herr_t H5Tpack(hid_t type_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tpack(type_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2417; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2417; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2417; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2417; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2418
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Tpack(type_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Tpack(__pyx_v_type_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2418; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2419
+ *     with rlock:
+ *         r = _hdf5.H5Tpack(type_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2420
+ *         r = _hdf5.H5Tpack(type_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2420; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2421
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2422
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef hid_t H5Tenum_create(hid_t base_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2417
+ * cdef herr_t H5Tpack(hid_t type_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tpack(type_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Tpack", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2417; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2417; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2417; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2417; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2417; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_271, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2417; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2417; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Tpack", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2424
+ *         return r
+ * 
+ * cdef hid_t H5Tenum_create(hid_t base_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef hid_t r
+ *     with rlock:
+ */
+
+static hid_t __pyx_f_4h5py_4defs_H5Tenum_create(hid_t __pyx_v_base_id) {
+  hid_t __pyx_v_r;
+  hid_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  hid_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Tenum_create", 0);
+
+  /* "h5py/defs.pyx":2426
+ * cdef hid_t H5Tenum_create(hid_t base_id) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tenum_create(base_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2426; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2426; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2426; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2426; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2427
+ *     cdef hid_t r
+ *     with rlock:
+ *         r = _hdf5.H5Tenum_create(base_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Tenum_create(__pyx_v_base_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2427; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2428
+ *     with rlock:
+ *         r = _hdf5.H5Tenum_create(base_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2429
+ *         r = _hdf5.H5Tenum_create(base_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <hid_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2429; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2430
+ *         if r<0:
+ *             if set_exception():
+ *                 return <hid_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((hid_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2431
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Tenum_insert(hid_t type, char *name, void *value) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2426
+ * cdef hid_t H5Tenum_create(hid_t base_id) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tenum_create(base_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Tenum_create", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2426; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2426; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2426; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2426; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2426; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_272, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2426; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2426; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Tenum_create", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2433
+ *         return r
+ * 
+ * cdef herr_t H5Tenum_insert(hid_t type, char *name, void *value) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Tenum_insert(hid_t __pyx_v_type, char *__pyx_v_name, void *__pyx_v_value) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Tenum_insert", 0);
+
+  /* "h5py/defs.pyx":2435
+ * cdef herr_t H5Tenum_insert(hid_t type, char *name, void *value) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tenum_insert(type, name, value)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2435; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2435; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2435; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2435; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2436
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Tenum_insert(type, name, value)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Tenum_insert(__pyx_v_type, __pyx_v_name, __pyx_v_value); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2436; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2437
+ *     with rlock:
+ *         r = _hdf5.H5Tenum_insert(type, name, value)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2438
+ *         r = _hdf5.H5Tenum_insert(type, name, value)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2438; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2439
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2440
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Tenum_nameof( hid_t type, void *value, char *name, size_t size ) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2435
+ * cdef herr_t H5Tenum_insert(hid_t type, char *name, void *value) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tenum_insert(type, name, value)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Tenum_insert", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2435; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2435; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2435; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2435; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2435; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_273, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2435; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2435; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Tenum_insert", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2442
+ *         return r
+ * 
+ * cdef herr_t H5Tenum_nameof( hid_t type, void *value, char *name, size_t size ) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Tenum_nameof(hid_t __pyx_v_type, void *__pyx_v_value, char *__pyx_v_name, size_t __pyx_v_size) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Tenum_nameof", 0);
+
+  /* "h5py/defs.pyx":2444
+ * cdef herr_t H5Tenum_nameof( hid_t type, void *value, char *name, size_t size ) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tenum_nameof(type, value, name, size)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2444; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2444; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2444; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2444; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2445
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Tenum_nameof(type, value, name, size)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Tenum_nameof(__pyx_v_type, __pyx_v_value, __pyx_v_name, __pyx_v_size); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2445; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2446
+ *     with rlock:
+ *         r = _hdf5.H5Tenum_nameof(type, value, name, size)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2447
+ *         r = _hdf5.H5Tenum_nameof(type, value, name, size)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2447; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2448
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2449
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Tenum_valueof( hid_t type, char *name, void *value ) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2444
+ * cdef herr_t H5Tenum_nameof( hid_t type, void *value, char *name, size_t size ) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tenum_nameof(type, value, name, size)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Tenum_nameof", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2444; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2444; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2444; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2444; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2444; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_274, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2444; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2444; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Tenum_nameof", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2451
+ *         return r
+ * 
+ * cdef herr_t H5Tenum_valueof( hid_t type, char *name, void *value ) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Tenum_valueof(hid_t __pyx_v_type, char *__pyx_v_name, void *__pyx_v_value) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Tenum_valueof", 0);
+
+  /* "h5py/defs.pyx":2453
+ * cdef herr_t H5Tenum_valueof( hid_t type, char *name, void *value ) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tenum_valueof(type, name, value)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2453; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2453; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2453; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2453; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2454
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Tenum_valueof(type, name, value)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Tenum_valueof(__pyx_v_type, __pyx_v_name, __pyx_v_value); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2454; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2455
+ *     with rlock:
+ *         r = _hdf5.H5Tenum_valueof(type, name, value)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2456
+ *         r = _hdf5.H5Tenum_valueof(type, name, value)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2456; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2457
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2458
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Tget_member_value(hid_t type,  unsigned int memb_no, void *value ) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2453
+ * cdef herr_t H5Tenum_valueof( hid_t type, char *name, void *value ) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tenum_valueof(type, name, value)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Tenum_valueof", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2453; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2453; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2453; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2453; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2453; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_275, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2453; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2453; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Tenum_valueof", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2460
+ *         return r
+ * 
+ * cdef herr_t H5Tget_member_value(hid_t type,  unsigned int memb_no, void *value ) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Tget_member_value(hid_t __pyx_v_type, unsigned int __pyx_v_memb_no, void *__pyx_v_value) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Tget_member_value", 0);
+
+  /* "h5py/defs.pyx":2462
+ * cdef herr_t H5Tget_member_value(hid_t type,  unsigned int memb_no, void *value ) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tget_member_value(type, memb_no, value)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2462; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2462; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2462; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2462; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2463
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Tget_member_value(type, memb_no, value)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Tget_member_value(__pyx_v_type, __pyx_v_memb_no, __pyx_v_value); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2463; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2464
+ *     with rlock:
+ *         r = _hdf5.H5Tget_member_value(type, memb_no, value)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2465
+ *         r = _hdf5.H5Tget_member_value(type, memb_no, value)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2465; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2466
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2467
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef hid_t H5Tarray_create(hid_t base_id, int ndims, hsize_t *dims, int *perm) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2462
+ * cdef herr_t H5Tget_member_value(hid_t type,  unsigned int memb_no, void *value ) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tget_member_value(type, memb_no, value)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Tget_member_value", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2462; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2462; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2462; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2462; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2462; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_276, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2462; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2462; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Tget_member_value", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2469
+ *         return r
+ * 
+ * cdef hid_t H5Tarray_create(hid_t base_id, int ndims, hsize_t *dims, int *perm) except *:             # <<<<<<<<<<<<<<
+ *     cdef hid_t r
+ *     with rlock:
+ */
+
+static hid_t __pyx_f_4h5py_4defs_H5Tarray_create(hid_t __pyx_v_base_id, int __pyx_v_ndims, hsize_t *__pyx_v_dims, int *__pyx_v_perm) {
+  hid_t __pyx_v_r;
+  hid_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  hid_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Tarray_create", 0);
+
+  /* "h5py/defs.pyx":2471
+ * cdef hid_t H5Tarray_create(hid_t base_id, int ndims, hsize_t *dims, int *perm) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tarray_create(base_id, ndims, dims, perm)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2471; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2471; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2471; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2471; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2472
+ *     cdef hid_t r
+ *     with rlock:
+ *         r = _hdf5.H5Tarray_create(base_id, ndims, dims, perm)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Tarray_create(__pyx_v_base_id, __pyx_v_ndims, __pyx_v_dims, __pyx_v_perm); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2472; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2473
+ *     with rlock:
+ *         r = _hdf5.H5Tarray_create(base_id, ndims, dims, perm)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2474
+ *         r = _hdf5.H5Tarray_create(base_id, ndims, dims, perm)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <hid_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2474; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2475
+ *         if r<0:
+ *             if set_exception():
+ *                 return <hid_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((hid_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2476
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef int H5Tget_array_ndims(hid_t type_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2471
+ * cdef hid_t H5Tarray_create(hid_t base_id, int ndims, hsize_t *dims, int *perm) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tarray_create(base_id, ndims, dims, perm)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Tarray_create", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2471; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2471; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2471; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2471; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2471; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_277, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2471; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2471; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Tarray_create", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2478
+ *         return r
+ * 
+ * cdef int H5Tget_array_ndims(hid_t type_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef int r
+ *     with rlock:
+ */
+
+static int __pyx_f_4h5py_4defs_H5Tget_array_ndims(hid_t __pyx_v_type_id) {
+  int __pyx_v_r;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  int __pyx_t_8;
+  int __pyx_t_9;
+  PyObject *__pyx_t_10 = NULL;
+  PyObject *__pyx_t_11 = NULL;
+  int __pyx_t_12;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Tget_array_ndims", 0);
+
+  /* "h5py/defs.pyx":2480
+ * cdef int H5Tget_array_ndims(hid_t type_id) except *:
+ *     cdef int r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tget_array_ndims(type_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2480; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2480; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2480; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2480; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2481
+ *     cdef int r
+ *     with rlock:
+ *         r = _hdf5.H5Tget_array_ndims(type_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Tget_array_ndims(__pyx_v_type_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2481; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2482
+ *     with rlock:
+ *         r = _hdf5.H5Tget_array_ndims(type_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <int>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2483
+ *         r = _hdf5.H5Tget_array_ndims(type_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <int>-1;
+ *         return r
+ */
+            __pyx_t_8 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2483; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_8) {
+
+              /* "h5py/defs.pyx":2484
+ *         if r<0:
+ *             if set_exception():
+ *                 return <int>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((int)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2485
+ *             if set_exception():
+ *                 return <int>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef int H5Tget_array_dims(hid_t type_id, hsize_t *dims, int *perm) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2480
+ * cdef int H5Tget_array_ndims(hid_t type_id) except *:
+ *     cdef int r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tget_array_ndims(type_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Tget_array_ndims", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2480; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_10 = PyTuple_New(3); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2480; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_10);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_10, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_11 = PyObject_Call(__pyx_t_2, __pyx_t_10, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2480; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_11);
+          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2480; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_12 = (!__pyx_t_9);
+          if (__pyx_t_12) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2480; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_10)); __pyx_t_10 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_278, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2480; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2480; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_10);
+  __Pyx_AddTraceback("h5py.defs.H5Tget_array_ndims", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2487
+ *         return r
+ * 
+ * cdef int H5Tget_array_dims(hid_t type_id, hsize_t *dims, int *perm) except *:             # <<<<<<<<<<<<<<
+ *     cdef int r
+ *     with rlock:
+ */
+
+static int __pyx_f_4h5py_4defs_H5Tget_array_dims(hid_t __pyx_v_type_id, hsize_t *__pyx_v_dims, int *__pyx_v_perm) {
+  int __pyx_v_r;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  int __pyx_t_8;
+  int __pyx_t_9;
+  PyObject *__pyx_t_10 = NULL;
+  PyObject *__pyx_t_11 = NULL;
+  int __pyx_t_12;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Tget_array_dims", 0);
+
+  /* "h5py/defs.pyx":2489
+ * cdef int H5Tget_array_dims(hid_t type_id, hsize_t *dims, int *perm) except *:
+ *     cdef int r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tget_array_dims(type_id, dims, perm)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2489; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2489; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2489; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2489; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2490
+ *     cdef int r
+ *     with rlock:
+ *         r = _hdf5.H5Tget_array_dims(type_id, dims, perm)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Tget_array_dims(__pyx_v_type_id, __pyx_v_dims, __pyx_v_perm); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2490; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2491
+ *     with rlock:
+ *         r = _hdf5.H5Tget_array_dims(type_id, dims, perm)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <int>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2492
+ *         r = _hdf5.H5Tget_array_dims(type_id, dims, perm)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <int>-1;
+ *         return r
+ */
+            __pyx_t_8 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2492; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_8) {
+
+              /* "h5py/defs.pyx":2493
+ *         if r<0:
+ *             if set_exception():
+ *                 return <int>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((int)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2494
+ *             if set_exception():
+ *                 return <int>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Tset_tag(hid_t type_id, char* tag) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2489
+ * cdef int H5Tget_array_dims(hid_t type_id, hsize_t *dims, int *perm) except *:
+ *     cdef int r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tget_array_dims(type_id, dims, perm)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Tget_array_dims", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2489; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_10 = PyTuple_New(3); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2489; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_10);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_10, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_11 = PyObject_Call(__pyx_t_2, __pyx_t_10, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2489; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_11);
+          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2489; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_12 = (!__pyx_t_9);
+          if (__pyx_t_12) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2489; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_10)); __pyx_t_10 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_279, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2489; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2489; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_10);
+  __Pyx_AddTraceback("h5py.defs.H5Tget_array_dims", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2496
+ *         return r
+ * 
+ * cdef herr_t H5Tset_tag(hid_t type_id, char* tag) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Tset_tag(hid_t __pyx_v_type_id, char *__pyx_v_tag) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Tset_tag", 0);
+
+  /* "h5py/defs.pyx":2498
+ * cdef herr_t H5Tset_tag(hid_t type_id, char* tag) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tset_tag(type_id, tag)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2498; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2498; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2498; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2498; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2499
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Tset_tag(type_id, tag)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Tset_tag(__pyx_v_type_id, __pyx_v_tag); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2499; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2500
+ *     with rlock:
+ *         r = _hdf5.H5Tset_tag(type_id, tag)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2501
+ *         r = _hdf5.H5Tset_tag(type_id, tag)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2501; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2502
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2503
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef char* H5Tget_tag(hid_t type_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2498
+ * cdef herr_t H5Tset_tag(hid_t type_id, char* tag) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tset_tag(type_id, tag)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Tset_tag", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2498; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2498; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2498; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2498; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2498; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_280, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2498; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2498; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Tset_tag", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2505
+ *         return r
+ * 
+ * cdef char* H5Tget_tag(hid_t type_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef char* r
+ *     with rlock:
+ */
+
+static char *__pyx_f_4h5py_4defs_H5Tget_tag(hid_t __pyx_v_type_id) {
+  char *__pyx_v_r;
+  char *__pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  char *__pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Tget_tag", 0);
+
+  /* "h5py/defs.pyx":2507
+ * cdef char* H5Tget_tag(hid_t type_id) except *:
+ *     cdef char* r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tget_tag(type_id)
+ *         if r==NULL:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2507; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2507; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2507; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2507; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2508
+ *     cdef char* r
+ *     with rlock:
+ *         r = _hdf5.H5Tget_tag(type_id)             # <<<<<<<<<<<<<<
+ *         if r==NULL:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Tget_tag(__pyx_v_type_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2508; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2509
+ *     with rlock:
+ *         r = _hdf5.H5Tget_tag(type_id)
+ *         if r==NULL:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <char*>NULL;
+ */
+          __pyx_t_9 = (__pyx_v_r == NULL);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2510
+ *         r = _hdf5.H5Tget_tag(type_id)
+ *         if r==NULL:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <char*>NULL;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2510; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2511
+ *         if r==NULL:
+ *             if set_exception():
+ *                 return <char*>NULL;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((char *)NULL);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2512
+ *             if set_exception():
+ *                 return <char*>NULL;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef hid_t H5Tdecode(unsigned char *buf) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2507
+ * cdef char* H5Tget_tag(hid_t type_id) except *:
+ *     cdef char* r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tget_tag(type_id)
+ *         if r==NULL:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Tget_tag", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2507; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2507; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2507; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2507; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2507; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_281, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2507; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2507; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Tget_tag", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2514
+ *         return r
+ * 
+ * cdef hid_t H5Tdecode(unsigned char *buf) except *:             # <<<<<<<<<<<<<<
+ *     cdef hid_t r
+ *     with rlock:
+ */
+
+static hid_t __pyx_f_4h5py_4defs_H5Tdecode(unsigned char *__pyx_v_buf) {
+  hid_t __pyx_v_r;
+  hid_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  hid_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Tdecode", 0);
+
+  /* "h5py/defs.pyx":2516
+ * cdef hid_t H5Tdecode(unsigned char *buf) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tdecode(buf)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2516; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2516; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2516; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2516; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2517
+ *     cdef hid_t r
+ *     with rlock:
+ *         r = _hdf5.H5Tdecode(buf)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Tdecode(__pyx_v_buf); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2517; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2518
+ *     with rlock:
+ *         r = _hdf5.H5Tdecode(buf)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2519
+ *         r = _hdf5.H5Tdecode(buf)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <hid_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2519; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2520
+ *         if r<0:
+ *             if set_exception():
+ *                 return <hid_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((hid_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2521
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Tencode(hid_t obj_id, unsigned char *buf, size_t *nalloc) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2516
+ * cdef hid_t H5Tdecode(unsigned char *buf) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tdecode(buf)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Tdecode", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2516; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2516; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2516; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2516; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2516; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_282, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2516; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2516; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Tdecode", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2523
+ *         return r
+ * 
+ * cdef herr_t H5Tencode(hid_t obj_id, unsigned char *buf, size_t *nalloc) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Tencode(hid_t __pyx_v_obj_id, unsigned char *__pyx_v_buf, size_t *__pyx_v_nalloc) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Tencode", 0);
+
+  /* "h5py/defs.pyx":2525
+ * cdef herr_t H5Tencode(hid_t obj_id, unsigned char *buf, size_t *nalloc) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tencode(obj_id, buf, nalloc)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2525; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2525; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2525; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2525; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2526
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Tencode(obj_id, buf, nalloc)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Tencode(__pyx_v_obj_id, __pyx_v_buf, __pyx_v_nalloc); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2526; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2527
+ *     with rlock:
+ *         r = _hdf5.H5Tencode(obj_id, buf, nalloc)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2528
+ *         r = _hdf5.H5Tencode(obj_id, buf, nalloc)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2528; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2529
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2530
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Tcommit2(hid_t loc_id, char *name, hid_t dtype_id, hid_t lcpl_id, hid_t tcpl_id, hid_t tapl_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2525
+ * cdef herr_t H5Tencode(hid_t obj_id, unsigned char *buf, size_t *nalloc) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tencode(obj_id, buf, nalloc)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Tencode", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2525; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2525; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2525; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2525; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2525; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_283, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2525; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2525; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Tencode", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2532
+ *         return r
+ * 
+ * cdef herr_t H5Tcommit2(hid_t loc_id, char *name, hid_t dtype_id, hid_t lcpl_id, hid_t tcpl_id, hid_t tapl_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Tcommit2(hid_t __pyx_v_loc_id, char *__pyx_v_name, hid_t __pyx_v_dtype_id, hid_t __pyx_v_lcpl_id, hid_t __pyx_v_tcpl_id, hid_t __pyx_v_tapl_id) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Tcommit2", 0);
+
+  /* "h5py/defs.pyx":2534
+ * cdef herr_t H5Tcommit2(hid_t loc_id, char *name, hid_t dtype_id, hid_t lcpl_id, hid_t tcpl_id, hid_t tapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tcommit2(loc_id, name, dtype_id, lcpl_id, tcpl_id, tapl_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2534; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2534; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2534; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2534; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2535
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Tcommit2(loc_id, name, dtype_id, lcpl_id, tcpl_id, tapl_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Tcommit2(__pyx_v_loc_id, __pyx_v_name, __pyx_v_dtype_id, __pyx_v_lcpl_id, __pyx_v_tcpl_id, __pyx_v_tapl_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2535; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2536
+ *     with rlock:
+ *         r = _hdf5.H5Tcommit2(loc_id, name, dtype_id, lcpl_id, tcpl_id, tapl_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2537
+ *         r = _hdf5.H5Tcommit2(loc_id, name, dtype_id, lcpl_id, tcpl_id, tapl_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2537; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2538
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2539
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef H5T_conv_t H5Tfind(hid_t src_id, hid_t dst_id, H5T_cdata_t **pcdata) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2534
+ * cdef herr_t H5Tcommit2(hid_t loc_id, char *name, hid_t dtype_id, hid_t lcpl_id, hid_t tcpl_id, hid_t tapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tcommit2(loc_id, name, dtype_id, lcpl_id, tcpl_id, tapl_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Tcommit2", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2534; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2534; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2534; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2534; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2534; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_284, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2534; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2534; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Tcommit2", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2541
+ *         return r
+ * 
+ * cdef H5T_conv_t H5Tfind(hid_t src_id, hid_t dst_id, H5T_cdata_t **pcdata) except *:             # <<<<<<<<<<<<<<
+ *     cdef H5T_conv_t r
+ *     with rlock:
+ */
+
+static H5T_conv_t __pyx_f_4h5py_4defs_H5Tfind(hid_t __pyx_v_src_id, hid_t __pyx_v_dst_id, H5T_cdata_t **__pyx_v_pcdata) {
+  H5T_conv_t __pyx_v_r;
+  H5T_conv_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  H5T_conv_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Tfind", 0);
+
+  /* "h5py/defs.pyx":2543
+ * cdef H5T_conv_t H5Tfind(hid_t src_id, hid_t dst_id, H5T_cdata_t **pcdata) except *:
+ *     cdef H5T_conv_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tfind(src_id, dst_id, pcdata)
+ *         if r==NULL:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2543; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2543; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2543; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2543; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2544
+ *     cdef H5T_conv_t r
+ *     with rlock:
+ *         r = _hdf5.H5Tfind(src_id, dst_id, pcdata)             # <<<<<<<<<<<<<<
+ *         if r==NULL:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Tfind(__pyx_v_src_id, __pyx_v_dst_id, __pyx_v_pcdata); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2544; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2545
+ *     with rlock:
+ *         r = _hdf5.H5Tfind(src_id, dst_id, pcdata)
+ *         if r==NULL:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <H5T_conv_t>NULL;
+ */
+          __pyx_t_9 = (__pyx_v_r == NULL);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2546
+ *         r = _hdf5.H5Tfind(src_id, dst_id, pcdata)
+ *         if r==NULL:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <H5T_conv_t>NULL;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2546; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2547
+ *         if r==NULL:
+ *             if set_exception():
+ *                 return <H5T_conv_t>NULL;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((H5T_conv_t)NULL);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2548
+ *             if set_exception():
+ *                 return <H5T_conv_t>NULL;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Tregister(H5T_pers_t pers, char *name, hid_t src_id, hid_t dst_id, H5T_conv_t func) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2543
+ * cdef H5T_conv_t H5Tfind(hid_t src_id, hid_t dst_id, H5T_cdata_t **pcdata) except *:
+ *     cdef H5T_conv_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tfind(src_id, dst_id, pcdata)
+ *         if r==NULL:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Tfind", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2543; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2543; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2543; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2543; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2543; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_285, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2543; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2543; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Tfind", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2550
+ *         return r
+ * 
+ * cdef herr_t H5Tregister(H5T_pers_t pers, char *name, hid_t src_id, hid_t dst_id, H5T_conv_t func) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Tregister(H5T_pers_t __pyx_v_pers, char *__pyx_v_name, hid_t __pyx_v_src_id, hid_t __pyx_v_dst_id, H5T_conv_t __pyx_v_func) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Tregister", 0);
+
+  /* "h5py/defs.pyx":2552
+ * cdef herr_t H5Tregister(H5T_pers_t pers, char *name, hid_t src_id, hid_t dst_id, H5T_conv_t func) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tregister(pers, name, src_id, dst_id, func)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2552; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2552; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2552; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2552; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2553
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Tregister(pers, name, src_id, dst_id, func)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Tregister(__pyx_v_pers, __pyx_v_name, __pyx_v_src_id, __pyx_v_dst_id, __pyx_v_func); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2553; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2554
+ *     with rlock:
+ *         r = _hdf5.H5Tregister(pers, name, src_id, dst_id, func)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2555
+ *         r = _hdf5.H5Tregister(pers, name, src_id, dst_id, func)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2555; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2556
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2557
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Tunregister(H5T_pers_t pers, char *name, hid_t src_id, hid_t dst_id, H5T_conv_t func) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2552
+ * cdef herr_t H5Tregister(H5T_pers_t pers, char *name, hid_t src_id, hid_t dst_id, H5T_conv_t func) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tregister(pers, name, src_id, dst_id, func)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Tregister", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2552; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2552; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2552; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2552; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2552; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_286, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2552; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2552; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Tregister", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2559
+ *         return r
+ * 
+ * cdef herr_t H5Tunregister(H5T_pers_t pers, char *name, hid_t src_id, hid_t dst_id, H5T_conv_t func) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Tunregister(H5T_pers_t __pyx_v_pers, char *__pyx_v_name, hid_t __pyx_v_src_id, hid_t __pyx_v_dst_id, H5T_conv_t __pyx_v_func) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Tunregister", 0);
+
+  /* "h5py/defs.pyx":2561
+ * cdef herr_t H5Tunregister(H5T_pers_t pers, char *name, hid_t src_id, hid_t dst_id, H5T_conv_t func) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tunregister(pers, name, src_id, dst_id, func)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2561; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2561; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2561; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2561; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2562
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Tunregister(pers, name, src_id, dst_id, func)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Tunregister(__pyx_v_pers, __pyx_v_name, __pyx_v_src_id, __pyx_v_dst_id, __pyx_v_func); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2562; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2563
+ *     with rlock:
+ *         r = _hdf5.H5Tunregister(pers, name, src_id, dst_id, func)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2564
+ *         r = _hdf5.H5Tunregister(pers, name, src_id, dst_id, func)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2564; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2565
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2566
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef htri_t H5Zfilter_avail(H5Z_filter_t id_) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2561
+ * cdef herr_t H5Tunregister(H5T_pers_t pers, char *name, hid_t src_id, hid_t dst_id, H5T_conv_t func) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tunregister(pers, name, src_id, dst_id, func)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Tunregister", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2561; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2561; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2561; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2561; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2561; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_287, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2561; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2561; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Tunregister", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2568
+ *         return r
+ * 
+ * cdef htri_t H5Zfilter_avail(H5Z_filter_t id_) except *:             # <<<<<<<<<<<<<<
+ *     cdef htri_t r
+ *     with rlock:
+ */
+
+static htri_t __pyx_f_4h5py_4defs_H5Zfilter_avail(H5Z_filter_t __pyx_v_id_) {
+  htri_t __pyx_v_r;
+  htri_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  htri_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Zfilter_avail", 0);
+
+  /* "h5py/defs.pyx":2570
+ * cdef htri_t H5Zfilter_avail(H5Z_filter_t id_) except *:
+ *     cdef htri_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Zfilter_avail(id_)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2570; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2570; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2570; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2570; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2571
+ *     cdef htri_t r
+ *     with rlock:
+ *         r = _hdf5.H5Zfilter_avail(id_)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Zfilter_avail(__pyx_v_id_); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2571; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2572
+ *     with rlock:
+ *         r = _hdf5.H5Zfilter_avail(id_)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <htri_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2573
+ *         r = _hdf5.H5Zfilter_avail(id_)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <htri_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2573; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2574
+ *         if r<0:
+ *             if set_exception():
+ *                 return <htri_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((htri_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2575
+ *             if set_exception():
+ *                 return <htri_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Zget_filter_info(H5Z_filter_t filter_, unsigned int *filter_config_flags) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2570
+ * cdef htri_t H5Zfilter_avail(H5Z_filter_t id_) except *:
+ *     cdef htri_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Zfilter_avail(id_)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Zfilter_avail", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2570; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2570; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2570; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2570; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2570; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_288, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2570; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2570; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Zfilter_avail", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2577
+ *         return r
+ * 
+ * cdef herr_t H5Zget_filter_info(H5Z_filter_t filter_, unsigned int *filter_config_flags) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Zget_filter_info(H5Z_filter_t __pyx_v_filter_, unsigned int *__pyx_v_filter_config_flags) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Zget_filter_info", 0);
+
+  /* "h5py/defs.pyx":2579
+ * cdef herr_t H5Zget_filter_info(H5Z_filter_t filter_, unsigned int *filter_config_flags) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Zget_filter_info(filter_, filter_config_flags)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2579; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2579; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2579; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2579; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2580
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Zget_filter_info(filter_, filter_config_flags)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Zget_filter_info(__pyx_v_filter_, __pyx_v_filter_config_flags); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2580; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2581
+ *     with rlock:
+ *         r = _hdf5.H5Zget_filter_info(filter_, filter_config_flags)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2582
+ *         r = _hdf5.H5Zget_filter_info(filter_, filter_config_flags)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2582; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2583
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2584
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef hid_t H5Acreate(hid_t loc_id, char *name, hid_t type_id, hid_t space_id, hid_t create_plist) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2579
+ * cdef herr_t H5Zget_filter_info(H5Z_filter_t filter_, unsigned int *filter_config_flags) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Zget_filter_info(filter_, filter_config_flags)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Zget_filter_info", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2579; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2579; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2579; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2579; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2579; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_289, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2579; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2579; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Zget_filter_info", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2586
+ *         return r
+ * 
+ * cdef hid_t H5Acreate(hid_t loc_id, char *name, hid_t type_id, hid_t space_id, hid_t create_plist) except *:             # <<<<<<<<<<<<<<
+ *     cdef hid_t r
+ *     with rlock:
+ */
+
+static hid_t __pyx_f_4h5py_4defs_H5Acreate(hid_t __pyx_v_loc_id, char *__pyx_v_name, hid_t __pyx_v_type_id, hid_t __pyx_v_space_id, hid_t __pyx_v_create_plist) {
+  hid_t __pyx_v_r;
+  hid_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  hid_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Acreate", 0);
+
+  /* "h5py/defs.pyx":2588
+ * cdef hid_t H5Acreate(hid_t loc_id, char *name, hid_t type_id, hid_t space_id, hid_t create_plist) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Acreate(loc_id, name, type_id, space_id, create_plist)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2588; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2588; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2588; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2588; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2589
+ *     cdef hid_t r
+ *     with rlock:
+ *         r = _hdf5.H5Acreate(loc_id, name, type_id, space_id, create_plist)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Acreate(__pyx_v_loc_id, __pyx_v_name, __pyx_v_type_id, __pyx_v_space_id, __pyx_v_create_plist); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2589; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2590
+ *     with rlock:
+ *         r = _hdf5.H5Acreate(loc_id, name, type_id, space_id, create_plist)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2591
+ *         r = _hdf5.H5Acreate(loc_id, name, type_id, space_id, create_plist)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <hid_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2591; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2592
+ *         if r<0:
+ *             if set_exception():
+ *                 return <hid_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((hid_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2593
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef hid_t H5Aopen_idx(hid_t loc_id, unsigned int idx) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2588
+ * cdef hid_t H5Acreate(hid_t loc_id, char *name, hid_t type_id, hid_t space_id, hid_t create_plist) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Acreate(loc_id, name, type_id, space_id, create_plist)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Acreate", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2588; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2588; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2588; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2588; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2588; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_290, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2588; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2588; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Acreate", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2595
+ *         return r
+ * 
+ * cdef hid_t H5Aopen_idx(hid_t loc_id, unsigned int idx) except *:             # <<<<<<<<<<<<<<
+ *     cdef hid_t r
+ *     with rlock:
+ */
+
+static hid_t __pyx_f_4h5py_4defs_H5Aopen_idx(hid_t __pyx_v_loc_id, unsigned int __pyx_v_idx) {
+  hid_t __pyx_v_r;
+  hid_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  hid_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Aopen_idx", 0);
+
+  /* "h5py/defs.pyx":2597
+ * cdef hid_t H5Aopen_idx(hid_t loc_id, unsigned int idx) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Aopen_idx(loc_id, idx)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2597; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2597; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2597; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2597; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2598
+ *     cdef hid_t r
+ *     with rlock:
+ *         r = _hdf5.H5Aopen_idx(loc_id, idx)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Aopen_idx(__pyx_v_loc_id, __pyx_v_idx); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2598; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2599
+ *     with rlock:
+ *         r = _hdf5.H5Aopen_idx(loc_id, idx)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2600
+ *         r = _hdf5.H5Aopen_idx(loc_id, idx)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <hid_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2600; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2601
+ *         if r<0:
+ *             if set_exception():
+ *                 return <hid_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((hid_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2602
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef hid_t H5Aopen_name(hid_t loc_id, char *name) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2597
+ * cdef hid_t H5Aopen_idx(hid_t loc_id, unsigned int idx) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Aopen_idx(loc_id, idx)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Aopen_idx", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2597; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2597; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2597; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2597; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2597; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_291, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2597; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2597; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Aopen_idx", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2604
+ *         return r
+ * 
+ * cdef hid_t H5Aopen_name(hid_t loc_id, char *name) except *:             # <<<<<<<<<<<<<<
+ *     cdef hid_t r
+ *     with rlock:
+ */
+
+static hid_t __pyx_f_4h5py_4defs_H5Aopen_name(hid_t __pyx_v_loc_id, char *__pyx_v_name) {
+  hid_t __pyx_v_r;
+  hid_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  hid_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Aopen_name", 0);
+
+  /* "h5py/defs.pyx":2606
+ * cdef hid_t H5Aopen_name(hid_t loc_id, char *name) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Aopen_name(loc_id, name)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2606; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2606; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2606; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2606; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2607
+ *     cdef hid_t r
+ *     with rlock:
+ *         r = _hdf5.H5Aopen_name(loc_id, name)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Aopen_name(__pyx_v_loc_id, __pyx_v_name); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2607; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2608
+ *     with rlock:
+ *         r = _hdf5.H5Aopen_name(loc_id, name)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2609
+ *         r = _hdf5.H5Aopen_name(loc_id, name)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <hid_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2609; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2610
+ *         if r<0:
+ *             if set_exception():
+ *                 return <hid_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((hid_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2611
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Aclose(hid_t attr_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2606
+ * cdef hid_t H5Aopen_name(hid_t loc_id, char *name) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Aopen_name(loc_id, name)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Aopen_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2606; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2606; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2606; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2606; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2606; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_292, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2606; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2606; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Aopen_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2613
+ *         return r
+ * 
+ * cdef herr_t H5Aclose(hid_t attr_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Aclose(hid_t __pyx_v_attr_id) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Aclose", 0);
+
+  /* "h5py/defs.pyx":2615
+ * cdef herr_t H5Aclose(hid_t attr_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Aclose(attr_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2615; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2615; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2615; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2615; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2616
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Aclose(attr_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Aclose(__pyx_v_attr_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2616; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2617
+ *     with rlock:
+ *         r = _hdf5.H5Aclose(attr_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2618
+ *         r = _hdf5.H5Aclose(attr_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2618; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2619
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2620
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Adelete(hid_t loc_id, char *name) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2615
+ * cdef herr_t H5Aclose(hid_t attr_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Aclose(attr_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Aclose", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2615; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2615; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2615; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2615; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2615; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_293, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2615; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2615; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Aclose", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2622
+ *         return r
+ * 
+ * cdef herr_t H5Adelete(hid_t loc_id, char *name) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Adelete(hid_t __pyx_v_loc_id, char *__pyx_v_name) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Adelete", 0);
+
+  /* "h5py/defs.pyx":2624
+ * cdef herr_t H5Adelete(hid_t loc_id, char *name) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Adelete(loc_id, name)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2624; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2624; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2624; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2624; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2625
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Adelete(loc_id, name)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Adelete(__pyx_v_loc_id, __pyx_v_name); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2625; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2626
+ *     with rlock:
+ *         r = _hdf5.H5Adelete(loc_id, name)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2627
+ *         r = _hdf5.H5Adelete(loc_id, name)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2627; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2628
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2629
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Aread(hid_t attr_id, hid_t mem_type_id, void *buf) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2624
+ * cdef herr_t H5Adelete(hid_t loc_id, char *name) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Adelete(loc_id, name)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Adelete", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2624; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2624; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2624; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2624; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2624; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_294, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2624; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2624; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Adelete", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2631
+ *         return r
+ * 
+ * cdef herr_t H5Aread(hid_t attr_id, hid_t mem_type_id, void *buf) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Aread(hid_t __pyx_v_attr_id, hid_t __pyx_v_mem_type_id, void *__pyx_v_buf) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Aread", 0);
+
+  /* "h5py/defs.pyx":2633
+ * cdef herr_t H5Aread(hid_t attr_id, hid_t mem_type_id, void *buf) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Aread(attr_id, mem_type_id, buf)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2633; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2633; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2633; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2633; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2634
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Aread(attr_id, mem_type_id, buf)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Aread(__pyx_v_attr_id, __pyx_v_mem_type_id, __pyx_v_buf); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2634; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2635
+ *     with rlock:
+ *         r = _hdf5.H5Aread(attr_id, mem_type_id, buf)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2636
+ *         r = _hdf5.H5Aread(attr_id, mem_type_id, buf)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2636; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2637
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2638
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Awrite(hid_t attr_id, hid_t mem_type_id, void *buf ) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2633
+ * cdef herr_t H5Aread(hid_t attr_id, hid_t mem_type_id, void *buf) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Aread(attr_id, mem_type_id, buf)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Aread", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2633; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2633; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2633; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2633; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2633; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_295, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2633; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2633; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Aread", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2640
+ *         return r
+ * 
+ * cdef herr_t H5Awrite(hid_t attr_id, hid_t mem_type_id, void *buf ) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Awrite(hid_t __pyx_v_attr_id, hid_t __pyx_v_mem_type_id, void *__pyx_v_buf) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Awrite", 0);
+
+  /* "h5py/defs.pyx":2642
+ * cdef herr_t H5Awrite(hid_t attr_id, hid_t mem_type_id, void *buf ) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Awrite(attr_id, mem_type_id, buf)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2642; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2642; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2642; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2642; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2643
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Awrite(attr_id, mem_type_id, buf)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Awrite(__pyx_v_attr_id, __pyx_v_mem_type_id, __pyx_v_buf); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2643; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2644
+ *     with rlock:
+ *         r = _hdf5.H5Awrite(attr_id, mem_type_id, buf)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2645
+ *         r = _hdf5.H5Awrite(attr_id, mem_type_id, buf)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2645; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2646
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2647
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef int H5Aget_num_attrs(hid_t loc_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2642
+ * cdef herr_t H5Awrite(hid_t attr_id, hid_t mem_type_id, void *buf ) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Awrite(attr_id, mem_type_id, buf)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Awrite", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2642; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2642; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2642; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2642; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2642; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_296, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2642; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2642; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Awrite", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2649
+ *         return r
+ * 
+ * cdef int H5Aget_num_attrs(hid_t loc_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef int r
+ *     with rlock:
+ */
+
+static int __pyx_f_4h5py_4defs_H5Aget_num_attrs(hid_t __pyx_v_loc_id) {
+  int __pyx_v_r;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  int __pyx_t_8;
+  int __pyx_t_9;
+  PyObject *__pyx_t_10 = NULL;
+  PyObject *__pyx_t_11 = NULL;
+  int __pyx_t_12;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Aget_num_attrs", 0);
+
+  /* "h5py/defs.pyx":2651
+ * cdef int H5Aget_num_attrs(hid_t loc_id) except *:
+ *     cdef int r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Aget_num_attrs(loc_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2651; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2651; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2651; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2651; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2652
+ *     cdef int r
+ *     with rlock:
+ *         r = _hdf5.H5Aget_num_attrs(loc_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Aget_num_attrs(__pyx_v_loc_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2652; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2653
+ *     with rlock:
+ *         r = _hdf5.H5Aget_num_attrs(loc_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <int>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2654
+ *         r = _hdf5.H5Aget_num_attrs(loc_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <int>-1;
+ *         return r
+ */
+            __pyx_t_8 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2654; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_8) {
+
+              /* "h5py/defs.pyx":2655
+ *         if r<0:
+ *             if set_exception():
+ *                 return <int>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((int)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2656
+ *             if set_exception():
+ *                 return <int>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef ssize_t H5Aget_name(hid_t attr_id, size_t buf_size, char *buf) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2651
+ * cdef int H5Aget_num_attrs(hid_t loc_id) except *:
+ *     cdef int r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Aget_num_attrs(loc_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Aget_num_attrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2651; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_10 = PyTuple_New(3); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2651; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_10);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_10, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_11 = PyObject_Call(__pyx_t_2, __pyx_t_10, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2651; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_11);
+          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2651; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_12 = (!__pyx_t_9);
+          if (__pyx_t_12) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2651; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_10)); __pyx_t_10 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_297, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2651; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2651; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_10);
+  __Pyx_AddTraceback("h5py.defs.H5Aget_num_attrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2658
+ *         return r
+ * 
+ * cdef ssize_t H5Aget_name(hid_t attr_id, size_t buf_size, char *buf) except *:             # <<<<<<<<<<<<<<
+ *     cdef ssize_t r
+ *     with rlock:
+ */
+
+static Py_ssize_t __pyx_f_4h5py_4defs_H5Aget_name(hid_t __pyx_v_attr_id, size_t __pyx_v_buf_size, char *__pyx_v_buf) {
+  Py_ssize_t __pyx_v_r;
+  Py_ssize_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  Py_ssize_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Aget_name", 0);
+
+  /* "h5py/defs.pyx":2660
+ * cdef ssize_t H5Aget_name(hid_t attr_id, size_t buf_size, char *buf) except *:
+ *     cdef ssize_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Aget_name(attr_id, buf_size, buf)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2660; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2660; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2660; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2660; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2661
+ *     cdef ssize_t r
+ *     with rlock:
+ *         r = _hdf5.H5Aget_name(attr_id, buf_size, buf)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Aget_name(__pyx_v_attr_id, __pyx_v_buf_size, __pyx_v_buf); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2661; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2662
+ *     with rlock:
+ *         r = _hdf5.H5Aget_name(attr_id, buf_size, buf)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <ssize_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2663
+ *         r = _hdf5.H5Aget_name(attr_id, buf_size, buf)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <ssize_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2663; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2664
+ *         if r<0:
+ *             if set_exception():
+ *                 return <ssize_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((Py_ssize_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2665
+ *             if set_exception():
+ *                 return <ssize_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef hid_t H5Aget_space(hid_t attr_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2660
+ * cdef ssize_t H5Aget_name(hid_t attr_id, size_t buf_size, char *buf) except *:
+ *     cdef ssize_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Aget_name(attr_id, buf_size, buf)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Aget_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2660; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2660; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2660; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2660; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2660; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_298, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2660; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2660; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Aget_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2667
+ *         return r
+ * 
+ * cdef hid_t H5Aget_space(hid_t attr_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef hid_t r
+ *     with rlock:
+ */
+
+static hid_t __pyx_f_4h5py_4defs_H5Aget_space(hid_t __pyx_v_attr_id) {
+  hid_t __pyx_v_r;
+  hid_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  hid_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Aget_space", 0);
+
+  /* "h5py/defs.pyx":2669
+ * cdef hid_t H5Aget_space(hid_t attr_id) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Aget_space(attr_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2669; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2669; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2669; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2669; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2670
+ *     cdef hid_t r
+ *     with rlock:
+ *         r = _hdf5.H5Aget_space(attr_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Aget_space(__pyx_v_attr_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2670; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2671
+ *     with rlock:
+ *         r = _hdf5.H5Aget_space(attr_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2672
+ *         r = _hdf5.H5Aget_space(attr_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <hid_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2672; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2673
+ *         if r<0:
+ *             if set_exception():
+ *                 return <hid_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((hid_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2674
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef hid_t H5Aget_type(hid_t attr_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2669
+ * cdef hid_t H5Aget_space(hid_t attr_id) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Aget_space(attr_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Aget_space", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2669; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2669; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2669; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2669; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2669; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_299, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2669; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2669; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Aget_space", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2676
+ *         return r
+ * 
+ * cdef hid_t H5Aget_type(hid_t attr_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef hid_t r
+ *     with rlock:
+ */
+
+static hid_t __pyx_f_4h5py_4defs_H5Aget_type(hid_t __pyx_v_attr_id) {
+  hid_t __pyx_v_r;
+  hid_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  hid_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Aget_type", 0);
+
+  /* "h5py/defs.pyx":2678
+ * cdef hid_t H5Aget_type(hid_t attr_id) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Aget_type(attr_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2678; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2678; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2678; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2678; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2679
+ *     cdef hid_t r
+ *     with rlock:
+ *         r = _hdf5.H5Aget_type(attr_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Aget_type(__pyx_v_attr_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2679; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2680
+ *     with rlock:
+ *         r = _hdf5.H5Aget_type(attr_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2681
+ *         r = _hdf5.H5Aget_type(attr_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <hid_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2681; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2682
+ *         if r<0:
+ *             if set_exception():
+ *                 return <hid_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((hid_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2683
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Aiterate(hid_t loc_id, unsigned * idx, H5A_operator_t op, void* op_data) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2678
+ * cdef hid_t H5Aget_type(hid_t attr_id) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Aget_type(attr_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Aget_type", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2678; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2678; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2678; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2678; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2678; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_300, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2678; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2678; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Aget_type", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2685
+ *         return r
+ * 
+ * cdef herr_t H5Aiterate(hid_t loc_id, unsigned * idx, H5A_operator_t op, void* op_data) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Aiterate(hid_t __pyx_v_loc_id, unsigned int *__pyx_v_idx, H5A_operator_t __pyx_v_op, void *__pyx_v_op_data) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Aiterate", 0);
+
+  /* "h5py/defs.pyx":2687
+ * cdef herr_t H5Aiterate(hid_t loc_id, unsigned * idx, H5A_operator_t op, void* op_data) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Aiterate(loc_id, idx, op, op_data)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2687; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2687; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2687; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2687; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2688
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Aiterate(loc_id, idx, op, op_data)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Aiterate(__pyx_v_loc_id, __pyx_v_idx, __pyx_v_op, __pyx_v_op_data); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2688; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2689
+ *     with rlock:
+ *         r = _hdf5.H5Aiterate(loc_id, idx, op, op_data)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2690
+ *         r = _hdf5.H5Aiterate(loc_id, idx, op, op_data)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2690; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2691
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2692
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Adelete_by_name(hid_t loc_id, char *obj_name, char *attr_name, hid_t lapl_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2687
+ * cdef herr_t H5Aiterate(hid_t loc_id, unsigned * idx, H5A_operator_t op, void* op_data) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Aiterate(loc_id, idx, op, op_data)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Aiterate", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2687; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2687; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2687; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2687; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2687; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_301, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2687; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2687; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Aiterate", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2694
+ *         return r
+ * 
+ * cdef herr_t H5Adelete_by_name(hid_t loc_id, char *obj_name, char *attr_name, hid_t lapl_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Adelete_by_name(hid_t __pyx_v_loc_id, char *__pyx_v_obj_name, char *__pyx_v_attr_name, hid_t __pyx_v_lapl_id) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Adelete_by_name", 0);
+
+  /* "h5py/defs.pyx":2696
+ * cdef herr_t H5Adelete_by_name(hid_t loc_id, char *obj_name, char *attr_name, hid_t lapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Adelete_by_name(loc_id, obj_name, attr_name, lapl_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2696; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2696; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2696; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2696; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2697
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Adelete_by_name(loc_id, obj_name, attr_name, lapl_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Adelete_by_name(__pyx_v_loc_id, __pyx_v_obj_name, __pyx_v_attr_name, __pyx_v_lapl_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2697; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2698
+ *     with rlock:
+ *         r = _hdf5.H5Adelete_by_name(loc_id, obj_name, attr_name, lapl_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2699
+ *         r = _hdf5.H5Adelete_by_name(loc_id, obj_name, attr_name, lapl_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2699; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2700
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2701
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Adelete_by_idx(hid_t loc_id, char *obj_name, H5_index_t idx_type, H5_iter_order_t order, hsize_t n, hid_t lapl_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2696
+ * cdef herr_t H5Adelete_by_name(hid_t loc_id, char *obj_name, char *attr_name, hid_t lapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Adelete_by_name(loc_id, obj_name, attr_name, lapl_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Adelete_by_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2696; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2696; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2696; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2696; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2696; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_302, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2696; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2696; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Adelete_by_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2703
+ *         return r
+ * 
+ * cdef herr_t H5Adelete_by_idx(hid_t loc_id, char *obj_name, H5_index_t idx_type, H5_iter_order_t order, hsize_t n, hid_t lapl_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Adelete_by_idx(hid_t __pyx_v_loc_id, char *__pyx_v_obj_name, H5_index_t __pyx_v_idx_type, H5_iter_order_t __pyx_v_order, hsize_t __pyx_v_n, hid_t __pyx_v_lapl_id) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Adelete_by_idx", 0);
+
+  /* "h5py/defs.pyx":2705
+ * cdef herr_t H5Adelete_by_idx(hid_t loc_id, char *obj_name, H5_index_t idx_type, H5_iter_order_t order, hsize_t n, hid_t lapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Adelete_by_idx(loc_id, obj_name, idx_type, order, n, lapl_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2705; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2705; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2705; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2705; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2706
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Adelete_by_idx(loc_id, obj_name, idx_type, order, n, lapl_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Adelete_by_idx(__pyx_v_loc_id, __pyx_v_obj_name, __pyx_v_idx_type, __pyx_v_order, __pyx_v_n, __pyx_v_lapl_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2706; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2707
+ *     with rlock:
+ *         r = _hdf5.H5Adelete_by_idx(loc_id, obj_name, idx_type, order, n, lapl_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2708
+ *         r = _hdf5.H5Adelete_by_idx(loc_id, obj_name, idx_type, order, n, lapl_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2708; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2709
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2710
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef hid_t H5Acreate_by_name(hid_t loc_id, char *obj_name, char *attr_name, hid_t type_id, hid_t space_id, hid_t acpl_id, hid_t aapl_id, hid_t lapl_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2705
+ * cdef herr_t H5Adelete_by_idx(hid_t loc_id, char *obj_name, H5_index_t idx_type, H5_iter_order_t order, hsize_t n, hid_t lapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Adelete_by_idx(loc_id, obj_name, idx_type, order, n, lapl_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Adelete_by_idx", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2705; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2705; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2705; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2705; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2705; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_303, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2705; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2705; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Adelete_by_idx", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2712
+ *         return r
+ * 
+ * cdef hid_t H5Acreate_by_name(hid_t loc_id, char *obj_name, char *attr_name, hid_t type_id, hid_t space_id, hid_t acpl_id, hid_t aapl_id, hid_t lapl_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef hid_t r
+ *     with rlock:
+ */
+
+static hid_t __pyx_f_4h5py_4defs_H5Acreate_by_name(hid_t __pyx_v_loc_id, char *__pyx_v_obj_name, char *__pyx_v_attr_name, hid_t __pyx_v_type_id, hid_t __pyx_v_space_id, hid_t __pyx_v_acpl_id, hid_t __pyx_v_aapl_id, hid_t __pyx_v_lapl_id) {
+  hid_t __pyx_v_r;
+  hid_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  hid_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Acreate_by_name", 0);
+
+  /* "h5py/defs.pyx":2714
+ * cdef hid_t H5Acreate_by_name(hid_t loc_id, char *obj_name, char *attr_name, hid_t type_id, hid_t space_id, hid_t acpl_id, hid_t aapl_id, hid_t lapl_id) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Acreate_by_name(loc_id, obj_name, attr_name, type_id, space_id, acpl_id, aapl_id, lapl_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2714; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2714; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2714; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2714; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2715
+ *     cdef hid_t r
+ *     with rlock:
+ *         r = _hdf5.H5Acreate_by_name(loc_id, obj_name, attr_name, type_id, space_id, acpl_id, aapl_id, lapl_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Acreate_by_name(__pyx_v_loc_id, __pyx_v_obj_name, __pyx_v_attr_name, __pyx_v_type_id, __pyx_v_space_id, __pyx_v_acpl_id, __pyx_v_aapl_id, __pyx_v_lapl_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2715; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2716
+ *     with rlock:
+ *         r = _hdf5.H5Acreate_by_name(loc_id, obj_name, attr_name, type_id, space_id, acpl_id, aapl_id, lapl_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2717
+ *         r = _hdf5.H5Acreate_by_name(loc_id, obj_name, attr_name, type_id, space_id, acpl_id, aapl_id, lapl_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <hid_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2717; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2718
+ *         if r<0:
+ *             if set_exception():
+ *                 return <hid_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((hid_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2719
+ *             if set_exception():
+ *                 return <hid_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Aopen(hid_t obj_id, char *attr_name, hid_t aapl_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2714
+ * cdef hid_t H5Acreate_by_name(hid_t loc_id, char *obj_name, char *attr_name, hid_t type_id, hid_t space_id, hid_t acpl_id, hid_t aapl_id, hid_t lapl_id) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Acreate_by_name(loc_id, obj_name, attr_name, type_id, space_id, acpl_id, aapl_id, lapl_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Acreate_by_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2714; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2714; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2714; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2714; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2714; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_304, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2714; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2714; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Acreate_by_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2721
+ *         return r
+ * 
+ * cdef herr_t H5Aopen(hid_t obj_id, char *attr_name, hid_t aapl_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Aopen(hid_t __pyx_v_obj_id, char *__pyx_v_attr_name, hid_t __pyx_v_aapl_id) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Aopen", 0);
+
+  /* "h5py/defs.pyx":2723
+ * cdef herr_t H5Aopen(hid_t obj_id, char *attr_name, hid_t aapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Aopen(obj_id, attr_name, aapl_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2723; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2723; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2723; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2723; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2724
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Aopen(obj_id, attr_name, aapl_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Aopen(__pyx_v_obj_id, __pyx_v_attr_name, __pyx_v_aapl_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2724; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2725
+ *     with rlock:
+ *         r = _hdf5.H5Aopen(obj_id, attr_name, aapl_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2726
+ *         r = _hdf5.H5Aopen(obj_id, attr_name, aapl_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2726; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2727
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2728
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Aopen_by_name( hid_t loc_id, char *obj_name, char *attr_name, hid_t aapl_id, hid_t lapl_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2723
+ * cdef herr_t H5Aopen(hid_t obj_id, char *attr_name, hid_t aapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Aopen(obj_id, attr_name, aapl_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Aopen", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2723; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2723; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2723; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2723; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2723; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_305, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2723; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2723; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Aopen", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2730
+ *         return r
+ * 
+ * cdef herr_t H5Aopen_by_name( hid_t loc_id, char *obj_name, char *attr_name, hid_t aapl_id, hid_t lapl_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Aopen_by_name(hid_t __pyx_v_loc_id, char *__pyx_v_obj_name, char *__pyx_v_attr_name, hid_t __pyx_v_aapl_id, hid_t __pyx_v_lapl_id) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Aopen_by_name", 0);
+
+  /* "h5py/defs.pyx":2732
+ * cdef herr_t H5Aopen_by_name( hid_t loc_id, char *obj_name, char *attr_name, hid_t aapl_id, hid_t lapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Aopen_by_name(loc_id, obj_name, attr_name, aapl_id, lapl_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2732; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2732; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2732; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2732; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2733
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Aopen_by_name(loc_id, obj_name, attr_name, aapl_id, lapl_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Aopen_by_name(__pyx_v_loc_id, __pyx_v_obj_name, __pyx_v_attr_name, __pyx_v_aapl_id, __pyx_v_lapl_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2733; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2734
+ *     with rlock:
+ *         r = _hdf5.H5Aopen_by_name(loc_id, obj_name, attr_name, aapl_id, lapl_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2735
+ *         r = _hdf5.H5Aopen_by_name(loc_id, obj_name, attr_name, aapl_id, lapl_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2735; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2736
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2737
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Aopen_by_idx(hid_t loc_id, char *obj_name, H5_index_t idx_type, H5_iter_order_t order, hsize_t n, hid_t aapl_id, hid_t lapl_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2732
+ * cdef herr_t H5Aopen_by_name( hid_t loc_id, char *obj_name, char *attr_name, hid_t aapl_id, hid_t lapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Aopen_by_name(loc_id, obj_name, attr_name, aapl_id, lapl_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Aopen_by_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2732; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2732; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2732; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2732; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2732; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_306, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2732; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2732; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Aopen_by_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2739
+ *         return r
+ * 
+ * cdef herr_t H5Aopen_by_idx(hid_t loc_id, char *obj_name, H5_index_t idx_type, H5_iter_order_t order, hsize_t n, hid_t aapl_id, hid_t lapl_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Aopen_by_idx(hid_t __pyx_v_loc_id, char *__pyx_v_obj_name, H5_index_t __pyx_v_idx_type, H5_iter_order_t __pyx_v_order, hsize_t __pyx_v_n, hid_t __pyx_v_aapl_id, hid_t __pyx_v_lapl_id) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Aopen_by_idx", 0);
+
+  /* "h5py/defs.pyx":2741
+ * cdef herr_t H5Aopen_by_idx(hid_t loc_id, char *obj_name, H5_index_t idx_type, H5_iter_order_t order, hsize_t n, hid_t aapl_id, hid_t lapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Aopen_by_idx(loc_id, obj_name, idx_type, order, n, aapl_id, lapl_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2741; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2741; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2741; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2741; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2742
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Aopen_by_idx(loc_id, obj_name, idx_type, order, n, aapl_id, lapl_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Aopen_by_idx(__pyx_v_loc_id, __pyx_v_obj_name, __pyx_v_idx_type, __pyx_v_order, __pyx_v_n, __pyx_v_aapl_id, __pyx_v_lapl_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2742; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2743
+ *     with rlock:
+ *         r = _hdf5.H5Aopen_by_idx(loc_id, obj_name, idx_type, order, n, aapl_id, lapl_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2744
+ *         r = _hdf5.H5Aopen_by_idx(loc_id, obj_name, idx_type, order, n, aapl_id, lapl_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2744; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2745
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2746
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef htri_t H5Aexists_by_name( hid_t loc_id, char *obj_name, char *attr_name, hid_t lapl_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2741
+ * cdef herr_t H5Aopen_by_idx(hid_t loc_id, char *obj_name, H5_index_t idx_type, H5_iter_order_t order, hsize_t n, hid_t aapl_id, hid_t lapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Aopen_by_idx(loc_id, obj_name, idx_type, order, n, aapl_id, lapl_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Aopen_by_idx", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2741; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2741; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2741; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2741; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2741; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_307, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2741; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2741; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Aopen_by_idx", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2748
+ *         return r
+ * 
+ * cdef htri_t H5Aexists_by_name( hid_t loc_id, char *obj_name, char *attr_name, hid_t lapl_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef htri_t r
+ *     with rlock:
+ */
+
+static htri_t __pyx_f_4h5py_4defs_H5Aexists_by_name(hid_t __pyx_v_loc_id, char *__pyx_v_obj_name, char *__pyx_v_attr_name, hid_t __pyx_v_lapl_id) {
+  htri_t __pyx_v_r;
+  htri_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  htri_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Aexists_by_name", 0);
+
+  /* "h5py/defs.pyx":2750
+ * cdef htri_t H5Aexists_by_name( hid_t loc_id, char *obj_name, char *attr_name, hid_t lapl_id) except *:
+ *     cdef htri_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Aexists_by_name(loc_id, obj_name, attr_name, lapl_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2750; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2750; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2750; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2750; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2751
+ *     cdef htri_t r
+ *     with rlock:
+ *         r = _hdf5.H5Aexists_by_name(loc_id, obj_name, attr_name, lapl_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Aexists_by_name(__pyx_v_loc_id, __pyx_v_obj_name, __pyx_v_attr_name, __pyx_v_lapl_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2751; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2752
+ *     with rlock:
+ *         r = _hdf5.H5Aexists_by_name(loc_id, obj_name, attr_name, lapl_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <htri_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2753
+ *         r = _hdf5.H5Aexists_by_name(loc_id, obj_name, attr_name, lapl_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <htri_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2753; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2754
+ *         if r<0:
+ *             if set_exception():
+ *                 return <htri_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((htri_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2755
+ *             if set_exception():
+ *                 return <htri_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef htri_t H5Aexists(hid_t obj_id, char *attr_name) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2750
+ * cdef htri_t H5Aexists_by_name( hid_t loc_id, char *obj_name, char *attr_name, hid_t lapl_id) except *:
+ *     cdef htri_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Aexists_by_name(loc_id, obj_name, attr_name, lapl_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Aexists_by_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2750; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2750; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2750; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2750; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2750; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_308, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2750; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2750; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Aexists_by_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2757
+ *         return r
+ * 
+ * cdef htri_t H5Aexists(hid_t obj_id, char *attr_name) except *:             # <<<<<<<<<<<<<<
+ *     cdef htri_t r
+ *     with rlock:
+ */
+
+static htri_t __pyx_f_4h5py_4defs_H5Aexists(hid_t __pyx_v_obj_id, char *__pyx_v_attr_name) {
+  htri_t __pyx_v_r;
+  htri_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  htri_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Aexists", 0);
+
+  /* "h5py/defs.pyx":2759
+ * cdef htri_t H5Aexists(hid_t obj_id, char *attr_name) except *:
+ *     cdef htri_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Aexists(obj_id, attr_name)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2759; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2759; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2759; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2759; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2760
+ *     cdef htri_t r
+ *     with rlock:
+ *         r = _hdf5.H5Aexists(obj_id, attr_name)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Aexists(__pyx_v_obj_id, __pyx_v_attr_name); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2760; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2761
+ *     with rlock:
+ *         r = _hdf5.H5Aexists(obj_id, attr_name)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <htri_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2762
+ *         r = _hdf5.H5Aexists(obj_id, attr_name)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <htri_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2762; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2763
+ *         if r<0:
+ *             if set_exception():
+ *                 return <htri_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((htri_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2764
+ *             if set_exception():
+ *                 return <htri_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Arename(hid_t loc_id, char *old_attr_name, char *new_attr_name) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2759
+ * cdef htri_t H5Aexists(hid_t obj_id, char *attr_name) except *:
+ *     cdef htri_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Aexists(obj_id, attr_name)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Aexists", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2759; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2759; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2759; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2759; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2759; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_309, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2759; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2759; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Aexists", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2766
+ *         return r
+ * 
+ * cdef herr_t H5Arename(hid_t loc_id, char *old_attr_name, char *new_attr_name) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Arename(hid_t __pyx_v_loc_id, char *__pyx_v_old_attr_name, char *__pyx_v_new_attr_name) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Arename", 0);
+
+  /* "h5py/defs.pyx":2768
+ * cdef herr_t H5Arename(hid_t loc_id, char *old_attr_name, char *new_attr_name) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Arename(loc_id, old_attr_name, new_attr_name)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2768; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2768; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2768; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2768; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2769
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Arename(loc_id, old_attr_name, new_attr_name)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Arename(__pyx_v_loc_id, __pyx_v_old_attr_name, __pyx_v_new_attr_name); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2769; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2770
+ *     with rlock:
+ *         r = _hdf5.H5Arename(loc_id, old_attr_name, new_attr_name)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2771
+ *         r = _hdf5.H5Arename(loc_id, old_attr_name, new_attr_name)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2771; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2772
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2773
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Arename_by_name(hid_t loc_id, char *obj_name, char *old_attr_name, char *new_attr_name, hid_t lapl_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2768
+ * cdef herr_t H5Arename(hid_t loc_id, char *old_attr_name, char *new_attr_name) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Arename(loc_id, old_attr_name, new_attr_name)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Arename", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2768; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2768; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2768; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2768; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2768; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_310, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2768; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2768; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Arename", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2775
+ *         return r
+ * 
+ * cdef herr_t H5Arename_by_name(hid_t loc_id, char *obj_name, char *old_attr_name, char *new_attr_name, hid_t lapl_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Arename_by_name(hid_t __pyx_v_loc_id, char *__pyx_v_obj_name, char *__pyx_v_old_attr_name, char *__pyx_v_new_attr_name, hid_t __pyx_v_lapl_id) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Arename_by_name", 0);
+
+  /* "h5py/defs.pyx":2777
+ * cdef herr_t H5Arename_by_name(hid_t loc_id, char *obj_name, char *old_attr_name, char *new_attr_name, hid_t lapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Arename_by_name(loc_id, obj_name, old_attr_name, new_attr_name, lapl_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2777; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2777; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2777; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2777; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2778
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Arename_by_name(loc_id, obj_name, old_attr_name, new_attr_name, lapl_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Arename_by_name(__pyx_v_loc_id, __pyx_v_obj_name, __pyx_v_old_attr_name, __pyx_v_new_attr_name, __pyx_v_lapl_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2778; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2779
+ *     with rlock:
+ *         r = _hdf5.H5Arename_by_name(loc_id, obj_name, old_attr_name, new_attr_name, lapl_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2780
+ *         r = _hdf5.H5Arename_by_name(loc_id, obj_name, old_attr_name, new_attr_name, lapl_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2780; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2781
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2782
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Aget_info( hid_t attr_id, H5A_info_t *ainfo) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2777
+ * cdef herr_t H5Arename_by_name(hid_t loc_id, char *obj_name, char *old_attr_name, char *new_attr_name, hid_t lapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Arename_by_name(loc_id, obj_name, old_attr_name, new_attr_name, lapl_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Arename_by_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2777; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2777; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2777; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2777; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2777; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_311, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2777; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2777; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Arename_by_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2784
+ *         return r
+ * 
+ * cdef herr_t H5Aget_info( hid_t attr_id, H5A_info_t *ainfo) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Aget_info(hid_t __pyx_v_attr_id, H5A_info_t *__pyx_v_ainfo) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Aget_info", 0);
+
+  /* "h5py/defs.pyx":2786
+ * cdef herr_t H5Aget_info( hid_t attr_id, H5A_info_t *ainfo) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Aget_info(attr_id, ainfo)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2786; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2786; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2786; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2786; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2787
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Aget_info(attr_id, ainfo)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Aget_info(__pyx_v_attr_id, __pyx_v_ainfo); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2787; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2788
+ *     with rlock:
+ *         r = _hdf5.H5Aget_info(attr_id, ainfo)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2789
+ *         r = _hdf5.H5Aget_info(attr_id, ainfo)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2789; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2790
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2791
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Aget_info_by_name(hid_t loc_id, char *obj_name, char *attr_name, H5A_info_t *ainfo, hid_t lapl_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2786
+ * cdef herr_t H5Aget_info( hid_t attr_id, H5A_info_t *ainfo) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Aget_info(attr_id, ainfo)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Aget_info", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2786; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2786; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2786; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2786; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2786; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_312, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2786; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2786; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Aget_info", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2793
+ *         return r
+ * 
+ * cdef herr_t H5Aget_info_by_name(hid_t loc_id, char *obj_name, char *attr_name, H5A_info_t *ainfo, hid_t lapl_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Aget_info_by_name(hid_t __pyx_v_loc_id, char *__pyx_v_obj_name, char *__pyx_v_attr_name, H5A_info_t *__pyx_v_ainfo, hid_t __pyx_v_lapl_id) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Aget_info_by_name", 0);
+
+  /* "h5py/defs.pyx":2795
+ * cdef herr_t H5Aget_info_by_name(hid_t loc_id, char *obj_name, char *attr_name, H5A_info_t *ainfo, hid_t lapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Aget_info_by_name(loc_id, obj_name, attr_name, ainfo, lapl_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2795; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2795; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2795; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2795; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2796
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Aget_info_by_name(loc_id, obj_name, attr_name, ainfo, lapl_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Aget_info_by_name(__pyx_v_loc_id, __pyx_v_obj_name, __pyx_v_attr_name, __pyx_v_ainfo, __pyx_v_lapl_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2796; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2797
+ *     with rlock:
+ *         r = _hdf5.H5Aget_info_by_name(loc_id, obj_name, attr_name, ainfo, lapl_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2798
+ *         r = _hdf5.H5Aget_info_by_name(loc_id, obj_name, attr_name, ainfo, lapl_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2798; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2799
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2800
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Aget_info_by_idx(hid_t loc_id, char *obj_name, H5_index_t idx_type, H5_iter_order_t order, hsize_t n, H5A_info_t *ainfo, hid_t lapl_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2795
+ * cdef herr_t H5Aget_info_by_name(hid_t loc_id, char *obj_name, char *attr_name, H5A_info_t *ainfo, hid_t lapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Aget_info_by_name(loc_id, obj_name, attr_name, ainfo, lapl_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Aget_info_by_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2795; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2795; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2795; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2795; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2795; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_313, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2795; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2795; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Aget_info_by_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2802
+ *         return r
+ * 
+ * cdef herr_t H5Aget_info_by_idx(hid_t loc_id, char *obj_name, H5_index_t idx_type, H5_iter_order_t order, hsize_t n, H5A_info_t *ainfo, hid_t lapl_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Aget_info_by_idx(hid_t __pyx_v_loc_id, char *__pyx_v_obj_name, H5_index_t __pyx_v_idx_type, H5_iter_order_t __pyx_v_order, hsize_t __pyx_v_n, H5A_info_t *__pyx_v_ainfo, hid_t __pyx_v_lapl_id) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Aget_info_by_idx", 0);
+
+  /* "h5py/defs.pyx":2804
+ * cdef herr_t H5Aget_info_by_idx(hid_t loc_id, char *obj_name, H5_index_t idx_type, H5_iter_order_t order, hsize_t n, H5A_info_t *ainfo, hid_t lapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Aget_info_by_idx(loc_id, obj_name, idx_type, order, n, ainfo, lapl_id)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2804; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2804; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2804; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2804; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2805
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Aget_info_by_idx(loc_id, obj_name, idx_type, order, n, ainfo, lapl_id)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Aget_info_by_idx(__pyx_v_loc_id, __pyx_v_obj_name, __pyx_v_idx_type, __pyx_v_order, __pyx_v_n, __pyx_v_ainfo, __pyx_v_lapl_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2805; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2806
+ *     with rlock:
+ *         r = _hdf5.H5Aget_info_by_idx(loc_id, obj_name, idx_type, order, n, ainfo, lapl_id)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2807
+ *         r = _hdf5.H5Aget_info_by_idx(loc_id, obj_name, idx_type, order, n, ainfo, lapl_id)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2807; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2808
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2809
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5Aiterate2(hid_t obj_id, H5_index_t idx_type, H5_iter_order_t order, hsize_t *n, H5A_operator2_t op, void *op_data) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2804
+ * cdef herr_t H5Aget_info_by_idx(hid_t loc_id, char *obj_name, H5_index_t idx_type, H5_iter_order_t order, hsize_t n, H5A_info_t *ainfo, hid_t lapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Aget_info_by_idx(loc_id, obj_name, idx_type, order, n, ainfo, lapl_id)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Aget_info_by_idx", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2804; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2804; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2804; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2804; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2804; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_314, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2804; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2804; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Aget_info_by_idx", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2811
+ *         return r
+ * 
+ * cdef herr_t H5Aiterate2(hid_t obj_id, H5_index_t idx_type, H5_iter_order_t order, hsize_t *n, H5A_operator2_t op, void *op_data) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5Aiterate2(hid_t __pyx_v_obj_id, H5_index_t __pyx_v_idx_type, H5_iter_order_t __pyx_v_order, hsize_t *__pyx_v_n, H5A_operator2_t __pyx_v_op, void *__pyx_v_op_data) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Aiterate2", 0);
+
+  /* "h5py/defs.pyx":2813
+ * cdef herr_t H5Aiterate2(hid_t obj_id, H5_index_t idx_type, H5_iter_order_t order, hsize_t *n, H5A_operator2_t op, void *op_data) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Aiterate2(obj_id, idx_type, order, n, op, op_data)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2813; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2813; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2813; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2813; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2814
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5Aiterate2(obj_id, idx_type, order, n, op, op_data)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Aiterate2(__pyx_v_obj_id, __pyx_v_idx_type, __pyx_v_order, __pyx_v_n, __pyx_v_op, __pyx_v_op_data); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2814; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2815
+ *     with rlock:
+ *         r = _hdf5.H5Aiterate2(obj_id, idx_type, order, n, op, op_data)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2816
+ *         r = _hdf5.H5Aiterate2(obj_id, idx_type, order, n, op, op_data)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2816; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2817
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2818
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef hsize_t H5Aget_storage_size(hid_t attr_id) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2813
+ * cdef herr_t H5Aiterate2(hid_t obj_id, H5_index_t idx_type, H5_iter_order_t order, hsize_t *n, H5A_operator2_t op, void *op_data) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Aiterate2(obj_id, idx_type, order, n, op, op_data)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Aiterate2", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2813; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2813; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2813; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2813; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2813; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_315, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2813; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2813; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Aiterate2", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2820
+ *         return r
+ * 
+ * cdef hsize_t H5Aget_storage_size(hid_t attr_id) except *:             # <<<<<<<<<<<<<<
+ *     cdef hsize_t r
+ *     with rlock:
+ */
+
+static hsize_t __pyx_f_4h5py_4defs_H5Aget_storage_size(hid_t __pyx_v_attr_id) {
+  hsize_t __pyx_v_r;
+  hsize_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  hsize_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5Aget_storage_size", 0);
+
+  /* "h5py/defs.pyx":2822
+ * cdef hsize_t H5Aget_storage_size(hid_t attr_id) except *:
+ *     cdef hsize_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Aget_storage_size(attr_id)
+ *         if r==0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2822; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2822; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2822; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2822; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2823
+ *     cdef hsize_t r
+ *     with rlock:
+ *         r = _hdf5.H5Aget_storage_size(attr_id)             # <<<<<<<<<<<<<<
+ *         if r==0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5Aget_storage_size(__pyx_v_attr_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2823; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2824
+ *     with rlock:
+ *         r = _hdf5.H5Aget_storage_size(attr_id)
+ *         if r==0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <hsize_t>0;
+ */
+          __pyx_t_9 = (__pyx_v_r == 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2825
+ *         r = _hdf5.H5Aget_storage_size(attr_id)
+ *         if r==0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <hsize_t>0;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2825; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2826
+ *         if r==0:
+ *             if set_exception():
+ *                 return <hsize_t>0;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((hsize_t)0);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2827
+ *             if set_exception():
+ *                 return <hsize_t>0;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * IF MPI:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2822
+ * cdef hsize_t H5Aget_storage_size(hid_t attr_id) except *:
+ *     cdef hsize_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Aget_storage_size(attr_id)
+ *         if r==0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5Aget_storage_size", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2822; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2822; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2822; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2822; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2822; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_316, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2822; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2822; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5Aget_storage_size", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2871
+ *                 return r
+ * 
+ * cdef herr_t H5DSattach_scale(hid_t did, hid_t dsid, unsigned int idx) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5DSattach_scale(hid_t __pyx_v_did, hid_t __pyx_v_dsid, unsigned int __pyx_v_idx) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5DSattach_scale", 0);
+
+  /* "h5py/defs.pyx":2873
+ * cdef herr_t H5DSattach_scale(hid_t did, hid_t dsid, unsigned int idx) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5DSattach_scale(did, dsid, idx)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2873; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2873; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2873; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2873; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2874
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5DSattach_scale(did, dsid, idx)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5DSattach_scale(__pyx_v_did, __pyx_v_dsid, __pyx_v_idx); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2874; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2875
+ *     with rlock:
+ *         r = _hdf5.H5DSattach_scale(did, dsid, idx)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2876
+ *         r = _hdf5.H5DSattach_scale(did, dsid, idx)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2876; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2877
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2878
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5DSdetach_scale(hid_t did, hid_t dsid, unsigned int idx) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2873
+ * cdef herr_t H5DSattach_scale(hid_t did, hid_t dsid, unsigned int idx) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5DSattach_scale(did, dsid, idx)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5DSattach_scale", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2873; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2873; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2873; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2873; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2873; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_317, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2873; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2873; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5DSattach_scale", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2880
+ *         return r
+ * 
+ * cdef herr_t H5DSdetach_scale(hid_t did, hid_t dsid, unsigned int idx) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5DSdetach_scale(hid_t __pyx_v_did, hid_t __pyx_v_dsid, unsigned int __pyx_v_idx) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5DSdetach_scale", 0);
+
+  /* "h5py/defs.pyx":2882
+ * cdef herr_t H5DSdetach_scale(hid_t did, hid_t dsid, unsigned int idx) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5DSdetach_scale(did, dsid, idx)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2882; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2882; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2882; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2882; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2883
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5DSdetach_scale(did, dsid, idx)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5DSdetach_scale(__pyx_v_did, __pyx_v_dsid, __pyx_v_idx); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2883; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2884
+ *     with rlock:
+ *         r = _hdf5.H5DSdetach_scale(did, dsid, idx)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2885
+ *         r = _hdf5.H5DSdetach_scale(did, dsid, idx)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2885; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2886
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2887
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5DSset_scale(hid_t dsid, char *dimname) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2882
+ * cdef herr_t H5DSdetach_scale(hid_t did, hid_t dsid, unsigned int idx) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5DSdetach_scale(did, dsid, idx)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5DSdetach_scale", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2882; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2882; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2882; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2882; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2882; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_318, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2882; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2882; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5DSdetach_scale", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2889
+ *         return r
+ * 
+ * cdef herr_t H5DSset_scale(hid_t dsid, char *dimname) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5DSset_scale(hid_t __pyx_v_dsid, char *__pyx_v_dimname) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5DSset_scale", 0);
+
+  /* "h5py/defs.pyx":2891
+ * cdef herr_t H5DSset_scale(hid_t dsid, char *dimname) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5DSset_scale(dsid, dimname)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2891; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2891; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2891; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2891; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2892
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5DSset_scale(dsid, dimname)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5DSset_scale(__pyx_v_dsid, __pyx_v_dimname); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2892; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2893
+ *     with rlock:
+ *         r = _hdf5.H5DSset_scale(dsid, dimname)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2894
+ *         r = _hdf5.H5DSset_scale(dsid, dimname)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2894; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2895
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2896
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef int H5DSget_num_scales(hid_t did, unsigned int dim) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2891
+ * cdef herr_t H5DSset_scale(hid_t dsid, char *dimname) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5DSset_scale(dsid, dimname)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5DSset_scale", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2891; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2891; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2891; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2891; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2891; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_319, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2891; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2891; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5DSset_scale", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2898
+ *         return r
+ * 
+ * cdef int H5DSget_num_scales(hid_t did, unsigned int dim) except *:             # <<<<<<<<<<<<<<
+ *     cdef int r
+ *     with rlock:
+ */
+
+static int __pyx_f_4h5py_4defs_H5DSget_num_scales(hid_t __pyx_v_did, unsigned int __pyx_v_dim) {
+  int __pyx_v_r;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  int __pyx_t_8;
+  int __pyx_t_9;
+  PyObject *__pyx_t_10 = NULL;
+  PyObject *__pyx_t_11 = NULL;
+  int __pyx_t_12;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5DSget_num_scales", 0);
+
+  /* "h5py/defs.pyx":2900
+ * cdef int H5DSget_num_scales(hid_t did, unsigned int dim) except *:
+ *     cdef int r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5DSget_num_scales(did, dim)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2900; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2900; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2900; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2900; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2901
+ *     cdef int r
+ *     with rlock:
+ *         r = _hdf5.H5DSget_num_scales(did, dim)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5DSget_num_scales(__pyx_v_did, __pyx_v_dim); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2901; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2902
+ *     with rlock:
+ *         r = _hdf5.H5DSget_num_scales(did, dim)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <int>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2903
+ *         r = _hdf5.H5DSget_num_scales(did, dim)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <int>-1;
+ *         return r
+ */
+            __pyx_t_8 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2903; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_8) {
+
+              /* "h5py/defs.pyx":2904
+ *         if r<0:
+ *             if set_exception():
+ *                 return <int>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((int)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2905
+ *             if set_exception():
+ *                 return <int>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5DSset_label(hid_t did, unsigned int idx, char *label) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2900
+ * cdef int H5DSget_num_scales(hid_t did, unsigned int dim) except *:
+ *     cdef int r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5DSget_num_scales(did, dim)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5DSget_num_scales", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2900; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_10 = PyTuple_New(3); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2900; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_10);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_10, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_11 = PyObject_Call(__pyx_t_2, __pyx_t_10, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2900; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_11);
+          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2900; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_12 = (!__pyx_t_9);
+          if (__pyx_t_12) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2900; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_10)); __pyx_t_10 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_320, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2900; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2900; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_10);
+  __Pyx_AddTraceback("h5py.defs.H5DSget_num_scales", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2907
+ *         return r
+ * 
+ * cdef herr_t H5DSset_label(hid_t did, unsigned int idx, char *label) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5DSset_label(hid_t __pyx_v_did, unsigned int __pyx_v_idx, char *__pyx_v_label) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5DSset_label", 0);
+
+  /* "h5py/defs.pyx":2909
+ * cdef herr_t H5DSset_label(hid_t did, unsigned int idx, char *label) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5DSset_label(did, idx, label)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2909; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2909; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2909; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2909; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2910
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5DSset_label(did, idx, label)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5DSset_label(__pyx_v_did, __pyx_v_idx, __pyx_v_label); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2910; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2911
+ *     with rlock:
+ *         r = _hdf5.H5DSset_label(did, idx, label)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2912
+ *         r = _hdf5.H5DSset_label(did, idx, label)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2912; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2913
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2914
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef ssize_t H5DSget_label(hid_t did, unsigned int idx, char *label, size_t size) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2909
+ * cdef herr_t H5DSset_label(hid_t did, unsigned int idx, char *label) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5DSset_label(did, idx, label)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5DSset_label", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2909; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2909; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2909; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2909; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2909; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_321, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2909; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2909; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5DSset_label", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2916
+ *         return r
+ * 
+ * cdef ssize_t H5DSget_label(hid_t did, unsigned int idx, char *label, size_t size) except *:             # <<<<<<<<<<<<<<
+ *     cdef ssize_t r
+ *     with rlock:
+ */
+
+static Py_ssize_t __pyx_f_4h5py_4defs_H5DSget_label(hid_t __pyx_v_did, unsigned int __pyx_v_idx, char *__pyx_v_label, size_t __pyx_v_size) {
+  Py_ssize_t __pyx_v_r;
+  Py_ssize_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  Py_ssize_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5DSget_label", 0);
+
+  /* "h5py/defs.pyx":2918
+ * cdef ssize_t H5DSget_label(hid_t did, unsigned int idx, char *label, size_t size) except *:
+ *     cdef ssize_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5DSget_label(did, idx, label, size)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2918; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2918; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2918; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2918; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2919
+ *     cdef ssize_t r
+ *     with rlock:
+ *         r = _hdf5.H5DSget_label(did, idx, label, size)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5DSget_label(__pyx_v_did, __pyx_v_idx, __pyx_v_label, __pyx_v_size); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2919; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2920
+ *     with rlock:
+ *         r = _hdf5.H5DSget_label(did, idx, label, size)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <ssize_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2921
+ *         r = _hdf5.H5DSget_label(did, idx, label, size)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <ssize_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2921; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2922
+ *         if r<0:
+ *             if set_exception():
+ *                 return <ssize_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((Py_ssize_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2923
+ *             if set_exception():
+ *                 return <ssize_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef ssize_t H5DSget_scale_name(hid_t did, char *name, size_t size) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2918
+ * cdef ssize_t H5DSget_label(hid_t did, unsigned int idx, char *label, size_t size) except *:
+ *     cdef ssize_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5DSget_label(did, idx, label, size)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5DSget_label", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2918; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2918; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2918; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2918; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2918; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_322, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2918; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2918; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5DSget_label", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2925
+ *         return r
+ * 
+ * cdef ssize_t H5DSget_scale_name(hid_t did, char *name, size_t size) except *:             # <<<<<<<<<<<<<<
+ *     cdef ssize_t r
+ *     with rlock:
+ */
+
+static Py_ssize_t __pyx_f_4h5py_4defs_H5DSget_scale_name(hid_t __pyx_v_did, char *__pyx_v_name, size_t __pyx_v_size) {
+  Py_ssize_t __pyx_v_r;
+  Py_ssize_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  Py_ssize_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5DSget_scale_name", 0);
+
+  /* "h5py/defs.pyx":2927
+ * cdef ssize_t H5DSget_scale_name(hid_t did, char *name, size_t size) except *:
+ *     cdef ssize_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5DSget_scale_name(did, name, size)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2927; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2927; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2927; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2927; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2928
+ *     cdef ssize_t r
+ *     with rlock:
+ *         r = _hdf5.H5DSget_scale_name(did, name, size)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5DSget_scale_name(__pyx_v_did, __pyx_v_name, __pyx_v_size); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2928; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2929
+ *     with rlock:
+ *         r = _hdf5.H5DSget_scale_name(did, name, size)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <ssize_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2930
+ *         r = _hdf5.H5DSget_scale_name(did, name, size)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <ssize_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2930; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2931
+ *         if r<0:
+ *             if set_exception():
+ *                 return <ssize_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((Py_ssize_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2932
+ *             if set_exception():
+ *                 return <ssize_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef htri_t H5DSis_scale(hid_t did) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2927
+ * cdef ssize_t H5DSget_scale_name(hid_t did, char *name, size_t size) except *:
+ *     cdef ssize_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5DSget_scale_name(did, name, size)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5DSget_scale_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2927; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2927; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2927; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2927; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2927; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_323, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2927; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2927; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5DSget_scale_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2934
+ *         return r
+ * 
+ * cdef htri_t H5DSis_scale(hid_t did) except *:             # <<<<<<<<<<<<<<
+ *     cdef htri_t r
+ *     with rlock:
+ */
+
+static htri_t __pyx_f_4h5py_4defs_H5DSis_scale(hid_t __pyx_v_did) {
+  htri_t __pyx_v_r;
+  htri_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  htri_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5DSis_scale", 0);
+
+  /* "h5py/defs.pyx":2936
+ * cdef htri_t H5DSis_scale(hid_t did) except *:
+ *     cdef htri_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5DSis_scale(did)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2936; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2936; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2936; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2936; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2937
+ *     cdef htri_t r
+ *     with rlock:
+ *         r = _hdf5.H5DSis_scale(did)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5DSis_scale(__pyx_v_did); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2937; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2938
+ *     with rlock:
+ *         r = _hdf5.H5DSis_scale(did)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <htri_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2939
+ *         r = _hdf5.H5DSis_scale(did)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <htri_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2939; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2940
+ *         if r<0:
+ *             if set_exception():
+ *                 return <htri_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((htri_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2941
+ *             if set_exception():
+ *                 return <htri_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t H5DSiterate_scales(hid_t did, unsigned int dim, int *idx, H5DS_iterate_t visitor, void *visitor_data) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2936
+ * cdef htri_t H5DSis_scale(hid_t did) except *:
+ *     cdef htri_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5DSis_scale(did)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5DSis_scale", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2936; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2936; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2936; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2936; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2936; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_324, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2936; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2936; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5DSis_scale", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2943
+ *         return r
+ * 
+ * cdef herr_t H5DSiterate_scales(hid_t did, unsigned int dim, int *idx, H5DS_iterate_t visitor, void *visitor_data) except *:             # <<<<<<<<<<<<<<
+ *     cdef herr_t r
+ *     with rlock:
+ */
+
+static herr_t __pyx_f_4h5py_4defs_H5DSiterate_scales(hid_t __pyx_v_did, unsigned int __pyx_v_dim, int *__pyx_v_idx, H5DS_iterate_t __pyx_v_visitor, void *__pyx_v_visitor_data) {
+  herr_t __pyx_v_r;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5DSiterate_scales", 0);
+
+  /* "h5py/defs.pyx":2945
+ * cdef herr_t H5DSiterate_scales(hid_t did, unsigned int dim, int *idx, H5DS_iterate_t visitor, void *visitor_data) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5DSiterate_scales(did, dim, idx, visitor, visitor_data)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2945; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2945; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2945; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2945; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2946
+ *     cdef herr_t r
+ *     with rlock:
+ *         r = _hdf5.H5DSiterate_scales(did, dim, idx, visitor, visitor_data)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5DSiterate_scales(__pyx_v_did, __pyx_v_dim, __pyx_v_idx, __pyx_v_visitor, __pyx_v_visitor_data); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2946; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2947
+ *     with rlock:
+ *         r = _hdf5.H5DSiterate_scales(did, dim, idx, visitor, visitor_data)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2948
+ *         r = _hdf5.H5DSiterate_scales(did, dim, idx, visitor, visitor_data)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <herr_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2948; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2949
+ *         if r<0:
+ *             if set_exception():
+ *                 return <herr_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((herr_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2950
+ *             if set_exception():
+ *                 return <herr_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ * cdef htri_t H5DSis_attached(hid_t did, hid_t dsid, unsigned int idx) except *:
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2945
+ * cdef herr_t H5DSiterate_scales(hid_t did, unsigned int dim, int *idx, H5DS_iterate_t visitor, void *visitor_data) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5DSiterate_scales(did, dim, idx, visitor, visitor_data)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5DSiterate_scales", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2945; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2945; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2945; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2945; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2945; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_325, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2945; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2945; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5DSiterate_scales", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/defs.pyx":2952
+ *         return r
+ * 
+ * cdef htri_t H5DSis_attached(hid_t did, hid_t dsid, unsigned int idx) except *:             # <<<<<<<<<<<<<<
+ *     cdef htri_t r
+ *     with rlock:
+ */
+
+static htri_t __pyx_f_4h5py_4defs_H5DSis_attached(hid_t __pyx_v_did, hid_t __pyx_v_dsid, unsigned int __pyx_v_idx) {
+  htri_t __pyx_v_r;
+  htri_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  htri_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("H5DSis_attached", 0);
+
+  /* "h5py/defs.pyx":2954
+ * cdef htri_t H5DSis_attached(hid_t did, hid_t dsid, unsigned int idx) except *:
+ *     cdef htri_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5DSis_attached(did, dsid, idx)
+ *         if r<0:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__rlock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2954; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2954; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2954; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2954; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/defs.pyx":2955
+ *     cdef htri_t r
+ *     with rlock:
+ *         r = _hdf5.H5DSis_attached(did, dsid, idx)             # <<<<<<<<<<<<<<
+ *         if r<0:
+ *             if set_exception():
+ */
+          __pyx_t_8 = H5DSis_attached(__pyx_v_did, __pyx_v_dsid, __pyx_v_idx); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2955; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_v_r = __pyx_t_8;
+
+          /* "h5py/defs.pyx":2956
+ *     with rlock:
+ *         r = _hdf5.H5DSis_attached(did, dsid, idx)
+ *         if r<0:             # <<<<<<<<<<<<<<
+ *             if set_exception():
+ *                 return <htri_t>-1;
+ */
+          __pyx_t_9 = (__pyx_v_r < 0);
+          if (__pyx_t_9) {
+
+            /* "h5py/defs.pyx":2957
+ *         r = _hdf5.H5DSis_attached(did, dsid, idx)
+ *         if r<0:
+ *             if set_exception():             # <<<<<<<<<<<<<<
+ *                 return <htri_t>-1;
+ *         return r
+ */
+            __pyx_t_10 = __pyx_f_4h5py_7_errors_set_exception(); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2957; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            if (__pyx_t_10) {
+
+              /* "h5py/defs.pyx":2958
+ *         if r<0:
+ *             if set_exception():
+ *                 return <htri_t>-1;             # <<<<<<<<<<<<<<
+ *         return r
+ * 
+ */
+              __pyx_r = ((htri_t)-1);
+              goto __pyx_L11_try_return;
+              goto __pyx_L16;
+            }
+            __pyx_L16:;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+
+          /* "h5py/defs.pyx":2959
+ *             if set_exception():
+ *                 return <htri_t>-1;
+ *         return r             # <<<<<<<<<<<<<<
+ * 
+ */
+          __pyx_r = __pyx_v_r;
+          goto __pyx_L11_try_return;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L11_try_return:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L4;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+        /* "h5py/defs.pyx":2954
+ * cdef htri_t H5DSis_attached(hid_t did, hid_t dsid, unsigned int idx) except *:
+ *     cdef htri_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5DSis_attached(did, dsid, idx)
+ *         if r<0:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.defs.H5DSis_attached", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2954; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2954; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3);
+          __Pyx_GIVEREF(__pyx_t_3);
+          __pyx_t_12 = PyObject_Call(__pyx_t_2, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2954; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2954; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_13 = (!__pyx_t_9);
+          if (__pyx_t_13) {
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_3);
+            __Pyx_ErrRestore(__pyx_t_1, __pyx_t_4, __pyx_t_3);
+            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
+            {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2954; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L19;
+          }
+          __pyx_L19:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      int __pyx_why;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_why = 3; goto __pyx_L6;
+      __pyx_L6:;
+      if (__pyx_t_2) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_2, __pyx_k_tuple_326, NULL);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2954; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2954; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+      }
+    }
+    goto __pyx_L20;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    goto __pyx_L1_error;
+    __pyx_L20:;
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.defs.H5DSis_attached", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_tp_new_4h5py_4defs_FastRLock(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
+  PyObject *o = (*t->tp_alloc)(t, 0);
+  if (!o) return 0;
+  if (__pyx_pw_4h5py_4defs_9FastRLock_1__cinit__(o, __pyx_empty_tuple, NULL) < 0) {
+    Py_DECREF(o); o = 0;
+  }
+  return o;
+}
+
+static void __pyx_tp_dealloc_4h5py_4defs_FastRLock(PyObject *o) {
+  {
+    PyObject *etype, *eval, *etb;
+    PyErr_Fetch(&etype, &eval, &etb);
+    ++Py_REFCNT(o);
+    __pyx_pw_4h5py_4defs_9FastRLock_3__dealloc__(o);
+    if (PyErr_Occurred()) PyErr_WriteUnraisable(o);
+    --Py_REFCNT(o);
+    PyErr_Restore(etype, eval, etb);
+  }
+  (*Py_TYPE(o)->tp_free)(o);
+}
+
+static PyMethodDef __pyx_methods_4h5py_4defs_FastRLock[] = {
+  {__Pyx_NAMESTR("acquire"), (PyCFunction)__pyx_pw_4h5py_4defs_9FastRLock_5acquire, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)},
+  {__Pyx_NAMESTR("release"), (PyCFunction)__pyx_pw_4h5py_4defs_9FastRLock_7release, METH_NOARGS, __Pyx_DOCSTR(0)},
+  {__Pyx_NAMESTR("__enter__"), (PyCFunction)__pyx_pw_4h5py_4defs_9FastRLock_9__enter__, METH_NOARGS, __Pyx_DOCSTR(0)},
+  {__Pyx_NAMESTR("__exit__"), (PyCFunction)__pyx_pw_4h5py_4defs_9FastRLock_11__exit__, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)},
+  {__Pyx_NAMESTR("_is_owned"), (PyCFunction)__pyx_pw_4h5py_4defs_9FastRLock_13_is_owned, METH_NOARGS, __Pyx_DOCSTR(0)},
+  {0, 0, 0, 0}
+};
+
+static PyNumberMethods __pyx_tp_as_number_FastRLock = {
+  0, /*nb_add*/
+  0, /*nb_subtract*/
+  0, /*nb_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_divide*/
+  #endif
+  0, /*nb_remainder*/
+  0, /*nb_divmod*/
+  0, /*nb_power*/
+  0, /*nb_negative*/
+  0, /*nb_positive*/
+  0, /*nb_absolute*/
+  0, /*nb_nonzero*/
+  0, /*nb_invert*/
+  0, /*nb_lshift*/
+  0, /*nb_rshift*/
+  0, /*nb_and*/
+  0, /*nb_xor*/
+  0, /*nb_or*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_coerce*/
+  #endif
+  0, /*nb_int*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_long*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*nb_float*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_oct*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_hex*/
+  #endif
+  0, /*nb_inplace_add*/
+  0, /*nb_inplace_subtract*/
+  0, /*nb_inplace_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_inplace_divide*/
+  #endif
+  0, /*nb_inplace_remainder*/
+  0, /*nb_inplace_power*/
+  0, /*nb_inplace_lshift*/
+  0, /*nb_inplace_rshift*/
+  0, /*nb_inplace_and*/
+  0, /*nb_inplace_xor*/
+  0, /*nb_inplace_or*/
+  0, /*nb_floor_divide*/
+  0, /*nb_true_divide*/
+  0, /*nb_inplace_floor_divide*/
+  0, /*nb_inplace_true_divide*/
+  #if PY_VERSION_HEX >= 0x02050000
+  0, /*nb_index*/
+  #endif
+};
+
+static PySequenceMethods __pyx_tp_as_sequence_FastRLock = {
+  0, /*sq_length*/
+  0, /*sq_concat*/
+  0, /*sq_repeat*/
+  0, /*sq_item*/
+  0, /*sq_slice*/
+  0, /*sq_ass_item*/
+  0, /*sq_ass_slice*/
+  0, /*sq_contains*/
+  0, /*sq_inplace_concat*/
+  0, /*sq_inplace_repeat*/
+};
+
+static PyMappingMethods __pyx_tp_as_mapping_FastRLock = {
+  0, /*mp_length*/
+  0, /*mp_subscript*/
+  0, /*mp_ass_subscript*/
+};
+
+static PyBufferProcs __pyx_tp_as_buffer_FastRLock = {
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getreadbuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getwritebuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getsegcount*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getcharbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_getbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_releasebuffer*/
+  #endif
+};
+
+static PyTypeObject __pyx_type_4h5py_4defs_FastRLock = {
+  PyVarObject_HEAD_INIT(0, 0)
+  __Pyx_NAMESTR("h5py.defs.FastRLock"), /*tp_name*/
+  sizeof(struct __pyx_obj_4h5py_4defs_FastRLock), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_4h5py_4defs_FastRLock, /*tp_dealloc*/
+  0, /*tp_print*/
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*tp_repr*/
+  &__pyx_tp_as_number_FastRLock, /*tp_as_number*/
+  &__pyx_tp_as_sequence_FastRLock, /*tp_as_sequence*/
+  &__pyx_tp_as_mapping_FastRLock, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  &__pyx_tp_as_buffer_FastRLock, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
+  __Pyx_DOCSTR("Fast, re-entrant locking.\n\n    Under uncongested conditions, the lock is never acquired but only\n    counted.  Only when a second thread comes in and notices that the\n    lock is needed, it acquires the lock and notifies the first thread\n    to release it when it's done.  This is all made possible by the\n    wonderful GIL.\n    "), /*tp_doc*/
+  0, /*tp_traverse*/
+  0, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_4h5py_4defs_FastRLock, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  0, /*tp_dictoffset*/
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_4h5py_4defs_FastRLock, /*tp_new*/
+  0, /*tp_free*/
+  0, /*tp_is_gc*/
+  0, /*tp_bases*/
+  0, /*tp_mro*/
+  0, /*tp_cache*/
+  0, /*tp_subclasses*/
+  0, /*tp_weaklist*/
+  0, /*tp_del*/
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*tp_version_tag*/
+  #endif
+};
+
+static PyMethodDef __pyx_methods[] = {
+  {0, 0, 0, 0}
+};
+
+#if PY_MAJOR_VERSION >= 3
+static struct PyModuleDef __pyx_moduledef = {
+  #if PY_VERSION_HEX < 0x03020000
+    { PyObject_HEAD_INIT(NULL) NULL, 0, NULL },
+  #else
+    PyModuleDef_HEAD_INIT,
+  #endif
+    __Pyx_NAMESTR("defs"),
+    0, /* m_doc */
+    -1, /* m_size */
+    __pyx_methods /* m_methods */,
+    NULL, /* m_reload */
+    NULL, /* m_traverse */
+    NULL, /* m_clear */
+    NULL /* m_free */
+};
+#endif
+
+static __Pyx_StringTabEntry __pyx_string_tab[] = {
+  {&__pyx_kp_s_1, __pyx_k_1, sizeof(__pyx_k_1), 0, 0, 1, 0},
+  {&__pyx_n_s__RuntimeError, __pyx_k__RuntimeError, sizeof(__pyx_k__RuntimeError), 0, 0, 1, 1},
+  {&__pyx_n_s____enter__, __pyx_k____enter__, sizeof(__pyx_k____enter__), 0, 0, 1, 1},
+  {&__pyx_n_s____exit__, __pyx_k____exit__, sizeof(__pyx_k____exit__), 0, 0, 1, 1},
+  {&__pyx_n_s____main__, __pyx_k____main__, sizeof(__pyx_k____main__), 0, 0, 1, 1},
+  {&__pyx_n_s____test__, __pyx_k____test__, sizeof(__pyx_k____test__), 0, 0, 1, 1},
+  {&__pyx_n_s__blocking, __pyx_k__blocking, sizeof(__pyx_k__blocking), 0, 0, 1, 1},
+  {&__pyx_n_s__rlock, __pyx_k__rlock, sizeof(__pyx_k__rlock), 0, 0, 1, 1},
+  {&__pyx_n_s__t, __pyx_k__t, sizeof(__pyx_k__t), 0, 0, 1, 1},
+  {&__pyx_n_s__tb, __pyx_k__tb, sizeof(__pyx_k__tb), 0, 0, 1, 1},
+  {&__pyx_n_s__v, __pyx_k__v, sizeof(__pyx_k__v), 0, 0, 1, 1},
+  {0, 0, 0, 0, 0, 0, 0}
+};
+static int __Pyx_InitCachedBuiltins(void) {
+  __pyx_builtin_RuntimeError = __Pyx_GetName(__pyx_b, __pyx_n_s__RuntimeError); if (!__pyx_builtin_RuntimeError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  return 0;
+  __pyx_L1_error:;
+  return -1;
+}
+
+static int __Pyx_InitCachedConstants(void) {
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0);
+
+  /* "/home/computer/h5py/h5py/_locks.pxi":39
+ *     def release(self):
+ *         if self._owner != pythread.PyThread_get_thread_ident():
+ *             raise RuntimeError("cannot release un-acquired lock")             # <<<<<<<<<<<<<<
+ *         unlock_lock(self)
+ * 
+ */
+  __pyx_k_tuple_2 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_1)); if (unlikely(!__pyx_k_tuple_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_2);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_2));
+
+  /* "/home/computer/h5py/h5py/_locks.pxi":51
+ *         # self.release()
+ *         if self._owner != pythread.PyThread_get_thread_ident():
+ *             raise RuntimeError("cannot release un-acquired lock")             # <<<<<<<<<<<<<<
+ *         unlock_lock(self)
+ * 
+ */
+  __pyx_k_tuple_3 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_1)); if (unlikely(!__pyx_k_tuple_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_3);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_3));
+
+  /* "h5py/defs.pyx":14
+ * cdef herr_t H5open() except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5open()
+ *         if r<0:
+ */
+  __pyx_k_tuple_4 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_4);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_4));
+
+  /* "h5py/defs.pyx":23
+ * cdef herr_t H5close() except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5close()
+ *         if r<0:
+ */
+  __pyx_k_tuple_5 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_5);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_5));
+
+  /* "h5py/defs.pyx":32
+ * cdef herr_t H5get_libversion(unsigned *majnum, unsigned *minnum, unsigned *relnum) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5get_libversion(majnum, minnum, relnum)
+ *         if r<0:
+ */
+  __pyx_k_tuple_6 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_6)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_6);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_6));
+
+  /* "h5py/defs.pyx":41
+ * cdef hid_t H5Dcreate2(hid_t loc_id, char *name, hid_t type_id, hid_t space_id, hid_t lcpl_id, hid_t dcpl_id, hid_t dapl_id) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Dcreate2(loc_id, name, type_id, space_id, lcpl_id, dcpl_id, dapl_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_7 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_7);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_7));
+
+  /* "h5py/defs.pyx":50
+ * cdef hid_t H5Dcreate_anon(hid_t file_id, hid_t type_id, hid_t space_id, hid_t plist_id, hid_t dapl_id) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Dcreate_anon(file_id, type_id, space_id, plist_id, dapl_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_8 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_8)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_8);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_8));
+
+  /* "h5py/defs.pyx":59
+ * cdef hid_t H5Dopen(hid_t file_id, char *name) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Dopen(file_id, name)
+ *         if r<0:
+ */
+  __pyx_k_tuple_9 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_9)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_9);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_9));
+
+  /* "h5py/defs.pyx":68
+ * cdef herr_t H5Dclose(hid_t dset_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Dclose(dset_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_10 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_10)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_10);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_10));
+
+  /* "h5py/defs.pyx":77
+ * cdef hid_t H5Dget_space(hid_t dset_id) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Dget_space(dset_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_11 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_11)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_11);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_11));
+
+  /* "h5py/defs.pyx":86
+ * cdef herr_t H5Dget_space_status(hid_t dset_id, H5D_space_status_t *status) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Dget_space_status(dset_id, status)
+ *         if r<0:
+ */
+  __pyx_k_tuple_12 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_12)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_12);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_12));
+
+  /* "h5py/defs.pyx":95
+ * cdef hid_t H5Dget_type(hid_t dset_id) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Dget_type(dset_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_13 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_13)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_13);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_13));
+
+  /* "h5py/defs.pyx":104
+ * cdef hid_t H5Dget_create_plist(hid_t dataset_id) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Dget_create_plist(dataset_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_14 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_14)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_14);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_14));
+
+  /* "h5py/defs.pyx":113
+ * cdef haddr_t H5Dget_offset(hid_t dset_id) except *:
+ *     cdef haddr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Dget_offset(dset_id)
+ *         if r==0:
+ */
+  __pyx_k_tuple_15 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_15)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_15);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_15));
+
+  /* "h5py/defs.pyx":122
+ * cdef hsize_t H5Dget_storage_size(hid_t dset_id) except *:
+ *     cdef hsize_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Dget_storage_size(dset_id)
+ *         if r==0:
+ */
+  __pyx_k_tuple_16 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_16)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_16);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_16));
+
+  /* "h5py/defs.pyx":131
+ * cdef herr_t H5Dread(hid_t dset_id, hid_t mem_type_id, hid_t mem_space_id, hid_t file_space_id, hid_t plist_id, void *buf) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Dread(dset_id, mem_type_id, mem_space_id, file_space_id, plist_id, buf)
+ *         if r<0:
+ */
+  __pyx_k_tuple_17 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_17)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_17);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_17));
+
+  /* "h5py/defs.pyx":140
+ * cdef herr_t H5Dwrite(hid_t dset_id, hid_t mem_type, hid_t mem_space, hid_t file_space, hid_t xfer_plist, void* buf) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Dwrite(dset_id, mem_type, mem_space, file_space, xfer_plist, buf)
+ *         if r<0:
+ */
+  __pyx_k_tuple_18 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_18)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 140; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_18);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_18));
+
+  /* "h5py/defs.pyx":149
+ * cdef herr_t H5Dextend(hid_t dataset_id, hsize_t *size) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Dextend(dataset_id, size)
+ *         if r<0:
+ */
+  __pyx_k_tuple_19 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_19)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_19);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_19));
+
+  /* "h5py/defs.pyx":158
+ * cdef herr_t H5Dfill(void *fill, hid_t fill_type_id, void *buf,  hid_t buf_type_id, hid_t space_id ) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Dfill(fill, fill_type_id, buf, buf_type_id, space_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_20 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_20)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_20);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_20));
+
+  /* "h5py/defs.pyx":167
+ * cdef herr_t H5Dvlen_get_buf_size(hid_t dset_id, hid_t type_id, hid_t space_id, hsize_t *size) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Dvlen_get_buf_size(dset_id, type_id, space_id, size)
+ *         if r<0:
+ */
+  __pyx_k_tuple_21 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_21)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_21);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_21));
+
+  /* "h5py/defs.pyx":176
+ * cdef herr_t H5Dvlen_reclaim(hid_t type_id, hid_t space_id,  hid_t plist, void *buf) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Dvlen_reclaim(type_id, space_id, plist, buf)
+ *         if r<0:
+ */
+  __pyx_k_tuple_22 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_22)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 176; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_22);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_22));
+
+  /* "h5py/defs.pyx":185
+ * cdef herr_t H5Diterate(void *buf, hid_t type_id, hid_t space_id,  H5D_operator_t op, void* operator_data) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Diterate(buf, type_id, space_id, op, operator_data)
+ *         if r<0:
+ */
+  __pyx_k_tuple_23 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_23)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 185; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_23);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_23));
+
+  /* "h5py/defs.pyx":194
+ * cdef herr_t H5Dset_extent(hid_t dset_id, hsize_t* size) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Dset_extent(dset_id, size)
+ *         if r<0:
+ */
+  __pyx_k_tuple_24 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_24)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 194; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_24);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_24));
+
+  /* "h5py/defs.pyx":203
+ * cdef hid_t H5Fcreate(char *filename, unsigned int flags, hid_t create_plist, hid_t access_plist) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Fcreate(filename, flags, create_plist, access_plist)
+ *         if r<0:
+ */
+  __pyx_k_tuple_25 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_25)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 203; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_25);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_25));
+
+  /* "h5py/defs.pyx":212
+ * cdef hid_t H5Fopen(char *name, unsigned flags, hid_t access_id) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Fopen(name, flags, access_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_26 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_26)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_26);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_26));
+
+  /* "h5py/defs.pyx":221
+ * cdef herr_t H5Fclose(hid_t file_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Fclose(file_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_27 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_27)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 221; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_27);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_27));
+
+  /* "h5py/defs.pyx":230
+ * cdef htri_t H5Fis_hdf5(char *name) except *:
+ *     cdef htri_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Fis_hdf5(name)
+ *         if r<0:
+ */
+  __pyx_k_tuple_28 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_28)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 230; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_28);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_28));
+
+  /* "h5py/defs.pyx":239
+ * cdef herr_t H5Fflush(hid_t object_id, H5F_scope_t scope) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Fflush(object_id, scope)
+ *         if r<0:
+ */
+  __pyx_k_tuple_29 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_29)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 239; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_29);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_29));
+
+  /* "h5py/defs.pyx":248
+ * cdef hid_t H5Freopen(hid_t file_id) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Freopen(file_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_30 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_30)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 248; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_30);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_30));
+
+  /* "h5py/defs.pyx":257
+ * cdef herr_t H5Fmount(hid_t loc_id, char *name, hid_t child_id, hid_t plist_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Fmount(loc_id, name, child_id, plist_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_31 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_31)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_31);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_31));
+
+  /* "h5py/defs.pyx":266
+ * cdef herr_t H5Funmount(hid_t loc_id, char *name) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Funmount(loc_id, name)
+ *         if r<0:
+ */
+  __pyx_k_tuple_32 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_32)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 266; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_32);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_32));
+
+  /* "h5py/defs.pyx":275
+ * cdef herr_t H5Fget_filesize(hid_t file_id, hsize_t *size) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Fget_filesize(file_id, size)
+ *         if r<0:
+ */
+  __pyx_k_tuple_33 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_33)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 275; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_33);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_33));
+
+  /* "h5py/defs.pyx":284
+ * cdef hid_t H5Fget_create_plist(hid_t file_id ) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Fget_create_plist(file_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_34 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_34)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 284; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_34);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_34));
+
+  /* "h5py/defs.pyx":293
+ * cdef hid_t H5Fget_access_plist(hid_t file_id) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Fget_access_plist(file_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_35 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_35)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 293; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_35);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_35));
+
+  /* "h5py/defs.pyx":302
+ * cdef hssize_t H5Fget_freespace(hid_t file_id) except *:
+ *     cdef hssize_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Fget_freespace(file_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_36 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_36)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 302; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_36);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_36));
+
+  /* "h5py/defs.pyx":311
+ * cdef ssize_t H5Fget_name(hid_t obj_id, char *name, size_t size) except *:
+ *     cdef ssize_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Fget_name(obj_id, name, size)
+ *         if r<0:
+ */
+  __pyx_k_tuple_37 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_37)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 311; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_37);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_37));
+
+  /* "h5py/defs.pyx":320
+ * cdef int H5Fget_obj_count(hid_t file_id, unsigned int types) except *:
+ *     cdef int r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Fget_obj_count(file_id, types)
+ *         if r<0:
+ */
+  __pyx_k_tuple_38 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_38)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 320; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_38);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_38));
+
+  /* "h5py/defs.pyx":329
+ * cdef int H5Fget_obj_ids(hid_t file_id, unsigned int types, int max_objs, hid_t *obj_id_list) except *:
+ *     cdef int r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Fget_obj_ids(file_id, types, max_objs, obj_id_list)
+ *         if r<0:
+ */
+  __pyx_k_tuple_39 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_39)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 329; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_39);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_39));
+
+  /* "h5py/defs.pyx":338
+ * cdef herr_t H5Fget_vfd_handle(hid_t file_id, hid_t fapl_id, void **file_handle) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Fget_vfd_handle(file_id, fapl_id, file_handle)
+ *         if r<0:
+ */
+  __pyx_k_tuple_40 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_40)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 338; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_40);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_40));
+
+  /* "h5py/defs.pyx":347
+ * cdef herr_t H5Fget_intent(hid_t file_id, unsigned int *intent) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Fget_intent(file_id, intent)
+ *         if r<0:
+ */
+  __pyx_k_tuple_41 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_41)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 347; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_41);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_41));
+
+  /* "h5py/defs.pyx":356
+ * cdef herr_t H5Fget_mdc_config(hid_t file_id, H5AC_cache_config_t *config_ptr) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Fget_mdc_config(file_id, config_ptr)
+ *         if r<0:
+ */
+  __pyx_k_tuple_42 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_42)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 356; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_42);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_42));
+
+  /* "h5py/defs.pyx":365
+ * cdef herr_t H5Fget_mdc_hit_rate(hid_t file_id, double *hit_rate_ptr) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Fget_mdc_hit_rate(file_id, hit_rate_ptr)
+ *         if r<0:
+ */
+  __pyx_k_tuple_43 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_43)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 365; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_43);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_43));
+
+  /* "h5py/defs.pyx":374
+ * cdef herr_t H5Fget_mdc_size(hid_t file_id, size_t *max_size_ptr, size_t *min_clean_size_ptr, size_t *cur_size_ptr, int *cur_num_entries_ptr) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Fget_mdc_size(file_id, max_size_ptr, min_clean_size_ptr, cur_size_ptr, cur_num_entries_ptr)
+ *         if r<0:
+ */
+  __pyx_k_tuple_44 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_44)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 374; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_44);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_44));
+
+  /* "h5py/defs.pyx":383
+ * cdef herr_t H5Freset_mdc_hit_rate_stats(hid_t file_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Freset_mdc_hit_rate_stats(file_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_45 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_45)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 383; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_45);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_45));
+
+  /* "h5py/defs.pyx":392
+ * cdef herr_t H5Fset_mdc_config(hid_t file_id, H5AC_cache_config_t *config_ptr) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Fset_mdc_config(file_id, config_ptr)
+ *         if r<0:
+ */
+  __pyx_k_tuple_46 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_46)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 392; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_46);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_46));
+
+  /* "h5py/defs.pyx":401
+ * cdef hid_t H5Gcreate(hid_t loc_id, char *name, size_t size_hint) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Gcreate(loc_id, name, size_hint)
+ *         if r<0:
+ */
+  __pyx_k_tuple_47 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_47)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 401; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_47);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_47));
+
+  /* "h5py/defs.pyx":410
+ * cdef hid_t H5Gopen(hid_t loc_id, char *name) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Gopen(loc_id, name)
+ *         if r<0:
+ */
+  __pyx_k_tuple_48 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_48)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 410; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_48);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_48));
+
+  /* "h5py/defs.pyx":419
+ * cdef herr_t H5Gclose(hid_t group_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Gclose(group_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_49 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_49)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 419; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_49);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_49));
+
+  /* "h5py/defs.pyx":428
+ * cdef herr_t H5Glink2( hid_t curr_loc_id, char *current_name, H5G_link_t link_type, hid_t new_loc_id, char *new_name) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Glink2(curr_loc_id, current_name, link_type, new_loc_id, new_name)
+ *         if r<0:
+ */
+  __pyx_k_tuple_50 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_50)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 428; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_50);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_50));
+
+  /* "h5py/defs.pyx":437
+ * cdef herr_t H5Gunlink(hid_t file_id, char *name) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Gunlink(file_id, name)
+ *         if r<0:
+ */
+  __pyx_k_tuple_51 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_51)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 437; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_51);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_51));
+
+  /* "h5py/defs.pyx":446
+ * cdef herr_t H5Gmove2(hid_t src_loc_id, char *src_name, hid_t dst_loc_id, char *dst_name) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Gmove2(src_loc_id, src_name, dst_loc_id, dst_name)
+ *         if r<0:
+ */
+  __pyx_k_tuple_52 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_52)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 446; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_52);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_52));
+
+  /* "h5py/defs.pyx":455
+ * cdef herr_t H5Gget_num_objs(hid_t loc_id, hsize_t*  num_obj) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Gget_num_objs(loc_id, num_obj)
+ *         if r<0:
+ */
+  __pyx_k_tuple_53 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_53)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 455; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_53);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_53));
+
+  /* "h5py/defs.pyx":464
+ * cdef int H5Gget_objname_by_idx(hid_t loc_id, hsize_t idx, char *name, size_t size) except *:
+ *     cdef int r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Gget_objname_by_idx(loc_id, idx, name, size)
+ *         if r<0:
+ */
+  __pyx_k_tuple_54 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_54)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 464; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_54);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_54));
+
+  /* "h5py/defs.pyx":473
+ * cdef int H5Gget_objtype_by_idx(hid_t loc_id, hsize_t idx) except *:
+ *     cdef int r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Gget_objtype_by_idx(loc_id, idx)
+ *         if r<0:
+ */
+  __pyx_k_tuple_55 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_55)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 473; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_55);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_55));
+
+  /* "h5py/defs.pyx":482
+ * cdef herr_t H5Giterate(hid_t loc_id, char *name, int *idx, H5G_iterate_t op, void* data) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Giterate(loc_id, name, idx, op, data)
+ *         if r<0:
+ */
+  __pyx_k_tuple_56 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_56)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 482; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_56);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_56));
+
+  /* "h5py/defs.pyx":491
+ * cdef herr_t H5Gget_objinfo(hid_t loc_id, char* name, int follow_link, H5G_stat_t *statbuf) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Gget_objinfo(loc_id, name, follow_link, statbuf)
+ *         if r<0:
+ */
+  __pyx_k_tuple_57 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_57)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 491; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_57);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_57));
+
+  /* "h5py/defs.pyx":500
+ * cdef herr_t H5Gget_linkval(hid_t loc_id, char *name, size_t size, char *value) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Gget_linkval(loc_id, name, size, value)
+ *         if r<0:
+ */
+  __pyx_k_tuple_58 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_58)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 500; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_58);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_58));
+
+  /* "h5py/defs.pyx":509
+ * cdef herr_t H5Gset_comment(hid_t loc_id, char *name, char *comment) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Gset_comment(loc_id, name, comment)
+ *         if r<0:
+ */
+  __pyx_k_tuple_59 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_59)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_59);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_59));
+
+  /* "h5py/defs.pyx":518
+ * cdef int H5Gget_comment(hid_t loc_id, char *name, size_t bufsize, char *comment) except *:
+ *     cdef int r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Gget_comment(loc_id, name, bufsize, comment)
+ *         if r<0:
+ */
+  __pyx_k_tuple_60 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_60)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 518; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_60);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_60));
+
+  /* "h5py/defs.pyx":527
+ * cdef hid_t H5Gcreate_anon( hid_t loc_id, hid_t gcpl_id, hid_t gapl_id) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Gcreate_anon(loc_id, gcpl_id, gapl_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_61 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_61)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 527; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_61);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_61));
+
+  /* "h5py/defs.pyx":536
+ * cdef hid_t H5Gcreate2(hid_t loc_id, char *name, hid_t lcpl_id, hid_t gcpl_id, hid_t gapl_id) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Gcreate2(loc_id, name, lcpl_id, gcpl_id, gapl_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_62 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_62)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 536; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_62);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_62));
+
+  /* "h5py/defs.pyx":545
+ * cdef hid_t H5Gopen2( hid_t loc_id, char * name, hid_t gapl_id) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Gopen2(loc_id, name, gapl_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_63 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_63)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 545; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_63);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_63));
+
+  /* "h5py/defs.pyx":554
+ * cdef herr_t H5Gget_info( hid_t group_id, H5G_info_t *group_info) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Gget_info(group_id, group_info)
+ *         if r<0:
+ */
+  __pyx_k_tuple_64 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_64)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 554; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_64);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_64));
+
+  /* "h5py/defs.pyx":563
+ * cdef herr_t H5Gget_info_by_name( hid_t loc_id, char *group_name, H5G_info_t *group_info, hid_t lapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Gget_info_by_name(loc_id, group_name, group_info, lapl_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_65 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_65)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 563; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_65);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_65));
+
+  /* "h5py/defs.pyx":572
+ * cdef hid_t H5Gget_create_plist(hid_t group_id) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Gget_create_plist(group_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_66 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_66)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 572; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_66);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_66));
+
+  /* "h5py/defs.pyx":581
+ * cdef H5I_type_t H5Iget_type(hid_t obj_id) except *:
+ *     cdef H5I_type_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Iget_type(obj_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_67 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_67)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 581; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_67);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_67));
+
+  /* "h5py/defs.pyx":590
+ * cdef ssize_t H5Iget_name( hid_t obj_id, char *name, size_t size) except *:
+ *     cdef ssize_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Iget_name(obj_id, name, size)
+ *         if r<0:
+ */
+  __pyx_k_tuple_68 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_68)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 590; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_68);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_68));
+
+  /* "h5py/defs.pyx":599
+ * cdef hid_t H5Iget_file_id(hid_t obj_id) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Iget_file_id(obj_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_69 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_69)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 599; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_69);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_69));
+
+  /* "h5py/defs.pyx":608
+ * cdef int H5Idec_ref(hid_t obj_id) except *:
+ *     cdef int r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Idec_ref(obj_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_70 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_70)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 608; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_70);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_70));
+
+  /* "h5py/defs.pyx":617
+ * cdef int H5Iget_ref(hid_t obj_id) except *:
+ *     cdef int r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Iget_ref(obj_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_71 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_71)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 617; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_71);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_71));
+
+  /* "h5py/defs.pyx":626
+ * cdef int H5Iinc_ref(hid_t obj_id) except *:
+ *     cdef int r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Iinc_ref(obj_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_72 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_72)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 626; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_72);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_72));
+
+  /* "h5py/defs.pyx":635
+ * cdef herr_t H5Lmove(hid_t src_loc, char *src_name, hid_t dst_loc, char *dst_name, hid_t lcpl_id, hid_t lapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Lmove(src_loc, src_name, dst_loc, dst_name, lcpl_id, lapl_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_73 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_73)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 635; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_73);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_73));
+
+  /* "h5py/defs.pyx":644
+ * cdef herr_t H5Lcopy(hid_t src_loc, char *src_name, hid_t dst_loc, char *dst_name, hid_t lcpl_id, hid_t lapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Lcopy(src_loc, src_name, dst_loc, dst_name, lcpl_id, lapl_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_74 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_74)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 644; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_74);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_74));
+
+  /* "h5py/defs.pyx":653
+ * cdef herr_t H5Lcreate_hard(hid_t cur_loc, char *cur_name, hid_t dst_loc, char *dst_name, hid_t lcpl_id, hid_t lapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Lcreate_hard(cur_loc, cur_name, dst_loc, dst_name, lcpl_id, lapl_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_75 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_75)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 653; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_75);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_75));
+
+  /* "h5py/defs.pyx":662
+ * cdef herr_t H5Lcreate_soft(char *link_target, hid_t link_loc_id, char *link_name, hid_t lcpl_id, hid_t lapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Lcreate_soft(link_target, link_loc_id, link_name, lcpl_id, lapl_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_76 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_76)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 662; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_76);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_76));
+
+  /* "h5py/defs.pyx":671
+ * cdef herr_t H5Ldelete(hid_t loc_id, char *name, hid_t lapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Ldelete(loc_id, name, lapl_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_77 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_77)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 671; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_77);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_77));
+
+  /* "h5py/defs.pyx":680
+ * cdef herr_t H5Ldelete_by_idx(hid_t loc_id, char *group_name, H5_index_t idx_type, H5_iter_order_t order, hsize_t n, hid_t lapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Ldelete_by_idx(loc_id, group_name, idx_type, order, n, lapl_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_78 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_78)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 680; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_78);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_78));
+
+  /* "h5py/defs.pyx":689
+ * cdef herr_t H5Lget_val(hid_t loc_id, char *name, void *bufout, size_t size, hid_t lapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Lget_val(loc_id, name, bufout, size, lapl_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_79 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_79)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 689; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_79);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_79));
+
+  /* "h5py/defs.pyx":698
+ * cdef herr_t H5Lget_val_by_idx(hid_t loc_id, char *group_name,  H5_index_t idx_type, H5_iter_order_t order, hsize_t n, void *bufout, size_t size, hid_t lapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Lget_val_by_idx(loc_id, group_name, idx_type, order, n, bufout, size, lapl_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_80 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_80)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 698; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_80);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_80));
+
+  /* "h5py/defs.pyx":707
+ * cdef htri_t H5Lexists(hid_t loc_id, char *name, hid_t lapl_id) except *:
+ *     cdef htri_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Lexists(loc_id, name, lapl_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_81 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_81)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 707; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_81);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_81));
+
+  /* "h5py/defs.pyx":716
+ * cdef herr_t H5Lget_info(hid_t loc_id, char *name, H5L_info_t *linfo, hid_t lapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Lget_info(loc_id, name, linfo, lapl_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_82 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_82)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 716; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_82);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_82));
+
+  /* "h5py/defs.pyx":725
+ * cdef herr_t H5Lget_info_by_idx(hid_t loc_id, char *group_name, H5_index_t idx_type, H5_iter_order_t order, hsize_t n, H5L_info_t *linfo, hid_t lapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Lget_info_by_idx(loc_id, group_name, idx_type, order, n, linfo, lapl_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_83 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_83)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 725; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_83);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_83));
+
+  /* "h5py/defs.pyx":734
+ * cdef ssize_t H5Lget_name_by_idx(hid_t loc_id, char *group_name, H5_index_t idx_type, H5_iter_order_t order, hsize_t n, char *name, size_t size, hid_t lapl_id) except *:
+ *     cdef ssize_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Lget_name_by_idx(loc_id, group_name, idx_type, order, n, name, size, lapl_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_84 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_84)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 734; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_84);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_84));
+
+  /* "h5py/defs.pyx":743
+ * cdef herr_t H5Literate(hid_t grp_id, H5_index_t idx_type, H5_iter_order_t order, hsize_t *idx, H5L_iterate_t op, void *op_data) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Literate(grp_id, idx_type, order, idx, op, op_data)
+ *         if r<0:
+ */
+  __pyx_k_tuple_85 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_85)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 743; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_85);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_85));
+
+  /* "h5py/defs.pyx":752
+ * cdef herr_t H5Literate_by_name(hid_t loc_id, char *group_name, H5_index_t idx_type, H5_iter_order_t order, hsize_t *idx, H5L_iterate_t op, void *op_data, hid_t lapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Literate_by_name(loc_id, group_name, idx_type, order, idx, op, op_data, lapl_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_86 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_86)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 752; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_86);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_86));
+
+  /* "h5py/defs.pyx":761
+ * cdef herr_t H5Lvisit(hid_t grp_id, H5_index_t idx_type, H5_iter_order_t order, H5L_iterate_t op, void *op_data) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Lvisit(grp_id, idx_type, order, op, op_data)
+ *         if r<0:
+ */
+  __pyx_k_tuple_87 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_87)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 761; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_87);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_87));
+
+  /* "h5py/defs.pyx":770
+ * cdef herr_t H5Lvisit_by_name(hid_t loc_id, char *group_name, H5_index_t idx_type, H5_iter_order_t order, H5L_iterate_t op, void *op_data, hid_t lapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Lvisit_by_name(loc_id, group_name, idx_type, order, op, op_data, lapl_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_88 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_88)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 770; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_88);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_88));
+
+  /* "h5py/defs.pyx":779
+ * cdef herr_t H5Lunpack_elink_val(void *ext_linkval, size_t link_size, unsigned *flags, char **filename, char **obj_path) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Lunpack_elink_val(ext_linkval, link_size, flags, filename, obj_path)
+ *         if r<0:
+ */
+  __pyx_k_tuple_89 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_89)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 779; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_89);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_89));
+
+  /* "h5py/defs.pyx":788
+ * cdef herr_t H5Lcreate_external(char *file_name, char *obj_name, hid_t link_loc_id, char *link_name, hid_t lcpl_id, hid_t lapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Lcreate_external(file_name, obj_name, link_loc_id, link_name, lcpl_id, lapl_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_90 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_90)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 788; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_90);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_90));
+
+  /* "h5py/defs.pyx":797
+ * cdef hid_t H5Oopen(hid_t loc_id, char *name, hid_t lapl_id) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Oopen(loc_id, name, lapl_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_91 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_91)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 797; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_91);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_91));
+
+  /* "h5py/defs.pyx":806
+ * cdef hid_t H5Oopen_by_addr(hid_t loc_id, haddr_t addr) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Oopen_by_addr(loc_id, addr)
+ *         if r<0:
+ */
+  __pyx_k_tuple_92 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_92)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 806; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_92);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_92));
+
+  /* "h5py/defs.pyx":815
+ * cdef hid_t H5Oopen_by_idx(hid_t loc_id, char *group_name, H5_index_t idx_type, H5_iter_order_t order, hsize_t n, hid_t lapl_id) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Oopen_by_idx(loc_id, group_name, idx_type, order, n, lapl_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_93 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_93)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 815; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_93);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_93));
+
+  /* "h5py/defs.pyx":824
+ * cdef herr_t H5Oget_info(hid_t loc_id, H5O_info_t *oinfo) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Oget_info(loc_id, oinfo)
+ *         if r<0:
+ */
+  __pyx_k_tuple_94 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_94)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 824; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_94);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_94));
+
+  /* "h5py/defs.pyx":833
+ * cdef herr_t H5Oget_info_by_name(hid_t loc_id, char *name, H5O_info_t *oinfo, hid_t lapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Oget_info_by_name(loc_id, name, oinfo, lapl_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_95 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_95)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 833; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_95);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_95));
+
+  /* "h5py/defs.pyx":842
+ * cdef herr_t H5Oget_info_by_idx(hid_t loc_id, char *group_name,  H5_index_t idx_type, H5_iter_order_t order, hsize_t n, H5O_info_t *oinfo, hid_t lapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Oget_info_by_idx(loc_id, group_name, idx_type, order, n, oinfo, lapl_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_96 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_96)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 842; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_96);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_96));
+
+  /* "h5py/defs.pyx":851
+ * cdef herr_t H5Olink(hid_t obj_id, hid_t new_loc_id, char *new_name, hid_t lcpl_id, hid_t lapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Olink(obj_id, new_loc_id, new_name, lcpl_id, lapl_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_97 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_97)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 851; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_97);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_97));
+
+  /* "h5py/defs.pyx":860
+ * cdef herr_t H5Ocopy(hid_t src_loc_id, char *src_name, hid_t dst_loc_id,  char *dst_name, hid_t ocpypl_id, hid_t lcpl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Ocopy(src_loc_id, src_name, dst_loc_id, dst_name, ocpypl_id, lcpl_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_98 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_98)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 860; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_98);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_98));
+
+  /* "h5py/defs.pyx":869
+ * cdef herr_t H5Oincr_refcount(hid_t object_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Oincr_refcount(object_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_99 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_99)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 869; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_99);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_99));
+
+  /* "h5py/defs.pyx":878
+ * cdef herr_t H5Odecr_refcount(hid_t object_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Odecr_refcount(object_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_100 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_100)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 878; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_100);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_100));
+
+  /* "h5py/defs.pyx":887
+ * cdef herr_t H5Oset_comment(hid_t obj_id, char *comment) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Oset_comment(obj_id, comment)
+ *         if r<0:
+ */
+  __pyx_k_tuple_101 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_101)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 887; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_101);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_101));
+
+  /* "h5py/defs.pyx":896
+ * cdef herr_t H5Oset_comment_by_name(hid_t loc_id, char *name,  char *comment, hid_t lapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Oset_comment_by_name(loc_id, name, comment, lapl_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_102 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_102)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 896; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_102);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_102));
+
+  /* "h5py/defs.pyx":905
+ * cdef ssize_t H5Oget_comment(hid_t obj_id, char *comment, size_t bufsize) except *:
+ *     cdef ssize_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Oget_comment(obj_id, comment, bufsize)
+ *         if r<0:
+ */
+  __pyx_k_tuple_103 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_103)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 905; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_103);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_103));
+
+  /* "h5py/defs.pyx":914
+ * cdef ssize_t H5Oget_comment_by_name(hid_t loc_id, char *name, char *comment, size_t bufsize, hid_t lapl_id) except *:
+ *     cdef ssize_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Oget_comment_by_name(loc_id, name, comment, bufsize, lapl_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_104 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_104)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 914; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_104);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_104));
+
+  /* "h5py/defs.pyx":923
+ * cdef herr_t H5Ovisit(hid_t obj_id, H5_index_t idx_type, H5_iter_order_t order,  H5O_iterate_t op, void *op_data) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Ovisit(obj_id, idx_type, order, op, op_data)
+ *         if r<0:
+ */
+  __pyx_k_tuple_105 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_105)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 923; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_105);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_105));
+
+  /* "h5py/defs.pyx":932
+ * cdef herr_t H5Ovisit_by_name(hid_t loc_id, char *obj_name, H5_index_t idx_type, H5_iter_order_t order, H5O_iterate_t op, void *op_data, hid_t lapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Ovisit_by_name(loc_id, obj_name, idx_type, order, op, op_data, lapl_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_106 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_106)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 932; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_106);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_106));
+
+  /* "h5py/defs.pyx":941
+ * cdef herr_t H5Oclose(hid_t object_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Oclose(object_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_107 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_107)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 941; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_107);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_107));
+
+  /* "h5py/defs.pyx":950
+ * cdef hid_t H5Pcreate(hid_t plist_id) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pcreate(plist_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_108 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_108)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 950; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_108);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_108));
+
+  /* "h5py/defs.pyx":959
+ * cdef hid_t H5Pcopy(hid_t plist_id) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pcopy(plist_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_109 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_109)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 959; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_109);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_109));
+
+  /* "h5py/defs.pyx":968
+ * cdef int H5Pget_class(hid_t plist_id) except *:
+ *     cdef int r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_class(plist_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_110 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_110)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 968; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_110);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_110));
+
+  /* "h5py/defs.pyx":977
+ * cdef herr_t H5Pclose(hid_t plist_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pclose(plist_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_111 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_111)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 977; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_111);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_111));
+
+  /* "h5py/defs.pyx":986
+ * cdef htri_t H5Pequal( hid_t id1, hid_t id2 ) except *:
+ *     cdef htri_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pequal(id1, id2)
+ *         if r<0:
+ */
+  __pyx_k_tuple_112 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_112)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 986; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_112);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_112));
+
+  /* "h5py/defs.pyx":995
+ * cdef herr_t H5Pclose_class(hid_t id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pclose_class(id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_113 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_113)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 995; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_113);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_113));
+
+  /* "h5py/defs.pyx":1004
+ * cdef herr_t H5Pget_version(hid_t plist, unsigned int *super_, unsigned int* freelist,  unsigned int *stab, unsigned int *shhdr) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_version(plist, super_, freelist, stab, shhdr)
+ *         if r<0:
+ */
+  __pyx_k_tuple_114 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_114)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1004; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_114);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_114));
+
+  /* "h5py/defs.pyx":1013
+ * cdef herr_t H5Pset_userblock(hid_t plist, hsize_t size) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_userblock(plist, size)
+ *         if r<0:
+ */
+  __pyx_k_tuple_115 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_115)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1013; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_115);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_115));
+
+  /* "h5py/defs.pyx":1022
+ * cdef herr_t H5Pget_userblock(hid_t plist, hsize_t * size) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_userblock(plist, size)
+ *         if r<0:
+ */
+  __pyx_k_tuple_116 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_116)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1022; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_116);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_116));
+
+  /* "h5py/defs.pyx":1031
+ * cdef herr_t H5Pset_sizes(hid_t plist, size_t sizeof_addr, size_t sizeof_size) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_sizes(plist, sizeof_addr, sizeof_size)
+ *         if r<0:
+ */
+  __pyx_k_tuple_117 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_117)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_117);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_117));
+
+  /* "h5py/defs.pyx":1040
+ * cdef herr_t H5Pget_sizes(hid_t plist, size_t *sizeof_addr, size_t *sizeof_size) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_sizes(plist, sizeof_addr, sizeof_size)
+ *         if r<0:
+ */
+  __pyx_k_tuple_118 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_118)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1040; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_118);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_118));
+
+  /* "h5py/defs.pyx":1049
+ * cdef herr_t H5Pset_sym_k(hid_t plist, unsigned int ik, unsigned int lk) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_sym_k(plist, ik, lk)
+ *         if r<0:
+ */
+  __pyx_k_tuple_119 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_119)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1049; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_119);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_119));
+
+  /* "h5py/defs.pyx":1058
+ * cdef herr_t H5Pget_sym_k(hid_t plist, unsigned int *ik, unsigned int *lk) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_sym_k(plist, ik, lk)
+ *         if r<0:
+ */
+  __pyx_k_tuple_120 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_120)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1058; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_120);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_120));
+
+  /* "h5py/defs.pyx":1067
+ * cdef herr_t H5Pset_istore_k(hid_t plist, unsigned int ik) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_istore_k(plist, ik)
+ *         if r<0:
+ */
+  __pyx_k_tuple_121 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_121)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1067; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_121);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_121));
+
+  /* "h5py/defs.pyx":1076
+ * cdef herr_t H5Pget_istore_k(hid_t plist, unsigned int *ik) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_istore_k(plist, ik)
+ *         if r<0:
+ */
+  __pyx_k_tuple_122 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_122)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1076; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_122);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_122));
+
+  /* "h5py/defs.pyx":1085
+ * cdef herr_t H5Pset_fclose_degree(hid_t fapl_id, H5F_close_degree_t fc_degree) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_fclose_degree(fapl_id, fc_degree)
+ *         if r<0:
+ */
+  __pyx_k_tuple_123 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_123)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1085; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_123);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_123));
+
+  /* "h5py/defs.pyx":1094
+ * cdef herr_t H5Pget_fclose_degree(hid_t fapl_id, H5F_close_degree_t *fc_degree) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_fclose_degree(fapl_id, fc_degree)
+ *         if r<0:
+ */
+  __pyx_k_tuple_124 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_124)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1094; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_124);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_124));
+
+  /* "h5py/defs.pyx":1103
+ * cdef herr_t H5Pset_fapl_core( hid_t fapl_id, size_t increment, hbool_t backing_store) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_fapl_core(fapl_id, increment, backing_store)
+ *         if r<0:
+ */
+  __pyx_k_tuple_125 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_125)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_125);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_125));
+
+  /* "h5py/defs.pyx":1112
+ * cdef herr_t H5Pget_fapl_core( hid_t fapl_id, size_t *increment, hbool_t *backing_store) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_fapl_core(fapl_id, increment, backing_store)
+ *         if r<0:
+ */
+  __pyx_k_tuple_126 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_126)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_126);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_126));
+
+  /* "h5py/defs.pyx":1121
+ * cdef herr_t H5Pset_fapl_family( hid_t fapl_id,  hsize_t memb_size, hid_t memb_fapl_id ) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_fapl_family(fapl_id, memb_size, memb_fapl_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_127 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_127)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_127);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_127));
+
+  /* "h5py/defs.pyx":1130
+ * cdef herr_t H5Pget_fapl_family( hid_t fapl_id, hsize_t *memb_size, hid_t *memb_fapl_id ) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_fapl_family(fapl_id, memb_size, memb_fapl_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_128 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_128)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_128);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_128));
+
+  /* "h5py/defs.pyx":1139
+ * cdef herr_t H5Pset_family_offset( hid_t fapl_id, hsize_t offset) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_family_offset(fapl_id, offset)
+ *         if r<0:
+ */
+  __pyx_k_tuple_129 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_129)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1139; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_129);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_129));
+
+  /* "h5py/defs.pyx":1148
+ * cdef herr_t H5Pget_family_offset( hid_t fapl_id, hsize_t *offset) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_family_offset(fapl_id, offset)
+ *         if r<0:
+ */
+  __pyx_k_tuple_130 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_130)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_130);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_130));
+
+  /* "h5py/defs.pyx":1157
+ * cdef herr_t H5Pset_fapl_log(hid_t fapl_id, char *logfile, unsigned int flags, size_t buf_size) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_fapl_log(fapl_id, logfile, flags, buf_size)
+ *         if r<0:
+ */
+  __pyx_k_tuple_131 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_131)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_131);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_131));
+
+  /* "h5py/defs.pyx":1166
+ * cdef herr_t H5Pset_fapl_multi(hid_t fapl_id, H5FD_mem_t *memb_map, hid_t *memb_fapl, char **memb_name, haddr_t *memb_addr, hbool_t relax) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_fapl_multi(fapl_id, memb_map, memb_fapl, memb_name, memb_addr, relax)
+ *         if r<0:
+ */
+  __pyx_k_tuple_132 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_132)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_132);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_132));
+
+  /* "h5py/defs.pyx":1175
+ * cdef herr_t H5Pset_cache(hid_t plist_id, int mdc_nelmts, int rdcc_nelmts,  size_t rdcc_nbytes, double rdcc_w0) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_cache(plist_id, mdc_nelmts, rdcc_nelmts, rdcc_nbytes, rdcc_w0)
+ *         if r<0:
+ */
+  __pyx_k_tuple_133 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_133)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1175; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_133);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_133));
+
+  /* "h5py/defs.pyx":1184
+ * cdef herr_t H5Pget_cache(hid_t plist_id, int *mdc_nelmts, int *rdcc_nelmts, size_t *rdcc_nbytes, double *rdcc_w0) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_cache(plist_id, mdc_nelmts, rdcc_nelmts, rdcc_nbytes, rdcc_w0)
+ *         if r<0:
+ */
+  __pyx_k_tuple_134 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_134)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_134);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_134));
+
+  /* "h5py/defs.pyx":1193
+ * cdef herr_t H5Pset_fapl_sec2(hid_t fapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_fapl_sec2(fapl_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_135 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_135)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_135);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_135));
+
+  /* "h5py/defs.pyx":1202
+ * cdef herr_t H5Pset_fapl_stdio(hid_t fapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_fapl_stdio(fapl_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_136 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_136)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1202; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_136);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_136));
+
+  /* "h5py/defs.pyx":1211
+ * cdef hid_t H5Pget_driver(hid_t fapl_id) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_driver(fapl_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_137 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_137)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1211; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_137);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_137));
+
+  /* "h5py/defs.pyx":1220
+ * cdef herr_t H5Pget_mdc_config(hid_t plist_id, H5AC_cache_config_t *config_ptr) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_mdc_config(plist_id, config_ptr)
+ *         if r<0:
+ */
+  __pyx_k_tuple_138 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_138)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1220; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_138);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_138));
+
+  /* "h5py/defs.pyx":1229
+ * cdef herr_t H5Pset_mdc_config(hid_t plist_id, H5AC_cache_config_t *config_ptr) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_mdc_config(plist_id, config_ptr)
+ *         if r<0:
+ */
+  __pyx_k_tuple_139 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_139)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1229; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_139);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_139));
+
+  /* "h5py/defs.pyx":1238
+ * cdef herr_t H5Pset_layout(hid_t plist, int layout) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_layout(plist, layout)
+ *         if r<0:
+ */
+  __pyx_k_tuple_140 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_140)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1238; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_140);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_140));
+
+  /* "h5py/defs.pyx":1247
+ * cdef H5D_layout_t H5Pget_layout(hid_t plist) except *:
+ *     cdef H5D_layout_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_layout(plist)
+ *         if r<0:
+ */
+  __pyx_k_tuple_141 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_141)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1247; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_141);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_141));
+
+  /* "h5py/defs.pyx":1256
+ * cdef herr_t H5Pset_chunk(hid_t plist, int ndims, hsize_t * dim) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_chunk(plist, ndims, dim)
+ *         if r<0:
+ */
+  __pyx_k_tuple_142 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_142)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1256; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_142);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_142));
+
+  /* "h5py/defs.pyx":1265
+ * cdef int H5Pget_chunk(hid_t plist, int max_ndims, hsize_t * dims ) except *:
+ *     cdef int r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_chunk(plist, max_ndims, dims)
+ *         if r<0:
+ */
+  __pyx_k_tuple_143 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_143)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1265; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_143);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_143));
+
+  /* "h5py/defs.pyx":1274
+ * cdef herr_t H5Pset_deflate( hid_t plist, int level) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_deflate(plist, level)
+ *         if r<0:
+ */
+  __pyx_k_tuple_144 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_144)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1274; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_144);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_144));
+
+  /* "h5py/defs.pyx":1283
+ * cdef herr_t H5Pset_fill_value(hid_t plist_id, hid_t type_id, void *value ) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_fill_value(plist_id, type_id, value)
+ *         if r<0:
+ */
+  __pyx_k_tuple_145 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_145)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1283; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_145);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_145));
+
+  /* "h5py/defs.pyx":1292
+ * cdef herr_t H5Pget_fill_value(hid_t plist_id, hid_t type_id, void *value ) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_fill_value(plist_id, type_id, value)
+ *         if r<0:
+ */
+  __pyx_k_tuple_146 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_146)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1292; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_146);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_146));
+
+  /* "h5py/defs.pyx":1301
+ * cdef herr_t H5Pfill_value_defined(hid_t plist_id, H5D_fill_value_t *status ) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pfill_value_defined(plist_id, status)
+ *         if r<0:
+ */
+  __pyx_k_tuple_147 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_147)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1301; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_147);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_147));
+
+  /* "h5py/defs.pyx":1310
+ * cdef herr_t H5Pset_fill_time(hid_t plist_id, H5D_fill_time_t fill_time ) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_fill_time(plist_id, fill_time)
+ *         if r<0:
+ */
+  __pyx_k_tuple_148 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_148)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1310; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_148);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_148));
+
+  /* "h5py/defs.pyx":1319
+ * cdef herr_t H5Pget_fill_time(hid_t plist_id, H5D_fill_time_t *fill_time ) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_fill_time(plist_id, fill_time)
+ *         if r<0:
+ */
+  __pyx_k_tuple_149 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_149)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1319; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_149);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_149));
+
+  /* "h5py/defs.pyx":1328
+ * cdef herr_t H5Pset_alloc_time(hid_t plist_id, H5D_alloc_time_t alloc_time ) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_alloc_time(plist_id, alloc_time)
+ *         if r<0:
+ */
+  __pyx_k_tuple_150 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_150)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1328; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_150);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_150));
+
+  /* "h5py/defs.pyx":1337
+ * cdef herr_t H5Pget_alloc_time(hid_t plist_id, H5D_alloc_time_t *alloc_time ) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_alloc_time(plist_id, alloc_time)
+ *         if r<0:
+ */
+  __pyx_k_tuple_151 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_151)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1337; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_151);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_151));
+
+  /* "h5py/defs.pyx":1346
+ * cdef herr_t H5Pset_filter(hid_t plist, H5Z_filter_t filter, unsigned int flags, size_t cd_nelmts, unsigned int* cd_values ) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_filter(plist, filter, flags, cd_nelmts, cd_values)
+ *         if r<0:
+ */
+  __pyx_k_tuple_152 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_152)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1346; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_152);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_152));
+
+  /* "h5py/defs.pyx":1355
+ * cdef htri_t H5Pall_filters_avail(hid_t dcpl_id) except *:
+ *     cdef htri_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pall_filters_avail(dcpl_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_153 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_153)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1355; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_153);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_153));
+
+  /* "h5py/defs.pyx":1364
+ * cdef int H5Pget_nfilters(hid_t plist) except *:
+ *     cdef int r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_nfilters(plist)
+ *         if r<0:
+ */
+  __pyx_k_tuple_154 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_154)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1364; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_154);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_154));
+
+  /* "h5py/defs.pyx":1373
+ * cdef H5Z_filter_t H5Pget_filter(hid_t plist, unsigned int filter_number,   unsigned int *flags, size_t *cd_nelmts,  unsigned int* cd_values, size_t namelen, char* name ) except *:
+ *     cdef H5Z_filter_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_filter(plist, filter_number, flags, cd_nelmts, cd_values, namelen, name)
+ *         if r<0:
+ */
+  __pyx_k_tuple_155 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_155)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1373; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_155);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_155));
+
+  /* "h5py/defs.pyx":1382
+ * cdef herr_t H5Pget_filter_by_id( hid_t plist_id, H5Z_filter_t filter,  unsigned int *flags, size_t *cd_nelmts,  unsigned int* cd_values, size_t namelen, char* name) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_filter_by_id(plist_id, filter, flags, cd_nelmts, cd_values, namelen, name)
+ *         if r<0:
+ */
+  __pyx_k_tuple_156 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_156)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1382; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_156);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_156));
+
+  /* "h5py/defs.pyx":1391
+ * cdef herr_t H5Pmodify_filter(hid_t plist, H5Z_filter_t filter, unsigned int flags, size_t cd_nelmts, unsigned int *cd_values) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pmodify_filter(plist, filter, flags, cd_nelmts, cd_values)
+ *         if r<0:
+ */
+  __pyx_k_tuple_157 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_157)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1391; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_157);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_157));
+
+  /* "h5py/defs.pyx":1400
+ * cdef herr_t H5Premove_filter(hid_t plist, H5Z_filter_t filter ) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Premove_filter(plist, filter)
+ *         if r<0:
+ */
+  __pyx_k_tuple_158 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_158)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1400; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_158);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_158));
+
+  /* "h5py/defs.pyx":1409
+ * cdef herr_t H5Pset_fletcher32(hid_t plist) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_fletcher32(plist)
+ *         if r<0:
+ */
+  __pyx_k_tuple_159 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_159)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1409; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_159);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_159));
+
+  /* "h5py/defs.pyx":1418
+ * cdef herr_t H5Pset_shuffle(hid_t plist_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_shuffle(plist_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_160 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_160)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1418; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_160);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_160));
+
+  /* "h5py/defs.pyx":1427
+ * cdef herr_t H5Pset_szip(hid_t plist, unsigned int options_mask, unsigned int pixels_per_block) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_szip(plist, options_mask, pixels_per_block)
+ *         if r<0:
+ */
+  __pyx_k_tuple_161 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_161)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1427; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_161);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_161));
+
+  /* "h5py/defs.pyx":1436
+ * cdef herr_t H5Pset_scaleoffset(hid_t plist, H5Z_SO_scale_type_t scale_type, int scale_factor) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_scaleoffset(plist, scale_type, scale_factor)
+ *         if r<0:
+ */
+  __pyx_k_tuple_162 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_162)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1436; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_162);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_162));
+
+  /* "h5py/defs.pyx":1445
+ * cdef herr_t H5Pset_edc_check(hid_t plist, H5Z_EDC_t check) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_edc_check(plist, check)
+ *         if r<0:
+ */
+  __pyx_k_tuple_163 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_163)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1445; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_163);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_163));
+
+  /* "h5py/defs.pyx":1454
+ * cdef H5Z_EDC_t H5Pget_edc_check(hid_t plist) except *:
+ *     cdef H5Z_EDC_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_edc_check(plist)
+ *         if r<0:
+ */
+  __pyx_k_tuple_164 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_164)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1454; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_164);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_164));
+
+  /* "h5py/defs.pyx":1463
+ * cdef herr_t H5Pset_chunk_cache( hid_t dapl_id, size_t rdcc_nslots, size_t rdcc_nbytes, double rdcc_w0 ) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_chunk_cache(dapl_id, rdcc_nslots, rdcc_nbytes, rdcc_w0)
+ *         if r<0:
+ */
+  __pyx_k_tuple_165 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_165)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1463; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_165);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_165));
+
+  /* "h5py/defs.pyx":1472
+ * cdef herr_t H5Pget_chunk_cache( hid_t dapl_id, size_t *rdcc_nslots, size_t *rdcc_nbytes, double *rdcc_w0 ) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_chunk_cache(dapl_id, rdcc_nslots, rdcc_nbytes, rdcc_w0)
+ *         if r<0:
+ */
+  __pyx_k_tuple_166 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_166)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1472; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_166);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_166));
+
+  /* "h5py/defs.pyx":1481
+ * cdef herr_t H5Pset_sieve_buf_size(hid_t fapl_id, size_t size) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_sieve_buf_size(fapl_id, size)
+ *         if r<0:
+ */
+  __pyx_k_tuple_167 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_167)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1481; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_167);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_167));
+
+  /* "h5py/defs.pyx":1490
+ * cdef herr_t H5Pget_sieve_buf_size(hid_t fapl_id, size_t *size) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_sieve_buf_size(fapl_id, size)
+ *         if r<0:
+ */
+  __pyx_k_tuple_168 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_168)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1490; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_168);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_168));
+
+  /* "h5py/defs.pyx":1499
+ * cdef herr_t H5Pset_nlinks(hid_t plist_id, size_t nlinks) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_nlinks(plist_id, nlinks)
+ *         if r<0:
+ */
+  __pyx_k_tuple_169 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_169)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1499; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_169);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_169));
+
+  /* "h5py/defs.pyx":1508
+ * cdef herr_t H5Pget_nlinks(hid_t plist_id, size_t *nlinks) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_nlinks(plist_id, nlinks)
+ *         if r<0:
+ */
+  __pyx_k_tuple_170 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_170)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1508; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_170);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_170));
+
+  /* "h5py/defs.pyx":1517
+ * cdef herr_t H5Pset_elink_prefix(hid_t plist_id, char *prefix) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_elink_prefix(plist_id, prefix)
+ *         if r<0:
+ */
+  __pyx_k_tuple_171 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_171)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1517; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_171);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_171));
+
+  /* "h5py/defs.pyx":1526
+ * cdef ssize_t H5Pget_elink_prefix(hid_t plist_id, char *prefix, size_t size) except *:
+ *     cdef ssize_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_elink_prefix(plist_id, prefix, size)
+ *         if r<0:
+ */
+  __pyx_k_tuple_172 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_172)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1526; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_172);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_172));
+
+  /* "h5py/defs.pyx":1535
+ * cdef hid_t H5Pget_elink_fapl(hid_t lapl_id) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_elink_fapl(lapl_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_173 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_173)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1535; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_173);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_173));
+
+  /* "h5py/defs.pyx":1544
+ * cdef herr_t H5Pset_elink_fapl(hid_t lapl_id, hid_t fapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_elink_fapl(lapl_id, fapl_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_174 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_174)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1544; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_174);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_174));
+
+  /* "h5py/defs.pyx":1553
+ * cdef herr_t H5Pset_create_intermediate_group(hid_t plist_id, unsigned crt_intmd) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_create_intermediate_group(plist_id, crt_intmd)
+ *         if r<0:
+ */
+  __pyx_k_tuple_175 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_175)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1553; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_175);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_175));
+
+  /* "h5py/defs.pyx":1562
+ * cdef herr_t H5Pget_create_intermediate_group(hid_t plist_id, unsigned *crt_intmd) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_create_intermediate_group(plist_id, crt_intmd)
+ *         if r<0:
+ */
+  __pyx_k_tuple_176 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_176)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1562; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_176);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_176));
+
+  /* "h5py/defs.pyx":1571
+ * cdef herr_t H5Pset_copy_object(hid_t plist_id, unsigned crt_intmd) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_copy_object(plist_id, crt_intmd)
+ *         if r<0:
+ */
+  __pyx_k_tuple_177 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_177)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1571; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_177);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_177));
+
+  /* "h5py/defs.pyx":1580
+ * cdef herr_t H5Pget_copy_object(hid_t plist_id, unsigned *crt_intmd) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_copy_object(plist_id, crt_intmd)
+ *         if r<0:
+ */
+  __pyx_k_tuple_178 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_178)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1580; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_178);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_178));
+
+  /* "h5py/defs.pyx":1589
+ * cdef herr_t H5Pset_char_encoding(hid_t plist_id, H5T_cset_t encoding) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_char_encoding(plist_id, encoding)
+ *         if r<0:
+ */
+  __pyx_k_tuple_179 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_179)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1589; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_179);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_179));
+
+  /* "h5py/defs.pyx":1598
+ * cdef herr_t H5Pget_char_encoding(hid_t plist_id, H5T_cset_t *encoding) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_char_encoding(plist_id, encoding)
+ *         if r<0:
+ */
+  __pyx_k_tuple_180 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_180)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1598; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_180);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_180));
+
+  /* "h5py/defs.pyx":1607
+ * cdef herr_t H5Pset_obj_track_times( hid_t ocpl_id, hbool_t track_times ) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_obj_track_times(ocpl_id, track_times)
+ *         if r<0:
+ */
+  __pyx_k_tuple_181 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_181)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1607; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_181);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_181));
+
+  /* "h5py/defs.pyx":1616
+ * cdef herr_t H5Pget_obj_track_times( hid_t ocpl_id, hbool_t *track_times ) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_obj_track_times(ocpl_id, track_times)
+ *         if r<0:
+ */
+  __pyx_k_tuple_182 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_182)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1616; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_182);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_182));
+
+  /* "h5py/defs.pyx":1625
+ * cdef herr_t H5Pset_local_heap_size_hint(hid_t plist_id, size_t size_hint) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_local_heap_size_hint(plist_id, size_hint)
+ *         if r<0:
+ */
+  __pyx_k_tuple_183 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_183)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1625; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_183);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_183));
+
+  /* "h5py/defs.pyx":1634
+ * cdef herr_t H5Pget_local_heap_size_hint(hid_t plist_id, size_t *size_hint) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_local_heap_size_hint(plist_id, size_hint)
+ *         if r<0:
+ */
+  __pyx_k_tuple_184 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_184)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1634; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_184);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_184));
+
+  /* "h5py/defs.pyx":1643
+ * cdef herr_t H5Pset_link_phase_change(hid_t plist_id, unsigned max_compact, unsigned min_dense) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_link_phase_change(plist_id, max_compact, min_dense)
+ *         if r<0:
+ */
+  __pyx_k_tuple_185 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_185)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1643; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_185);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_185));
+
+  /* "h5py/defs.pyx":1652
+ * cdef herr_t H5Pget_link_phase_change(hid_t plist_id, unsigned *max_compact , unsigned *min_dense) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_link_phase_change(plist_id, max_compact, min_dense)
+ *         if r<0:
+ */
+  __pyx_k_tuple_186 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_186)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1652; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_186);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_186));
+
+  /* "h5py/defs.pyx":1661
+ * cdef herr_t H5Pset_est_link_info(hid_t plist_id, unsigned est_num_entries, unsigned est_name_len) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_est_link_info(plist_id, est_num_entries, est_name_len)
+ *         if r<0:
+ */
+  __pyx_k_tuple_187 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_187)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1661; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_187);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_187));
+
+  /* "h5py/defs.pyx":1670
+ * cdef herr_t H5Pget_est_link_info(hid_t plist_id, unsigned *est_num_entries , unsigned *est_name_len) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_est_link_info(plist_id, est_num_entries, est_name_len)
+ *         if r<0:
+ */
+  __pyx_k_tuple_188 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_188)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1670; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_188);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_188));
+
+  /* "h5py/defs.pyx":1679
+ * cdef herr_t H5Pset_link_creation_order(hid_t plist_id, unsigned crt_order_flags) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_link_creation_order(plist_id, crt_order_flags)
+ *         if r<0:
+ */
+  __pyx_k_tuple_189 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_189)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1679; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_189);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_189));
+
+  /* "h5py/defs.pyx":1688
+ * cdef herr_t H5Pget_link_creation_order(hid_t plist_id, unsigned *crt_order_flags) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_link_creation_order(plist_id, crt_order_flags)
+ *         if r<0:
+ */
+  __pyx_k_tuple_190 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_190)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1688; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_190);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_190));
+
+  /* "h5py/defs.pyx":1697
+ * cdef herr_t H5Pset_libver_bounds(hid_t fapl_id, H5F_libver_t libver_low, H5F_libver_t libver_high) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pset_libver_bounds(fapl_id, libver_low, libver_high)
+ *         if r<0:
+ */
+  __pyx_k_tuple_191 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_191)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1697; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_191);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_191));
+
+  /* "h5py/defs.pyx":1706
+ * cdef herr_t H5Pget_libver_bounds(hid_t fapl_id, H5F_libver_t *libver_low, H5F_libver_t *libver_high) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Pget_libver_bounds(fapl_id, libver_low, libver_high)
+ *         if r<0:
+ */
+  __pyx_k_tuple_192 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_192)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1706; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_192);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_192));
+
+  /* "h5py/defs.pyx":1715
+ * cdef herr_t H5Rcreate(void *ref, hid_t loc_id, char *name, H5R_type_t ref_type,  hid_t space_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Rcreate(ref, loc_id, name, ref_type, space_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_193 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_193)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1715; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_193);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_193));
+
+  /* "h5py/defs.pyx":1724
+ * cdef hid_t H5Rdereference(hid_t obj_id, H5R_type_t ref_type, void *ref) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Rdereference(obj_id, ref_type, ref)
+ *         if r<0:
+ */
+  __pyx_k_tuple_194 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_194)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1724; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_194);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_194));
+
+  /* "h5py/defs.pyx":1733
+ * cdef hid_t H5Rget_region(hid_t dataset, H5R_type_t ref_type, void *ref) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Rget_region(dataset, ref_type, ref)
+ *         if r<0:
+ */
+  __pyx_k_tuple_195 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_195)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1733; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_195);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_195));
+
+  /* "h5py/defs.pyx":1742
+ * cdef H5G_obj_t H5Rget_obj_type(hid_t id, H5R_type_t ref_type, void *ref) except *:
+ *     cdef H5G_obj_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Rget_obj_type(id, ref_type, ref)
+ *         if r<0:
+ */
+  __pyx_k_tuple_196 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_196)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1742; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_196);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_196));
+
+  /* "h5py/defs.pyx":1751
+ * cdef ssize_t H5Rget_name(hid_t loc_id, H5R_type_t ref_type, void *ref, char *name, size_t size) except *:
+ *     cdef ssize_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Rget_name(loc_id, ref_type, ref, name, size)
+ *         if r<0:
+ */
+  __pyx_k_tuple_197 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_197)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1751; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_197);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_197));
+
+  /* "h5py/defs.pyx":1760
+ * cdef hid_t H5Screate(H5S_class_t type) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Screate(type)
+ *         if r<0:
+ */
+  __pyx_k_tuple_198 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_198)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1760; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_198);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_198));
+
+  /* "h5py/defs.pyx":1769
+ * cdef hid_t H5Scopy(hid_t space_id ) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Scopy(space_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_199 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_199)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1769; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_199);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_199));
+
+  /* "h5py/defs.pyx":1778
+ * cdef herr_t H5Sclose(hid_t space_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Sclose(space_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_200 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_200)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1778; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_200);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_200));
+
+  /* "h5py/defs.pyx":1787
+ * cdef hid_t H5Screate_simple(int rank, hsize_t *dims, hsize_t *maxdims) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Screate_simple(rank, dims, maxdims)
+ *         if r<0:
+ */
+  __pyx_k_tuple_201 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_201)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1787; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_201);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_201));
+
+  /* "h5py/defs.pyx":1796
+ * cdef htri_t H5Sis_simple(hid_t space_id) except *:
+ *     cdef htri_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Sis_simple(space_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_202 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_202)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1796; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_202);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_202));
+
+  /* "h5py/defs.pyx":1805
+ * cdef herr_t H5Soffset_simple(hid_t space_id, hssize_t *offset ) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Soffset_simple(space_id, offset)
+ *         if r<0:
+ */
+  __pyx_k_tuple_203 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_203)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1805; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_203);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_203));
+
+  /* "h5py/defs.pyx":1814
+ * cdef int H5Sget_simple_extent_ndims(hid_t space_id) except *:
+ *     cdef int r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Sget_simple_extent_ndims(space_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_204 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_204)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1814; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_204);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_204));
+
+  /* "h5py/defs.pyx":1823
+ * cdef int H5Sget_simple_extent_dims(hid_t space_id, hsize_t *dims, hsize_t *maxdims) except *:
+ *     cdef int r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Sget_simple_extent_dims(space_id, dims, maxdims)
+ *         if r<0:
+ */
+  __pyx_k_tuple_205 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_205)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1823; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_205);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_205));
+
+  /* "h5py/defs.pyx":1832
+ * cdef hssize_t H5Sget_simple_extent_npoints(hid_t space_id) except *:
+ *     cdef hssize_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Sget_simple_extent_npoints(space_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_206 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_206)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1832; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_206);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_206));
+
+  /* "h5py/defs.pyx":1841
+ * cdef H5S_class_t H5Sget_simple_extent_type(hid_t space_id) except *:
+ *     cdef H5S_class_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Sget_simple_extent_type(space_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_207 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_207)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1841; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_207);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_207));
+
+  /* "h5py/defs.pyx":1850
+ * cdef herr_t H5Sextent_copy(hid_t dest_space_id, hid_t source_space_id ) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Sextent_copy(dest_space_id, source_space_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_208 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_208)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1850; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_208);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_208));
+
+  /* "h5py/defs.pyx":1859
+ * cdef herr_t H5Sset_extent_simple(hid_t space_id, int rank, hsize_t *current_size, hsize_t *maximum_size ) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Sset_extent_simple(space_id, rank, current_size, maximum_size)
+ *         if r<0:
+ */
+  __pyx_k_tuple_209 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_209)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1859; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_209);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_209));
+
+  /* "h5py/defs.pyx":1868
+ * cdef herr_t H5Sset_extent_none(hid_t space_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Sset_extent_none(space_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_210 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_210)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1868; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_210);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_210));
+
+  /* "h5py/defs.pyx":1877
+ * cdef H5S_sel_type H5Sget_select_type(hid_t space_id) except *:
+ *     cdef H5S_sel_type r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Sget_select_type(space_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_211 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_211)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1877; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_211);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_211));
+
+  /* "h5py/defs.pyx":1886
+ * cdef hssize_t H5Sget_select_npoints(hid_t space_id) except *:
+ *     cdef hssize_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Sget_select_npoints(space_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_212 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_212)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1886; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_212);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_212));
+
+  /* "h5py/defs.pyx":1895
+ * cdef herr_t H5Sget_select_bounds(hid_t space_id, hsize_t *start, hsize_t *end) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Sget_select_bounds(space_id, start, end)
+ *         if r<0:
+ */
+  __pyx_k_tuple_213 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_213)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1895; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_213);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_213));
+
+  /* "h5py/defs.pyx":1904
+ * cdef herr_t H5Sselect_all(hid_t space_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Sselect_all(space_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_214 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_214)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1904; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_214);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_214));
+
+  /* "h5py/defs.pyx":1913
+ * cdef herr_t H5Sselect_none(hid_t space_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Sselect_none(space_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_215 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_215)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1913; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_215);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_215));
+
+  /* "h5py/defs.pyx":1922
+ * cdef htri_t H5Sselect_valid(hid_t space_id) except *:
+ *     cdef htri_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Sselect_valid(space_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_216 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_216)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1922; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_216);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_216));
+
+  /* "h5py/defs.pyx":1931
+ * cdef hssize_t H5Sget_select_elem_npoints(hid_t space_id) except *:
+ *     cdef hssize_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Sget_select_elem_npoints(space_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_217 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_217)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1931; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_217);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_217));
+
+  /* "h5py/defs.pyx":1940
+ * cdef herr_t H5Sget_select_elem_pointlist(hid_t space_id, hsize_t startpoint,  hsize_t numpoints, hsize_t *buf) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Sget_select_elem_pointlist(space_id, startpoint, numpoints, buf)
+ *         if r<0:
+ */
+  __pyx_k_tuple_218 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_218)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1940; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_218);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_218));
+
+  /* "h5py/defs.pyx":1949
+ * cdef herr_t H5Sselect_elements(hid_t space_id, H5S_seloper_t op,  size_t num_elements, hsize_t **coord) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Sselect_elements(space_id, op, num_elements, coord)
+ *         if r<0:
+ */
+  __pyx_k_tuple_219 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_219)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1949; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_219);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_219));
+
+  /* "h5py/defs.pyx":1958
+ * cdef hssize_t H5Sget_select_hyper_nblocks(hid_t space_id ) except *:
+ *     cdef hssize_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Sget_select_hyper_nblocks(space_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_220 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_220)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1958; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_220);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_220));
+
+  /* "h5py/defs.pyx":1967
+ * cdef herr_t H5Sget_select_hyper_blocklist(hid_t space_id,  hsize_t startblock, hsize_t numblocks, hsize_t *buf ) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Sget_select_hyper_blocklist(space_id, startblock, numblocks, buf)
+ *         if r<0:
+ */
+  __pyx_k_tuple_221 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_221)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1967; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_221);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_221));
+
+  /* "h5py/defs.pyx":1976
+ * cdef herr_t H5Sselect_hyperslab(hid_t space_id, H5S_seloper_t op,  hsize_t *start, hsize_t *_stride, hsize_t *count, hsize_t *_block) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Sselect_hyperslab(space_id, op, start, _stride, count, _block)
+ *         if r<0:
+ */
+  __pyx_k_tuple_222 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_222)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1976; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_222);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_222));
+
+  /* "h5py/defs.pyx":1985
+ * cdef herr_t H5Sencode(hid_t obj_id, void *buf, size_t *nalloc) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Sencode(obj_id, buf, nalloc)
+ *         if r<0:
+ */
+  __pyx_k_tuple_223 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_223)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1985; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_223);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_223));
+
+  /* "h5py/defs.pyx":1994
+ * cdef hid_t H5Sdecode(void *buf) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Sdecode(buf)
+ *         if r<0:
+ */
+  __pyx_k_tuple_224 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_224)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1994; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_224);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_224));
+
+  /* "h5py/defs.pyx":2003
+ * cdef hid_t H5Tcreate(H5T_class_t type, size_t size) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tcreate(type, size)
+ *         if r<0:
+ */
+  __pyx_k_tuple_225 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_225)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2003; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_225);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_225));
+
+  /* "h5py/defs.pyx":2012
+ * cdef hid_t H5Topen(hid_t loc, char* name) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Topen(loc, name)
+ *         if r<0:
+ */
+  __pyx_k_tuple_226 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_226)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2012; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_226);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_226));
+
+  /* "h5py/defs.pyx":2021
+ * cdef herr_t H5Tcommit(hid_t loc_id, char* name, hid_t type) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tcommit(loc_id, name, type)
+ *         if r<0:
+ */
+  __pyx_k_tuple_227 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_227)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2021; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_227);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_227));
+
+  /* "h5py/defs.pyx":2030
+ * cdef htri_t H5Tcommitted(hid_t type) except *:
+ *     cdef htri_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tcommitted(type)
+ *         if r<0:
+ */
+  __pyx_k_tuple_228 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_228)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2030; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_228);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_228));
+
+  /* "h5py/defs.pyx":2039
+ * cdef hid_t H5Tcopy(hid_t type_id) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tcopy(type_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_229 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_229)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2039; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_229);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_229));
+
+  /* "h5py/defs.pyx":2048
+ * cdef htri_t H5Tequal(hid_t type_id1, hid_t type_id2 ) except *:
+ *     cdef htri_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tequal(type_id1, type_id2)
+ *         if r<0:
+ */
+  __pyx_k_tuple_230 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_230)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2048; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_230);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_230));
+
+  /* "h5py/defs.pyx":2057
+ * cdef herr_t H5Tlock(hid_t type_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tlock(type_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_231 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_231)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2057; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_231);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_231));
+
+  /* "h5py/defs.pyx":2066
+ * cdef H5T_class_t H5Tget_class(hid_t type_id) except *:
+ *     cdef H5T_class_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tget_class(type_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_232 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_232)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2066; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_232);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_232));
+
+  /* "h5py/defs.pyx":2075
+ * cdef size_t H5Tget_size(hid_t type_id) except *:
+ *     cdef size_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tget_size(type_id)
+ *         if r==0:
+ */
+  __pyx_k_tuple_233 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_233)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2075; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_233);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_233));
+
+  /* "h5py/defs.pyx":2084
+ * cdef hid_t H5Tget_super(hid_t type) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tget_super(type)
+ *         if r<0:
+ */
+  __pyx_k_tuple_234 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_234)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2084; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_234);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_234));
+
+  /* "h5py/defs.pyx":2093
+ * cdef htri_t H5Tdetect_class(hid_t type_id, H5T_class_t dtype_class) except *:
+ *     cdef htri_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tdetect_class(type_id, dtype_class)
+ *         if r<0:
+ */
+  __pyx_k_tuple_235 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_235)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2093; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_235);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_235));
+
+  /* "h5py/defs.pyx":2102
+ * cdef herr_t H5Tclose(hid_t type_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tclose(type_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_236 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_236)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_236);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_236));
+
+  /* "h5py/defs.pyx":2111
+ * cdef hid_t H5Tget_native_type(hid_t type_id, H5T_direction_t direction) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tget_native_type(type_id, direction)
+ *         if r<0:
+ */
+  __pyx_k_tuple_237 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_237)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_237);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_237));
+
+  /* "h5py/defs.pyx":2120
+ * cdef herr_t H5Tconvert(hid_t src_id, hid_t dst_id, size_t nelmts, void *buf, void *background, hid_t plist_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tconvert(src_id, dst_id, nelmts, buf, background, plist_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_238 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_238)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2120; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_238);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_238));
+
+  /* "h5py/defs.pyx":2129
+ * cdef herr_t H5Tset_size(hid_t type_id, size_t size) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tset_size(type_id, size)
+ *         if r<0:
+ */
+  __pyx_k_tuple_239 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_239)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2129; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_239);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_239));
+
+  /* "h5py/defs.pyx":2138
+ * cdef H5T_order_t H5Tget_order(hid_t type_id) except *:
+ *     cdef H5T_order_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tget_order(type_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_240 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_240)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_240);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_240));
+
+  /* "h5py/defs.pyx":2147
+ * cdef herr_t H5Tset_order(hid_t type_id, H5T_order_t order) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tset_order(type_id, order)
+ *         if r<0:
+ */
+  __pyx_k_tuple_241 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_241)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2147; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_241);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_241));
+
+  /* "h5py/defs.pyx":2156
+ * cdef hsize_t H5Tget_precision(hid_t type_id) except *:
+ *     cdef hsize_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tget_precision(type_id)
+ *         if r==0:
+ */
+  __pyx_k_tuple_242 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_242)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_242);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_242));
+
+  /* "h5py/defs.pyx":2165
+ * cdef herr_t H5Tset_precision(hid_t type_id, size_t prec) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tset_precision(type_id, prec)
+ *         if r<0:
+ */
+  __pyx_k_tuple_243 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_243)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2165; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_243);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_243));
+
+  /* "h5py/defs.pyx":2174
+ * cdef int H5Tget_offset(hid_t type_id) except *:
+ *     cdef int r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tget_offset(type_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_244 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_244)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_244);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_244));
+
+  /* "h5py/defs.pyx":2183
+ * cdef herr_t H5Tset_offset(hid_t type_id, size_t offset) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tset_offset(type_id, offset)
+ *         if r<0:
+ */
+  __pyx_k_tuple_245 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_245)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2183; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_245);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_245));
+
+  /* "h5py/defs.pyx":2192
+ * cdef herr_t H5Tget_pad(hid_t type_id, H5T_pad_t * lsb, H5T_pad_t * msb ) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tget_pad(type_id, lsb, msb)
+ *         if r<0:
+ */
+  __pyx_k_tuple_246 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_246)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_246);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_246));
+
+  /* "h5py/defs.pyx":2201
+ * cdef herr_t H5Tset_pad(hid_t type_id, H5T_pad_t lsb, H5T_pad_t msb ) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tset_pad(type_id, lsb, msb)
+ *         if r<0:
+ */
+  __pyx_k_tuple_247 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_247)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2201; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_247);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_247));
+
+  /* "h5py/defs.pyx":2210
+ * cdef H5T_sign_t H5Tget_sign(hid_t type_id) except *:
+ *     cdef H5T_sign_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tget_sign(type_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_248 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_248)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_248);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_248));
+
+  /* "h5py/defs.pyx":2219
+ * cdef herr_t H5Tset_sign(hid_t type_id, H5T_sign_t sign) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tset_sign(type_id, sign)
+ *         if r<0:
+ */
+  __pyx_k_tuple_249 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_249)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2219; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_249);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_249));
+
+  /* "h5py/defs.pyx":2228
+ * cdef herr_t H5Tget_fields(hid_t type_id, size_t *spos, size_t *epos, size_t *esize, size_t *mpos, size_t *msize ) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tget_fields(type_id, spos, epos, esize, mpos, msize)
+ *         if r<0:
+ */
+  __pyx_k_tuple_250 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_250)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2228; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_250);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_250));
+
+  /* "h5py/defs.pyx":2237
+ * cdef herr_t H5Tset_fields(hid_t type_id, size_t spos, size_t epos, size_t esize, size_t mpos, size_t msize ) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tset_fields(type_id, spos, epos, esize, mpos, msize)
+ *         if r<0:
+ */
+  __pyx_k_tuple_251 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_251)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2237; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_251);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_251));
+
+  /* "h5py/defs.pyx":2246
+ * cdef size_t H5Tget_ebias(hid_t type_id) except *:
+ *     cdef size_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tget_ebias(type_id)
+ *         if r==0:
+ */
+  __pyx_k_tuple_252 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_252)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2246; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_252);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_252));
+
+  /* "h5py/defs.pyx":2255
+ * cdef herr_t H5Tset_ebias(hid_t type_id, size_t ebias) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tset_ebias(type_id, ebias)
+ *         if r<0:
+ */
+  __pyx_k_tuple_253 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_253)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2255; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_253);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_253));
+
+  /* "h5py/defs.pyx":2264
+ * cdef H5T_norm_t H5Tget_norm(hid_t type_id) except *:
+ *     cdef H5T_norm_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tget_norm(type_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_254 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_254)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2264; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_254);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_254));
+
+  /* "h5py/defs.pyx":2273
+ * cdef herr_t H5Tset_norm(hid_t type_id, H5T_norm_t norm) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tset_norm(type_id, norm)
+ *         if r<0:
+ */
+  __pyx_k_tuple_255 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_255)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2273; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_255);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_255));
+
+  /* "h5py/defs.pyx":2282
+ * cdef H5T_pad_t H5Tget_inpad(hid_t type_id) except *:
+ *     cdef H5T_pad_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tget_inpad(type_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_256 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_256)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2282; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_256);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_256));
+
+  /* "h5py/defs.pyx":2291
+ * cdef herr_t H5Tset_inpad(hid_t type_id, H5T_pad_t inpad) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tset_inpad(type_id, inpad)
+ *         if r<0:
+ */
+  __pyx_k_tuple_257 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_257)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2291; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_257);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_257));
+
+  /* "h5py/defs.pyx":2300
+ * cdef H5T_cset_t H5Tget_cset(hid_t type_id) except *:
+ *     cdef H5T_cset_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tget_cset(type_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_258 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_258)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2300; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_258);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_258));
+
+  /* "h5py/defs.pyx":2309
+ * cdef herr_t H5Tset_cset(hid_t type_id, H5T_cset_t cset) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tset_cset(type_id, cset)
+ *         if r<0:
+ */
+  __pyx_k_tuple_259 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_259)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2309; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_259);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_259));
+
+  /* "h5py/defs.pyx":2318
+ * cdef H5T_str_t H5Tget_strpad(hid_t type_id) except *:
+ *     cdef H5T_str_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tget_strpad(type_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_260 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_260)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2318; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_260);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_260));
+
+  /* "h5py/defs.pyx":2327
+ * cdef herr_t H5Tset_strpad(hid_t type_id, H5T_str_t strpad) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tset_strpad(type_id, strpad)
+ *         if r<0:
+ */
+  __pyx_k_tuple_261 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_261)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2327; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_261);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_261));
+
+  /* "h5py/defs.pyx":2336
+ * cdef hid_t H5Tvlen_create(hid_t base_type_id) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tvlen_create(base_type_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_262 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_262)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2336; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_262);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_262));
+
+  /* "h5py/defs.pyx":2345
+ * cdef htri_t H5Tis_variable_str(hid_t dtype_id) except *:
+ *     cdef htri_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tis_variable_str(dtype_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_263 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_263)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2345; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_263);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_263));
+
+  /* "h5py/defs.pyx":2354
+ * cdef int H5Tget_nmembers(hid_t type_id) except *:
+ *     cdef int r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tget_nmembers(type_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_264 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_264)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2354; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_264);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_264));
+
+  /* "h5py/defs.pyx":2363
+ * cdef H5T_class_t H5Tget_member_class(hid_t type_id, int member_no) except *:
+ *     cdef H5T_class_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tget_member_class(type_id, member_no)
+ *         if r<0:
+ */
+  __pyx_k_tuple_265 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_265)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2363; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_265);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_265));
+
+  /* "h5py/defs.pyx":2372
+ * cdef char* H5Tget_member_name(hid_t type_id, unsigned membno) except *:
+ *     cdef char* r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tget_member_name(type_id, membno)
+ *         if r==NULL:
+ */
+  __pyx_k_tuple_266 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_266)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2372; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_266);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_266));
+
+  /* "h5py/defs.pyx":2381
+ * cdef hid_t H5Tget_member_type(hid_t type_id, unsigned membno) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tget_member_type(type_id, membno)
+ *         if r<0:
+ */
+  __pyx_k_tuple_267 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_267)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2381; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_267);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_267));
+
+  /* "h5py/defs.pyx":2390
+ * cdef int H5Tget_member_offset(hid_t type_id, int membno) except *:
+ *     cdef int r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tget_member_offset(type_id, membno)
+ *         if r<0:
+ */
+  __pyx_k_tuple_268 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_268)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2390; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_268);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_268));
+
+  /* "h5py/defs.pyx":2399
+ * cdef int H5Tget_member_index(hid_t type_id, char* name) except *:
+ *     cdef int r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tget_member_index(type_id, name)
+ *         if r<0:
+ */
+  __pyx_k_tuple_269 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_269)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2399; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_269);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_269));
+
+  /* "h5py/defs.pyx":2408
+ * cdef herr_t H5Tinsert(hid_t parent_id, char *name, size_t offset, hid_t member_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tinsert(parent_id, name, offset, member_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_270 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_270)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2408; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_270);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_270));
+
+  /* "h5py/defs.pyx":2417
+ * cdef herr_t H5Tpack(hid_t type_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tpack(type_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_271 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_271)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2417; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_271);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_271));
+
+  /* "h5py/defs.pyx":2426
+ * cdef hid_t H5Tenum_create(hid_t base_id) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tenum_create(base_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_272 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_272)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2426; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_272);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_272));
+
+  /* "h5py/defs.pyx":2435
+ * cdef herr_t H5Tenum_insert(hid_t type, char *name, void *value) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tenum_insert(type, name, value)
+ *         if r<0:
+ */
+  __pyx_k_tuple_273 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_273)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2435; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_273);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_273));
+
+  /* "h5py/defs.pyx":2444
+ * cdef herr_t H5Tenum_nameof( hid_t type, void *value, char *name, size_t size ) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tenum_nameof(type, value, name, size)
+ *         if r<0:
+ */
+  __pyx_k_tuple_274 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_274)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2444; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_274);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_274));
+
+  /* "h5py/defs.pyx":2453
+ * cdef herr_t H5Tenum_valueof( hid_t type, char *name, void *value ) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tenum_valueof(type, name, value)
+ *         if r<0:
+ */
+  __pyx_k_tuple_275 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_275)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2453; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_275);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_275));
+
+  /* "h5py/defs.pyx":2462
+ * cdef herr_t H5Tget_member_value(hid_t type,  unsigned int memb_no, void *value ) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tget_member_value(type, memb_no, value)
+ *         if r<0:
+ */
+  __pyx_k_tuple_276 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_276)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2462; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_276);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_276));
+
+  /* "h5py/defs.pyx":2471
+ * cdef hid_t H5Tarray_create(hid_t base_id, int ndims, hsize_t *dims, int *perm) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tarray_create(base_id, ndims, dims, perm)
+ *         if r<0:
+ */
+  __pyx_k_tuple_277 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_277)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2471; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_277);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_277));
+
+  /* "h5py/defs.pyx":2480
+ * cdef int H5Tget_array_ndims(hid_t type_id) except *:
+ *     cdef int r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tget_array_ndims(type_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_278 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_278)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2480; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_278);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_278));
+
+  /* "h5py/defs.pyx":2489
+ * cdef int H5Tget_array_dims(hid_t type_id, hsize_t *dims, int *perm) except *:
+ *     cdef int r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tget_array_dims(type_id, dims, perm)
+ *         if r<0:
+ */
+  __pyx_k_tuple_279 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_279)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2489; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_279);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_279));
+
+  /* "h5py/defs.pyx":2498
+ * cdef herr_t H5Tset_tag(hid_t type_id, char* tag) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tset_tag(type_id, tag)
+ *         if r<0:
+ */
+  __pyx_k_tuple_280 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_280)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2498; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_280);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_280));
+
+  /* "h5py/defs.pyx":2507
+ * cdef char* H5Tget_tag(hid_t type_id) except *:
+ *     cdef char* r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tget_tag(type_id)
+ *         if r==NULL:
+ */
+  __pyx_k_tuple_281 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_281)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2507; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_281);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_281));
+
+  /* "h5py/defs.pyx":2516
+ * cdef hid_t H5Tdecode(unsigned char *buf) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tdecode(buf)
+ *         if r<0:
+ */
+  __pyx_k_tuple_282 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_282)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2516; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_282);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_282));
+
+  /* "h5py/defs.pyx":2525
+ * cdef herr_t H5Tencode(hid_t obj_id, unsigned char *buf, size_t *nalloc) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tencode(obj_id, buf, nalloc)
+ *         if r<0:
+ */
+  __pyx_k_tuple_283 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_283)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2525; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_283);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_283));
+
+  /* "h5py/defs.pyx":2534
+ * cdef herr_t H5Tcommit2(hid_t loc_id, char *name, hid_t dtype_id, hid_t lcpl_id, hid_t tcpl_id, hid_t tapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tcommit2(loc_id, name, dtype_id, lcpl_id, tcpl_id, tapl_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_284 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_284)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2534; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_284);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_284));
+
+  /* "h5py/defs.pyx":2543
+ * cdef H5T_conv_t H5Tfind(hid_t src_id, hid_t dst_id, H5T_cdata_t **pcdata) except *:
+ *     cdef H5T_conv_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tfind(src_id, dst_id, pcdata)
+ *         if r==NULL:
+ */
+  __pyx_k_tuple_285 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_285)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2543; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_285);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_285));
+
+  /* "h5py/defs.pyx":2552
+ * cdef herr_t H5Tregister(H5T_pers_t pers, char *name, hid_t src_id, hid_t dst_id, H5T_conv_t func) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tregister(pers, name, src_id, dst_id, func)
+ *         if r<0:
+ */
+  __pyx_k_tuple_286 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_286)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2552; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_286);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_286));
+
+  /* "h5py/defs.pyx":2561
+ * cdef herr_t H5Tunregister(H5T_pers_t pers, char *name, hid_t src_id, hid_t dst_id, H5T_conv_t func) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Tunregister(pers, name, src_id, dst_id, func)
+ *         if r<0:
+ */
+  __pyx_k_tuple_287 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_287)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2561; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_287);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_287));
+
+  /* "h5py/defs.pyx":2570
+ * cdef htri_t H5Zfilter_avail(H5Z_filter_t id_) except *:
+ *     cdef htri_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Zfilter_avail(id_)
+ *         if r<0:
+ */
+  __pyx_k_tuple_288 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_288)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2570; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_288);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_288));
+
+  /* "h5py/defs.pyx":2579
+ * cdef herr_t H5Zget_filter_info(H5Z_filter_t filter_, unsigned int *filter_config_flags) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Zget_filter_info(filter_, filter_config_flags)
+ *         if r<0:
+ */
+  __pyx_k_tuple_289 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_289)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2579; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_289);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_289));
+
+  /* "h5py/defs.pyx":2588
+ * cdef hid_t H5Acreate(hid_t loc_id, char *name, hid_t type_id, hid_t space_id, hid_t create_plist) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Acreate(loc_id, name, type_id, space_id, create_plist)
+ *         if r<0:
+ */
+  __pyx_k_tuple_290 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_290)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2588; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_290);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_290));
+
+  /* "h5py/defs.pyx":2597
+ * cdef hid_t H5Aopen_idx(hid_t loc_id, unsigned int idx) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Aopen_idx(loc_id, idx)
+ *         if r<0:
+ */
+  __pyx_k_tuple_291 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_291)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2597; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_291);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_291));
+
+  /* "h5py/defs.pyx":2606
+ * cdef hid_t H5Aopen_name(hid_t loc_id, char *name) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Aopen_name(loc_id, name)
+ *         if r<0:
+ */
+  __pyx_k_tuple_292 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_292)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2606; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_292);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_292));
+
+  /* "h5py/defs.pyx":2615
+ * cdef herr_t H5Aclose(hid_t attr_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Aclose(attr_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_293 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_293)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2615; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_293);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_293));
+
+  /* "h5py/defs.pyx":2624
+ * cdef herr_t H5Adelete(hid_t loc_id, char *name) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Adelete(loc_id, name)
+ *         if r<0:
+ */
+  __pyx_k_tuple_294 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_294)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2624; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_294);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_294));
+
+  /* "h5py/defs.pyx":2633
+ * cdef herr_t H5Aread(hid_t attr_id, hid_t mem_type_id, void *buf) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Aread(attr_id, mem_type_id, buf)
+ *         if r<0:
+ */
+  __pyx_k_tuple_295 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_295)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2633; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_295);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_295));
+
+  /* "h5py/defs.pyx":2642
+ * cdef herr_t H5Awrite(hid_t attr_id, hid_t mem_type_id, void *buf ) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Awrite(attr_id, mem_type_id, buf)
+ *         if r<0:
+ */
+  __pyx_k_tuple_296 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_296)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2642; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_296);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_296));
+
+  /* "h5py/defs.pyx":2651
+ * cdef int H5Aget_num_attrs(hid_t loc_id) except *:
+ *     cdef int r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Aget_num_attrs(loc_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_297 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_297)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2651; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_297);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_297));
+
+  /* "h5py/defs.pyx":2660
+ * cdef ssize_t H5Aget_name(hid_t attr_id, size_t buf_size, char *buf) except *:
+ *     cdef ssize_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Aget_name(attr_id, buf_size, buf)
+ *         if r<0:
+ */
+  __pyx_k_tuple_298 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_298)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2660; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_298);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_298));
+
+  /* "h5py/defs.pyx":2669
+ * cdef hid_t H5Aget_space(hid_t attr_id) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Aget_space(attr_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_299 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_299)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2669; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_299);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_299));
+
+  /* "h5py/defs.pyx":2678
+ * cdef hid_t H5Aget_type(hid_t attr_id) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Aget_type(attr_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_300 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_300)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2678; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_300);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_300));
+
+  /* "h5py/defs.pyx":2687
+ * cdef herr_t H5Aiterate(hid_t loc_id, unsigned * idx, H5A_operator_t op, void* op_data) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Aiterate(loc_id, idx, op, op_data)
+ *         if r<0:
+ */
+  __pyx_k_tuple_301 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_301)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2687; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_301);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_301));
+
+  /* "h5py/defs.pyx":2696
+ * cdef herr_t H5Adelete_by_name(hid_t loc_id, char *obj_name, char *attr_name, hid_t lapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Adelete_by_name(loc_id, obj_name, attr_name, lapl_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_302 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_302)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2696; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_302);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_302));
+
+  /* "h5py/defs.pyx":2705
+ * cdef herr_t H5Adelete_by_idx(hid_t loc_id, char *obj_name, H5_index_t idx_type, H5_iter_order_t order, hsize_t n, hid_t lapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Adelete_by_idx(loc_id, obj_name, idx_type, order, n, lapl_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_303 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_303)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2705; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_303);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_303));
+
+  /* "h5py/defs.pyx":2714
+ * cdef hid_t H5Acreate_by_name(hid_t loc_id, char *obj_name, char *attr_name, hid_t type_id, hid_t space_id, hid_t acpl_id, hid_t aapl_id, hid_t lapl_id) except *:
+ *     cdef hid_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Acreate_by_name(loc_id, obj_name, attr_name, type_id, space_id, acpl_id, aapl_id, lapl_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_304 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_304)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2714; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_304);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_304));
+
+  /* "h5py/defs.pyx":2723
+ * cdef herr_t H5Aopen(hid_t obj_id, char *attr_name, hid_t aapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Aopen(obj_id, attr_name, aapl_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_305 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_305)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2723; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_305);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_305));
+
+  /* "h5py/defs.pyx":2732
+ * cdef herr_t H5Aopen_by_name( hid_t loc_id, char *obj_name, char *attr_name, hid_t aapl_id, hid_t lapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Aopen_by_name(loc_id, obj_name, attr_name, aapl_id, lapl_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_306 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_306)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2732; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_306);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_306));
+
+  /* "h5py/defs.pyx":2741
+ * cdef herr_t H5Aopen_by_idx(hid_t loc_id, char *obj_name, H5_index_t idx_type, H5_iter_order_t order, hsize_t n, hid_t aapl_id, hid_t lapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Aopen_by_idx(loc_id, obj_name, idx_type, order, n, aapl_id, lapl_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_307 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_307)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2741; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_307);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_307));
+
+  /* "h5py/defs.pyx":2750
+ * cdef htri_t H5Aexists_by_name( hid_t loc_id, char *obj_name, char *attr_name, hid_t lapl_id) except *:
+ *     cdef htri_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Aexists_by_name(loc_id, obj_name, attr_name, lapl_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_308 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_308)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2750; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_308);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_308));
+
+  /* "h5py/defs.pyx":2759
+ * cdef htri_t H5Aexists(hid_t obj_id, char *attr_name) except *:
+ *     cdef htri_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Aexists(obj_id, attr_name)
+ *         if r<0:
+ */
+  __pyx_k_tuple_309 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_309)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2759; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_309);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_309));
+
+  /* "h5py/defs.pyx":2768
+ * cdef herr_t H5Arename(hid_t loc_id, char *old_attr_name, char *new_attr_name) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Arename(loc_id, old_attr_name, new_attr_name)
+ *         if r<0:
+ */
+  __pyx_k_tuple_310 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_310)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2768; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_310);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_310));
+
+  /* "h5py/defs.pyx":2777
+ * cdef herr_t H5Arename_by_name(hid_t loc_id, char *obj_name, char *old_attr_name, char *new_attr_name, hid_t lapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Arename_by_name(loc_id, obj_name, old_attr_name, new_attr_name, lapl_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_311 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_311)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2777; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_311);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_311));
+
+  /* "h5py/defs.pyx":2786
+ * cdef herr_t H5Aget_info( hid_t attr_id, H5A_info_t *ainfo) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Aget_info(attr_id, ainfo)
+ *         if r<0:
+ */
+  __pyx_k_tuple_312 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_312)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2786; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_312);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_312));
+
+  /* "h5py/defs.pyx":2795
+ * cdef herr_t H5Aget_info_by_name(hid_t loc_id, char *obj_name, char *attr_name, H5A_info_t *ainfo, hid_t lapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Aget_info_by_name(loc_id, obj_name, attr_name, ainfo, lapl_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_313 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_313)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2795; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_313);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_313));
+
+  /* "h5py/defs.pyx":2804
+ * cdef herr_t H5Aget_info_by_idx(hid_t loc_id, char *obj_name, H5_index_t idx_type, H5_iter_order_t order, hsize_t n, H5A_info_t *ainfo, hid_t lapl_id) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Aget_info_by_idx(loc_id, obj_name, idx_type, order, n, ainfo, lapl_id)
+ *         if r<0:
+ */
+  __pyx_k_tuple_314 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_314)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2804; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_314);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_314));
+
+  /* "h5py/defs.pyx":2813
+ * cdef herr_t H5Aiterate2(hid_t obj_id, H5_index_t idx_type, H5_iter_order_t order, hsize_t *n, H5A_operator2_t op, void *op_data) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Aiterate2(obj_id, idx_type, order, n, op, op_data)
+ *         if r<0:
+ */
+  __pyx_k_tuple_315 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_315)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2813; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_315);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_315));
+
+  /* "h5py/defs.pyx":2822
+ * cdef hsize_t H5Aget_storage_size(hid_t attr_id) except *:
+ *     cdef hsize_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5Aget_storage_size(attr_id)
+ *         if r==0:
+ */
+  __pyx_k_tuple_316 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_316)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2822; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_316);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_316));
+
+  /* "h5py/defs.pyx":2873
+ * cdef herr_t H5DSattach_scale(hid_t did, hid_t dsid, unsigned int idx) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5DSattach_scale(did, dsid, idx)
+ *         if r<0:
+ */
+  __pyx_k_tuple_317 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_317)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2873; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_317);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_317));
+
+  /* "h5py/defs.pyx":2882
+ * cdef herr_t H5DSdetach_scale(hid_t did, hid_t dsid, unsigned int idx) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5DSdetach_scale(did, dsid, idx)
+ *         if r<0:
+ */
+  __pyx_k_tuple_318 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_318)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2882; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_318);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_318));
+
+  /* "h5py/defs.pyx":2891
+ * cdef herr_t H5DSset_scale(hid_t dsid, char *dimname) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5DSset_scale(dsid, dimname)
+ *         if r<0:
+ */
+  __pyx_k_tuple_319 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_319)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2891; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_319);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_319));
+
+  /* "h5py/defs.pyx":2900
+ * cdef int H5DSget_num_scales(hid_t did, unsigned int dim) except *:
+ *     cdef int r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5DSget_num_scales(did, dim)
+ *         if r<0:
+ */
+  __pyx_k_tuple_320 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_320)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2900; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_320);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_320));
+
+  /* "h5py/defs.pyx":2909
+ * cdef herr_t H5DSset_label(hid_t did, unsigned int idx, char *label) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5DSset_label(did, idx, label)
+ *         if r<0:
+ */
+  __pyx_k_tuple_321 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_321)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2909; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_321);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_321));
+
+  /* "h5py/defs.pyx":2918
+ * cdef ssize_t H5DSget_label(hid_t did, unsigned int idx, char *label, size_t size) except *:
+ *     cdef ssize_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5DSget_label(did, idx, label, size)
+ *         if r<0:
+ */
+  __pyx_k_tuple_322 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_322)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2918; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_322);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_322));
+
+  /* "h5py/defs.pyx":2927
+ * cdef ssize_t H5DSget_scale_name(hid_t did, char *name, size_t size) except *:
+ *     cdef ssize_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5DSget_scale_name(did, name, size)
+ *         if r<0:
+ */
+  __pyx_k_tuple_323 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_323)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2927; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_323);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_323));
+
+  /* "h5py/defs.pyx":2936
+ * cdef htri_t H5DSis_scale(hid_t did) except *:
+ *     cdef htri_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5DSis_scale(did)
+ *         if r<0:
+ */
+  __pyx_k_tuple_324 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_324)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2936; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_324);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_324));
+
+  /* "h5py/defs.pyx":2945
+ * cdef herr_t H5DSiterate_scales(hid_t did, unsigned int dim, int *idx, H5DS_iterate_t visitor, void *visitor_data) except *:
+ *     cdef herr_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5DSiterate_scales(did, dim, idx, visitor, visitor_data)
+ *         if r<0:
+ */
+  __pyx_k_tuple_325 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_325)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2945; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_325);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_325));
+
+  /* "h5py/defs.pyx":2954
+ * cdef htri_t H5DSis_attached(hid_t did, hid_t dsid, unsigned int idx) except *:
+ *     cdef htri_t r
+ *     with rlock:             # <<<<<<<<<<<<<<
+ *         r = _hdf5.H5DSis_attached(did, dsid, idx)
+ *         if r<0:
+ */
+  __pyx_k_tuple_326 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_326)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 2954; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_326);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_326));
+  __Pyx_RefNannyFinishContext();
+  return 0;
+  __pyx_L1_error:;
+  __Pyx_RefNannyFinishContext();
+  return -1;
+}
+
+static int __Pyx_InitGlobals(void) {
+  if (__Pyx_InitStrings(__pyx_string_tab) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  return 0;
+  __pyx_L1_error:;
+  return -1;
+}
+
+#if PY_MAJOR_VERSION < 3
+PyMODINIT_FUNC initdefs(void); /*proto*/
+PyMODINIT_FUNC initdefs(void)
+#else
+PyMODINIT_FUNC PyInit_defs(void); /*proto*/
+PyMODINIT_FUNC PyInit_defs(void)
+#endif
+{
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  __Pyx_RefNannyDeclarations
+  #if CYTHON_REFNANNY
+  __Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny");
+  if (!__Pyx_RefNanny) {
+      PyErr_Clear();
+      __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny");
+      if (!__Pyx_RefNanny)
+          Py_FatalError("failed to import 'refnanny' module");
+  }
+  #endif
+  __Pyx_RefNannySetupContext("PyMODINIT_FUNC PyInit_defs(void)", 0);
+  if ( __Pyx_check_binary_version() < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #ifdef __Pyx_CyFunction_USED
+  if (__Pyx_CyFunction_init() < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #endif
+  #ifdef __Pyx_FusedFunction_USED
+  if (__pyx_FusedFunction_init() < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #endif
+  #ifdef __Pyx_Generator_USED
+  if (__pyx_Generator_init() < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #endif
+  /*--- Library function declarations ---*/
+  /*--- Threads initialization code ---*/
+  #if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS
+  #ifdef WITH_THREAD /* Python build with threading support? */
+  PyEval_InitThreads();
+  #endif
+  #endif
+  /*--- Module creation code ---*/
+  #if PY_MAJOR_VERSION < 3
+  __pyx_m = Py_InitModule4(__Pyx_NAMESTR("defs"), __pyx_methods, 0, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m);
+  #else
+  __pyx_m = PyModule_Create(&__pyx_moduledef);
+  #endif
+  if (unlikely(!__pyx_m)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #if PY_MAJOR_VERSION >= 3
+  {
+    PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (!PyDict_GetItemString(modules, "h5py.defs")) {
+      if (unlikely(PyDict_SetItemString(modules, "h5py.defs", __pyx_m) < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    }
+  }
+  #endif
+  __pyx_b = PyImport_AddModule(__Pyx_NAMESTR(__Pyx_BUILTIN_MODULE_NAME)); if (unlikely(!__pyx_b)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #if CYTHON_COMPILING_IN_PYPY
+  Py_INCREF(__pyx_b);
+  #endif
+  if (__Pyx_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  /*--- Initialize various global constants etc. ---*/
+  if (unlikely(__Pyx_InitGlobals() < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__pyx_module_is_main_h5py__defs) {
+    if (__Pyx_SetAttrString(__pyx_m, "__name__", __pyx_n_s____main__) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  }
+  /*--- Builtin init code ---*/
+  if (unlikely(__Pyx_InitCachedBuiltins() < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  /*--- Constants init code ---*/
+  if (unlikely(__Pyx_InitCachedConstants() < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  /*--- Global init code ---*/
+  /*--- Variable export code ---*/
+  /*--- Function export code ---*/
+  if (__Pyx_ExportFunction("H5open", (void (*)(void))__pyx_f_4h5py_4defs_H5open, "herr_t (void)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5close", (void (*)(void))__pyx_f_4h5py_4defs_H5close, "herr_t (void)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5get_libversion", (void (*)(void))__pyx_f_4h5py_4defs_H5get_libversion, "herr_t (unsigned int *, unsigned int *, unsigned int *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Dcreate2", (void (*)(void))__pyx_f_4h5py_4defs_H5Dcreate2, "hid_t (hid_t, char *, hid_t, hid_t, hid_t, hid_t, hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Dcreate_anon", (void (*)(void))__pyx_f_4h5py_4defs_H5Dcreate_anon, "hid_t (hid_t, hid_t, hid_t, hid_t, hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Dopen", (void (*)(void))__pyx_f_4h5py_4defs_H5Dopen, "hid_t (hid_t, char *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Dclose", (void (*)(void))__pyx_f_4h5py_4defs_H5Dclose, "herr_t (hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Dget_space", (void (*)(void))__pyx_f_4h5py_4defs_H5Dget_space, "hid_t (hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Dget_space_status", (void (*)(void))__pyx_f_4h5py_4defs_H5Dget_space_status, "herr_t (hid_t, H5D_space_status_t *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Dget_type", (void (*)(void))__pyx_f_4h5py_4defs_H5Dget_type, "hid_t (hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Dget_create_plist", (void (*)(void))__pyx_f_4h5py_4defs_H5Dget_create_plist, "hid_t (hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Dget_offset", (void (*)(void))__pyx_f_4h5py_4defs_H5Dget_offset, "haddr_t (hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Dget_storage_size", (void (*)(void))__pyx_f_4h5py_4defs_H5Dget_storage_size, "hsize_t (hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Dread", (void (*)(void))__pyx_f_4h5py_4defs_H5Dread, "herr_t (hid_t, hid_t, hid_t, hid_t, hid_t, void *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Dwrite", (void (*)(void))__pyx_f_4h5py_4defs_H5Dwrite, "herr_t (hid_t, hid_t, hid_t, hid_t, hid_t, void *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Dextend", (void (*)(void))__pyx_f_4h5py_4defs_H5Dextend, "herr_t (hid_t, hsize_t *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Dfill", (void (*)(void))__pyx_f_4h5py_4defs_H5Dfill, "herr_t (void *, hid_t, void *, hid_t, hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Dvlen_get_buf_size", (void (*)(void))__pyx_f_4h5py_4defs_H5Dvlen_get_buf_size, "herr_t (hid_t, hid_t, hid_t, hsize_t *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Dvlen_reclaim", (void (*)(void))__pyx_f_4h5py_4defs_H5Dvlen_reclaim, "herr_t (hid_t, hid_t, hid_t, void *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Diterate", (void (*)(void))__pyx_f_4h5py_4defs_H5Diterate, "herr_t (void *, hid_t, hid_t, H5D_operator_t, void *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Dset_extent", (void (*)(void))__pyx_f_4h5py_4defs_H5Dset_extent, "herr_t (hid_t, hsize_t *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Fcreate", (void (*)(void))__pyx_f_4h5py_4defs_H5Fcreate, "hid_t (char *, unsigned int, hid_t, hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Fopen", (void (*)(void))__pyx_f_4h5py_4defs_H5Fopen, "hid_t (char *, unsigned int, hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Fclose", (void (*)(void))__pyx_f_4h5py_4defs_H5Fclose, "herr_t (hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Fis_hdf5", (void (*)(void))__pyx_f_4h5py_4defs_H5Fis_hdf5, "htri_t (char *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Fflush", (void (*)(void))__pyx_f_4h5py_4defs_H5Fflush, "herr_t (hid_t, enum H5F_scope_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Freopen", (void (*)(void))__pyx_f_4h5py_4defs_H5Freopen, "hid_t (hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Fmount", (void (*)(void))__pyx_f_4h5py_4defs_H5Fmount, "herr_t (hid_t, char *, hid_t, hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Funmount", (void (*)(void))__pyx_f_4h5py_4defs_H5Funmount, "herr_t (hid_t, char *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Fget_filesize", (void (*)(void))__pyx_f_4h5py_4defs_H5Fget_filesize, "herr_t (hid_t, hsize_t *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Fget_create_plist", (void (*)(void))__pyx_f_4h5py_4defs_H5Fget_create_plist, "hid_t (hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Fget_access_plist", (void (*)(void))__pyx_f_4h5py_4defs_H5Fget_access_plist, "hid_t (hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Fget_freespace", (void (*)(void))__pyx_f_4h5py_4defs_H5Fget_freespace, "hssize_t (hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Fget_name", (void (*)(void))__pyx_f_4h5py_4defs_H5Fget_name, "Py_ssize_t (hid_t, char *, size_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Fget_obj_count", (void (*)(void))__pyx_f_4h5py_4defs_H5Fget_obj_count, "int (hid_t, unsigned int)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Fget_obj_ids", (void (*)(void))__pyx_f_4h5py_4defs_H5Fget_obj_ids, "int (hid_t, unsigned int, int, hid_t *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Fget_vfd_handle", (void (*)(void))__pyx_f_4h5py_4defs_H5Fget_vfd_handle, "herr_t (hid_t, hid_t, void **)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Fget_intent", (void (*)(void))__pyx_f_4h5py_4defs_H5Fget_intent, "herr_t (hid_t, unsigned int *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Fget_mdc_config", (void (*)(void))__pyx_f_4h5py_4defs_H5Fget_mdc_config, "herr_t (hid_t, H5AC_cache_config_t *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Fget_mdc_hit_rate", (void (*)(void))__pyx_f_4h5py_4defs_H5Fget_mdc_hit_rate, "herr_t (hid_t, double *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Fget_mdc_size", (void (*)(void))__pyx_f_4h5py_4defs_H5Fget_mdc_size, "herr_t (hid_t, size_t *, size_t *, size_t *, int *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Freset_mdc_hit_rate_stats", (void (*)(void))__pyx_f_4h5py_4defs_H5Freset_mdc_hit_rate_stats, "herr_t (hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Fset_mdc_config", (void (*)(void))__pyx_f_4h5py_4defs_H5Fset_mdc_config, "herr_t (hid_t, H5AC_cache_config_t *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Gcreate", (void (*)(void))__pyx_f_4h5py_4defs_H5Gcreate, "hid_t (hid_t, char *, size_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Gopen", (void (*)(void))__pyx_f_4h5py_4defs_H5Gopen, "hid_t (hid_t, char *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Gclose", (void (*)(void))__pyx_f_4h5py_4defs_H5Gclose, "herr_t (hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Glink2", (void (*)(void))__pyx_f_4h5py_4defs_H5Glink2, "herr_t (hid_t, char *, H5G_link_t, hid_t, char *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Gunlink", (void (*)(void))__pyx_f_4h5py_4defs_H5Gunlink, "herr_t (hid_t, char *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Gmove2", (void (*)(void))__pyx_f_4h5py_4defs_H5Gmove2, "herr_t (hid_t, char *, hid_t, char *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Gget_num_objs", (void (*)(void))__pyx_f_4h5py_4defs_H5Gget_num_objs, "herr_t (hid_t, hsize_t *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Gget_objname_by_idx", (void (*)(void))__pyx_f_4h5py_4defs_H5Gget_objname_by_idx, "int (hid_t, hsize_t, char *, size_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Gget_objtype_by_idx", (void (*)(void))__pyx_f_4h5py_4defs_H5Gget_objtype_by_idx, "int (hid_t, hsize_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Giterate", (void (*)(void))__pyx_f_4h5py_4defs_H5Giterate, "herr_t (hid_t, char *, int *, H5G_iterate_t, void *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Gget_objinfo", (void (*)(void))__pyx_f_4h5py_4defs_H5Gget_objinfo, "herr_t (hid_t, char *, int, H5G_stat_t *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Gget_linkval", (void (*)(void))__pyx_f_4h5py_4defs_H5Gget_linkval, "herr_t (hid_t, char *, size_t, char *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Gset_comment", (void (*)(void))__pyx_f_4h5py_4defs_H5Gset_comment, "herr_t (hid_t, char *, char *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Gget_comment", (void (*)(void))__pyx_f_4h5py_4defs_H5Gget_comment, "int (hid_t, char *, size_t, char *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Gcreate_anon", (void (*)(void))__pyx_f_4h5py_4defs_H5Gcreate_anon, "hid_t (hid_t, hid_t, hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Gcreate2", (void (*)(void))__pyx_f_4h5py_4defs_H5Gcreate2, "hid_t (hid_t, char *, hid_t, hid_t, hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Gopen2", (void (*)(void))__pyx_f_4h5py_4defs_H5Gopen2, "hid_t (hid_t, char *, hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Gget_info", (void (*)(void))__pyx_f_4h5py_4defs_H5Gget_info, "herr_t (hid_t, H5G_info_t *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Gget_info_by_name", (void (*)(void))__pyx_f_4h5py_4defs_H5Gget_info_by_name, "herr_t (hid_t, char *, H5G_info_t *, hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Gget_create_plist", (void (*)(void))__pyx_f_4h5py_4defs_H5Gget_create_plist, "hid_t (hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Iget_type", (void (*)(void))__pyx_f_4h5py_4defs_H5Iget_type, "H5I_type_t (hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Iget_name", (void (*)(void))__pyx_f_4h5py_4defs_H5Iget_name, "Py_ssize_t (hid_t, char *, size_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Iget_file_id", (void (*)(void))__pyx_f_4h5py_4defs_H5Iget_file_id, "hid_t (hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Idec_ref", (void (*)(void))__pyx_f_4h5py_4defs_H5Idec_ref, "int (hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Iget_ref", (void (*)(void))__pyx_f_4h5py_4defs_H5Iget_ref, "int (hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Iinc_ref", (void (*)(void))__pyx_f_4h5py_4defs_H5Iinc_ref, "int (hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Lmove", (void (*)(void))__pyx_f_4h5py_4defs_H5Lmove, "herr_t (hid_t, char *, hid_t, char *, hid_t, hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Lcopy", (void (*)(void))__pyx_f_4h5py_4defs_H5Lcopy, "herr_t (hid_t, char *, hid_t, char *, hid_t, hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Lcreate_hard", (void (*)(void))__pyx_f_4h5py_4defs_H5Lcreate_hard, "herr_t (hid_t, char *, hid_t, char *, hid_t, hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Lcreate_soft", (void (*)(void))__pyx_f_4h5py_4defs_H5Lcreate_soft, "herr_t (char *, hid_t, char *, hid_t, hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Ldelete", (void (*)(void))__pyx_f_4h5py_4defs_H5Ldelete, "herr_t (hid_t, char *, hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Ldelete_by_idx", (void (*)(void))__pyx_f_4h5py_4defs_H5Ldelete_by_idx, "herr_t (hid_t, char *, H5_index_t, H5_iter_order_t, hsize_t, hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Lget_val", (void (*)(void))__pyx_f_4h5py_4defs_H5Lget_val, "herr_t (hid_t, char *, void *, size_t, hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Lget_val_by_idx", (void (*)(void))__pyx_f_4h5py_4defs_H5Lget_val_by_idx, "herr_t (hid_t, char *, H5_index_t, H5_iter_order_t, hsize_t, void *, size_t, hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Lexists", (void (*)(void))__pyx_f_4h5py_4defs_H5Lexists, "htri_t (hid_t, char *, hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Lget_info", (void (*)(void))__pyx_f_4h5py_4defs_H5Lget_info, "herr_t (hid_t, char *, H5L_info_t *, hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Lget_info_by_idx", (void (*)(void))__pyx_f_4h5py_4defs_H5Lget_info_by_idx, "herr_t (hid_t, char *, H5_index_t, H5_iter_order_t, hsize_t, H5L_info_t *, hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Lget_name_by_idx", (void (*)(void))__pyx_f_4h5py_4defs_H5Lget_name_by_idx, "Py_ssize_t (hid_t, char *, H5_index_t, H5_iter_order_t, hsize_t, char *, size_t, hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Literate", (void (*)(void))__pyx_f_4h5py_4defs_H5Literate, "herr_t (hid_t, H5_index_t, H5_iter_order_t, hsize_t *, H5L_iterate_t, void *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Literate_by_name", (void (*)(void))__pyx_f_4h5py_4defs_H5Literate_by_name, "herr_t (hid_t, char *, H5_index_t, H5_iter_order_t, hsize_t *, H5L_iterate_t, void *, hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Lvisit", (void (*)(void))__pyx_f_4h5py_4defs_H5Lvisit, "herr_t (hid_t, H5_index_t, H5_iter_order_t, H5L_iterate_t, void *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Lvisit_by_name", (void (*)(void))__pyx_f_4h5py_4defs_H5Lvisit_by_name, "herr_t (hid_t, char *, H5_index_t, H5_iter_order_t, H5L_iterate_t, void *, hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Lunpack_elink_val", (void (*)(void))__pyx_f_4h5py_4defs_H5Lunpack_elink_val, "herr_t (void *, size_t, unsigned int *, char **, char **)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Lcreate_external", (void (*)(void))__pyx_f_4h5py_4defs_H5Lcreate_external, "herr_t (char *, char *, hid_t, char *, hid_t, hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Oopen", (void (*)(void))__pyx_f_4h5py_4defs_H5Oopen, "hid_t (hid_t, char *, hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Oopen_by_addr", (void (*)(void))__pyx_f_4h5py_4defs_H5Oopen_by_addr, "hid_t (hid_t, haddr_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Oopen_by_idx", (void (*)(void))__pyx_f_4h5py_4defs_H5Oopen_by_idx, "hid_t (hid_t, char *, H5_index_t, H5_iter_order_t, hsize_t, hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Oget_info", (void (*)(void))__pyx_f_4h5py_4defs_H5Oget_info, "herr_t (hid_t, H5O_info_t *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Oget_info_by_name", (void (*)(void))__pyx_f_4h5py_4defs_H5Oget_info_by_name, "herr_t (hid_t, char *, H5O_info_t *, hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Oget_info_by_idx", (void (*)(void))__pyx_f_4h5py_4defs_H5Oget_info_by_idx, "herr_t (hid_t, char *, H5_index_t, H5_iter_order_t, hsize_t, H5O_info_t *, hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Olink", (void (*)(void))__pyx_f_4h5py_4defs_H5Olink, "herr_t (hid_t, hid_t, char *, hid_t, hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Ocopy", (void (*)(void))__pyx_f_4h5py_4defs_H5Ocopy, "herr_t (hid_t, char *, hid_t, char *, hid_t, hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Oincr_refcount", (void (*)(void))__pyx_f_4h5py_4defs_H5Oincr_refcount, "herr_t (hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Odecr_refcount", (void (*)(void))__pyx_f_4h5py_4defs_H5Odecr_refcount, "herr_t (hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Oset_comment", (void (*)(void))__pyx_f_4h5py_4defs_H5Oset_comment, "herr_t (hid_t, char *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Oset_comment_by_name", (void (*)(void))__pyx_f_4h5py_4defs_H5Oset_comment_by_name, "herr_t (hid_t, char *, char *, hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Oget_comment", (void (*)(void))__pyx_f_4h5py_4defs_H5Oget_comment, "Py_ssize_t (hid_t, char *, size_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Oget_comment_by_name", (void (*)(void))__pyx_f_4h5py_4defs_H5Oget_comment_by_name, "Py_ssize_t (hid_t, char *, char *, size_t, hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Ovisit", (void (*)(void))__pyx_f_4h5py_4defs_H5Ovisit, "herr_t (hid_t, H5_index_t, H5_iter_order_t, H5O_iterate_t, void *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Ovisit_by_name", (void (*)(void))__pyx_f_4h5py_4defs_H5Ovisit_by_name, "herr_t (hid_t, char *, H5_index_t, H5_iter_order_t, H5O_iterate_t, void *, hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Oclose", (void (*)(void))__pyx_f_4h5py_4defs_H5Oclose, "herr_t (hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Pcreate", (void (*)(void))__pyx_f_4h5py_4defs_H5Pcreate, "hid_t (hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Pcopy", (void (*)(void))__pyx_f_4h5py_4defs_H5Pcopy, "hid_t (hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Pget_class", (void (*)(void))__pyx_f_4h5py_4defs_H5Pget_class, "int (hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Pclose", (void (*)(void))__pyx_f_4h5py_4defs_H5Pclose, "herr_t (hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Pequal", (void (*)(void))__pyx_f_4h5py_4defs_H5Pequal, "htri_t (hid_t, hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Pclose_class", (void (*)(void))__pyx_f_4h5py_4defs_H5Pclose_class, "herr_t (hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Pget_version", (void (*)(void))__pyx_f_4h5py_4defs_H5Pget_version, "herr_t (hid_t, unsigned int *, unsigned int *, unsigned int *, unsigned int *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Pset_userblock", (void (*)(void))__pyx_f_4h5py_4defs_H5Pset_userblock, "herr_t (hid_t, hsize_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Pget_userblock", (void (*)(void))__pyx_f_4h5py_4defs_H5Pget_userblock, "herr_t (hid_t, hsize_t *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Pset_sizes", (void (*)(void))__pyx_f_4h5py_4defs_H5Pset_sizes, "herr_t (hid_t, size_t, size_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Pget_sizes", (void (*)(void))__pyx_f_4h5py_4defs_H5Pget_sizes, "herr_t (hid_t, size_t *, size_t *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Pset_sym_k", (void (*)(void))__pyx_f_4h5py_4defs_H5Pset_sym_k, "herr_t (hid_t, unsigned int, unsigned int)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Pget_sym_k", (void (*)(void))__pyx_f_4h5py_4defs_H5Pget_sym_k, "herr_t (hid_t, unsigned int *, unsigned int *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Pset_istore_k", (void (*)(void))__pyx_f_4h5py_4defs_H5Pset_istore_k, "herr_t (hid_t, unsigned int)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Pget_istore_k", (void (*)(void))__pyx_f_4h5py_4defs_H5Pget_istore_k, "herr_t (hid_t, unsigned int *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Pset_fclose_degree", (void (*)(void))__pyx_f_4h5py_4defs_H5Pset_fclose_degree, "herr_t (hid_t, enum H5F_close_degree_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Pget_fclose_degree", (void (*)(void))__pyx_f_4h5py_4defs_H5Pget_fclose_degree, "herr_t (hid_t, enum H5F_close_degree_t *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Pset_fapl_core", (void (*)(void))__pyx_f_4h5py_4defs_H5Pset_fapl_core, "herr_t (hid_t, size_t, hbool_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Pget_fapl_core", (void (*)(void))__pyx_f_4h5py_4defs_H5Pget_fapl_core, "herr_t (hid_t, size_t *, hbool_t *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Pset_fapl_family", (void (*)(void))__pyx_f_4h5py_4defs_H5Pset_fapl_family, "herr_t (hid_t, hsize_t, hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Pget_fapl_family", (void (*)(void))__pyx_f_4h5py_4defs_H5Pget_fapl_family, "herr_t (hid_t, hsize_t *, hid_t *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Pset_family_offset", (void (*)(void))__pyx_f_4h5py_4defs_H5Pset_family_offset, "herr_t (hid_t, hsize_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Pget_family_offset", (void (*)(void))__pyx_f_4h5py_4defs_H5Pget_family_offset, "herr_t (hid_t, hsize_t *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Pset_fapl_log", (void (*)(void))__pyx_f_4h5py_4defs_H5Pset_fapl_log, "herr_t (hid_t, char *, unsigned int, size_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Pset_fapl_multi", (void (*)(void))__pyx_f_4h5py_4defs_H5Pset_fapl_multi, "herr_t (hid_t, H5FD_mem_t *, hid_t *, char **, haddr_t *, hbool_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Pset_cache", (void (*)(void))__pyx_f_4h5py_4defs_H5Pset_cache, "herr_t (hid_t, int, int, size_t, double)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Pget_cache", (void (*)(void))__pyx_f_4h5py_4defs_H5Pget_cache, "herr_t (hid_t, int *, int *, size_t *, double *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Pset_fapl_sec2", (void (*)(void))__pyx_f_4h5py_4defs_H5Pset_fapl_sec2, "herr_t (hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Pset_fapl_stdio", (void (*)(void))__pyx_f_4h5py_4defs_H5Pset_fapl_stdio, "herr_t (hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Pget_driver", (void (*)(void))__pyx_f_4h5py_4defs_H5Pget_driver, "hid_t (hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Pget_mdc_config", (void (*)(void))__pyx_f_4h5py_4defs_H5Pget_mdc_config, "herr_t (hid_t, H5AC_cache_config_t *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Pset_mdc_config", (void (*)(void))__pyx_f_4h5py_4defs_H5Pset_mdc_config, "herr_t (hid_t, H5AC_cache_config_t *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Pset_layout", (void (*)(void))__pyx_f_4h5py_4defs_H5Pset_layout, "herr_t (hid_t, int)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Pget_layout", (void (*)(void))__pyx_f_4h5py_4defs_H5Pget_layout, "H5D_layout_t (hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Pset_chunk", (void (*)(void))__pyx_f_4h5py_4defs_H5Pset_chunk, "herr_t (hid_t, int, hsize_t *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Pget_chunk", (void (*)(void))__pyx_f_4h5py_4defs_H5Pget_chunk, "int (hid_t, int, hsize_t *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Pset_deflate", (void (*)(void))__pyx_f_4h5py_4defs_H5Pset_deflate, "herr_t (hid_t, int)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Pset_fill_value", (void (*)(void))__pyx_f_4h5py_4defs_H5Pset_fill_value, "herr_t (hid_t, hid_t, void *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Pget_fill_value", (void (*)(void))__pyx_f_4h5py_4defs_H5Pget_fill_value, "herr_t (hid_t, hid_t, void *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Pfill_value_defined", (void (*)(void))__pyx_f_4h5py_4defs_H5Pfill_value_defined, "herr_t (hid_t, H5D_fill_value_t *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Pset_fill_time", (void (*)(void))__pyx_f_4h5py_4defs_H5Pset_fill_time, "herr_t (hid_t, H5D_fill_time_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Pget_fill_time", (void (*)(void))__pyx_f_4h5py_4defs_H5Pget_fill_time, "herr_t (hid_t, H5D_fill_time_t *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Pset_alloc_time", (void (*)(void))__pyx_f_4h5py_4defs_H5Pset_alloc_time, "herr_t (hid_t, H5D_alloc_time_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Pget_alloc_time", (void (*)(void))__pyx_f_4h5py_4defs_H5Pget_alloc_time, "herr_t (hid_t, H5D_alloc_time_t *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Pset_filter", (void (*)(void))__pyx_f_4h5py_4defs_H5Pset_filter, "herr_t (hid_t, H5Z_filter_t, unsigned int, size_t, unsigned int *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Pall_filters_avail", (void (*)(void))__pyx_f_4h5py_4defs_H5Pall_filters_avail, "htri_t (hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Pget_nfilters", (void (*)(void))__pyx_f_4h5py_4defs_H5Pget_nfilters, "int (hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Pget_filter", (void (*)(void))__pyx_f_4h5py_4defs_H5Pget_filter, "H5Z_filter_t (hid_t, unsigned int, unsigned int *, size_t *, unsigned int *, size_t, char *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Pget_filter_by_id", (void (*)(void))__pyx_f_4h5py_4defs_H5Pget_filter_by_id, "herr_t (hid_t, H5Z_filter_t, unsigned int *, size_t *, unsigned int *, size_t, char *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Pmodify_filter", (void (*)(void))__pyx_f_4h5py_4defs_H5Pmodify_filter, "herr_t (hid_t, H5Z_filter_t, unsigned int, size_t, unsigned int *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Premove_filter", (void (*)(void))__pyx_f_4h5py_4defs_H5Premove_filter, "herr_t (hid_t, H5Z_filter_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Pset_fletcher32", (void (*)(void))__pyx_f_4h5py_4defs_H5Pset_fletcher32, "herr_t (hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Pset_shuffle", (void (*)(void))__pyx_f_4h5py_4defs_H5Pset_shuffle, "herr_t (hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Pset_szip", (void (*)(void))__pyx_f_4h5py_4defs_H5Pset_szip, "herr_t (hid_t, unsigned int, unsigned int)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Pset_scaleoffset", (void (*)(void))__pyx_f_4h5py_4defs_H5Pset_scaleoffset, "herr_t (hid_t, enum H5Z_SO_scale_type_t, int)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Pset_edc_check", (void (*)(void))__pyx_f_4h5py_4defs_H5Pset_edc_check, "herr_t (hid_t, enum H5Z_EDC_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Pget_edc_check", (void (*)(void))__pyx_f_4h5py_4defs_H5Pget_edc_check, "enum H5Z_EDC_t (hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Pset_chunk_cache", (void (*)(void))__pyx_f_4h5py_4defs_H5Pset_chunk_cache, "herr_t (hid_t, size_t, size_t, double)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Pget_chunk_cache", (void (*)(void))__pyx_f_4h5py_4defs_H5Pget_chunk_cache, "herr_t (hid_t, size_t *, size_t *, double *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Pset_sieve_buf_size", (void (*)(void))__pyx_f_4h5py_4defs_H5Pset_sieve_buf_size, "herr_t (hid_t, size_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Pget_sieve_buf_size", (void (*)(void))__pyx_f_4h5py_4defs_H5Pget_sieve_buf_size, "herr_t (hid_t, size_t *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Pset_nlinks", (void (*)(void))__pyx_f_4h5py_4defs_H5Pset_nlinks, "herr_t (hid_t, size_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Pget_nlinks", (void (*)(void))__pyx_f_4h5py_4defs_H5Pget_nlinks, "herr_t (hid_t, size_t *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Pset_elink_prefix", (void (*)(void))__pyx_f_4h5py_4defs_H5Pset_elink_prefix, "herr_t (hid_t, char *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Pget_elink_prefix", (void (*)(void))__pyx_f_4h5py_4defs_H5Pget_elink_prefix, "Py_ssize_t (hid_t, char *, size_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Pget_elink_fapl", (void (*)(void))__pyx_f_4h5py_4defs_H5Pget_elink_fapl, "hid_t (hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Pset_elink_fapl", (void (*)(void))__pyx_f_4h5py_4defs_H5Pset_elink_fapl, "herr_t (hid_t, hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Pset_create_intermediate_group", (void (*)(void))__pyx_f_4h5py_4defs_H5Pset_create_intermediate_group, "herr_t (hid_t, unsigned int)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Pget_create_intermediate_group", (void (*)(void))__pyx_f_4h5py_4defs_H5Pget_create_intermediate_group, "herr_t (hid_t, unsigned int *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Pset_copy_object", (void (*)(void))__pyx_f_4h5py_4defs_H5Pset_copy_object, "herr_t (hid_t, unsigned int)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Pget_copy_object", (void (*)(void))__pyx_f_4h5py_4defs_H5Pget_copy_object, "herr_t (hid_t, unsigned int *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Pset_char_encoding", (void (*)(void))__pyx_f_4h5py_4defs_H5Pset_char_encoding, "herr_t (hid_t, H5T_cset_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Pget_char_encoding", (void (*)(void))__pyx_f_4h5py_4defs_H5Pget_char_encoding, "herr_t (hid_t, H5T_cset_t *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Pset_obj_track_times", (void (*)(void))__pyx_f_4h5py_4defs_H5Pset_obj_track_times, "herr_t (hid_t, hbool_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Pget_obj_track_times", (void (*)(void))__pyx_f_4h5py_4defs_H5Pget_obj_track_times, "herr_t (hid_t, hbool_t *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Pset_local_heap_size_hint", (void (*)(void))__pyx_f_4h5py_4defs_H5Pset_local_heap_size_hint, "herr_t (hid_t, size_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Pget_local_heap_size_hint", (void (*)(void))__pyx_f_4h5py_4defs_H5Pget_local_heap_size_hint, "herr_t (hid_t, size_t *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Pset_link_phase_change", (void (*)(void))__pyx_f_4h5py_4defs_H5Pset_link_phase_change, "herr_t (hid_t, unsigned int, unsigned int)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Pget_link_phase_change", (void (*)(void))__pyx_f_4h5py_4defs_H5Pget_link_phase_change, "herr_t (hid_t, unsigned int *, unsigned int *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Pset_est_link_info", (void (*)(void))__pyx_f_4h5py_4defs_H5Pset_est_link_info, "herr_t (hid_t, unsigned int, unsigned int)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Pget_est_link_info", (void (*)(void))__pyx_f_4h5py_4defs_H5Pget_est_link_info, "herr_t (hid_t, unsigned int *, unsigned int *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Pset_link_creation_order", (void (*)(void))__pyx_f_4h5py_4defs_H5Pset_link_creation_order, "herr_t (hid_t, unsigned int)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Pget_link_creation_order", (void (*)(void))__pyx_f_4h5py_4defs_H5Pget_link_creation_order, "herr_t (hid_t, unsigned int *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Pset_libver_bounds", (void (*)(void))__pyx_f_4h5py_4defs_H5Pset_libver_bounds, "herr_t (hid_t, H5F_libver_t, H5F_libver_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Pget_libver_bounds", (void (*)(void))__pyx_f_4h5py_4defs_H5Pget_libver_bounds, "herr_t (hid_t, H5F_libver_t *, H5F_libver_t *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Rcreate", (void (*)(void))__pyx_f_4h5py_4defs_H5Rcreate, "herr_t (void *, hid_t, char *, H5R_type_t, hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Rdereference", (void (*)(void))__pyx_f_4h5py_4defs_H5Rdereference, "hid_t (hid_t, H5R_type_t, void *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Rget_region", (void (*)(void))__pyx_f_4h5py_4defs_H5Rget_region, "hid_t (hid_t, H5R_type_t, void *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Rget_obj_type", (void (*)(void))__pyx_f_4h5py_4defs_H5Rget_obj_type, "enum H5G_obj_t (hid_t, H5R_type_t, void *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Rget_name", (void (*)(void))__pyx_f_4h5py_4defs_H5Rget_name, "Py_ssize_t (hid_t, H5R_type_t, void *, char *, size_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Screate", (void (*)(void))__pyx_f_4h5py_4defs_H5Screate, "hid_t (H5S_class_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Scopy", (void (*)(void))__pyx_f_4h5py_4defs_H5Scopy, "hid_t (hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Sclose", (void (*)(void))__pyx_f_4h5py_4defs_H5Sclose, "herr_t (hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Screate_simple", (void (*)(void))__pyx_f_4h5py_4defs_H5Screate_simple, "hid_t (int, hsize_t *, hsize_t *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Sis_simple", (void (*)(void))__pyx_f_4h5py_4defs_H5Sis_simple, "htri_t (hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Soffset_simple", (void (*)(void))__pyx_f_4h5py_4defs_H5Soffset_simple, "herr_t (hid_t, hssize_t *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Sget_simple_extent_ndims", (void (*)(void))__pyx_f_4h5py_4defs_H5Sget_simple_extent_ndims, "int (hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Sget_simple_extent_dims", (void (*)(void))__pyx_f_4h5py_4defs_H5Sget_simple_extent_dims, "int (hid_t, hsize_t *, hsize_t *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Sget_simple_extent_npoints", (void (*)(void))__pyx_f_4h5py_4defs_H5Sget_simple_extent_npoints, "hssize_t (hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Sget_simple_extent_type", (void (*)(void))__pyx_f_4h5py_4defs_H5Sget_simple_extent_type, "H5S_class_t (hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Sextent_copy", (void (*)(void))__pyx_f_4h5py_4defs_H5Sextent_copy, "herr_t (hid_t, hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Sset_extent_simple", (void (*)(void))__pyx_f_4h5py_4defs_H5Sset_extent_simple, "herr_t (hid_t, int, hsize_t *, hsize_t *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Sset_extent_none", (void (*)(void))__pyx_f_4h5py_4defs_H5Sset_extent_none, "herr_t (hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Sget_select_type", (void (*)(void))__pyx_f_4h5py_4defs_H5Sget_select_type, "H5S_sel_type (hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Sget_select_npoints", (void (*)(void))__pyx_f_4h5py_4defs_H5Sget_select_npoints, "hssize_t (hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Sget_select_bounds", (void (*)(void))__pyx_f_4h5py_4defs_H5Sget_select_bounds, "herr_t (hid_t, hsize_t *, hsize_t *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Sselect_all", (void (*)(void))__pyx_f_4h5py_4defs_H5Sselect_all, "herr_t (hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Sselect_none", (void (*)(void))__pyx_f_4h5py_4defs_H5Sselect_none, "herr_t (hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Sselect_valid", (void (*)(void))__pyx_f_4h5py_4defs_H5Sselect_valid, "htri_t (hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Sget_select_elem_npoints", (void (*)(void))__pyx_f_4h5py_4defs_H5Sget_select_elem_npoints, "hssize_t (hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Sget_select_elem_pointlist", (void (*)(void))__pyx_f_4h5py_4defs_H5Sget_select_elem_pointlist, "herr_t (hid_t, hsize_t, hsize_t, hsize_t *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Sselect_elements", (void (*)(void))__pyx_f_4h5py_4defs_H5Sselect_elements, "herr_t (hid_t, H5S_seloper_t, size_t, hsize_t **)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Sget_select_hyper_nblocks", (void (*)(void))__pyx_f_4h5py_4defs_H5Sget_select_hyper_nblocks, "hssize_t (hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Sget_select_hyper_blocklist", (void (*)(void))__pyx_f_4h5py_4defs_H5Sget_select_hyper_blocklist, "herr_t (hid_t, hsize_t, hsize_t, hsize_t *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Sselect_hyperslab", (void (*)(void))__pyx_f_4h5py_4defs_H5Sselect_hyperslab, "herr_t (hid_t, H5S_seloper_t, hsize_t *, hsize_t *, hsize_t *, hsize_t *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Sencode", (void (*)(void))__pyx_f_4h5py_4defs_H5Sencode, "herr_t (hid_t, void *, size_t *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Sdecode", (void (*)(void))__pyx_f_4h5py_4defs_H5Sdecode, "hid_t (void *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Tcreate", (void (*)(void))__pyx_f_4h5py_4defs_H5Tcreate, "hid_t (enum H5T_class_t, size_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Topen", (void (*)(void))__pyx_f_4h5py_4defs_H5Topen, "hid_t (hid_t, char *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Tcommit", (void (*)(void))__pyx_f_4h5py_4defs_H5Tcommit, "herr_t (hid_t, char *, hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Tcommitted", (void (*)(void))__pyx_f_4h5py_4defs_H5Tcommitted, "htri_t (hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Tcopy", (void (*)(void))__pyx_f_4h5py_4defs_H5Tcopy, "hid_t (hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Tequal", (void (*)(void))__pyx_f_4h5py_4defs_H5Tequal, "htri_t (hid_t, hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Tlock", (void (*)(void))__pyx_f_4h5py_4defs_H5Tlock, "herr_t (hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Tget_class", (void (*)(void))__pyx_f_4h5py_4defs_H5Tget_class, "enum H5T_class_t (hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Tget_size", (void (*)(void))__pyx_f_4h5py_4defs_H5Tget_size, "size_t (hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Tget_super", (void (*)(void))__pyx_f_4h5py_4defs_H5Tget_super, "hid_t (hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Tdetect_class", (void (*)(void))__pyx_f_4h5py_4defs_H5Tdetect_class, "htri_t (hid_t, enum H5T_class_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Tclose", (void (*)(void))__pyx_f_4h5py_4defs_H5Tclose, "herr_t (hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Tget_native_type", (void (*)(void))__pyx_f_4h5py_4defs_H5Tget_native_type, "hid_t (hid_t, enum H5T_direction_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Tconvert", (void (*)(void))__pyx_f_4h5py_4defs_H5Tconvert, "herr_t (hid_t, hid_t, size_t, void *, void *, hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Tset_size", (void (*)(void))__pyx_f_4h5py_4defs_H5Tset_size, "herr_t (hid_t, size_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Tget_order", (void (*)(void))__pyx_f_4h5py_4defs_H5Tget_order, "H5T_order_t (hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Tset_order", (void (*)(void))__pyx_f_4h5py_4defs_H5Tset_order, "herr_t (hid_t, H5T_order_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Tget_precision", (void (*)(void))__pyx_f_4h5py_4defs_H5Tget_precision, "hsize_t (hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Tset_precision", (void (*)(void))__pyx_f_4h5py_4defs_H5Tset_precision, "herr_t (hid_t, size_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Tget_offset", (void (*)(void))__pyx_f_4h5py_4defs_H5Tget_offset, "int (hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Tset_offset", (void (*)(void))__pyx_f_4h5py_4defs_H5Tset_offset, "herr_t (hid_t, size_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Tget_pad", (void (*)(void))__pyx_f_4h5py_4defs_H5Tget_pad, "herr_t (hid_t, H5T_pad_t *, H5T_pad_t *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Tset_pad", (void (*)(void))__pyx_f_4h5py_4defs_H5Tset_pad, "herr_t (hid_t, H5T_pad_t, H5T_pad_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Tget_sign", (void (*)(void))__pyx_f_4h5py_4defs_H5Tget_sign, "H5T_sign_t (hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Tset_sign", (void (*)(void))__pyx_f_4h5py_4defs_H5Tset_sign, "herr_t (hid_t, H5T_sign_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Tget_fields", (void (*)(void))__pyx_f_4h5py_4defs_H5Tget_fields, "herr_t (hid_t, size_t *, size_t *, size_t *, size_t *, size_t *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Tset_fields", (void (*)(void))__pyx_f_4h5py_4defs_H5Tset_fields, "herr_t (hid_t, size_t, size_t, size_t, size_t, size_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Tget_ebias", (void (*)(void))__pyx_f_4h5py_4defs_H5Tget_ebias, "size_t (hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Tset_ebias", (void (*)(void))__pyx_f_4h5py_4defs_H5Tset_ebias, "herr_t (hid_t, size_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Tget_norm", (void (*)(void))__pyx_f_4h5py_4defs_H5Tget_norm, "H5T_norm_t (hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Tset_norm", (void (*)(void))__pyx_f_4h5py_4defs_H5Tset_norm, "herr_t (hid_t, H5T_norm_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Tget_inpad", (void (*)(void))__pyx_f_4h5py_4defs_H5Tget_inpad, "H5T_pad_t (hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Tset_inpad", (void (*)(void))__pyx_f_4h5py_4defs_H5Tset_inpad, "herr_t (hid_t, H5T_pad_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Tget_cset", (void (*)(void))__pyx_f_4h5py_4defs_H5Tget_cset, "H5T_cset_t (hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Tset_cset", (void (*)(void))__pyx_f_4h5py_4defs_H5Tset_cset, "herr_t (hid_t, H5T_cset_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Tget_strpad", (void (*)(void))__pyx_f_4h5py_4defs_H5Tget_strpad, "H5T_str_t (hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Tset_strpad", (void (*)(void))__pyx_f_4h5py_4defs_H5Tset_strpad, "herr_t (hid_t, H5T_str_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Tvlen_create", (void (*)(void))__pyx_f_4h5py_4defs_H5Tvlen_create, "hid_t (hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Tis_variable_str", (void (*)(void))__pyx_f_4h5py_4defs_H5Tis_variable_str, "htri_t (hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Tget_nmembers", (void (*)(void))__pyx_f_4h5py_4defs_H5Tget_nmembers, "int (hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Tget_member_class", (void (*)(void))__pyx_f_4h5py_4defs_H5Tget_member_class, "enum H5T_class_t (hid_t, int)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Tget_member_name", (void (*)(void))__pyx_f_4h5py_4defs_H5Tget_member_name, "char *(hid_t, unsigned int)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Tget_member_type", (void (*)(void))__pyx_f_4h5py_4defs_H5Tget_member_type, "hid_t (hid_t, unsigned int)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Tget_member_offset", (void (*)(void))__pyx_f_4h5py_4defs_H5Tget_member_offset, "int (hid_t, int)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Tget_member_index", (void (*)(void))__pyx_f_4h5py_4defs_H5Tget_member_index, "int (hid_t, char *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Tinsert", (void (*)(void))__pyx_f_4h5py_4defs_H5Tinsert, "herr_t (hid_t, char *, size_t, hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Tpack", (void (*)(void))__pyx_f_4h5py_4defs_H5Tpack, "herr_t (hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Tenum_create", (void (*)(void))__pyx_f_4h5py_4defs_H5Tenum_create, "hid_t (hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Tenum_insert", (void (*)(void))__pyx_f_4h5py_4defs_H5Tenum_insert, "herr_t (hid_t, char *, void *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Tenum_nameof", (void (*)(void))__pyx_f_4h5py_4defs_H5Tenum_nameof, "herr_t (hid_t, void *, char *, size_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Tenum_valueof", (void (*)(void))__pyx_f_4h5py_4defs_H5Tenum_valueof, "herr_t (hid_t, char *, void *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Tget_member_value", (void (*)(void))__pyx_f_4h5py_4defs_H5Tget_member_value, "herr_t (hid_t, unsigned int, void *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Tarray_create", (void (*)(void))__pyx_f_4h5py_4defs_H5Tarray_create, "hid_t (hid_t, int, hsize_t *, int *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Tget_array_ndims", (void (*)(void))__pyx_f_4h5py_4defs_H5Tget_array_ndims, "int (hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Tget_array_dims", (void (*)(void))__pyx_f_4h5py_4defs_H5Tget_array_dims, "int (hid_t, hsize_t *, int *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Tset_tag", (void (*)(void))__pyx_f_4h5py_4defs_H5Tset_tag, "herr_t (hid_t, char *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Tget_tag", (void (*)(void))__pyx_f_4h5py_4defs_H5Tget_tag, "char *(hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Tdecode", (void (*)(void))__pyx_f_4h5py_4defs_H5Tdecode, "hid_t (unsigned char *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Tencode", (void (*)(void))__pyx_f_4h5py_4defs_H5Tencode, "herr_t (hid_t, unsigned char *, size_t *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Tcommit2", (void (*)(void))__pyx_f_4h5py_4defs_H5Tcommit2, "herr_t (hid_t, char *, hid_t, hid_t, hid_t, hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Tfind", (void (*)(void))__pyx_f_4h5py_4defs_H5Tfind, "H5T_conv_t (hid_t, hid_t, H5T_cdata_t **)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Tregister", (void (*)(void))__pyx_f_4h5py_4defs_H5Tregister, "herr_t (H5T_pers_t, char *, hid_t, hid_t, H5T_conv_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Tunregister", (void (*)(void))__pyx_f_4h5py_4defs_H5Tunregister, "herr_t (H5T_pers_t, char *, hid_t, hid_t, H5T_conv_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Zfilter_avail", (void (*)(void))__pyx_f_4h5py_4defs_H5Zfilter_avail, "htri_t (H5Z_filter_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Zget_filter_info", (void (*)(void))__pyx_f_4h5py_4defs_H5Zget_filter_info, "herr_t (H5Z_filter_t, unsigned int *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Acreate", (void (*)(void))__pyx_f_4h5py_4defs_H5Acreate, "hid_t (hid_t, char *, hid_t, hid_t, hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Aopen_idx", (void (*)(void))__pyx_f_4h5py_4defs_H5Aopen_idx, "hid_t (hid_t, unsigned int)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Aopen_name", (void (*)(void))__pyx_f_4h5py_4defs_H5Aopen_name, "hid_t (hid_t, char *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Aclose", (void (*)(void))__pyx_f_4h5py_4defs_H5Aclose, "herr_t (hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Adelete", (void (*)(void))__pyx_f_4h5py_4defs_H5Adelete, "herr_t (hid_t, char *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Aread", (void (*)(void))__pyx_f_4h5py_4defs_H5Aread, "herr_t (hid_t, hid_t, void *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Awrite", (void (*)(void))__pyx_f_4h5py_4defs_H5Awrite, "herr_t (hid_t, hid_t, void *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Aget_num_attrs", (void (*)(void))__pyx_f_4h5py_4defs_H5Aget_num_attrs, "int (hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Aget_name", (void (*)(void))__pyx_f_4h5py_4defs_H5Aget_name, "Py_ssize_t (hid_t, size_t, char *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Aget_space", (void (*)(void))__pyx_f_4h5py_4defs_H5Aget_space, "hid_t (hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Aget_type", (void (*)(void))__pyx_f_4h5py_4defs_H5Aget_type, "hid_t (hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Aiterate", (void (*)(void))__pyx_f_4h5py_4defs_H5Aiterate, "herr_t (hid_t, unsigned int *, H5A_operator_t, void *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Adelete_by_name", (void (*)(void))__pyx_f_4h5py_4defs_H5Adelete_by_name, "herr_t (hid_t, char *, char *, hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Adelete_by_idx", (void (*)(void))__pyx_f_4h5py_4defs_H5Adelete_by_idx, "herr_t (hid_t, char *, H5_index_t, H5_iter_order_t, hsize_t, hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Acreate_by_name", (void (*)(void))__pyx_f_4h5py_4defs_H5Acreate_by_name, "hid_t (hid_t, char *, char *, hid_t, hid_t, hid_t, hid_t, hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Aopen", (void (*)(void))__pyx_f_4h5py_4defs_H5Aopen, "herr_t (hid_t, char *, hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Aopen_by_name", (void (*)(void))__pyx_f_4h5py_4defs_H5Aopen_by_name, "herr_t (hid_t, char *, char *, hid_t, hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Aopen_by_idx", (void (*)(void))__pyx_f_4h5py_4defs_H5Aopen_by_idx, "herr_t (hid_t, char *, H5_index_t, H5_iter_order_t, hsize_t, hid_t, hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Aexists_by_name", (void (*)(void))__pyx_f_4h5py_4defs_H5Aexists_by_name, "htri_t (hid_t, char *, char *, hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Aexists", (void (*)(void))__pyx_f_4h5py_4defs_H5Aexists, "htri_t (hid_t, char *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Arename", (void (*)(void))__pyx_f_4h5py_4defs_H5Arename, "herr_t (hid_t, char *, char *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Arename_by_name", (void (*)(void))__pyx_f_4h5py_4defs_H5Arename_by_name, "herr_t (hid_t, char *, char *, char *, hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Aget_info", (void (*)(void))__pyx_f_4h5py_4defs_H5Aget_info, "herr_t (hid_t, H5A_info_t *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Aget_info_by_name", (void (*)(void))__pyx_f_4h5py_4defs_H5Aget_info_by_name, "herr_t (hid_t, char *, char *, H5A_info_t *, hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Aget_info_by_idx", (void (*)(void))__pyx_f_4h5py_4defs_H5Aget_info_by_idx, "herr_t (hid_t, char *, H5_index_t, H5_iter_order_t, hsize_t, H5A_info_t *, hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Aiterate2", (void (*)(void))__pyx_f_4h5py_4defs_H5Aiterate2, "herr_t (hid_t, H5_index_t, H5_iter_order_t, hsize_t *, H5A_operator2_t, void *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5Aget_storage_size", (void (*)(void))__pyx_f_4h5py_4defs_H5Aget_storage_size, "hsize_t (hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5DSattach_scale", (void (*)(void))__pyx_f_4h5py_4defs_H5DSattach_scale, "herr_t (hid_t, hid_t, unsigned int)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5DSdetach_scale", (void (*)(void))__pyx_f_4h5py_4defs_H5DSdetach_scale, "herr_t (hid_t, hid_t, unsigned int)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5DSset_scale", (void (*)(void))__pyx_f_4h5py_4defs_H5DSset_scale, "herr_t (hid_t, char *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5DSget_num_scales", (void (*)(void))__pyx_f_4h5py_4defs_H5DSget_num_scales, "int (hid_t, unsigned int)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5DSset_label", (void (*)(void))__pyx_f_4h5py_4defs_H5DSset_label, "herr_t (hid_t, unsigned int, char *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5DSget_label", (void (*)(void))__pyx_f_4h5py_4defs_H5DSget_label, "Py_ssize_t (hid_t, unsigned int, char *, size_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5DSget_scale_name", (void (*)(void))__pyx_f_4h5py_4defs_H5DSget_scale_name, "Py_ssize_t (hid_t, char *, size_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5DSis_scale", (void (*)(void))__pyx_f_4h5py_4defs_H5DSis_scale, "htri_t (hid_t)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5DSiterate_scales", (void (*)(void))__pyx_f_4h5py_4defs_H5DSiterate_scales, "herr_t (hid_t, unsigned int, int *, H5DS_iterate_t, void *)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("H5DSis_attached", (void (*)(void))__pyx_f_4h5py_4defs_H5DSis_attached, "htri_t (hid_t, hid_t, unsigned int)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  /*--- Type init code ---*/
+  if (PyType_Ready(&__pyx_type_4h5py_4defs_FastRLock) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetAttrString(__pyx_m, "FastRLock", (PyObject *)&__pyx_type_4h5py_4defs_FastRLock) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_4defs_FastRLock = &__pyx_type_4h5py_4defs_FastRLock;
+  /*--- Type import code ---*/
+  __pyx_ptype_7cpython_4type_type = __Pyx_ImportType(__Pyx_BUILTIN_MODULE_NAME, "type", 
+  #if CYTHON_COMPILING_IN_PYPY
+  sizeof(PyTypeObject),
+  #else
+  sizeof(PyHeapTypeObject),
+  #endif
+  0); if (unlikely(!__pyx_ptype_7cpython_4type_type)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 9; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_7cpython_4bool_bool = __Pyx_ImportType(__Pyx_BUILTIN_MODULE_NAME, "bool", sizeof(PyBoolObject), 0); if (unlikely(!__pyx_ptype_7cpython_4bool_bool)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_7cpython_7complex_complex = __Pyx_ImportType(__Pyx_BUILTIN_MODULE_NAME, "complex", sizeof(PyComplexObject), 0); if (unlikely(!__pyx_ptype_7cpython_7complex_complex)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  /*--- Variable import code ---*/
+  /*--- Function import code ---*/
+  __pyx_t_1 = __Pyx_ImportModule("h5py._errors"); if (!__pyx_t_1) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "set_exception", (void (**)(void))&__pyx_f_4h5py_7_errors_set_exception, "int (void)") < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  Py_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  /*--- Execution code ---*/
+
+  /* "h5py/defs.pyx":11
+ * include "_locks.pxi"
+ * 
+ * rlock = FastRLock()             # <<<<<<<<<<<<<<
+ * cdef herr_t H5open() except *:
+ *     cdef herr_t r
+ */
+  __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4h5py_4defs_FastRLock)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 11; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__rlock, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 11; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/defs.pyx":1
+ * include "config.pxi"             # <<<<<<<<<<<<<<
+ * from api_types_ext cimport *
+ * from api_types_hdf5 cimport *
+ */
+  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s____test__, ((PyObject *)__pyx_t_2)) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  if (__pyx_m) {
+    __Pyx_AddTraceback("init h5py.defs", __pyx_clineno, __pyx_lineno, __pyx_filename);
+    Py_DECREF(__pyx_m); __pyx_m = 0;
+  } else if (!PyErr_Occurred()) {
+    PyErr_SetString(PyExc_ImportError, "init h5py.defs");
+  }
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  #if PY_MAJOR_VERSION < 3
+  return;
+  #else
+  return __pyx_m;
+  #endif
+}
+
+/* Runtime support code */
+#if CYTHON_REFNANNY
+static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) {
+    PyObject *m = NULL, *p = NULL;
+    void *r = NULL;
+    m = PyImport_ImportModule((char *)modname);
+    if (!m) goto end;
+    p = PyObject_GetAttrString(m, (char *)"RefNannyAPI");
+    if (!p) goto end;
+    r = PyLong_AsVoidPtr(p);
+end:
+    Py_XDECREF(p);
+    Py_XDECREF(m);
+    return (__Pyx_RefNannyAPIStruct *)r;
+}
+#endif /* CYTHON_REFNANNY */
+
+static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name) {
+    PyObject *result;
+    result = PyObject_GetAttr(dict, name);
+    if (!result) {
+        if (dict != __pyx_b) {
+            PyErr_Clear();
+            result = PyObject_GetAttr(__pyx_b, name);
+        }
+        if (!result) {
+            PyErr_SetObject(PyExc_NameError, name);
+        }
+    }
+    return result;
+}
+
+static void __Pyx_RaiseArgtupleInvalid(
+    const char* func_name,
+    int exact,
+    Py_ssize_t num_min,
+    Py_ssize_t num_max,
+    Py_ssize_t num_found)
+{
+    Py_ssize_t num_expected;
+    const char *more_or_less;
+    if (num_found < num_min) {
+        num_expected = num_min;
+        more_or_less = "at least";
+    } else {
+        num_expected = num_max;
+        more_or_less = "at most";
+    }
+    if (exact) {
+        more_or_less = "exactly";
+    }
+    PyErr_Format(PyExc_TypeError,
+                 "%s() takes %s %" CYTHON_FORMAT_SSIZE_T "d positional argument%s (%" CYTHON_FORMAT_SSIZE_T "d given)",
+                 func_name, more_or_less, num_expected,
+                 (num_expected == 1) ? "" : "s", num_found);
+}
+
+static CYTHON_INLINE int __Pyx_CheckKeywordStrings(
+    PyObject *kwdict,
+    const char* function_name,
+    int kw_allowed)
+{
+    PyObject* key = 0;
+    Py_ssize_t pos = 0;
+#if CPYTHON_COMPILING_IN_PYPY
+    if (!kw_allowed && PyDict_Next(kwdict, &pos, &key, 0))
+        goto invalid_keyword;
+    return 1;
+#else
+    while (PyDict_Next(kwdict, &pos, &key, 0)) {
+        #if PY_MAJOR_VERSION < 3
+        if (unlikely(!PyString_CheckExact(key)) && unlikely(!PyString_Check(key)))
+        #endif
+            if (unlikely(!PyUnicode_Check(key)))
+                goto invalid_keyword_type;
+    }
+    if ((!kw_allowed) && unlikely(key))
+        goto invalid_keyword;
+    return 1;
+invalid_keyword_type:
+    PyErr_Format(PyExc_TypeError,
+        "%s() keywords must be strings", function_name);
+    return 0;
+#endif
+invalid_keyword:
+    PyErr_Format(PyExc_TypeError,
+    #if PY_MAJOR_VERSION < 3
+        "%s() got an unexpected keyword argument '%s'",
+        function_name, PyString_AsString(key));
+    #else
+        "%s() got an unexpected keyword argument '%U'",
+        function_name, key);
+    #endif
+    return 0;
+}
+
+static void __Pyx_RaiseDoubleKeywordsError(
+    const char* func_name,
+    PyObject* kw_name)
+{
+    PyErr_Format(PyExc_TypeError,
+        #if PY_MAJOR_VERSION >= 3
+        "%s() got multiple values for keyword argument '%U'", func_name, kw_name);
+        #else
+        "%s() got multiple values for keyword argument '%s'", func_name,
+        PyString_AsString(kw_name));
+        #endif
+}
+
+static int __Pyx_ParseOptionalKeywords(
+    PyObject *kwds,
+    PyObject **argnames[],
+    PyObject *kwds2,
+    PyObject *values[],
+    Py_ssize_t num_pos_args,
+    const char* function_name)
+{
+    PyObject *key = 0, *value = 0;
+    Py_ssize_t pos = 0;
+    PyObject*** name;
+    PyObject*** first_kw_arg = argnames + num_pos_args;
+    while (PyDict_Next(kwds, &pos, &key, &value)) {
+        name = first_kw_arg;
+        while (*name && (**name != key)) name++;
+        if (*name) {
+            values[name-argnames] = value;
+            continue;
+        }
+        name = first_kw_arg;
+        #if PY_MAJOR_VERSION < 3
+        if (likely(PyString_CheckExact(key)) || likely(PyString_Check(key))) {
+            while (*name) {
+                if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key))
+                        && _PyString_Eq(**name, key)) {
+                    values[name-argnames] = value;
+                    break;
+                }
+                name++;
+            }
+            if (*name) continue;
+            else {
+                PyObject*** argname = argnames;
+                while (argname != first_kw_arg) {
+                    if ((**argname == key) || (
+                            (CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**argname) == PyString_GET_SIZE(key))
+                             && _PyString_Eq(**argname, key))) {
+                        goto arg_passed_twice;
+                    }
+                    argname++;
+                }
+            }
+        } else
+        #endif
+        if (likely(PyUnicode_Check(key))) {
+            while (*name) {
+                int cmp = (**name == key) ? 0 :
+                #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
+                    (PyUnicode_GET_SIZE(**name) != PyUnicode_GET_SIZE(key)) ? 1 :
+                #endif
+                    PyUnicode_Compare(**name, key);
+                if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
+                if (cmp == 0) {
+                    values[name-argnames] = value;
+                    break;
+                }
+                name++;
+            }
+            if (*name) continue;
+            else {
+                PyObject*** argname = argnames;
+                while (argname != first_kw_arg) {
+                    int cmp = (**argname == key) ? 0 :
+                    #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
+                        (PyUnicode_GET_SIZE(**argname) != PyUnicode_GET_SIZE(key)) ? 1 :
+                    #endif
+                        PyUnicode_Compare(**argname, key);
+                    if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
+                    if (cmp == 0) goto arg_passed_twice;
+                    argname++;
+                }
+            }
+        } else
+            goto invalid_keyword_type;
+        if (kwds2) {
+            if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad;
+        } else {
+            goto invalid_keyword;
+        }
+    }
+    return 0;
+arg_passed_twice:
+    __Pyx_RaiseDoubleKeywordsError(function_name, key);
+    goto bad;
+invalid_keyword_type:
+    PyErr_Format(PyExc_TypeError,
+        "%s() keywords must be strings", function_name);
+    goto bad;
+invalid_keyword:
+    PyErr_Format(PyExc_TypeError,
+    #if PY_MAJOR_VERSION < 3
+        "%s() got an unexpected keyword argument '%s'",
+        function_name, PyString_AsString(key));
+    #else
+        "%s() got an unexpected keyword argument '%U'",
+        function_name, key);
+    #endif
+bad:
+    return -1;
+}
+
+static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb) {
+#if CYTHON_COMPILING_IN_CPYTHON
+    PyObject *tmp_type, *tmp_value, *tmp_tb;
+    PyThreadState *tstate = PyThreadState_GET();
+    tmp_type = tstate->curexc_type;
+    tmp_value = tstate->curexc_value;
+    tmp_tb = tstate->curexc_traceback;
+    tstate->curexc_type = type;
+    tstate->curexc_value = value;
+    tstate->curexc_traceback = tb;
+    Py_XDECREF(tmp_type);
+    Py_XDECREF(tmp_value);
+    Py_XDECREF(tmp_tb);
+#else
+    PyErr_Restore(type, value, tb);
+#endif
+}
+static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb) {
+#if CYTHON_COMPILING_IN_CPYTHON
+    PyThreadState *tstate = PyThreadState_GET();
+    *type = tstate->curexc_type;
+    *value = tstate->curexc_value;
+    *tb = tstate->curexc_traceback;
+    tstate->curexc_type = 0;
+    tstate->curexc_value = 0;
+    tstate->curexc_traceback = 0;
+#else
+    PyErr_Fetch(type, value, tb);
+#endif
+}
+
+#if PY_MAJOR_VERSION < 3
+static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb,
+                        CYTHON_UNUSED PyObject *cause) {
+    Py_XINCREF(type);
+    if (!value || value == Py_None)
+        value = NULL;
+    else
+        Py_INCREF(value);
+    if (!tb || tb == Py_None)
+        tb = NULL;
+    else {
+        Py_INCREF(tb);
+        if (!PyTraceBack_Check(tb)) {
+            PyErr_SetString(PyExc_TypeError,
+                "raise: arg 3 must be a traceback or None");
+            goto raise_error;
+        }
+    }
+    #if PY_VERSION_HEX < 0x02050000
+    if (PyClass_Check(type)) {
+    #else
+    if (PyType_Check(type)) {
+    #endif
+#if CYTHON_COMPILING_IN_PYPY
+        if (!value) {
+            Py_INCREF(Py_None);
+            value = Py_None;
+        }
+#endif
+        PyErr_NormalizeException(&type, &value, &tb);
+    } else {
+        if (value) {
+            PyErr_SetString(PyExc_TypeError,
+                "instance exception may not have a separate value");
+            goto raise_error;
+        }
+        value = type;
+        #if PY_VERSION_HEX < 0x02050000
+            if (PyInstance_Check(type)) {
+                type = (PyObject*) ((PyInstanceObject*)type)->in_class;
+                Py_INCREF(type);
+            }
+            else {
+                type = 0;
+                PyErr_SetString(PyExc_TypeError,
+                    "raise: exception must be an old-style class or instance");
+                goto raise_error;
+            }
+        #else
+            type = (PyObject*) Py_TYPE(type);
+            Py_INCREF(type);
+            if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) {
+                PyErr_SetString(PyExc_TypeError,
+                    "raise: exception class must be a subclass of BaseException");
+                goto raise_error;
+            }
+        #endif
+    }
+    __Pyx_ErrRestore(type, value, tb);
+    return;
+raise_error:
+    Py_XDECREF(value);
+    Py_XDECREF(type);
+    Py_XDECREF(tb);
+    return;
+}
+#else /* Python 3+ */
+static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) {
+    PyObject* owned_instance = NULL;
+    if (tb == Py_None) {
+        tb = 0;
+    } else if (tb && !PyTraceBack_Check(tb)) {
+        PyErr_SetString(PyExc_TypeError,
+            "raise: arg 3 must be a traceback or None");
+        goto bad;
+    }
+    if (value == Py_None)
+        value = 0;
+    if (PyExceptionInstance_Check(type)) {
+        if (value) {
+            PyErr_SetString(PyExc_TypeError,
+                "instance exception may not have a separate value");
+            goto bad;
+        }
+        value = type;
+        type = (PyObject*) Py_TYPE(value);
+    } else if (PyExceptionClass_Check(type)) {
+        PyObject *args;
+        if (!value)
+            args = PyTuple_New(0);
+        else if (PyTuple_Check(value)) {
+            Py_INCREF(value);
+            args = value;
+        }
+        else
+            args = PyTuple_Pack(1, value);
+        if (!args)
+            goto bad;
+        owned_instance = PyEval_CallObject(type, args);
+        Py_DECREF(args);
+        if (!owned_instance)
+            goto bad;
+        value = owned_instance;
+        if (!PyExceptionInstance_Check(value)) {
+            PyErr_Format(PyExc_TypeError,
+                         "calling %R should have returned an instance of "
+                         "BaseException, not %R",
+                         type, Py_TYPE(value));
+            goto bad;
+        }
+    } else {
+        PyErr_SetString(PyExc_TypeError,
+            "raise: exception class must be a subclass of BaseException");
+        goto bad;
+    }
+    if (cause && cause != Py_None) {
+        PyObject *fixed_cause;
+        if (PyExceptionClass_Check(cause)) {
+            fixed_cause = PyObject_CallObject(cause, NULL);
+            if (fixed_cause == NULL)
+                goto bad;
+        }
+        else if (PyExceptionInstance_Check(cause)) {
+            fixed_cause = cause;
+            Py_INCREF(fixed_cause);
+        }
+        else {
+            PyErr_SetString(PyExc_TypeError,
+                            "exception causes must derive from "
+                            "BaseException");
+            goto bad;
+        }
+        PyException_SetCause(value, fixed_cause);
+    }
+    PyErr_SetObject(type, value);
+    if (tb) {
+        PyThreadState *tstate = PyThreadState_GET();
+        PyObject* tmp_tb = tstate->curexc_traceback;
+        if (tb != tmp_tb) {
+            Py_INCREF(tb);
+            tstate->curexc_traceback = tb;
+            Py_XDECREF(tmp_tb);
+        }
+    }
+bad:
+    Py_XDECREF(owned_instance);
+    return;
+}
+#endif
+
+static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) {
+    PyObject *local_type, *local_value, *local_tb;
+#if CYTHON_COMPILING_IN_CPYTHON
+    PyObject *tmp_type, *tmp_value, *tmp_tb;
+    PyThreadState *tstate = PyThreadState_GET();
+    local_type = tstate->curexc_type;
+    local_value = tstate->curexc_value;
+    local_tb = tstate->curexc_traceback;
+    tstate->curexc_type = 0;
+    tstate->curexc_value = 0;
+    tstate->curexc_traceback = 0;
+#else
+    PyErr_Fetch(&local_type, &local_value, &local_tb);
+#endif
+    PyErr_NormalizeException(&local_type, &local_value, &local_tb);
+#if CYTHON_COMPILING_IN_CPYTHON
+    if (unlikely(tstate->curexc_type))
+#else
+    if (unlikely(PyErr_Occurred()))
+#endif
+        goto bad;
+    #if PY_MAJOR_VERSION >= 3
+    if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0))
+        goto bad;
+    #endif
+    Py_INCREF(local_type);
+    Py_INCREF(local_value);
+    Py_INCREF(local_tb);
+    *type = local_type;
+    *value = local_value;
+    *tb = local_tb;
+#if CYTHON_COMPILING_IN_CPYTHON
+    tmp_type = tstate->exc_type;
+    tmp_value = tstate->exc_value;
+    tmp_tb = tstate->exc_traceback;
+    tstate->exc_type = local_type;
+    tstate->exc_value = local_value;
+    tstate->exc_traceback = local_tb;
+    /* Make sure tstate is in a consistent state when we XDECREF
+       these objects (DECREF may run arbitrary code). */
+    Py_XDECREF(tmp_type);
+    Py_XDECREF(tmp_value);
+    Py_XDECREF(tmp_tb);
+#else
+    PyErr_SetExcInfo(local_type, local_value, local_tb);
+#endif
+    return 0;
+bad:
+    *type = 0;
+    *value = 0;
+    *tb = 0;
+    Py_XDECREF(local_type);
+    Py_XDECREF(local_value);
+    Py_XDECREF(local_tb);
+    return -1;
+}
+
+static CYTHON_INLINE void __Pyx_ExceptionSave(PyObject **type, PyObject **value, PyObject **tb) {
+#if CYTHON_COMPILING_IN_CPYTHON
+    PyThreadState *tstate = PyThreadState_GET();
+    *type = tstate->exc_type;
+    *value = tstate->exc_value;
+    *tb = tstate->exc_traceback;
+    Py_XINCREF(*type);
+    Py_XINCREF(*value);
+    Py_XINCREF(*tb);
+#else
+    PyErr_GetExcInfo(type, value, tb);
+#endif
+}
+static void __Pyx_ExceptionReset(PyObject *type, PyObject *value, PyObject *tb) {
+#if CYTHON_COMPILING_IN_CPYTHON
+    PyObject *tmp_type, *tmp_value, *tmp_tb;
+    PyThreadState *tstate = PyThreadState_GET();
+    tmp_type = tstate->exc_type;
+    tmp_value = tstate->exc_value;
+    tmp_tb = tstate->exc_traceback;
+    tstate->exc_type = type;
+    tstate->exc_value = value;
+    tstate->exc_traceback = tb;
+    Py_XDECREF(tmp_type);
+    Py_XDECREF(tmp_value);
+    Py_XDECREF(tmp_tb);
+#else
+    PyErr_SetExcInfo(type, value, tb);
+#endif
+}
+
+static CYTHON_INLINE unsigned char __Pyx_PyInt_AsUnsignedChar(PyObject* x) {
+    const unsigned char neg_one = (unsigned char)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(unsigned char) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(unsigned char)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to unsigned char" :
+                    "value too large to convert to unsigned char");
+            }
+            return (unsigned char)-1;
+        }
+        return (unsigned char)val;
+    }
+    return (unsigned char)__Pyx_PyInt_AsUnsignedLong(x);
+}
+
+static CYTHON_INLINE unsigned short __Pyx_PyInt_AsUnsignedShort(PyObject* x) {
+    const unsigned short neg_one = (unsigned short)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(unsigned short) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(unsigned short)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to unsigned short" :
+                    "value too large to convert to unsigned short");
+            }
+            return (unsigned short)-1;
+        }
+        return (unsigned short)val;
+    }
+    return (unsigned short)__Pyx_PyInt_AsUnsignedLong(x);
+}
+
+static CYTHON_INLINE unsigned int __Pyx_PyInt_AsUnsignedInt(PyObject* x) {
+    const unsigned int neg_one = (unsigned int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(unsigned int) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(unsigned int)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to unsigned int" :
+                    "value too large to convert to unsigned int");
+            }
+            return (unsigned int)-1;
+        }
+        return (unsigned int)val;
+    }
+    return (unsigned int)__Pyx_PyInt_AsUnsignedLong(x);
+}
+
+static CYTHON_INLINE char __Pyx_PyInt_AsChar(PyObject* x) {
+    const char neg_one = (char)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(char) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(char)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to char" :
+                    "value too large to convert to char");
+            }
+            return (char)-1;
+        }
+        return (char)val;
+    }
+    return (char)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE short __Pyx_PyInt_AsShort(PyObject* x) {
+    const short neg_one = (short)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(short) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(short)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to short" :
+                    "value too large to convert to short");
+            }
+            return (short)-1;
+        }
+        return (short)val;
+    }
+    return (short)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE int __Pyx_PyInt_AsInt(PyObject* x) {
+    const int neg_one = (int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(int) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(int)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to int" :
+                    "value too large to convert to int");
+            }
+            return (int)-1;
+        }
+        return (int)val;
+    }
+    return (int)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE signed char __Pyx_PyInt_AsSignedChar(PyObject* x) {
+    const signed char neg_one = (signed char)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(signed char) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(signed char)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to signed char" :
+                    "value too large to convert to signed char");
+            }
+            return (signed char)-1;
+        }
+        return (signed char)val;
+    }
+    return (signed char)__Pyx_PyInt_AsSignedLong(x);
+}
+
+static CYTHON_INLINE signed short __Pyx_PyInt_AsSignedShort(PyObject* x) {
+    const signed short neg_one = (signed short)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(signed short) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(signed short)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to signed short" :
+                    "value too large to convert to signed short");
+            }
+            return (signed short)-1;
+        }
+        return (signed short)val;
+    }
+    return (signed short)__Pyx_PyInt_AsSignedLong(x);
+}
+
+static CYTHON_INLINE signed int __Pyx_PyInt_AsSignedInt(PyObject* x) {
+    const signed int neg_one = (signed int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(signed int) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(signed int)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to signed int" :
+                    "value too large to convert to signed int");
+            }
+            return (signed int)-1;
+        }
+        return (signed int)val;
+    }
+    return (signed int)__Pyx_PyInt_AsSignedLong(x);
+}
+
+static CYTHON_INLINE int __Pyx_PyInt_AsLongDouble(PyObject* x) {
+    const int neg_one = (int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(int) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(int)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to int" :
+                    "value too large to convert to int");
+            }
+            return (int)-1;
+        }
+        return (int)val;
+    }
+    return (int)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE unsigned long __Pyx_PyInt_AsUnsignedLong(PyObject* x) {
+    const unsigned long neg_one = (unsigned long)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to unsigned long");
+            return (unsigned long)-1;
+        }
+        return (unsigned long)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to unsigned long");
+                return (unsigned long)-1;
+            }
+            return (unsigned long)PyLong_AsUnsignedLong(x);
+        } else {
+            return (unsigned long)PyLong_AsLong(x);
+        }
+    } else {
+        unsigned long val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (unsigned long)-1;
+        val = __Pyx_PyInt_AsUnsignedLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE unsigned PY_LONG_LONG __Pyx_PyInt_AsUnsignedLongLong(PyObject* x) {
+    const unsigned PY_LONG_LONG neg_one = (unsigned PY_LONG_LONG)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to unsigned PY_LONG_LONG");
+            return (unsigned PY_LONG_LONG)-1;
+        }
+        return (unsigned PY_LONG_LONG)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to unsigned PY_LONG_LONG");
+                return (unsigned PY_LONG_LONG)-1;
+            }
+            return (unsigned PY_LONG_LONG)PyLong_AsUnsignedLongLong(x);
+        } else {
+            return (unsigned PY_LONG_LONG)PyLong_AsLongLong(x);
+        }
+    } else {
+        unsigned PY_LONG_LONG val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (unsigned PY_LONG_LONG)-1;
+        val = __Pyx_PyInt_AsUnsignedLongLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE long __Pyx_PyInt_AsLong(PyObject* x) {
+    const long neg_one = (long)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to long");
+            return (long)-1;
+        }
+        return (long)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to long");
+                return (long)-1;
+            }
+            return (long)PyLong_AsUnsignedLong(x);
+        } else {
+            return (long)PyLong_AsLong(x);
+        }
+    } else {
+        long val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (long)-1;
+        val = __Pyx_PyInt_AsLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE PY_LONG_LONG __Pyx_PyInt_AsLongLong(PyObject* x) {
+    const PY_LONG_LONG neg_one = (PY_LONG_LONG)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to PY_LONG_LONG");
+            return (PY_LONG_LONG)-1;
+        }
+        return (PY_LONG_LONG)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to PY_LONG_LONG");
+                return (PY_LONG_LONG)-1;
+            }
+            return (PY_LONG_LONG)PyLong_AsUnsignedLongLong(x);
+        } else {
+            return (PY_LONG_LONG)PyLong_AsLongLong(x);
+        }
+    } else {
+        PY_LONG_LONG val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (PY_LONG_LONG)-1;
+        val = __Pyx_PyInt_AsLongLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE signed long __Pyx_PyInt_AsSignedLong(PyObject* x) {
+    const signed long neg_one = (signed long)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to signed long");
+            return (signed long)-1;
+        }
+        return (signed long)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to signed long");
+                return (signed long)-1;
+            }
+            return (signed long)PyLong_AsUnsignedLong(x);
+        } else {
+            return (signed long)PyLong_AsLong(x);
+        }
+    } else {
+        signed long val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (signed long)-1;
+        val = __Pyx_PyInt_AsSignedLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE signed PY_LONG_LONG __Pyx_PyInt_AsSignedLongLong(PyObject* x) {
+    const signed PY_LONG_LONG neg_one = (signed PY_LONG_LONG)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to signed PY_LONG_LONG");
+            return (signed PY_LONG_LONG)-1;
+        }
+        return (signed PY_LONG_LONG)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to signed PY_LONG_LONG");
+                return (signed PY_LONG_LONG)-1;
+            }
+            return (signed PY_LONG_LONG)PyLong_AsUnsignedLongLong(x);
+        } else {
+            return (signed PY_LONG_LONG)PyLong_AsLongLong(x);
+        }
+    } else {
+        signed PY_LONG_LONG val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (signed PY_LONG_LONG)-1;
+        val = __Pyx_PyInt_AsSignedLongLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static int __Pyx_check_binary_version(void) {
+    char ctversion[4], rtversion[4];
+    PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION);
+    PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion());
+    if (ctversion[0] != rtversion[0] || ctversion[2] != rtversion[2]) {
+        char message[200];
+        PyOS_snprintf(message, sizeof(message),
+                      "compiletime version %s of module '%.100s' "
+                      "does not match runtime version %s",
+                      ctversion, __Pyx_MODULE_NAME, rtversion);
+        #if PY_VERSION_HEX < 0x02050000
+        return PyErr_Warn(NULL, message);
+        #else
+        return PyErr_WarnEx(NULL, message, 1);
+        #endif
+    }
+    return 0;
+}
+
+static int __Pyx_ExportFunction(const char *name, void (*f)(void), const char *sig) {
+    PyObject *d = 0;
+    PyObject *cobj = 0;
+    union {
+        void (*fp)(void);
+        void *p;
+    } tmp;
+    d = PyObject_GetAttrString(__pyx_m, (char *)"__pyx_capi__");
+    if (!d) {
+        PyErr_Clear();
+        d = PyDict_New();
+        if (!d)
+            goto bad;
+        Py_INCREF(d);
+        if (PyModule_AddObject(__pyx_m, (char *)"__pyx_capi__", d) < 0)
+            goto bad;
+    }
+    tmp.fp = f;
+#if PY_VERSION_HEX >= 0x02070000 && !(PY_MAJOR_VERSION==3&&PY_MINOR_VERSION==0)
+    cobj = PyCapsule_New(tmp.p, sig, 0);
+#else
+    cobj = PyCObject_FromVoidPtrAndDesc(tmp.p, (void *)sig, 0);
+#endif
+    if (!cobj)
+        goto bad;
+    if (PyDict_SetItemString(d, name, cobj) < 0)
+        goto bad;
+    Py_DECREF(cobj);
+    Py_DECREF(d);
+    return 0;
+bad:
+    Py_XDECREF(cobj);
+    Py_XDECREF(d);
+    return -1;
+}
+
+#ifndef __PYX_HAVE_RT_ImportModule
+#define __PYX_HAVE_RT_ImportModule
+static PyObject *__Pyx_ImportModule(const char *name) {
+    PyObject *py_name = 0;
+    PyObject *py_module = 0;
+    py_name = __Pyx_PyIdentifier_FromString(name);
+    if (!py_name)
+        goto bad;
+    py_module = PyImport_Import(py_name);
+    Py_DECREF(py_name);
+    return py_module;
+bad:
+    Py_XDECREF(py_name);
+    return 0;
+}
+#endif
+
+#ifndef __PYX_HAVE_RT_ImportType
+#define __PYX_HAVE_RT_ImportType
+static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name,
+    size_t size, int strict)
+{
+    PyObject *py_module = 0;
+    PyObject *result = 0;
+    PyObject *py_name = 0;
+    char warning[200];
+    Py_ssize_t basicsize;
+#ifdef Py_LIMITED_API
+    PyObject *py_basicsize;
+#endif
+    py_module = __Pyx_ImportModule(module_name);
+    if (!py_module)
+        goto bad;
+    py_name = __Pyx_PyIdentifier_FromString(class_name);
+    if (!py_name)
+        goto bad;
+    result = PyObject_GetAttr(py_module, py_name);
+    Py_DECREF(py_name);
+    py_name = 0;
+    Py_DECREF(py_module);
+    py_module = 0;
+    if (!result)
+        goto bad;
+    if (!PyType_Check(result)) {
+        PyErr_Format(PyExc_TypeError,
+            "%s.%s is not a type object",
+            module_name, class_name);
+        goto bad;
+    }
+#ifndef Py_LIMITED_API
+    basicsize = ((PyTypeObject *)result)->tp_basicsize;
+#else
+    py_basicsize = PyObject_GetAttrString(result, "__basicsize__");
+    if (!py_basicsize)
+        goto bad;
+    basicsize = PyLong_AsSsize_t(py_basicsize);
+    Py_DECREF(py_basicsize);
+    py_basicsize = 0;
+    if (basicsize == (Py_ssize_t)-1 && PyErr_Occurred())
+        goto bad;
+#endif
+    if (!strict && (size_t)basicsize > size) {
+        PyOS_snprintf(warning, sizeof(warning),
+            "%s.%s size changed, may indicate binary incompatibility",
+            module_name, class_name);
+        #if PY_VERSION_HEX < 0x02050000
+        if (PyErr_Warn(NULL, warning) < 0) goto bad;
+        #else
+        if (PyErr_WarnEx(NULL, warning, 0) < 0) goto bad;
+        #endif
+    }
+    else if ((size_t)basicsize != size) {
+        PyErr_Format(PyExc_ValueError,
+            "%s.%s has the wrong size, try recompiling",
+            module_name, class_name);
+        goto bad;
+    }
+    return (PyTypeObject *)result;
+bad:
+    Py_XDECREF(py_module);
+    Py_XDECREF(result);
+    return NULL;
+}
+#endif
+
+#ifndef __PYX_HAVE_RT_ImportFunction
+#define __PYX_HAVE_RT_ImportFunction
+static int __Pyx_ImportFunction(PyObject *module, const char *funcname, void (**f)(void), const char *sig) {
+    PyObject *d = 0;
+    PyObject *cobj = 0;
+    union {
+        void (*fp)(void);
+        void *p;
+    } tmp;
+    d = PyObject_GetAttrString(module, (char *)"__pyx_capi__");
+    if (!d)
+        goto bad;
+    cobj = PyDict_GetItemString(d, funcname);
+    if (!cobj) {
+        PyErr_Format(PyExc_ImportError,
+            "%s does not export expected C function %s",
+                PyModule_GetName(module), funcname);
+        goto bad;
+    }
+#if PY_VERSION_HEX >= 0x02070000 && !(PY_MAJOR_VERSION==3 && PY_MINOR_VERSION==0)
+    if (!PyCapsule_IsValid(cobj, sig)) {
+        PyErr_Format(PyExc_TypeError,
+            "C function %s.%s has wrong signature (expected %s, got %s)",
+             PyModule_GetName(module), funcname, sig, PyCapsule_GetName(cobj));
+        goto bad;
+    }
+    tmp.p = PyCapsule_GetPointer(cobj, sig);
+#else
+    {const char *desc, *s1, *s2;
+    desc = (const char *)PyCObject_GetDesc(cobj);
+    if (!desc)
+        goto bad;
+    s1 = desc; s2 = sig;
+    while (*s1 != '\0' && *s1 == *s2) { s1++; s2++; }
+    if (*s1 != *s2) {
+        PyErr_Format(PyExc_TypeError,
+            "C function %s.%s has wrong signature (expected %s, got %s)",
+             PyModule_GetName(module), funcname, sig, desc);
+        goto bad;
+    }
+    tmp.p = PyCObject_AsVoidPtr(cobj);}
+#endif
+    *f = tmp.fp;
+    if (!(*f))
+        goto bad;
+    Py_DECREF(d);
+    return 0;
+bad:
+    Py_XDECREF(d);
+    return -1;
+}
+#endif
+
+static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) {
+    int start = 0, mid = 0, end = count - 1;
+    if (end >= 0 && code_line > entries[end].code_line) {
+        return count;
+    }
+    while (start < end) {
+        mid = (start + end) / 2;
+        if (code_line < entries[mid].code_line) {
+            end = mid;
+        } else if (code_line > entries[mid].code_line) {
+             start = mid + 1;
+        } else {
+            return mid;
+        }
+    }
+    if (code_line <= entries[mid].code_line) {
+        return mid;
+    } else {
+        return mid + 1;
+    }
+}
+static PyCodeObject *__pyx_find_code_object(int code_line) {
+    PyCodeObject* code_object;
+    int pos;
+    if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) {
+        return NULL;
+    }
+    pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
+    if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) {
+        return NULL;
+    }
+    code_object = __pyx_code_cache.entries[pos].code_object;
+    Py_INCREF(code_object);
+    return code_object;
+}
+static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) {
+    int pos, i;
+    __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries;
+    if (unlikely(!code_line)) {
+        return;
+    }
+    if (unlikely(!entries)) {
+        entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry));
+        if (likely(entries)) {
+            __pyx_code_cache.entries = entries;
+            __pyx_code_cache.max_count = 64;
+            __pyx_code_cache.count = 1;
+            entries[0].code_line = code_line;
+            entries[0].code_object = code_object;
+            Py_INCREF(code_object);
+        }
+        return;
+    }
+    pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
+    if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) {
+        PyCodeObject* tmp = entries[pos].code_object;
+        entries[pos].code_object = code_object;
+        Py_DECREF(tmp);
+        return;
+    }
+    if (__pyx_code_cache.count == __pyx_code_cache.max_count) {
+        int new_max = __pyx_code_cache.max_count + 64;
+        entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc(
+            __pyx_code_cache.entries, new_max*sizeof(__Pyx_CodeObjectCacheEntry));
+        if (unlikely(!entries)) {
+            return;
+        }
+        __pyx_code_cache.entries = entries;
+        __pyx_code_cache.max_count = new_max;
+    }
+    for (i=__pyx_code_cache.count; i>pos; i--) {
+        entries[i] = entries[i-1];
+    }
+    entries[pos].code_line = code_line;
+    entries[pos].code_object = code_object;
+    __pyx_code_cache.count++;
+    Py_INCREF(code_object);
+}
+
+#include "compile.h"
+#include "frameobject.h"
+#include "traceback.h"
+static PyCodeObject* __Pyx_CreateCodeObjectForTraceback(
+            const char *funcname, int c_line,
+            int py_line, const char *filename) {
+    PyCodeObject *py_code = 0;
+    PyObject *py_srcfile = 0;
+    PyObject *py_funcname = 0;
+    #if PY_MAJOR_VERSION < 3
+    py_srcfile = PyString_FromString(filename);
+    #else
+    py_srcfile = PyUnicode_FromString(filename);
+    #endif
+    if (!py_srcfile) goto bad;
+    if (c_line) {
+        #if PY_MAJOR_VERSION < 3
+        py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
+        #else
+        py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
+        #endif
+    }
+    else {
+        #if PY_MAJOR_VERSION < 3
+        py_funcname = PyString_FromString(funcname);
+        #else
+        py_funcname = PyUnicode_FromString(funcname);
+        #endif
+    }
+    if (!py_funcname) goto bad;
+    py_code = __Pyx_PyCode_New(
+        0,            /*int argcount,*/
+        0,            /*int kwonlyargcount,*/
+        0,            /*int nlocals,*/
+        0,            /*int stacksize,*/
+        0,            /*int flags,*/
+        __pyx_empty_bytes, /*PyObject *code,*/
+        __pyx_empty_tuple, /*PyObject *consts,*/
+        __pyx_empty_tuple, /*PyObject *names,*/
+        __pyx_empty_tuple, /*PyObject *varnames,*/
+        __pyx_empty_tuple, /*PyObject *freevars,*/
+        __pyx_empty_tuple, /*PyObject *cellvars,*/
+        py_srcfile,   /*PyObject *filename,*/
+        py_funcname,  /*PyObject *name,*/
+        py_line,      /*int firstlineno,*/
+        __pyx_empty_bytes  /*PyObject *lnotab*/
+    );
+    Py_DECREF(py_srcfile);
+    Py_DECREF(py_funcname);
+    return py_code;
+bad:
+    Py_XDECREF(py_srcfile);
+    Py_XDECREF(py_funcname);
+    return NULL;
+}
+static void __Pyx_AddTraceback(const char *funcname, int c_line,
+                               int py_line, const char *filename) {
+    PyCodeObject *py_code = 0;
+    PyObject *py_globals = 0;
+    PyFrameObject *py_frame = 0;
+    py_code = __pyx_find_code_object(c_line ? c_line : py_line);
+    if (!py_code) {
+        py_code = __Pyx_CreateCodeObjectForTraceback(
+            funcname, c_line, py_line, filename);
+        if (!py_code) goto bad;
+        __pyx_insert_code_object(c_line ? c_line : py_line, py_code);
+    }
+    py_globals = PyModule_GetDict(__pyx_m);
+    if (!py_globals) goto bad;
+    py_frame = PyFrame_New(
+        PyThreadState_GET(), /*PyThreadState *tstate,*/
+        py_code,             /*PyCodeObject *code,*/
+        py_globals,          /*PyObject *globals,*/
+        0                    /*PyObject *locals*/
+    );
+    if (!py_frame) goto bad;
+    py_frame->f_lineno = py_line;
+    PyTraceBack_Here(py_frame);
+bad:
+    Py_XDECREF(py_code);
+    Py_XDECREF(py_frame);
+}
+
+static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
+    while (t->p) {
+        #if PY_MAJOR_VERSION < 3
+        if (t->is_unicode) {
+            *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL);
+        } else if (t->intern) {
+            *t->p = PyString_InternFromString(t->s);
+        } else {
+            *t->p = PyString_FromStringAndSize(t->s, t->n - 1);
+        }
+        #else  /* Python 3+ has unicode identifiers */
+        if (t->is_unicode | t->is_str) {
+            if (t->intern) {
+                *t->p = PyUnicode_InternFromString(t->s);
+            } else if (t->encoding) {
+                *t->p = PyUnicode_Decode(t->s, t->n - 1, t->encoding, NULL);
+            } else {
+                *t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1);
+            }
+        } else {
+            *t->p = PyBytes_FromStringAndSize(t->s, t->n - 1);
+        }
+        #endif
+        if (!*t->p)
+            return -1;
+        ++t;
+    }
+    return 0;
+}
+
+static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) {
+   int is_true = x == Py_True;
+   if (is_true | (x == Py_False) | (x == Py_None)) return is_true;
+   else return PyObject_IsTrue(x);
+}
+static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x) {
+  PyNumberMethods *m;
+  const char *name = NULL;
+  PyObject *res = NULL;
+#if PY_VERSION_HEX < 0x03000000
+  if (PyInt_Check(x) || PyLong_Check(x))
+#else
+  if (PyLong_Check(x))
+#endif
+    return Py_INCREF(x), x;
+  m = Py_TYPE(x)->tp_as_number;
+#if PY_VERSION_HEX < 0x03000000
+  if (m && m->nb_int) {
+    name = "int";
+    res = PyNumber_Int(x);
+  }
+  else if (m && m->nb_long) {
+    name = "long";
+    res = PyNumber_Long(x);
+  }
+#else
+  if (m && m->nb_int) {
+    name = "int";
+    res = PyNumber_Long(x);
+  }
+#endif
+  if (res) {
+#if PY_VERSION_HEX < 0x03000000
+    if (!PyInt_Check(res) && !PyLong_Check(res)) {
+#else
+    if (!PyLong_Check(res)) {
+#endif
+      PyErr_Format(PyExc_TypeError,
+                   "__%s__ returned non-%s (type %.200s)",
+                   name, name, Py_TYPE(res)->tp_name);
+      Py_DECREF(res);
+      return NULL;
+    }
+  }
+  else if (!PyErr_Occurred()) {
+    PyErr_SetString(PyExc_TypeError,
+                    "an integer is required");
+  }
+  return res;
+}
+static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
+  Py_ssize_t ival;
+  PyObject* x = PyNumber_Index(b);
+  if (!x) return -1;
+  ival = PyInt_AsSsize_t(x);
+  Py_DECREF(x);
+  return ival;
+}
+static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) {
+#if PY_VERSION_HEX < 0x02050000
+   if (ival <= LONG_MAX)
+       return PyInt_FromLong((long)ival);
+   else {
+       unsigned char *bytes = (unsigned char *) &ival;
+       int one = 1; int little = (int)*(unsigned char*)&one;
+       return _PyLong_FromByteArray(bytes, sizeof(size_t), little, 0);
+   }
+#else
+   return PyInt_FromSize_t(ival);
+#endif
+}
+static CYTHON_INLINE size_t __Pyx_PyInt_AsSize_t(PyObject* x) {
+   unsigned PY_LONG_LONG val = __Pyx_PyInt_AsUnsignedLongLong(x);
+   if (unlikely(val == (unsigned PY_LONG_LONG)-1 && PyErr_Occurred())) {
+       return (size_t)-1;
+   } else if (unlikely(val != (unsigned PY_LONG_LONG)(size_t)val)) {
+       PyErr_SetString(PyExc_OverflowError,
+                       "value too large to convert to size_t");
+       return (size_t)-1;
+   }
+   return (size_t)val;
+}
+
+
+#endif /* Py_PYTHON_H */
diff --git a/h5py/defs.pxd b/h5py/defs.pxd
new file mode 100644
index 0000000..92f25bc
--- /dev/null
+++ b/h5py/defs.pxd
@@ -0,0 +1,338 @@
+include "config.pxi"
+
+from api_types_hdf5 cimport *
+from api_types_ext cimport *
+
+cdef herr_t H5open() except *
+cdef herr_t H5close() except *
+cdef herr_t H5get_libversion(unsigned *majnum, unsigned *minnum, unsigned *relnum) except *
+cdef hid_t H5Dcreate2(hid_t loc_id, char *name, hid_t type_id, hid_t space_id, hid_t lcpl_id, hid_t dcpl_id, hid_t dapl_id) except *
+cdef hid_t H5Dcreate_anon(hid_t file_id, hid_t type_id, hid_t space_id, hid_t plist_id, hid_t dapl_id) except *
+cdef hid_t H5Dopen(hid_t file_id, char *name) except *
+cdef herr_t H5Dclose(hid_t dset_id) except *
+cdef hid_t H5Dget_space(hid_t dset_id) except *
+cdef herr_t H5Dget_space_status(hid_t dset_id, H5D_space_status_t *status) except *
+cdef hid_t H5Dget_type(hid_t dset_id) except *
+cdef hid_t H5Dget_create_plist(hid_t dataset_id) except *
+cdef haddr_t H5Dget_offset(hid_t dset_id) except *
+cdef hsize_t H5Dget_storage_size(hid_t dset_id) except *
+cdef herr_t H5Dread(hid_t dset_id, hid_t mem_type_id, hid_t mem_space_id, hid_t file_space_id, hid_t plist_id, void *buf) except *
+cdef herr_t H5Dwrite(hid_t dset_id, hid_t mem_type, hid_t mem_space, hid_t file_space, hid_t xfer_plist, void* buf) except *
+cdef herr_t H5Dextend(hid_t dataset_id, hsize_t *size) except *
+cdef herr_t H5Dfill(void *fill, hid_t fill_type_id, void *buf,  hid_t buf_type_id, hid_t space_id ) except *
+cdef herr_t H5Dvlen_get_buf_size(hid_t dset_id, hid_t type_id, hid_t space_id, hsize_t *size) except *
+cdef herr_t H5Dvlen_reclaim(hid_t type_id, hid_t space_id,  hid_t plist, void *buf) except *
+cdef herr_t H5Diterate(void *buf, hid_t type_id, hid_t space_id,  H5D_operator_t op, void* operator_data) except *
+cdef herr_t H5Dset_extent(hid_t dset_id, hsize_t* size) except *
+cdef hid_t H5Fcreate(char *filename, unsigned int flags, hid_t create_plist, hid_t access_plist) except *
+cdef hid_t H5Fopen(char *name, unsigned flags, hid_t access_id) except *
+cdef herr_t H5Fclose(hid_t file_id) except *
+cdef htri_t H5Fis_hdf5(char *name) except *
+cdef herr_t H5Fflush(hid_t object_id, H5F_scope_t scope) except *
+cdef hid_t H5Freopen(hid_t file_id) except *
+cdef herr_t H5Fmount(hid_t loc_id, char *name, hid_t child_id, hid_t plist_id) except *
+cdef herr_t H5Funmount(hid_t loc_id, char *name) except *
+cdef herr_t H5Fget_filesize(hid_t file_id, hsize_t *size) except *
+cdef hid_t H5Fget_create_plist(hid_t file_id ) except *
+cdef hid_t H5Fget_access_plist(hid_t file_id) except *
+cdef hssize_t H5Fget_freespace(hid_t file_id) except *
+cdef ssize_t H5Fget_name(hid_t obj_id, char *name, size_t size) except *
+cdef int H5Fget_obj_count(hid_t file_id, unsigned int types) except *
+cdef int H5Fget_obj_ids(hid_t file_id, unsigned int types, int max_objs, hid_t *obj_id_list) except *
+cdef herr_t H5Fget_vfd_handle(hid_t file_id, hid_t fapl_id, void **file_handle) except *
+cdef herr_t H5Fget_intent(hid_t file_id, unsigned int *intent) except *
+cdef herr_t H5Fget_mdc_config(hid_t file_id, H5AC_cache_config_t *config_ptr) except *
+cdef herr_t H5Fget_mdc_hit_rate(hid_t file_id, double *hit_rate_ptr) except *
+cdef herr_t H5Fget_mdc_size(hid_t file_id, size_t *max_size_ptr, size_t *min_clean_size_ptr, size_t *cur_size_ptr, int *cur_num_entries_ptr) except *
+cdef herr_t H5Freset_mdc_hit_rate_stats(hid_t file_id) except *
+cdef herr_t H5Fset_mdc_config(hid_t file_id, H5AC_cache_config_t *config_ptr) except *
+cdef hid_t H5Gcreate(hid_t loc_id, char *name, size_t size_hint) except *
+cdef hid_t H5Gopen(hid_t loc_id, char *name) except *
+cdef herr_t H5Gclose(hid_t group_id) except *
+cdef herr_t H5Glink2( hid_t curr_loc_id, char *current_name, H5G_link_t link_type, hid_t new_loc_id, char *new_name) except *
+cdef herr_t H5Gunlink(hid_t file_id, char *name) except *
+cdef herr_t H5Gmove2(hid_t src_loc_id, char *src_name, hid_t dst_loc_id, char *dst_name) except *
+cdef herr_t H5Gget_num_objs(hid_t loc_id, hsize_t*  num_obj) except *
+cdef int H5Gget_objname_by_idx(hid_t loc_id, hsize_t idx, char *name, size_t size) except *
+cdef int H5Gget_objtype_by_idx(hid_t loc_id, hsize_t idx) except *
+cdef herr_t H5Giterate(hid_t loc_id, char *name, int *idx, H5G_iterate_t op, void* data) except *
+cdef herr_t H5Gget_objinfo(hid_t loc_id, char* name, int follow_link, H5G_stat_t *statbuf) except *
+cdef herr_t H5Gget_linkval(hid_t loc_id, char *name, size_t size, char *value) except *
+cdef herr_t H5Gset_comment(hid_t loc_id, char *name, char *comment) except *
+cdef int H5Gget_comment(hid_t loc_id, char *name, size_t bufsize, char *comment) except *
+cdef hid_t H5Gcreate_anon( hid_t loc_id, hid_t gcpl_id, hid_t gapl_id) except *
+cdef hid_t H5Gcreate2(hid_t loc_id, char *name, hid_t lcpl_id, hid_t gcpl_id, hid_t gapl_id) except *
+cdef hid_t H5Gopen2( hid_t loc_id, char * name, hid_t gapl_id) except *
+cdef herr_t H5Gget_info( hid_t group_id, H5G_info_t *group_info) except *
+cdef herr_t H5Gget_info_by_name( hid_t loc_id, char *group_name, H5G_info_t *group_info, hid_t lapl_id) except *
+cdef hid_t H5Gget_create_plist(hid_t group_id) except *
+cdef H5I_type_t H5Iget_type(hid_t obj_id) except *
+cdef ssize_t H5Iget_name( hid_t obj_id, char *name, size_t size) except *
+cdef hid_t H5Iget_file_id(hid_t obj_id) except *
+cdef int H5Idec_ref(hid_t obj_id) except *
+cdef int H5Iget_ref(hid_t obj_id) except *
+cdef int H5Iinc_ref(hid_t obj_id) except *
+cdef herr_t H5Lmove(hid_t src_loc, char *src_name, hid_t dst_loc, char *dst_name, hid_t lcpl_id, hid_t lapl_id) except *
+cdef herr_t H5Lcopy(hid_t src_loc, char *src_name, hid_t dst_loc, char *dst_name, hid_t lcpl_id, hid_t lapl_id) except *
+cdef herr_t H5Lcreate_hard(hid_t cur_loc, char *cur_name, hid_t dst_loc, char *dst_name, hid_t lcpl_id, hid_t lapl_id) except *
+cdef herr_t H5Lcreate_soft(char *link_target, hid_t link_loc_id, char *link_name, hid_t lcpl_id, hid_t lapl_id) except *
+cdef herr_t H5Ldelete(hid_t loc_id, char *name, hid_t lapl_id) except *
+cdef herr_t H5Ldelete_by_idx(hid_t loc_id, char *group_name, H5_index_t idx_type, H5_iter_order_t order, hsize_t n, hid_t lapl_id) except *
+cdef herr_t H5Lget_val(hid_t loc_id, char *name, void *bufout, size_t size, hid_t lapl_id) except *
+cdef herr_t H5Lget_val_by_idx(hid_t loc_id, char *group_name,  H5_index_t idx_type, H5_iter_order_t order, hsize_t n, void *bufout, size_t size, hid_t lapl_id) except *
+cdef htri_t H5Lexists(hid_t loc_id, char *name, hid_t lapl_id) except *
+cdef herr_t H5Lget_info(hid_t loc_id, char *name, H5L_info_t *linfo, hid_t lapl_id) except *
+cdef herr_t H5Lget_info_by_idx(hid_t loc_id, char *group_name, H5_index_t idx_type, H5_iter_order_t order, hsize_t n, H5L_info_t *linfo, hid_t lapl_id) except *
+cdef ssize_t H5Lget_name_by_idx(hid_t loc_id, char *group_name, H5_index_t idx_type, H5_iter_order_t order, hsize_t n, char *name, size_t size, hid_t lapl_id) except *
+cdef herr_t H5Literate(hid_t grp_id, H5_index_t idx_type, H5_iter_order_t order, hsize_t *idx, H5L_iterate_t op, void *op_data) except *
+cdef herr_t H5Literate_by_name(hid_t loc_id, char *group_name, H5_index_t idx_type, H5_iter_order_t order, hsize_t *idx, H5L_iterate_t op, void *op_data, hid_t lapl_id) except *
+cdef herr_t H5Lvisit(hid_t grp_id, H5_index_t idx_type, H5_iter_order_t order, H5L_iterate_t op, void *op_data) except *
+cdef herr_t H5Lvisit_by_name(hid_t loc_id, char *group_name, H5_index_t idx_type, H5_iter_order_t order, H5L_iterate_t op, void *op_data, hid_t lapl_id) except *
+cdef herr_t H5Lunpack_elink_val(void *ext_linkval, size_t link_size, unsigned *flags, char **filename, char **obj_path) except *
+cdef herr_t H5Lcreate_external(char *file_name, char *obj_name, hid_t link_loc_id, char *link_name, hid_t lcpl_id, hid_t lapl_id) except *
+cdef hid_t H5Oopen(hid_t loc_id, char *name, hid_t lapl_id) except *
+cdef hid_t H5Oopen_by_addr(hid_t loc_id, haddr_t addr) except *
+cdef hid_t H5Oopen_by_idx(hid_t loc_id, char *group_name, H5_index_t idx_type, H5_iter_order_t order, hsize_t n, hid_t lapl_id) except *
+cdef herr_t H5Oget_info(hid_t loc_id, H5O_info_t *oinfo) except *
+cdef herr_t H5Oget_info_by_name(hid_t loc_id, char *name, H5O_info_t *oinfo, hid_t lapl_id) except *
+cdef herr_t H5Oget_info_by_idx(hid_t loc_id, char *group_name,  H5_index_t idx_type, H5_iter_order_t order, hsize_t n, H5O_info_t *oinfo, hid_t lapl_id) except *
+cdef herr_t H5Olink(hid_t obj_id, hid_t new_loc_id, char *new_name, hid_t lcpl_id, hid_t lapl_id) except *
+cdef herr_t H5Ocopy(hid_t src_loc_id, char *src_name, hid_t dst_loc_id,  char *dst_name, hid_t ocpypl_id, hid_t lcpl_id) except *
+cdef herr_t H5Oincr_refcount(hid_t object_id) except *
+cdef herr_t H5Odecr_refcount(hid_t object_id) except *
+cdef herr_t H5Oset_comment(hid_t obj_id, char *comment) except *
+cdef herr_t H5Oset_comment_by_name(hid_t loc_id, char *name,  char *comment, hid_t lapl_id) except *
+cdef ssize_t H5Oget_comment(hid_t obj_id, char *comment, size_t bufsize) except *
+cdef ssize_t H5Oget_comment_by_name(hid_t loc_id, char *name, char *comment, size_t bufsize, hid_t lapl_id) except *
+cdef herr_t H5Ovisit(hid_t obj_id, H5_index_t idx_type, H5_iter_order_t order,  H5O_iterate_t op, void *op_data) except *
+cdef herr_t H5Ovisit_by_name(hid_t loc_id, char *obj_name, H5_index_t idx_type, H5_iter_order_t order, H5O_iterate_t op, void *op_data, hid_t lapl_id) except *
+cdef herr_t H5Oclose(hid_t object_id) except *
+cdef hid_t H5Pcreate(hid_t plist_id) except *
+cdef hid_t H5Pcopy(hid_t plist_id) except *
+cdef int H5Pget_class(hid_t plist_id) except *
+cdef herr_t H5Pclose(hid_t plist_id) except *
+cdef htri_t H5Pequal( hid_t id1, hid_t id2 ) except *
+cdef herr_t H5Pclose_class(hid_t id) except *
+cdef herr_t H5Pget_version(hid_t plist, unsigned int *super_, unsigned int* freelist,  unsigned int *stab, unsigned int *shhdr) except *
+cdef herr_t H5Pset_userblock(hid_t plist, hsize_t size) except *
+cdef herr_t H5Pget_userblock(hid_t plist, hsize_t * size) except *
+cdef herr_t H5Pset_sizes(hid_t plist, size_t sizeof_addr, size_t sizeof_size) except *
+cdef herr_t H5Pget_sizes(hid_t plist, size_t *sizeof_addr, size_t *sizeof_size) except *
+cdef herr_t H5Pset_sym_k(hid_t plist, unsigned int ik, unsigned int lk) except *
+cdef herr_t H5Pget_sym_k(hid_t plist, unsigned int *ik, unsigned int *lk) except *
+cdef herr_t H5Pset_istore_k(hid_t plist, unsigned int ik) except *
+cdef herr_t H5Pget_istore_k(hid_t plist, unsigned int *ik) except *
+cdef herr_t H5Pset_fclose_degree(hid_t fapl_id, H5F_close_degree_t fc_degree) except *
+cdef herr_t H5Pget_fclose_degree(hid_t fapl_id, H5F_close_degree_t *fc_degree) except *
+cdef herr_t H5Pset_fapl_core( hid_t fapl_id, size_t increment, hbool_t backing_store) except *
+cdef herr_t H5Pget_fapl_core( hid_t fapl_id, size_t *increment, hbool_t *backing_store) except *
+cdef herr_t H5Pset_fapl_family( hid_t fapl_id,  hsize_t memb_size, hid_t memb_fapl_id ) except *
+cdef herr_t H5Pget_fapl_family( hid_t fapl_id, hsize_t *memb_size, hid_t *memb_fapl_id ) except *
+cdef herr_t H5Pset_family_offset( hid_t fapl_id, hsize_t offset) except *
+cdef herr_t H5Pget_family_offset( hid_t fapl_id, hsize_t *offset) except *
+cdef herr_t H5Pset_fapl_log(hid_t fapl_id, char *logfile, unsigned int flags, size_t buf_size) except *
+cdef herr_t H5Pset_fapl_multi(hid_t fapl_id, H5FD_mem_t *memb_map, hid_t *memb_fapl, char **memb_name, haddr_t *memb_addr, hbool_t relax) except *
+cdef herr_t H5Pset_cache(hid_t plist_id, int mdc_nelmts, int rdcc_nelmts,  size_t rdcc_nbytes, double rdcc_w0) except *
+cdef herr_t H5Pget_cache(hid_t plist_id, int *mdc_nelmts, int *rdcc_nelmts, size_t *rdcc_nbytes, double *rdcc_w0) except *
+cdef herr_t H5Pset_fapl_sec2(hid_t fapl_id) except *
+cdef herr_t H5Pset_fapl_stdio(hid_t fapl_id) except *
+cdef hid_t H5Pget_driver(hid_t fapl_id) except *
+cdef herr_t H5Pget_mdc_config(hid_t plist_id, H5AC_cache_config_t *config_ptr) except *
+cdef herr_t H5Pset_mdc_config(hid_t plist_id, H5AC_cache_config_t *config_ptr) except *
+cdef herr_t H5Pset_layout(hid_t plist, int layout) except *
+cdef H5D_layout_t H5Pget_layout(hid_t plist) except *
+cdef herr_t H5Pset_chunk(hid_t plist, int ndims, hsize_t * dim) except *
+cdef int H5Pget_chunk(hid_t plist, int max_ndims, hsize_t * dims ) except *
+cdef herr_t H5Pset_deflate( hid_t plist, int level) except *
+cdef herr_t H5Pset_fill_value(hid_t plist_id, hid_t type_id, void *value ) except *
+cdef herr_t H5Pget_fill_value(hid_t plist_id, hid_t type_id, void *value ) except *
+cdef herr_t H5Pfill_value_defined(hid_t plist_id, H5D_fill_value_t *status ) except *
+cdef herr_t H5Pset_fill_time(hid_t plist_id, H5D_fill_time_t fill_time ) except *
+cdef herr_t H5Pget_fill_time(hid_t plist_id, H5D_fill_time_t *fill_time ) except *
+cdef herr_t H5Pset_alloc_time(hid_t plist_id, H5D_alloc_time_t alloc_time ) except *
+cdef herr_t H5Pget_alloc_time(hid_t plist_id, H5D_alloc_time_t *alloc_time ) except *
+cdef herr_t H5Pset_filter(hid_t plist, H5Z_filter_t filter, unsigned int flags, size_t cd_nelmts, unsigned int* cd_values ) except *
+cdef htri_t H5Pall_filters_avail(hid_t dcpl_id) except *
+cdef int H5Pget_nfilters(hid_t plist) except *
+cdef H5Z_filter_t H5Pget_filter(hid_t plist, unsigned int filter_number,   unsigned int *flags, size_t *cd_nelmts,  unsigned int* cd_values, size_t namelen, char* name ) except *
+cdef herr_t H5Pget_filter_by_id( hid_t plist_id, H5Z_filter_t filter,  unsigned int *flags, size_t *cd_nelmts,  unsigned int* cd_values, size_t namelen, char* name) except *
+cdef herr_t H5Pmodify_filter(hid_t plist, H5Z_filter_t filter, unsigned int flags, size_t cd_nelmts, unsigned int *cd_values) except *
+cdef herr_t H5Premove_filter(hid_t plist, H5Z_filter_t filter ) except *
+cdef herr_t H5Pset_fletcher32(hid_t plist) except *
+cdef herr_t H5Pset_shuffle(hid_t plist_id) except *
+cdef herr_t H5Pset_szip(hid_t plist, unsigned int options_mask, unsigned int pixels_per_block) except *
+cdef herr_t H5Pset_scaleoffset(hid_t plist, H5Z_SO_scale_type_t scale_type, int scale_factor) except *
+cdef herr_t H5Pset_edc_check(hid_t plist, H5Z_EDC_t check) except *
+cdef H5Z_EDC_t H5Pget_edc_check(hid_t plist) except *
+cdef herr_t H5Pset_chunk_cache( hid_t dapl_id, size_t rdcc_nslots, size_t rdcc_nbytes, double rdcc_w0 ) except *
+cdef herr_t H5Pget_chunk_cache( hid_t dapl_id, size_t *rdcc_nslots, size_t *rdcc_nbytes, double *rdcc_w0 ) except *
+cdef herr_t H5Pset_sieve_buf_size(hid_t fapl_id, size_t size) except *
+cdef herr_t H5Pget_sieve_buf_size(hid_t fapl_id, size_t *size) except *
+cdef herr_t H5Pset_nlinks(hid_t plist_id, size_t nlinks) except *
+cdef herr_t H5Pget_nlinks(hid_t plist_id, size_t *nlinks) except *
+cdef herr_t H5Pset_elink_prefix(hid_t plist_id, char *prefix) except *
+cdef ssize_t H5Pget_elink_prefix(hid_t plist_id, char *prefix, size_t size) except *
+cdef hid_t H5Pget_elink_fapl(hid_t lapl_id) except *
+cdef herr_t H5Pset_elink_fapl(hid_t lapl_id, hid_t fapl_id) except *
+cdef herr_t H5Pset_create_intermediate_group(hid_t plist_id, unsigned crt_intmd) except *
+cdef herr_t H5Pget_create_intermediate_group(hid_t plist_id, unsigned *crt_intmd) except *
+cdef herr_t H5Pset_copy_object(hid_t plist_id, unsigned crt_intmd) except *
+cdef herr_t H5Pget_copy_object(hid_t plist_id, unsigned *crt_intmd) except *
+cdef herr_t H5Pset_char_encoding(hid_t plist_id, H5T_cset_t encoding) except *
+cdef herr_t H5Pget_char_encoding(hid_t plist_id, H5T_cset_t *encoding) except *
+cdef herr_t H5Pset_obj_track_times( hid_t ocpl_id, hbool_t track_times ) except *
+cdef herr_t H5Pget_obj_track_times( hid_t ocpl_id, hbool_t *track_times ) except *
+cdef herr_t H5Pset_local_heap_size_hint(hid_t plist_id, size_t size_hint) except *
+cdef herr_t H5Pget_local_heap_size_hint(hid_t plist_id, size_t *size_hint) except *
+cdef herr_t H5Pset_link_phase_change(hid_t plist_id, unsigned max_compact, unsigned min_dense) except *
+cdef herr_t H5Pget_link_phase_change(hid_t plist_id, unsigned *max_compact , unsigned *min_dense) except *
+cdef herr_t H5Pset_est_link_info(hid_t plist_id, unsigned est_num_entries, unsigned est_name_len) except *
+cdef herr_t H5Pget_est_link_info(hid_t plist_id, unsigned *est_num_entries , unsigned *est_name_len) except *
+cdef herr_t H5Pset_link_creation_order(hid_t plist_id, unsigned crt_order_flags) except *
+cdef herr_t H5Pget_link_creation_order(hid_t plist_id, unsigned *crt_order_flags) except *
+cdef herr_t H5Pset_libver_bounds(hid_t fapl_id, H5F_libver_t libver_low, H5F_libver_t libver_high) except *
+cdef herr_t H5Pget_libver_bounds(hid_t fapl_id, H5F_libver_t *libver_low, H5F_libver_t *libver_high) except *
+cdef herr_t H5Rcreate(void *ref, hid_t loc_id, char *name, H5R_type_t ref_type,  hid_t space_id) except *
+cdef hid_t H5Rdereference(hid_t obj_id, H5R_type_t ref_type, void *ref) except *
+cdef hid_t H5Rget_region(hid_t dataset, H5R_type_t ref_type, void *ref) except *
+cdef H5G_obj_t H5Rget_obj_type(hid_t id, H5R_type_t ref_type, void *ref) except *
+cdef ssize_t H5Rget_name(hid_t loc_id, H5R_type_t ref_type, void *ref, char *name, size_t size) except *
+cdef hid_t H5Screate(H5S_class_t type) except *
+cdef hid_t H5Scopy(hid_t space_id ) except *
+cdef herr_t H5Sclose(hid_t space_id) except *
+cdef hid_t H5Screate_simple(int rank, hsize_t *dims, hsize_t *maxdims) except *
+cdef htri_t H5Sis_simple(hid_t space_id) except *
+cdef herr_t H5Soffset_simple(hid_t space_id, hssize_t *offset ) except *
+cdef int H5Sget_simple_extent_ndims(hid_t space_id) except *
+cdef int H5Sget_simple_extent_dims(hid_t space_id, hsize_t *dims, hsize_t *maxdims) except *
+cdef hssize_t H5Sget_simple_extent_npoints(hid_t space_id) except *
+cdef H5S_class_t H5Sget_simple_extent_type(hid_t space_id) except *
+cdef herr_t H5Sextent_copy(hid_t dest_space_id, hid_t source_space_id ) except *
+cdef herr_t H5Sset_extent_simple(hid_t space_id, int rank, hsize_t *current_size, hsize_t *maximum_size ) except *
+cdef herr_t H5Sset_extent_none(hid_t space_id) except *
+cdef H5S_sel_type H5Sget_select_type(hid_t space_id) except *
+cdef hssize_t H5Sget_select_npoints(hid_t space_id) except *
+cdef herr_t H5Sget_select_bounds(hid_t space_id, hsize_t *start, hsize_t *end) except *
+cdef herr_t H5Sselect_all(hid_t space_id) except *
+cdef herr_t H5Sselect_none(hid_t space_id) except *
+cdef htri_t H5Sselect_valid(hid_t space_id) except *
+cdef hssize_t H5Sget_select_elem_npoints(hid_t space_id) except *
+cdef herr_t H5Sget_select_elem_pointlist(hid_t space_id, hsize_t startpoint,  hsize_t numpoints, hsize_t *buf) except *
+cdef herr_t H5Sselect_elements(hid_t space_id, H5S_seloper_t op,  size_t num_elements, hsize_t **coord) except *
+cdef hssize_t H5Sget_select_hyper_nblocks(hid_t space_id ) except *
+cdef herr_t H5Sget_select_hyper_blocklist(hid_t space_id,  hsize_t startblock, hsize_t numblocks, hsize_t *buf ) except *
+cdef herr_t H5Sselect_hyperslab(hid_t space_id, H5S_seloper_t op,  hsize_t *start, hsize_t *_stride, hsize_t *count, hsize_t *_block) except *
+cdef herr_t H5Sencode(hid_t obj_id, void *buf, size_t *nalloc) except *
+cdef hid_t H5Sdecode(void *buf) except *
+cdef hid_t H5Tcreate(H5T_class_t type, size_t size) except *
+cdef hid_t H5Topen(hid_t loc, char* name) except *
+cdef herr_t H5Tcommit(hid_t loc_id, char* name, hid_t type) except *
+cdef htri_t H5Tcommitted(hid_t type) except *
+cdef hid_t H5Tcopy(hid_t type_id) except *
+cdef htri_t H5Tequal(hid_t type_id1, hid_t type_id2 ) except *
+cdef herr_t H5Tlock(hid_t type_id) except *
+cdef H5T_class_t H5Tget_class(hid_t type_id) except *
+cdef size_t H5Tget_size(hid_t type_id) except *
+cdef hid_t H5Tget_super(hid_t type) except *
+cdef htri_t H5Tdetect_class(hid_t type_id, H5T_class_t dtype_class) except *
+cdef herr_t H5Tclose(hid_t type_id) except *
+cdef hid_t H5Tget_native_type(hid_t type_id, H5T_direction_t direction) except *
+cdef herr_t H5Tconvert(hid_t src_id, hid_t dst_id, size_t nelmts, void *buf, void *background, hid_t plist_id) except *
+cdef herr_t H5Tset_size(hid_t type_id, size_t size) except *
+cdef H5T_order_t H5Tget_order(hid_t type_id) except *
+cdef herr_t H5Tset_order(hid_t type_id, H5T_order_t order) except *
+cdef hsize_t H5Tget_precision(hid_t type_id) except *
+cdef herr_t H5Tset_precision(hid_t type_id, size_t prec) except *
+cdef int H5Tget_offset(hid_t type_id) except *
+cdef herr_t H5Tset_offset(hid_t type_id, size_t offset) except *
+cdef herr_t H5Tget_pad(hid_t type_id, H5T_pad_t * lsb, H5T_pad_t * msb ) except *
+cdef herr_t H5Tset_pad(hid_t type_id, H5T_pad_t lsb, H5T_pad_t msb ) except *
+cdef H5T_sign_t H5Tget_sign(hid_t type_id) except *
+cdef herr_t H5Tset_sign(hid_t type_id, H5T_sign_t sign) except *
+cdef herr_t H5Tget_fields(hid_t type_id, size_t *spos, size_t *epos, size_t *esize, size_t *mpos, size_t *msize ) except *
+cdef herr_t H5Tset_fields(hid_t type_id, size_t spos, size_t epos, size_t esize, size_t mpos, size_t msize ) except *
+cdef size_t H5Tget_ebias(hid_t type_id) except *
+cdef herr_t H5Tset_ebias(hid_t type_id, size_t ebias) except *
+cdef H5T_norm_t H5Tget_norm(hid_t type_id) except *
+cdef herr_t H5Tset_norm(hid_t type_id, H5T_norm_t norm) except *
+cdef H5T_pad_t H5Tget_inpad(hid_t type_id) except *
+cdef herr_t H5Tset_inpad(hid_t type_id, H5T_pad_t inpad) except *
+cdef H5T_cset_t H5Tget_cset(hid_t type_id) except *
+cdef herr_t H5Tset_cset(hid_t type_id, H5T_cset_t cset) except *
+cdef H5T_str_t H5Tget_strpad(hid_t type_id) except *
+cdef herr_t H5Tset_strpad(hid_t type_id, H5T_str_t strpad) except *
+cdef hid_t H5Tvlen_create(hid_t base_type_id) except *
+cdef htri_t H5Tis_variable_str(hid_t dtype_id) except *
+cdef int H5Tget_nmembers(hid_t type_id) except *
+cdef H5T_class_t H5Tget_member_class(hid_t type_id, int member_no) except *
+cdef char* H5Tget_member_name(hid_t type_id, unsigned membno) except *
+cdef hid_t H5Tget_member_type(hid_t type_id, unsigned membno) except *
+cdef int H5Tget_member_offset(hid_t type_id, int membno) except *
+cdef int H5Tget_member_index(hid_t type_id, char* name) except *
+cdef herr_t H5Tinsert(hid_t parent_id, char *name, size_t offset, hid_t member_id) except *
+cdef herr_t H5Tpack(hid_t type_id) except *
+cdef hid_t H5Tenum_create(hid_t base_id) except *
+cdef herr_t H5Tenum_insert(hid_t type, char *name, void *value) except *
+cdef herr_t H5Tenum_nameof( hid_t type, void *value, char *name, size_t size ) except *
+cdef herr_t H5Tenum_valueof( hid_t type, char *name, void *value ) except *
+cdef herr_t H5Tget_member_value(hid_t type,  unsigned int memb_no, void *value ) except *
+cdef hid_t H5Tarray_create(hid_t base_id, int ndims, hsize_t *dims, int *perm) except *
+cdef int H5Tget_array_ndims(hid_t type_id) except *
+cdef int H5Tget_array_dims(hid_t type_id, hsize_t *dims, int *perm) except *
+cdef herr_t H5Tset_tag(hid_t type_id, char* tag) except *
+cdef char* H5Tget_tag(hid_t type_id) except *
+cdef hid_t H5Tdecode(unsigned char *buf) except *
+cdef herr_t H5Tencode(hid_t obj_id, unsigned char *buf, size_t *nalloc) except *
+cdef herr_t H5Tcommit2(hid_t loc_id, char *name, hid_t dtype_id, hid_t lcpl_id, hid_t tcpl_id, hid_t tapl_id) except *
+cdef H5T_conv_t H5Tfind(hid_t src_id, hid_t dst_id, H5T_cdata_t **pcdata) except *
+cdef herr_t H5Tregister(H5T_pers_t pers, char *name, hid_t src_id, hid_t dst_id, H5T_conv_t func) except *
+cdef herr_t H5Tunregister(H5T_pers_t pers, char *name, hid_t src_id, hid_t dst_id, H5T_conv_t func) except *
+cdef htri_t H5Zfilter_avail(H5Z_filter_t id_) except *
+cdef herr_t H5Zget_filter_info(H5Z_filter_t filter_, unsigned int *filter_config_flags) except *
+cdef hid_t H5Acreate(hid_t loc_id, char *name, hid_t type_id, hid_t space_id, hid_t create_plist) except *
+cdef hid_t H5Aopen_idx(hid_t loc_id, unsigned int idx) except *
+cdef hid_t H5Aopen_name(hid_t loc_id, char *name) except *
+cdef herr_t H5Aclose(hid_t attr_id) except *
+cdef herr_t H5Adelete(hid_t loc_id, char *name) except *
+cdef herr_t H5Aread(hid_t attr_id, hid_t mem_type_id, void *buf) except *
+cdef herr_t H5Awrite(hid_t attr_id, hid_t mem_type_id, void *buf ) except *
+cdef int H5Aget_num_attrs(hid_t loc_id) except *
+cdef ssize_t H5Aget_name(hid_t attr_id, size_t buf_size, char *buf) except *
+cdef hid_t H5Aget_space(hid_t attr_id) except *
+cdef hid_t H5Aget_type(hid_t attr_id) except *
+cdef herr_t H5Aiterate(hid_t loc_id, unsigned * idx, H5A_operator_t op, void* op_data) except *
+cdef herr_t H5Adelete_by_name(hid_t loc_id, char *obj_name, char *attr_name, hid_t lapl_id) except *
+cdef herr_t H5Adelete_by_idx(hid_t loc_id, char *obj_name, H5_index_t idx_type, H5_iter_order_t order, hsize_t n, hid_t lapl_id) except *
+cdef hid_t H5Acreate_by_name(hid_t loc_id, char *obj_name, char *attr_name, hid_t type_id, hid_t space_id, hid_t acpl_id, hid_t aapl_id, hid_t lapl_id) except *
+cdef herr_t H5Aopen(hid_t obj_id, char *attr_name, hid_t aapl_id) except *
+cdef herr_t H5Aopen_by_name( hid_t loc_id, char *obj_name, char *attr_name, hid_t aapl_id, hid_t lapl_id) except *
+cdef herr_t H5Aopen_by_idx(hid_t loc_id, char *obj_name, H5_index_t idx_type, H5_iter_order_t order, hsize_t n, hid_t aapl_id, hid_t lapl_id) except *
+cdef htri_t H5Aexists_by_name( hid_t loc_id, char *obj_name, char *attr_name, hid_t lapl_id) except *
+cdef htri_t H5Aexists(hid_t obj_id, char *attr_name) except *
+cdef herr_t H5Arename(hid_t loc_id, char *old_attr_name, char *new_attr_name) except *
+cdef herr_t H5Arename_by_name(hid_t loc_id, char *obj_name, char *old_attr_name, char *new_attr_name, hid_t lapl_id) except *
+cdef herr_t H5Aget_info( hid_t attr_id, H5A_info_t *ainfo) except *
+cdef herr_t H5Aget_info_by_name(hid_t loc_id, char *obj_name, char *attr_name, H5A_info_t *ainfo, hid_t lapl_id) except *
+cdef herr_t H5Aget_info_by_idx(hid_t loc_id, char *obj_name, H5_index_t idx_type, H5_iter_order_t order, hsize_t n, H5A_info_t *ainfo, hid_t lapl_id) except *
+cdef herr_t H5Aiterate2(hid_t obj_id, H5_index_t idx_type, H5_iter_order_t order, hsize_t *n, H5A_operator2_t op, void *op_data) except *
+cdef hsize_t H5Aget_storage_size(hid_t attr_id) except *
+IF MPI:
+    cdef herr_t H5Pset_fapl_mpio(hid_t fapl_id, MPI_Comm comm, MPI_Info info) except *
+IF MPI:
+    cdef herr_t H5Pset_fapl_mpiposix(hid_t fapl_id, MPI_Comm comm, hbool_t hints) except *
+IF HDF5_VERSION >= (1, 8, 9):
+    IF MPI:
+        cdef herr_t H5Fset_mpi_atomicity(hid_t file_id, hbool_t flag) except *
+IF HDF5_VERSION >= (1, 8, 9):
+    IF MPI:
+        cdef herr_t H5Fget_mpi_atomicity(hid_t file_id, hbool_t *flag) except *
+cdef herr_t H5DSattach_scale(hid_t did, hid_t dsid, unsigned int idx) except *
+cdef herr_t H5DSdetach_scale(hid_t did, hid_t dsid, unsigned int idx) except *
+cdef herr_t H5DSset_scale(hid_t dsid, char *dimname) except *
+cdef int H5DSget_num_scales(hid_t did, unsigned int dim) except *
+cdef herr_t H5DSset_label(hid_t did, unsigned int idx, char *label) except *
+cdef ssize_t H5DSget_label(hid_t did, unsigned int idx, char *label, size_t size) except *
+cdef ssize_t H5DSget_scale_name(hid_t did, char *name, size_t size) except *
+cdef htri_t H5DSis_scale(hid_t did) except *
+cdef herr_t H5DSiterate_scales(hid_t did, unsigned int dim, int *idx, H5DS_iterate_t visitor, void *visitor_data) except *
+cdef htri_t H5DSis_attached(hid_t did, hid_t dsid, unsigned int idx) except *
diff --git a/h5py/defs.pyx b/h5py/defs.pyx
new file mode 100644
index 0000000..d58d1cf
--- /dev/null
+++ b/h5py/defs.pyx
@@ -0,0 +1,2960 @@
+include "config.pxi"
+from api_types_ext cimport *
+from api_types_hdf5 cimport *
+
+cimport _hdf5
+
+from _errors cimport set_exception
+
+include "_locks.pxi"
+
+rlock = FastRLock()
+cdef herr_t H5open() except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5open()
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5close() except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5close()
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5get_libversion(unsigned *majnum, unsigned *minnum, unsigned *relnum) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5get_libversion(majnum, minnum, relnum)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef hid_t H5Dcreate2(hid_t loc_id, char *name, hid_t type_id, hid_t space_id, hid_t lcpl_id, hid_t dcpl_id, hid_t dapl_id) except *:
+    cdef hid_t r
+    with rlock:
+        r = _hdf5.H5Dcreate2(loc_id, name, type_id, space_id, lcpl_id, dcpl_id, dapl_id)
+        if r<0:
+            if set_exception():
+                return <hid_t>-1;
+        return r
+
+cdef hid_t H5Dcreate_anon(hid_t file_id, hid_t type_id, hid_t space_id, hid_t plist_id, hid_t dapl_id) except *:
+    cdef hid_t r
+    with rlock:
+        r = _hdf5.H5Dcreate_anon(file_id, type_id, space_id, plist_id, dapl_id)
+        if r<0:
+            if set_exception():
+                return <hid_t>-1;
+        return r
+
+cdef hid_t H5Dopen(hid_t file_id, char *name) except *:
+    cdef hid_t r
+    with rlock:
+        r = _hdf5.H5Dopen(file_id, name)
+        if r<0:
+            if set_exception():
+                return <hid_t>-1;
+        return r
+
+cdef herr_t H5Dclose(hid_t dset_id) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Dclose(dset_id)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef hid_t H5Dget_space(hid_t dset_id) except *:
+    cdef hid_t r
+    with rlock:
+        r = _hdf5.H5Dget_space(dset_id)
+        if r<0:
+            if set_exception():
+                return <hid_t>-1;
+        return r
+
+cdef herr_t H5Dget_space_status(hid_t dset_id, H5D_space_status_t *status) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Dget_space_status(dset_id, status)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef hid_t H5Dget_type(hid_t dset_id) except *:
+    cdef hid_t r
+    with rlock:
+        r = _hdf5.H5Dget_type(dset_id)
+        if r<0:
+            if set_exception():
+                return <hid_t>-1;
+        return r
+
+cdef hid_t H5Dget_create_plist(hid_t dataset_id) except *:
+    cdef hid_t r
+    with rlock:
+        r = _hdf5.H5Dget_create_plist(dataset_id)
+        if r<0:
+            if set_exception():
+                return <hid_t>-1;
+        return r
+
+cdef haddr_t H5Dget_offset(hid_t dset_id) except *:
+    cdef haddr_t r
+    with rlock:
+        r = _hdf5.H5Dget_offset(dset_id)
+        if r==0:
+            if set_exception():
+                return <haddr_t>0;
+        return r
+
+cdef hsize_t H5Dget_storage_size(hid_t dset_id) except *:
+    cdef hsize_t r
+    with rlock:
+        r = _hdf5.H5Dget_storage_size(dset_id)
+        if r==0:
+            if set_exception():
+                return <hsize_t>0;
+        return r
+
+cdef herr_t H5Dread(hid_t dset_id, hid_t mem_type_id, hid_t mem_space_id, hid_t file_space_id, hid_t plist_id, void *buf) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Dread(dset_id, mem_type_id, mem_space_id, file_space_id, plist_id, buf)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Dwrite(hid_t dset_id, hid_t mem_type, hid_t mem_space, hid_t file_space, hid_t xfer_plist, void* buf) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Dwrite(dset_id, mem_type, mem_space, file_space, xfer_plist, buf)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Dextend(hid_t dataset_id, hsize_t *size) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Dextend(dataset_id, size)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Dfill(void *fill, hid_t fill_type_id, void *buf,  hid_t buf_type_id, hid_t space_id ) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Dfill(fill, fill_type_id, buf, buf_type_id, space_id)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Dvlen_get_buf_size(hid_t dset_id, hid_t type_id, hid_t space_id, hsize_t *size) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Dvlen_get_buf_size(dset_id, type_id, space_id, size)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Dvlen_reclaim(hid_t type_id, hid_t space_id,  hid_t plist, void *buf) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Dvlen_reclaim(type_id, space_id, plist, buf)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Diterate(void *buf, hid_t type_id, hid_t space_id,  H5D_operator_t op, void* operator_data) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Diterate(buf, type_id, space_id, op, operator_data)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Dset_extent(hid_t dset_id, hsize_t* size) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Dset_extent(dset_id, size)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef hid_t H5Fcreate(char *filename, unsigned int flags, hid_t create_plist, hid_t access_plist) except *:
+    cdef hid_t r
+    with rlock:
+        r = _hdf5.H5Fcreate(filename, flags, create_plist, access_plist)
+        if r<0:
+            if set_exception():
+                return <hid_t>-1;
+        return r
+
+cdef hid_t H5Fopen(char *name, unsigned flags, hid_t access_id) except *:
+    cdef hid_t r
+    with rlock:
+        r = _hdf5.H5Fopen(name, flags, access_id)
+        if r<0:
+            if set_exception():
+                return <hid_t>-1;
+        return r
+
+cdef herr_t H5Fclose(hid_t file_id) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Fclose(file_id)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef htri_t H5Fis_hdf5(char *name) except *:
+    cdef htri_t r
+    with rlock:
+        r = _hdf5.H5Fis_hdf5(name)
+        if r<0:
+            if set_exception():
+                return <htri_t>-1;
+        return r
+
+cdef herr_t H5Fflush(hid_t object_id, H5F_scope_t scope) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Fflush(object_id, scope)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef hid_t H5Freopen(hid_t file_id) except *:
+    cdef hid_t r
+    with rlock:
+        r = _hdf5.H5Freopen(file_id)
+        if r<0:
+            if set_exception():
+                return <hid_t>-1;
+        return r
+
+cdef herr_t H5Fmount(hid_t loc_id, char *name, hid_t child_id, hid_t plist_id) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Fmount(loc_id, name, child_id, plist_id)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Funmount(hid_t loc_id, char *name) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Funmount(loc_id, name)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Fget_filesize(hid_t file_id, hsize_t *size) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Fget_filesize(file_id, size)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef hid_t H5Fget_create_plist(hid_t file_id ) except *:
+    cdef hid_t r
+    with rlock:
+        r = _hdf5.H5Fget_create_plist(file_id)
+        if r<0:
+            if set_exception():
+                return <hid_t>-1;
+        return r
+
+cdef hid_t H5Fget_access_plist(hid_t file_id) except *:
+    cdef hid_t r
+    with rlock:
+        r = _hdf5.H5Fget_access_plist(file_id)
+        if r<0:
+            if set_exception():
+                return <hid_t>-1;
+        return r
+
+cdef hssize_t H5Fget_freespace(hid_t file_id) except *:
+    cdef hssize_t r
+    with rlock:
+        r = _hdf5.H5Fget_freespace(file_id)
+        if r<0:
+            if set_exception():
+                return <hssize_t>-1;
+        return r
+
+cdef ssize_t H5Fget_name(hid_t obj_id, char *name, size_t size) except *:
+    cdef ssize_t r
+    with rlock:
+        r = _hdf5.H5Fget_name(obj_id, name, size)
+        if r<0:
+            if set_exception():
+                return <ssize_t>-1;
+        return r
+
+cdef int H5Fget_obj_count(hid_t file_id, unsigned int types) except *:
+    cdef int r
+    with rlock:
+        r = _hdf5.H5Fget_obj_count(file_id, types)
+        if r<0:
+            if set_exception():
+                return <int>-1;
+        return r
+
+cdef int H5Fget_obj_ids(hid_t file_id, unsigned int types, int max_objs, hid_t *obj_id_list) except *:
+    cdef int r
+    with rlock:
+        r = _hdf5.H5Fget_obj_ids(file_id, types, max_objs, obj_id_list)
+        if r<0:
+            if set_exception():
+                return <int>-1;
+        return r
+
+cdef herr_t H5Fget_vfd_handle(hid_t file_id, hid_t fapl_id, void **file_handle) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Fget_vfd_handle(file_id, fapl_id, file_handle)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Fget_intent(hid_t file_id, unsigned int *intent) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Fget_intent(file_id, intent)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Fget_mdc_config(hid_t file_id, H5AC_cache_config_t *config_ptr) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Fget_mdc_config(file_id, config_ptr)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Fget_mdc_hit_rate(hid_t file_id, double *hit_rate_ptr) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Fget_mdc_hit_rate(file_id, hit_rate_ptr)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Fget_mdc_size(hid_t file_id, size_t *max_size_ptr, size_t *min_clean_size_ptr, size_t *cur_size_ptr, int *cur_num_entries_ptr) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Fget_mdc_size(file_id, max_size_ptr, min_clean_size_ptr, cur_size_ptr, cur_num_entries_ptr)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Freset_mdc_hit_rate_stats(hid_t file_id) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Freset_mdc_hit_rate_stats(file_id)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Fset_mdc_config(hid_t file_id, H5AC_cache_config_t *config_ptr) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Fset_mdc_config(file_id, config_ptr)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef hid_t H5Gcreate(hid_t loc_id, char *name, size_t size_hint) except *:
+    cdef hid_t r
+    with rlock:
+        r = _hdf5.H5Gcreate(loc_id, name, size_hint)
+        if r<0:
+            if set_exception():
+                return <hid_t>-1;
+        return r
+
+cdef hid_t H5Gopen(hid_t loc_id, char *name) except *:
+    cdef hid_t r
+    with rlock:
+        r = _hdf5.H5Gopen(loc_id, name)
+        if r<0:
+            if set_exception():
+                return <hid_t>-1;
+        return r
+
+cdef herr_t H5Gclose(hid_t group_id) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Gclose(group_id)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Glink2( hid_t curr_loc_id, char *current_name, H5G_link_t link_type, hid_t new_loc_id, char *new_name) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Glink2(curr_loc_id, current_name, link_type, new_loc_id, new_name)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Gunlink(hid_t file_id, char *name) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Gunlink(file_id, name)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Gmove2(hid_t src_loc_id, char *src_name, hid_t dst_loc_id, char *dst_name) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Gmove2(src_loc_id, src_name, dst_loc_id, dst_name)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Gget_num_objs(hid_t loc_id, hsize_t*  num_obj) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Gget_num_objs(loc_id, num_obj)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef int H5Gget_objname_by_idx(hid_t loc_id, hsize_t idx, char *name, size_t size) except *:
+    cdef int r
+    with rlock:
+        r = _hdf5.H5Gget_objname_by_idx(loc_id, idx, name, size)
+        if r<0:
+            if set_exception():
+                return <int>-1;
+        return r
+
+cdef int H5Gget_objtype_by_idx(hid_t loc_id, hsize_t idx) except *:
+    cdef int r
+    with rlock:
+        r = _hdf5.H5Gget_objtype_by_idx(loc_id, idx)
+        if r<0:
+            if set_exception():
+                return <int>-1;
+        return r
+
+cdef herr_t H5Giterate(hid_t loc_id, char *name, int *idx, H5G_iterate_t op, void* data) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Giterate(loc_id, name, idx, op, data)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Gget_objinfo(hid_t loc_id, char* name, int follow_link, H5G_stat_t *statbuf) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Gget_objinfo(loc_id, name, follow_link, statbuf)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Gget_linkval(hid_t loc_id, char *name, size_t size, char *value) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Gget_linkval(loc_id, name, size, value)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Gset_comment(hid_t loc_id, char *name, char *comment) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Gset_comment(loc_id, name, comment)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef int H5Gget_comment(hid_t loc_id, char *name, size_t bufsize, char *comment) except *:
+    cdef int r
+    with rlock:
+        r = _hdf5.H5Gget_comment(loc_id, name, bufsize, comment)
+        if r<0:
+            if set_exception():
+                return <int>-1;
+        return r
+
+cdef hid_t H5Gcreate_anon( hid_t loc_id, hid_t gcpl_id, hid_t gapl_id) except *:
+    cdef hid_t r
+    with rlock:
+        r = _hdf5.H5Gcreate_anon(loc_id, gcpl_id, gapl_id)
+        if r<0:
+            if set_exception():
+                return <hid_t>-1;
+        return r
+
+cdef hid_t H5Gcreate2(hid_t loc_id, char *name, hid_t lcpl_id, hid_t gcpl_id, hid_t gapl_id) except *:
+    cdef hid_t r
+    with rlock:
+        r = _hdf5.H5Gcreate2(loc_id, name, lcpl_id, gcpl_id, gapl_id)
+        if r<0:
+            if set_exception():
+                return <hid_t>-1;
+        return r
+
+cdef hid_t H5Gopen2( hid_t loc_id, char * name, hid_t gapl_id) except *:
+    cdef hid_t r
+    with rlock:
+        r = _hdf5.H5Gopen2(loc_id, name, gapl_id)
+        if r<0:
+            if set_exception():
+                return <hid_t>-1;
+        return r
+
+cdef herr_t H5Gget_info( hid_t group_id, H5G_info_t *group_info) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Gget_info(group_id, group_info)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Gget_info_by_name( hid_t loc_id, char *group_name, H5G_info_t *group_info, hid_t lapl_id) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Gget_info_by_name(loc_id, group_name, group_info, lapl_id)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef hid_t H5Gget_create_plist(hid_t group_id) except *:
+    cdef hid_t r
+    with rlock:
+        r = _hdf5.H5Gget_create_plist(group_id)
+        if r<0:
+            if set_exception():
+                return <hid_t>-1;
+        return r
+
+cdef H5I_type_t H5Iget_type(hid_t obj_id) except *:
+    cdef H5I_type_t r
+    with rlock:
+        r = _hdf5.H5Iget_type(obj_id)
+        if r<0:
+            if set_exception():
+                return <H5I_type_t>-1;
+        return r
+
+cdef ssize_t H5Iget_name( hid_t obj_id, char *name, size_t size) except *:
+    cdef ssize_t r
+    with rlock:
+        r = _hdf5.H5Iget_name(obj_id, name, size)
+        if r<0:
+            if set_exception():
+                return <ssize_t>-1;
+        return r
+
+cdef hid_t H5Iget_file_id(hid_t obj_id) except *:
+    cdef hid_t r
+    with rlock:
+        r = _hdf5.H5Iget_file_id(obj_id)
+        if r<0:
+            if set_exception():
+                return <hid_t>-1;
+        return r
+
+cdef int H5Idec_ref(hid_t obj_id) except *:
+    cdef int r
+    with rlock:
+        r = _hdf5.H5Idec_ref(obj_id)
+        if r<0:
+            if set_exception():
+                return <int>-1;
+        return r
+
+cdef int H5Iget_ref(hid_t obj_id) except *:
+    cdef int r
+    with rlock:
+        r = _hdf5.H5Iget_ref(obj_id)
+        if r<0:
+            if set_exception():
+                return <int>-1;
+        return r
+
+cdef int H5Iinc_ref(hid_t obj_id) except *:
+    cdef int r
+    with rlock:
+        r = _hdf5.H5Iinc_ref(obj_id)
+        if r<0:
+            if set_exception():
+                return <int>-1;
+        return r
+
+cdef herr_t H5Lmove(hid_t src_loc, char *src_name, hid_t dst_loc, char *dst_name, hid_t lcpl_id, hid_t lapl_id) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Lmove(src_loc, src_name, dst_loc, dst_name, lcpl_id, lapl_id)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Lcopy(hid_t src_loc, char *src_name, hid_t dst_loc, char *dst_name, hid_t lcpl_id, hid_t lapl_id) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Lcopy(src_loc, src_name, dst_loc, dst_name, lcpl_id, lapl_id)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Lcreate_hard(hid_t cur_loc, char *cur_name, hid_t dst_loc, char *dst_name, hid_t lcpl_id, hid_t lapl_id) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Lcreate_hard(cur_loc, cur_name, dst_loc, dst_name, lcpl_id, lapl_id)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Lcreate_soft(char *link_target, hid_t link_loc_id, char *link_name, hid_t lcpl_id, hid_t lapl_id) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Lcreate_soft(link_target, link_loc_id, link_name, lcpl_id, lapl_id)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Ldelete(hid_t loc_id, char *name, hid_t lapl_id) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Ldelete(loc_id, name, lapl_id)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Ldelete_by_idx(hid_t loc_id, char *group_name, H5_index_t idx_type, H5_iter_order_t order, hsize_t n, hid_t lapl_id) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Ldelete_by_idx(loc_id, group_name, idx_type, order, n, lapl_id)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Lget_val(hid_t loc_id, char *name, void *bufout, size_t size, hid_t lapl_id) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Lget_val(loc_id, name, bufout, size, lapl_id)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Lget_val_by_idx(hid_t loc_id, char *group_name,  H5_index_t idx_type, H5_iter_order_t order, hsize_t n, void *bufout, size_t size, hid_t lapl_id) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Lget_val_by_idx(loc_id, group_name, idx_type, order, n, bufout, size, lapl_id)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef htri_t H5Lexists(hid_t loc_id, char *name, hid_t lapl_id) except *:
+    cdef htri_t r
+    with rlock:
+        r = _hdf5.H5Lexists(loc_id, name, lapl_id)
+        if r<0:
+            if set_exception():
+                return <htri_t>-1;
+        return r
+
+cdef herr_t H5Lget_info(hid_t loc_id, char *name, H5L_info_t *linfo, hid_t lapl_id) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Lget_info(loc_id, name, linfo, lapl_id)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Lget_info_by_idx(hid_t loc_id, char *group_name, H5_index_t idx_type, H5_iter_order_t order, hsize_t n, H5L_info_t *linfo, hid_t lapl_id) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Lget_info_by_idx(loc_id, group_name, idx_type, order, n, linfo, lapl_id)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef ssize_t H5Lget_name_by_idx(hid_t loc_id, char *group_name, H5_index_t idx_type, H5_iter_order_t order, hsize_t n, char *name, size_t size, hid_t lapl_id) except *:
+    cdef ssize_t r
+    with rlock:
+        r = _hdf5.H5Lget_name_by_idx(loc_id, group_name, idx_type, order, n, name, size, lapl_id)
+        if r<0:
+            if set_exception():
+                return <ssize_t>-1;
+        return r
+
+cdef herr_t H5Literate(hid_t grp_id, H5_index_t idx_type, H5_iter_order_t order, hsize_t *idx, H5L_iterate_t op, void *op_data) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Literate(grp_id, idx_type, order, idx, op, op_data)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Literate_by_name(hid_t loc_id, char *group_name, H5_index_t idx_type, H5_iter_order_t order, hsize_t *idx, H5L_iterate_t op, void *op_data, hid_t lapl_id) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Literate_by_name(loc_id, group_name, idx_type, order, idx, op, op_data, lapl_id)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Lvisit(hid_t grp_id, H5_index_t idx_type, H5_iter_order_t order, H5L_iterate_t op, void *op_data) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Lvisit(grp_id, idx_type, order, op, op_data)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Lvisit_by_name(hid_t loc_id, char *group_name, H5_index_t idx_type, H5_iter_order_t order, H5L_iterate_t op, void *op_data, hid_t lapl_id) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Lvisit_by_name(loc_id, group_name, idx_type, order, op, op_data, lapl_id)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Lunpack_elink_val(void *ext_linkval, size_t link_size, unsigned *flags, char **filename, char **obj_path) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Lunpack_elink_val(ext_linkval, link_size, flags, filename, obj_path)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Lcreate_external(char *file_name, char *obj_name, hid_t link_loc_id, char *link_name, hid_t lcpl_id, hid_t lapl_id) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Lcreate_external(file_name, obj_name, link_loc_id, link_name, lcpl_id, lapl_id)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef hid_t H5Oopen(hid_t loc_id, char *name, hid_t lapl_id) except *:
+    cdef hid_t r
+    with rlock:
+        r = _hdf5.H5Oopen(loc_id, name, lapl_id)
+        if r<0:
+            if set_exception():
+                return <hid_t>-1;
+        return r
+
+cdef hid_t H5Oopen_by_addr(hid_t loc_id, haddr_t addr) except *:
+    cdef hid_t r
+    with rlock:
+        r = _hdf5.H5Oopen_by_addr(loc_id, addr)
+        if r<0:
+            if set_exception():
+                return <hid_t>-1;
+        return r
+
+cdef hid_t H5Oopen_by_idx(hid_t loc_id, char *group_name, H5_index_t idx_type, H5_iter_order_t order, hsize_t n, hid_t lapl_id) except *:
+    cdef hid_t r
+    with rlock:
+        r = _hdf5.H5Oopen_by_idx(loc_id, group_name, idx_type, order, n, lapl_id)
+        if r<0:
+            if set_exception():
+                return <hid_t>-1;
+        return r
+
+cdef herr_t H5Oget_info(hid_t loc_id, H5O_info_t *oinfo) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Oget_info(loc_id, oinfo)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Oget_info_by_name(hid_t loc_id, char *name, H5O_info_t *oinfo, hid_t lapl_id) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Oget_info_by_name(loc_id, name, oinfo, lapl_id)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Oget_info_by_idx(hid_t loc_id, char *group_name,  H5_index_t idx_type, H5_iter_order_t order, hsize_t n, H5O_info_t *oinfo, hid_t lapl_id) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Oget_info_by_idx(loc_id, group_name, idx_type, order, n, oinfo, lapl_id)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Olink(hid_t obj_id, hid_t new_loc_id, char *new_name, hid_t lcpl_id, hid_t lapl_id) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Olink(obj_id, new_loc_id, new_name, lcpl_id, lapl_id)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Ocopy(hid_t src_loc_id, char *src_name, hid_t dst_loc_id,  char *dst_name, hid_t ocpypl_id, hid_t lcpl_id) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Ocopy(src_loc_id, src_name, dst_loc_id, dst_name, ocpypl_id, lcpl_id)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Oincr_refcount(hid_t object_id) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Oincr_refcount(object_id)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Odecr_refcount(hid_t object_id) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Odecr_refcount(object_id)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Oset_comment(hid_t obj_id, char *comment) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Oset_comment(obj_id, comment)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Oset_comment_by_name(hid_t loc_id, char *name,  char *comment, hid_t lapl_id) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Oset_comment_by_name(loc_id, name, comment, lapl_id)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef ssize_t H5Oget_comment(hid_t obj_id, char *comment, size_t bufsize) except *:
+    cdef ssize_t r
+    with rlock:
+        r = _hdf5.H5Oget_comment(obj_id, comment, bufsize)
+        if r<0:
+            if set_exception():
+                return <ssize_t>-1;
+        return r
+
+cdef ssize_t H5Oget_comment_by_name(hid_t loc_id, char *name, char *comment, size_t bufsize, hid_t lapl_id) except *:
+    cdef ssize_t r
+    with rlock:
+        r = _hdf5.H5Oget_comment_by_name(loc_id, name, comment, bufsize, lapl_id)
+        if r<0:
+            if set_exception():
+                return <ssize_t>-1;
+        return r
+
+cdef herr_t H5Ovisit(hid_t obj_id, H5_index_t idx_type, H5_iter_order_t order,  H5O_iterate_t op, void *op_data) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Ovisit(obj_id, idx_type, order, op, op_data)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Ovisit_by_name(hid_t loc_id, char *obj_name, H5_index_t idx_type, H5_iter_order_t order, H5O_iterate_t op, void *op_data, hid_t lapl_id) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Ovisit_by_name(loc_id, obj_name, idx_type, order, op, op_data, lapl_id)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Oclose(hid_t object_id) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Oclose(object_id)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef hid_t H5Pcreate(hid_t plist_id) except *:
+    cdef hid_t r
+    with rlock:
+        r = _hdf5.H5Pcreate(plist_id)
+        if r<0:
+            if set_exception():
+                return <hid_t>-1;
+        return r
+
+cdef hid_t H5Pcopy(hid_t plist_id) except *:
+    cdef hid_t r
+    with rlock:
+        r = _hdf5.H5Pcopy(plist_id)
+        if r<0:
+            if set_exception():
+                return <hid_t>-1;
+        return r
+
+cdef int H5Pget_class(hid_t plist_id) except *:
+    cdef int r
+    with rlock:
+        r = _hdf5.H5Pget_class(plist_id)
+        if r<0:
+            if set_exception():
+                return <int>-1;
+        return r
+
+cdef herr_t H5Pclose(hid_t plist_id) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Pclose(plist_id)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef htri_t H5Pequal( hid_t id1, hid_t id2 ) except *:
+    cdef htri_t r
+    with rlock:
+        r = _hdf5.H5Pequal(id1, id2)
+        if r<0:
+            if set_exception():
+                return <htri_t>-1;
+        return r
+
+cdef herr_t H5Pclose_class(hid_t id) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Pclose_class(id)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Pget_version(hid_t plist, unsigned int *super_, unsigned int* freelist,  unsigned int *stab, unsigned int *shhdr) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Pget_version(plist, super_, freelist, stab, shhdr)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Pset_userblock(hid_t plist, hsize_t size) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Pset_userblock(plist, size)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Pget_userblock(hid_t plist, hsize_t * size) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Pget_userblock(plist, size)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Pset_sizes(hid_t plist, size_t sizeof_addr, size_t sizeof_size) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Pset_sizes(plist, sizeof_addr, sizeof_size)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Pget_sizes(hid_t plist, size_t *sizeof_addr, size_t *sizeof_size) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Pget_sizes(plist, sizeof_addr, sizeof_size)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Pset_sym_k(hid_t plist, unsigned int ik, unsigned int lk) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Pset_sym_k(plist, ik, lk)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Pget_sym_k(hid_t plist, unsigned int *ik, unsigned int *lk) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Pget_sym_k(plist, ik, lk)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Pset_istore_k(hid_t plist, unsigned int ik) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Pset_istore_k(plist, ik)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Pget_istore_k(hid_t plist, unsigned int *ik) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Pget_istore_k(plist, ik)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Pset_fclose_degree(hid_t fapl_id, H5F_close_degree_t fc_degree) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Pset_fclose_degree(fapl_id, fc_degree)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Pget_fclose_degree(hid_t fapl_id, H5F_close_degree_t *fc_degree) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Pget_fclose_degree(fapl_id, fc_degree)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Pset_fapl_core( hid_t fapl_id, size_t increment, hbool_t backing_store) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Pset_fapl_core(fapl_id, increment, backing_store)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Pget_fapl_core( hid_t fapl_id, size_t *increment, hbool_t *backing_store) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Pget_fapl_core(fapl_id, increment, backing_store)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Pset_fapl_family( hid_t fapl_id,  hsize_t memb_size, hid_t memb_fapl_id ) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Pset_fapl_family(fapl_id, memb_size, memb_fapl_id)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Pget_fapl_family( hid_t fapl_id, hsize_t *memb_size, hid_t *memb_fapl_id ) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Pget_fapl_family(fapl_id, memb_size, memb_fapl_id)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Pset_family_offset( hid_t fapl_id, hsize_t offset) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Pset_family_offset(fapl_id, offset)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Pget_family_offset( hid_t fapl_id, hsize_t *offset) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Pget_family_offset(fapl_id, offset)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Pset_fapl_log(hid_t fapl_id, char *logfile, unsigned int flags, size_t buf_size) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Pset_fapl_log(fapl_id, logfile, flags, buf_size)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Pset_fapl_multi(hid_t fapl_id, H5FD_mem_t *memb_map, hid_t *memb_fapl, char **memb_name, haddr_t *memb_addr, hbool_t relax) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Pset_fapl_multi(fapl_id, memb_map, memb_fapl, memb_name, memb_addr, relax)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Pset_cache(hid_t plist_id, int mdc_nelmts, int rdcc_nelmts,  size_t rdcc_nbytes, double rdcc_w0) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Pset_cache(plist_id, mdc_nelmts, rdcc_nelmts, rdcc_nbytes, rdcc_w0)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Pget_cache(hid_t plist_id, int *mdc_nelmts, int *rdcc_nelmts, size_t *rdcc_nbytes, double *rdcc_w0) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Pget_cache(plist_id, mdc_nelmts, rdcc_nelmts, rdcc_nbytes, rdcc_w0)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Pset_fapl_sec2(hid_t fapl_id) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Pset_fapl_sec2(fapl_id)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Pset_fapl_stdio(hid_t fapl_id) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Pset_fapl_stdio(fapl_id)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef hid_t H5Pget_driver(hid_t fapl_id) except *:
+    cdef hid_t r
+    with rlock:
+        r = _hdf5.H5Pget_driver(fapl_id)
+        if r<0:
+            if set_exception():
+                return <hid_t>-1;
+        return r
+
+cdef herr_t H5Pget_mdc_config(hid_t plist_id, H5AC_cache_config_t *config_ptr) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Pget_mdc_config(plist_id, config_ptr)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Pset_mdc_config(hid_t plist_id, H5AC_cache_config_t *config_ptr) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Pset_mdc_config(plist_id, config_ptr)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Pset_layout(hid_t plist, int layout) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Pset_layout(plist, layout)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef H5D_layout_t H5Pget_layout(hid_t plist) except *:
+    cdef H5D_layout_t r
+    with rlock:
+        r = _hdf5.H5Pget_layout(plist)
+        if r<0:
+            if set_exception():
+                return <H5D_layout_t>-1;
+        return r
+
+cdef herr_t H5Pset_chunk(hid_t plist, int ndims, hsize_t * dim) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Pset_chunk(plist, ndims, dim)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef int H5Pget_chunk(hid_t plist, int max_ndims, hsize_t * dims ) except *:
+    cdef int r
+    with rlock:
+        r = _hdf5.H5Pget_chunk(plist, max_ndims, dims)
+        if r<0:
+            if set_exception():
+                return <int>-1;
+        return r
+
+cdef herr_t H5Pset_deflate( hid_t plist, int level) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Pset_deflate(plist, level)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Pset_fill_value(hid_t plist_id, hid_t type_id, void *value ) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Pset_fill_value(plist_id, type_id, value)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Pget_fill_value(hid_t plist_id, hid_t type_id, void *value ) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Pget_fill_value(plist_id, type_id, value)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Pfill_value_defined(hid_t plist_id, H5D_fill_value_t *status ) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Pfill_value_defined(plist_id, status)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Pset_fill_time(hid_t plist_id, H5D_fill_time_t fill_time ) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Pset_fill_time(plist_id, fill_time)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Pget_fill_time(hid_t plist_id, H5D_fill_time_t *fill_time ) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Pget_fill_time(plist_id, fill_time)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Pset_alloc_time(hid_t plist_id, H5D_alloc_time_t alloc_time ) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Pset_alloc_time(plist_id, alloc_time)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Pget_alloc_time(hid_t plist_id, H5D_alloc_time_t *alloc_time ) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Pget_alloc_time(plist_id, alloc_time)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Pset_filter(hid_t plist, H5Z_filter_t filter, unsigned int flags, size_t cd_nelmts, unsigned int* cd_values ) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Pset_filter(plist, filter, flags, cd_nelmts, cd_values)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef htri_t H5Pall_filters_avail(hid_t dcpl_id) except *:
+    cdef htri_t r
+    with rlock:
+        r = _hdf5.H5Pall_filters_avail(dcpl_id)
+        if r<0:
+            if set_exception():
+                return <htri_t>-1;
+        return r
+
+cdef int H5Pget_nfilters(hid_t plist) except *:
+    cdef int r
+    with rlock:
+        r = _hdf5.H5Pget_nfilters(plist)
+        if r<0:
+            if set_exception():
+                return <int>-1;
+        return r
+
+cdef H5Z_filter_t H5Pget_filter(hid_t plist, unsigned int filter_number,   unsigned int *flags, size_t *cd_nelmts,  unsigned int* cd_values, size_t namelen, char* name ) except *:
+    cdef H5Z_filter_t r
+    with rlock:
+        r = _hdf5.H5Pget_filter(plist, filter_number, flags, cd_nelmts, cd_values, namelen, name)
+        if r<0:
+            if set_exception():
+                return <H5Z_filter_t>-1;
+        return r
+
+cdef herr_t H5Pget_filter_by_id( hid_t plist_id, H5Z_filter_t filter,  unsigned int *flags, size_t *cd_nelmts,  unsigned int* cd_values, size_t namelen, char* name) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Pget_filter_by_id(plist_id, filter, flags, cd_nelmts, cd_values, namelen, name)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Pmodify_filter(hid_t plist, H5Z_filter_t filter, unsigned int flags, size_t cd_nelmts, unsigned int *cd_values) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Pmodify_filter(plist, filter, flags, cd_nelmts, cd_values)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Premove_filter(hid_t plist, H5Z_filter_t filter ) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Premove_filter(plist, filter)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Pset_fletcher32(hid_t plist) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Pset_fletcher32(plist)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Pset_shuffle(hid_t plist_id) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Pset_shuffle(plist_id)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Pset_szip(hid_t plist, unsigned int options_mask, unsigned int pixels_per_block) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Pset_szip(plist, options_mask, pixels_per_block)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Pset_scaleoffset(hid_t plist, H5Z_SO_scale_type_t scale_type, int scale_factor) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Pset_scaleoffset(plist, scale_type, scale_factor)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Pset_edc_check(hid_t plist, H5Z_EDC_t check) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Pset_edc_check(plist, check)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef H5Z_EDC_t H5Pget_edc_check(hid_t plist) except *:
+    cdef H5Z_EDC_t r
+    with rlock:
+        r = _hdf5.H5Pget_edc_check(plist)
+        if r<0:
+            if set_exception():
+                return <H5Z_EDC_t>-1;
+        return r
+
+cdef herr_t H5Pset_chunk_cache( hid_t dapl_id, size_t rdcc_nslots, size_t rdcc_nbytes, double rdcc_w0 ) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Pset_chunk_cache(dapl_id, rdcc_nslots, rdcc_nbytes, rdcc_w0)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Pget_chunk_cache( hid_t dapl_id, size_t *rdcc_nslots, size_t *rdcc_nbytes, double *rdcc_w0 ) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Pget_chunk_cache(dapl_id, rdcc_nslots, rdcc_nbytes, rdcc_w0)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Pset_sieve_buf_size(hid_t fapl_id, size_t size) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Pset_sieve_buf_size(fapl_id, size)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Pget_sieve_buf_size(hid_t fapl_id, size_t *size) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Pget_sieve_buf_size(fapl_id, size)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Pset_nlinks(hid_t plist_id, size_t nlinks) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Pset_nlinks(plist_id, nlinks)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Pget_nlinks(hid_t plist_id, size_t *nlinks) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Pget_nlinks(plist_id, nlinks)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Pset_elink_prefix(hid_t plist_id, char *prefix) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Pset_elink_prefix(plist_id, prefix)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef ssize_t H5Pget_elink_prefix(hid_t plist_id, char *prefix, size_t size) except *:
+    cdef ssize_t r
+    with rlock:
+        r = _hdf5.H5Pget_elink_prefix(plist_id, prefix, size)
+        if r<0:
+            if set_exception():
+                return <ssize_t>-1;
+        return r
+
+cdef hid_t H5Pget_elink_fapl(hid_t lapl_id) except *:
+    cdef hid_t r
+    with rlock:
+        r = _hdf5.H5Pget_elink_fapl(lapl_id)
+        if r<0:
+            if set_exception():
+                return <hid_t>-1;
+        return r
+
+cdef herr_t H5Pset_elink_fapl(hid_t lapl_id, hid_t fapl_id) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Pset_elink_fapl(lapl_id, fapl_id)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Pset_create_intermediate_group(hid_t plist_id, unsigned crt_intmd) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Pset_create_intermediate_group(plist_id, crt_intmd)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Pget_create_intermediate_group(hid_t plist_id, unsigned *crt_intmd) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Pget_create_intermediate_group(plist_id, crt_intmd)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Pset_copy_object(hid_t plist_id, unsigned crt_intmd) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Pset_copy_object(plist_id, crt_intmd)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Pget_copy_object(hid_t plist_id, unsigned *crt_intmd) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Pget_copy_object(plist_id, crt_intmd)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Pset_char_encoding(hid_t plist_id, H5T_cset_t encoding) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Pset_char_encoding(plist_id, encoding)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Pget_char_encoding(hid_t plist_id, H5T_cset_t *encoding) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Pget_char_encoding(plist_id, encoding)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Pset_obj_track_times( hid_t ocpl_id, hbool_t track_times ) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Pset_obj_track_times(ocpl_id, track_times)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Pget_obj_track_times( hid_t ocpl_id, hbool_t *track_times ) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Pget_obj_track_times(ocpl_id, track_times)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Pset_local_heap_size_hint(hid_t plist_id, size_t size_hint) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Pset_local_heap_size_hint(plist_id, size_hint)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Pget_local_heap_size_hint(hid_t plist_id, size_t *size_hint) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Pget_local_heap_size_hint(plist_id, size_hint)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Pset_link_phase_change(hid_t plist_id, unsigned max_compact, unsigned min_dense) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Pset_link_phase_change(plist_id, max_compact, min_dense)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Pget_link_phase_change(hid_t plist_id, unsigned *max_compact , unsigned *min_dense) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Pget_link_phase_change(plist_id, max_compact, min_dense)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Pset_est_link_info(hid_t plist_id, unsigned est_num_entries, unsigned est_name_len) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Pset_est_link_info(plist_id, est_num_entries, est_name_len)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Pget_est_link_info(hid_t plist_id, unsigned *est_num_entries , unsigned *est_name_len) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Pget_est_link_info(plist_id, est_num_entries, est_name_len)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Pset_link_creation_order(hid_t plist_id, unsigned crt_order_flags) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Pset_link_creation_order(plist_id, crt_order_flags)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Pget_link_creation_order(hid_t plist_id, unsigned *crt_order_flags) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Pget_link_creation_order(plist_id, crt_order_flags)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Pset_libver_bounds(hid_t fapl_id, H5F_libver_t libver_low, H5F_libver_t libver_high) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Pset_libver_bounds(fapl_id, libver_low, libver_high)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Pget_libver_bounds(hid_t fapl_id, H5F_libver_t *libver_low, H5F_libver_t *libver_high) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Pget_libver_bounds(fapl_id, libver_low, libver_high)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Rcreate(void *ref, hid_t loc_id, char *name, H5R_type_t ref_type,  hid_t space_id) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Rcreate(ref, loc_id, name, ref_type, space_id)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef hid_t H5Rdereference(hid_t obj_id, H5R_type_t ref_type, void *ref) except *:
+    cdef hid_t r
+    with rlock:
+        r = _hdf5.H5Rdereference(obj_id, ref_type, ref)
+        if r<0:
+            if set_exception():
+                return <hid_t>-1;
+        return r
+
+cdef hid_t H5Rget_region(hid_t dataset, H5R_type_t ref_type, void *ref) except *:
+    cdef hid_t r
+    with rlock:
+        r = _hdf5.H5Rget_region(dataset, ref_type, ref)
+        if r<0:
+            if set_exception():
+                return <hid_t>-1;
+        return r
+
+cdef H5G_obj_t H5Rget_obj_type(hid_t id, H5R_type_t ref_type, void *ref) except *:
+    cdef H5G_obj_t r
+    with rlock:
+        r = _hdf5.H5Rget_obj_type(id, ref_type, ref)
+        if r<0:
+            if set_exception():
+                return <H5G_obj_t>-1;
+        return r
+
+cdef ssize_t H5Rget_name(hid_t loc_id, H5R_type_t ref_type, void *ref, char *name, size_t size) except *:
+    cdef ssize_t r
+    with rlock:
+        r = _hdf5.H5Rget_name(loc_id, ref_type, ref, name, size)
+        if r<0:
+            if set_exception():
+                return <ssize_t>-1;
+        return r
+
+cdef hid_t H5Screate(H5S_class_t type) except *:
+    cdef hid_t r
+    with rlock:
+        r = _hdf5.H5Screate(type)
+        if r<0:
+            if set_exception():
+                return <hid_t>-1;
+        return r
+
+cdef hid_t H5Scopy(hid_t space_id ) except *:
+    cdef hid_t r
+    with rlock:
+        r = _hdf5.H5Scopy(space_id)
+        if r<0:
+            if set_exception():
+                return <hid_t>-1;
+        return r
+
+cdef herr_t H5Sclose(hid_t space_id) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Sclose(space_id)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef hid_t H5Screate_simple(int rank, hsize_t *dims, hsize_t *maxdims) except *:
+    cdef hid_t r
+    with rlock:
+        r = _hdf5.H5Screate_simple(rank, dims, maxdims)
+        if r<0:
+            if set_exception():
+                return <hid_t>-1;
+        return r
+
+cdef htri_t H5Sis_simple(hid_t space_id) except *:
+    cdef htri_t r
+    with rlock:
+        r = _hdf5.H5Sis_simple(space_id)
+        if r<0:
+            if set_exception():
+                return <htri_t>-1;
+        return r
+
+cdef herr_t H5Soffset_simple(hid_t space_id, hssize_t *offset ) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Soffset_simple(space_id, offset)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef int H5Sget_simple_extent_ndims(hid_t space_id) except *:
+    cdef int r
+    with rlock:
+        r = _hdf5.H5Sget_simple_extent_ndims(space_id)
+        if r<0:
+            if set_exception():
+                return <int>-1;
+        return r
+
+cdef int H5Sget_simple_extent_dims(hid_t space_id, hsize_t *dims, hsize_t *maxdims) except *:
+    cdef int r
+    with rlock:
+        r = _hdf5.H5Sget_simple_extent_dims(space_id, dims, maxdims)
+        if r<0:
+            if set_exception():
+                return <int>-1;
+        return r
+
+cdef hssize_t H5Sget_simple_extent_npoints(hid_t space_id) except *:
+    cdef hssize_t r
+    with rlock:
+        r = _hdf5.H5Sget_simple_extent_npoints(space_id)
+        if r<0:
+            if set_exception():
+                return <hssize_t>-1;
+        return r
+
+cdef H5S_class_t H5Sget_simple_extent_type(hid_t space_id) except *:
+    cdef H5S_class_t r
+    with rlock:
+        r = _hdf5.H5Sget_simple_extent_type(space_id)
+        if r<0:
+            if set_exception():
+                return <H5S_class_t>-1;
+        return r
+
+cdef herr_t H5Sextent_copy(hid_t dest_space_id, hid_t source_space_id ) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Sextent_copy(dest_space_id, source_space_id)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Sset_extent_simple(hid_t space_id, int rank, hsize_t *current_size, hsize_t *maximum_size ) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Sset_extent_simple(space_id, rank, current_size, maximum_size)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Sset_extent_none(hid_t space_id) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Sset_extent_none(space_id)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef H5S_sel_type H5Sget_select_type(hid_t space_id) except *:
+    cdef H5S_sel_type r
+    with rlock:
+        r = _hdf5.H5Sget_select_type(space_id)
+        if r<0:
+            if set_exception():
+                return <H5S_sel_type>-1;
+        return r
+
+cdef hssize_t H5Sget_select_npoints(hid_t space_id) except *:
+    cdef hssize_t r
+    with rlock:
+        r = _hdf5.H5Sget_select_npoints(space_id)
+        if r<0:
+            if set_exception():
+                return <hssize_t>-1;
+        return r
+
+cdef herr_t H5Sget_select_bounds(hid_t space_id, hsize_t *start, hsize_t *end) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Sget_select_bounds(space_id, start, end)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Sselect_all(hid_t space_id) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Sselect_all(space_id)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Sselect_none(hid_t space_id) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Sselect_none(space_id)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef htri_t H5Sselect_valid(hid_t space_id) except *:
+    cdef htri_t r
+    with rlock:
+        r = _hdf5.H5Sselect_valid(space_id)
+        if r<0:
+            if set_exception():
+                return <htri_t>-1;
+        return r
+
+cdef hssize_t H5Sget_select_elem_npoints(hid_t space_id) except *:
+    cdef hssize_t r
+    with rlock:
+        r = _hdf5.H5Sget_select_elem_npoints(space_id)
+        if r<0:
+            if set_exception():
+                return <hssize_t>-1;
+        return r
+
+cdef herr_t H5Sget_select_elem_pointlist(hid_t space_id, hsize_t startpoint,  hsize_t numpoints, hsize_t *buf) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Sget_select_elem_pointlist(space_id, startpoint, numpoints, buf)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Sselect_elements(hid_t space_id, H5S_seloper_t op,  size_t num_elements, hsize_t **coord) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Sselect_elements(space_id, op, num_elements, coord)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef hssize_t H5Sget_select_hyper_nblocks(hid_t space_id ) except *:
+    cdef hssize_t r
+    with rlock:
+        r = _hdf5.H5Sget_select_hyper_nblocks(space_id)
+        if r<0:
+            if set_exception():
+                return <hssize_t>-1;
+        return r
+
+cdef herr_t H5Sget_select_hyper_blocklist(hid_t space_id,  hsize_t startblock, hsize_t numblocks, hsize_t *buf ) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Sget_select_hyper_blocklist(space_id, startblock, numblocks, buf)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Sselect_hyperslab(hid_t space_id, H5S_seloper_t op,  hsize_t *start, hsize_t *_stride, hsize_t *count, hsize_t *_block) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Sselect_hyperslab(space_id, op, start, _stride, count, _block)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Sencode(hid_t obj_id, void *buf, size_t *nalloc) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Sencode(obj_id, buf, nalloc)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef hid_t H5Sdecode(void *buf) except *:
+    cdef hid_t r
+    with rlock:
+        r = _hdf5.H5Sdecode(buf)
+        if r<0:
+            if set_exception():
+                return <hid_t>-1;
+        return r
+
+cdef hid_t H5Tcreate(H5T_class_t type, size_t size) except *:
+    cdef hid_t r
+    with rlock:
+        r = _hdf5.H5Tcreate(type, size)
+        if r<0:
+            if set_exception():
+                return <hid_t>-1;
+        return r
+
+cdef hid_t H5Topen(hid_t loc, char* name) except *:
+    cdef hid_t r
+    with rlock:
+        r = _hdf5.H5Topen(loc, name)
+        if r<0:
+            if set_exception():
+                return <hid_t>-1;
+        return r
+
+cdef herr_t H5Tcommit(hid_t loc_id, char* name, hid_t type) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Tcommit(loc_id, name, type)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef htri_t H5Tcommitted(hid_t type) except *:
+    cdef htri_t r
+    with rlock:
+        r = _hdf5.H5Tcommitted(type)
+        if r<0:
+            if set_exception():
+                return <htri_t>-1;
+        return r
+
+cdef hid_t H5Tcopy(hid_t type_id) except *:
+    cdef hid_t r
+    with rlock:
+        r = _hdf5.H5Tcopy(type_id)
+        if r<0:
+            if set_exception():
+                return <hid_t>-1;
+        return r
+
+cdef htri_t H5Tequal(hid_t type_id1, hid_t type_id2 ) except *:
+    cdef htri_t r
+    with rlock:
+        r = _hdf5.H5Tequal(type_id1, type_id2)
+        if r<0:
+            if set_exception():
+                return <htri_t>-1;
+        return r
+
+cdef herr_t H5Tlock(hid_t type_id) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Tlock(type_id)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef H5T_class_t H5Tget_class(hid_t type_id) except *:
+    cdef H5T_class_t r
+    with rlock:
+        r = _hdf5.H5Tget_class(type_id)
+        if r<0:
+            if set_exception():
+                return <H5T_class_t>-1;
+        return r
+
+cdef size_t H5Tget_size(hid_t type_id) except *:
+    cdef size_t r
+    with rlock:
+        r = _hdf5.H5Tget_size(type_id)
+        if r==0:
+            if set_exception():
+                return <size_t>0;
+        return r
+
+cdef hid_t H5Tget_super(hid_t type) except *:
+    cdef hid_t r
+    with rlock:
+        r = _hdf5.H5Tget_super(type)
+        if r<0:
+            if set_exception():
+                return <hid_t>-1;
+        return r
+
+cdef htri_t H5Tdetect_class(hid_t type_id, H5T_class_t dtype_class) except *:
+    cdef htri_t r
+    with rlock:
+        r = _hdf5.H5Tdetect_class(type_id, dtype_class)
+        if r<0:
+            if set_exception():
+                return <htri_t>-1;
+        return r
+
+cdef herr_t H5Tclose(hid_t type_id) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Tclose(type_id)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef hid_t H5Tget_native_type(hid_t type_id, H5T_direction_t direction) except *:
+    cdef hid_t r
+    with rlock:
+        r = _hdf5.H5Tget_native_type(type_id, direction)
+        if r<0:
+            if set_exception():
+                return <hid_t>-1;
+        return r
+
+cdef herr_t H5Tconvert(hid_t src_id, hid_t dst_id, size_t nelmts, void *buf, void *background, hid_t plist_id) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Tconvert(src_id, dst_id, nelmts, buf, background, plist_id)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Tset_size(hid_t type_id, size_t size) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Tset_size(type_id, size)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef H5T_order_t H5Tget_order(hid_t type_id) except *:
+    cdef H5T_order_t r
+    with rlock:
+        r = _hdf5.H5Tget_order(type_id)
+        if r<0:
+            if set_exception():
+                return <H5T_order_t>-1;
+        return r
+
+cdef herr_t H5Tset_order(hid_t type_id, H5T_order_t order) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Tset_order(type_id, order)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef hsize_t H5Tget_precision(hid_t type_id) except *:
+    cdef hsize_t r
+    with rlock:
+        r = _hdf5.H5Tget_precision(type_id)
+        if r==0:
+            if set_exception():
+                return <hsize_t>0;
+        return r
+
+cdef herr_t H5Tset_precision(hid_t type_id, size_t prec) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Tset_precision(type_id, prec)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef int H5Tget_offset(hid_t type_id) except *:
+    cdef int r
+    with rlock:
+        r = _hdf5.H5Tget_offset(type_id)
+        if r<0:
+            if set_exception():
+                return <int>-1;
+        return r
+
+cdef herr_t H5Tset_offset(hid_t type_id, size_t offset) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Tset_offset(type_id, offset)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Tget_pad(hid_t type_id, H5T_pad_t * lsb, H5T_pad_t * msb ) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Tget_pad(type_id, lsb, msb)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Tset_pad(hid_t type_id, H5T_pad_t lsb, H5T_pad_t msb ) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Tset_pad(type_id, lsb, msb)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef H5T_sign_t H5Tget_sign(hid_t type_id) except *:
+    cdef H5T_sign_t r
+    with rlock:
+        r = _hdf5.H5Tget_sign(type_id)
+        if r<0:
+            if set_exception():
+                return <H5T_sign_t>-1;
+        return r
+
+cdef herr_t H5Tset_sign(hid_t type_id, H5T_sign_t sign) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Tset_sign(type_id, sign)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Tget_fields(hid_t type_id, size_t *spos, size_t *epos, size_t *esize, size_t *mpos, size_t *msize ) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Tget_fields(type_id, spos, epos, esize, mpos, msize)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Tset_fields(hid_t type_id, size_t spos, size_t epos, size_t esize, size_t mpos, size_t msize ) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Tset_fields(type_id, spos, epos, esize, mpos, msize)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef size_t H5Tget_ebias(hid_t type_id) except *:
+    cdef size_t r
+    with rlock:
+        r = _hdf5.H5Tget_ebias(type_id)
+        if r==0:
+            if set_exception():
+                return <size_t>0;
+        return r
+
+cdef herr_t H5Tset_ebias(hid_t type_id, size_t ebias) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Tset_ebias(type_id, ebias)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef H5T_norm_t H5Tget_norm(hid_t type_id) except *:
+    cdef H5T_norm_t r
+    with rlock:
+        r = _hdf5.H5Tget_norm(type_id)
+        if r<0:
+            if set_exception():
+                return <H5T_norm_t>-1;
+        return r
+
+cdef herr_t H5Tset_norm(hid_t type_id, H5T_norm_t norm) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Tset_norm(type_id, norm)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef H5T_pad_t H5Tget_inpad(hid_t type_id) except *:
+    cdef H5T_pad_t r
+    with rlock:
+        r = _hdf5.H5Tget_inpad(type_id)
+        if r<0:
+            if set_exception():
+                return <H5T_pad_t>-1;
+        return r
+
+cdef herr_t H5Tset_inpad(hid_t type_id, H5T_pad_t inpad) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Tset_inpad(type_id, inpad)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef H5T_cset_t H5Tget_cset(hid_t type_id) except *:
+    cdef H5T_cset_t r
+    with rlock:
+        r = _hdf5.H5Tget_cset(type_id)
+        if r<0:
+            if set_exception():
+                return <H5T_cset_t>-1;
+        return r
+
+cdef herr_t H5Tset_cset(hid_t type_id, H5T_cset_t cset) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Tset_cset(type_id, cset)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef H5T_str_t H5Tget_strpad(hid_t type_id) except *:
+    cdef H5T_str_t r
+    with rlock:
+        r = _hdf5.H5Tget_strpad(type_id)
+        if r<0:
+            if set_exception():
+                return <H5T_str_t>-1;
+        return r
+
+cdef herr_t H5Tset_strpad(hid_t type_id, H5T_str_t strpad) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Tset_strpad(type_id, strpad)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef hid_t H5Tvlen_create(hid_t base_type_id) except *:
+    cdef hid_t r
+    with rlock:
+        r = _hdf5.H5Tvlen_create(base_type_id)
+        if r<0:
+            if set_exception():
+                return <hid_t>-1;
+        return r
+
+cdef htri_t H5Tis_variable_str(hid_t dtype_id) except *:
+    cdef htri_t r
+    with rlock:
+        r = _hdf5.H5Tis_variable_str(dtype_id)
+        if r<0:
+            if set_exception():
+                return <htri_t>-1;
+        return r
+
+cdef int H5Tget_nmembers(hid_t type_id) except *:
+    cdef int r
+    with rlock:
+        r = _hdf5.H5Tget_nmembers(type_id)
+        if r<0:
+            if set_exception():
+                return <int>-1;
+        return r
+
+cdef H5T_class_t H5Tget_member_class(hid_t type_id, int member_no) except *:
+    cdef H5T_class_t r
+    with rlock:
+        r = _hdf5.H5Tget_member_class(type_id, member_no)
+        if r<0:
+            if set_exception():
+                return <H5T_class_t>-1;
+        return r
+
+cdef char* H5Tget_member_name(hid_t type_id, unsigned membno) except *:
+    cdef char* r
+    with rlock:
+        r = _hdf5.H5Tget_member_name(type_id, membno)
+        if r==NULL:
+            if set_exception():
+                return <char*>NULL;
+        return r
+
+cdef hid_t H5Tget_member_type(hid_t type_id, unsigned membno) except *:
+    cdef hid_t r
+    with rlock:
+        r = _hdf5.H5Tget_member_type(type_id, membno)
+        if r<0:
+            if set_exception():
+                return <hid_t>-1;
+        return r
+
+cdef int H5Tget_member_offset(hid_t type_id, int membno) except *:
+    cdef int r
+    with rlock:
+        r = _hdf5.H5Tget_member_offset(type_id, membno)
+        if r<0:
+            if set_exception():
+                return <int>-1;
+        return r
+
+cdef int H5Tget_member_index(hid_t type_id, char* name) except *:
+    cdef int r
+    with rlock:
+        r = _hdf5.H5Tget_member_index(type_id, name)
+        if r<0:
+            if set_exception():
+                return <int>-1;
+        return r
+
+cdef herr_t H5Tinsert(hid_t parent_id, char *name, size_t offset, hid_t member_id) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Tinsert(parent_id, name, offset, member_id)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Tpack(hid_t type_id) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Tpack(type_id)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef hid_t H5Tenum_create(hid_t base_id) except *:
+    cdef hid_t r
+    with rlock:
+        r = _hdf5.H5Tenum_create(base_id)
+        if r<0:
+            if set_exception():
+                return <hid_t>-1;
+        return r
+
+cdef herr_t H5Tenum_insert(hid_t type, char *name, void *value) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Tenum_insert(type, name, value)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Tenum_nameof( hid_t type, void *value, char *name, size_t size ) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Tenum_nameof(type, value, name, size)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Tenum_valueof( hid_t type, char *name, void *value ) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Tenum_valueof(type, name, value)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Tget_member_value(hid_t type,  unsigned int memb_no, void *value ) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Tget_member_value(type, memb_no, value)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef hid_t H5Tarray_create(hid_t base_id, int ndims, hsize_t *dims, int *perm) except *:
+    cdef hid_t r
+    with rlock:
+        r = _hdf5.H5Tarray_create(base_id, ndims, dims, perm)
+        if r<0:
+            if set_exception():
+                return <hid_t>-1;
+        return r
+
+cdef int H5Tget_array_ndims(hid_t type_id) except *:
+    cdef int r
+    with rlock:
+        r = _hdf5.H5Tget_array_ndims(type_id)
+        if r<0:
+            if set_exception():
+                return <int>-1;
+        return r
+
+cdef int H5Tget_array_dims(hid_t type_id, hsize_t *dims, int *perm) except *:
+    cdef int r
+    with rlock:
+        r = _hdf5.H5Tget_array_dims(type_id, dims, perm)
+        if r<0:
+            if set_exception():
+                return <int>-1;
+        return r
+
+cdef herr_t H5Tset_tag(hid_t type_id, char* tag) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Tset_tag(type_id, tag)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef char* H5Tget_tag(hid_t type_id) except *:
+    cdef char* r
+    with rlock:
+        r = _hdf5.H5Tget_tag(type_id)
+        if r==NULL:
+            if set_exception():
+                return <char*>NULL;
+        return r
+
+cdef hid_t H5Tdecode(unsigned char *buf) except *:
+    cdef hid_t r
+    with rlock:
+        r = _hdf5.H5Tdecode(buf)
+        if r<0:
+            if set_exception():
+                return <hid_t>-1;
+        return r
+
+cdef herr_t H5Tencode(hid_t obj_id, unsigned char *buf, size_t *nalloc) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Tencode(obj_id, buf, nalloc)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Tcommit2(hid_t loc_id, char *name, hid_t dtype_id, hid_t lcpl_id, hid_t tcpl_id, hid_t tapl_id) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Tcommit2(loc_id, name, dtype_id, lcpl_id, tcpl_id, tapl_id)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef H5T_conv_t H5Tfind(hid_t src_id, hid_t dst_id, H5T_cdata_t **pcdata) except *:
+    cdef H5T_conv_t r
+    with rlock:
+        r = _hdf5.H5Tfind(src_id, dst_id, pcdata)
+        if r==NULL:
+            if set_exception():
+                return <H5T_conv_t>NULL;
+        return r
+
+cdef herr_t H5Tregister(H5T_pers_t pers, char *name, hid_t src_id, hid_t dst_id, H5T_conv_t func) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Tregister(pers, name, src_id, dst_id, func)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Tunregister(H5T_pers_t pers, char *name, hid_t src_id, hid_t dst_id, H5T_conv_t func) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Tunregister(pers, name, src_id, dst_id, func)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef htri_t H5Zfilter_avail(H5Z_filter_t id_) except *:
+    cdef htri_t r
+    with rlock:
+        r = _hdf5.H5Zfilter_avail(id_)
+        if r<0:
+            if set_exception():
+                return <htri_t>-1;
+        return r
+
+cdef herr_t H5Zget_filter_info(H5Z_filter_t filter_, unsigned int *filter_config_flags) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Zget_filter_info(filter_, filter_config_flags)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef hid_t H5Acreate(hid_t loc_id, char *name, hid_t type_id, hid_t space_id, hid_t create_plist) except *:
+    cdef hid_t r
+    with rlock:
+        r = _hdf5.H5Acreate(loc_id, name, type_id, space_id, create_plist)
+        if r<0:
+            if set_exception():
+                return <hid_t>-1;
+        return r
+
+cdef hid_t H5Aopen_idx(hid_t loc_id, unsigned int idx) except *:
+    cdef hid_t r
+    with rlock:
+        r = _hdf5.H5Aopen_idx(loc_id, idx)
+        if r<0:
+            if set_exception():
+                return <hid_t>-1;
+        return r
+
+cdef hid_t H5Aopen_name(hid_t loc_id, char *name) except *:
+    cdef hid_t r
+    with rlock:
+        r = _hdf5.H5Aopen_name(loc_id, name)
+        if r<0:
+            if set_exception():
+                return <hid_t>-1;
+        return r
+
+cdef herr_t H5Aclose(hid_t attr_id) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Aclose(attr_id)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Adelete(hid_t loc_id, char *name) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Adelete(loc_id, name)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Aread(hid_t attr_id, hid_t mem_type_id, void *buf) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Aread(attr_id, mem_type_id, buf)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Awrite(hid_t attr_id, hid_t mem_type_id, void *buf ) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Awrite(attr_id, mem_type_id, buf)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef int H5Aget_num_attrs(hid_t loc_id) except *:
+    cdef int r
+    with rlock:
+        r = _hdf5.H5Aget_num_attrs(loc_id)
+        if r<0:
+            if set_exception():
+                return <int>-1;
+        return r
+
+cdef ssize_t H5Aget_name(hid_t attr_id, size_t buf_size, char *buf) except *:
+    cdef ssize_t r
+    with rlock:
+        r = _hdf5.H5Aget_name(attr_id, buf_size, buf)
+        if r<0:
+            if set_exception():
+                return <ssize_t>-1;
+        return r
+
+cdef hid_t H5Aget_space(hid_t attr_id) except *:
+    cdef hid_t r
+    with rlock:
+        r = _hdf5.H5Aget_space(attr_id)
+        if r<0:
+            if set_exception():
+                return <hid_t>-1;
+        return r
+
+cdef hid_t H5Aget_type(hid_t attr_id) except *:
+    cdef hid_t r
+    with rlock:
+        r = _hdf5.H5Aget_type(attr_id)
+        if r<0:
+            if set_exception():
+                return <hid_t>-1;
+        return r
+
+cdef herr_t H5Aiterate(hid_t loc_id, unsigned * idx, H5A_operator_t op, void* op_data) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Aiterate(loc_id, idx, op, op_data)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Adelete_by_name(hid_t loc_id, char *obj_name, char *attr_name, hid_t lapl_id) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Adelete_by_name(loc_id, obj_name, attr_name, lapl_id)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Adelete_by_idx(hid_t loc_id, char *obj_name, H5_index_t idx_type, H5_iter_order_t order, hsize_t n, hid_t lapl_id) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Adelete_by_idx(loc_id, obj_name, idx_type, order, n, lapl_id)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef hid_t H5Acreate_by_name(hid_t loc_id, char *obj_name, char *attr_name, hid_t type_id, hid_t space_id, hid_t acpl_id, hid_t aapl_id, hid_t lapl_id) except *:
+    cdef hid_t r
+    with rlock:
+        r = _hdf5.H5Acreate_by_name(loc_id, obj_name, attr_name, type_id, space_id, acpl_id, aapl_id, lapl_id)
+        if r<0:
+            if set_exception():
+                return <hid_t>-1;
+        return r
+
+cdef herr_t H5Aopen(hid_t obj_id, char *attr_name, hid_t aapl_id) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Aopen(obj_id, attr_name, aapl_id)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Aopen_by_name( hid_t loc_id, char *obj_name, char *attr_name, hid_t aapl_id, hid_t lapl_id) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Aopen_by_name(loc_id, obj_name, attr_name, aapl_id, lapl_id)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Aopen_by_idx(hid_t loc_id, char *obj_name, H5_index_t idx_type, H5_iter_order_t order, hsize_t n, hid_t aapl_id, hid_t lapl_id) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Aopen_by_idx(loc_id, obj_name, idx_type, order, n, aapl_id, lapl_id)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef htri_t H5Aexists_by_name( hid_t loc_id, char *obj_name, char *attr_name, hid_t lapl_id) except *:
+    cdef htri_t r
+    with rlock:
+        r = _hdf5.H5Aexists_by_name(loc_id, obj_name, attr_name, lapl_id)
+        if r<0:
+            if set_exception():
+                return <htri_t>-1;
+        return r
+
+cdef htri_t H5Aexists(hid_t obj_id, char *attr_name) except *:
+    cdef htri_t r
+    with rlock:
+        r = _hdf5.H5Aexists(obj_id, attr_name)
+        if r<0:
+            if set_exception():
+                return <htri_t>-1;
+        return r
+
+cdef herr_t H5Arename(hid_t loc_id, char *old_attr_name, char *new_attr_name) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Arename(loc_id, old_attr_name, new_attr_name)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Arename_by_name(hid_t loc_id, char *obj_name, char *old_attr_name, char *new_attr_name, hid_t lapl_id) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Arename_by_name(loc_id, obj_name, old_attr_name, new_attr_name, lapl_id)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Aget_info( hid_t attr_id, H5A_info_t *ainfo) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Aget_info(attr_id, ainfo)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Aget_info_by_name(hid_t loc_id, char *obj_name, char *attr_name, H5A_info_t *ainfo, hid_t lapl_id) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Aget_info_by_name(loc_id, obj_name, attr_name, ainfo, lapl_id)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Aget_info_by_idx(hid_t loc_id, char *obj_name, H5_index_t idx_type, H5_iter_order_t order, hsize_t n, H5A_info_t *ainfo, hid_t lapl_id) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Aget_info_by_idx(loc_id, obj_name, idx_type, order, n, ainfo, lapl_id)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5Aiterate2(hid_t obj_id, H5_index_t idx_type, H5_iter_order_t order, hsize_t *n, H5A_operator2_t op, void *op_data) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5Aiterate2(obj_id, idx_type, order, n, op, op_data)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef hsize_t H5Aget_storage_size(hid_t attr_id) except *:
+    cdef hsize_t r
+    with rlock:
+        r = _hdf5.H5Aget_storage_size(attr_id)
+        if r==0:
+            if set_exception():
+                return <hsize_t>0;
+        return r
+
+IF MPI:
+    cdef herr_t H5Pset_fapl_mpio(hid_t fapl_id, MPI_Comm comm, MPI_Info info) except *:
+        cdef herr_t r
+        with rlock:
+            r = _hdf5.H5Pset_fapl_mpio(fapl_id, comm, info)
+            if r<0:
+                if set_exception():
+                    return <herr_t>-1;
+            return r
+    
+IF MPI:
+    cdef herr_t H5Pset_fapl_mpiposix(hid_t fapl_id, MPI_Comm comm, hbool_t hints) except *:
+        cdef herr_t r
+        with rlock:
+            r = _hdf5.H5Pset_fapl_mpiposix(fapl_id, comm, hints)
+            if r<0:
+                if set_exception():
+                    return <herr_t>-1;
+            return r
+    
+IF HDF5_VERSION >= (1, 8, 9):
+    IF MPI:
+        cdef herr_t H5Fset_mpi_atomicity(hid_t file_id, hbool_t flag) except *:
+            cdef herr_t r
+            with rlock:
+                r = _hdf5.H5Fset_mpi_atomicity(file_id, flag)
+                if r<0:
+                    if set_exception():
+                        return <herr_t>-1;
+                return r
+        
+IF HDF5_VERSION >= (1, 8, 9):
+    IF MPI:
+        cdef herr_t H5Fget_mpi_atomicity(hid_t file_id, hbool_t *flag) except *:
+            cdef herr_t r
+            with rlock:
+                r = _hdf5.H5Fget_mpi_atomicity(file_id, flag)
+                if r<0:
+                    if set_exception():
+                        return <herr_t>-1;
+                return r
+        
+cdef herr_t H5DSattach_scale(hid_t did, hid_t dsid, unsigned int idx) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5DSattach_scale(did, dsid, idx)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5DSdetach_scale(hid_t did, hid_t dsid, unsigned int idx) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5DSdetach_scale(did, dsid, idx)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef herr_t H5DSset_scale(hid_t dsid, char *dimname) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5DSset_scale(dsid, dimname)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef int H5DSget_num_scales(hid_t did, unsigned int dim) except *:
+    cdef int r
+    with rlock:
+        r = _hdf5.H5DSget_num_scales(did, dim)
+        if r<0:
+            if set_exception():
+                return <int>-1;
+        return r
+
+cdef herr_t H5DSset_label(hid_t did, unsigned int idx, char *label) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5DSset_label(did, idx, label)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef ssize_t H5DSget_label(hid_t did, unsigned int idx, char *label, size_t size) except *:
+    cdef ssize_t r
+    with rlock:
+        r = _hdf5.H5DSget_label(did, idx, label, size)
+        if r<0:
+            if set_exception():
+                return <ssize_t>-1;
+        return r
+
+cdef ssize_t H5DSget_scale_name(hid_t did, char *name, size_t size) except *:
+    cdef ssize_t r
+    with rlock:
+        r = _hdf5.H5DSget_scale_name(did, name, size)
+        if r<0:
+            if set_exception():
+                return <ssize_t>-1;
+        return r
+
+cdef htri_t H5DSis_scale(hid_t did) except *:
+    cdef htri_t r
+    with rlock:
+        r = _hdf5.H5DSis_scale(did)
+        if r<0:
+            if set_exception():
+                return <htri_t>-1;
+        return r
+
+cdef herr_t H5DSiterate_scales(hid_t did, unsigned int dim, int *idx, H5DS_iterate_t visitor, void *visitor_data) except *:
+    cdef herr_t r
+    with rlock:
+        r = _hdf5.H5DSiterate_scales(did, dim, idx, visitor, visitor_data)
+        if r<0:
+            if set_exception():
+                return <herr_t>-1;
+        return r
+
+cdef htri_t H5DSis_attached(hid_t did, hid_t dsid, unsigned int idx) except *:
+    cdef htri_t r
+    with rlock:
+        r = _hdf5.H5DSis_attached(did, dsid, idx)
+        if r<0:
+            if set_exception():
+                return <htri_t>-1;
+        return r
+
diff --git a/h5py/h5.c b/h5py/h5.c
new file mode 100644
index 0000000..19491d3
--- /dev/null
+++ b/h5py/h5.c
@@ -0,0 +1,5480 @@
+/* Generated by Cython 0.18 on Mon Dec  9 16:00:33 2013 */
+
+#define PY_SSIZE_T_CLEAN
+#include "Python.h"
+#ifndef Py_PYTHON_H
+    #error Python headers needed to compile C extensions, please install development version of Python.
+#elif PY_VERSION_HEX < 0x02040000
+    #error Cython requires Python 2.4+.
+#else
+#include <stddef.h> /* For offsetof */
+#ifndef offsetof
+#define offsetof(type, member) ( (size_t) & ((type*)0) -> member )
+#endif
+#if !defined(WIN32) && !defined(MS_WINDOWS)
+  #ifndef __stdcall
+    #define __stdcall
+  #endif
+  #ifndef __cdecl
+    #define __cdecl
+  #endif
+  #ifndef __fastcall
+    #define __fastcall
+  #endif
+#endif
+#ifndef DL_IMPORT
+  #define DL_IMPORT(t) t
+#endif
+#ifndef DL_EXPORT
+  #define DL_EXPORT(t) t
+#endif
+#ifndef PY_LONG_LONG
+  #define PY_LONG_LONG LONG_LONG
+#endif
+#ifndef Py_HUGE_VAL
+  #define Py_HUGE_VAL HUGE_VAL
+#endif
+#ifdef PYPY_VERSION
+#define CYTHON_COMPILING_IN_PYPY 1
+#define CYTHON_COMPILING_IN_CPYTHON 0
+#else
+#define CYTHON_COMPILING_IN_PYPY 0
+#define CYTHON_COMPILING_IN_CPYTHON 1
+#endif
+#if PY_VERSION_HEX < 0x02050000
+  typedef int Py_ssize_t;
+  #define PY_SSIZE_T_MAX INT_MAX
+  #define PY_SSIZE_T_MIN INT_MIN
+  #define PY_FORMAT_SIZE_T ""
+  #define CYTHON_FORMAT_SSIZE_T ""
+  #define PyInt_FromSsize_t(z) PyInt_FromLong(z)
+  #define PyInt_AsSsize_t(o)   __Pyx_PyInt_AsInt(o)
+  #define PyNumber_Index(o)    ((PyNumber_Check(o) && !PyFloat_Check(o)) ? PyNumber_Int(o) : \
+                                (PyErr_Format(PyExc_TypeError, \
+                                              "expected index value, got %.200s", Py_TYPE(o)->tp_name), \
+                                 (PyObject*)0))
+  #define __Pyx_PyIndex_Check(o) (PyNumber_Check(o) && !PyFloat_Check(o) && \
+                                  !PyComplex_Check(o))
+  #define PyIndex_Check __Pyx_PyIndex_Check
+  #define PyErr_WarnEx(category, message, stacklevel) PyErr_Warn(category, message)
+  #define __PYX_BUILD_PY_SSIZE_T "i"
+#else
+  #define __PYX_BUILD_PY_SSIZE_T "n"
+  #define CYTHON_FORMAT_SSIZE_T "z"
+  #define __Pyx_PyIndex_Check PyIndex_Check
+#endif
+#if PY_VERSION_HEX < 0x02060000
+  #define Py_REFCNT(ob) (((PyObject*)(ob))->ob_refcnt)
+  #define Py_TYPE(ob)   (((PyObject*)(ob))->ob_type)
+  #define Py_SIZE(ob)   (((PyVarObject*)(ob))->ob_size)
+  #define PyVarObject_HEAD_INIT(type, size) \
+          PyObject_HEAD_INIT(type) size,
+  #define PyType_Modified(t)
+  typedef struct {
+     void *buf;
+     PyObject *obj;
+     Py_ssize_t len;
+     Py_ssize_t itemsize;
+     int readonly;
+     int ndim;
+     char *format;
+     Py_ssize_t *shape;
+     Py_ssize_t *strides;
+     Py_ssize_t *suboffsets;
+     void *internal;
+  } Py_buffer;
+  #define PyBUF_SIMPLE 0
+  #define PyBUF_WRITABLE 0x0001
+  #define PyBUF_FORMAT 0x0004
+  #define PyBUF_ND 0x0008
+  #define PyBUF_STRIDES (0x0010 | PyBUF_ND)
+  #define PyBUF_C_CONTIGUOUS (0x0020 | PyBUF_STRIDES)
+  #define PyBUF_F_CONTIGUOUS (0x0040 | PyBUF_STRIDES)
+  #define PyBUF_ANY_CONTIGUOUS (0x0080 | PyBUF_STRIDES)
+  #define PyBUF_INDIRECT (0x0100 | PyBUF_STRIDES)
+  #define PyBUF_RECORDS (PyBUF_STRIDES | PyBUF_FORMAT | PyBUF_WRITABLE)
+  #define PyBUF_FULL (PyBUF_INDIRECT | PyBUF_FORMAT | PyBUF_WRITABLE)
+  typedef int (*getbufferproc)(PyObject *, Py_buffer *, int);
+  typedef void (*releasebufferproc)(PyObject *, Py_buffer *);
+#endif
+#if PY_MAJOR_VERSION < 3
+  #define __Pyx_BUILTIN_MODULE_NAME "__builtin__"
+  #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) \
+          PyCode_New(a, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
+#else
+  #define __Pyx_BUILTIN_MODULE_NAME "builtins"
+  #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) \
+          PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
+#endif
+#if PY_MAJOR_VERSION < 3 && PY_MINOR_VERSION < 6
+  #define PyUnicode_FromString(s) PyUnicode_Decode(s, strlen(s), "UTF-8", "strict")
+#endif
+#if PY_MAJOR_VERSION >= 3
+  #define Py_TPFLAGS_CHECKTYPES 0
+  #define Py_TPFLAGS_HAVE_INDEX 0
+#endif
+#if (PY_VERSION_HEX < 0x02060000) || (PY_MAJOR_VERSION >= 3)
+  #define Py_TPFLAGS_HAVE_NEWBUFFER 0
+#endif
+#if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND)
+  #define CYTHON_PEP393_ENABLED 1
+  #define __Pyx_PyUnicode_READY(op)       (likely(PyUnicode_IS_READY(op)) ? \
+                                              0 : _PyUnicode_Ready((PyObject *)(op)))
+  #define __Pyx_PyUnicode_GET_LENGTH(u)   PyUnicode_GET_LENGTH(u)
+  #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i)
+  #define __Pyx_PyUnicode_READ(k, d, i)   PyUnicode_READ(k, d, i)
+#else
+  #define CYTHON_PEP393_ENABLED 0
+  #define __Pyx_PyUnicode_READY(op)       (0)
+  #define __Pyx_PyUnicode_GET_LENGTH(u)   PyUnicode_GET_SIZE(u)
+  #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i]))
+  #define __Pyx_PyUnicode_READ(k, d, i)   ((k=k), (Py_UCS4)(((Py_UNICODE*)d)[i]))
+#endif
+#if PY_MAJOR_VERSION >= 3
+  #define PyBaseString_Type            PyUnicode_Type
+  #define PyStringObject               PyUnicodeObject
+  #define PyString_Type                PyUnicode_Type
+  #define PyString_Check               PyUnicode_Check
+  #define PyString_CheckExact          PyUnicode_CheckExact
+#endif
+#if PY_VERSION_HEX < 0x02060000
+  #define PyBytesObject                PyStringObject
+  #define PyBytes_Type                 PyString_Type
+  #define PyBytes_Check                PyString_Check
+  #define PyBytes_CheckExact           PyString_CheckExact
+  #define PyBytes_FromString           PyString_FromString
+  #define PyBytes_FromStringAndSize    PyString_FromStringAndSize
+  #define PyBytes_FromFormat           PyString_FromFormat
+  #define PyBytes_DecodeEscape         PyString_DecodeEscape
+  #define PyBytes_AsString             PyString_AsString
+  #define PyBytes_AsStringAndSize      PyString_AsStringAndSize
+  #define PyBytes_Size                 PyString_Size
+  #define PyBytes_AS_STRING            PyString_AS_STRING
+  #define PyBytes_GET_SIZE             PyString_GET_SIZE
+  #define PyBytes_Repr                 PyString_Repr
+  #define PyBytes_Concat               PyString_Concat
+  #define PyBytes_ConcatAndDel         PyString_ConcatAndDel
+#endif
+#if PY_VERSION_HEX < 0x02060000
+  #define PySet_Check(obj)             PyObject_TypeCheck(obj, &PySet_Type)
+  #define PyFrozenSet_Check(obj)       PyObject_TypeCheck(obj, &PyFrozenSet_Type)
+#endif
+#ifndef PySet_CheckExact
+  #define PySet_CheckExact(obj)        (Py_TYPE(obj) == &PySet_Type)
+#endif
+#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type)
+#if PY_MAJOR_VERSION >= 3
+  #define PyIntObject                  PyLongObject
+  #define PyInt_Type                   PyLong_Type
+  #define PyInt_Check(op)              PyLong_Check(op)
+  #define PyInt_CheckExact(op)         PyLong_CheckExact(op)
+  #define PyInt_FromString             PyLong_FromString
+  #define PyInt_FromUnicode            PyLong_FromUnicode
+  #define PyInt_FromLong               PyLong_FromLong
+  #define PyInt_FromSize_t             PyLong_FromSize_t
+  #define PyInt_FromSsize_t            PyLong_FromSsize_t
+  #define PyInt_AsLong                 PyLong_AsLong
+  #define PyInt_AS_LONG                PyLong_AS_LONG
+  #define PyInt_AsSsize_t              PyLong_AsSsize_t
+  #define PyInt_AsUnsignedLongMask     PyLong_AsUnsignedLongMask
+  #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask
+#endif
+#if PY_MAJOR_VERSION >= 3
+  #define PyBoolObject                 PyLongObject
+#endif
+#if PY_VERSION_HEX < 0x03020000
+  typedef long Py_hash_t;
+  #define __Pyx_PyInt_FromHash_t PyInt_FromLong
+  #define __Pyx_PyInt_AsHash_t   PyInt_AsLong
+#else
+  #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t
+  #define __Pyx_PyInt_AsHash_t   PyInt_AsSsize_t
+#endif
+#if (PY_MAJOR_VERSION < 3) || (PY_VERSION_HEX >= 0x03010300)
+  #define __Pyx_PySequence_GetSlice(obj, a, b) PySequence_GetSlice(obj, a, b)
+  #define __Pyx_PySequence_SetSlice(obj, a, b, value) PySequence_SetSlice(obj, a, b, value)
+  #define __Pyx_PySequence_DelSlice(obj, a, b) PySequence_DelSlice(obj, a, b)
+#else
+  #define __Pyx_PySequence_GetSlice(obj, a, b) (unlikely(!(obj)) ? \
+        (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), (PyObject*)0) : \
+        (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_GetSlice(obj, a, b)) : \
+            (PyErr_Format(PyExc_TypeError, "'%.200s' object is unsliceable", (obj)->ob_type->tp_name), (PyObject*)0)))
+  #define __Pyx_PySequence_SetSlice(obj, a, b, value) (unlikely(!(obj)) ? \
+        (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), -1) : \
+        (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_SetSlice(obj, a, b, value)) : \
+            (PyErr_Format(PyExc_TypeError, "'%.200s' object doesn't support slice assignment", (obj)->ob_type->tp_name), -1)))
+  #define __Pyx_PySequence_DelSlice(obj, a, b) (unlikely(!(obj)) ? \
+        (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), -1) : \
+        (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_DelSlice(obj, a, b)) : \
+            (PyErr_Format(PyExc_TypeError, "'%.200s' object doesn't support slice deletion", (obj)->ob_type->tp_name), -1)))
+#endif
+#if PY_MAJOR_VERSION >= 3
+  #define PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, self) : PyInstanceMethod_New(func))
+#endif
+#if PY_VERSION_HEX < 0x02050000
+  #define __Pyx_GetAttrString(o,n)   PyObject_GetAttrString((o),((char *)(n)))
+  #define __Pyx_SetAttrString(o,n,a) PyObject_SetAttrString((o),((char *)(n)),(a))
+  #define __Pyx_DelAttrString(o,n)   PyObject_DelAttrString((o),((char *)(n)))
+#else
+  #define __Pyx_GetAttrString(o,n)   PyObject_GetAttrString((o),(n))
+  #define __Pyx_SetAttrString(o,n,a) PyObject_SetAttrString((o),(n),(a))
+  #define __Pyx_DelAttrString(o,n)   PyObject_DelAttrString((o),(n))
+#endif
+#if PY_VERSION_HEX < 0x02050000
+  #define __Pyx_NAMESTR(n) ((char *)(n))
+  #define __Pyx_DOCSTR(n)  ((char *)(n))
+#else
+  #define __Pyx_NAMESTR(n) (n)
+  #define __Pyx_DOCSTR(n)  (n)
+#endif
+
+
+#if PY_MAJOR_VERSION >= 3
+  #define __Pyx_PyNumber_Divide(x,y)         PyNumber_TrueDivide(x,y)
+  #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceTrueDivide(x,y)
+#else
+  #define __Pyx_PyNumber_Divide(x,y)         PyNumber_Divide(x,y)
+  #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceDivide(x,y)
+#endif
+
+#ifndef __PYX_EXTERN_C
+  #ifdef __cplusplus
+    #define __PYX_EXTERN_C extern "C"
+  #else
+    #define __PYX_EXTERN_C extern
+  #endif
+#endif
+
+#if defined(WIN32) || defined(MS_WINDOWS)
+#define _USE_MATH_DEFINES
+#endif
+#include <math.h>
+#define __PYX_HAVE__h5py__h5
+#define __PYX_HAVE_API__h5py__h5
+#include "stdlib.h"
+#include "string.h"
+#include "time.h"
+#include "unistd.h"
+#include "stdint.h"
+#include "api_compat.h"
+#include "lzf_filter.h"
+#include "hdf5.h"
+#include "H5Cpublic.h"
+#include "hdf5_hl.h"
+#ifdef _OPENMP
+#include <omp.h>
+#endif /* _OPENMP */
+
+#ifdef PYREX_WITHOUT_ASSERTIONS
+#define CYTHON_WITHOUT_ASSERTIONS
+#endif
+
+#ifndef CYTHON_INLINE
+  #if defined(__GNUC__)
+    #define CYTHON_INLINE __inline__
+  #elif defined(_MSC_VER)
+    #define CYTHON_INLINE __inline
+  #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+    #define CYTHON_INLINE inline
+  #else
+    #define CYTHON_INLINE
+  #endif
+#endif
+#ifndef CYTHON_UNUSED
+# if defined(__GNUC__)
+#   if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
+#     define CYTHON_UNUSED __attribute__ ((__unused__))
+#   else
+#     define CYTHON_UNUSED
+#   endif
+# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER))
+#   define CYTHON_UNUSED __attribute__ ((__unused__))
+# else
+#   define CYTHON_UNUSED
+# endif
+#endif
+typedef struct {PyObject **p; char *s; const long n; const char* encoding; const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; /*proto*/
+
+#define __Pyx_PyBytes_FromUString(s) PyBytes_FromString((char*)s)
+#define __Pyx_PyBytes_AsUString(s)   ((unsigned char*) PyBytes_AsString(s))
+#define __Pyx_Owned_Py_None(b) (Py_INCREF(Py_None), Py_None)
+#define __Pyx_PyBool_FromLong(b) ((b) ? (Py_INCREF(Py_True), Py_True) : (Py_INCREF(Py_False), Py_False))
+static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*);
+static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x);
+static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*);
+static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t);
+static CYTHON_INLINE size_t __Pyx_PyInt_AsSize_t(PyObject*);
+#if CYTHON_COMPILING_IN_CPYTHON
+#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x))
+#else
+#define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x)
+#endif
+#define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x))
+
+
+#ifdef __GNUC__
+  /* Test for GCC > 2.95 */
+  #if __GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))
+    #define likely(x)   __builtin_expect(!!(x), 1)
+    #define unlikely(x) __builtin_expect(!!(x), 0)
+  #else /* __GNUC__ > 2 ... */
+    #define likely(x)   (x)
+    #define unlikely(x) (x)
+  #endif /* __GNUC__ > 2 ... */
+#else /* __GNUC__ */
+  #define likely(x)   (x)
+  #define unlikely(x) (x)
+#endif /* __GNUC__ */
+    
+static PyObject *__pyx_m;
+static PyObject *__pyx_b;
+static PyObject *__pyx_empty_tuple;
+static PyObject *__pyx_empty_bytes;
+static int __pyx_lineno;
+static int __pyx_clineno = 0;
+static const char * __pyx_cfilenm= __FILE__;
+static const char *__pyx_filename;
+
+
+static const char *__pyx_f[] = {
+  "h5.pyx",
+};
+
+/*--- Type declarations ---*/
+struct __pyx_obj_4h5py_2h5___pyx_scope_struct____get__;
+struct __pyx_obj_4h5py_2h5_H5PYConfig;
+
+/* "h5py/h5.pyx":66
+ *         """
+ * 
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             import sys
+ *             def handle_val(val):
+ */
+struct __pyx_obj_4h5py_2h5___pyx_scope_struct____get__ {
+  PyObject_HEAD
+  PyObject *__pyx_v_sys;
+};
+
+
+/* "h5py/h5.pxd":12
+ * from defs cimport *
+ * 
+ * cdef class H5PYConfig:             # <<<<<<<<<<<<<<
+ * 
+ *     cdef readonly object _r_name
+ */
+struct __pyx_obj_4h5py_2h5_H5PYConfig {
+  PyObject_HEAD
+  PyObject *_r_name;
+  PyObject *_i_name;
+  PyObject *_f_name;
+  PyObject *_t_name;
+  PyObject *API_16;
+  PyObject *API_18;
+  PyObject *_bytestrings;
+};
+
+#ifndef CYTHON_REFNANNY
+  #define CYTHON_REFNANNY 0
+#endif
+#if CYTHON_REFNANNY
+  typedef struct {
+    void (*INCREF)(void*, PyObject*, int);
+    void (*DECREF)(void*, PyObject*, int);
+    void (*GOTREF)(void*, PyObject*, int);
+    void (*GIVEREF)(void*, PyObject*, int);
+    void* (*SetupContext)(const char*, int, const char*);
+    void (*FinishContext)(void**);
+  } __Pyx_RefNannyAPIStruct;
+  static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL;
+  static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); /*proto*/
+  #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL;
+#ifdef WITH_THREAD
+  #define __Pyx_RefNannySetupContext(name, acquire_gil) \
+          if (acquire_gil) { \
+              PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); \
+              __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__); \
+              PyGILState_Release(__pyx_gilstate_save); \
+          } else { \
+              __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__); \
+          }
+#else
+  #define __Pyx_RefNannySetupContext(name, acquire_gil) \
+          __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__)
+#endif
+  #define __Pyx_RefNannyFinishContext() \
+          __Pyx_RefNanny->FinishContext(&__pyx_refnanny)
+  #define __Pyx_INCREF(r)  __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_DECREF(r)  __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_GOTREF(r)  __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_XINCREF(r)  do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0)
+  #define __Pyx_XDECREF(r)  do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0)
+  #define __Pyx_XGOTREF(r)  do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0)
+  #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0)
+#else
+  #define __Pyx_RefNannyDeclarations
+  #define __Pyx_RefNannySetupContext(name, acquire_gil)
+  #define __Pyx_RefNannyFinishContext()
+  #define __Pyx_INCREF(r) Py_INCREF(r)
+  #define __Pyx_DECREF(r) Py_DECREF(r)
+  #define __Pyx_GOTREF(r)
+  #define __Pyx_GIVEREF(r)
+  #define __Pyx_XINCREF(r) Py_XINCREF(r)
+  #define __Pyx_XDECREF(r) Py_XDECREF(r)
+  #define __Pyx_XGOTREF(r)
+  #define __Pyx_XGIVEREF(r)
+#endif /* CYTHON_REFNANNY */
+#define __Pyx_CLEAR(r)    do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0)
+#define __Pyx_XCLEAR(r)   do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0)
+
+static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name); /*proto*/
+
+static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name); /*proto*/
+
+static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[], \
+    PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args, \
+    const char* function_name); /*proto*/
+
+static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact,
+    Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); /*proto*/
+
+static CYTHON_INLINE int __Pyx_CheckKeywordStrings(PyObject *kwdict, const char* function_name, int kw_allowed); /*proto*/
+
+static CYTHON_INLINE void __Pyx_RaiseClosureNameError(const char *varname);
+
+static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) {
+    PyObject *r;
+    if (!j) return NULL;
+    r = PyObject_GetItem(o, j);
+    Py_DECREF(j);
+    return r;
+}
+#define __Pyx_GetItemInt_List(o, i, size, to_py_func) (((size) <= sizeof(Py_ssize_t)) ? \
+                                                    __Pyx_GetItemInt_List_Fast(o, i) : \
+                                                    __Pyx_GetItemInt_Generic(o, to_py_func(i)))
+static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i) {
+#if CYTHON_COMPILING_IN_CPYTHON
+    if (likely((0 <= i) & (i < PyList_GET_SIZE(o)))) {
+        PyObject *r = PyList_GET_ITEM(o, i);
+        Py_INCREF(r);
+        return r;
+    }
+    else if ((-PyList_GET_SIZE(o) <= i) & (i < 0)) {
+        PyObject *r = PyList_GET_ITEM(o, PyList_GET_SIZE(o) + i);
+        Py_INCREF(r);
+        return r;
+    }
+    return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));
+#else
+    return PySequence_GetItem(o, i);
+#endif
+}
+#define __Pyx_GetItemInt_Tuple(o, i, size, to_py_func) (((size) <= sizeof(Py_ssize_t)) ? \
+                                                    __Pyx_GetItemInt_Tuple_Fast(o, i) : \
+                                                    __Pyx_GetItemInt_Generic(o, to_py_func(i)))
+static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i) {
+#if CYTHON_COMPILING_IN_CPYTHON
+    if (likely((0 <= i) & (i < PyTuple_GET_SIZE(o)))) {
+        PyObject *r = PyTuple_GET_ITEM(o, i);
+        Py_INCREF(r);
+        return r;
+    }
+    else if ((-PyTuple_GET_SIZE(o) <= i) & (i < 0)) {
+        PyObject *r = PyTuple_GET_ITEM(o, PyTuple_GET_SIZE(o) + i);
+        Py_INCREF(r);
+        return r;
+    }
+    return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));
+#else
+    return PySequence_GetItem(o, i);
+#endif
+}
+#define __Pyx_GetItemInt(o, i, size, to_py_func) (((size) <= sizeof(Py_ssize_t)) ? \
+                                                    __Pyx_GetItemInt_Fast(o, i) : \
+                                                    __Pyx_GetItemInt_Generic(o, to_py_func(i)))
+static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i) {
+#if CYTHON_COMPILING_IN_CPYTHON
+    if (PyList_CheckExact(o)) {
+        Py_ssize_t n = (likely(i >= 0)) ? i : i + PyList_GET_SIZE(o);
+        if (likely((n >= 0) & (n < PyList_GET_SIZE(o)))) {
+            PyObject *r = PyList_GET_ITEM(o, n);
+            Py_INCREF(r);
+            return r;
+        }
+    }
+    else if (PyTuple_CheckExact(o)) {
+        Py_ssize_t n = (likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o);
+        if (likely((n >= 0) & (n < PyTuple_GET_SIZE(o)))) {
+            PyObject *r = PyTuple_GET_ITEM(o, n);
+            Py_INCREF(r);
+            return r;
+        }
+    } else {  /* inlined PySequence_GetItem() */
+        PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence;
+        if (likely(m && m->sq_item)) {
+            if (unlikely(i < 0) && likely(m->sq_length)) {
+                Py_ssize_t l = m->sq_length(o);
+                if (unlikely(l < 0)) return NULL;
+                i += l;
+            }
+            return m->sq_item(o, i);
+        }
+    }
+#else
+    if (PySequence_Check(o)) {
+        return PySequence_GetItem(o, i);
+    }
+#endif
+    return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));
+}
+
+static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb); /*proto*/
+static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb); /*proto*/
+
+static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause); /*proto*/
+
+static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb); /*proto*/
+
+static CYTHON_INLINE void __Pyx_ExceptionSave(PyObject **type, PyObject **value, PyObject **tb); /*proto*/
+static void __Pyx_ExceptionReset(PyObject *type, PyObject *value, PyObject *tb); /*proto*/
+
+static PyObject *__Pyx_FindPy2Metaclass(PyObject *bases); /*proto*/
+
+static PyObject *__Pyx_CreateClass(PyObject *bases, PyObject *dict, PyObject *name,
+                                   PyObject *qualname, PyObject *modname); /*proto*/
+
+#define __Pyx_CyFunction_USED 1
+#include <structmember.h>
+#define __Pyx_CYFUNCTION_STATICMETHOD  0x01
+#define __Pyx_CYFUNCTION_CLASSMETHOD   0x02
+#define __Pyx_CYFUNCTION_CCLASS        0x04
+#define __Pyx_CyFunction_GetClosure(f) \
+    (((__pyx_CyFunctionObject *) (f))->func_closure)
+#define __Pyx_CyFunction_GetClassObj(f) \
+    (((__pyx_CyFunctionObject *) (f))->func_classobj)
+#define __Pyx_CyFunction_Defaults(type, f) \
+    ((type *)(((__pyx_CyFunctionObject *) (f))->defaults))
+#define __Pyx_CyFunction_SetDefaultsGetter(f, g) \
+    ((__pyx_CyFunctionObject *) (f))->defaults_getter = (g)
+typedef struct {
+    PyCFunctionObject func;
+    int flags;
+    PyObject *func_dict;
+    PyObject *func_weakreflist;
+    PyObject *func_name;
+    PyObject *func_qualname;
+    PyObject *func_doc;
+    PyObject *func_code;
+    PyObject *func_closure;
+    PyObject *func_classobj; /* No-args super() class cell */
+    void *defaults;
+    int defaults_pyobjects;
+    PyObject *defaults_tuple; /* Const defaults tuple */
+    PyObject *(*defaults_getter)(PyObject *);
+} __pyx_CyFunctionObject;
+static PyTypeObject *__pyx_CyFunctionType = 0;
+#define __Pyx_CyFunction_NewEx(ml, flags, qualname, self, module, code) \
+    __Pyx_CyFunction_New(__pyx_CyFunctionType, ml, flags, qualname, self, module, code)
+static PyObject *__Pyx_CyFunction_New(PyTypeObject *, PyMethodDef *ml,
+                                      int flags, PyObject* qualname,
+                                      PyObject *self, PyObject *module,
+                                      PyObject* code);
+static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *m,
+                                                         size_t size,
+                                                         int pyobjects);
+static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *m,
+                                                            PyObject *tuple);
+static int __Pyx_CyFunction_init(void);
+
+static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level); /*proto*/
+
+static CYTHON_INLINE unsigned char __Pyx_PyInt_AsUnsignedChar(PyObject *);
+
+static CYTHON_INLINE unsigned short __Pyx_PyInt_AsUnsignedShort(PyObject *);
+
+static CYTHON_INLINE unsigned int __Pyx_PyInt_AsUnsignedInt(PyObject *);
+
+static CYTHON_INLINE char __Pyx_PyInt_AsChar(PyObject *);
+
+static CYTHON_INLINE short __Pyx_PyInt_AsShort(PyObject *);
+
+static CYTHON_INLINE int __Pyx_PyInt_AsInt(PyObject *);
+
+static CYTHON_INLINE signed char __Pyx_PyInt_AsSignedChar(PyObject *);
+
+static CYTHON_INLINE signed short __Pyx_PyInt_AsSignedShort(PyObject *);
+
+static CYTHON_INLINE signed int __Pyx_PyInt_AsSignedInt(PyObject *);
+
+static CYTHON_INLINE int __Pyx_PyInt_AsLongDouble(PyObject *);
+
+static CYTHON_INLINE unsigned long __Pyx_PyInt_AsUnsignedLong(PyObject *);
+
+static CYTHON_INLINE unsigned PY_LONG_LONG __Pyx_PyInt_AsUnsignedLongLong(PyObject *);
+
+static CYTHON_INLINE long __Pyx_PyInt_AsLong(PyObject *);
+
+static CYTHON_INLINE PY_LONG_LONG __Pyx_PyInt_AsLongLong(PyObject *);
+
+static CYTHON_INLINE signed long __Pyx_PyInt_AsSignedLong(PyObject *);
+
+static CYTHON_INLINE signed PY_LONG_LONG __Pyx_PyInt_AsSignedLongLong(PyObject *);
+
+static int __Pyx_check_binary_version(void);
+
+static int __Pyx_ExportFunction(const char *name, void (*f)(void), const char *sig); /*proto*/
+
+#if !defined(__Pyx_PyIdentifier_FromString)
+#if PY_MAJOR_VERSION < 3
+  #define __Pyx_PyIdentifier_FromString(s) PyString_FromString(s)
+#else
+  #define __Pyx_PyIdentifier_FromString(s) PyUnicode_FromString(s)
+#endif
+#endif
+
+static PyObject *__Pyx_ImportModule(const char *name); /*proto*/
+
+static int __Pyx_ImportFunction(PyObject *module, const char *funcname, void (**f)(void), const char *sig); /*proto*/
+
+typedef struct {
+    int code_line;
+    PyCodeObject* code_object;
+} __Pyx_CodeObjectCacheEntry;
+struct __Pyx_CodeObjectCache {
+    int count;
+    int max_count;
+    __Pyx_CodeObjectCacheEntry* entries;
+};
+static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL};
+static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line);
+static PyCodeObject *__pyx_find_code_object(int code_line);
+static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object);
+
+static void __Pyx_AddTraceback(const char *funcname, int c_line,
+                               int py_line, const char *filename); /*proto*/
+
+static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); /*proto*/
+
+
+/* Module declarations from 'h5py.api_types_ext' */
+
+/* Module declarations from 'h5py.api_types_hdf5' */
+
+/* Module declarations from 'h5py.defs' */
+static herr_t (*__pyx_f_4h5py_4defs_H5get_libversion)(unsigned int *, unsigned int *, unsigned int *); /*proto*/
+
+/* Module declarations from 'h5py.h5' */
+static PyTypeObject *__pyx_ptype_4h5py_2h5_H5PYConfig = 0;
+static PyTypeObject *__pyx_ptype_4h5py_2h5___pyx_scope_struct____get__ = 0;
+static struct __pyx_obj_4h5py_2h5_H5PYConfig *__pyx_v_4h5py_2h5_cfg = 0;
+static struct __pyx_obj_4h5py_2h5_H5PYConfig *__pyx_f_4h5py_2h5_get_config(int __pyx_skip_dispatch); /*proto*/
+#define __Pyx_MODULE_NAME "h5py.h5"
+int __pyx_module_is_main_h5py__h5 = 0;
+
+/* Implementation of 'h5py.h5' */
+static PyObject *__pyx_builtin_object;
+static PyObject *__pyx_builtin_TypeError;
+static PyObject *__pyx_builtin_Exception;
+static PyObject *__pyx_pf_4h5py_2h5_17ByteStringContext___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_2h5_17ByteStringContext_2__bool__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_2h5_17ByteStringContext_4__nonzero__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_2h5_17ByteStringContext_6__enter__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_2h5_17ByteStringContext_8__exit__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_args); /* proto */
+static int __pyx_pf_4h5py_2h5_10H5PYConfig___init__(struct __pyx_obj_4h5py_2h5_H5PYConfig *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_2h5_10H5PYConfig_13complex_names_7__get___handle_val(PyObject *__pyx_self, PyObject *__pyx_v_val); /* proto */
+static PyObject *__pyx_pf_4h5py_2h5_10H5PYConfig_13complex_names___get__(struct __pyx_obj_4h5py_2h5_H5PYConfig *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_2h5_10H5PYConfig_13complex_names_7__set___handle_val(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_val); /* proto */
+static int __pyx_pf_4h5py_2h5_10H5PYConfig_13complex_names_2__set__(struct __pyx_obj_4h5py_2h5_H5PYConfig *__pyx_v_self, PyObject *__pyx_v_val); /* proto */
+static PyObject *__pyx_pf_4h5py_2h5_10H5PYConfig_10bool_names___get__(struct __pyx_obj_4h5py_2h5_H5PYConfig *__pyx_v_self); /* proto */
+static int __pyx_pf_4h5py_2h5_10H5PYConfig_10bool_names_2__set__(struct __pyx_obj_4h5py_2h5_H5PYConfig *__pyx_v_self, PyObject *__pyx_v_val); /* proto */
+static PyObject *__pyx_pf_4h5py_2h5_10H5PYConfig_17read_byte_strings___get__(struct __pyx_obj_4h5py_2h5_H5PYConfig *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_2h5_10H5PYConfig_3mpi___get__(CYTHON_UNUSED struct __pyx_obj_4h5py_2h5_H5PYConfig *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_2h5_10H5PYConfig_7_r_name___get__(struct __pyx_obj_4h5py_2h5_H5PYConfig *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_2h5_10H5PYConfig_7_i_name___get__(struct __pyx_obj_4h5py_2h5_H5PYConfig *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_2h5_10H5PYConfig_7_f_name___get__(struct __pyx_obj_4h5py_2h5_H5PYConfig *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_2h5_10H5PYConfig_7_t_name___get__(struct __pyx_obj_4h5py_2h5_H5PYConfig *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_2h5_10H5PYConfig_6API_16___get__(struct __pyx_obj_4h5py_2h5_H5PYConfig *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_2h5_10H5PYConfig_6API_18___get__(struct __pyx_obj_4h5py_2h5_H5PYConfig *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_2h5_10H5PYConfig_12_bytestrings___get__(struct __pyx_obj_4h5py_2h5_H5PYConfig *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_2h5_get_config(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
+static PyObject *__pyx_pf_4h5py_2h5_2get_libversion(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
+static char __pyx_k_4[] = "/home/computer/h5py/h5py/h5.pyx";
+static char __pyx_k_5[] = "H5PYConfig.complex_names.__get__.<locals>.handle_val";
+static char __pyx_k_6[] = "h5py.h5";
+static char __pyx_k_10[] = "H5PYConfig.complex_names.__set__.<locals>.handle_val";
+static char __pyx_k_11[] = "complex_names must be a length-2 sequence of strings (real, img)";
+static char __pyx_k_13[] = "bool_names must be a length-2 sequence of of names (false, true)";
+static char __pyx_k_15[] = " Settable 2-tuple controlling how complex numbers are saved.\n\n        Format is (real_name, imag_name), defaulting to ('r','i').\n        ";
+static char __pyx_k_16[] = " Settable 2-tuple controlling HDF5 ENUM names for boolean types.\n\n        Format is (false_name, real_name), defaulting to ('FALSE', 'TRUE').\n        ";
+static char __pyx_k_17[] = " Returns a context manager which forces all strings to be returned\n        as byte strings. ";
+static char __pyx_k_18[] = " Boolean indicating if Parallel HDF5 is available ";
+static char __pyx_k_21[] = "ByteStringContext.__init__";
+static char __pyx_k_24[] = "ByteStringContext.__bool__";
+static char __pyx_k_27[] = "ByteStringContext.__nonzero__";
+static char __pyx_k_30[] = "ByteStringContext.__enter__";
+static char __pyx_k_33[] = "ByteStringContext.__exit__";
+static char __pyx_k__3[] = "3";
+static char __pyx_k__i[] = "i";
+static char __pyx_k__r[] = "r";
+static char __pyx_k__sys[] = "sys";
+static char __pyx_k__val[] = "val";
+static char __pyx_k__TRUE[] = "TRUE";
+static char __pyx_k__args[] = "args";
+static char __pyx_k__self[] = "self";
+static char __pyx_k__utf8[] = "utf8";
+static char __pyx_k__FALSE[] = "FALSE";
+static char __pyx_k__major[] = "major";
+static char __pyx_k__minor[] = "minor";
+static char __pyx_k__decode[] = "decode";
+static char __pyx_k__encode[] = "encode";
+static char __pyx_k__object[] = "object";
+static char __pyx_k__retval[] = "retval";
+static char __pyx_k__release[] = "release";
+static char __pyx_k__version[] = "version";
+static char __pyx_k__ITER_DEC[] = "ITER_DEC";
+static char __pyx_k__ITER_INC[] = "ITER_INC";
+static char __pyx_k____bool__[] = "__bool__";
+static char __pyx_k____exit__[] = "__exit__";
+static char __pyx_k____init__[] = "__init__";
+static char __pyx_k____main__[] = "__main__";
+static char __pyx_k____test__[] = "__test__";
+static char __pyx_k__Exception[] = "Exception";
+static char __pyx_k__TypeError[] = "TypeError";
+static char __pyx_k____enter__[] = "__enter__";
+static char __pyx_k__INDEX_NAME[] = "INDEX_NAME";
+static char __pyx_k___readbytes[] = "_readbytes";
+static char __pyx_k__handle_val[] = "handle_val";
+static char __pyx_k__ITER_NATIVE[] = "ITER_NATIVE";
+static char __pyx_k____nonzero__[] = "__nonzero__";
+static char __pyx_k__get_libversion[] = "get_libversion";
+static char __pyx_k__INDEX_CRT_ORDER[] = "INDEX_CRT_ORDER";
+static char __pyx_k__ByteStringContext[] = "ByteStringContext";
+static PyObject *__pyx_n_s_10;
+static PyObject *__pyx_kp_s_11;
+static PyObject *__pyx_kp_s_13;
+static PyObject *__pyx_n_s_21;
+static PyObject *__pyx_n_s_24;
+static PyObject *__pyx_n_s_27;
+static PyObject *__pyx_n_s_30;
+static PyObject *__pyx_n_s_33;
+static PyObject *__pyx_kp_s_4;
+static PyObject *__pyx_n_s_5;
+static PyObject *__pyx_n_s_6;
+static PyObject *__pyx_kp_s__3;
+static PyObject *__pyx_n_s__ByteStringContext;
+static PyObject *__pyx_n_s__Exception;
+static PyObject *__pyx_n_b__FALSE;
+static PyObject *__pyx_n_s__INDEX_CRT_ORDER;
+static PyObject *__pyx_n_s__INDEX_NAME;
+static PyObject *__pyx_n_s__ITER_DEC;
+static PyObject *__pyx_n_s__ITER_INC;
+static PyObject *__pyx_n_s__ITER_NATIVE;
+static PyObject *__pyx_n_b__TRUE;
+static PyObject *__pyx_n_s__TypeError;
+static PyObject *__pyx_n_s____bool__;
+static PyObject *__pyx_n_s____enter__;
+static PyObject *__pyx_n_s____exit__;
+static PyObject *__pyx_n_s____init__;
+static PyObject *__pyx_n_s____main__;
+static PyObject *__pyx_n_s____nonzero__;
+static PyObject *__pyx_n_s____test__;
+static PyObject *__pyx_n_s___readbytes;
+static PyObject *__pyx_n_s__args;
+static PyObject *__pyx_n_s__decode;
+static PyObject *__pyx_n_s__encode;
+static PyObject *__pyx_n_s__get_libversion;
+static PyObject *__pyx_n_s__handle_val;
+static PyObject *__pyx_n_b__i;
+static PyObject *__pyx_n_s__major;
+static PyObject *__pyx_n_s__minor;
+static PyObject *__pyx_n_s__object;
+static PyObject *__pyx_n_b__r;
+static PyObject *__pyx_n_s__release;
+static PyObject *__pyx_n_s__retval;
+static PyObject *__pyx_n_s__self;
+static PyObject *__pyx_n_s__sys;
+static PyObject *__pyx_n_s__utf8;
+static PyObject *__pyx_n_s__val;
+static PyObject *__pyx_n_s__version;
+static PyObject *__pyx_k_tuple_1;
+static PyObject *__pyx_k_tuple_2;
+static PyObject *__pyx_k_tuple_7;
+static PyObject *__pyx_k_tuple_8;
+static PyObject *__pyx_k_tuple_12;
+static PyObject *__pyx_k_tuple_14;
+static PyObject *__pyx_k_tuple_19;
+static PyObject *__pyx_k_tuple_22;
+static PyObject *__pyx_k_tuple_25;
+static PyObject *__pyx_k_tuple_28;
+static PyObject *__pyx_k_tuple_31;
+static PyObject *__pyx_k_tuple_34;
+static PyObject *__pyx_k_codeobj_3;
+static PyObject *__pyx_k_codeobj_9;
+static PyObject *__pyx_k_codeobj_20;
+static PyObject *__pyx_k_codeobj_23;
+static PyObject *__pyx_k_codeobj_26;
+static PyObject *__pyx_k_codeobj_29;
+static PyObject *__pyx_k_codeobj_32;
+static PyObject *__pyx_k_codeobj_35;
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_2h5_17ByteStringContext_1__init__(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
+static PyMethodDef __pyx_mdef_4h5py_2h5_17ByteStringContext_1__init__ = {__Pyx_NAMESTR("__init__"), (PyCFunction)__pyx_pw_4h5py_2h5_17ByteStringContext_1__init__, METH_O, __Pyx_DOCSTR(0)};
+static PyObject *__pyx_pw_4h5py_2h5_17ByteStringContext_1__init__(PyObject *__pyx_self, PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_2h5_17ByteStringContext___init__(__pyx_self, ((PyObject *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5.pyx":23
+ * class ByteStringContext(object):
+ * 
+ *     def __init__(self):             # <<<<<<<<<<<<<<
+ *         self._readbytes = False
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_2h5_17ByteStringContext___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__init__", 0);
+
+  /* "h5py/h5.pyx":24
+ * 
+ *     def __init__(self):
+ *         self._readbytes = False             # <<<<<<<<<<<<<<
+ * 
+ *     def __bool__(self):
+ */
+  __pyx_t_1 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  if (PyObject_SetAttr(__pyx_v_self, __pyx_n_s___readbytes, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py.h5.ByteStringContext.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_2h5_17ByteStringContext_3__bool__(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
+static PyMethodDef __pyx_mdef_4h5py_2h5_17ByteStringContext_3__bool__ = {__Pyx_NAMESTR("__bool__"), (PyCFunction)__pyx_pw_4h5py_2h5_17ByteStringContext_3__bool__, METH_O, __Pyx_DOCSTR(0)};
+static PyObject *__pyx_pw_4h5py_2h5_17ByteStringContext_3__bool__(PyObject *__pyx_self, PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__bool__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_2h5_17ByteStringContext_2__bool__(__pyx_self, ((PyObject *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5.pyx":26
+ *         self._readbytes = False
+ * 
+ *     def __bool__(self):             # <<<<<<<<<<<<<<
+ *         return self._readbytes
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_2h5_17ByteStringContext_2__bool__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__bool__", 0);
+
+  /* "h5py/h5.pyx":27
+ * 
+ *     def __bool__(self):
+ *         return self._readbytes             # <<<<<<<<<<<<<<
+ * 
+ *     def __nonzero__(self):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s___readbytes); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py.h5.ByteStringContext.__bool__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_2h5_17ByteStringContext_5__nonzero__(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
+static PyMethodDef __pyx_mdef_4h5py_2h5_17ByteStringContext_5__nonzero__ = {__Pyx_NAMESTR("__nonzero__"), (PyCFunction)__pyx_pw_4h5py_2h5_17ByteStringContext_5__nonzero__, METH_O, __Pyx_DOCSTR(0)};
+static PyObject *__pyx_pw_4h5py_2h5_17ByteStringContext_5__nonzero__(PyObject *__pyx_self, PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__nonzero__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_2h5_17ByteStringContext_4__nonzero__(__pyx_self, ((PyObject *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5.pyx":29
+ *         return self._readbytes
+ * 
+ *     def __nonzero__(self):             # <<<<<<<<<<<<<<
+ *         return self.__bool__()
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_2h5_17ByteStringContext_4__nonzero__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__nonzero__", 0);
+
+  /* "h5py/h5.pyx":30
+ * 
+ *     def __nonzero__(self):
+ *         return self.__bool__()             # <<<<<<<<<<<<<<
+ * 
+ *     def __enter__(self):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s____bool__); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5.ByteStringContext.__nonzero__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_2h5_17ByteStringContext_7__enter__(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
+static PyMethodDef __pyx_mdef_4h5py_2h5_17ByteStringContext_7__enter__ = {__Pyx_NAMESTR("__enter__"), (PyCFunction)__pyx_pw_4h5py_2h5_17ByteStringContext_7__enter__, METH_O, __Pyx_DOCSTR(0)};
+static PyObject *__pyx_pw_4h5py_2h5_17ByteStringContext_7__enter__(PyObject *__pyx_self, PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__enter__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_2h5_17ByteStringContext_6__enter__(__pyx_self, ((PyObject *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5.pyx":32
+ *         return self.__bool__()
+ * 
+ *     def __enter__(self):             # <<<<<<<<<<<<<<
+ *         self._readbytes = True
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_2h5_17ByteStringContext_6__enter__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__enter__", 0);
+
+  /* "h5py/h5.pyx":33
+ * 
+ *     def __enter__(self):
+ *         self._readbytes = True             # <<<<<<<<<<<<<<
+ * 
+ *     def __exit__(self, *args):
+ */
+  __pyx_t_1 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  if (PyObject_SetAttr(__pyx_v_self, __pyx_n_s___readbytes, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py.h5.ByteStringContext.__enter__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_2h5_17ByteStringContext_9__exit__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyMethodDef __pyx_mdef_4h5py_2h5_17ByteStringContext_9__exit__ = {__Pyx_NAMESTR("__exit__"), (PyCFunction)__pyx_pw_4h5py_2h5_17ByteStringContext_9__exit__, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)};
+static PyObject *__pyx_pw_4h5py_2h5_17ByteStringContext_9__exit__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_self = 0;
+  CYTHON_UNUSED PyObject *__pyx_v_args = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__exit__ (wrapper)", 0);
+  if (PyTuple_GET_SIZE(__pyx_args) > 1) {
+    __pyx_v_args = PyTuple_GetSlice(__pyx_args, 1, PyTuple_GET_SIZE(__pyx_args));
+    if (unlikely(!__pyx_v_args)) {
+      __Pyx_RefNannyFinishContext();
+      return NULL;
+    }
+    __Pyx_GOTREF(__pyx_v_args);
+  } else {
+    __pyx_v_args = __pyx_empty_tuple; __Pyx_INCREF(__pyx_empty_tuple);
+  }
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__self,0};
+    PyObject* values[1] = {0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        default:
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__self)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+      }
+      if (unlikely(kw_args > 0)) {
+        const Py_ssize_t used_pos_args = (pos_args < 1) ? pos_args : 1;
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, used_pos_args, "__exit__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) < 1) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+    }
+    __pyx_v_self = values[0];
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("__exit__", 0, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_DECREF(__pyx_v_args); __pyx_v_args = 0;
+  __Pyx_AddTraceback("h5py.h5.ByteStringContext.__exit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_2h5_17ByteStringContext_8__exit__(__pyx_self, __pyx_v_self, __pyx_v_args);
+  __Pyx_XDECREF(__pyx_v_args);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5.pyx":35
+ *         self._readbytes = True
+ * 
+ *     def __exit__(self, *args):             # <<<<<<<<<<<<<<
+ *         self._readbytes = False
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_2h5_17ByteStringContext_8__exit__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_args) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__exit__", 0);
+
+  /* "h5py/h5.pyx":36
+ * 
+ *     def __exit__(self, *args):
+ *         self._readbytes = False             # <<<<<<<<<<<<<<
+ * 
+ * cdef class H5PYConfig:
+ */
+  __pyx_t_1 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  if (PyObject_SetAttr(__pyx_v_self, __pyx_n_s___readbytes, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py.h5.ByteStringContext.__exit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static int __pyx_pw_4h5py_2h5_10H5PYConfig_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_4h5py_2h5_10H5PYConfig_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
+  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
+    __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
+  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 0))) return -1;
+  __pyx_r = __pyx_pf_4h5py_2h5_10H5PYConfig___init__(((struct __pyx_obj_4h5py_2h5_H5PYConfig *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5.pyx":53
+ *     """
+ * 
+ *     def __init__(self):             # <<<<<<<<<<<<<<
+ *         self._r_name = b'r'
+ *         self._i_name = b'i'
+ */
+
+static int __pyx_pf_4h5py_2h5_10H5PYConfig___init__(struct __pyx_obj_4h5py_2h5_H5PYConfig *__pyx_v_self) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__init__", 0);
+
+  /* "h5py/h5.pyx":54
+ * 
+ *     def __init__(self):
+ *         self._r_name = b'r'             # <<<<<<<<<<<<<<
+ *         self._i_name = b'i'
+ *         self._f_name = b'FALSE'
+ */
+  __Pyx_INCREF(((PyObject *)__pyx_n_b__r));
+  __Pyx_GIVEREF(((PyObject *)__pyx_n_b__r));
+  __Pyx_GOTREF(__pyx_v_self->_r_name);
+  __Pyx_DECREF(__pyx_v_self->_r_name);
+  __pyx_v_self->_r_name = ((PyObject *)__pyx_n_b__r);
+
+  /* "h5py/h5.pyx":55
+ *     def __init__(self):
+ *         self._r_name = b'r'
+ *         self._i_name = b'i'             # <<<<<<<<<<<<<<
+ *         self._f_name = b'FALSE'
+ *         self._t_name = b'TRUE'
+ */
+  __Pyx_INCREF(((PyObject *)__pyx_n_b__i));
+  __Pyx_GIVEREF(((PyObject *)__pyx_n_b__i));
+  __Pyx_GOTREF(__pyx_v_self->_i_name);
+  __Pyx_DECREF(__pyx_v_self->_i_name);
+  __pyx_v_self->_i_name = ((PyObject *)__pyx_n_b__i);
+
+  /* "h5py/h5.pyx":56
+ *         self._r_name = b'r'
+ *         self._i_name = b'i'
+ *         self._f_name = b'FALSE'             # <<<<<<<<<<<<<<
+ *         self._t_name = b'TRUE'
+ *         self._bytestrings = ByteStringContext()
+ */
+  __Pyx_INCREF(((PyObject *)__pyx_n_b__FALSE));
+  __Pyx_GIVEREF(((PyObject *)__pyx_n_b__FALSE));
+  __Pyx_GOTREF(__pyx_v_self->_f_name);
+  __Pyx_DECREF(__pyx_v_self->_f_name);
+  __pyx_v_self->_f_name = ((PyObject *)__pyx_n_b__FALSE);
+
+  /* "h5py/h5.pyx":57
+ *         self._i_name = b'i'
+ *         self._f_name = b'FALSE'
+ *         self._t_name = b'TRUE'             # <<<<<<<<<<<<<<
+ *         self._bytestrings = ByteStringContext()
+ * 
+ */
+  __Pyx_INCREF(((PyObject *)__pyx_n_b__TRUE));
+  __Pyx_GIVEREF(((PyObject *)__pyx_n_b__TRUE));
+  __Pyx_GOTREF(__pyx_v_self->_t_name);
+  __Pyx_DECREF(__pyx_v_self->_t_name);
+  __pyx_v_self->_t_name = ((PyObject *)__pyx_n_b__TRUE);
+
+  /* "h5py/h5.pyx":58
+ *         self._f_name = b'FALSE'
+ *         self._t_name = b'TRUE'
+ *         self._bytestrings = ByteStringContext()             # <<<<<<<<<<<<<<
+ * 
+ *     property complex_names:
+ */
+  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__ByteStringContext); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_GIVEREF(__pyx_t_2);
+  __Pyx_GOTREF(__pyx_v_self->_bytestrings);
+  __Pyx_DECREF(__pyx_v_self->_bytestrings);
+  __pyx_v_self->_bytestrings = __pyx_t_2;
+  __pyx_t_2 = 0;
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5.H5PYConfig.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_2h5_10H5PYConfig_13complex_names_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4h5py_2h5_10H5PYConfig_13complex_names_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_2h5_10H5PYConfig_13complex_names___get__(((struct __pyx_obj_4h5py_2h5_H5PYConfig *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_2h5_10H5PYConfig_13complex_names_7__get___1handle_val(PyObject *__pyx_self, PyObject *__pyx_v_val); /*proto*/
+static PyMethodDef __pyx_mdef_4h5py_2h5_10H5PYConfig_13complex_names_7__get___1handle_val = {__Pyx_NAMESTR("handle_val"), (PyCFunction)__pyx_pw_4h5py_2h5_10H5PYConfig_13complex_names_7__get___1handle_val, METH_O, __Pyx_DOCSTR(0)};
+static PyObject *__pyx_pw_4h5py_2h5_10H5PYConfig_13complex_names_7__get___1handle_val(PyObject *__pyx_self, PyObject *__pyx_v_val) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("handle_val (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_2h5_10H5PYConfig_13complex_names_7__get___handle_val(__pyx_self, ((PyObject *)__pyx_v_val));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5.pyx":68
+ *         def __get__(self):
+ *             import sys
+ *             def handle_val(val):             # <<<<<<<<<<<<<<
+ *                 if sys.version[0] == '3':
+ *                     return val.decode('utf8')
+ */
+
+static PyObject *__pyx_pf_4h5py_2h5_10H5PYConfig_13complex_names_7__get___handle_val(PyObject *__pyx_self, PyObject *__pyx_v_val) {
+  struct __pyx_obj_4h5py_2h5___pyx_scope_struct____get__ *__pyx_cur_scope;
+  struct __pyx_obj_4h5py_2h5___pyx_scope_struct____get__ *__pyx_outer_scope;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_t_3;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("handle_val", 0);
+  __pyx_outer_scope = (struct __pyx_obj_4h5py_2h5___pyx_scope_struct____get__ *) __Pyx_CyFunction_GetClosure(__pyx_self);
+  __pyx_cur_scope = __pyx_outer_scope;
+
+  /* "h5py/h5.pyx":69
+ *             import sys
+ *             def handle_val(val):
+ *                 if sys.version[0] == '3':             # <<<<<<<<<<<<<<
+ *                     return val.decode('utf8')
+ *                 return val
+ */
+  if (unlikely(!__pyx_cur_scope->__pyx_v_sys)) { __Pyx_RaiseClosureNameError("sys"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
+  __pyx_t_1 = PyObject_GetAttr(__pyx_cur_scope->__pyx_v_sys, __pyx_n_s__version); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = PyObject_RichCompare(__pyx_t_2, ((PyObject *)__pyx_kp_s__3), Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (__pyx_t_3) {
+
+    /* "h5py/h5.pyx":70
+ *             def handle_val(val):
+ *                 if sys.version[0] == '3':
+ *                     return val.decode('utf8')             # <<<<<<<<<<<<<<
+ *                 return val
+ *             return (handle_val(self._r_name), handle_val(self._i_name))
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_1 = PyObject_GetAttr(__pyx_v_val, __pyx_n_s__decode); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_k_tuple_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __pyx_r = __pyx_t_2;
+    __pyx_t_2 = 0;
+    goto __pyx_L0;
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  /* "h5py/h5.pyx":71
+ *                 if sys.version[0] == '3':
+ *                     return val.decode('utf8')
+ *                 return val             # <<<<<<<<<<<<<<
+ *             return (handle_val(self._r_name), handle_val(self._i_name))
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_val);
+  __pyx_r = __pyx_v_val;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5.H5PYConfig.complex_names.__get__.handle_val", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5.pyx":66
+ *         """
+ * 
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             import sys
+ *             def handle_val(val):
+ */
+
+static PyObject *__pyx_pf_4h5py_2h5_10H5PYConfig_13complex_names___get__(struct __pyx_obj_4h5py_2h5_H5PYConfig *__pyx_v_self) {
+  struct __pyx_obj_4h5py_2h5___pyx_scope_struct____get__ *__pyx_cur_scope;
+  PyObject *__pyx_v_handle_val = 0;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 0);
+  __pyx_cur_scope = (struct __pyx_obj_4h5py_2h5___pyx_scope_struct____get__ *)__pyx_ptype_4h5py_2h5___pyx_scope_struct____get__->tp_new(__pyx_ptype_4h5py_2h5___pyx_scope_struct____get__, __pyx_empty_tuple, NULL);
+  if (unlikely(!__pyx_cur_scope)) {
+    __Pyx_RefNannyFinishContext();
+    return NULL;
+  }
+  __Pyx_GOTREF(__pyx_cur_scope);
+
+  /* "h5py/h5.pyx":67
+ * 
+ *         def __get__(self):
+ *             import sys             # <<<<<<<<<<<<<<
+ *             def handle_val(val):
+ *                 if sys.version[0] == '3':
+ */
+  __pyx_t_1 = __Pyx_Import(((PyObject *)__pyx_n_s__sys), 0, -1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __pyx_cur_scope->__pyx_v_sys = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+  /* "h5py/h5.pyx":68
+ *         def __get__(self):
+ *             import sys
+ *             def handle_val(val):             # <<<<<<<<<<<<<<
+ *                 if sys.version[0] == '3':
+ *                     return val.decode('utf8')
+ */
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4h5py_2h5_10H5PYConfig_13complex_names_7__get___1handle_val, 0, __pyx_n_s_5, ((PyObject*)__pyx_cur_scope), __pyx_n_s_6, ((PyObject *)__pyx_k_codeobj_3)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_handle_val = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+  /* "h5py/h5.pyx":72
+ *                     return val.decode('utf8')
+ *                 return val
+ *             return (handle_val(self._r_name), handle_val(self._i_name))             # <<<<<<<<<<<<<<
+ * 
+ *         def __set__(self, val):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_v_self->_r_name;
+  __Pyx_INCREF(__pyx_t_1);
+  __pyx_t_2 = __pyx_pf_4h5py_2h5_10H5PYConfig_13complex_names_7__get___handle_val(__pyx_v_handle_val, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = __pyx_v_self->_i_name;
+  __Pyx_INCREF(__pyx_t_1);
+  __pyx_t_3 = __pyx_pf_4h5py_2h5_10H5PYConfig_13complex_names_7__get___handle_val(__pyx_v_handle_val, __pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
+  __Pyx_GIVEREF(__pyx_t_2);
+  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_3);
+  __pyx_t_2 = 0;
+  __pyx_t_3 = 0;
+  __pyx_r = ((PyObject *)__pyx_t_1);
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("h5py.h5.H5PYConfig.complex_names.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_handle_val);
+  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static int __pyx_pw_4h5py_2h5_10H5PYConfig_13complex_names_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val); /*proto*/
+static int __pyx_pw_4h5py_2h5_10H5PYConfig_13complex_names_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_2h5_10H5PYConfig_13complex_names_2__set__(((struct __pyx_obj_4h5py_2h5_H5PYConfig *)__pyx_v_self), ((PyObject *)__pyx_v_val));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_2h5_10H5PYConfig_13complex_names_7__set___1handle_val(PyObject *__pyx_self, PyObject *__pyx_v_val); /*proto*/
+static PyMethodDef __pyx_mdef_4h5py_2h5_10H5PYConfig_13complex_names_7__set___1handle_val = {__Pyx_NAMESTR("handle_val"), (PyCFunction)__pyx_pw_4h5py_2h5_10H5PYConfig_13complex_names_7__set___1handle_val, METH_O, __Pyx_DOCSTR(0)};
+static PyObject *__pyx_pw_4h5py_2h5_10H5PYConfig_13complex_names_7__set___1handle_val(PyObject *__pyx_self, PyObject *__pyx_v_val) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("handle_val (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_2h5_10H5PYConfig_13complex_names_7__set___handle_val(__pyx_self, ((PyObject *)__pyx_v_val));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5.pyx":75
+ * 
+ *         def __set__(self, val):
+ *             def handle_val(val):             # <<<<<<<<<<<<<<
+ *                 if isinstance(val, unicode):
+ *                     return val.encode('utf8')
+ */
+
+static PyObject *__pyx_pf_4h5py_2h5_10H5PYConfig_13complex_names_7__set___handle_val(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_val) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("handle_val", 0);
+
+  /* "h5py/h5.pyx":76
+ *         def __set__(self, val):
+ *             def handle_val(val):
+ *                 if isinstance(val, unicode):             # <<<<<<<<<<<<<<
+ *                     return val.encode('utf8')
+ *                 elif isinstance(val, bytes):
+ */
+  __pyx_t_1 = PyUnicode_Check(__pyx_v_val); 
+  if (__pyx_t_1) {
+
+    /* "h5py/h5.pyx":77
+ *             def handle_val(val):
+ *                 if isinstance(val, unicode):
+ *                     return val.encode('utf8')             # <<<<<<<<<<<<<<
+ *                 elif isinstance(val, bytes):
+ *                     return val
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_v_val, __pyx_n_s__encode); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_k_tuple_7), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __pyx_r = __pyx_t_3;
+    __pyx_t_3 = 0;
+    goto __pyx_L0;
+    goto __pyx_L3;
+  }
+
+  /* "h5py/h5.pyx":78
+ *                 if isinstance(val, unicode):
+ *                     return val.encode('utf8')
+ *                 elif isinstance(val, bytes):             # <<<<<<<<<<<<<<
+ *                     return val
+ *                 else:
+ */
+  __pyx_t_1 = PyBytes_Check(__pyx_v_val); 
+  if (__pyx_t_1) {
+
+    /* "h5py/h5.pyx":79
+ *                     return val.encode('utf8')
+ *                 elif isinstance(val, bytes):
+ *                     return val             # <<<<<<<<<<<<<<
+ *                 else:
+ *                     return bytes(val)
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __Pyx_INCREF(__pyx_v_val);
+    __pyx_r = __pyx_v_val;
+    goto __pyx_L0;
+    goto __pyx_L3;
+  }
+  /*else*/ {
+
+    /* "h5py/h5.pyx":81
+ *                     return val
+ *                 else:
+ *                     return bytes(val)             # <<<<<<<<<<<<<<
+ *             try:
+ *                 if len(val) != 2: raise TypeError()
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_INCREF(__pyx_v_val);
+    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_val);
+    __Pyx_GIVEREF(__pyx_v_val);
+    __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)(&PyBytes_Type))), ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
+    __pyx_r = __pyx_t_2;
+    __pyx_t_2 = 0;
+    goto __pyx_L0;
+  }
+  __pyx_L3:;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("h5py.h5.H5PYConfig.complex_names.__set__.handle_val", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5.pyx":74
+ *             return (handle_val(self._r_name), handle_val(self._i_name))
+ * 
+ *         def __set__(self, val):             # <<<<<<<<<<<<<<
+ *             def handle_val(val):
+ *                 if isinstance(val, unicode):
+ */
+
+static int __pyx_pf_4h5py_2h5_10H5PYConfig_13complex_names_2__set__(struct __pyx_obj_4h5py_2h5_H5PYConfig *__pyx_v_self, PyObject *__pyx_v_val) {
+  PyObject *__pyx_v_handle_val = 0;
+  PyObject *__pyx_v_r = NULL;
+  PyObject *__pyx_v_i = NULL;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  Py_ssize_t __pyx_t_5;
+  int __pyx_t_6;
+  PyObject *__pyx_t_7 = NULL;
+  int __pyx_t_8;
+  PyObject *__pyx_t_9 = NULL;
+  PyObject *__pyx_t_10 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__set__", 0);
+
+  /* "h5py/h5.pyx":75
+ * 
+ *         def __set__(self, val):
+ *             def handle_val(val):             # <<<<<<<<<<<<<<
+ *                 if isinstance(val, unicode):
+ *                     return val.encode('utf8')
+ */
+  __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4h5py_2h5_10H5PYConfig_13complex_names_7__set___1handle_val, 0, __pyx_n_s_10, NULL, __pyx_n_s_6, ((PyObject *)__pyx_k_codeobj_9)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_handle_val = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+  /* "h5py/h5.pyx":82
+ *                 else:
+ *                     return bytes(val)
+ *             try:             # <<<<<<<<<<<<<<
+ *                 if len(val) != 2: raise TypeError()
+ *                 r = handle_val(val[0])
+ */
+  {
+    __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4);
+    __Pyx_XGOTREF(__pyx_t_2);
+    __Pyx_XGOTREF(__pyx_t_3);
+    __Pyx_XGOTREF(__pyx_t_4);
+    /*try:*/ {
+
+      /* "h5py/h5.pyx":83
+ *                     return bytes(val)
+ *             try:
+ *                 if len(val) != 2: raise TypeError()             # <<<<<<<<<<<<<<
+ *                 r = handle_val(val[0])
+ *                 i = handle_val(val[1])
+ */
+      __pyx_t_5 = PyObject_Length(__pyx_v_val); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      __pyx_t_6 = (__pyx_t_5 != 2);
+      if (__pyx_t_6) {
+        __pyx_t_1 = PyObject_Call(__pyx_builtin_TypeError, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_GOTREF(__pyx_t_1);
+        __Pyx_Raise(__pyx_t_1, 0, 0, 0);
+        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        goto __pyx_L11;
+      }
+      __pyx_L11:;
+
+      /* "h5py/h5.pyx":84
+ *             try:
+ *                 if len(val) != 2: raise TypeError()
+ *                 r = handle_val(val[0])             # <<<<<<<<<<<<<<
+ *                 i = handle_val(val[1])
+ *             except Exception:
+ */
+      __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_val, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      __Pyx_GOTREF(__pyx_t_1);
+      __pyx_t_7 = __pyx_pf_4h5py_2h5_10H5PYConfig_13complex_names_7__set___handle_val(__pyx_v_handle_val, __pyx_t_1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      __Pyx_GOTREF(__pyx_t_7);
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+      __pyx_v_r = __pyx_t_7;
+      __pyx_t_7 = 0;
+
+      /* "h5py/h5.pyx":85
+ *                 if len(val) != 2: raise TypeError()
+ *                 r = handle_val(val[0])
+ *                 i = handle_val(val[1])             # <<<<<<<<<<<<<<
+ *             except Exception:
+ *                 raise TypeError("complex_names must be a length-2 sequence of strings (real, img)")
+ */
+      __pyx_t_7 = __Pyx_GetItemInt(__pyx_v_val, 1, sizeof(long), PyInt_FromLong); if (!__pyx_t_7) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      __Pyx_GOTREF(__pyx_t_7);
+      __pyx_t_1 = __pyx_pf_4h5py_2h5_10H5PYConfig_13complex_names_7__set___handle_val(__pyx_v_handle_val, __pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+      __pyx_v_i = __pyx_t_1;
+      __pyx_t_1 = 0;
+    }
+    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+    goto __pyx_L10_try_end;
+    __pyx_L3_error:;
+    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+    /* "h5py/h5.pyx":86
+ *                 r = handle_val(val[0])
+ *                 i = handle_val(val[1])
+ *             except Exception:             # <<<<<<<<<<<<<<
+ *                 raise TypeError("complex_names must be a length-2 sequence of strings (real, img)")
+ *             self._r_name = r
+ */
+    __pyx_t_8 = PyErr_ExceptionMatches(__pyx_builtin_Exception);
+    if (__pyx_t_8) {
+      __Pyx_AddTraceback("h5py.h5.H5PYConfig.complex_names.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+      if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_7, &__pyx_t_9) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_GOTREF(__pyx_t_7);
+      __Pyx_GOTREF(__pyx_t_9);
+
+      /* "h5py/h5.pyx":87
+ *                 i = handle_val(val[1])
+ *             except Exception:
+ *                 raise TypeError("complex_names must be a length-2 sequence of strings (real, img)")             # <<<<<<<<<<<<<<
+ *             self._r_name = r
+ *             self._i_name = i
+ */
+      __pyx_t_10 = PyObject_Call(__pyx_builtin_TypeError, ((PyObject *)__pyx_k_tuple_12), NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
+      __Pyx_GOTREF(__pyx_t_10);
+      __Pyx_Raise(__pyx_t_10, 0, 0, 0);
+      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+      goto __pyx_L4_exception_handled;
+    }
+    __pyx_L5_except_error:;
+    __Pyx_XGIVEREF(__pyx_t_2);
+    __Pyx_XGIVEREF(__pyx_t_3);
+    __Pyx_XGIVEREF(__pyx_t_4);
+    __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
+    goto __pyx_L1_error;
+    __pyx_L4_exception_handled:;
+    __Pyx_XGIVEREF(__pyx_t_2);
+    __Pyx_XGIVEREF(__pyx_t_3);
+    __Pyx_XGIVEREF(__pyx_t_4);
+    __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
+    __pyx_L10_try_end:;
+  }
+
+  /* "h5py/h5.pyx":88
+ *             except Exception:
+ *                 raise TypeError("complex_names must be a length-2 sequence of strings (real, img)")
+ *             self._r_name = r             # <<<<<<<<<<<<<<
+ *             self._i_name = i
+ * 
+ */
+  __Pyx_INCREF(__pyx_v_r);
+  __Pyx_GIVEREF(__pyx_v_r);
+  __Pyx_GOTREF(__pyx_v_self->_r_name);
+  __Pyx_DECREF(__pyx_v_self->_r_name);
+  __pyx_v_self->_r_name = __pyx_v_r;
+
+  /* "h5py/h5.pyx":89
+ *                 raise TypeError("complex_names must be a length-2 sequence of strings (real, img)")
+ *             self._r_name = r
+ *             self._i_name = i             # <<<<<<<<<<<<<<
+ * 
+ *     property bool_names:
+ */
+  __Pyx_INCREF(__pyx_v_i);
+  __Pyx_GIVEREF(__pyx_v_i);
+  __Pyx_GOTREF(__pyx_v_self->_i_name);
+  __Pyx_DECREF(__pyx_v_self->_i_name);
+  __pyx_v_self->_i_name = __pyx_v_i;
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_XDECREF(__pyx_t_9);
+  __Pyx_XDECREF(__pyx_t_10);
+  __Pyx_AddTraceback("h5py.h5.H5PYConfig.complex_names.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_handle_val);
+  __Pyx_XDECREF(__pyx_v_r);
+  __Pyx_XDECREF(__pyx_v_i);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_2h5_10H5PYConfig_10bool_names_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4h5py_2h5_10H5PYConfig_10bool_names_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_2h5_10H5PYConfig_10bool_names___get__(((struct __pyx_obj_4h5py_2h5_H5PYConfig *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5.pyx":96
+ *         Format is (false_name, real_name), defaulting to ('FALSE', 'TRUE').
+ *         """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return (self._f_name, self._t_name)
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_2h5_10H5PYConfig_10bool_names___get__(struct __pyx_obj_4h5py_2h5_H5PYConfig *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "h5py/h5.pyx":97
+ *         """
+ *         def __get__(self):
+ *             return (self._f_name, self._t_name)             # <<<<<<<<<<<<<<
+ * 
+ *         def __set__(self, val):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(__pyx_v_self->_f_name);
+  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_self->_f_name);
+  __Pyx_GIVEREF(__pyx_v_self->_f_name);
+  __Pyx_INCREF(__pyx_v_self->_t_name);
+  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_self->_t_name);
+  __Pyx_GIVEREF(__pyx_v_self->_t_name);
+  __pyx_r = ((PyObject *)__pyx_t_1);
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py.h5.H5PYConfig.bool_names.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static int __pyx_pw_4h5py_2h5_10H5PYConfig_10bool_names_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val); /*proto*/
+static int __pyx_pw_4h5py_2h5_10H5PYConfig_10bool_names_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_2h5_10H5PYConfig_10bool_names_2__set__(((struct __pyx_obj_4h5py_2h5_H5PYConfig *)__pyx_v_self), ((PyObject *)__pyx_v_val));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5.pyx":99
+ *             return (self._f_name, self._t_name)
+ * 
+ *         def __set__(self, val):             # <<<<<<<<<<<<<<
+ *             try:
+ *                 if len(val) != 2: raise TypeError()
+ */
+
+static int __pyx_pf_4h5py_2h5_10H5PYConfig_10bool_names_2__set__(struct __pyx_obj_4h5py_2h5_H5PYConfig *__pyx_v_self, PyObject *__pyx_v_val) {
+  PyObject *__pyx_v_f = NULL;
+  PyObject *__pyx_v_t = NULL;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  Py_ssize_t __pyx_t_4;
+  int __pyx_t_5;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  int __pyx_t_8;
+  PyObject *__pyx_t_9 = NULL;
+  PyObject *__pyx_t_10 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__set__", 0);
+
+  /* "h5py/h5.pyx":100
+ * 
+ *         def __set__(self, val):
+ *             try:             # <<<<<<<<<<<<<<
+ *                 if len(val) != 2: raise TypeError()
+ *                 f = str(val[0])
+ */
+  {
+    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
+    __Pyx_XGOTREF(__pyx_t_1);
+    __Pyx_XGOTREF(__pyx_t_2);
+    __Pyx_XGOTREF(__pyx_t_3);
+    /*try:*/ {
+
+      /* "h5py/h5.pyx":101
+ *         def __set__(self, val):
+ *             try:
+ *                 if len(val) != 2: raise TypeError()             # <<<<<<<<<<<<<<
+ *                 f = str(val[0])
+ *                 t = str(val[1])
+ */
+      __pyx_t_4 = PyObject_Length(__pyx_v_val); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      __pyx_t_5 = (__pyx_t_4 != 2);
+      if (__pyx_t_5) {
+        __pyx_t_6 = PyObject_Call(__pyx_builtin_TypeError, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_GOTREF(__pyx_t_6);
+        __Pyx_Raise(__pyx_t_6, 0, 0, 0);
+        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        goto __pyx_L11;
+      }
+      __pyx_L11:;
+
+      /* "h5py/h5.pyx":102
+ *             try:
+ *                 if len(val) != 2: raise TypeError()
+ *                 f = str(val[0])             # <<<<<<<<<<<<<<
+ *                 t = str(val[1])
+ *             except Exception:
+ */
+      __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_val, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_6) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      __Pyx_GOTREF(__pyx_t_6);
+      __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      __Pyx_GOTREF(__pyx_t_7);
+      PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6);
+      __Pyx_GIVEREF(__pyx_t_6);
+      __pyx_t_6 = 0;
+      __pyx_t_6 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_7), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      __Pyx_GOTREF(__pyx_t_6);
+      __Pyx_DECREF(((PyObject *)__pyx_t_7)); __pyx_t_7 = 0;
+      __pyx_v_f = __pyx_t_6;
+      __pyx_t_6 = 0;
+
+      /* "h5py/h5.pyx":103
+ *                 if len(val) != 2: raise TypeError()
+ *                 f = str(val[0])
+ *                 t = str(val[1])             # <<<<<<<<<<<<<<
+ *             except Exception:
+ *                 raise TypeError("bool_names must be a length-2 sequence of of names (false, true)")
+ */
+      __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_val, 1, sizeof(long), PyInt_FromLong); if (!__pyx_t_6) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      __Pyx_GOTREF(__pyx_t_6);
+      __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      __Pyx_GOTREF(__pyx_t_7);
+      PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6);
+      __Pyx_GIVEREF(__pyx_t_6);
+      __pyx_t_6 = 0;
+      __pyx_t_6 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_7), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      __Pyx_GOTREF(__pyx_t_6);
+      __Pyx_DECREF(((PyObject *)__pyx_t_7)); __pyx_t_7 = 0;
+      __pyx_v_t = __pyx_t_6;
+      __pyx_t_6 = 0;
+    }
+    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+    goto __pyx_L10_try_end;
+    __pyx_L3_error:;
+    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+
+    /* "h5py/h5.pyx":104
+ *                 f = str(val[0])
+ *                 t = str(val[1])
+ *             except Exception:             # <<<<<<<<<<<<<<
+ *                 raise TypeError("bool_names must be a length-2 sequence of of names (false, true)")
+ *             self._f_name = f
+ */
+    __pyx_t_8 = PyErr_ExceptionMatches(__pyx_builtin_Exception);
+    if (__pyx_t_8) {
+      __Pyx_AddTraceback("h5py.h5.H5PYConfig.bool_names.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+      if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_7, &__pyx_t_9) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
+      __Pyx_GOTREF(__pyx_t_6);
+      __Pyx_GOTREF(__pyx_t_7);
+      __Pyx_GOTREF(__pyx_t_9);
+
+      /* "h5py/h5.pyx":105
+ *                 t = str(val[1])
+ *             except Exception:
+ *                 raise TypeError("bool_names must be a length-2 sequence of of names (false, true)")             # <<<<<<<<<<<<<<
+ *             self._f_name = f
+ *             self._t_name = t
+ */
+      __pyx_t_10 = PyObject_Call(__pyx_builtin_TypeError, ((PyObject *)__pyx_k_tuple_14), NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
+      __Pyx_GOTREF(__pyx_t_10);
+      __Pyx_Raise(__pyx_t_10, 0, 0, 0);
+      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
+      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+      goto __pyx_L4_exception_handled;
+    }
+    __pyx_L5_except_error:;
+    __Pyx_XGIVEREF(__pyx_t_1);
+    __Pyx_XGIVEREF(__pyx_t_2);
+    __Pyx_XGIVEREF(__pyx_t_3);
+    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
+    goto __pyx_L1_error;
+    __pyx_L4_exception_handled:;
+    __Pyx_XGIVEREF(__pyx_t_1);
+    __Pyx_XGIVEREF(__pyx_t_2);
+    __Pyx_XGIVEREF(__pyx_t_3);
+    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
+    __pyx_L10_try_end:;
+  }
+
+  /* "h5py/h5.pyx":106
+ *             except Exception:
+ *                 raise TypeError("bool_names must be a length-2 sequence of of names (false, true)")
+ *             self._f_name = f             # <<<<<<<<<<<<<<
+ *             self._t_name = t
+ * 
+ */
+  __Pyx_INCREF(__pyx_v_f);
+  __Pyx_GIVEREF(__pyx_v_f);
+  __Pyx_GOTREF(__pyx_v_self->_f_name);
+  __Pyx_DECREF(__pyx_v_self->_f_name);
+  __pyx_v_self->_f_name = __pyx_v_f;
+
+  /* "h5py/h5.pyx":107
+ *                 raise TypeError("bool_names must be a length-2 sequence of of names (false, true)")
+ *             self._f_name = f
+ *             self._t_name = t             # <<<<<<<<<<<<<<
+ * 
+ *     property read_byte_strings:
+ */
+  __Pyx_INCREF(__pyx_v_t);
+  __Pyx_GIVEREF(__pyx_v_t);
+  __Pyx_GOTREF(__pyx_v_self->_t_name);
+  __Pyx_DECREF(__pyx_v_self->_t_name);
+  __pyx_v_self->_t_name = __pyx_v_t;
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_XDECREF(__pyx_t_9);
+  __Pyx_XDECREF(__pyx_t_10);
+  __Pyx_AddTraceback("h5py.h5.H5PYConfig.bool_names.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_f);
+  __Pyx_XDECREF(__pyx_v_t);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_2h5_10H5PYConfig_17read_byte_strings_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4h5py_2h5_10H5PYConfig_17read_byte_strings_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_2h5_10H5PYConfig_17read_byte_strings___get__(((struct __pyx_obj_4h5py_2h5_H5PYConfig *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5.pyx":113
+ *         as byte strings. """
+ * 
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self._bytestrings
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_2h5_10H5PYConfig_17read_byte_strings___get__(struct __pyx_obj_4h5py_2h5_H5PYConfig *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "h5py/h5.pyx":114
+ * 
+ *         def __get__(self):
+ *             return self._bytestrings             # <<<<<<<<<<<<<<
+ * 
+ *     property mpi:
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_self->_bytestrings);
+  __pyx_r = __pyx_v_self->_bytestrings;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_2h5_10H5PYConfig_3mpi_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4h5py_2h5_10H5PYConfig_3mpi_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_2h5_10H5PYConfig_3mpi___get__(((struct __pyx_obj_4h5py_2h5_H5PYConfig *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5.pyx":118
+ *     property mpi:
+ *         """ Boolean indicating if Parallel HDF5 is available """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             IF MPI:
+ *                 return True
+ */
+
+static PyObject *__pyx_pf_4h5py_2h5_10H5PYConfig_3mpi___get__(CYTHON_UNUSED struct __pyx_obj_4h5py_2h5_H5PYConfig *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "h5py/h5.pyx":122
+ *                 return True
+ *             ELSE:
+ *                 return False             # <<<<<<<<<<<<<<
+ * 
+ * cdef H5PYConfig cfg = H5PYConfig()
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py.h5.H5PYConfig.mpi.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_2h5_10H5PYConfig_7_r_name_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4h5py_2h5_10H5PYConfig_7_r_name_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_2h5_10H5PYConfig_7_r_name___get__(((struct __pyx_obj_4h5py_2h5_H5PYConfig *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5.pxd":14
+ * cdef class H5PYConfig:
+ * 
+ *     cdef readonly object _r_name             # <<<<<<<<<<<<<<
+ *     cdef readonly object _i_name
+ *     cdef readonly object _f_name
+ */
+
+static PyObject *__pyx_pf_4h5py_2h5_10H5PYConfig_7_r_name___get__(struct __pyx_obj_4h5py_2h5_H5PYConfig *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_self->_r_name);
+  __pyx_r = __pyx_v_self->_r_name;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_2h5_10H5PYConfig_7_i_name_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4h5py_2h5_10H5PYConfig_7_i_name_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_2h5_10H5PYConfig_7_i_name___get__(((struct __pyx_obj_4h5py_2h5_H5PYConfig *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5.pxd":15
+ * 
+ *     cdef readonly object _r_name
+ *     cdef readonly object _i_name             # <<<<<<<<<<<<<<
+ *     cdef readonly object _f_name
+ *     cdef readonly object _t_name
+ */
+
+static PyObject *__pyx_pf_4h5py_2h5_10H5PYConfig_7_i_name___get__(struct __pyx_obj_4h5py_2h5_H5PYConfig *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_self->_i_name);
+  __pyx_r = __pyx_v_self->_i_name;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_2h5_10H5PYConfig_7_f_name_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4h5py_2h5_10H5PYConfig_7_f_name_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_2h5_10H5PYConfig_7_f_name___get__(((struct __pyx_obj_4h5py_2h5_H5PYConfig *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5.pxd":16
+ *     cdef readonly object _r_name
+ *     cdef readonly object _i_name
+ *     cdef readonly object _f_name             # <<<<<<<<<<<<<<
+ *     cdef readonly object _t_name
+ *     cdef readonly object API_16
+ */
+
+static PyObject *__pyx_pf_4h5py_2h5_10H5PYConfig_7_f_name___get__(struct __pyx_obj_4h5py_2h5_H5PYConfig *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_self->_f_name);
+  __pyx_r = __pyx_v_self->_f_name;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_2h5_10H5PYConfig_7_t_name_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4h5py_2h5_10H5PYConfig_7_t_name_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_2h5_10H5PYConfig_7_t_name___get__(((struct __pyx_obj_4h5py_2h5_H5PYConfig *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5.pxd":17
+ *     cdef readonly object _i_name
+ *     cdef readonly object _f_name
+ *     cdef readonly object _t_name             # <<<<<<<<<<<<<<
+ *     cdef readonly object API_16
+ *     cdef readonly object API_18
+ */
+
+static PyObject *__pyx_pf_4h5py_2h5_10H5PYConfig_7_t_name___get__(struct __pyx_obj_4h5py_2h5_H5PYConfig *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_self->_t_name);
+  __pyx_r = __pyx_v_self->_t_name;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_2h5_10H5PYConfig_6API_16_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4h5py_2h5_10H5PYConfig_6API_16_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_2h5_10H5PYConfig_6API_16___get__(((struct __pyx_obj_4h5py_2h5_H5PYConfig *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5.pxd":18
+ *     cdef readonly object _f_name
+ *     cdef readonly object _t_name
+ *     cdef readonly object API_16             # <<<<<<<<<<<<<<
+ *     cdef readonly object API_18
+ *     cdef readonly object _bytestrings
+ */
+
+static PyObject *__pyx_pf_4h5py_2h5_10H5PYConfig_6API_16___get__(struct __pyx_obj_4h5py_2h5_H5PYConfig *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_self->API_16);
+  __pyx_r = __pyx_v_self->API_16;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_2h5_10H5PYConfig_6API_18_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4h5py_2h5_10H5PYConfig_6API_18_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_2h5_10H5PYConfig_6API_18___get__(((struct __pyx_obj_4h5py_2h5_H5PYConfig *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5.pxd":19
+ *     cdef readonly object _t_name
+ *     cdef readonly object API_16
+ *     cdef readonly object API_18             # <<<<<<<<<<<<<<
+ *     cdef readonly object _bytestrings
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_2h5_10H5PYConfig_6API_18___get__(struct __pyx_obj_4h5py_2h5_H5PYConfig *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_self->API_18);
+  __pyx_r = __pyx_v_self->API_18;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_2h5_10H5PYConfig_12_bytestrings_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4h5py_2h5_10H5PYConfig_12_bytestrings_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_2h5_10H5PYConfig_12_bytestrings___get__(((struct __pyx_obj_4h5py_2h5_H5PYConfig *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5.pxd":20
+ *     cdef readonly object API_16
+ *     cdef readonly object API_18
+ *     cdef readonly object _bytestrings             # <<<<<<<<<<<<<<
+ * 
+ * cpdef H5PYConfig get_config()
+ */
+
+static PyObject *__pyx_pf_4h5py_2h5_10H5PYConfig_12_bytestrings___get__(struct __pyx_obj_4h5py_2h5_H5PYConfig *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_self->_bytestrings);
+  __pyx_r = __pyx_v_self->_bytestrings;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5.pyx":126
+ * cdef H5PYConfig cfg = H5PYConfig()
+ * 
+ * cpdef H5PYConfig get_config():             # <<<<<<<<<<<<<<
+ *     """() => H5PYConfig
+ * 
+ */
+
+static PyObject *__pyx_pw_4h5py_2h5_1get_config(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static struct __pyx_obj_4h5py_2h5_H5PYConfig *__pyx_f_4h5py_2h5_get_config(CYTHON_UNUSED int __pyx_skip_dispatch) {
+  struct __pyx_obj_4h5py_2h5_H5PYConfig *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_config", 0);
+
+  /* "h5py/h5.pyx":131
+ *     Get a reference to the global library configuration object.
+ *     """
+ *     return cfg             # <<<<<<<<<<<<<<
+ * 
+ * def get_libversion():
+ */
+  __Pyx_XDECREF(((PyObject *)__pyx_r));
+  __Pyx_INCREF(((PyObject *)__pyx_v_4h5py_2h5_cfg));
+  __pyx_r = __pyx_v_4h5py_2h5_cfg;
+  goto __pyx_L0;
+
+  __pyx_r = ((struct __pyx_obj_4h5py_2h5_H5PYConfig *)Py_None); __Pyx_INCREF(Py_None);
+  __pyx_L0:;
+  __Pyx_XGIVEREF((PyObject *)__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_2h5_1get_config(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_2h5_get_config[] = "() => H5PYConfig\n\n    Get a reference to the global library configuration object.\n    ";
+static PyObject *__pyx_pw_4h5py_2h5_1get_config(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_config (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_2h5_get_config(__pyx_self);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5.pyx":126
+ * cdef H5PYConfig cfg = H5PYConfig()
+ * 
+ * cpdef H5PYConfig get_config():             # <<<<<<<<<<<<<<
+ *     """() => H5PYConfig
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_2h5_get_config(CYTHON_UNUSED PyObject *__pyx_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_config", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = ((PyObject *)__pyx_f_4h5py_2h5_get_config(0)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py.h5.get_config", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_2h5_3get_libversion(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_2h5_2get_libversion[] = " () => TUPLE (major, minor, release)\n\n        Retrieve the HDF5 library version as a 3-tuple.\n    ";
+static PyMethodDef __pyx_mdef_4h5py_2h5_3get_libversion = {__Pyx_NAMESTR("get_libversion"), (PyCFunction)__pyx_pw_4h5py_2h5_3get_libversion, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_2h5_2get_libversion)};
+static PyObject *__pyx_pw_4h5py_2h5_3get_libversion(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_libversion (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_2h5_2get_libversion(__pyx_self);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5.pyx":133
+ *     return cfg
+ * 
+ * def get_libversion():             # <<<<<<<<<<<<<<
+ *     """ () => TUPLE (major, minor, release)
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_2h5_2get_libversion(CYTHON_UNUSED PyObject *__pyx_self) {
+  unsigned int __pyx_v_major;
+  unsigned int __pyx_v_minor;
+  unsigned int __pyx_v_release;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_libversion", 0);
+
+  /* "h5py/h5.pyx":143
+ *     cdef herr_t retval
+ * 
+ *     H5get_libversion(&major, &minor, &release)             # <<<<<<<<<<<<<<
+ * 
+ *     return (major, minor, release)
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5get_libversion((&__pyx_v_major), (&__pyx_v_minor), (&__pyx_v_release)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5.pyx":145
+ *     H5get_libversion(&major, &minor, &release)
+ * 
+ *     return (major, minor, release)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_2 = PyLong_FromUnsignedLong(__pyx_v_major); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = PyLong_FromUnsignedLong(__pyx_v_minor); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_4 = PyLong_FromUnsignedLong(__pyx_v_release); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2);
+  __Pyx_GIVEREF(__pyx_t_2);
+  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_3);
+  PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_t_4);
+  __Pyx_GIVEREF(__pyx_t_4);
+  __pyx_t_2 = 0;
+  __pyx_t_3 = 0;
+  __pyx_t_4 = 0;
+  __pyx_r = ((PyObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_AddTraceback("h5py.h5.get_libversion", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_tp_new_4h5py_2h5_H5PYConfig(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
+  struct __pyx_obj_4h5py_2h5_H5PYConfig *p;
+  PyObject *o = (*t->tp_alloc)(t, 0);
+  if (!o) return 0;
+  p = ((struct __pyx_obj_4h5py_2h5_H5PYConfig *)o);
+  p->_r_name = Py_None; Py_INCREF(Py_None);
+  p->_i_name = Py_None; Py_INCREF(Py_None);
+  p->_f_name = Py_None; Py_INCREF(Py_None);
+  p->_t_name = Py_None; Py_INCREF(Py_None);
+  p->API_16 = Py_None; Py_INCREF(Py_None);
+  p->API_18 = Py_None; Py_INCREF(Py_None);
+  p->_bytestrings = Py_None; Py_INCREF(Py_None);
+  return o;
+}
+
+static void __pyx_tp_dealloc_4h5py_2h5_H5PYConfig(PyObject *o) {
+  struct __pyx_obj_4h5py_2h5_H5PYConfig *p = (struct __pyx_obj_4h5py_2h5_H5PYConfig *)o;
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->_r_name);
+  Py_CLEAR(p->_i_name);
+  Py_CLEAR(p->_f_name);
+  Py_CLEAR(p->_t_name);
+  Py_CLEAR(p->API_16);
+  Py_CLEAR(p->API_18);
+  Py_CLEAR(p->_bytestrings);
+  PyObject_GC_Track(o);
+  (*Py_TYPE(o)->tp_free)(o);
+}
+
+static int __pyx_tp_traverse_4h5py_2h5_H5PYConfig(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_4h5py_2h5_H5PYConfig *p = (struct __pyx_obj_4h5py_2h5_H5PYConfig *)o;
+  if (p->_r_name) {
+    e = (*v)(p->_r_name, a); if (e) return e;
+  }
+  if (p->_i_name) {
+    e = (*v)(p->_i_name, a); if (e) return e;
+  }
+  if (p->_f_name) {
+    e = (*v)(p->_f_name, a); if (e) return e;
+  }
+  if (p->_t_name) {
+    e = (*v)(p->_t_name, a); if (e) return e;
+  }
+  if (p->API_16) {
+    e = (*v)(p->API_16, a); if (e) return e;
+  }
+  if (p->API_18) {
+    e = (*v)(p->API_18, a); if (e) return e;
+  }
+  if (p->_bytestrings) {
+    e = (*v)(p->_bytestrings, a); if (e) return e;
+  }
+  return 0;
+}
+
+static int __pyx_tp_clear_4h5py_2h5_H5PYConfig(PyObject *o) {
+  struct __pyx_obj_4h5py_2h5_H5PYConfig *p = (struct __pyx_obj_4h5py_2h5_H5PYConfig *)o;
+  PyObject* tmp;
+  tmp = ((PyObject*)p->_r_name);
+  p->_r_name = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->_i_name);
+  p->_i_name = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->_f_name);
+  p->_f_name = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->_t_name);
+  p->_t_name = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->API_16);
+  p->API_16 = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->API_18);
+  p->API_18 = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->_bytestrings);
+  p->_bytestrings = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  return 0;
+}
+
+static PyObject *__pyx_getprop_4h5py_2h5_10H5PYConfig_complex_names(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_4h5py_2h5_10H5PYConfig_13complex_names_1__get__(o);
+}
+
+static int __pyx_setprop_4h5py_2h5_10H5PYConfig_complex_names(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
+  if (v) {
+    return __pyx_pw_4h5py_2h5_10H5PYConfig_13complex_names_3__set__(o, v);
+  }
+  else {
+    PyErr_SetString(PyExc_NotImplementedError, "__del__");
+    return -1;
+  }
+}
+
+static PyObject *__pyx_getprop_4h5py_2h5_10H5PYConfig_bool_names(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_4h5py_2h5_10H5PYConfig_10bool_names_1__get__(o);
+}
+
+static int __pyx_setprop_4h5py_2h5_10H5PYConfig_bool_names(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
+  if (v) {
+    return __pyx_pw_4h5py_2h5_10H5PYConfig_10bool_names_3__set__(o, v);
+  }
+  else {
+    PyErr_SetString(PyExc_NotImplementedError, "__del__");
+    return -1;
+  }
+}
+
+static PyObject *__pyx_getprop_4h5py_2h5_10H5PYConfig_read_byte_strings(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_4h5py_2h5_10H5PYConfig_17read_byte_strings_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_4h5py_2h5_10H5PYConfig_mpi(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_4h5py_2h5_10H5PYConfig_3mpi_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_4h5py_2h5_10H5PYConfig__r_name(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_4h5py_2h5_10H5PYConfig_7_r_name_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_4h5py_2h5_10H5PYConfig__i_name(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_4h5py_2h5_10H5PYConfig_7_i_name_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_4h5py_2h5_10H5PYConfig__f_name(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_4h5py_2h5_10H5PYConfig_7_f_name_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_4h5py_2h5_10H5PYConfig__t_name(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_4h5py_2h5_10H5PYConfig_7_t_name_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_4h5py_2h5_10H5PYConfig_API_16(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_4h5py_2h5_10H5PYConfig_6API_16_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_4h5py_2h5_10H5PYConfig_API_18(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_4h5py_2h5_10H5PYConfig_6API_18_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_4h5py_2h5_10H5PYConfig__bytestrings(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_4h5py_2h5_10H5PYConfig_12_bytestrings_1__get__(o);
+}
+
+static PyMethodDef __pyx_methods_4h5py_2h5_H5PYConfig[] = {
+  {0, 0, 0, 0}
+};
+
+static struct PyGetSetDef __pyx_getsets_4h5py_2h5_H5PYConfig[] = {
+  {(char *)"complex_names", __pyx_getprop_4h5py_2h5_10H5PYConfig_complex_names, __pyx_setprop_4h5py_2h5_10H5PYConfig_complex_names, __Pyx_DOCSTR(__pyx_k_15), 0},
+  {(char *)"bool_names", __pyx_getprop_4h5py_2h5_10H5PYConfig_bool_names, __pyx_setprop_4h5py_2h5_10H5PYConfig_bool_names, __Pyx_DOCSTR(__pyx_k_16), 0},
+  {(char *)"read_byte_strings", __pyx_getprop_4h5py_2h5_10H5PYConfig_read_byte_strings, 0, __Pyx_DOCSTR(__pyx_k_17), 0},
+  {(char *)"mpi", __pyx_getprop_4h5py_2h5_10H5PYConfig_mpi, 0, __Pyx_DOCSTR(__pyx_k_18), 0},
+  {(char *)"_r_name", __pyx_getprop_4h5py_2h5_10H5PYConfig__r_name, 0, 0, 0},
+  {(char *)"_i_name", __pyx_getprop_4h5py_2h5_10H5PYConfig__i_name, 0, 0, 0},
+  {(char *)"_f_name", __pyx_getprop_4h5py_2h5_10H5PYConfig__f_name, 0, 0, 0},
+  {(char *)"_t_name", __pyx_getprop_4h5py_2h5_10H5PYConfig__t_name, 0, 0, 0},
+  {(char *)"API_16", __pyx_getprop_4h5py_2h5_10H5PYConfig_API_16, 0, 0, 0},
+  {(char *)"API_18", __pyx_getprop_4h5py_2h5_10H5PYConfig_API_18, 0, 0, 0},
+  {(char *)"_bytestrings", __pyx_getprop_4h5py_2h5_10H5PYConfig__bytestrings, 0, 0, 0},
+  {0, 0, 0, 0, 0}
+};
+
+static PyNumberMethods __pyx_tp_as_number_H5PYConfig = {
+  0, /*nb_add*/
+  0, /*nb_subtract*/
+  0, /*nb_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_divide*/
+  #endif
+  0, /*nb_remainder*/
+  0, /*nb_divmod*/
+  0, /*nb_power*/
+  0, /*nb_negative*/
+  0, /*nb_positive*/
+  0, /*nb_absolute*/
+  0, /*nb_nonzero*/
+  0, /*nb_invert*/
+  0, /*nb_lshift*/
+  0, /*nb_rshift*/
+  0, /*nb_and*/
+  0, /*nb_xor*/
+  0, /*nb_or*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_coerce*/
+  #endif
+  0, /*nb_int*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_long*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*nb_float*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_oct*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_hex*/
+  #endif
+  0, /*nb_inplace_add*/
+  0, /*nb_inplace_subtract*/
+  0, /*nb_inplace_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_inplace_divide*/
+  #endif
+  0, /*nb_inplace_remainder*/
+  0, /*nb_inplace_power*/
+  0, /*nb_inplace_lshift*/
+  0, /*nb_inplace_rshift*/
+  0, /*nb_inplace_and*/
+  0, /*nb_inplace_xor*/
+  0, /*nb_inplace_or*/
+  0, /*nb_floor_divide*/
+  0, /*nb_true_divide*/
+  0, /*nb_inplace_floor_divide*/
+  0, /*nb_inplace_true_divide*/
+  #if PY_VERSION_HEX >= 0x02050000
+  0, /*nb_index*/
+  #endif
+};
+
+static PySequenceMethods __pyx_tp_as_sequence_H5PYConfig = {
+  0, /*sq_length*/
+  0, /*sq_concat*/
+  0, /*sq_repeat*/
+  0, /*sq_item*/
+  0, /*sq_slice*/
+  0, /*sq_ass_item*/
+  0, /*sq_ass_slice*/
+  0, /*sq_contains*/
+  0, /*sq_inplace_concat*/
+  0, /*sq_inplace_repeat*/
+};
+
+static PyMappingMethods __pyx_tp_as_mapping_H5PYConfig = {
+  0, /*mp_length*/
+  0, /*mp_subscript*/
+  0, /*mp_ass_subscript*/
+};
+
+static PyBufferProcs __pyx_tp_as_buffer_H5PYConfig = {
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getreadbuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getwritebuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getsegcount*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getcharbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_getbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_releasebuffer*/
+  #endif
+};
+
+static PyTypeObject __pyx_type_4h5py_2h5_H5PYConfig = {
+  PyVarObject_HEAD_INIT(0, 0)
+  __Pyx_NAMESTR("h5py.h5.H5PYConfig"), /*tp_name*/
+  sizeof(struct __pyx_obj_4h5py_2h5_H5PYConfig), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_4h5py_2h5_H5PYConfig, /*tp_dealloc*/
+  0, /*tp_print*/
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*tp_repr*/
+  &__pyx_tp_as_number_H5PYConfig, /*tp_as_number*/
+  &__pyx_tp_as_sequence_H5PYConfig, /*tp_as_sequence*/
+  &__pyx_tp_as_mapping_H5PYConfig, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  &__pyx_tp_as_buffer_H5PYConfig, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+  __Pyx_DOCSTR("\n        Provides runtime access to global library settings.  You retrieve the\n        master copy of this object by calling h5py.get_config().\n\n        complex_names (tuple, r/w)\n            Settable 2-tuple controlling how complex numbers are saved.\n            Defaults to ('r','i').\n\n        bool_names (tuple, r/w)\n            Settable 2-tuple controlling the HDF5 enum names used for boolean\n            values.  Defaults to ('FALSE', 'TRUE') for values 0 and  [...]
+  __pyx_tp_traverse_4h5py_2h5_H5PYConfig, /*tp_traverse*/
+  __pyx_tp_clear_4h5py_2h5_H5PYConfig, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_4h5py_2h5_H5PYConfig, /*tp_methods*/
+  0, /*tp_members*/
+  __pyx_getsets_4h5py_2h5_H5PYConfig, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  0, /*tp_dictoffset*/
+  __pyx_pw_4h5py_2h5_10H5PYConfig_1__init__, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_4h5py_2h5_H5PYConfig, /*tp_new*/
+  0, /*tp_free*/
+  0, /*tp_is_gc*/
+  0, /*tp_bases*/
+  0, /*tp_mro*/
+  0, /*tp_cache*/
+  0, /*tp_subclasses*/
+  0, /*tp_weaklist*/
+  0, /*tp_del*/
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*tp_version_tag*/
+  #endif
+};
+
+static PyObject *__pyx_tp_new_4h5py_2h5___pyx_scope_struct____get__(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
+  struct __pyx_obj_4h5py_2h5___pyx_scope_struct____get__ *p;
+  PyObject *o = (*t->tp_alloc)(t, 0);
+  if (!o) return 0;
+  p = ((struct __pyx_obj_4h5py_2h5___pyx_scope_struct____get__ *)o);
+  p->__pyx_v_sys = 0;
+  return o;
+}
+
+static void __pyx_tp_dealloc_4h5py_2h5___pyx_scope_struct____get__(PyObject *o) {
+  struct __pyx_obj_4h5py_2h5___pyx_scope_struct____get__ *p = (struct __pyx_obj_4h5py_2h5___pyx_scope_struct____get__ *)o;
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->__pyx_v_sys);
+  PyObject_GC_Track(o);
+  (*Py_TYPE(o)->tp_free)(o);
+}
+
+static int __pyx_tp_traverse_4h5py_2h5___pyx_scope_struct____get__(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_4h5py_2h5___pyx_scope_struct____get__ *p = (struct __pyx_obj_4h5py_2h5___pyx_scope_struct____get__ *)o;
+  if (p->__pyx_v_sys) {
+    e = (*v)(p->__pyx_v_sys, a); if (e) return e;
+  }
+  return 0;
+}
+
+static int __pyx_tp_clear_4h5py_2h5___pyx_scope_struct____get__(PyObject *o) {
+  struct __pyx_obj_4h5py_2h5___pyx_scope_struct____get__ *p = (struct __pyx_obj_4h5py_2h5___pyx_scope_struct____get__ *)o;
+  PyObject* tmp;
+  tmp = ((PyObject*)p->__pyx_v_sys);
+  p->__pyx_v_sys = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  return 0;
+}
+
+static PyMethodDef __pyx_methods_4h5py_2h5___pyx_scope_struct____get__[] = {
+  {0, 0, 0, 0}
+};
+
+static PyNumberMethods __pyx_tp_as_number___pyx_scope_struct____get__ = {
+  0, /*nb_add*/
+  0, /*nb_subtract*/
+  0, /*nb_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_divide*/
+  #endif
+  0, /*nb_remainder*/
+  0, /*nb_divmod*/
+  0, /*nb_power*/
+  0, /*nb_negative*/
+  0, /*nb_positive*/
+  0, /*nb_absolute*/
+  0, /*nb_nonzero*/
+  0, /*nb_invert*/
+  0, /*nb_lshift*/
+  0, /*nb_rshift*/
+  0, /*nb_and*/
+  0, /*nb_xor*/
+  0, /*nb_or*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_coerce*/
+  #endif
+  0, /*nb_int*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_long*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*nb_float*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_oct*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_hex*/
+  #endif
+  0, /*nb_inplace_add*/
+  0, /*nb_inplace_subtract*/
+  0, /*nb_inplace_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_inplace_divide*/
+  #endif
+  0, /*nb_inplace_remainder*/
+  0, /*nb_inplace_power*/
+  0, /*nb_inplace_lshift*/
+  0, /*nb_inplace_rshift*/
+  0, /*nb_inplace_and*/
+  0, /*nb_inplace_xor*/
+  0, /*nb_inplace_or*/
+  0, /*nb_floor_divide*/
+  0, /*nb_true_divide*/
+  0, /*nb_inplace_floor_divide*/
+  0, /*nb_inplace_true_divide*/
+  #if PY_VERSION_HEX >= 0x02050000
+  0, /*nb_index*/
+  #endif
+};
+
+static PySequenceMethods __pyx_tp_as_sequence___pyx_scope_struct____get__ = {
+  0, /*sq_length*/
+  0, /*sq_concat*/
+  0, /*sq_repeat*/
+  0, /*sq_item*/
+  0, /*sq_slice*/
+  0, /*sq_ass_item*/
+  0, /*sq_ass_slice*/
+  0, /*sq_contains*/
+  0, /*sq_inplace_concat*/
+  0, /*sq_inplace_repeat*/
+};
+
+static PyMappingMethods __pyx_tp_as_mapping___pyx_scope_struct____get__ = {
+  0, /*mp_length*/
+  0, /*mp_subscript*/
+  0, /*mp_ass_subscript*/
+};
+
+static PyBufferProcs __pyx_tp_as_buffer___pyx_scope_struct____get__ = {
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getreadbuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getwritebuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getsegcount*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getcharbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_getbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_releasebuffer*/
+  #endif
+};
+
+static PyTypeObject __pyx_type_4h5py_2h5___pyx_scope_struct____get__ = {
+  PyVarObject_HEAD_INIT(0, 0)
+  __Pyx_NAMESTR("h5py.h5.__pyx_scope_struct____get__"), /*tp_name*/
+  sizeof(struct __pyx_obj_4h5py_2h5___pyx_scope_struct____get__), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_4h5py_2h5___pyx_scope_struct____get__, /*tp_dealloc*/
+  0, /*tp_print*/
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*tp_repr*/
+  &__pyx_tp_as_number___pyx_scope_struct____get__, /*tp_as_number*/
+  &__pyx_tp_as_sequence___pyx_scope_struct____get__, /*tp_as_sequence*/
+  &__pyx_tp_as_mapping___pyx_scope_struct____get__, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  &__pyx_tp_as_buffer___pyx_scope_struct____get__, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_4h5py_2h5___pyx_scope_struct____get__, /*tp_traverse*/
+  __pyx_tp_clear_4h5py_2h5___pyx_scope_struct____get__, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_4h5py_2h5___pyx_scope_struct____get__, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  0, /*tp_dictoffset*/
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_4h5py_2h5___pyx_scope_struct____get__, /*tp_new*/
+  0, /*tp_free*/
+  0, /*tp_is_gc*/
+  0, /*tp_bases*/
+  0, /*tp_mro*/
+  0, /*tp_cache*/
+  0, /*tp_subclasses*/
+  0, /*tp_weaklist*/
+  0, /*tp_del*/
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*tp_version_tag*/
+  #endif
+};
+
+static PyMethodDef __pyx_methods[] = {
+  {__Pyx_NAMESTR("get_config"), (PyCFunction)__pyx_pw_4h5py_2h5_1get_config, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_2h5_get_config)},
+  {0, 0, 0, 0}
+};
+
+#if PY_MAJOR_VERSION >= 3
+static struct PyModuleDef __pyx_moduledef = {
+  #if PY_VERSION_HEX < 0x03020000
+    { PyObject_HEAD_INIT(NULL) NULL, 0, NULL },
+  #else
+    PyModuleDef_HEAD_INIT,
+  #endif
+    __Pyx_NAMESTR("h5"),
+    0, /* m_doc */
+    -1, /* m_size */
+    __pyx_methods /* m_methods */,
+    NULL, /* m_reload */
+    NULL, /* m_traverse */
+    NULL, /* m_clear */
+    NULL /* m_free */
+};
+#endif
+
+static __Pyx_StringTabEntry __pyx_string_tab[] = {
+  {&__pyx_n_s_10, __pyx_k_10, sizeof(__pyx_k_10), 0, 0, 1, 1},
+  {&__pyx_kp_s_11, __pyx_k_11, sizeof(__pyx_k_11), 0, 0, 1, 0},
+  {&__pyx_kp_s_13, __pyx_k_13, sizeof(__pyx_k_13), 0, 0, 1, 0},
+  {&__pyx_n_s_21, __pyx_k_21, sizeof(__pyx_k_21), 0, 0, 1, 1},
+  {&__pyx_n_s_24, __pyx_k_24, sizeof(__pyx_k_24), 0, 0, 1, 1},
+  {&__pyx_n_s_27, __pyx_k_27, sizeof(__pyx_k_27), 0, 0, 1, 1},
+  {&__pyx_n_s_30, __pyx_k_30, sizeof(__pyx_k_30), 0, 0, 1, 1},
+  {&__pyx_n_s_33, __pyx_k_33, sizeof(__pyx_k_33), 0, 0, 1, 1},
+  {&__pyx_kp_s_4, __pyx_k_4, sizeof(__pyx_k_4), 0, 0, 1, 0},
+  {&__pyx_n_s_5, __pyx_k_5, sizeof(__pyx_k_5), 0, 0, 1, 1},
+  {&__pyx_n_s_6, __pyx_k_6, sizeof(__pyx_k_6), 0, 0, 1, 1},
+  {&__pyx_kp_s__3, __pyx_k__3, sizeof(__pyx_k__3), 0, 0, 1, 0},
+  {&__pyx_n_s__ByteStringContext, __pyx_k__ByteStringContext, sizeof(__pyx_k__ByteStringContext), 0, 0, 1, 1},
+  {&__pyx_n_s__Exception, __pyx_k__Exception, sizeof(__pyx_k__Exception), 0, 0, 1, 1},
+  {&__pyx_n_b__FALSE, __pyx_k__FALSE, sizeof(__pyx_k__FALSE), 0, 0, 0, 1},
+  {&__pyx_n_s__INDEX_CRT_ORDER, __pyx_k__INDEX_CRT_ORDER, sizeof(__pyx_k__INDEX_CRT_ORDER), 0, 0, 1, 1},
+  {&__pyx_n_s__INDEX_NAME, __pyx_k__INDEX_NAME, sizeof(__pyx_k__INDEX_NAME), 0, 0, 1, 1},
+  {&__pyx_n_s__ITER_DEC, __pyx_k__ITER_DEC, sizeof(__pyx_k__ITER_DEC), 0, 0, 1, 1},
+  {&__pyx_n_s__ITER_INC, __pyx_k__ITER_INC, sizeof(__pyx_k__ITER_INC), 0, 0, 1, 1},
+  {&__pyx_n_s__ITER_NATIVE, __pyx_k__ITER_NATIVE, sizeof(__pyx_k__ITER_NATIVE), 0, 0, 1, 1},
+  {&__pyx_n_b__TRUE, __pyx_k__TRUE, sizeof(__pyx_k__TRUE), 0, 0, 0, 1},
+  {&__pyx_n_s__TypeError, __pyx_k__TypeError, sizeof(__pyx_k__TypeError), 0, 0, 1, 1},
+  {&__pyx_n_s____bool__, __pyx_k____bool__, sizeof(__pyx_k____bool__), 0, 0, 1, 1},
+  {&__pyx_n_s____enter__, __pyx_k____enter__, sizeof(__pyx_k____enter__), 0, 0, 1, 1},
+  {&__pyx_n_s____exit__, __pyx_k____exit__, sizeof(__pyx_k____exit__), 0, 0, 1, 1},
+  {&__pyx_n_s____init__, __pyx_k____init__, sizeof(__pyx_k____init__), 0, 0, 1, 1},
+  {&__pyx_n_s____main__, __pyx_k____main__, sizeof(__pyx_k____main__), 0, 0, 1, 1},
+  {&__pyx_n_s____nonzero__, __pyx_k____nonzero__, sizeof(__pyx_k____nonzero__), 0, 0, 1, 1},
+  {&__pyx_n_s____test__, __pyx_k____test__, sizeof(__pyx_k____test__), 0, 0, 1, 1},
+  {&__pyx_n_s___readbytes, __pyx_k___readbytes, sizeof(__pyx_k___readbytes), 0, 0, 1, 1},
+  {&__pyx_n_s__args, __pyx_k__args, sizeof(__pyx_k__args), 0, 0, 1, 1},
+  {&__pyx_n_s__decode, __pyx_k__decode, sizeof(__pyx_k__decode), 0, 0, 1, 1},
+  {&__pyx_n_s__encode, __pyx_k__encode, sizeof(__pyx_k__encode), 0, 0, 1, 1},
+  {&__pyx_n_s__get_libversion, __pyx_k__get_libversion, sizeof(__pyx_k__get_libversion), 0, 0, 1, 1},
+  {&__pyx_n_s__handle_val, __pyx_k__handle_val, sizeof(__pyx_k__handle_val), 0, 0, 1, 1},
+  {&__pyx_n_b__i, __pyx_k__i, sizeof(__pyx_k__i), 0, 0, 0, 1},
+  {&__pyx_n_s__major, __pyx_k__major, sizeof(__pyx_k__major), 0, 0, 1, 1},
+  {&__pyx_n_s__minor, __pyx_k__minor, sizeof(__pyx_k__minor), 0, 0, 1, 1},
+  {&__pyx_n_s__object, __pyx_k__object, sizeof(__pyx_k__object), 0, 0, 1, 1},
+  {&__pyx_n_b__r, __pyx_k__r, sizeof(__pyx_k__r), 0, 0, 0, 1},
+  {&__pyx_n_s__release, __pyx_k__release, sizeof(__pyx_k__release), 0, 0, 1, 1},
+  {&__pyx_n_s__retval, __pyx_k__retval, sizeof(__pyx_k__retval), 0, 0, 1, 1},
+  {&__pyx_n_s__self, __pyx_k__self, sizeof(__pyx_k__self), 0, 0, 1, 1},
+  {&__pyx_n_s__sys, __pyx_k__sys, sizeof(__pyx_k__sys), 0, 0, 1, 1},
+  {&__pyx_n_s__utf8, __pyx_k__utf8, sizeof(__pyx_k__utf8), 0, 0, 1, 1},
+  {&__pyx_n_s__val, __pyx_k__val, sizeof(__pyx_k__val), 0, 0, 1, 1},
+  {&__pyx_n_s__version, __pyx_k__version, sizeof(__pyx_k__version), 0, 0, 1, 1},
+  {0, 0, 0, 0, 0, 0, 0}
+};
+static int __Pyx_InitCachedBuiltins(void) {
+  __pyx_builtin_object = __Pyx_GetName(__pyx_b, __pyx_n_s__object); if (!__pyx_builtin_object) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_builtin_TypeError = __Pyx_GetName(__pyx_b, __pyx_n_s__TypeError); if (!__pyx_builtin_TypeError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_builtin_Exception = __Pyx_GetName(__pyx_b, __pyx_n_s__Exception); if (!__pyx_builtin_Exception) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  return 0;
+  __pyx_L1_error:;
+  return -1;
+}
+
+static int __Pyx_InitCachedConstants(void) {
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0);
+
+  /* "h5py/h5.pyx":70
+ *             def handle_val(val):
+ *                 if sys.version[0] == '3':
+ *                     return val.decode('utf8')             # <<<<<<<<<<<<<<
+ *                 return val
+ *             return (handle_val(self._r_name), handle_val(self._i_name))
+ */
+  __pyx_k_tuple_1 = PyTuple_Pack(1, ((PyObject *)__pyx_n_s__utf8)); if (unlikely(!__pyx_k_tuple_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_1);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_1));
+
+  /* "h5py/h5.pyx":68
+ *         def __get__(self):
+ *             import sys
+ *             def handle_val(val):             # <<<<<<<<<<<<<<
+ *                 if sys.version[0] == '3':
+ *                     return val.decode('utf8')
+ */
+  __pyx_k_tuple_2 = PyTuple_Pack(1, ((PyObject *)__pyx_n_s__val)); if (unlikely(!__pyx_k_tuple_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_2);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_2));
+  __pyx_k_codeobj_3 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_2, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_4, __pyx_n_s__handle_val, 68, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5.pyx":77
+ *             def handle_val(val):
+ *                 if isinstance(val, unicode):
+ *                     return val.encode('utf8')             # <<<<<<<<<<<<<<
+ *                 elif isinstance(val, bytes):
+ *                     return val
+ */
+  __pyx_k_tuple_7 = PyTuple_Pack(1, ((PyObject *)__pyx_n_s__utf8)); if (unlikely(!__pyx_k_tuple_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_7);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_7));
+
+  /* "h5py/h5.pyx":75
+ * 
+ *         def __set__(self, val):
+ *             def handle_val(val):             # <<<<<<<<<<<<<<
+ *                 if isinstance(val, unicode):
+ *                     return val.encode('utf8')
+ */
+  __pyx_k_tuple_8 = PyTuple_Pack(1, ((PyObject *)__pyx_n_s__val)); if (unlikely(!__pyx_k_tuple_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_8);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_8));
+  __pyx_k_codeobj_9 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_8, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_4, __pyx_n_s__handle_val, 75, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5.pyx":87
+ *                 i = handle_val(val[1])
+ *             except Exception:
+ *                 raise TypeError("complex_names must be a length-2 sequence of strings (real, img)")             # <<<<<<<<<<<<<<
+ *             self._r_name = r
+ *             self._i_name = i
+ */
+  __pyx_k_tuple_12 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_11)); if (unlikely(!__pyx_k_tuple_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_12);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_12));
+
+  /* "h5py/h5.pyx":105
+ *                 t = str(val[1])
+ *             except Exception:
+ *                 raise TypeError("bool_names must be a length-2 sequence of of names (false, true)")             # <<<<<<<<<<<<<<
+ *             self._f_name = f
+ *             self._t_name = t
+ */
+  __pyx_k_tuple_14 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_13)); if (unlikely(!__pyx_k_tuple_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_14);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_14));
+
+  /* "h5py/h5.pyx":23
+ * class ByteStringContext(object):
+ * 
+ *     def __init__(self):             # <<<<<<<<<<<<<<
+ *         self._readbytes = False
+ * 
+ */
+  __pyx_k_tuple_19 = PyTuple_Pack(1, ((PyObject *)__pyx_n_s__self)); if (unlikely(!__pyx_k_tuple_19)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_19);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_19));
+  __pyx_k_codeobj_20 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_19, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_4, __pyx_n_s____init__, 23, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_20)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5.pyx":26
+ *         self._readbytes = False
+ * 
+ *     def __bool__(self):             # <<<<<<<<<<<<<<
+ *         return self._readbytes
+ * 
+ */
+  __pyx_k_tuple_22 = PyTuple_Pack(1, ((PyObject *)__pyx_n_s__self)); if (unlikely(!__pyx_k_tuple_22)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_22);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_22));
+  __pyx_k_codeobj_23 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_22, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_4, __pyx_n_s____bool__, 26, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_23)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5.pyx":29
+ *         return self._readbytes
+ * 
+ *     def __nonzero__(self):             # <<<<<<<<<<<<<<
+ *         return self.__bool__()
+ * 
+ */
+  __pyx_k_tuple_25 = PyTuple_Pack(1, ((PyObject *)__pyx_n_s__self)); if (unlikely(!__pyx_k_tuple_25)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_25);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_25));
+  __pyx_k_codeobj_26 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_25, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_4, __pyx_n_s____nonzero__, 29, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_26)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5.pyx":32
+ *         return self.__bool__()
+ * 
+ *     def __enter__(self):             # <<<<<<<<<<<<<<
+ *         self._readbytes = True
+ * 
+ */
+  __pyx_k_tuple_28 = PyTuple_Pack(1, ((PyObject *)__pyx_n_s__self)); if (unlikely(!__pyx_k_tuple_28)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_28);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_28));
+  __pyx_k_codeobj_29 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_28, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_4, __pyx_n_s____enter__, 32, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_29)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5.pyx":35
+ *         self._readbytes = True
+ * 
+ *     def __exit__(self, *args):             # <<<<<<<<<<<<<<
+ *         self._readbytes = False
+ * 
+ */
+  __pyx_k_tuple_31 = PyTuple_Pack(3, ((PyObject *)__pyx_n_s__self), ((PyObject *)__pyx_n_s__args), ((PyObject *)__pyx_n_s__args)); if (unlikely(!__pyx_k_tuple_31)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_31);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_31));
+  __pyx_k_codeobj_32 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_31, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_4, __pyx_n_s____exit__, 35, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_32)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5.pyx":133
+ *     return cfg
+ * 
+ * def get_libversion():             # <<<<<<<<<<<<<<
+ *     """ () => TUPLE (major, minor, release)
+ * 
+ */
+  __pyx_k_tuple_34 = PyTuple_Pack(4, ((PyObject *)__pyx_n_s__major), ((PyObject *)__pyx_n_s__minor), ((PyObject *)__pyx_n_s__release), ((PyObject *)__pyx_n_s__retval)); if (unlikely(!__pyx_k_tuple_34)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_34);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_34));
+  __pyx_k_codeobj_35 = (PyObject*)__Pyx_PyCode_New(0, 0, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_34, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_4, __pyx_n_s__get_libversion, 133, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_35)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_RefNannyFinishContext();
+  return 0;
+  __pyx_L1_error:;
+  __Pyx_RefNannyFinishContext();
+  return -1;
+}
+
+static int __Pyx_InitGlobals(void) {
+  if (__Pyx_InitStrings(__pyx_string_tab) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  return 0;
+  __pyx_L1_error:;
+  return -1;
+}
+
+#if PY_MAJOR_VERSION < 3
+PyMODINIT_FUNC inith5(void); /*proto*/
+PyMODINIT_FUNC inith5(void)
+#else
+PyMODINIT_FUNC PyInit_h5(void); /*proto*/
+PyMODINIT_FUNC PyInit_h5(void)
+#endif
+{
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  __Pyx_RefNannyDeclarations
+  #if CYTHON_REFNANNY
+  __Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny");
+  if (!__Pyx_RefNanny) {
+      PyErr_Clear();
+      __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny");
+      if (!__Pyx_RefNanny)
+          Py_FatalError("failed to import 'refnanny' module");
+  }
+  #endif
+  __Pyx_RefNannySetupContext("PyMODINIT_FUNC PyInit_h5(void)", 0);
+  if ( __Pyx_check_binary_version() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #ifdef __Pyx_CyFunction_USED
+  if (__Pyx_CyFunction_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #endif
+  #ifdef __Pyx_FusedFunction_USED
+  if (__pyx_FusedFunction_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #endif
+  #ifdef __Pyx_Generator_USED
+  if (__pyx_Generator_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #endif
+  /*--- Library function declarations ---*/
+  /*--- Threads initialization code ---*/
+  #if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS
+  #ifdef WITH_THREAD /* Python build with threading support? */
+  PyEval_InitThreads();
+  #endif
+  #endif
+  /*--- Module creation code ---*/
+  #if PY_MAJOR_VERSION < 3
+  __pyx_m = Py_InitModule4(__Pyx_NAMESTR("h5"), __pyx_methods, 0, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m);
+  #else
+  __pyx_m = PyModule_Create(&__pyx_moduledef);
+  #endif
+  if (unlikely(!__pyx_m)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #if PY_MAJOR_VERSION >= 3
+  {
+    PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (!PyDict_GetItemString(modules, "h5py.h5")) {
+      if (unlikely(PyDict_SetItemString(modules, "h5py.h5", __pyx_m) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    }
+  }
+  #endif
+  __pyx_b = PyImport_AddModule(__Pyx_NAMESTR(__Pyx_BUILTIN_MODULE_NAME)); if (unlikely(!__pyx_b)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #if CYTHON_COMPILING_IN_PYPY
+  Py_INCREF(__pyx_b);
+  #endif
+  if (__Pyx_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  /*--- Initialize various global constants etc. ---*/
+  if (unlikely(__Pyx_InitGlobals() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__pyx_module_is_main_h5py__h5) {
+    if (__Pyx_SetAttrString(__pyx_m, "__name__", __pyx_n_s____main__) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  }
+  /*--- Builtin init code ---*/
+  if (unlikely(__Pyx_InitCachedBuiltins() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  /*--- Constants init code ---*/
+  if (unlikely(__Pyx_InitCachedConstants() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  /*--- Global init code ---*/
+  __pyx_v_4h5py_2h5_cfg = ((struct __pyx_obj_4h5py_2h5_H5PYConfig *)Py_None); Py_INCREF(Py_None);
+  /*--- Variable export code ---*/
+  /*--- Function export code ---*/
+  if (__Pyx_ExportFunction("get_config", (void (*)(void))__pyx_f_4h5py_2h5_get_config, "struct __pyx_obj_4h5py_2h5_H5PYConfig *(int __pyx_skip_dispatch)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  /*--- Type init code ---*/
+  if (PyType_Ready(&__pyx_type_4h5py_2h5_H5PYConfig) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetAttrString(__pyx_m, "H5PYConfig", (PyObject *)&__pyx_type_4h5py_2h5_H5PYConfig) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_2h5_H5PYConfig = &__pyx_type_4h5py_2h5_H5PYConfig;
+  if (PyType_Ready(&__pyx_type_4h5py_2h5___pyx_scope_struct____get__) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_2h5___pyx_scope_struct____get__ = &__pyx_type_4h5py_2h5___pyx_scope_struct____get__;
+  /*--- Type import code ---*/
+  /*--- Variable import code ---*/
+  /*--- Function import code ---*/
+  __pyx_t_1 = __Pyx_ImportModule("h5py.defs"); if (!__pyx_t_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5get_libversion", (void (**)(void))&__pyx_f_4h5py_4defs_H5get_libversion, "herr_t (unsigned int *, unsigned int *, unsigned int *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  Py_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  /*--- Execution code ---*/
+
+  /* "h5py/h5.pyx":14
+ * from defs cimport *
+ * 
+ * ITER_INC    = H5_ITER_INC     # Increasing order             # <<<<<<<<<<<<<<
+ * ITER_DEC    = H5_ITER_DEC     # Decreasing order
+ * ITER_NATIVE = H5_ITER_NATIVE  # No particular order, whatever is fastest
+ */
+  __pyx_t_2 = PyInt_FromLong(H5_ITER_INC); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ITER_INC, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/h5.pyx":15
+ * 
+ * ITER_INC    = H5_ITER_INC     # Increasing order
+ * ITER_DEC    = H5_ITER_DEC     # Decreasing order             # <<<<<<<<<<<<<<
+ * ITER_NATIVE = H5_ITER_NATIVE  # No particular order, whatever is fastest
+ * 
+ */
+  __pyx_t_2 = PyInt_FromLong(H5_ITER_DEC); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ITER_DEC, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/h5.pyx":16
+ * ITER_INC    = H5_ITER_INC     # Increasing order
+ * ITER_DEC    = H5_ITER_DEC     # Decreasing order
+ * ITER_NATIVE = H5_ITER_NATIVE  # No particular order, whatever is fastest             # <<<<<<<<<<<<<<
+ * 
+ * INDEX_NAME      = H5_INDEX_NAME       # Index on names
+ */
+  __pyx_t_2 = PyInt_FromLong(H5_ITER_NATIVE); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ITER_NATIVE, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/h5.pyx":18
+ * ITER_NATIVE = H5_ITER_NATIVE  # No particular order, whatever is fastest
+ * 
+ * INDEX_NAME      = H5_INDEX_NAME       # Index on names             # <<<<<<<<<<<<<<
+ * INDEX_CRT_ORDER = H5_INDEX_CRT_ORDER  # Index on creation order
+ * 
+ */
+  __pyx_t_2 = PyInt_FromLong(H5_INDEX_NAME); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__INDEX_NAME, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/h5.pyx":19
+ * 
+ * INDEX_NAME      = H5_INDEX_NAME       # Index on names
+ * INDEX_CRT_ORDER = H5_INDEX_CRT_ORDER  # Index on creation order             # <<<<<<<<<<<<<<
+ * 
+ * class ByteStringContext(object):
+ */
+  __pyx_t_2 = PyInt_FromLong(H5_INDEX_CRT_ORDER); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__INDEX_CRT_ORDER, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/h5.pyx":21
+ * INDEX_CRT_ORDER = H5_INDEX_CRT_ORDER  # Index on creation order
+ * 
+ * class ByteStringContext(object):             # <<<<<<<<<<<<<<
+ * 
+ *     def __init__(self):
+ */
+  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
+
+  /* "h5py/h5.pyx":23
+ * class ByteStringContext(object):
+ * 
+ *     def __init__(self):             # <<<<<<<<<<<<<<
+ *         self._readbytes = False
+ * 
+ */
+  __pyx_t_3 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4h5py_2h5_17ByteStringContext_1__init__, 0, __pyx_n_s_21, NULL, __pyx_n_s_6, ((PyObject *)__pyx_k_codeobj_20)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s____init__, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+  /* "h5py/h5.pyx":26
+ *         self._readbytes = False
+ * 
+ *     def __bool__(self):             # <<<<<<<<<<<<<<
+ *         return self._readbytes
+ * 
+ */
+  __pyx_t_3 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4h5py_2h5_17ByteStringContext_3__bool__, 0, __pyx_n_s_24, NULL, __pyx_n_s_6, ((PyObject *)__pyx_k_codeobj_23)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s____bool__, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+  /* "h5py/h5.pyx":29
+ *         return self._readbytes
+ * 
+ *     def __nonzero__(self):             # <<<<<<<<<<<<<<
+ *         return self.__bool__()
+ * 
+ */
+  __pyx_t_3 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4h5py_2h5_17ByteStringContext_5__nonzero__, 0, __pyx_n_s_27, NULL, __pyx_n_s_6, ((PyObject *)__pyx_k_codeobj_26)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s____nonzero__, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+  /* "h5py/h5.pyx":32
+ *         return self.__bool__()
+ * 
+ *     def __enter__(self):             # <<<<<<<<<<<<<<
+ *         self._readbytes = True
+ * 
+ */
+  __pyx_t_3 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4h5py_2h5_17ByteStringContext_7__enter__, 0, __pyx_n_s_30, NULL, __pyx_n_s_6, ((PyObject *)__pyx_k_codeobj_29)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s____enter__, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+  /* "h5py/h5.pyx":35
+ *         self._readbytes = True
+ * 
+ *     def __exit__(self, *args):             # <<<<<<<<<<<<<<
+ *         self._readbytes = False
+ * 
+ */
+  __pyx_t_3 = __Pyx_CyFunction_NewEx(&__pyx_mdef_4h5py_2h5_17ByteStringContext_9__exit__, 0, __pyx_n_s_33, NULL, __pyx_n_s_6, ((PyObject *)__pyx_k_codeobj_32)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  if (PyObject_SetItem(__pyx_t_2, __pyx_n_s____exit__, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+  /* "h5py/h5.pyx":21
+ * INDEX_CRT_ORDER = H5_INDEX_CRT_ORDER  # Index on creation order
+ * 
+ * class ByteStringContext(object):             # <<<<<<<<<<<<<<
+ * 
+ *     def __init__(self):
+ */
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_INCREF(__pyx_builtin_object);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_builtin_object);
+  __Pyx_GIVEREF(__pyx_builtin_object);
+  __pyx_t_4 = __Pyx_CreateClass(((PyObject *)__pyx_t_3), ((PyObject *)__pyx_t_2), __pyx_n_s__ByteStringContext, __pyx_n_s__ByteStringContext, __pyx_n_s_6); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ByteStringContext, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
+
+  /* "h5py/h5.pyx":124
+ *                 return False
+ * 
+ * cdef H5PYConfig cfg = H5PYConfig()             # <<<<<<<<<<<<<<
+ * 
+ * cpdef H5PYConfig get_config():
+ */
+  __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4h5py_2h5_H5PYConfig)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_XGOTREF(((PyObject *)__pyx_v_4h5py_2h5_cfg));
+  __Pyx_DECREF(((PyObject *)__pyx_v_4h5py_2h5_cfg));
+  __Pyx_GIVEREF(__pyx_t_2);
+  __pyx_v_4h5py_2h5_cfg = ((struct __pyx_obj_4h5py_2h5_H5PYConfig *)__pyx_t_2);
+  __pyx_t_2 = 0;
+
+  /* "h5py/h5.pyx":133
+ *     return cfg
+ * 
+ * def get_libversion():             # <<<<<<<<<<<<<<
+ *     """ () => TUPLE (major, minor, release)
+ * 
+ */
+  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_4h5py_2h5_3get_libversion, NULL, __pyx_n_s_6); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__get_libversion, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/h5.pyx":1
+ * # This file is part of h5py, a Python interface to the HDF5 library.             # <<<<<<<<<<<<<<
+ * #
+ * # http://www.h5py.org
+ */
+  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s____test__, ((PyObject *)__pyx_t_2)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  if (__pyx_m) {
+    __Pyx_AddTraceback("init h5py.h5", __pyx_clineno, __pyx_lineno, __pyx_filename);
+    Py_DECREF(__pyx_m); __pyx_m = 0;
+  } else if (!PyErr_Occurred()) {
+    PyErr_SetString(PyExc_ImportError, "init h5py.h5");
+  }
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  #if PY_MAJOR_VERSION < 3
+  return;
+  #else
+  return __pyx_m;
+  #endif
+}
+
+/* Runtime support code */
+#if CYTHON_REFNANNY
+static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) {
+    PyObject *m = NULL, *p = NULL;
+    void *r = NULL;
+    m = PyImport_ImportModule((char *)modname);
+    if (!m) goto end;
+    p = PyObject_GetAttrString(m, (char *)"RefNannyAPI");
+    if (!p) goto end;
+    r = PyLong_AsVoidPtr(p);
+end:
+    Py_XDECREF(p);
+    Py_XDECREF(m);
+    return (__Pyx_RefNannyAPIStruct *)r;
+}
+#endif /* CYTHON_REFNANNY */
+
+static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name) {
+    PyObject *result;
+    result = PyObject_GetAttr(dict, name);
+    if (!result) {
+        if (dict != __pyx_b) {
+            PyErr_Clear();
+            result = PyObject_GetAttr(__pyx_b, name);
+        }
+        if (!result) {
+            PyErr_SetObject(PyExc_NameError, name);
+        }
+    }
+    return result;
+}
+
+static void __Pyx_RaiseDoubleKeywordsError(
+    const char* func_name,
+    PyObject* kw_name)
+{
+    PyErr_Format(PyExc_TypeError,
+        #if PY_MAJOR_VERSION >= 3
+        "%s() got multiple values for keyword argument '%U'", func_name, kw_name);
+        #else
+        "%s() got multiple values for keyword argument '%s'", func_name,
+        PyString_AsString(kw_name));
+        #endif
+}
+
+static int __Pyx_ParseOptionalKeywords(
+    PyObject *kwds,
+    PyObject **argnames[],
+    PyObject *kwds2,
+    PyObject *values[],
+    Py_ssize_t num_pos_args,
+    const char* function_name)
+{
+    PyObject *key = 0, *value = 0;
+    Py_ssize_t pos = 0;
+    PyObject*** name;
+    PyObject*** first_kw_arg = argnames + num_pos_args;
+    while (PyDict_Next(kwds, &pos, &key, &value)) {
+        name = first_kw_arg;
+        while (*name && (**name != key)) name++;
+        if (*name) {
+            values[name-argnames] = value;
+            continue;
+        }
+        name = first_kw_arg;
+        #if PY_MAJOR_VERSION < 3
+        if (likely(PyString_CheckExact(key)) || likely(PyString_Check(key))) {
+            while (*name) {
+                if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key))
+                        && _PyString_Eq(**name, key)) {
+                    values[name-argnames] = value;
+                    break;
+                }
+                name++;
+            }
+            if (*name) continue;
+            else {
+                PyObject*** argname = argnames;
+                while (argname != first_kw_arg) {
+                    if ((**argname == key) || (
+                            (CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**argname) == PyString_GET_SIZE(key))
+                             && _PyString_Eq(**argname, key))) {
+                        goto arg_passed_twice;
+                    }
+                    argname++;
+                }
+            }
+        } else
+        #endif
+        if (likely(PyUnicode_Check(key))) {
+            while (*name) {
+                int cmp = (**name == key) ? 0 :
+                #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
+                    (PyUnicode_GET_SIZE(**name) != PyUnicode_GET_SIZE(key)) ? 1 :
+                #endif
+                    PyUnicode_Compare(**name, key);
+                if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
+                if (cmp == 0) {
+                    values[name-argnames] = value;
+                    break;
+                }
+                name++;
+            }
+            if (*name) continue;
+            else {
+                PyObject*** argname = argnames;
+                while (argname != first_kw_arg) {
+                    int cmp = (**argname == key) ? 0 :
+                    #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
+                        (PyUnicode_GET_SIZE(**argname) != PyUnicode_GET_SIZE(key)) ? 1 :
+                    #endif
+                        PyUnicode_Compare(**argname, key);
+                    if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
+                    if (cmp == 0) goto arg_passed_twice;
+                    argname++;
+                }
+            }
+        } else
+            goto invalid_keyword_type;
+        if (kwds2) {
+            if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad;
+        } else {
+            goto invalid_keyword;
+        }
+    }
+    return 0;
+arg_passed_twice:
+    __Pyx_RaiseDoubleKeywordsError(function_name, key);
+    goto bad;
+invalid_keyword_type:
+    PyErr_Format(PyExc_TypeError,
+        "%s() keywords must be strings", function_name);
+    goto bad;
+invalid_keyword:
+    PyErr_Format(PyExc_TypeError,
+    #if PY_MAJOR_VERSION < 3
+        "%s() got an unexpected keyword argument '%s'",
+        function_name, PyString_AsString(key));
+    #else
+        "%s() got an unexpected keyword argument '%U'",
+        function_name, key);
+    #endif
+bad:
+    return -1;
+}
+
+static void __Pyx_RaiseArgtupleInvalid(
+    const char* func_name,
+    int exact,
+    Py_ssize_t num_min,
+    Py_ssize_t num_max,
+    Py_ssize_t num_found)
+{
+    Py_ssize_t num_expected;
+    const char *more_or_less;
+    if (num_found < num_min) {
+        num_expected = num_min;
+        more_or_less = "at least";
+    } else {
+        num_expected = num_max;
+        more_or_less = "at most";
+    }
+    if (exact) {
+        more_or_less = "exactly";
+    }
+    PyErr_Format(PyExc_TypeError,
+                 "%s() takes %s %" CYTHON_FORMAT_SSIZE_T "d positional argument%s (%" CYTHON_FORMAT_SSIZE_T "d given)",
+                 func_name, more_or_less, num_expected,
+                 (num_expected == 1) ? "" : "s", num_found);
+}
+
+static CYTHON_INLINE int __Pyx_CheckKeywordStrings(
+    PyObject *kwdict,
+    const char* function_name,
+    int kw_allowed)
+{
+    PyObject* key = 0;
+    Py_ssize_t pos = 0;
+#if CPYTHON_COMPILING_IN_PYPY
+    if (!kw_allowed && PyDict_Next(kwdict, &pos, &key, 0))
+        goto invalid_keyword;
+    return 1;
+#else
+    while (PyDict_Next(kwdict, &pos, &key, 0)) {
+        #if PY_MAJOR_VERSION < 3
+        if (unlikely(!PyString_CheckExact(key)) && unlikely(!PyString_Check(key)))
+        #endif
+            if (unlikely(!PyUnicode_Check(key)))
+                goto invalid_keyword_type;
+    }
+    if ((!kw_allowed) && unlikely(key))
+        goto invalid_keyword;
+    return 1;
+invalid_keyword_type:
+    PyErr_Format(PyExc_TypeError,
+        "%s() keywords must be strings", function_name);
+    return 0;
+#endif
+invalid_keyword:
+    PyErr_Format(PyExc_TypeError,
+    #if PY_MAJOR_VERSION < 3
+        "%s() got an unexpected keyword argument '%s'",
+        function_name, PyString_AsString(key));
+    #else
+        "%s() got an unexpected keyword argument '%U'",
+        function_name, key);
+    #endif
+    return 0;
+}
+
+static CYTHON_INLINE void __Pyx_RaiseClosureNameError(const char *varname) {
+    PyErr_Format(PyExc_NameError, "free variable '%s' referenced before assignment in enclosing scope", varname);
+}
+
+static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb) {
+#if CYTHON_COMPILING_IN_CPYTHON
+    PyObject *tmp_type, *tmp_value, *tmp_tb;
+    PyThreadState *tstate = PyThreadState_GET();
+    tmp_type = tstate->curexc_type;
+    tmp_value = tstate->curexc_value;
+    tmp_tb = tstate->curexc_traceback;
+    tstate->curexc_type = type;
+    tstate->curexc_value = value;
+    tstate->curexc_traceback = tb;
+    Py_XDECREF(tmp_type);
+    Py_XDECREF(tmp_value);
+    Py_XDECREF(tmp_tb);
+#else
+    PyErr_Restore(type, value, tb);
+#endif
+}
+static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb) {
+#if CYTHON_COMPILING_IN_CPYTHON
+    PyThreadState *tstate = PyThreadState_GET();
+    *type = tstate->curexc_type;
+    *value = tstate->curexc_value;
+    *tb = tstate->curexc_traceback;
+    tstate->curexc_type = 0;
+    tstate->curexc_value = 0;
+    tstate->curexc_traceback = 0;
+#else
+    PyErr_Fetch(type, value, tb);
+#endif
+}
+
+#if PY_MAJOR_VERSION < 3
+static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb,
+                        CYTHON_UNUSED PyObject *cause) {
+    Py_XINCREF(type);
+    if (!value || value == Py_None)
+        value = NULL;
+    else
+        Py_INCREF(value);
+    if (!tb || tb == Py_None)
+        tb = NULL;
+    else {
+        Py_INCREF(tb);
+        if (!PyTraceBack_Check(tb)) {
+            PyErr_SetString(PyExc_TypeError,
+                "raise: arg 3 must be a traceback or None");
+            goto raise_error;
+        }
+    }
+    #if PY_VERSION_HEX < 0x02050000
+    if (PyClass_Check(type)) {
+    #else
+    if (PyType_Check(type)) {
+    #endif
+#if CYTHON_COMPILING_IN_PYPY
+        if (!value) {
+            Py_INCREF(Py_None);
+            value = Py_None;
+        }
+#endif
+        PyErr_NormalizeException(&type, &value, &tb);
+    } else {
+        if (value) {
+            PyErr_SetString(PyExc_TypeError,
+                "instance exception may not have a separate value");
+            goto raise_error;
+        }
+        value = type;
+        #if PY_VERSION_HEX < 0x02050000
+            if (PyInstance_Check(type)) {
+                type = (PyObject*) ((PyInstanceObject*)type)->in_class;
+                Py_INCREF(type);
+            }
+            else {
+                type = 0;
+                PyErr_SetString(PyExc_TypeError,
+                    "raise: exception must be an old-style class or instance");
+                goto raise_error;
+            }
+        #else
+            type = (PyObject*) Py_TYPE(type);
+            Py_INCREF(type);
+            if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) {
+                PyErr_SetString(PyExc_TypeError,
+                    "raise: exception class must be a subclass of BaseException");
+                goto raise_error;
+            }
+        #endif
+    }
+    __Pyx_ErrRestore(type, value, tb);
+    return;
+raise_error:
+    Py_XDECREF(value);
+    Py_XDECREF(type);
+    Py_XDECREF(tb);
+    return;
+}
+#else /* Python 3+ */
+static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) {
+    PyObject* owned_instance = NULL;
+    if (tb == Py_None) {
+        tb = 0;
+    } else if (tb && !PyTraceBack_Check(tb)) {
+        PyErr_SetString(PyExc_TypeError,
+            "raise: arg 3 must be a traceback or None");
+        goto bad;
+    }
+    if (value == Py_None)
+        value = 0;
+    if (PyExceptionInstance_Check(type)) {
+        if (value) {
+            PyErr_SetString(PyExc_TypeError,
+                "instance exception may not have a separate value");
+            goto bad;
+        }
+        value = type;
+        type = (PyObject*) Py_TYPE(value);
+    } else if (PyExceptionClass_Check(type)) {
+        PyObject *args;
+        if (!value)
+            args = PyTuple_New(0);
+        else if (PyTuple_Check(value)) {
+            Py_INCREF(value);
+            args = value;
+        }
+        else
+            args = PyTuple_Pack(1, value);
+        if (!args)
+            goto bad;
+        owned_instance = PyEval_CallObject(type, args);
+        Py_DECREF(args);
+        if (!owned_instance)
+            goto bad;
+        value = owned_instance;
+        if (!PyExceptionInstance_Check(value)) {
+            PyErr_Format(PyExc_TypeError,
+                         "calling %R should have returned an instance of "
+                         "BaseException, not %R",
+                         type, Py_TYPE(value));
+            goto bad;
+        }
+    } else {
+        PyErr_SetString(PyExc_TypeError,
+            "raise: exception class must be a subclass of BaseException");
+        goto bad;
+    }
+    if (cause && cause != Py_None) {
+        PyObject *fixed_cause;
+        if (PyExceptionClass_Check(cause)) {
+            fixed_cause = PyObject_CallObject(cause, NULL);
+            if (fixed_cause == NULL)
+                goto bad;
+        }
+        else if (PyExceptionInstance_Check(cause)) {
+            fixed_cause = cause;
+            Py_INCREF(fixed_cause);
+        }
+        else {
+            PyErr_SetString(PyExc_TypeError,
+                            "exception causes must derive from "
+                            "BaseException");
+            goto bad;
+        }
+        PyException_SetCause(value, fixed_cause);
+    }
+    PyErr_SetObject(type, value);
+    if (tb) {
+        PyThreadState *tstate = PyThreadState_GET();
+        PyObject* tmp_tb = tstate->curexc_traceback;
+        if (tb != tmp_tb) {
+            Py_INCREF(tb);
+            tstate->curexc_traceback = tb;
+            Py_XDECREF(tmp_tb);
+        }
+    }
+bad:
+    Py_XDECREF(owned_instance);
+    return;
+}
+#endif
+
+static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) {
+    PyObject *local_type, *local_value, *local_tb;
+#if CYTHON_COMPILING_IN_CPYTHON
+    PyObject *tmp_type, *tmp_value, *tmp_tb;
+    PyThreadState *tstate = PyThreadState_GET();
+    local_type = tstate->curexc_type;
+    local_value = tstate->curexc_value;
+    local_tb = tstate->curexc_traceback;
+    tstate->curexc_type = 0;
+    tstate->curexc_value = 0;
+    tstate->curexc_traceback = 0;
+#else
+    PyErr_Fetch(&local_type, &local_value, &local_tb);
+#endif
+    PyErr_NormalizeException(&local_type, &local_value, &local_tb);
+#if CYTHON_COMPILING_IN_CPYTHON
+    if (unlikely(tstate->curexc_type))
+#else
+    if (unlikely(PyErr_Occurred()))
+#endif
+        goto bad;
+    #if PY_MAJOR_VERSION >= 3
+    if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0))
+        goto bad;
+    #endif
+    Py_INCREF(local_type);
+    Py_INCREF(local_value);
+    Py_INCREF(local_tb);
+    *type = local_type;
+    *value = local_value;
+    *tb = local_tb;
+#if CYTHON_COMPILING_IN_CPYTHON
+    tmp_type = tstate->exc_type;
+    tmp_value = tstate->exc_value;
+    tmp_tb = tstate->exc_traceback;
+    tstate->exc_type = local_type;
+    tstate->exc_value = local_value;
+    tstate->exc_traceback = local_tb;
+    /* Make sure tstate is in a consistent state when we XDECREF
+       these objects (DECREF may run arbitrary code). */
+    Py_XDECREF(tmp_type);
+    Py_XDECREF(tmp_value);
+    Py_XDECREF(tmp_tb);
+#else
+    PyErr_SetExcInfo(local_type, local_value, local_tb);
+#endif
+    return 0;
+bad:
+    *type = 0;
+    *value = 0;
+    *tb = 0;
+    Py_XDECREF(local_type);
+    Py_XDECREF(local_value);
+    Py_XDECREF(local_tb);
+    return -1;
+}
+
+static CYTHON_INLINE void __Pyx_ExceptionSave(PyObject **type, PyObject **value, PyObject **tb) {
+#if CYTHON_COMPILING_IN_CPYTHON
+    PyThreadState *tstate = PyThreadState_GET();
+    *type = tstate->exc_type;
+    *value = tstate->exc_value;
+    *tb = tstate->exc_traceback;
+    Py_XINCREF(*type);
+    Py_XINCREF(*value);
+    Py_XINCREF(*tb);
+#else
+    PyErr_GetExcInfo(type, value, tb);
+#endif
+}
+static void __Pyx_ExceptionReset(PyObject *type, PyObject *value, PyObject *tb) {
+#if CYTHON_COMPILING_IN_CPYTHON
+    PyObject *tmp_type, *tmp_value, *tmp_tb;
+    PyThreadState *tstate = PyThreadState_GET();
+    tmp_type = tstate->exc_type;
+    tmp_value = tstate->exc_value;
+    tmp_tb = tstate->exc_traceback;
+    tstate->exc_type = type;
+    tstate->exc_value = value;
+    tstate->exc_traceback = tb;
+    Py_XDECREF(tmp_type);
+    Py_XDECREF(tmp_value);
+    Py_XDECREF(tmp_tb);
+#else
+    PyErr_SetExcInfo(type, value, tb);
+#endif
+}
+
+static PyObject *__Pyx_FindPy2Metaclass(PyObject *bases) {
+    PyObject *metaclass;
+#if PY_MAJOR_VERSION < 3
+    if (PyTuple_Check(bases) && PyTuple_GET_SIZE(bases) > 0) {
+        PyObject *base = PyTuple_GET_ITEM(bases, 0);
+        metaclass = PyObject_GetAttrString(base, (char *)"__class__");
+        if (!metaclass) {
+            PyErr_Clear();
+            metaclass = (PyObject*) Py_TYPE(base);
+        }
+    } else {
+        metaclass = (PyObject *) &PyClass_Type;
+    }
+#else
+    if (PyTuple_Check(bases) && PyTuple_GET_SIZE(bases) > 0) {
+        PyObject *base = PyTuple_GET_ITEM(bases, 0);
+        metaclass = (PyObject*) Py_TYPE(base);
+    } else {
+        metaclass = (PyObject *) &PyType_Type;
+    }
+#endif
+    Py_INCREF(metaclass);
+    return metaclass;
+}
+
+static PyObject *__Pyx_CreateClass(PyObject *bases, PyObject *dict, PyObject *name,
+                                   PyObject *qualname, PyObject *modname) {
+    PyObject *result;
+    PyObject *metaclass;
+    if (PyDict_SetItemString(dict, "__module__", modname) < 0)
+        return NULL;
+    if (PyDict_SetItemString(dict, "__qualname__", qualname) < 0)
+        return NULL;
+    metaclass = PyDict_GetItemString(dict, "__metaclass__");
+    if (metaclass) {
+        Py_INCREF(metaclass);
+    } else {
+        metaclass = __Pyx_FindPy2Metaclass(bases);
+    }
+    result = PyObject_CallFunctionObjArgs(metaclass, name, bases, dict, NULL);
+    Py_DECREF(metaclass);
+    return result;
+}
+
+static PyObject *
+__Pyx_CyFunction_get_doc(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *closure)
+{
+    if (unlikely(op->func_doc == NULL)) {
+        if (op->func.m_ml->ml_doc) {
+#if PY_MAJOR_VERSION >= 3
+            op->func_doc = PyUnicode_FromString(op->func.m_ml->ml_doc);
+#else
+            op->func_doc = PyString_FromString(op->func.m_ml->ml_doc);
+#endif
+            if (unlikely(op->func_doc == NULL))
+                return NULL;
+        } else {
+            Py_INCREF(Py_None);
+            return Py_None;
+        }
+    }
+    Py_INCREF(op->func_doc);
+    return op->func_doc;
+}
+static int
+__Pyx_CyFunction_set_doc(__pyx_CyFunctionObject *op, PyObject *value)
+{
+    PyObject *tmp = op->func_doc;
+    if (value == NULL)
+        value = Py_None; /* Mark as deleted */
+    Py_INCREF(value);
+    op->func_doc = value;
+    Py_XDECREF(tmp);
+    return 0;
+}
+static PyObject *
+__Pyx_CyFunction_get_name(__pyx_CyFunctionObject *op)
+{
+    if (unlikely(op->func_name == NULL)) {
+#if PY_MAJOR_VERSION >= 3
+        op->func_name = PyUnicode_InternFromString(op->func.m_ml->ml_name);
+#else
+        op->func_name = PyString_InternFromString(op->func.m_ml->ml_name);
+#endif
+        if (unlikely(op->func_name == NULL))
+            return NULL;
+    }
+    Py_INCREF(op->func_name);
+    return op->func_name;
+}
+static int
+__Pyx_CyFunction_set_name(__pyx_CyFunctionObject *op, PyObject *value)
+{
+    PyObject *tmp;
+#if PY_MAJOR_VERSION >= 3
+    if (unlikely(value == NULL || !PyUnicode_Check(value))) {
+#else
+    if (unlikely(value == NULL || !PyString_Check(value))) {
+#endif
+        PyErr_SetString(PyExc_TypeError,
+                        "__name__ must be set to a string object");
+        return -1;
+    }
+    tmp = op->func_name;
+    Py_INCREF(value);
+    op->func_name = value;
+    Py_XDECREF(tmp);
+    return 0;
+}
+static PyObject *
+__Pyx_CyFunction_get_qualname(__pyx_CyFunctionObject *op)
+{
+    Py_INCREF(op->func_qualname);
+    return op->func_qualname;
+}
+static int
+__Pyx_CyFunction_set_qualname(__pyx_CyFunctionObject *op, PyObject *value)
+{
+    PyObject *tmp;
+#if PY_MAJOR_VERSION >= 3
+    if (unlikely(value == NULL || !PyUnicode_Check(value))) {
+#else
+    if (unlikely(value == NULL || !PyString_Check(value))) {
+#endif
+        PyErr_SetString(PyExc_TypeError,
+                        "__qualname__ must be set to a string object");
+        return -1;
+    }
+    tmp = op->func_qualname;
+    Py_INCREF(value);
+    op->func_qualname = value;
+    Py_XDECREF(tmp);
+    return 0;
+}
+static PyObject *
+__Pyx_CyFunction_get_self(__pyx_CyFunctionObject *m, CYTHON_UNUSED void *closure)
+{
+    PyObject *self;
+    self = m->func_closure;
+    if (self == NULL)
+        self = Py_None;
+    Py_INCREF(self);
+    return self;
+}
+static PyObject *
+__Pyx_CyFunction_get_dict(__pyx_CyFunctionObject *op)
+{
+    if (unlikely(op->func_dict == NULL)) {
+        op->func_dict = PyDict_New();
+        if (unlikely(op->func_dict == NULL))
+            return NULL;
+    }
+    Py_INCREF(op->func_dict);
+    return op->func_dict;
+}
+static int
+__Pyx_CyFunction_set_dict(__pyx_CyFunctionObject *op, PyObject *value)
+{
+    PyObject *tmp;
+    if (unlikely(value == NULL)) {
+        PyErr_SetString(PyExc_TypeError,
+               "function's dictionary may not be deleted");
+        return -1;
+    }
+    if (unlikely(!PyDict_Check(value))) {
+        PyErr_SetString(PyExc_TypeError,
+               "setting function's dictionary to a non-dict");
+        return -1;
+    }
+    tmp = op->func_dict;
+    Py_INCREF(value);
+    op->func_dict = value;
+    Py_XDECREF(tmp);
+    return 0;
+}
+static PyObject *
+__Pyx_CyFunction_get_globals(CYTHON_UNUSED __pyx_CyFunctionObject *op)
+{
+    PyObject* dict = PyModule_GetDict(__pyx_m);
+    Py_XINCREF(dict);
+    return dict;
+}
+static PyObject *
+__Pyx_CyFunction_get_closure(CYTHON_UNUSED __pyx_CyFunctionObject *op)
+{
+    Py_INCREF(Py_None);
+    return Py_None;
+}
+static PyObject *
+__Pyx_CyFunction_get_code(__pyx_CyFunctionObject *op)
+{
+    PyObject* result = (op->func_code) ? op->func_code : Py_None;
+    Py_INCREF(result);
+    return result;
+}
+static PyObject *
+__Pyx_CyFunction_get_defaults(__pyx_CyFunctionObject *op)
+{
+    if (op->defaults_tuple) {
+        Py_INCREF(op->defaults_tuple);
+        return op->defaults_tuple;
+    }
+    if (op->defaults_getter) {
+        PyObject *res = op->defaults_getter((PyObject *) op);
+        if (likely(res)) {
+            Py_INCREF(res);
+            op->defaults_tuple = res;
+        }
+        return res;
+    }
+    Py_INCREF(Py_None);
+    return Py_None;
+}
+static PyGetSetDef __pyx_CyFunction_getsets[] = {
+    {(char *) "func_doc", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0},
+    {(char *) "__doc__",  (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0},
+    {(char *) "func_name", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0},
+    {(char *) "__name__", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0},
+    {(char *) "__qualname__", (getter)__Pyx_CyFunction_get_qualname, (setter)__Pyx_CyFunction_set_qualname, 0, 0},
+    {(char *) "__self__", (getter)__Pyx_CyFunction_get_self, 0, 0, 0},
+    {(char *) "func_dict", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0},
+    {(char *) "__dict__", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0},
+    {(char *) "func_globals", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0},
+    {(char *) "__globals__", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0},
+    {(char *) "func_closure", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0},
+    {(char *) "__closure__", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0},
+    {(char *) "func_code", (getter)__Pyx_CyFunction_get_code, 0, 0, 0},
+    {(char *) "__code__", (getter)__Pyx_CyFunction_get_code, 0, 0, 0},
+    {(char *) "func_defaults", (getter)__Pyx_CyFunction_get_defaults, 0, 0, 0},
+    {(char *) "__defaults__", (getter)__Pyx_CyFunction_get_defaults, 0, 0, 0},
+    {0, 0, 0, 0, 0}
+};
+#ifndef PY_WRITE_RESTRICTED /* < Py2.5 */
+#define PY_WRITE_RESTRICTED WRITE_RESTRICTED
+#endif
+static PyMemberDef __pyx_CyFunction_members[] = {
+    {(char *) "__module__", T_OBJECT, offsetof(__pyx_CyFunctionObject, func.m_module), PY_WRITE_RESTRICTED, 0},
+    {0, 0, 0,  0, 0}
+};
+static PyObject *
+__Pyx_CyFunction_reduce(__pyx_CyFunctionObject *m, CYTHON_UNUSED PyObject *args)
+{
+#if PY_MAJOR_VERSION >= 3
+    return PyUnicode_FromString(m->func.m_ml->ml_name);
+#else
+    return PyString_FromString(m->func.m_ml->ml_name);
+#endif
+}
+static PyMethodDef __pyx_CyFunction_methods[] = {
+    {__Pyx_NAMESTR("__reduce__"), (PyCFunction)__Pyx_CyFunction_reduce, METH_VARARGS, 0},
+    {0, 0, 0, 0}
+};
+static PyObject *__Pyx_CyFunction_New(PyTypeObject *type, PyMethodDef *ml, int flags, PyObject* qualname,
+                                      PyObject *closure, PyObject *module, PyObject* code) {
+    __pyx_CyFunctionObject *op = PyObject_GC_New(__pyx_CyFunctionObject, type);
+    if (op == NULL)
+        return NULL;
+    op->flags = flags;
+    op->func_weakreflist = NULL;
+    op->func.m_ml = ml;
+    op->func.m_self = (PyObject *) op;
+    Py_XINCREF(closure);
+    op->func_closure = closure;
+    Py_XINCREF(module);
+    op->func.m_module = module;
+    op->func_dict = NULL;
+    op->func_name = NULL;
+    Py_INCREF(qualname);
+    op->func_qualname = qualname;
+    op->func_doc = NULL;
+    op->func_classobj = NULL;
+    Py_XINCREF(code);
+    op->func_code = code;
+    op->defaults_pyobjects = 0;
+    op->defaults = NULL;
+    op->defaults_tuple = NULL;
+    op->defaults_getter = NULL;
+    PyObject_GC_Track(op);
+    return (PyObject *) op;
+}
+static int
+__Pyx_CyFunction_clear(__pyx_CyFunctionObject *m)
+{
+    Py_CLEAR(m->func_closure);
+    Py_CLEAR(m->func.m_module);
+    Py_CLEAR(m->func_dict);
+    Py_CLEAR(m->func_name);
+    Py_CLEAR(m->func_qualname);
+    Py_CLEAR(m->func_doc);
+    Py_CLEAR(m->func_code);
+    Py_CLEAR(m->func_classobj);
+    Py_CLEAR(m->defaults_tuple);
+    if (m->defaults) {
+        PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m);
+        int i;
+        for (i = 0; i < m->defaults_pyobjects; i++)
+            Py_XDECREF(pydefaults[i]);
+        PyMem_Free(m->defaults);
+        m->defaults = NULL;
+    }
+    return 0;
+}
+static void __Pyx_CyFunction_dealloc(__pyx_CyFunctionObject *m)
+{
+    PyObject_GC_UnTrack(m);
+    if (m->func_weakreflist != NULL)
+        PyObject_ClearWeakRefs((PyObject *) m);
+    __Pyx_CyFunction_clear(m);
+    PyObject_GC_Del(m);
+}
+static int __Pyx_CyFunction_traverse(__pyx_CyFunctionObject *m, visitproc visit, void *arg)
+{
+    Py_VISIT(m->func_closure);
+    Py_VISIT(m->func.m_module);
+    Py_VISIT(m->func_dict);
+    Py_VISIT(m->func_name);
+    Py_VISIT(m->func_qualname);
+    Py_VISIT(m->func_doc);
+    Py_VISIT(m->func_code);
+    Py_VISIT(m->func_classobj);
+    Py_VISIT(m->defaults_tuple);
+    if (m->defaults) {
+        PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m);
+        int i;
+        for (i = 0; i < m->defaults_pyobjects; i++)
+            Py_VISIT(pydefaults[i]);
+    }
+    return 0;
+}
+static PyObject *__Pyx_CyFunction_descr_get(PyObject *func, PyObject *obj, PyObject *type)
+{
+    __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;
+    if (m->flags & __Pyx_CYFUNCTION_STATICMETHOD) {
+        Py_INCREF(func);
+        return func;
+    }
+    if (m->flags & __Pyx_CYFUNCTION_CLASSMETHOD) {
+        if (type == NULL)
+            type = (PyObject *)(Py_TYPE(obj));
+        return PyMethod_New(func,
+                            type, (PyObject *)(Py_TYPE(type)));
+    }
+    if (obj == Py_None)
+        obj = NULL;
+    return PyMethod_New(func, obj, type);
+}
+static PyObject*
+__Pyx_CyFunction_repr(__pyx_CyFunctionObject *op)
+{
+#if PY_MAJOR_VERSION >= 3
+    return PyUnicode_FromFormat("<cyfunction %U at %p>",
+                                op->func_qualname, (void *)op);
+#else
+    return PyString_FromFormat("<cyfunction %s at %p>",
+                               PyString_AsString(op->func_qualname), (void *)op);
+#endif
+}
+#if CYTHON_COMPILING_IN_PYPY
+static PyObject * __Pyx_CyFunction_Call(PyObject *func, PyObject *arg, PyObject *kw) {
+    PyCFunctionObject* f = (PyCFunctionObject*)func;
+    PyCFunction meth = PyCFunction_GET_FUNCTION(func);
+    PyObject *self = PyCFunction_GET_SELF(func);
+    Py_ssize_t size;
+    switch (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST)) {
+    case METH_VARARGS:
+        if (likely(kw == NULL) || PyDict_Size(kw) == 0)
+            return (*meth)(self, arg);
+        break;
+    case METH_VARARGS | METH_KEYWORDS:
+        return (*(PyCFunctionWithKeywords)meth)(self, arg, kw);
+    case METH_NOARGS:
+        if (likely(kw == NULL) || PyDict_Size(kw) == 0) {
+            size = PyTuple_GET_SIZE(arg);
+            if (size == 0)
+                return (*meth)(self, NULL);
+            PyErr_Format(PyExc_TypeError,
+                "%.200s() takes no arguments (%zd given)",
+                f->m_ml->ml_name, size);
+            return NULL;
+        }
+        break;
+    case METH_O:
+        if (likely(kw == NULL) || PyDict_Size(kw) == 0) {
+            size = PyTuple_GET_SIZE(arg);
+            if (size == 1)
+                return (*meth)(self, PyTuple_GET_ITEM(arg, 0));
+            PyErr_Format(PyExc_TypeError,
+                "%.200s() takes exactly one argument (%zd given)",
+                f->m_ml->ml_name, size);
+            return NULL;
+        }
+        break;
+    default:
+        PyErr_SetString(PyExc_SystemError, "Bad call flags in "
+                        "__Pyx_CyFunction_Call. METH_OLDARGS is no "
+                        "longer supported!");
+        return NULL;
+    }
+    PyErr_Format(PyExc_TypeError, "%.200s() takes no keyword arguments",
+                 f->m_ml->ml_name);
+    return NULL;
+}
+#else
+static PyObject * __Pyx_CyFunction_Call(PyObject *func, PyObject *arg, PyObject *kw) {
+	return PyCFunction_Call(func, arg, kw);
+}
+#endif
+static PyTypeObject __pyx_CyFunctionType_type = {
+    PyVarObject_HEAD_INIT(0, 0)
+    __Pyx_NAMESTR("cython_function_or_method"), /*tp_name*/
+    sizeof(__pyx_CyFunctionObject),   /*tp_basicsize*/
+    0,                                  /*tp_itemsize*/
+    (destructor) __Pyx_CyFunction_dealloc, /*tp_dealloc*/
+    0,                                  /*tp_print*/
+    0,                                  /*tp_getattr*/
+    0,                                  /*tp_setattr*/
+#if PY_MAJOR_VERSION < 3
+    0,                                  /*tp_compare*/
+#else
+    0,                                  /*reserved*/
+#endif
+    (reprfunc) __Pyx_CyFunction_repr,   /*tp_repr*/
+    0,                                  /*tp_as_number*/
+    0,                                  /*tp_as_sequence*/
+    0,                                  /*tp_as_mapping*/
+    0,                                  /*tp_hash*/
+    __Pyx_CyFunction_Call,              /*tp_call*/
+    0,                                  /*tp_str*/
+    0,                                  /*tp_getattro*/
+    0,                                  /*tp_setattro*/
+    0,                                  /*tp_as_buffer*/
+    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, /* tp_flags*/
+    0,                                  /*tp_doc*/
+    (traverseproc) __Pyx_CyFunction_traverse,   /*tp_traverse*/
+    (inquiry) __Pyx_CyFunction_clear,   /*tp_clear*/
+    0,                                  /*tp_richcompare*/
+    offsetof(__pyx_CyFunctionObject, func_weakreflist), /* tp_weaklistoffse */
+    0,                                  /*tp_iter*/
+    0,                                  /*tp_iternext*/
+    __pyx_CyFunction_methods,           /*tp_methods*/
+    __pyx_CyFunction_members,           /*tp_members*/
+    __pyx_CyFunction_getsets,           /*tp_getset*/
+    0,                                  /*tp_base*/
+    0,                                  /*tp_dict*/
+    __Pyx_CyFunction_descr_get,         /*tp_descr_get*/
+    0,                                  /*tp_descr_set*/
+    offsetof(__pyx_CyFunctionObject, func_dict),/*tp_dictoffset*/
+    0,                                  /*tp_init*/
+    0,                                  /*tp_alloc*/
+    0,                                  /*tp_new*/
+    0,                                  /*tp_free*/
+    0,                                  /*tp_is_gc*/
+    0,                                  /*tp_bases*/
+    0,                                  /*tp_mro*/
+    0,                                  /*tp_cache*/
+    0,                                  /*tp_subclasses*/
+    0,                                  /*tp_weaklist*/
+    0,                                  /*tp_del*/
+#if PY_VERSION_HEX >= 0x02060000
+    0,                                  /*tp_version_tag*/
+#endif
+};
+static int __Pyx_CyFunction_init(void) {
+#if !CYTHON_COMPILING_IN_PYPY
+    __pyx_CyFunctionType_type.tp_call = PyCFunction_Call;
+#endif
+    if (PyType_Ready(&__pyx_CyFunctionType_type) < 0)
+        return -1;
+    __pyx_CyFunctionType = &__pyx_CyFunctionType_type;
+    return 0;
+}
+static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *func, size_t size, int pyobjects) {
+    __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;
+    m->defaults = PyMem_Malloc(size);
+    if (!m->defaults)
+        return PyErr_NoMemory();
+    memset(m->defaults, 0, sizeof(size));
+    m->defaults_pyobjects = pyobjects;
+    return m->defaults;
+}
+static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *func, PyObject *tuple) {
+    __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;
+    m->defaults_tuple = tuple;
+    Py_INCREF(tuple);
+}
+
+static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) {
+    PyObject *empty_list = 0;
+    PyObject *module = 0;
+    PyObject *global_dict = 0;
+    PyObject *empty_dict = 0;
+    PyObject *list;
+    #if PY_VERSION_HEX < 0x03030000
+    PyObject *py_import = 0;
+    py_import = __Pyx_GetAttrString(__pyx_b, "__import__");
+    if (!py_import)
+        goto bad;
+    #endif
+    if (from_list)
+        list = from_list;
+    else {
+        empty_list = PyList_New(0);
+        if (!empty_list)
+            goto bad;
+        list = empty_list;
+    }
+    global_dict = PyModule_GetDict(__pyx_m);
+    if (!global_dict)
+        goto bad;
+    empty_dict = PyDict_New();
+    if (!empty_dict)
+        goto bad;
+    #if PY_VERSION_HEX >= 0x02050000
+    {
+        #if PY_MAJOR_VERSION >= 3
+        if (level == -1) {
+            if (strchr(__Pyx_MODULE_NAME, '.')) {
+                #if PY_VERSION_HEX < 0x03030000
+                PyObject *py_level = PyInt_FromLong(1);
+                if (!py_level)
+                    goto bad;
+                module = PyObject_CallFunctionObjArgs(py_import,
+                    name, global_dict, empty_dict, list, py_level, NULL);
+                Py_DECREF(py_level);
+                #else
+                module = PyImport_ImportModuleLevelObject(
+                    name, global_dict, empty_dict, list, 1);
+                #endif
+                if (!module) {
+                    if (!PyErr_ExceptionMatches(PyExc_ImportError))
+                        goto bad;
+                    PyErr_Clear();
+                }
+            }
+            level = 0; /* try absolute import on failure */
+        }
+        #endif
+        if (!module) {
+            #if PY_VERSION_HEX < 0x03030000
+            PyObject *py_level = PyInt_FromLong(level);
+            if (!py_level)
+                goto bad;
+            module = PyObject_CallFunctionObjArgs(py_import,
+                name, global_dict, empty_dict, list, py_level, NULL);
+            Py_DECREF(py_level);
+            #else
+            module = PyImport_ImportModuleLevelObject(
+                name, global_dict, empty_dict, list, level);
+            #endif
+        }
+    }
+    #else
+    if (level>0) {
+        PyErr_SetString(PyExc_RuntimeError, "Relative import is not supported for Python <=2.4.");
+        goto bad;
+    }
+    module = PyObject_CallFunctionObjArgs(py_import,
+        name, global_dict, empty_dict, list, NULL);
+    #endif
+bad:
+    #if PY_VERSION_HEX < 0x03030000
+    Py_XDECREF(py_import);
+    #endif
+    Py_XDECREF(empty_list);
+    Py_XDECREF(empty_dict);
+    return module;
+}
+
+static CYTHON_INLINE unsigned char __Pyx_PyInt_AsUnsignedChar(PyObject* x) {
+    const unsigned char neg_one = (unsigned char)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(unsigned char) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(unsigned char)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to unsigned char" :
+                    "value too large to convert to unsigned char");
+            }
+            return (unsigned char)-1;
+        }
+        return (unsigned char)val;
+    }
+    return (unsigned char)__Pyx_PyInt_AsUnsignedLong(x);
+}
+
+static CYTHON_INLINE unsigned short __Pyx_PyInt_AsUnsignedShort(PyObject* x) {
+    const unsigned short neg_one = (unsigned short)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(unsigned short) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(unsigned short)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to unsigned short" :
+                    "value too large to convert to unsigned short");
+            }
+            return (unsigned short)-1;
+        }
+        return (unsigned short)val;
+    }
+    return (unsigned short)__Pyx_PyInt_AsUnsignedLong(x);
+}
+
+static CYTHON_INLINE unsigned int __Pyx_PyInt_AsUnsignedInt(PyObject* x) {
+    const unsigned int neg_one = (unsigned int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(unsigned int) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(unsigned int)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to unsigned int" :
+                    "value too large to convert to unsigned int");
+            }
+            return (unsigned int)-1;
+        }
+        return (unsigned int)val;
+    }
+    return (unsigned int)__Pyx_PyInt_AsUnsignedLong(x);
+}
+
+static CYTHON_INLINE char __Pyx_PyInt_AsChar(PyObject* x) {
+    const char neg_one = (char)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(char) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(char)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to char" :
+                    "value too large to convert to char");
+            }
+            return (char)-1;
+        }
+        return (char)val;
+    }
+    return (char)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE short __Pyx_PyInt_AsShort(PyObject* x) {
+    const short neg_one = (short)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(short) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(short)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to short" :
+                    "value too large to convert to short");
+            }
+            return (short)-1;
+        }
+        return (short)val;
+    }
+    return (short)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE int __Pyx_PyInt_AsInt(PyObject* x) {
+    const int neg_one = (int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(int) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(int)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to int" :
+                    "value too large to convert to int");
+            }
+            return (int)-1;
+        }
+        return (int)val;
+    }
+    return (int)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE signed char __Pyx_PyInt_AsSignedChar(PyObject* x) {
+    const signed char neg_one = (signed char)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(signed char) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(signed char)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to signed char" :
+                    "value too large to convert to signed char");
+            }
+            return (signed char)-1;
+        }
+        return (signed char)val;
+    }
+    return (signed char)__Pyx_PyInt_AsSignedLong(x);
+}
+
+static CYTHON_INLINE signed short __Pyx_PyInt_AsSignedShort(PyObject* x) {
+    const signed short neg_one = (signed short)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(signed short) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(signed short)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to signed short" :
+                    "value too large to convert to signed short");
+            }
+            return (signed short)-1;
+        }
+        return (signed short)val;
+    }
+    return (signed short)__Pyx_PyInt_AsSignedLong(x);
+}
+
+static CYTHON_INLINE signed int __Pyx_PyInt_AsSignedInt(PyObject* x) {
+    const signed int neg_one = (signed int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(signed int) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(signed int)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to signed int" :
+                    "value too large to convert to signed int");
+            }
+            return (signed int)-1;
+        }
+        return (signed int)val;
+    }
+    return (signed int)__Pyx_PyInt_AsSignedLong(x);
+}
+
+static CYTHON_INLINE int __Pyx_PyInt_AsLongDouble(PyObject* x) {
+    const int neg_one = (int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(int) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(int)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to int" :
+                    "value too large to convert to int");
+            }
+            return (int)-1;
+        }
+        return (int)val;
+    }
+    return (int)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE unsigned long __Pyx_PyInt_AsUnsignedLong(PyObject* x) {
+    const unsigned long neg_one = (unsigned long)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to unsigned long");
+            return (unsigned long)-1;
+        }
+        return (unsigned long)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to unsigned long");
+                return (unsigned long)-1;
+            }
+            return (unsigned long)PyLong_AsUnsignedLong(x);
+        } else {
+            return (unsigned long)PyLong_AsLong(x);
+        }
+    } else {
+        unsigned long val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (unsigned long)-1;
+        val = __Pyx_PyInt_AsUnsignedLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE unsigned PY_LONG_LONG __Pyx_PyInt_AsUnsignedLongLong(PyObject* x) {
+    const unsigned PY_LONG_LONG neg_one = (unsigned PY_LONG_LONG)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to unsigned PY_LONG_LONG");
+            return (unsigned PY_LONG_LONG)-1;
+        }
+        return (unsigned PY_LONG_LONG)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to unsigned PY_LONG_LONG");
+                return (unsigned PY_LONG_LONG)-1;
+            }
+            return (unsigned PY_LONG_LONG)PyLong_AsUnsignedLongLong(x);
+        } else {
+            return (unsigned PY_LONG_LONG)PyLong_AsLongLong(x);
+        }
+    } else {
+        unsigned PY_LONG_LONG val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (unsigned PY_LONG_LONG)-1;
+        val = __Pyx_PyInt_AsUnsignedLongLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE long __Pyx_PyInt_AsLong(PyObject* x) {
+    const long neg_one = (long)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to long");
+            return (long)-1;
+        }
+        return (long)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to long");
+                return (long)-1;
+            }
+            return (long)PyLong_AsUnsignedLong(x);
+        } else {
+            return (long)PyLong_AsLong(x);
+        }
+    } else {
+        long val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (long)-1;
+        val = __Pyx_PyInt_AsLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE PY_LONG_LONG __Pyx_PyInt_AsLongLong(PyObject* x) {
+    const PY_LONG_LONG neg_one = (PY_LONG_LONG)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to PY_LONG_LONG");
+            return (PY_LONG_LONG)-1;
+        }
+        return (PY_LONG_LONG)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to PY_LONG_LONG");
+                return (PY_LONG_LONG)-1;
+            }
+            return (PY_LONG_LONG)PyLong_AsUnsignedLongLong(x);
+        } else {
+            return (PY_LONG_LONG)PyLong_AsLongLong(x);
+        }
+    } else {
+        PY_LONG_LONG val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (PY_LONG_LONG)-1;
+        val = __Pyx_PyInt_AsLongLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE signed long __Pyx_PyInt_AsSignedLong(PyObject* x) {
+    const signed long neg_one = (signed long)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to signed long");
+            return (signed long)-1;
+        }
+        return (signed long)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to signed long");
+                return (signed long)-1;
+            }
+            return (signed long)PyLong_AsUnsignedLong(x);
+        } else {
+            return (signed long)PyLong_AsLong(x);
+        }
+    } else {
+        signed long val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (signed long)-1;
+        val = __Pyx_PyInt_AsSignedLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE signed PY_LONG_LONG __Pyx_PyInt_AsSignedLongLong(PyObject* x) {
+    const signed PY_LONG_LONG neg_one = (signed PY_LONG_LONG)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to signed PY_LONG_LONG");
+            return (signed PY_LONG_LONG)-1;
+        }
+        return (signed PY_LONG_LONG)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to signed PY_LONG_LONG");
+                return (signed PY_LONG_LONG)-1;
+            }
+            return (signed PY_LONG_LONG)PyLong_AsUnsignedLongLong(x);
+        } else {
+            return (signed PY_LONG_LONG)PyLong_AsLongLong(x);
+        }
+    } else {
+        signed PY_LONG_LONG val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (signed PY_LONG_LONG)-1;
+        val = __Pyx_PyInt_AsSignedLongLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static int __Pyx_check_binary_version(void) {
+    char ctversion[4], rtversion[4];
+    PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION);
+    PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion());
+    if (ctversion[0] != rtversion[0] || ctversion[2] != rtversion[2]) {
+        char message[200];
+        PyOS_snprintf(message, sizeof(message),
+                      "compiletime version %s of module '%.100s' "
+                      "does not match runtime version %s",
+                      ctversion, __Pyx_MODULE_NAME, rtversion);
+        #if PY_VERSION_HEX < 0x02050000
+        return PyErr_Warn(NULL, message);
+        #else
+        return PyErr_WarnEx(NULL, message, 1);
+        #endif
+    }
+    return 0;
+}
+
+static int __Pyx_ExportFunction(const char *name, void (*f)(void), const char *sig) {
+    PyObject *d = 0;
+    PyObject *cobj = 0;
+    union {
+        void (*fp)(void);
+        void *p;
+    } tmp;
+    d = PyObject_GetAttrString(__pyx_m, (char *)"__pyx_capi__");
+    if (!d) {
+        PyErr_Clear();
+        d = PyDict_New();
+        if (!d)
+            goto bad;
+        Py_INCREF(d);
+        if (PyModule_AddObject(__pyx_m, (char *)"__pyx_capi__", d) < 0)
+            goto bad;
+    }
+    tmp.fp = f;
+#if PY_VERSION_HEX >= 0x02070000 && !(PY_MAJOR_VERSION==3&&PY_MINOR_VERSION==0)
+    cobj = PyCapsule_New(tmp.p, sig, 0);
+#else
+    cobj = PyCObject_FromVoidPtrAndDesc(tmp.p, (void *)sig, 0);
+#endif
+    if (!cobj)
+        goto bad;
+    if (PyDict_SetItemString(d, name, cobj) < 0)
+        goto bad;
+    Py_DECREF(cobj);
+    Py_DECREF(d);
+    return 0;
+bad:
+    Py_XDECREF(cobj);
+    Py_XDECREF(d);
+    return -1;
+}
+
+#ifndef __PYX_HAVE_RT_ImportModule
+#define __PYX_HAVE_RT_ImportModule
+static PyObject *__Pyx_ImportModule(const char *name) {
+    PyObject *py_name = 0;
+    PyObject *py_module = 0;
+    py_name = __Pyx_PyIdentifier_FromString(name);
+    if (!py_name)
+        goto bad;
+    py_module = PyImport_Import(py_name);
+    Py_DECREF(py_name);
+    return py_module;
+bad:
+    Py_XDECREF(py_name);
+    return 0;
+}
+#endif
+
+#ifndef __PYX_HAVE_RT_ImportFunction
+#define __PYX_HAVE_RT_ImportFunction
+static int __Pyx_ImportFunction(PyObject *module, const char *funcname, void (**f)(void), const char *sig) {
+    PyObject *d = 0;
+    PyObject *cobj = 0;
+    union {
+        void (*fp)(void);
+        void *p;
+    } tmp;
+    d = PyObject_GetAttrString(module, (char *)"__pyx_capi__");
+    if (!d)
+        goto bad;
+    cobj = PyDict_GetItemString(d, funcname);
+    if (!cobj) {
+        PyErr_Format(PyExc_ImportError,
+            "%s does not export expected C function %s",
+                PyModule_GetName(module), funcname);
+        goto bad;
+    }
+#if PY_VERSION_HEX >= 0x02070000 && !(PY_MAJOR_VERSION==3 && PY_MINOR_VERSION==0)
+    if (!PyCapsule_IsValid(cobj, sig)) {
+        PyErr_Format(PyExc_TypeError,
+            "C function %s.%s has wrong signature (expected %s, got %s)",
+             PyModule_GetName(module), funcname, sig, PyCapsule_GetName(cobj));
+        goto bad;
+    }
+    tmp.p = PyCapsule_GetPointer(cobj, sig);
+#else
+    {const char *desc, *s1, *s2;
+    desc = (const char *)PyCObject_GetDesc(cobj);
+    if (!desc)
+        goto bad;
+    s1 = desc; s2 = sig;
+    while (*s1 != '\0' && *s1 == *s2) { s1++; s2++; }
+    if (*s1 != *s2) {
+        PyErr_Format(PyExc_TypeError,
+            "C function %s.%s has wrong signature (expected %s, got %s)",
+             PyModule_GetName(module), funcname, sig, desc);
+        goto bad;
+    }
+    tmp.p = PyCObject_AsVoidPtr(cobj);}
+#endif
+    *f = tmp.fp;
+    if (!(*f))
+        goto bad;
+    Py_DECREF(d);
+    return 0;
+bad:
+    Py_XDECREF(d);
+    return -1;
+}
+#endif
+
+static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) {
+    int start = 0, mid = 0, end = count - 1;
+    if (end >= 0 && code_line > entries[end].code_line) {
+        return count;
+    }
+    while (start < end) {
+        mid = (start + end) / 2;
+        if (code_line < entries[mid].code_line) {
+            end = mid;
+        } else if (code_line > entries[mid].code_line) {
+             start = mid + 1;
+        } else {
+            return mid;
+        }
+    }
+    if (code_line <= entries[mid].code_line) {
+        return mid;
+    } else {
+        return mid + 1;
+    }
+}
+static PyCodeObject *__pyx_find_code_object(int code_line) {
+    PyCodeObject* code_object;
+    int pos;
+    if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) {
+        return NULL;
+    }
+    pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
+    if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) {
+        return NULL;
+    }
+    code_object = __pyx_code_cache.entries[pos].code_object;
+    Py_INCREF(code_object);
+    return code_object;
+}
+static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) {
+    int pos, i;
+    __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries;
+    if (unlikely(!code_line)) {
+        return;
+    }
+    if (unlikely(!entries)) {
+        entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry));
+        if (likely(entries)) {
+            __pyx_code_cache.entries = entries;
+            __pyx_code_cache.max_count = 64;
+            __pyx_code_cache.count = 1;
+            entries[0].code_line = code_line;
+            entries[0].code_object = code_object;
+            Py_INCREF(code_object);
+        }
+        return;
+    }
+    pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
+    if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) {
+        PyCodeObject* tmp = entries[pos].code_object;
+        entries[pos].code_object = code_object;
+        Py_DECREF(tmp);
+        return;
+    }
+    if (__pyx_code_cache.count == __pyx_code_cache.max_count) {
+        int new_max = __pyx_code_cache.max_count + 64;
+        entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc(
+            __pyx_code_cache.entries, new_max*sizeof(__Pyx_CodeObjectCacheEntry));
+        if (unlikely(!entries)) {
+            return;
+        }
+        __pyx_code_cache.entries = entries;
+        __pyx_code_cache.max_count = new_max;
+    }
+    for (i=__pyx_code_cache.count; i>pos; i--) {
+        entries[i] = entries[i-1];
+    }
+    entries[pos].code_line = code_line;
+    entries[pos].code_object = code_object;
+    __pyx_code_cache.count++;
+    Py_INCREF(code_object);
+}
+
+#include "compile.h"
+#include "frameobject.h"
+#include "traceback.h"
+static PyCodeObject* __Pyx_CreateCodeObjectForTraceback(
+            const char *funcname, int c_line,
+            int py_line, const char *filename) {
+    PyCodeObject *py_code = 0;
+    PyObject *py_srcfile = 0;
+    PyObject *py_funcname = 0;
+    #if PY_MAJOR_VERSION < 3
+    py_srcfile = PyString_FromString(filename);
+    #else
+    py_srcfile = PyUnicode_FromString(filename);
+    #endif
+    if (!py_srcfile) goto bad;
+    if (c_line) {
+        #if PY_MAJOR_VERSION < 3
+        py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
+        #else
+        py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
+        #endif
+    }
+    else {
+        #if PY_MAJOR_VERSION < 3
+        py_funcname = PyString_FromString(funcname);
+        #else
+        py_funcname = PyUnicode_FromString(funcname);
+        #endif
+    }
+    if (!py_funcname) goto bad;
+    py_code = __Pyx_PyCode_New(
+        0,            /*int argcount,*/
+        0,            /*int kwonlyargcount,*/
+        0,            /*int nlocals,*/
+        0,            /*int stacksize,*/
+        0,            /*int flags,*/
+        __pyx_empty_bytes, /*PyObject *code,*/
+        __pyx_empty_tuple, /*PyObject *consts,*/
+        __pyx_empty_tuple, /*PyObject *names,*/
+        __pyx_empty_tuple, /*PyObject *varnames,*/
+        __pyx_empty_tuple, /*PyObject *freevars,*/
+        __pyx_empty_tuple, /*PyObject *cellvars,*/
+        py_srcfile,   /*PyObject *filename,*/
+        py_funcname,  /*PyObject *name,*/
+        py_line,      /*int firstlineno,*/
+        __pyx_empty_bytes  /*PyObject *lnotab*/
+    );
+    Py_DECREF(py_srcfile);
+    Py_DECREF(py_funcname);
+    return py_code;
+bad:
+    Py_XDECREF(py_srcfile);
+    Py_XDECREF(py_funcname);
+    return NULL;
+}
+static void __Pyx_AddTraceback(const char *funcname, int c_line,
+                               int py_line, const char *filename) {
+    PyCodeObject *py_code = 0;
+    PyObject *py_globals = 0;
+    PyFrameObject *py_frame = 0;
+    py_code = __pyx_find_code_object(c_line ? c_line : py_line);
+    if (!py_code) {
+        py_code = __Pyx_CreateCodeObjectForTraceback(
+            funcname, c_line, py_line, filename);
+        if (!py_code) goto bad;
+        __pyx_insert_code_object(c_line ? c_line : py_line, py_code);
+    }
+    py_globals = PyModule_GetDict(__pyx_m);
+    if (!py_globals) goto bad;
+    py_frame = PyFrame_New(
+        PyThreadState_GET(), /*PyThreadState *tstate,*/
+        py_code,             /*PyCodeObject *code,*/
+        py_globals,          /*PyObject *globals,*/
+        0                    /*PyObject *locals*/
+    );
+    if (!py_frame) goto bad;
+    py_frame->f_lineno = py_line;
+    PyTraceBack_Here(py_frame);
+bad:
+    Py_XDECREF(py_code);
+    Py_XDECREF(py_frame);
+}
+
+static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
+    while (t->p) {
+        #if PY_MAJOR_VERSION < 3
+        if (t->is_unicode) {
+            *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL);
+        } else if (t->intern) {
+            *t->p = PyString_InternFromString(t->s);
+        } else {
+            *t->p = PyString_FromStringAndSize(t->s, t->n - 1);
+        }
+        #else  /* Python 3+ has unicode identifiers */
+        if (t->is_unicode | t->is_str) {
+            if (t->intern) {
+                *t->p = PyUnicode_InternFromString(t->s);
+            } else if (t->encoding) {
+                *t->p = PyUnicode_Decode(t->s, t->n - 1, t->encoding, NULL);
+            } else {
+                *t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1);
+            }
+        } else {
+            *t->p = PyBytes_FromStringAndSize(t->s, t->n - 1);
+        }
+        #endif
+        if (!*t->p)
+            return -1;
+        ++t;
+    }
+    return 0;
+}
+
+static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) {
+   int is_true = x == Py_True;
+   if (is_true | (x == Py_False) | (x == Py_None)) return is_true;
+   else return PyObject_IsTrue(x);
+}
+static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x) {
+  PyNumberMethods *m;
+  const char *name = NULL;
+  PyObject *res = NULL;
+#if PY_VERSION_HEX < 0x03000000
+  if (PyInt_Check(x) || PyLong_Check(x))
+#else
+  if (PyLong_Check(x))
+#endif
+    return Py_INCREF(x), x;
+  m = Py_TYPE(x)->tp_as_number;
+#if PY_VERSION_HEX < 0x03000000
+  if (m && m->nb_int) {
+    name = "int";
+    res = PyNumber_Int(x);
+  }
+  else if (m && m->nb_long) {
+    name = "long";
+    res = PyNumber_Long(x);
+  }
+#else
+  if (m && m->nb_int) {
+    name = "int";
+    res = PyNumber_Long(x);
+  }
+#endif
+  if (res) {
+#if PY_VERSION_HEX < 0x03000000
+    if (!PyInt_Check(res) && !PyLong_Check(res)) {
+#else
+    if (!PyLong_Check(res)) {
+#endif
+      PyErr_Format(PyExc_TypeError,
+                   "__%s__ returned non-%s (type %.200s)",
+                   name, name, Py_TYPE(res)->tp_name);
+      Py_DECREF(res);
+      return NULL;
+    }
+  }
+  else if (!PyErr_Occurred()) {
+    PyErr_SetString(PyExc_TypeError,
+                    "an integer is required");
+  }
+  return res;
+}
+static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
+  Py_ssize_t ival;
+  PyObject* x = PyNumber_Index(b);
+  if (!x) return -1;
+  ival = PyInt_AsSsize_t(x);
+  Py_DECREF(x);
+  return ival;
+}
+static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) {
+#if PY_VERSION_HEX < 0x02050000
+   if (ival <= LONG_MAX)
+       return PyInt_FromLong((long)ival);
+   else {
+       unsigned char *bytes = (unsigned char *) &ival;
+       int one = 1; int little = (int)*(unsigned char*)&one;
+       return _PyLong_FromByteArray(bytes, sizeof(size_t), little, 0);
+   }
+#else
+   return PyInt_FromSize_t(ival);
+#endif
+}
+static CYTHON_INLINE size_t __Pyx_PyInt_AsSize_t(PyObject* x) {
+   unsigned PY_LONG_LONG val = __Pyx_PyInt_AsUnsignedLongLong(x);
+   if (unlikely(val == (unsigned PY_LONG_LONG)-1 && PyErr_Occurred())) {
+       return (size_t)-1;
+   } else if (unlikely(val != (unsigned PY_LONG_LONG)(size_t)val)) {
+       PyErr_SetString(PyExc_OverflowError,
+                       "value too large to convert to size_t");
+       return (size_t)-1;
+   }
+   return (size_t)val;
+}
+
+
+#endif /* Py_PYTHON_H */
diff --git a/h5py/h5.pxd b/h5py/h5.pxd
new file mode 100644
index 0000000..38bd15c
--- /dev/null
+++ b/h5py/h5.pxd
@@ -0,0 +1,24 @@
+# This file is part of h5py, a Python interface to the HDF5 library.
+#
+# http://www.h5py.org
+#
+# Copyright 2008-2013 Andrew Collette and contributors
+#
+# License:  Standard 3-clause BSD; see "license.txt" for full license terms
+#           and contributor agreement.
+
+from defs cimport *
+
+cdef class H5PYConfig:
+
+    cdef readonly object _r_name
+    cdef readonly object _i_name
+    cdef readonly object _f_name
+    cdef readonly object _t_name
+    cdef readonly object API_16
+    cdef readonly object API_18
+    cdef readonly object _bytestrings
+
+cpdef H5PYConfig get_config()
+
+
diff --git a/h5py/h5.pyx b/h5py/h5.pyx
new file mode 100644
index 0000000..56a7c66
--- /dev/null
+++ b/h5py/h5.pyx
@@ -0,0 +1,150 @@
+# This file is part of h5py, a Python interface to the HDF5 library.
+#
+# http://www.h5py.org
+#
+# Copyright 2008-2013 Andrew Collette and contributors
+#
+# License:  Standard 3-clause BSD; see "license.txt" for full license terms
+#           and contributor agreement.
+
+include "config.pxi"
+
+from defs cimport *
+
+ITER_INC    = H5_ITER_INC     # Increasing order
+ITER_DEC    = H5_ITER_DEC     # Decreasing order
+ITER_NATIVE = H5_ITER_NATIVE  # No particular order, whatever is fastest
+
+INDEX_NAME      = H5_INDEX_NAME       # Index on names      
+INDEX_CRT_ORDER = H5_INDEX_CRT_ORDER  # Index on creation order    
+
+class ByteStringContext(object):
+
+    def __init__(self):
+        self._readbytes = False
+
+    def __bool__(self):
+        return self._readbytes
+
+    def __nonzero__(self):
+        return self.__bool__()
+
+    def __enter__(self):
+        self._readbytes = True
+
+    def __exit__(self, *args):
+        self._readbytes = False
+
+cdef class H5PYConfig:
+
+    """
+        Provides runtime access to global library settings.  You retrieve the
+        master copy of this object by calling h5py.get_config().
+
+        complex_names (tuple, r/w)
+            Settable 2-tuple controlling how complex numbers are saved.
+            Defaults to ('r','i').
+
+        bool_names (tuple, r/w)
+            Settable 2-tuple controlling the HDF5 enum names used for boolean
+            values.  Defaults to ('FALSE', 'TRUE') for values 0 and 1.
+    """
+
+    def __init__(self):
+        self._r_name = b'r'
+        self._i_name = b'i'
+        self._f_name = b'FALSE'
+        self._t_name = b'TRUE'
+        self._bytestrings = ByteStringContext()
+
+    property complex_names:
+        """ Settable 2-tuple controlling how complex numbers are saved.
+
+        Format is (real_name, imag_name), defaulting to ('r','i').
+        """
+
+        def __get__(self):
+            import sys
+            def handle_val(val):
+                if sys.version[0] == '3':
+                    return val.decode('utf8')
+                return val
+            return (handle_val(self._r_name), handle_val(self._i_name))
+
+        def __set__(self, val):
+            def handle_val(val):
+                if isinstance(val, unicode):
+                    return val.encode('utf8')
+                elif isinstance(val, bytes):
+                    return val
+                else:
+                    return bytes(val)
+            try:
+                if len(val) != 2: raise TypeError()
+                r = handle_val(val[0])
+                i = handle_val(val[1])
+            except Exception:
+                raise TypeError("complex_names must be a length-2 sequence of strings (real, img)")
+            self._r_name = r
+            self._i_name = i
+
+    property bool_names:
+        """ Settable 2-tuple controlling HDF5 ENUM names for boolean types.
+
+        Format is (false_name, real_name), defaulting to ('FALSE', 'TRUE').
+        """
+        def __get__(self):
+            return (self._f_name, self._t_name)
+
+        def __set__(self, val):
+            try:
+                if len(val) != 2: raise TypeError()
+                f = str(val[0])
+                t = str(val[1])
+            except Exception:
+                raise TypeError("bool_names must be a length-2 sequence of of names (false, true)")
+            self._f_name = f
+            self._t_name = t
+
+    property read_byte_strings:
+        """ Returns a context manager which forces all strings to be returned
+        as byte strings. """
+        
+        def __get__(self):
+            return self._bytestrings
+
+    property mpi:
+        """ Boolean indicating if Parallel HDF5 is available """
+        def __get__(self):
+            IF MPI:
+                return True
+            ELSE:
+                return False
+
+cdef H5PYConfig cfg = H5PYConfig()
+
+cpdef H5PYConfig get_config():
+    """() => H5PYConfig
+
+    Get a reference to the global library configuration object.
+    """
+    return cfg
+
+def get_libversion():
+    """ () => TUPLE (major, minor, release)
+
+        Retrieve the HDF5 library version as a 3-tuple.
+    """
+    cdef unsigned int major
+    cdef unsigned int minor
+    cdef unsigned int release
+    cdef herr_t retval
+    
+    H5get_libversion(&major, &minor, &release)
+
+    return (major, minor, release)
+
+
+
+
+
diff --git a/h5py/h5a.c b/h5py/h5a.c
new file mode 100644
index 0000000..44136e4
--- /dev/null
+++ b/h5py/h5a.c
@@ -0,0 +1,7487 @@
+/* Generated by Cython 0.18 on Mon Dec  9 16:00:33 2013 */
+
+#define PY_SSIZE_T_CLEAN
+#include "Python.h"
+#ifndef Py_PYTHON_H
+    #error Python headers needed to compile C extensions, please install development version of Python.
+#elif PY_VERSION_HEX < 0x02040000
+    #error Cython requires Python 2.4+.
+#else
+#include <stddef.h> /* For offsetof */
+#ifndef offsetof
+#define offsetof(type, member) ( (size_t) & ((type*)0) -> member )
+#endif
+#if !defined(WIN32) && !defined(MS_WINDOWS)
+  #ifndef __stdcall
+    #define __stdcall
+  #endif
+  #ifndef __cdecl
+    #define __cdecl
+  #endif
+  #ifndef __fastcall
+    #define __fastcall
+  #endif
+#endif
+#ifndef DL_IMPORT
+  #define DL_IMPORT(t) t
+#endif
+#ifndef DL_EXPORT
+  #define DL_EXPORT(t) t
+#endif
+#ifndef PY_LONG_LONG
+  #define PY_LONG_LONG LONG_LONG
+#endif
+#ifndef Py_HUGE_VAL
+  #define Py_HUGE_VAL HUGE_VAL
+#endif
+#ifdef PYPY_VERSION
+#define CYTHON_COMPILING_IN_PYPY 1
+#define CYTHON_COMPILING_IN_CPYTHON 0
+#else
+#define CYTHON_COMPILING_IN_PYPY 0
+#define CYTHON_COMPILING_IN_CPYTHON 1
+#endif
+#if PY_VERSION_HEX < 0x02050000
+  typedef int Py_ssize_t;
+  #define PY_SSIZE_T_MAX INT_MAX
+  #define PY_SSIZE_T_MIN INT_MIN
+  #define PY_FORMAT_SIZE_T ""
+  #define CYTHON_FORMAT_SSIZE_T ""
+  #define PyInt_FromSsize_t(z) PyInt_FromLong(z)
+  #define PyInt_AsSsize_t(o)   __Pyx_PyInt_AsInt(o)
+  #define PyNumber_Index(o)    ((PyNumber_Check(o) && !PyFloat_Check(o)) ? PyNumber_Int(o) : \
+                                (PyErr_Format(PyExc_TypeError, \
+                                              "expected index value, got %.200s", Py_TYPE(o)->tp_name), \
+                                 (PyObject*)0))
+  #define __Pyx_PyIndex_Check(o) (PyNumber_Check(o) && !PyFloat_Check(o) && \
+                                  !PyComplex_Check(o))
+  #define PyIndex_Check __Pyx_PyIndex_Check
+  #define PyErr_WarnEx(category, message, stacklevel) PyErr_Warn(category, message)
+  #define __PYX_BUILD_PY_SSIZE_T "i"
+#else
+  #define __PYX_BUILD_PY_SSIZE_T "n"
+  #define CYTHON_FORMAT_SSIZE_T "z"
+  #define __Pyx_PyIndex_Check PyIndex_Check
+#endif
+#if PY_VERSION_HEX < 0x02060000
+  #define Py_REFCNT(ob) (((PyObject*)(ob))->ob_refcnt)
+  #define Py_TYPE(ob)   (((PyObject*)(ob))->ob_type)
+  #define Py_SIZE(ob)   (((PyVarObject*)(ob))->ob_size)
+  #define PyVarObject_HEAD_INIT(type, size) \
+          PyObject_HEAD_INIT(type) size,
+  #define PyType_Modified(t)
+  typedef struct {
+     void *buf;
+     PyObject *obj;
+     Py_ssize_t len;
+     Py_ssize_t itemsize;
+     int readonly;
+     int ndim;
+     char *format;
+     Py_ssize_t *shape;
+     Py_ssize_t *strides;
+     Py_ssize_t *suboffsets;
+     void *internal;
+  } Py_buffer;
+  #define PyBUF_SIMPLE 0
+  #define PyBUF_WRITABLE 0x0001
+  #define PyBUF_FORMAT 0x0004
+  #define PyBUF_ND 0x0008
+  #define PyBUF_STRIDES (0x0010 | PyBUF_ND)
+  #define PyBUF_C_CONTIGUOUS (0x0020 | PyBUF_STRIDES)
+  #define PyBUF_F_CONTIGUOUS (0x0040 | PyBUF_STRIDES)
+  #define PyBUF_ANY_CONTIGUOUS (0x0080 | PyBUF_STRIDES)
+  #define PyBUF_INDIRECT (0x0100 | PyBUF_STRIDES)
+  #define PyBUF_RECORDS (PyBUF_STRIDES | PyBUF_FORMAT | PyBUF_WRITABLE)
+  #define PyBUF_FULL (PyBUF_INDIRECT | PyBUF_FORMAT | PyBUF_WRITABLE)
+  typedef int (*getbufferproc)(PyObject *, Py_buffer *, int);
+  typedef void (*releasebufferproc)(PyObject *, Py_buffer *);
+#endif
+#if PY_MAJOR_VERSION < 3
+  #define __Pyx_BUILTIN_MODULE_NAME "__builtin__"
+  #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) \
+          PyCode_New(a, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
+#else
+  #define __Pyx_BUILTIN_MODULE_NAME "builtins"
+  #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) \
+          PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
+#endif
+#if PY_MAJOR_VERSION < 3 && PY_MINOR_VERSION < 6
+  #define PyUnicode_FromString(s) PyUnicode_Decode(s, strlen(s), "UTF-8", "strict")
+#endif
+#if PY_MAJOR_VERSION >= 3
+  #define Py_TPFLAGS_CHECKTYPES 0
+  #define Py_TPFLAGS_HAVE_INDEX 0
+#endif
+#if (PY_VERSION_HEX < 0x02060000) || (PY_MAJOR_VERSION >= 3)
+  #define Py_TPFLAGS_HAVE_NEWBUFFER 0
+#endif
+#if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND)
+  #define CYTHON_PEP393_ENABLED 1
+  #define __Pyx_PyUnicode_READY(op)       (likely(PyUnicode_IS_READY(op)) ? \
+                                              0 : _PyUnicode_Ready((PyObject *)(op)))
+  #define __Pyx_PyUnicode_GET_LENGTH(u)   PyUnicode_GET_LENGTH(u)
+  #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i)
+  #define __Pyx_PyUnicode_READ(k, d, i)   PyUnicode_READ(k, d, i)
+#else
+  #define CYTHON_PEP393_ENABLED 0
+  #define __Pyx_PyUnicode_READY(op)       (0)
+  #define __Pyx_PyUnicode_GET_LENGTH(u)   PyUnicode_GET_SIZE(u)
+  #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i]))
+  #define __Pyx_PyUnicode_READ(k, d, i)   ((k=k), (Py_UCS4)(((Py_UNICODE*)d)[i]))
+#endif
+#if PY_MAJOR_VERSION >= 3
+  #define PyBaseString_Type            PyUnicode_Type
+  #define PyStringObject               PyUnicodeObject
+  #define PyString_Type                PyUnicode_Type
+  #define PyString_Check               PyUnicode_Check
+  #define PyString_CheckExact          PyUnicode_CheckExact
+#endif
+#if PY_VERSION_HEX < 0x02060000
+  #define PyBytesObject                PyStringObject
+  #define PyBytes_Type                 PyString_Type
+  #define PyBytes_Check                PyString_Check
+  #define PyBytes_CheckExact           PyString_CheckExact
+  #define PyBytes_FromString           PyString_FromString
+  #define PyBytes_FromStringAndSize    PyString_FromStringAndSize
+  #define PyBytes_FromFormat           PyString_FromFormat
+  #define PyBytes_DecodeEscape         PyString_DecodeEscape
+  #define PyBytes_AsString             PyString_AsString
+  #define PyBytes_AsStringAndSize      PyString_AsStringAndSize
+  #define PyBytes_Size                 PyString_Size
+  #define PyBytes_AS_STRING            PyString_AS_STRING
+  #define PyBytes_GET_SIZE             PyString_GET_SIZE
+  #define PyBytes_Repr                 PyString_Repr
+  #define PyBytes_Concat               PyString_Concat
+  #define PyBytes_ConcatAndDel         PyString_ConcatAndDel
+#endif
+#if PY_VERSION_HEX < 0x02060000
+  #define PySet_Check(obj)             PyObject_TypeCheck(obj, &PySet_Type)
+  #define PyFrozenSet_Check(obj)       PyObject_TypeCheck(obj, &PyFrozenSet_Type)
+#endif
+#ifndef PySet_CheckExact
+  #define PySet_CheckExact(obj)        (Py_TYPE(obj) == &PySet_Type)
+#endif
+#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type)
+#if PY_MAJOR_VERSION >= 3
+  #define PyIntObject                  PyLongObject
+  #define PyInt_Type                   PyLong_Type
+  #define PyInt_Check(op)              PyLong_Check(op)
+  #define PyInt_CheckExact(op)         PyLong_CheckExact(op)
+  #define PyInt_FromString             PyLong_FromString
+  #define PyInt_FromUnicode            PyLong_FromUnicode
+  #define PyInt_FromLong               PyLong_FromLong
+  #define PyInt_FromSize_t             PyLong_FromSize_t
+  #define PyInt_FromSsize_t            PyLong_FromSsize_t
+  #define PyInt_AsLong                 PyLong_AsLong
+  #define PyInt_AS_LONG                PyLong_AS_LONG
+  #define PyInt_AsSsize_t              PyLong_AsSsize_t
+  #define PyInt_AsUnsignedLongMask     PyLong_AsUnsignedLongMask
+  #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask
+#endif
+#if PY_MAJOR_VERSION >= 3
+  #define PyBoolObject                 PyLongObject
+#endif
+#if PY_VERSION_HEX < 0x03020000
+  typedef long Py_hash_t;
+  #define __Pyx_PyInt_FromHash_t PyInt_FromLong
+  #define __Pyx_PyInt_AsHash_t   PyInt_AsLong
+#else
+  #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t
+  #define __Pyx_PyInt_AsHash_t   PyInt_AsSsize_t
+#endif
+#if (PY_MAJOR_VERSION < 3) || (PY_VERSION_HEX >= 0x03010300)
+  #define __Pyx_PySequence_GetSlice(obj, a, b) PySequence_GetSlice(obj, a, b)
+  #define __Pyx_PySequence_SetSlice(obj, a, b, value) PySequence_SetSlice(obj, a, b, value)
+  #define __Pyx_PySequence_DelSlice(obj, a, b) PySequence_DelSlice(obj, a, b)
+#else
+  #define __Pyx_PySequence_GetSlice(obj, a, b) (unlikely(!(obj)) ? \
+        (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), (PyObject*)0) : \
+        (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_GetSlice(obj, a, b)) : \
+            (PyErr_Format(PyExc_TypeError, "'%.200s' object is unsliceable", (obj)->ob_type->tp_name), (PyObject*)0)))
+  #define __Pyx_PySequence_SetSlice(obj, a, b, value) (unlikely(!(obj)) ? \
+        (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), -1) : \
+        (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_SetSlice(obj, a, b, value)) : \
+            (PyErr_Format(PyExc_TypeError, "'%.200s' object doesn't support slice assignment", (obj)->ob_type->tp_name), -1)))
+  #define __Pyx_PySequence_DelSlice(obj, a, b) (unlikely(!(obj)) ? \
+        (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), -1) : \
+        (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_DelSlice(obj, a, b)) : \
+            (PyErr_Format(PyExc_TypeError, "'%.200s' object doesn't support slice deletion", (obj)->ob_type->tp_name), -1)))
+#endif
+#if PY_MAJOR_VERSION >= 3
+  #define PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, self) : PyInstanceMethod_New(func))
+#endif
+#if PY_VERSION_HEX < 0x02050000
+  #define __Pyx_GetAttrString(o,n)   PyObject_GetAttrString((o),((char *)(n)))
+  #define __Pyx_SetAttrString(o,n,a) PyObject_SetAttrString((o),((char *)(n)),(a))
+  #define __Pyx_DelAttrString(o,n)   PyObject_DelAttrString((o),((char *)(n)))
+#else
+  #define __Pyx_GetAttrString(o,n)   PyObject_GetAttrString((o),(n))
+  #define __Pyx_SetAttrString(o,n,a) PyObject_SetAttrString((o),(n),(a))
+  #define __Pyx_DelAttrString(o,n)   PyObject_DelAttrString((o),(n))
+#endif
+#if PY_VERSION_HEX < 0x02050000
+  #define __Pyx_NAMESTR(n) ((char *)(n))
+  #define __Pyx_DOCSTR(n)  ((char *)(n))
+#else
+  #define __Pyx_NAMESTR(n) (n)
+  #define __Pyx_DOCSTR(n)  (n)
+#endif
+
+
+#if PY_MAJOR_VERSION >= 3
+  #define __Pyx_PyNumber_Divide(x,y)         PyNumber_TrueDivide(x,y)
+  #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceTrueDivide(x,y)
+#else
+  #define __Pyx_PyNumber_Divide(x,y)         PyNumber_Divide(x,y)
+  #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceDivide(x,y)
+#endif
+
+#ifndef __PYX_EXTERN_C
+  #ifdef __cplusplus
+    #define __PYX_EXTERN_C extern "C"
+  #else
+    #define __PYX_EXTERN_C extern
+  #endif
+#endif
+
+#if defined(WIN32) || defined(MS_WINDOWS)
+#define _USE_MATH_DEFINES
+#endif
+#include <math.h>
+#define __PYX_HAVE__h5py__h5a
+#define __PYX_HAVE_API__h5py__h5a
+#include "stdlib.h"
+#include "string.h"
+#include "time.h"
+#include "unistd.h"
+#include "stdint.h"
+#include "api_compat.h"
+#include "lzf_filter.h"
+#include "hdf5.h"
+#include "H5Cpublic.h"
+#include "hdf5_hl.h"
+#include "numpy/arrayobject.h"
+#ifdef _OPENMP
+#include <omp.h>
+#endif /* _OPENMP */
+
+#ifdef PYREX_WITHOUT_ASSERTIONS
+#define CYTHON_WITHOUT_ASSERTIONS
+#endif
+
+#ifndef CYTHON_INLINE
+  #if defined(__GNUC__)
+    #define CYTHON_INLINE __inline__
+  #elif defined(_MSC_VER)
+    #define CYTHON_INLINE __inline
+  #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+    #define CYTHON_INLINE inline
+  #else
+    #define CYTHON_INLINE
+  #endif
+#endif
+#ifndef CYTHON_UNUSED
+# if defined(__GNUC__)
+#   if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
+#     define CYTHON_UNUSED __attribute__ ((__unused__))
+#   else
+#     define CYTHON_UNUSED
+#   endif
+# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER))
+#   define CYTHON_UNUSED __attribute__ ((__unused__))
+# else
+#   define CYTHON_UNUSED
+# endif
+#endif
+typedef struct {PyObject **p; char *s; const long n; const char* encoding; const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; /*proto*/
+
+#define __Pyx_PyBytes_FromUString(s) PyBytes_FromString((char*)s)
+#define __Pyx_PyBytes_AsUString(s)   ((unsigned char*) PyBytes_AsString(s))
+#define __Pyx_Owned_Py_None(b) (Py_INCREF(Py_None), Py_None)
+#define __Pyx_PyBool_FromLong(b) ((b) ? (Py_INCREF(Py_True), Py_True) : (Py_INCREF(Py_False), Py_False))
+static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*);
+static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x);
+static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*);
+static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t);
+static CYTHON_INLINE size_t __Pyx_PyInt_AsSize_t(PyObject*);
+#if CYTHON_COMPILING_IN_CPYTHON
+#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x))
+#else
+#define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x)
+#endif
+#define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x))
+
+
+#ifdef __GNUC__
+  /* Test for GCC > 2.95 */
+  #if __GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))
+    #define likely(x)   __builtin_expect(!!(x), 1)
+    #define unlikely(x) __builtin_expect(!!(x), 0)
+  #else /* __GNUC__ > 2 ... */
+    #define likely(x)   (x)
+    #define unlikely(x) (x)
+  #endif /* __GNUC__ > 2 ... */
+#else /* __GNUC__ */
+  #define likely(x)   (x)
+  #define unlikely(x) (x)
+#endif /* __GNUC__ */
+    
+static PyObject *__pyx_m;
+static PyObject *__pyx_b;
+static PyObject *__pyx_empty_tuple;
+static PyObject *__pyx_empty_bytes;
+static int __pyx_lineno;
+static int __pyx_clineno = 0;
+static const char * __pyx_cfilenm= __FILE__;
+static const char *__pyx_filename;
+
+
+static const char *__pyx_f[] = {
+  "h5a.pyx",
+  "h5t.pxd",
+  "h5s.pxd",
+  "h5p.pxd",
+  "numpy.pxd",
+};
+
+/*--- Type declarations ---*/
+struct __pyx_obj_4h5py_3h5a__AttrVisitor;
+struct __pyx_obj_4h5py_8_objects_ObjectID;
+struct __pyx_obj_4h5py_3h5p_PropID;
+struct __pyx_obj_4h5py_3h5p_PropInstanceID;
+struct __pyx_obj_4h5py_3h5p_PropFAID;
+struct __pyx_obj_4h5py_3h5t_TypeID;
+struct __pyx_obj_4h5py_3h5t_TypeBitfieldID;
+struct __pyx_obj_4h5py_3h5p_PropCreateID;
+struct __pyx_obj_4h5py_3h5p_PropFCID;
+struct __pyx_obj_4h5py_3h5p_PropClassID;
+struct __pyx_obj_4h5py_3h5t_TypeCompositeID;
+struct __pyx_obj_4h5py_3h5t_TypeCompoundID;
+struct __pyx_obj_4h5py_3h5t_TypeVlenID;
+struct __pyx_obj_4h5py_3h5p_PropOCID;
+struct __pyx_obj_4h5py_3h5p_PropLCID;
+struct __pyx_obj_4h5py_3h5p_PropGCID;
+struct __pyx_obj_4h5py_3h5p_PropDCID;
+struct __pyx_obj_4h5py_3h5t_TypeTimeID;
+struct __pyx_obj_4h5py_3h5t_TypeArrayID;
+struct __pyx_obj_4h5py_3h5t_TypeAtomicID;
+struct __pyx_obj_4h5py_3h5t_TypeFloatID;
+struct __pyx_obj_4h5py_3h5t_TypeStringID;
+struct __pyx_obj_4h5py_3h5t_TypeOpaqueID;
+struct __pyx_obj_4h5py_3h5t_TypeEnumID;
+struct __pyx_obj_4h5py_3h5p_PropCopyID;
+struct __pyx_obj_4h5py_3h5t_TypeIntegerID;
+struct __pyx_obj_4h5py_3h5t_TypeReferenceID;
+struct __pyx_obj_4h5py_3h5p_PropDXID;
+struct __pyx_obj_4h5py_3h5s_SpaceID;
+struct __pyx_obj_4h5py_3h5a_AttrInfo;
+struct __pyx_obj_4h5py_3h5p_PropLAID;
+struct __pyx_obj_4h5py_3h5a_AttrID;
+struct __pyx_opt_args_4h5py_3h5t_py_create;
+
+/* "h5t.pxd":69
+ * 
+ * cpdef TypeID typewrap(hid_t id_)
+ * cpdef TypeID py_create(object dtype, bint logical=*)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+struct __pyx_opt_args_4h5py_3h5t_py_create {
+  int __pyx_n;
+  int logical;
+};
+struct __pyx_opt_args_4h5py_5utils_check_numpy_read;
+struct __pyx_opt_args_4h5py_5utils_check_numpy_write;
+
+/* "utils.pxd":17
+ * cdef void efree(void* ptr)
+ * 
+ * cpdef int check_numpy_read(ndarray arr, hid_t space_id=*) except -1             # <<<<<<<<<<<<<<
+ * cpdef int check_numpy_write(ndarray arr, hid_t space_id=*) except -1
+ * 
+ */
+struct __pyx_opt_args_4h5py_5utils_check_numpy_read {
+  int __pyx_n;
+  hid_t space_id;
+};
+
+/* "utils.pxd":18
+ * 
+ * cpdef int check_numpy_read(ndarray arr, hid_t space_id=*) except -1
+ * cpdef int check_numpy_write(ndarray arr, hid_t space_id=*) except -1             # <<<<<<<<<<<<<<
+ * 
+ * cdef int convert_tuple(object tuple, hsize_t *dims, hsize_t rank) except -1
+ */
+struct __pyx_opt_args_4h5py_5utils_check_numpy_write {
+  int __pyx_n;
+  hid_t space_id;
+};
+
+/* "h5py/h5a.pyx":214
+ * # === Iteration routines ======================================================
+ * 
+ * cdef class _AttrVisitor:             # <<<<<<<<<<<<<<
+ *     cdef object func
+ *     cdef object retval
+ */
+struct __pyx_obj_4h5py_3h5a__AttrVisitor {
+  PyObject_HEAD
+  PyObject *func;
+  PyObject *retval;
+};
+
+
+/* "_objects.pxd":12
+ * from defs cimport *
+ * 
+ * cdef class ObjectID:             # <<<<<<<<<<<<<<
+ * 
+ *     cdef object __weakref__
+ */
+struct __pyx_obj_4h5py_8_objects_ObjectID {
+  PyObject_HEAD
+  PyObject *__weakref__;
+  hid_t id;
+  int locked;
+  PyObject *_hash;
+};
+
+
+/* "h5p.pxd":16
+ * # --- Base classes ---
+ * 
+ * cdef class PropID(ObjectID):             # <<<<<<<<<<<<<<
+ *     """ Base class for all property lists """
+ *     pass
+ */
+struct __pyx_obj_4h5py_3h5p_PropID {
+  struct __pyx_obj_4h5py_8_objects_ObjectID __pyx_base;
+};
+
+
+/* "h5p.pxd":26
+ *     pass
+ * 
+ * cdef class PropInstanceID(PropID):             # <<<<<<<<<<<<<<
+ *     """ Represents an instance of a property list class (i.e. an actual list
+ *         which can be passed on to other API functions).
+ */
+struct __pyx_obj_4h5py_3h5p_PropInstanceID {
+  struct __pyx_obj_4h5py_3h5p_PropID __pyx_base;
+};
+
+
+/* "h5p.pxd":59
+ * # --- Object access ---
+ * 
+ * cdef class PropFAID(PropInstanceID):             # <<<<<<<<<<<<<<
+ *     """ File access property list """
+ *     pass
+ */
+struct __pyx_obj_4h5py_3h5p_PropFAID {
+  struct __pyx_obj_4h5py_3h5p_PropInstanceID __pyx_base;
+};
+
+
+/* "h5t.pxd":14
+ * from _objects cimport class ObjectID
+ * 
+ * cdef class TypeID(ObjectID):             # <<<<<<<<<<<<<<
+ * 
+ *     cdef object py_dtype(self)
+ */
+struct __pyx_obj_4h5py_3h5t_TypeID {
+  struct __pyx_obj_4h5py_8_objects_ObjectID __pyx_base;
+  struct __pyx_vtabstruct_4h5py_3h5t_TypeID *__pyx_vtab;
+};
+
+
+/* "h5t.pxd":37
+ *     pass
+ * 
+ * cdef class TypeBitfieldID(TypeID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+struct __pyx_obj_4h5py_3h5t_TypeBitfieldID {
+  struct __pyx_obj_4h5py_3h5t_TypeID __pyx_base;
+};
+
+
+/* "h5p.pxd":32
+ *     pass
+ * 
+ * cdef class PropCreateID(PropInstanceID):             # <<<<<<<<<<<<<<
+ *     """ Base class for all object creation lists.
+ * 
+ */
+struct __pyx_obj_4h5py_3h5p_PropCreateID {
+  struct __pyx_obj_4h5py_3h5p_PropInstanceID __pyx_base;
+};
+
+
+/* "h5p.pxd":52
+ *     pass
+ * 
+ * cdef class PropFCID(PropCreateID):             # <<<<<<<<<<<<<<
+ *     """ File creation property list """
+ *     pass
+ */
+struct __pyx_obj_4h5py_3h5p_PropFCID {
+  struct __pyx_obj_4h5py_3h5p_PropCreateID __pyx_base;
+};
+
+
+/* "h5p.pxd":20
+ *     pass
+ * 
+ * cdef class PropClassID(PropID):             # <<<<<<<<<<<<<<
+ *     """ Represents an HDF5 property list class.  These can be either (locked)
+ *         library-defined classes or user-created classes.
+ */
+struct __pyx_obj_4h5py_3h5p_PropClassID {
+  struct __pyx_obj_4h5py_3h5p_PropID __pyx_base;
+};
+
+
+/* "h5t.pxd":56
+ * # --- Enums & compound types ---
+ * 
+ * cdef class TypeCompositeID(TypeID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+struct __pyx_obj_4h5py_3h5t_TypeCompositeID {
+  struct __pyx_obj_4h5py_3h5t_TypeID __pyx_base;
+};
+
+
+/* "h5t.pxd":63
+ *     cdef int enum_convert(self, long long *buf, int reverse) except -1
+ * 
+ * cdef class TypeCompoundID(TypeCompositeID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+struct __pyx_obj_4h5py_3h5t_TypeCompoundID {
+  struct __pyx_obj_4h5py_3h5t_TypeCompositeID __pyx_base;
+};
+
+
+/* "h5t.pxd":30
+ *     pass
+ * 
+ * cdef class TypeVlenID(TypeID):             # <<<<<<<<<<<<<<
+ *     # Non-string vlens
+ *     pass
+ */
+struct __pyx_obj_4h5py_3h5t_TypeVlenID {
+  struct __pyx_obj_4h5py_3h5t_TypeID __pyx_base;
+};
+
+
+/* "h5p.pxd":44
+ * # --- Object creation ---
+ * 
+ * cdef class PropOCID(PropCreateID):             # <<<<<<<<<<<<<<
+ *     """ Object creation property list """
+ *     pass
+ */
+struct __pyx_obj_4h5py_3h5p_PropOCID {
+  struct __pyx_obj_4h5py_3h5p_PropCreateID __pyx_base;
+};
+
+
+/* "h5p.pxd":70
+ * # --- New in 1.8 ---
+ * 
+ * cdef class PropLCID(PropCreateID):             # <<<<<<<<<<<<<<
+ *     """ Link creation property list """
+ *     pass
+ */
+struct __pyx_obj_4h5py_3h5p_PropLCID {
+  struct __pyx_obj_4h5py_3h5p_PropCreateID __pyx_base;
+};
+
+
+/* "h5p.pxd":78
+ *     cdef char* _buf
+ * 
+ * cdef class PropGCID(PropOCID):             # <<<<<<<<<<<<<<
+ *     """ Group creation property list """
+ *     pass
+ */
+struct __pyx_obj_4h5py_3h5p_PropGCID {
+  struct __pyx_obj_4h5py_3h5p_PropOCID __pyx_base;
+};
+
+
+/* "h5p.pxd":48
+ *     pass
+ * 
+ * cdef class PropDCID(PropOCID):             # <<<<<<<<<<<<<<
+ *     """ Dataset creation property list """
+ *     pass
+ */
+struct __pyx_obj_4h5py_3h5p_PropDCID {
+  struct __pyx_obj_4h5py_3h5p_PropOCID __pyx_base;
+};
+
+
+/* "h5t.pxd":34
+ *     pass
+ * 
+ * cdef class TypeTimeID(TypeID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+struct __pyx_obj_4h5py_3h5t_TypeTimeID {
+  struct __pyx_obj_4h5py_3h5t_TypeID __pyx_base;
+};
+
+
+/* "h5t.pxd":20
+ * # --- Top-level classes ---
+ * 
+ * cdef class TypeArrayID(TypeID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+struct __pyx_obj_4h5py_3h5t_TypeArrayID {
+  struct __pyx_obj_4h5py_3h5t_TypeID __pyx_base;
+};
+
+
+/* "h5t.pxd":45
+ * # --- Numeric atomic types ---
+ * 
+ * cdef class TypeAtomicID(TypeID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+struct __pyx_obj_4h5py_3h5t_TypeAtomicID {
+  struct __pyx_obj_4h5py_3h5t_TypeID __pyx_base;
+};
+
+
+/* "h5t.pxd":51
+ *     pass
+ * 
+ * cdef class TypeFloatID(TypeAtomicID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+struct __pyx_obj_4h5py_3h5t_TypeFloatID {
+  struct __pyx_obj_4h5py_3h5t_TypeAtomicID __pyx_base;
+};
+
+
+/* "h5t.pxd":26
+ *     pass
+ * 
+ * cdef class TypeStringID(TypeID):             # <<<<<<<<<<<<<<
+ *     # Both vlen and fixed-len strings
+ *     pass
+ */
+struct __pyx_obj_4h5py_3h5t_TypeStringID {
+  struct __pyx_obj_4h5py_3h5t_TypeID __pyx_base;
+};
+
+
+/* "h5t.pxd":23
+ *     pass
+ * 
+ * cdef class TypeOpaqueID(TypeID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+struct __pyx_obj_4h5py_3h5t_TypeOpaqueID {
+  struct __pyx_obj_4h5py_3h5t_TypeID __pyx_base;
+};
+
+
+/* "h5t.pxd":59
+ *     pass
+ * 
+ * cdef class TypeEnumID(TypeCompositeID):             # <<<<<<<<<<<<<<
+ * 
+ *     cdef int enum_convert(self, long long *buf, int reverse) except -1
+ */
+struct __pyx_obj_4h5py_3h5t_TypeEnumID {
+  struct __pyx_obj_4h5py_3h5t_TypeCompositeID __pyx_base;
+};
+
+
+/* "h5p.pxd":39
+ *     pass
+ * 
+ * cdef class PropCopyID(PropInstanceID):             # <<<<<<<<<<<<<<
+ *     """ Property list for copying objects (as in h5o.copy) """
+ * 
+ */
+struct __pyx_obj_4h5py_3h5p_PropCopyID {
+  struct __pyx_obj_4h5py_3h5p_PropInstanceID __pyx_base;
+};
+
+
+/* "h5t.pxd":48
+ *     pass
+ * 
+ * cdef class TypeIntegerID(TypeAtomicID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+struct __pyx_obj_4h5py_3h5t_TypeIntegerID {
+  struct __pyx_obj_4h5py_3h5t_TypeAtomicID __pyx_base;
+};
+
+
+/* "h5t.pxd":40
+ *     pass
+ * 
+ * cdef class TypeReferenceID(TypeID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+struct __pyx_obj_4h5py_3h5t_TypeReferenceID {
+  struct __pyx_obj_4h5py_3h5t_TypeID __pyx_base;
+};
+
+
+/* "h5p.pxd":63
+ *     pass
+ * 
+ * cdef class PropDXID(PropInstanceID):             # <<<<<<<<<<<<<<
+ *     """ Dataset transfer property list """
+ *     pass
+ */
+struct __pyx_obj_4h5py_3h5p_PropDXID {
+  struct __pyx_obj_4h5py_3h5p_PropInstanceID __pyx_base;
+};
+
+
+/* "h5s.pxd":14
+ * from _objects cimport class ObjectID
+ * 
+ * cdef class SpaceID(ObjectID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+struct __pyx_obj_4h5py_3h5s_SpaceID {
+  struct __pyx_obj_4h5py_8_objects_ObjectID __pyx_base;
+};
+
+
+/* "h5py/h5a.pyx":150
+ * 
+ * 
+ * cdef class AttrInfo:             # <<<<<<<<<<<<<<
+ * 
+ *     cdef H5A_info_t info
+ */
+struct __pyx_obj_4h5py_3h5a_AttrInfo {
+  PyObject_HEAD
+  H5A_info_t info;
+};
+
+
+/* "h5p.pxd":74
+ *     pass
+ * 
+ * cdef class PropLAID(PropInstanceID):             # <<<<<<<<<<<<<<
+ *     """ Link access property list """
+ *     cdef char* _buf
+ */
+struct __pyx_obj_4h5py_3h5p_PropLAID {
+  struct __pyx_obj_4h5py_3h5p_PropInstanceID __pyx_base;
+  char *_buf;
+};
+
+
+/* "h5py/h5a.pxd":14
+ * from _objects cimport ObjectID
+ * 
+ * cdef class AttrID(ObjectID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+struct __pyx_obj_4h5py_3h5a_AttrID {
+  struct __pyx_obj_4h5py_8_objects_ObjectID __pyx_base;
+};
+
+
+
+struct __pyx_vtabstruct_4h5py_3h5t_TypeID {
+  PyObject *(*py_dtype)(struct __pyx_obj_4h5py_3h5t_TypeID *);
+};
+static struct __pyx_vtabstruct_4h5py_3h5t_TypeID *__pyx_vtabptr_4h5py_3h5t_TypeID;
+
+
+/* "h5t.pxd":56
+ * # --- Enums & compound types ---
+ * 
+ * cdef class TypeCompositeID(TypeID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+
+struct __pyx_vtabstruct_4h5py_3h5t_TypeCompositeID {
+  struct __pyx_vtabstruct_4h5py_3h5t_TypeID __pyx_base;
+};
+static struct __pyx_vtabstruct_4h5py_3h5t_TypeCompositeID *__pyx_vtabptr_4h5py_3h5t_TypeCompositeID;
+
+
+/* "h5t.pxd":63
+ *     cdef int enum_convert(self, long long *buf, int reverse) except -1
+ * 
+ * cdef class TypeCompoundID(TypeCompositeID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+
+struct __pyx_vtabstruct_4h5py_3h5t_TypeCompoundID {
+  struct __pyx_vtabstruct_4h5py_3h5t_TypeCompositeID __pyx_base;
+};
+static struct __pyx_vtabstruct_4h5py_3h5t_TypeCompoundID *__pyx_vtabptr_4h5py_3h5t_TypeCompoundID;
+
+
+/* "h5t.pxd":23
+ *     pass
+ * 
+ * cdef class TypeOpaqueID(TypeID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+
+struct __pyx_vtabstruct_4h5py_3h5t_TypeOpaqueID {
+  struct __pyx_vtabstruct_4h5py_3h5t_TypeID __pyx_base;
+};
+static struct __pyx_vtabstruct_4h5py_3h5t_TypeOpaqueID *__pyx_vtabptr_4h5py_3h5t_TypeOpaqueID;
+
+
+/* "h5t.pxd":20
+ * # --- Top-level classes ---
+ * 
+ * cdef class TypeArrayID(TypeID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+
+struct __pyx_vtabstruct_4h5py_3h5t_TypeArrayID {
+  struct __pyx_vtabstruct_4h5py_3h5t_TypeID __pyx_base;
+};
+static struct __pyx_vtabstruct_4h5py_3h5t_TypeArrayID *__pyx_vtabptr_4h5py_3h5t_TypeArrayID;
+
+
+/* "h5t.pxd":45
+ * # --- Numeric atomic types ---
+ * 
+ * cdef class TypeAtomicID(TypeID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+
+struct __pyx_vtabstruct_4h5py_3h5t_TypeAtomicID {
+  struct __pyx_vtabstruct_4h5py_3h5t_TypeID __pyx_base;
+};
+static struct __pyx_vtabstruct_4h5py_3h5t_TypeAtomicID *__pyx_vtabptr_4h5py_3h5t_TypeAtomicID;
+
+
+/* "h5t.pxd":48
+ *     pass
+ * 
+ * cdef class TypeIntegerID(TypeAtomicID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+
+struct __pyx_vtabstruct_4h5py_3h5t_TypeIntegerID {
+  struct __pyx_vtabstruct_4h5py_3h5t_TypeAtomicID __pyx_base;
+};
+static struct __pyx_vtabstruct_4h5py_3h5t_TypeIntegerID *__pyx_vtabptr_4h5py_3h5t_TypeIntegerID;
+
+
+/* "h5t.pxd":40
+ *     pass
+ * 
+ * cdef class TypeReferenceID(TypeID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+
+struct __pyx_vtabstruct_4h5py_3h5t_TypeReferenceID {
+  struct __pyx_vtabstruct_4h5py_3h5t_TypeID __pyx_base;
+};
+static struct __pyx_vtabstruct_4h5py_3h5t_TypeReferenceID *__pyx_vtabptr_4h5py_3h5t_TypeReferenceID;
+
+
+/* "h5t.pxd":26
+ *     pass
+ * 
+ * cdef class TypeStringID(TypeID):             # <<<<<<<<<<<<<<
+ *     # Both vlen and fixed-len strings
+ *     pass
+ */
+
+struct __pyx_vtabstruct_4h5py_3h5t_TypeStringID {
+  struct __pyx_vtabstruct_4h5py_3h5t_TypeID __pyx_base;
+};
+static struct __pyx_vtabstruct_4h5py_3h5t_TypeStringID *__pyx_vtabptr_4h5py_3h5t_TypeStringID;
+
+
+/* "h5t.pxd":51
+ *     pass
+ * 
+ * cdef class TypeFloatID(TypeAtomicID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+
+struct __pyx_vtabstruct_4h5py_3h5t_TypeFloatID {
+  struct __pyx_vtabstruct_4h5py_3h5t_TypeAtomicID __pyx_base;
+};
+static struct __pyx_vtabstruct_4h5py_3h5t_TypeFloatID *__pyx_vtabptr_4h5py_3h5t_TypeFloatID;
+
+
+/* "h5t.pxd":34
+ *     pass
+ * 
+ * cdef class TypeTimeID(TypeID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+
+struct __pyx_vtabstruct_4h5py_3h5t_TypeTimeID {
+  struct __pyx_vtabstruct_4h5py_3h5t_TypeID __pyx_base;
+};
+static struct __pyx_vtabstruct_4h5py_3h5t_TypeTimeID *__pyx_vtabptr_4h5py_3h5t_TypeTimeID;
+
+
+/* "h5t.pxd":37
+ *     pass
+ * 
+ * cdef class TypeBitfieldID(TypeID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+
+struct __pyx_vtabstruct_4h5py_3h5t_TypeBitfieldID {
+  struct __pyx_vtabstruct_4h5py_3h5t_TypeID __pyx_base;
+};
+static struct __pyx_vtabstruct_4h5py_3h5t_TypeBitfieldID *__pyx_vtabptr_4h5py_3h5t_TypeBitfieldID;
+
+
+/* "h5t.pxd":30
+ *     pass
+ * 
+ * cdef class TypeVlenID(TypeID):             # <<<<<<<<<<<<<<
+ *     # Non-string vlens
+ *     pass
+ */
+
+struct __pyx_vtabstruct_4h5py_3h5t_TypeVlenID {
+  struct __pyx_vtabstruct_4h5py_3h5t_TypeID __pyx_base;
+};
+static struct __pyx_vtabstruct_4h5py_3h5t_TypeVlenID *__pyx_vtabptr_4h5py_3h5t_TypeVlenID;
+
+
+/* "h5t.pxd":59
+ *     pass
+ * 
+ * cdef class TypeEnumID(TypeCompositeID):             # <<<<<<<<<<<<<<
+ * 
+ *     cdef int enum_convert(self, long long *buf, int reverse) except -1
+ */
+
+struct __pyx_vtabstruct_4h5py_3h5t_TypeEnumID {
+  struct __pyx_vtabstruct_4h5py_3h5t_TypeCompositeID __pyx_base;
+  int (*enum_convert)(struct __pyx_obj_4h5py_3h5t_TypeEnumID *, PY_LONG_LONG *, int);
+};
+static struct __pyx_vtabstruct_4h5py_3h5t_TypeEnumID *__pyx_vtabptr_4h5py_3h5t_TypeEnumID;
+#ifndef CYTHON_REFNANNY
+  #define CYTHON_REFNANNY 0
+#endif
+#if CYTHON_REFNANNY
+  typedef struct {
+    void (*INCREF)(void*, PyObject*, int);
+    void (*DECREF)(void*, PyObject*, int);
+    void (*GOTREF)(void*, PyObject*, int);
+    void (*GIVEREF)(void*, PyObject*, int);
+    void* (*SetupContext)(const char*, int, const char*);
+    void (*FinishContext)(void**);
+  } __Pyx_RefNannyAPIStruct;
+  static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL;
+  static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); /*proto*/
+  #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL;
+#ifdef WITH_THREAD
+  #define __Pyx_RefNannySetupContext(name, acquire_gil) \
+          if (acquire_gil) { \
+              PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); \
+              __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__); \
+              PyGILState_Release(__pyx_gilstate_save); \
+          } else { \
+              __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__); \
+          }
+#else
+  #define __Pyx_RefNannySetupContext(name, acquire_gil) \
+          __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__)
+#endif
+  #define __Pyx_RefNannyFinishContext() \
+          __Pyx_RefNanny->FinishContext(&__pyx_refnanny)
+  #define __Pyx_INCREF(r)  __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_DECREF(r)  __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_GOTREF(r)  __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_XINCREF(r)  do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0)
+  #define __Pyx_XDECREF(r)  do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0)
+  #define __Pyx_XGOTREF(r)  do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0)
+  #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0)
+#else
+  #define __Pyx_RefNannyDeclarations
+  #define __Pyx_RefNannySetupContext(name, acquire_gil)
+  #define __Pyx_RefNannyFinishContext()
+  #define __Pyx_INCREF(r) Py_INCREF(r)
+  #define __Pyx_DECREF(r) Py_DECREF(r)
+  #define __Pyx_GOTREF(r)
+  #define __Pyx_GIVEREF(r)
+  #define __Pyx_XINCREF(r) Py_XINCREF(r)
+  #define __Pyx_XDECREF(r) Py_XDECREF(r)
+  #define __Pyx_XGOTREF(r)
+  #define __Pyx_XGIVEREF(r)
+#endif /* CYTHON_REFNANNY */
+#define __Pyx_CLEAR(r)    do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0)
+#define __Pyx_XCLEAR(r)   do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0)
+
+static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name); /*proto*/
+
+static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact,
+    Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); /*proto*/
+
+static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name); /*proto*/
+
+static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[], \
+    PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args, \
+    const char* function_name); /*proto*/
+
+static int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, int none_allowed,
+    const char *name, int exact); /*proto*/
+
+static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb); /*proto*/
+static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb); /*proto*/
+
+static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause); /*proto*/
+
+static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type); /*proto*/
+
+#define __Pyx_DelItemInt(o, i, size, to_py_func) (((size) <= sizeof(Py_ssize_t)) ? \
+                                                    __Pyx_DelItemInt_Fast(o, i) : \
+                                                    __Pyx_DelItem_Generic(o, to_py_func(i)))
+static CYTHON_INLINE int __Pyx_DelItem_Generic(PyObject *o, PyObject *j) {
+    int r;
+    if (!j) return -1;
+    r = PyObject_DelItem(o, j);
+    Py_DECREF(j);
+    return r;
+}
+static CYTHON_INLINE int __Pyx_DelItemInt_Fast(PyObject *o, Py_ssize_t i) {
+#if CYTHON_COMPILING_IN_PYPY
+    if (PySequence_Check(o)) {
+        return PySequence_DelItem(o, i);
+    }
+#else
+    PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence;
+    if (likely(m && m->sq_ass_item)) {
+        if (unlikely(i < 0) && likely(m->sq_length)) {
+            Py_ssize_t l = m->sq_length(o);
+            if (unlikely(l < 0)) return -1;
+            i += l;
+        }
+        return m->sq_ass_item(o, i, (PyObject *)NULL);
+    }
+#endif
+    return __Pyx_DelItem_Generic(o, PyInt_FromSsize_t(i));
+}
+
+static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb); /*proto*/
+
+static void __Pyx_call_next_tp_dealloc(PyObject* obj, destructor current_tp_dealloc);
+
+static int __Pyx_call_next_tp_traverse(PyObject* obj, visitproc v, void *a, traverseproc current_tp_traverse);
+
+static void __Pyx_call_next_tp_clear(PyObject* obj, inquiry current_tp_dealloc);
+
+static CYTHON_INLINE void __Pyx_ExceptionSave(PyObject **type, PyObject **value, PyObject **tb); /*proto*/
+static void __Pyx_ExceptionReset(PyObject *type, PyObject *value, PyObject *tb); /*proto*/
+
+static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level); /*proto*/
+
+static CYTHON_INLINE void __Pyx_RaiseImportError(PyObject *name);
+
+static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_hid_t(hid_t);
+
+static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_herr_t(herr_t);
+
+static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_hsize_t(hsize_t);
+
+static CYTHON_INLINE unsigned char __Pyx_PyInt_AsUnsignedChar(PyObject *);
+
+static CYTHON_INLINE unsigned short __Pyx_PyInt_AsUnsignedShort(PyObject *);
+
+static CYTHON_INLINE unsigned int __Pyx_PyInt_AsUnsignedInt(PyObject *);
+
+static CYTHON_INLINE char __Pyx_PyInt_AsChar(PyObject *);
+
+static CYTHON_INLINE short __Pyx_PyInt_AsShort(PyObject *);
+
+static CYTHON_INLINE int __Pyx_PyInt_AsInt(PyObject *);
+
+static CYTHON_INLINE signed char __Pyx_PyInt_AsSignedChar(PyObject *);
+
+static CYTHON_INLINE signed short __Pyx_PyInt_AsSignedShort(PyObject *);
+
+static CYTHON_INLINE signed int __Pyx_PyInt_AsSignedInt(PyObject *);
+
+static CYTHON_INLINE int __Pyx_PyInt_AsLongDouble(PyObject *);
+
+static CYTHON_INLINE unsigned long __Pyx_PyInt_AsUnsignedLong(PyObject *);
+
+static CYTHON_INLINE unsigned PY_LONG_LONG __Pyx_PyInt_AsUnsignedLongLong(PyObject *);
+
+static CYTHON_INLINE long __Pyx_PyInt_AsLong(PyObject *);
+
+static CYTHON_INLINE PY_LONG_LONG __Pyx_PyInt_AsLongLong(PyObject *);
+
+static CYTHON_INLINE signed long __Pyx_PyInt_AsSignedLong(PyObject *);
+
+static CYTHON_INLINE signed PY_LONG_LONG __Pyx_PyInt_AsSignedLongLong(PyObject *);
+
+static int __Pyx_check_binary_version(void);
+
+#if !defined(__Pyx_PyIdentifier_FromString)
+#if PY_MAJOR_VERSION < 3
+  #define __Pyx_PyIdentifier_FromString(s) PyString_FromString(s)
+#else
+  #define __Pyx_PyIdentifier_FromString(s) PyUnicode_FromString(s)
+#endif
+#endif
+
+static PyObject *__Pyx_ImportModule(const char *name); /*proto*/
+
+static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name, size_t size, int strict);  /*proto*/
+
+static void* __Pyx_GetVtable(PyObject *dict); /*proto*/
+
+static int __Pyx_ImportFunction(PyObject *module, const char *funcname, void (**f)(void), const char *sig); /*proto*/
+
+typedef struct {
+    int code_line;
+    PyCodeObject* code_object;
+} __Pyx_CodeObjectCacheEntry;
+struct __Pyx_CodeObjectCache {
+    int count;
+    int max_count;
+    __Pyx_CodeObjectCacheEntry* entries;
+};
+static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL};
+static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line);
+static PyCodeObject *__pyx_find_code_object(int code_line);
+static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object);
+
+static void __Pyx_AddTraceback(const char *funcname, int c_line,
+                               int py_line, const char *filename); /*proto*/
+
+static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); /*proto*/
+
+
+/* Module declarations from 'h5py.api_types_ext' */
+
+/* Module declarations from 'h5py.api_types_hdf5' */
+
+/* Module declarations from 'h5py.defs' */
+static herr_t (*__pyx_f_4h5py_4defs_H5Sclose)(hid_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Aclose)(hid_t); /*proto*/
+static int (*__pyx_f_4h5py_4defs_H5Aget_num_attrs)(hid_t); /*proto*/
+static Py_ssize_t (*__pyx_f_4h5py_4defs_H5Aget_name)(hid_t, size_t, char *); /*proto*/
+static hid_t (*__pyx_f_4h5py_4defs_H5Aget_space)(hid_t); /*proto*/
+static hid_t (*__pyx_f_4h5py_4defs_H5Aget_type)(hid_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Adelete_by_name)(hid_t, char *, char *, hid_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Adelete_by_idx)(hid_t, char *, H5_index_t, H5_iter_order_t, hsize_t, hid_t); /*proto*/
+static hid_t (*__pyx_f_4h5py_4defs_H5Acreate_by_name)(hid_t, char *, char *, hid_t, hid_t, hid_t, hid_t, hid_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Aopen_by_name)(hid_t, char *, char *, hid_t, hid_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Aopen_by_idx)(hid_t, char *, H5_index_t, H5_iter_order_t, hsize_t, hid_t, hid_t); /*proto*/
+static htri_t (*__pyx_f_4h5py_4defs_H5Aexists_by_name)(hid_t, char *, char *, hid_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Arename_by_name)(hid_t, char *, char *, char *, hid_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Aget_info)(hid_t, H5A_info_t *); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Aget_info_by_name)(hid_t, char *, char *, H5A_info_t *, hid_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Aget_info_by_idx)(hid_t, char *, H5_index_t, H5_iter_order_t, hsize_t, H5A_info_t *, hid_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Aiterate2)(hid_t, H5_index_t, H5_iter_order_t, hsize_t *, H5A_operator2_t, void *); /*proto*/
+static hsize_t (*__pyx_f_4h5py_4defs_H5Aget_storage_size)(hid_t); /*proto*/
+
+/* Module declarations from 'h5py._objects' */
+static PyTypeObject *__pyx_ptype_4h5py_8_objects_ObjectID = 0;
+static hid_t (*__pyx_f_4h5py_8_objects_pdefault)(struct __pyx_obj_4h5py_8_objects_ObjectID *); /*proto*/
+
+/* Module declarations from 'h5py.h5t' */
+static PyTypeObject *__pyx_ptype_4h5py_3h5t_TypeID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5t_TypeArrayID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5t_TypeOpaqueID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5t_TypeStringID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5t_TypeVlenID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5t_TypeTimeID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5t_TypeBitfieldID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5t_TypeReferenceID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5t_TypeAtomicID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5t_TypeIntegerID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5t_TypeFloatID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5t_TypeCompositeID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5t_TypeEnumID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5t_TypeCompoundID = 0;
+static struct __pyx_obj_4h5py_3h5t_TypeID *(*__pyx_f_4h5py_3h5t_typewrap)(hid_t, int __pyx_skip_dispatch); /*proto*/
+static struct __pyx_obj_4h5py_3h5t_TypeID *(*__pyx_f_4h5py_3h5t_py_create)(PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_4h5py_3h5t_py_create *__pyx_optional_args); /*proto*/
+
+/* Module declarations from 'h5py.h5s' */
+static PyTypeObject *__pyx_ptype_4h5py_3h5s_SpaceID = 0;
+
+/* Module declarations from 'h5py.h5p' */
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropClassID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropInstanceID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropCreateID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropCopyID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropOCID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropDCID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropFCID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropFAID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropDXID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropLCID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropLAID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropGCID = 0;
+
+/* Module declarations from 'numpy' */
+
+/* Module declarations from 'h5py.numpy' */
+static PyTypeObject *__pyx_ptype_4h5py_5numpy_dtype = 0;
+static PyTypeObject *__pyx_ptype_4h5py_5numpy_ndarray = 0;
+
+/* Module declarations from 'h5py.utils' */
+static void *(*__pyx_f_4h5py_5utils_emalloc)(size_t); /*proto*/
+static void (*__pyx_f_4h5py_5utils_efree)(void *); /*proto*/
+static int (*__pyx_f_4h5py_5utils_check_numpy_read)(PyArrayObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_4h5py_5utils_check_numpy_read *__pyx_optional_args); /*proto*/
+static int (*__pyx_f_4h5py_5utils_check_numpy_write)(PyArrayObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_4h5py_5utils_check_numpy_write *__pyx_optional_args); /*proto*/
+
+/* Module declarations from 'h5py._proxy' */
+static herr_t (*__pyx_f_4h5py_6_proxy_attr_rw)(hid_t, hid_t, void *, int); /*proto*/
+
+/* Module declarations from 'h5py.h5a' */
+static PyTypeObject *__pyx_ptype_4h5py_3h5a_AttrID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5a_AttrInfo = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5a__AttrVisitor = 0;
+static herr_t __pyx_f_4h5py_3h5a_cb_attr_iter(hid_t, char *, H5A_info_t *, void *); /*proto*/
+static herr_t __pyx_f_4h5py_3h5a_cb_attr_simple(hid_t, char *, H5A_info_t *, void *); /*proto*/
+#define __Pyx_MODULE_NAME "h5py.h5a"
+int __pyx_module_is_main_h5py__h5a = 0;
+
+/* Implementation of 'h5py.h5a' */
+static PyObject *__pyx_builtin_TypeError;
+static PyObject *__pyx_builtin_ValueError;
+static PyObject *__pyx_pf_4h5py_3h5a_create(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_loc, char *__pyx_v_name, struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_v_tid, struct __pyx_obj_4h5py_3h5s_SpaceID *__pyx_v_space, char *__pyx_v_obj_name, struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_lapl); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5a_2open(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_loc, char *__pyx_v_name, int __pyx_v_index, char *__pyx_v_obj_name, int __pyx_v_index_type, int __pyx_v_order, struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_lapl); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5a_4exists(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_loc, char *__pyx_v_name, char *__pyx_v_obj_name, struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_lapl); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5a_6rename(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_loc, char *__pyx_v_name, char *__pyx_v_new_name, char *__pyx_v_obj_name, struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_lapl); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5a_8delete(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_loc, char *__pyx_v_name, int __pyx_v_index, char *__pyx_v_obj_name, int __pyx_v_index_type, int __pyx_v_order, struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_lapl); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5a_10get_num_attrs(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_loc); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5a_8AttrInfo_12corder_valid___get__(struct __pyx_obj_4h5py_3h5a_AttrInfo *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5a_8AttrInfo_6corder___get__(struct __pyx_obj_4h5py_3h5a_AttrInfo *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5a_8AttrInfo_4cset___get__(struct __pyx_obj_4h5py_3h5a_AttrInfo *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5a_8AttrInfo_9data_size___get__(struct __pyx_obj_4h5py_3h5a_AttrInfo *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5a_8AttrInfo__hash(struct __pyx_obj_4h5py_3h5a_AttrInfo *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5a_12get_info(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_loc, char *__pyx_v_name, int __pyx_v_index, char *__pyx_v_obj_name, struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_lapl, int __pyx_v_index_type, int __pyx_v_order); /* proto */
+static int __pyx_pf_4h5py_3h5a_12_AttrVisitor___init__(struct __pyx_obj_4h5py_3h5a__AttrVisitor *__pyx_v_self, PyObject *__pyx_v_func); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5a_14iterate(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_loc, PyObject *__pyx_v_func, int __pyx_v_index, int __pyx_v_index_type, int __pyx_v_order, int __pyx_v_info); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5a_6AttrID_4name___get__(struct __pyx_obj_4h5py_3h5a_AttrID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5a_6AttrID_5shape___get__(struct __pyx_obj_4h5py_3h5a_AttrID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5a_6AttrID_5dtype___get__(struct __pyx_obj_4h5py_3h5a_AttrID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5a_6AttrID__close(struct __pyx_obj_4h5py_3h5a_AttrID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5a_6AttrID_2read(struct __pyx_obj_4h5py_3h5a_AttrID *__pyx_v_self, PyArrayObject *__pyx_v_arr); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5a_6AttrID_4write(struct __pyx_obj_4h5py_3h5a_AttrID *__pyx_v_self, PyArrayObject *__pyx_v_arr); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5a_6AttrID_6get_name(struct __pyx_obj_4h5py_3h5a_AttrID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5a_6AttrID_8get_space(struct __pyx_obj_4h5py_3h5a_AttrID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5a_6AttrID_10get_type(struct __pyx_obj_4h5py_3h5a_AttrID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5a_6AttrID_12get_storage_size(struct __pyx_obj_4h5py_3h5a_AttrID *__pyx_v_self); /* proto */
+static char __pyx_k_1[] = ".";
+static char __pyx_k_4[] = "Exactly one of name or idx must be specified";
+static char __pyx_k_8[] = "Exactly one of index or name must be specified.";
+static char __pyx_k_12[] = "At most one of name and index may be specified";
+static char __pyx_k_16[] = "Starting index must be a non-negative integer.";
+static char __pyx_k_18[] = "get_simple_extent_dims";
+static char __pyx_k_20[] = "The attribute's name";
+static char __pyx_k_21[] = "A Numpy-style shape tuple representing the attribute's dataspace";
+static char __pyx_k_22[] = "A Numpy-stype dtype object representing the attribute's datatype";
+static char __pyx_k_23[] = "Indicates if the creation order is valid";
+static char __pyx_k_24[] = "Creation order";
+static char __pyx_k_25[] = "Character set of attribute name (integer typecode from h5t)";
+static char __pyx_k_26[] = "Size of raw data";
+static char __pyx_k_27[] = "\n    Provides access to the low-level HDF5 \"H5A\" attribute interface.\n";
+static char __pyx_k_30[] = "/home/computer/h5py/h5py/h5a.pyx";
+static char __pyx_k_31[] = "h5py.h5a";
+static char __pyx_k__i[] = "i";
+static char __pyx_k__loc[] = "loc";
+static char __pyx_k__tid[] = "tid";
+static char __pyx_k__vis[] = "vis";
+static char __pyx_k__cset[] = "cset";
+static char __pyx_k__func[] = "func";
+static char __pyx_k__h5py[] = "h5py";
+static char __pyx_k__info[] = "info";
+static char __pyx_k__lapl[] = "lapl";
+static char __pyx_k__lock[] = "lock";
+static char __pyx_k__name[] = "name";
+static char __pyx_k__open[] = "open";
+static char __pyx_k__cfunc[] = "cfunc";
+static char __pyx_k__dtype[] = "dtype";
+static char __pyx_k__index[] = "index";
+static char __pyx_k__order[] = "order";
+static char __pyx_k__space[] = "space";
+static char __pyx_k__valid[] = "valid";
+static char __pyx_k__corder[] = "corder";
+static char __pyx_k__create[] = "create";
+static char __pyx_k__delete[] = "delete";
+static char __pyx_k__exists[] = "exists";
+static char __pyx_k__rename[] = "rename";
+static char __pyx_k__iterate[] = "iterate";
+static char __pyx_k____exit__[] = "__exit__";
+static char __pyx_k____main__[] = "__main__";
+static char __pyx_k____test__[] = "__test__";
+static char __pyx_k___objects[] = "_objects";
+static char __pyx_k__get_info[] = "get_info";
+static char __pyx_k__get_name[] = "get_name";
+static char __pyx_k__get_type[] = "get_type";
+static char __pyx_k__new_name[] = "new_name";
+static char __pyx_k__obj_name[] = "obj_name";
+static char __pyx_k__registry[] = "registry";
+static char __pyx_k__TypeError[] = "TypeError";
+static char __pyx_k____enter__[] = "__enter__";
+static char __pyx_k__data_size[] = "data_size";
+static char __pyx_k__get_space[] = "get_space";
+static char __pyx_k__ValueError[] = "ValueError";
+static char __pyx_k__index_type[] = "index_type";
+static char __pyx_k__corder_valid[] = "corder_valid";
+static char __pyx_k__get_num_attrs[] = "get_num_attrs";
+static PyObject *__pyx_kp_s_12;
+static PyObject *__pyx_kp_s_16;
+static PyObject *__pyx_n_s_18;
+static PyObject *__pyx_kp_s_30;
+static PyObject *__pyx_n_s_31;
+static PyObject *__pyx_kp_s_4;
+static PyObject *__pyx_kp_s_8;
+static PyObject *__pyx_n_s__TypeError;
+static PyObject *__pyx_n_s__ValueError;
+static PyObject *__pyx_n_s____enter__;
+static PyObject *__pyx_n_s____exit__;
+static PyObject *__pyx_n_s____main__;
+static PyObject *__pyx_n_s____test__;
+static PyObject *__pyx_n_s___objects;
+static PyObject *__pyx_n_s__cfunc;
+static PyObject *__pyx_n_s__corder;
+static PyObject *__pyx_n_s__corder_valid;
+static PyObject *__pyx_n_s__create;
+static PyObject *__pyx_n_s__cset;
+static PyObject *__pyx_n_s__data_size;
+static PyObject *__pyx_n_s__delete;
+static PyObject *__pyx_n_s__dtype;
+static PyObject *__pyx_n_s__exists;
+static PyObject *__pyx_n_s__func;
+static PyObject *__pyx_n_s__get_info;
+static PyObject *__pyx_n_s__get_name;
+static PyObject *__pyx_n_s__get_num_attrs;
+static PyObject *__pyx_n_s__get_space;
+static PyObject *__pyx_n_s__get_type;
+static PyObject *__pyx_n_s__h5py;
+static PyObject *__pyx_n_s__i;
+static PyObject *__pyx_n_s__index;
+static PyObject *__pyx_n_s__index_type;
+static PyObject *__pyx_n_s__info;
+static PyObject *__pyx_n_s__iterate;
+static PyObject *__pyx_n_s__lapl;
+static PyObject *__pyx_n_s__loc;
+static PyObject *__pyx_n_s__lock;
+static PyObject *__pyx_n_s__name;
+static PyObject *__pyx_n_s__new_name;
+static PyObject *__pyx_n_s__obj_name;
+static PyObject *__pyx_n_s__open;
+static PyObject *__pyx_n_s__order;
+static PyObject *__pyx_n_s__registry;
+static PyObject *__pyx_n_s__rename;
+static PyObject *__pyx_n_s__space;
+static PyObject *__pyx_n_s__tid;
+static PyObject *__pyx_n_s__valid;
+static PyObject *__pyx_n_s__vis;
+static int __pyx_k_2;
+static int __pyx_k_3;
+static int __pyx_k_6;
+static int __pyx_k_7;
+static int __pyx_k_10;
+static int __pyx_k_11;
+static int __pyx_k_14;
+static int __pyx_k_15;
+static PyObject *__pyx_k_tuple_5;
+static PyObject *__pyx_k_tuple_9;
+static PyObject *__pyx_k_tuple_13;
+static PyObject *__pyx_k_tuple_17;
+static PyObject *__pyx_k_tuple_19;
+static PyObject *__pyx_k_tuple_28;
+static PyObject *__pyx_k_tuple_32;
+static PyObject *__pyx_k_tuple_34;
+static PyObject *__pyx_k_tuple_36;
+static PyObject *__pyx_k_tuple_38;
+static PyObject *__pyx_k_tuple_40;
+static PyObject *__pyx_k_tuple_42;
+static PyObject *__pyx_k_tuple_44;
+static PyObject *__pyx_k_codeobj_29;
+static PyObject *__pyx_k_codeobj_33;
+static PyObject *__pyx_k_codeobj_35;
+static PyObject *__pyx_k_codeobj_37;
+static PyObject *__pyx_k_codeobj_39;
+static PyObject *__pyx_k_codeobj_41;
+static PyObject *__pyx_k_codeobj_43;
+static PyObject *__pyx_k_codeobj_45;
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5a_1create(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_4h5py_3h5a_create[] = "(ObjectID loc, STRING name, TypeID tid, SpaceID space, **kwds) => AttrID\n\n    Create a new attribute, attached to an existing object.\n\n    STRING obj_name (\".\")\n        Attach attribute to this group member instead\n\n    PropID lapl\n        Link access property list for obj_name\n    ";
+static PyMethodDef __pyx_mdef_4h5py_3h5a_1create = {__Pyx_NAMESTR("create"), (PyCFunction)__pyx_pw_4h5py_3h5a_1create, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5a_create)};
+static PyObject *__pyx_pw_4h5py_3h5a_1create(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_loc = 0;
+  char *__pyx_v_name;
+  struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_v_tid = 0;
+  struct __pyx_obj_4h5py_3h5s_SpaceID *__pyx_v_space = 0;
+  char *__pyx_v_obj_name;
+  struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_lapl = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("create (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__loc,&__pyx_n_s__name,&__pyx_n_s__tid,&__pyx_n_s__space,&__pyx_n_s__obj_name,&__pyx_n_s__lapl,0};
+    PyObject* values[6] = {0,0,0,0,0,0};
+
+    /* "h5py/h5a.pyx":33
+ * 
+ * def create(ObjectID loc not None, char* name, TypeID tid not None,
+ *     SpaceID space not None, *, char* obj_name='.', PropID lapl=None):             # <<<<<<<<<<<<<<
+ *     """(ObjectID loc, STRING name, TypeID tid, SpaceID space, **kwds) => AttrID
+ * 
+ */
+    values[5] = (PyObject *)((struct __pyx_obj_4h5py_3h5p_PropID *)Py_None);
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__loc)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__name)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("create", 1, 4, 4, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+        case  2:
+        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__tid)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("create", 1, 4, 4, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+        case  3:
+        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__space)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("create", 1, 4, 4, 3); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+      }
+      if (kw_args > 0 && likely(kw_args <= 2)) {
+        Py_ssize_t index;
+        for (index = 4; index < 6 && kw_args > 0; index++) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, *__pyx_pyargnames[index]);
+          if (value) { values[index] = value; kw_args--; }
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "create") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+    }
+    __pyx_v_loc = ((struct __pyx_obj_4h5py_8_objects_ObjectID *)values[0]);
+    __pyx_v_name = PyBytes_AsString(values[1]); if (unlikely((!__pyx_v_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_tid = ((struct __pyx_obj_4h5py_3h5t_TypeID *)values[2]);
+    __pyx_v_space = ((struct __pyx_obj_4h5py_3h5s_SpaceID *)values[3]);
+    if (values[4]) {
+      __pyx_v_obj_name = PyBytes_AsString(values[4]); if (unlikely((!__pyx_v_obj_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    } else {
+      __pyx_v_obj_name = ((char *)__pyx_k_1);
+    }
+    __pyx_v_lapl = ((struct __pyx_obj_4h5py_3h5p_PropID *)values[5]);
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("create", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5a.create", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_loc), __pyx_ptype_4h5py_8_objects_ObjectID, 0, "loc", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_tid), __pyx_ptype_4h5py_3h5t_TypeID, 0, "tid", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_space), __pyx_ptype_4h5py_3h5s_SpaceID, 0, "space", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_lapl), __pyx_ptype_4h5py_3h5p_PropID, 1, "lapl", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_pf_4h5py_3h5a_create(__pyx_self, __pyx_v_loc, __pyx_v_name, __pyx_v_tid, __pyx_v_space, __pyx_v_obj_name, __pyx_v_lapl);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5a.pyx":32
+ * # --- create, create_by_name ---
+ * 
+ * def create(ObjectID loc not None, char* name, TypeID tid not None,             # <<<<<<<<<<<<<<
+ *     SpaceID space not None, *, char* obj_name='.', PropID lapl=None):
+ *     """(ObjectID loc, STRING name, TypeID tid, SpaceID space, **kwds) => AttrID
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5a_create(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_loc, char *__pyx_v_name, struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_v_tid, struct __pyx_obj_4h5py_3h5s_SpaceID *__pyx_v_space, char *__pyx_v_obj_name, struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_lapl) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  hid_t __pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("create", 0);
+
+  /* "h5py/h5a.pyx":45
+ *     """
+ * 
+ *     return AttrID.open(H5Acreate_by_name(loc.id, obj_name, name, tid.id,             # <<<<<<<<<<<<<<
+ *             space.id, H5P_DEFAULT, H5P_DEFAULT, pdefault(lapl)))
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyObject_GetAttr(((PyObject *)((PyObject*)__pyx_ptype_4h5py_3h5a_AttrID)), __pyx_n_s__open); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+
+  /* "h5py/h5a.pyx":46
+ * 
+ *     return AttrID.open(H5Acreate_by_name(loc.id, obj_name, name, tid.id,
+ *             space.id, H5P_DEFAULT, H5P_DEFAULT, pdefault(lapl)))             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_2 = __pyx_f_4h5py_4defs_H5Acreate_by_name(__pyx_v_loc->id, __pyx_v_obj_name, __pyx_v_name, __pyx_v_tid->__pyx_base.id, __pyx_v_space->__pyx_base.id, H5P_DEFAULT, H5P_DEFAULT, __pyx_f_4h5py_8_objects_pdefault(((struct __pyx_obj_4h5py_8_objects_ObjectID *)__pyx_v_lapl))); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyInt_to_py_hid_t(__pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_3);
+  __pyx_t_3 = 0;
+  __pyx_t_3 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
+  __pyx_r = __pyx_t_3;
+  __pyx_t_3 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("h5py.h5a.create", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5a_3open(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_4h5py_3h5a_2open[] = "(ObjectID loc, STRING name=, INT index=, **kwds) => AttrID\n\n    Open an attribute attached to an existing object.  You must specify\n    exactly one of either name or idx.  Keywords are:\n\n    STRING obj_name (\".\")\n        Attribute is attached to this group member\n\n    PropID lapl (None)\n        Link access property list for obj_name\n\n    INT index_type (h5.INDEX_NAME)\n\n    INT order (h5.ITER_NATIVE)\n\n    ";
+static PyMethodDef __pyx_mdef_4h5py_3h5a_3open = {__Pyx_NAMESTR("open"), (PyCFunction)__pyx_pw_4h5py_3h5a_3open, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5a_2open)};
+static PyObject *__pyx_pw_4h5py_3h5a_3open(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_loc = 0;
+  char *__pyx_v_name;
+  int __pyx_v_index;
+  char *__pyx_v_obj_name;
+  int __pyx_v_index_type;
+  int __pyx_v_order;
+  struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_lapl = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("open (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__loc,&__pyx_n_s__name,&__pyx_n_s__index,&__pyx_n_s__obj_name,&__pyx_n_s__index_type,&__pyx_n_s__order,&__pyx_n_s__lapl,0};
+    PyObject* values[7] = {0,0,0,0,0,0,0};
+
+    /* "h5py/h5a.pyx":53
+ * def open(ObjectID loc not None, char* name=NULL, int index=-1, *,
+ *     char* obj_name='.', int index_type=H5_INDEX_NAME, int order=H5_ITER_NATIVE,
+ *     PropID lapl=None):             # <<<<<<<<<<<<<<
+ *     """(ObjectID loc, STRING name=, INT index=, **kwds) => AttrID
+ * 
+ */
+    values[6] = (PyObject *)((struct __pyx_obj_4h5py_3h5p_PropID *)Py_None);
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__loc)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__name);
+          if (value) { values[1] = value; kw_args--; }
+        }
+        case  2:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__index);
+          if (value) { values[2] = value; kw_args--; }
+        }
+      }
+      if (kw_args > 0 && likely(kw_args <= 4)) {
+        Py_ssize_t index;
+        for (index = 3; index < 7 && kw_args > 0; index++) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, *__pyx_pyargnames[index]);
+          if (value) { values[index] = value; kw_args--; }
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "open") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else {
+      switch (PyTuple_GET_SIZE(__pyx_args)) {
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+    }
+    __pyx_v_loc = ((struct __pyx_obj_4h5py_8_objects_ObjectID *)values[0]);
+    if (values[1]) {
+      __pyx_v_name = PyBytes_AsString(values[1]); if (unlikely((!__pyx_v_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    } else {
+
+      /* "h5py/h5a.pyx":51
+ * # --- open, open_by_name, open_by_idx ---
+ * 
+ * def open(ObjectID loc not None, char* name=NULL, int index=-1, *,             # <<<<<<<<<<<<<<
+ *     char* obj_name='.', int index_type=H5_INDEX_NAME, int order=H5_ITER_NATIVE,
+ *     PropID lapl=None):
+ */
+      __pyx_v_name = ((char *)NULL);
+    }
+    if (values[2]) {
+      __pyx_v_index = __Pyx_PyInt_AsInt(values[2]); if (unlikely((__pyx_v_index == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    } else {
+      __pyx_v_index = ((int)-1);
+    }
+    if (values[3]) {
+      __pyx_v_obj_name = PyBytes_AsString(values[3]); if (unlikely((!__pyx_v_obj_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    } else {
+      __pyx_v_obj_name = ((char *)__pyx_k_1);
+    }
+    if (values[4]) {
+      __pyx_v_index_type = __Pyx_PyInt_AsInt(values[4]); if (unlikely((__pyx_v_index_type == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    } else {
+      __pyx_v_index_type = __pyx_k_2;
+    }
+    if (values[5]) {
+      __pyx_v_order = __Pyx_PyInt_AsInt(values[5]); if (unlikely((__pyx_v_order == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    } else {
+      __pyx_v_order = __pyx_k_3;
+    }
+    __pyx_v_lapl = ((struct __pyx_obj_4h5py_3h5p_PropID *)values[6]);
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("open", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5a.open", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_loc), __pyx_ptype_4h5py_8_objects_ObjectID, 0, "loc", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_lapl), __pyx_ptype_4h5py_3h5p_PropID, 1, "lapl", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_pf_4h5py_3h5a_2open(__pyx_self, __pyx_v_loc, __pyx_v_name, __pyx_v_index, __pyx_v_obj_name, __pyx_v_index_type, __pyx_v_order, __pyx_v_lapl);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_4h5py_3h5a_2open(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_loc, char *__pyx_v_name, int __pyx_v_index, char *__pyx_v_obj_name, int __pyx_v_index_type, int __pyx_v_order, struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_lapl) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  int __pyx_t_2;
+  int __pyx_t_3;
+  int __pyx_t_4;
+  PyObject *__pyx_t_5 = NULL;
+  herr_t __pyx_t_6;
+  PyObject *__pyx_t_7 = NULL;
+  PyObject *__pyx_t_8 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("open", 0);
+
+  /* "h5py/h5a.pyx":70
+ * 
+ *     """
+ *     if (name == NULL and index < 0) or (name != NULL and index >= 0):             # <<<<<<<<<<<<<<
+ *         raise TypeError("Exactly one of name or idx must be specified")
+ * 
+ */
+  __pyx_t_1 = (__pyx_v_name == NULL);
+  if (__pyx_t_1) {
+    __pyx_t_2 = (__pyx_v_index < 0);
+    __pyx_t_3 = __pyx_t_2;
+  } else {
+    __pyx_t_3 = __pyx_t_1;
+  }
+  if (!__pyx_t_3) {
+    __pyx_t_1 = (__pyx_v_name != NULL);
+    if (__pyx_t_1) {
+      __pyx_t_2 = (__pyx_v_index >= 0);
+      __pyx_t_4 = __pyx_t_2;
+    } else {
+      __pyx_t_4 = __pyx_t_1;
+    }
+    __pyx_t_1 = __pyx_t_4;
+  } else {
+    __pyx_t_1 = __pyx_t_3;
+  }
+  if (__pyx_t_1) {
+
+    /* "h5py/h5a.pyx":71
+ *     """
+ *     if (name == NULL and index < 0) or (name != NULL and index >= 0):
+ *         raise TypeError("Exactly one of name or idx must be specified")             # <<<<<<<<<<<<<<
+ * 
+ *     if name != NULL:
+ */
+    __pyx_t_5 = PyObject_Call(__pyx_builtin_TypeError, ((PyObject *)__pyx_k_tuple_5), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_Raise(__pyx_t_5, 0, 0, 0);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  /* "h5py/h5a.pyx":73
+ *         raise TypeError("Exactly one of name or idx must be specified")
+ * 
+ *     if name != NULL:             # <<<<<<<<<<<<<<
+ *         return AttrID.open(H5Aopen_by_name(loc.id, obj_name, name,
+ *                         H5P_DEFAULT, pdefault(lapl)))
+ */
+  __pyx_t_1 = (__pyx_v_name != NULL);
+  if (__pyx_t_1) {
+
+    /* "h5py/h5a.pyx":74
+ * 
+ *     if name != NULL:
+ *         return AttrID.open(H5Aopen_by_name(loc.id, obj_name, name,             # <<<<<<<<<<<<<<
+ *                         H5P_DEFAULT, pdefault(lapl)))
+ *     else:
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_5 = PyObject_GetAttr(((PyObject *)((PyObject*)__pyx_ptype_4h5py_3h5a_AttrID)), __pyx_n_s__open); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_5);
+
+    /* "h5py/h5a.pyx":75
+ *     if name != NULL:
+ *         return AttrID.open(H5Aopen_by_name(loc.id, obj_name, name,
+ *                         H5P_DEFAULT, pdefault(lapl)))             # <<<<<<<<<<<<<<
+ *     else:
+ *         return AttrID.open(H5Aopen_by_idx(loc.id, obj_name,
+ */
+    __pyx_t_6 = __pyx_f_4h5py_4defs_H5Aopen_by_name(__pyx_v_loc->id, __pyx_v_obj_name, __pyx_v_name, H5P_DEFAULT, __pyx_f_4h5py_8_objects_pdefault(((struct __pyx_obj_4h5py_8_objects_ObjectID *)__pyx_v_lapl))); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = __Pyx_PyInt_to_py_herr_t(__pyx_t_6); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_7);
+    __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_8);
+    PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7);
+    __Pyx_GIVEREF(__pyx_t_7);
+    __pyx_t_7 = 0;
+    __pyx_t_7 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_t_8), NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_7);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0;
+    __pyx_r = __pyx_t_7;
+    __pyx_t_7 = 0;
+    goto __pyx_L0;
+    goto __pyx_L4;
+  }
+  /*else*/ {
+
+    /* "h5py/h5a.pyx":77
+ *                         H5P_DEFAULT, pdefault(lapl)))
+ *     else:
+ *         return AttrID.open(H5Aopen_by_idx(loc.id, obj_name,             # <<<<<<<<<<<<<<
+ *             <H5_index_t>index_type, <H5_iter_order_t>order, index,
+ *             H5P_DEFAULT, pdefault(lapl)))
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_7 = PyObject_GetAttr(((PyObject *)((PyObject*)__pyx_ptype_4h5py_3h5a_AttrID)), __pyx_n_s__open); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_7);
+
+    /* "h5py/h5a.pyx":79
+ *         return AttrID.open(H5Aopen_by_idx(loc.id, obj_name,
+ *             <H5_index_t>index_type, <H5_iter_order_t>order, index,
+ *             H5P_DEFAULT, pdefault(lapl)))             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+    __pyx_t_6 = __pyx_f_4h5py_4defs_H5Aopen_by_idx(__pyx_v_loc->id, __pyx_v_obj_name, ((H5_index_t)__pyx_v_index_type), ((H5_iter_order_t)__pyx_v_order), __pyx_v_index, H5P_DEFAULT, __pyx_f_4h5py_8_objects_pdefault(((struct __pyx_obj_4h5py_8_objects_ObjectID *)__pyx_v_lapl))); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_8 = __Pyx_PyInt_to_py_herr_t(__pyx_t_6); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_8);
+    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_5);
+    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_8);
+    __Pyx_GIVEREF(__pyx_t_8);
+    __pyx_t_8 = 0;
+    __pyx_t_8 = PyObject_Call(__pyx_t_7, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_8);
+    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+    __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
+    __pyx_r = __pyx_t_8;
+    __pyx_t_8 = 0;
+    goto __pyx_L0;
+  }
+  __pyx_L4:;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_XDECREF(__pyx_t_8);
+  __Pyx_AddTraceback("h5py.h5a.open", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5a_5exists(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_4h5py_3h5a_4exists[] = "(ObjectID loc, STRING name, **kwds) => BOOL\n\n    Determine if an attribute is attached to this object.  Keywords:\n\n    STRING obj_name (\".\")\n        Look for attributes attached to this group member\n\n    PropID lapl (None):\n        Link access property list for obj_name\n    ";
+static PyMethodDef __pyx_mdef_4h5py_3h5a_5exists = {__Pyx_NAMESTR("exists"), (PyCFunction)__pyx_pw_4h5py_3h5a_5exists, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5a_4exists)};
+static PyObject *__pyx_pw_4h5py_3h5a_5exists(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_loc = 0;
+  char *__pyx_v_name;
+  char *__pyx_v_obj_name;
+  struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_lapl = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("exists (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__loc,&__pyx_n_s__name,&__pyx_n_s__obj_name,&__pyx_n_s__lapl,0};
+    PyObject* values[4] = {0,0,0,0};
+
+    /* "h5py/h5a.pyx":85
+ * 
+ * def exists(ObjectID loc not None, char* name, *,
+ *             char* obj_name=".", PropID lapl=None):             # <<<<<<<<<<<<<<
+ *     """(ObjectID loc, STRING name, **kwds) => BOOL
+ * 
+ */
+    values[3] = (PyObject *)((struct __pyx_obj_4h5py_3h5p_PropID *)Py_None);
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__loc)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__name)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("exists", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+      }
+      if (kw_args > 0 && likely(kw_args <= 2)) {
+        Py_ssize_t index;
+        for (index = 2; index < 4 && kw_args > 0; index++) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, *__pyx_pyargnames[index]);
+          if (value) { values[index] = value; kw_args--; }
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "exists") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+    }
+    __pyx_v_loc = ((struct __pyx_obj_4h5py_8_objects_ObjectID *)values[0]);
+    __pyx_v_name = PyBytes_AsString(values[1]); if (unlikely((!__pyx_v_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    if (values[2]) {
+      __pyx_v_obj_name = PyBytes_AsString(values[2]); if (unlikely((!__pyx_v_obj_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    } else {
+      __pyx_v_obj_name = ((char *)__pyx_k_1);
+    }
+    __pyx_v_lapl = ((struct __pyx_obj_4h5py_3h5p_PropID *)values[3]);
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("exists", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5a.exists", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_loc), __pyx_ptype_4h5py_8_objects_ObjectID, 0, "loc", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_lapl), __pyx_ptype_4h5py_3h5p_PropID, 1, "lapl", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_pf_4h5py_3h5a_4exists(__pyx_self, __pyx_v_loc, __pyx_v_name, __pyx_v_obj_name, __pyx_v_lapl);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5a.pyx":84
+ * # --- exists, exists_by_name ---
+ * 
+ * def exists(ObjectID loc not None, char* name, *,             # <<<<<<<<<<<<<<
+ *             char* obj_name=".", PropID lapl=None):
+ *     """(ObjectID loc, STRING name, **kwds) => BOOL
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5a_4exists(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_loc, char *__pyx_v_name, char *__pyx_v_obj_name, struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_lapl) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  htri_t __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("exists", 0);
+
+  /* "h5py/h5a.pyx":96
+ *         Link access property list for obj_name
+ *     """
+ *     return <bint>H5Aexists_by_name(loc.id, obj_name, name, pdefault(lapl))             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Aexists_by_name(__pyx_v_loc->id, __pyx_v_obj_name, __pyx_v_name, __pyx_f_4h5py_8_objects_pdefault(((struct __pyx_obj_4h5py_8_objects_ObjectID *)__pyx_v_lapl))); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyBool_FromLong(((int)__pyx_t_1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5a.exists", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5a_7rename(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_4h5py_3h5a_6rename[] = "(ObjectID loc, STRING name, STRING new_name, **kwds)\n\n    Rename an attribute.  Keywords:\n\n    STRING obj_name (\".\")\n        Attribute is attached to this group member\n\n    PropID lapl (None)\n        Link access property list for obj_name\n    ";
+static PyMethodDef __pyx_mdef_4h5py_3h5a_7rename = {__Pyx_NAMESTR("rename"), (PyCFunction)__pyx_pw_4h5py_3h5a_7rename, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5a_6rename)};
+static PyObject *__pyx_pw_4h5py_3h5a_7rename(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_loc = 0;
+  char *__pyx_v_name;
+  char *__pyx_v_new_name;
+  char *__pyx_v_obj_name;
+  struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_lapl = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("rename (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__loc,&__pyx_n_s__name,&__pyx_n_s__new_name,&__pyx_n_s__obj_name,&__pyx_n_s__lapl,0};
+    PyObject* values[5] = {0,0,0,0,0};
+
+    /* "h5py/h5a.pyx":102
+ * 
+ * def rename(ObjectID loc not None, char* name, char* new_name, *,
+ *     char* obj_name='.', PropID lapl=None):             # <<<<<<<<<<<<<<
+ *     """(ObjectID loc, STRING name, STRING new_name, **kwds)
+ * 
+ */
+    values[4] = (PyObject *)((struct __pyx_obj_4h5py_3h5p_PropID *)Py_None);
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__loc)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__name)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("rename", 1, 3, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+        case  2:
+        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__new_name)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("rename", 1, 3, 3, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+      }
+      if (kw_args > 0 && likely(kw_args <= 2)) {
+        Py_ssize_t index;
+        for (index = 3; index < 5 && kw_args > 0; index++) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, *__pyx_pyargnames[index]);
+          if (value) { values[index] = value; kw_args--; }
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "rename") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+    }
+    __pyx_v_loc = ((struct __pyx_obj_4h5py_8_objects_ObjectID *)values[0]);
+    __pyx_v_name = PyBytes_AsString(values[1]); if (unlikely((!__pyx_v_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_new_name = PyBytes_AsString(values[2]); if (unlikely((!__pyx_v_new_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    if (values[3]) {
+      __pyx_v_obj_name = PyBytes_AsString(values[3]); if (unlikely((!__pyx_v_obj_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    } else {
+      __pyx_v_obj_name = ((char *)__pyx_k_1);
+    }
+    __pyx_v_lapl = ((struct __pyx_obj_4h5py_3h5p_PropID *)values[4]);
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("rename", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5a.rename", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_loc), __pyx_ptype_4h5py_8_objects_ObjectID, 0, "loc", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_lapl), __pyx_ptype_4h5py_3h5p_PropID, 1, "lapl", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_pf_4h5py_3h5a_6rename(__pyx_self, __pyx_v_loc, __pyx_v_name, __pyx_v_new_name, __pyx_v_obj_name, __pyx_v_lapl);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5a.pyx":101
+ * # --- rename, rename_by_name ---
+ * 
+ * def rename(ObjectID loc not None, char* name, char* new_name, *,             # <<<<<<<<<<<<<<
+ *     char* obj_name='.', PropID lapl=None):
+ *     """(ObjectID loc, STRING name, STRING new_name, **kwds)
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5a_6rename(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_loc, char *__pyx_v_name, char *__pyx_v_new_name, char *__pyx_v_obj_name, struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_lapl) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("rename", 0);
+
+  /* "h5py/h5a.pyx":113
+ *         Link access property list for obj_name
+ *     """
+ *     H5Arename_by_name(loc.id, obj_name, name, new_name, pdefault(lapl))             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Arename_by_name(__pyx_v_loc->id, __pyx_v_obj_name, __pyx_v_name, __pyx_v_new_name, __pyx_f_4h5py_8_objects_pdefault(((struct __pyx_obj_4h5py_8_objects_ObjectID *)__pyx_v_lapl))); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py.h5a.rename", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5a_9delete(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_4h5py_3h5a_8delete[] = "(ObjectID loc, STRING name=, INT index=, **kwds)\n\n    Remove an attribute from an object.  Specify exactly one of \"name\"\n    or \"index\". Keyword-only arguments:\n\n    STRING obj_name (\".\")\n        Attribute is attached to this group member\n\n    PropID lapl (None)\n        Link access property list for obj_name\n\n    INT index_type (h5.INDEX_NAME)\n\n    INT order (h5.ITER_NATIVE)\n    ";
+static PyMethodDef __pyx_mdef_4h5py_3h5a_9delete = {__Pyx_NAMESTR("delete"), (PyCFunction)__pyx_pw_4h5py_3h5a_9delete, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5a_8delete)};
+static PyObject *__pyx_pw_4h5py_3h5a_9delete(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_loc = 0;
+  char *__pyx_v_name;
+  int __pyx_v_index;
+  char *__pyx_v_obj_name;
+  int __pyx_v_index_type;
+  int __pyx_v_order;
+  struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_lapl = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("delete (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__loc,&__pyx_n_s__name,&__pyx_n_s__index,&__pyx_n_s__obj_name,&__pyx_n_s__index_type,&__pyx_n_s__order,&__pyx_n_s__lapl,0};
+    PyObject* values[7] = {0,0,0,0,0,0,0};
+
+    /* "h5py/h5a.pyx":118
+ * def delete(ObjectID loc not None, char* name=NULL, int index=-1, *,
+ *     char* obj_name='.', int index_type=H5_INDEX_NAME, int order=H5_ITER_NATIVE,
+ *     PropID lapl=None):             # <<<<<<<<<<<<<<
+ *     """(ObjectID loc, STRING name=, INT index=, **kwds)
+ * 
+ */
+    values[6] = (PyObject *)((struct __pyx_obj_4h5py_3h5p_PropID *)Py_None);
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__loc)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__name);
+          if (value) { values[1] = value; kw_args--; }
+        }
+        case  2:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__index);
+          if (value) { values[2] = value; kw_args--; }
+        }
+      }
+      if (kw_args > 0 && likely(kw_args <= 4)) {
+        Py_ssize_t index;
+        for (index = 3; index < 7 && kw_args > 0; index++) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, *__pyx_pyargnames[index]);
+          if (value) { values[index] = value; kw_args--; }
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "delete") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else {
+      switch (PyTuple_GET_SIZE(__pyx_args)) {
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+    }
+    __pyx_v_loc = ((struct __pyx_obj_4h5py_8_objects_ObjectID *)values[0]);
+    if (values[1]) {
+      __pyx_v_name = PyBytes_AsString(values[1]); if (unlikely((!__pyx_v_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    } else {
+
+      /* "h5py/h5a.pyx":116
+ * 
+ * 
+ * def delete(ObjectID loc not None, char* name=NULL, int index=-1, *,             # <<<<<<<<<<<<<<
+ *     char* obj_name='.', int index_type=H5_INDEX_NAME, int order=H5_ITER_NATIVE,
+ *     PropID lapl=None):
+ */
+      __pyx_v_name = ((char *)NULL);
+    }
+    if (values[2]) {
+      __pyx_v_index = __Pyx_PyInt_AsInt(values[2]); if (unlikely((__pyx_v_index == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    } else {
+      __pyx_v_index = ((int)-1);
+    }
+    if (values[3]) {
+      __pyx_v_obj_name = PyBytes_AsString(values[3]); if (unlikely((!__pyx_v_obj_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    } else {
+      __pyx_v_obj_name = ((char *)__pyx_k_1);
+    }
+    if (values[4]) {
+      __pyx_v_index_type = __Pyx_PyInt_AsInt(values[4]); if (unlikely((__pyx_v_index_type == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    } else {
+      __pyx_v_index_type = __pyx_k_6;
+    }
+    if (values[5]) {
+      __pyx_v_order = __Pyx_PyInt_AsInt(values[5]); if (unlikely((__pyx_v_order == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    } else {
+      __pyx_v_order = __pyx_k_7;
+    }
+    __pyx_v_lapl = ((struct __pyx_obj_4h5py_3h5p_PropID *)values[6]);
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("delete", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5a.delete", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_loc), __pyx_ptype_4h5py_8_objects_ObjectID, 0, "loc", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_lapl), __pyx_ptype_4h5py_3h5p_PropID, 1, "lapl", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_pf_4h5py_3h5a_8delete(__pyx_self, __pyx_v_loc, __pyx_v_name, __pyx_v_index, __pyx_v_obj_name, __pyx_v_index_type, __pyx_v_order, __pyx_v_lapl);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_4h5py_3h5a_8delete(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_loc, char *__pyx_v_name, int __pyx_v_index, char *__pyx_v_obj_name, int __pyx_v_index_type, int __pyx_v_order, struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_lapl) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  int __pyx_t_2;
+  int __pyx_t_3;
+  herr_t __pyx_t_4;
+  PyObject *__pyx_t_5 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("delete", 0);
+
+  /* "h5py/h5a.pyx":134
+ *     INT order (h5.ITER_NATIVE)
+ *     """
+ *     if name != NULL and index < 0:             # <<<<<<<<<<<<<<
+ *         H5Adelete_by_name(loc.id, obj_name, name, pdefault(lapl))
+ *     elif name == NULL and index >= 0:
+ */
+  __pyx_t_1 = (__pyx_v_name != NULL);
+  if (__pyx_t_1) {
+    __pyx_t_2 = (__pyx_v_index < 0);
+    __pyx_t_3 = __pyx_t_2;
+  } else {
+    __pyx_t_3 = __pyx_t_1;
+  }
+  if (__pyx_t_3) {
+
+    /* "h5py/h5a.pyx":135
+ *     """
+ *     if name != NULL and index < 0:
+ *         H5Adelete_by_name(loc.id, obj_name, name, pdefault(lapl))             # <<<<<<<<<<<<<<
+ *     elif name == NULL and index >= 0:
+ *         H5Adelete_by_idx(loc.id, obj_name, <H5_index_t>index_type,
+ */
+    __pyx_t_4 = __pyx_f_4h5py_4defs_H5Adelete_by_name(__pyx_v_loc->id, __pyx_v_obj_name, __pyx_v_name, __pyx_f_4h5py_8_objects_pdefault(((struct __pyx_obj_4h5py_8_objects_ObjectID *)__pyx_v_lapl))); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    goto __pyx_L3;
+  }
+
+  /* "h5py/h5a.pyx":136
+ *     if name != NULL and index < 0:
+ *         H5Adelete_by_name(loc.id, obj_name, name, pdefault(lapl))
+ *     elif name == NULL and index >= 0:             # <<<<<<<<<<<<<<
+ *         H5Adelete_by_idx(loc.id, obj_name, <H5_index_t>index_type,
+ *             <H5_iter_order_t>order, index, pdefault(lapl))
+ */
+  __pyx_t_3 = (__pyx_v_name == NULL);
+  if (__pyx_t_3) {
+    __pyx_t_1 = (__pyx_v_index >= 0);
+    __pyx_t_2 = __pyx_t_1;
+  } else {
+    __pyx_t_2 = __pyx_t_3;
+  }
+  if (__pyx_t_2) {
+
+    /* "h5py/h5a.pyx":138
+ *     elif name == NULL and index >= 0:
+ *         H5Adelete_by_idx(loc.id, obj_name, <H5_index_t>index_type,
+ *             <H5_iter_order_t>order, index, pdefault(lapl))             # <<<<<<<<<<<<<<
+ *     else:
+ *         raise TypeError("Exactly one of index or name must be specified.")
+ */
+    __pyx_t_4 = __pyx_f_4h5py_4defs_H5Adelete_by_idx(__pyx_v_loc->id, __pyx_v_obj_name, ((H5_index_t)__pyx_v_index_type), ((H5_iter_order_t)__pyx_v_order), __pyx_v_index, __pyx_f_4h5py_8_objects_pdefault(((struct __pyx_obj_4h5py_8_objects_ObjectID *)__pyx_v_lapl))); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    goto __pyx_L3;
+  }
+  /*else*/ {
+
+    /* "h5py/h5a.pyx":140
+ *             <H5_iter_order_t>order, index, pdefault(lapl))
+ *     else:
+ *         raise TypeError("Exactly one of index or name must be specified.")             # <<<<<<<<<<<<<<
+ * 
+ * def get_num_attrs(ObjectID loc not None):
+ */
+    __pyx_t_5 = PyObject_Call(__pyx_builtin_TypeError, ((PyObject *)__pyx_k_tuple_9), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 140; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_Raise(__pyx_t_5, 0, 0, 0);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 140; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  }
+  __pyx_L3:;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_AddTraceback("h5py.h5a.delete", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5a_11get_num_attrs(PyObject *__pyx_self, PyObject *__pyx_v_loc); /*proto*/
+static char __pyx_doc_4h5py_3h5a_10get_num_attrs[] = "(ObjectID loc) => INT\n\n    Determine the number of attributes attached to an HDF5 object.\n    ";
+static PyMethodDef __pyx_mdef_4h5py_3h5a_11get_num_attrs = {__Pyx_NAMESTR("get_num_attrs"), (PyCFunction)__pyx_pw_4h5py_3h5a_11get_num_attrs, METH_O, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5a_10get_num_attrs)};
+static PyObject *__pyx_pw_4h5py_3h5a_11get_num_attrs(PyObject *__pyx_self, PyObject *__pyx_v_loc) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_num_attrs (wrapper)", 0);
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_loc), __pyx_ptype_4h5py_8_objects_ObjectID, 0, "loc", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_pf_4h5py_3h5a_10get_num_attrs(__pyx_self, ((struct __pyx_obj_4h5py_8_objects_ObjectID *)__pyx_v_loc));
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5a.pyx":142
+ *         raise TypeError("Exactly one of index or name must be specified.")
+ * 
+ * def get_num_attrs(ObjectID loc not None):             # <<<<<<<<<<<<<<
+ *     """(ObjectID loc) => INT
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5a_10get_num_attrs(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_loc) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_num_attrs", 0);
+
+  /* "h5py/h5a.pyx":147
+ *     Determine the number of attributes attached to an HDF5 object.
+ *     """
+ *     return H5Aget_num_attrs(loc.id)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Aget_num_attrs(__pyx_v_loc->id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 147; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyInt_FromLong(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 147; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5a.get_num_attrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5a_8AttrInfo_12corder_valid_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4h5py_3h5a_8AttrInfo_12corder_valid_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5a_8AttrInfo_12corder_valid___get__(((struct __pyx_obj_4h5py_3h5a_AttrInfo *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5a.pyx":156
+ *     property corder_valid:
+ *         """Indicates if the creation order is valid"""
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return <bint>self.info.corder_valid
+ *     property corder:
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5a_8AttrInfo_12corder_valid___get__(struct __pyx_obj_4h5py_3h5a_AttrInfo *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "h5py/h5a.pyx":157
+ *         """Indicates if the creation order is valid"""
+ *         def __get__(self):
+ *             return <bint>self.info.corder_valid             # <<<<<<<<<<<<<<
+ *     property corder:
+ *         """Creation order"""
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyBool_FromLong(((int)__pyx_v_self->info.corder_valid)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py.h5a.AttrInfo.corder_valid.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5a_8AttrInfo_6corder_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4h5py_3h5a_8AttrInfo_6corder_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5a_8AttrInfo_6corder___get__(((struct __pyx_obj_4h5py_3h5a_AttrInfo *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5a.pyx":160
+ *     property corder:
+ *         """Creation order"""
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return <int>self.info.corder
+ *     property cset:
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5a_8AttrInfo_6corder___get__(struct __pyx_obj_4h5py_3h5a_AttrInfo *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "h5py/h5a.pyx":161
+ *         """Creation order"""
+ *         def __get__(self):
+ *             return <int>self.info.corder             # <<<<<<<<<<<<<<
+ *     property cset:
+ *         """Character set of attribute name (integer typecode from h5t)"""
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyInt_FromLong(((int)__pyx_v_self->info.corder)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py.h5a.AttrInfo.corder.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5a_8AttrInfo_4cset_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4h5py_3h5a_8AttrInfo_4cset_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5a_8AttrInfo_4cset___get__(((struct __pyx_obj_4h5py_3h5a_AttrInfo *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5a.pyx":164
+ *     property cset:
+ *         """Character set of attribute name (integer typecode from h5t)"""
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return <int>self.info.cset
+ *     property data_size:
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5a_8AttrInfo_4cset___get__(struct __pyx_obj_4h5py_3h5a_AttrInfo *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "h5py/h5a.pyx":165
+ *         """Character set of attribute name (integer typecode from h5t)"""
+ *         def __get__(self):
+ *             return <int>self.info.cset             # <<<<<<<<<<<<<<
+ *     property data_size:
+ *         """Size of raw data"""
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyInt_FromLong(((int)__pyx_v_self->info.cset)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 165; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py.h5a.AttrInfo.cset.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5a_8AttrInfo_9data_size_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4h5py_3h5a_8AttrInfo_9data_size_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5a_8AttrInfo_9data_size___get__(((struct __pyx_obj_4h5py_3h5a_AttrInfo *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5a.pyx":168
+ *     property data_size:
+ *         """Size of raw data"""
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.info.data_size
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5a_8AttrInfo_9data_size___get__(struct __pyx_obj_4h5py_3h5a_AttrInfo *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "h5py/h5a.pyx":169
+ *         """Size of raw data"""
+ *         def __get__(self):
+ *             return self.info.data_size             # <<<<<<<<<<<<<<
+ * 
+ *     def _hash(self):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_to_py_hsize_t(__pyx_v_self->info.data_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 169; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py.h5a.AttrInfo.data_size.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5a_8AttrInfo_1_hash(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static PyObject *__pyx_pw_4h5py_3h5a_8AttrInfo_1_hash(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("_hash (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5a_8AttrInfo__hash(((struct __pyx_obj_4h5py_3h5a_AttrInfo *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5a.pyx":171
+ *             return self.info.data_size
+ * 
+ *     def _hash(self):             # <<<<<<<<<<<<<<
+ *         return hash((self.corder_valid, self.corder, self.cset, self.data_size))
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5a_8AttrInfo__hash(struct __pyx_obj_4h5py_3h5a_AttrInfo *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  Py_hash_t __pyx_t_6;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_hash", 0);
+
+  /* "h5py/h5a.pyx":172
+ * 
+ *     def _hash(self):
+ *         return hash((self.corder_valid, self.corder, self.cset, self.data_size))             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__corder_valid); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__corder); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__cset); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_4 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__data_size); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = PyTuple_New(4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_2);
+  __Pyx_GIVEREF(__pyx_t_2);
+  PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_3);
+  PyTuple_SET_ITEM(__pyx_t_5, 3, __pyx_t_4);
+  __Pyx_GIVEREF(__pyx_t_4);
+  __pyx_t_1 = 0;
+  __pyx_t_2 = 0;
+  __pyx_t_3 = 0;
+  __pyx_t_4 = 0;
+  __pyx_t_6 = PyObject_Hash(((PyObject *)__pyx_t_5)); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
+  __pyx_t_5 = __Pyx_PyInt_FromHash_t(__pyx_t_6); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_r = __pyx_t_5;
+  __pyx_t_5 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_AddTraceback("h5py.h5a.AttrInfo._hash", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5a_13get_info(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_4h5py_3h5a_12get_info[] = "(ObjectID loc, STRING name=, INT index=, **kwds) => AttrInfo\n\n    Get information about an attribute, in one of two ways:\n\n    1. If you have the attribute identifier, just pass it in\n    2. If you have the parent object, supply it and exactly one of\n       either name or index.\n\n    STRING obj_name (\".\")\n        Use this group member instead\n\n    PropID lapl (None)\n        Link access property list for obj_name\n\n    INT in [...]
+static PyMethodDef __pyx_mdef_4h5py_3h5a_13get_info = {__Pyx_NAMESTR("get_info"), (PyCFunction)__pyx_pw_4h5py_3h5a_13get_info, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5a_12get_info)};
+static PyObject *__pyx_pw_4h5py_3h5a_13get_info(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_loc = 0;
+  char *__pyx_v_name;
+  int __pyx_v_index;
+  char *__pyx_v_obj_name;
+  struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_lapl = 0;
+  int __pyx_v_index_type;
+  int __pyx_v_order;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_info (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__loc,&__pyx_n_s__name,&__pyx_n_s__index,&__pyx_n_s__obj_name,&__pyx_n_s__lapl,&__pyx_n_s__index_type,&__pyx_n_s__order,0};
+    PyObject* values[7] = {0,0,0,0,0,0,0};
+
+    /* "h5py/h5a.pyx":176
+ * 
+ * def get_info(ObjectID loc not None, char* name=NULL, int index=-1, *,
+ *             char* obj_name='.', PropID lapl=None,             # <<<<<<<<<<<<<<
+ *             int index_type=H5_INDEX_NAME, int order=H5_ITER_NATIVE):
+ *     """(ObjectID loc, STRING name=, INT index=, **kwds) => AttrInfo
+ */
+    values[4] = (PyObject *)((struct __pyx_obj_4h5py_3h5p_PropID *)Py_None);
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__loc)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__name);
+          if (value) { values[1] = value; kw_args--; }
+        }
+        case  2:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__index);
+          if (value) { values[2] = value; kw_args--; }
+        }
+      }
+      if (kw_args > 0 && likely(kw_args <= 4)) {
+        Py_ssize_t index;
+        for (index = 3; index < 7 && kw_args > 0; index++) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, *__pyx_pyargnames[index]);
+          if (value) { values[index] = value; kw_args--; }
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_info") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 175; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else {
+      switch (PyTuple_GET_SIZE(__pyx_args)) {
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+    }
+    __pyx_v_loc = ((struct __pyx_obj_4h5py_8_objects_ObjectID *)values[0]);
+    if (values[1]) {
+      __pyx_v_name = PyBytes_AsString(values[1]); if (unlikely((!__pyx_v_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 175; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    } else {
+
+      /* "h5py/h5a.pyx":175
+ * 
+ * 
+ * def get_info(ObjectID loc not None, char* name=NULL, int index=-1, *,             # <<<<<<<<<<<<<<
+ *             char* obj_name='.', PropID lapl=None,
+ *             int index_type=H5_INDEX_NAME, int order=H5_ITER_NATIVE):
+ */
+      __pyx_v_name = ((char *)NULL);
+    }
+    if (values[2]) {
+      __pyx_v_index = __Pyx_PyInt_AsInt(values[2]); if (unlikely((__pyx_v_index == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 175; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    } else {
+      __pyx_v_index = ((int)-1);
+    }
+    if (values[3]) {
+      __pyx_v_obj_name = PyBytes_AsString(values[3]); if (unlikely((!__pyx_v_obj_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 176; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    } else {
+      __pyx_v_obj_name = ((char *)__pyx_k_1);
+    }
+    __pyx_v_lapl = ((struct __pyx_obj_4h5py_3h5p_PropID *)values[4]);
+    if (values[5]) {
+      __pyx_v_index_type = __Pyx_PyInt_AsInt(values[5]); if (unlikely((__pyx_v_index_type == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 177; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    } else {
+      __pyx_v_index_type = __pyx_k_10;
+    }
+    if (values[6]) {
+      __pyx_v_order = __Pyx_PyInt_AsInt(values[6]); if (unlikely((__pyx_v_order == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 177; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    } else {
+      __pyx_v_order = __pyx_k_11;
+    }
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("get_info", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 175; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5a.get_info", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_loc), __pyx_ptype_4h5py_8_objects_ObjectID, 0, "loc", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 175; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_lapl), __pyx_ptype_4h5py_3h5p_PropID, 1, "lapl", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 176; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_pf_4h5py_3h5a_12get_info(__pyx_self, __pyx_v_loc, __pyx_v_name, __pyx_v_index, __pyx_v_obj_name, __pyx_v_lapl, __pyx_v_index_type, __pyx_v_order);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_4h5py_3h5a_12get_info(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_loc, char *__pyx_v_name, int __pyx_v_index, char *__pyx_v_obj_name, struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_lapl, int __pyx_v_index_type, int __pyx_v_order) {
+  struct __pyx_obj_4h5py_3h5a_AttrInfo *__pyx_v_info = 0;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_t_2;
+  int __pyx_t_3;
+  int __pyx_t_4;
+  herr_t __pyx_t_5;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_info", 0);
+
+  /* "h5py/h5a.pyx":198
+ *         What order the index is in
+ *     """
+ *     cdef AttrInfo info = AttrInfo()             # <<<<<<<<<<<<<<
+ * 
+ *     if name == NULL and index < 0:
+ */
+  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4h5py_3h5a_AttrInfo)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 198; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_info = ((struct __pyx_obj_4h5py_3h5a_AttrInfo *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "h5py/h5a.pyx":200
+ *     cdef AttrInfo info = AttrInfo()
+ * 
+ *     if name == NULL and index < 0:             # <<<<<<<<<<<<<<
+ *         H5Aget_info(loc.id, &info.info)
+ *     elif name != NULL and index >= 0:
+ */
+  __pyx_t_2 = (__pyx_v_name == NULL);
+  if (__pyx_t_2) {
+    __pyx_t_3 = (__pyx_v_index < 0);
+    __pyx_t_4 = __pyx_t_3;
+  } else {
+    __pyx_t_4 = __pyx_t_2;
+  }
+  if (__pyx_t_4) {
+
+    /* "h5py/h5a.pyx":201
+ * 
+ *     if name == NULL and index < 0:
+ *         H5Aget_info(loc.id, &info.info)             # <<<<<<<<<<<<<<
+ *     elif name != NULL and index >= 0:
+ *         raise TypeError("At most one of name and index may be specified")
+ */
+    __pyx_t_5 = __pyx_f_4h5py_4defs_H5Aget_info(__pyx_v_loc->id, (&__pyx_v_info->info)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    goto __pyx_L3;
+  }
+
+  /* "h5py/h5a.pyx":202
+ *     if name == NULL and index < 0:
+ *         H5Aget_info(loc.id, &info.info)
+ *     elif name != NULL and index >= 0:             # <<<<<<<<<<<<<<
+ *         raise TypeError("At most one of name and index may be specified")
+ *     elif name != NULL:
+ */
+  __pyx_t_4 = (__pyx_v_name != NULL);
+  if (__pyx_t_4) {
+    __pyx_t_2 = (__pyx_v_index >= 0);
+    __pyx_t_3 = __pyx_t_2;
+  } else {
+    __pyx_t_3 = __pyx_t_4;
+  }
+  if (__pyx_t_3) {
+
+    /* "h5py/h5a.pyx":203
+ *         H5Aget_info(loc.id, &info.info)
+ *     elif name != NULL and index >= 0:
+ *         raise TypeError("At most one of name and index may be specified")             # <<<<<<<<<<<<<<
+ *     elif name != NULL:
+ *         H5Aget_info_by_name(loc.id, obj_name, name, &info.info, pdefault(lapl))
+ */
+    __pyx_t_1 = PyObject_Call(__pyx_builtin_TypeError, ((PyObject *)__pyx_k_tuple_13), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 203; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 203; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    goto __pyx_L3;
+  }
+
+  /* "h5py/h5a.pyx":204
+ *     elif name != NULL and index >= 0:
+ *         raise TypeError("At most one of name and index may be specified")
+ *     elif name != NULL:             # <<<<<<<<<<<<<<
+ *         H5Aget_info_by_name(loc.id, obj_name, name, &info.info, pdefault(lapl))
+ *     elif index >= 0:
+ */
+  __pyx_t_3 = (__pyx_v_name != NULL);
+  if (__pyx_t_3) {
+
+    /* "h5py/h5a.pyx":205
+ *         raise TypeError("At most one of name and index may be specified")
+ *     elif name != NULL:
+ *         H5Aget_info_by_name(loc.id, obj_name, name, &info.info, pdefault(lapl))             # <<<<<<<<<<<<<<
+ *     elif index >= 0:
+ *         H5Aget_info_by_idx(loc.id, obj_name, <H5_index_t>index_type,
+ */
+    __pyx_t_5 = __pyx_f_4h5py_4defs_H5Aget_info_by_name(__pyx_v_loc->id, __pyx_v_obj_name, __pyx_v_name, (&__pyx_v_info->info), __pyx_f_4h5py_8_objects_pdefault(((struct __pyx_obj_4h5py_8_objects_ObjectID *)__pyx_v_lapl))); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 205; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    goto __pyx_L3;
+  }
+
+  /* "h5py/h5a.pyx":206
+ *     elif name != NULL:
+ *         H5Aget_info_by_name(loc.id, obj_name, name, &info.info, pdefault(lapl))
+ *     elif index >= 0:             # <<<<<<<<<<<<<<
+ *         H5Aget_info_by_idx(loc.id, obj_name, <H5_index_t>index_type,
+ *             <H5_iter_order_t>order, index, &info.info, pdefault(lapl))
+ */
+  __pyx_t_3 = (__pyx_v_index >= 0);
+  if (__pyx_t_3) {
+
+    /* "h5py/h5a.pyx":208
+ *     elif index >= 0:
+ *         H5Aget_info_by_idx(loc.id, obj_name, <H5_index_t>index_type,
+ *             <H5_iter_order_t>order, index, &info.info, pdefault(lapl))             # <<<<<<<<<<<<<<
+ * 
+ *     return info
+ */
+    __pyx_t_5 = __pyx_f_4h5py_4defs_H5Aget_info_by_idx(__pyx_v_loc->id, __pyx_v_obj_name, ((H5_index_t)__pyx_v_index_type), ((H5_iter_order_t)__pyx_v_order), __pyx_v_index, (&__pyx_v_info->info), __pyx_f_4h5py_8_objects_pdefault(((struct __pyx_obj_4h5py_8_objects_ObjectID *)__pyx_v_lapl))); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 207; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  /* "h5py/h5a.pyx":210
+ *             <H5_iter_order_t>order, index, &info.info, pdefault(lapl))
+ * 
+ *     return info             # <<<<<<<<<<<<<<
+ * 
+ * # === Iteration routines ======================================================
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(((PyObject *)__pyx_v_info));
+  __pyx_r = ((PyObject *)__pyx_v_info);
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py.h5a.get_info", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_info);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static int __pyx_pw_4h5py_3h5a_12_AttrVisitor_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_4h5py_3h5a_12_AttrVisitor_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_func = 0;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__func,0};
+    PyObject* values[1] = {0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__func)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 217; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+    }
+    __pyx_v_func = values[0];
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 217; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5a._AttrVisitor.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return -1;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_3h5a_12_AttrVisitor___init__(((struct __pyx_obj_4h5py_3h5a__AttrVisitor *)__pyx_v_self), __pyx_v_func);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5a.pyx":217
+ *     cdef object func
+ *     cdef object retval
+ *     def __init__(self, func):             # <<<<<<<<<<<<<<
+ *         self.func = func
+ *         self.retval = None
+ */
+
+static int __pyx_pf_4h5py_3h5a_12_AttrVisitor___init__(struct __pyx_obj_4h5py_3h5a__AttrVisitor *__pyx_v_self, PyObject *__pyx_v_func) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__init__", 0);
+
+  /* "h5py/h5a.pyx":218
+ *     cdef object retval
+ *     def __init__(self, func):
+ *         self.func = func             # <<<<<<<<<<<<<<
+ *         self.retval = None
+ * 
+ */
+  __Pyx_INCREF(__pyx_v_func);
+  __Pyx_GIVEREF(__pyx_v_func);
+  __Pyx_GOTREF(__pyx_v_self->func);
+  __Pyx_DECREF(__pyx_v_self->func);
+  __pyx_v_self->func = __pyx_v_func;
+
+  /* "h5py/h5a.pyx":219
+ *     def __init__(self, func):
+ *         self.func = func
+ *         self.retval = None             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t cb_attr_iter(hid_t loc_id, char* attr_name, H5A_info_t *ainfo, void* vis_in) except 2:
+ */
+  __Pyx_INCREF(Py_None);
+  __Pyx_GIVEREF(Py_None);
+  __Pyx_GOTREF(__pyx_v_self->retval);
+  __Pyx_DECREF(__pyx_v_self->retval);
+  __pyx_v_self->retval = Py_None;
+
+  __pyx_r = 0;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5a.pyx":221
+ *         self.retval = None
+ * 
+ * cdef herr_t cb_attr_iter(hid_t loc_id, char* attr_name, H5A_info_t *ainfo, void* vis_in) except 2:             # <<<<<<<<<<<<<<
+ *     cdef _AttrVisitor vis = <_AttrVisitor>vis_in
+ *     cdef AttrInfo info = AttrInfo()
+ */
+
+static herr_t __pyx_f_4h5py_3h5a_cb_attr_iter(CYTHON_UNUSED hid_t __pyx_v_loc_id, char *__pyx_v_attr_name, H5A_info_t *__pyx_v_ainfo, void *__pyx_v_vis_in) {
+  struct __pyx_obj_4h5py_3h5a__AttrVisitor *__pyx_v_vis = 0;
+  struct __pyx_obj_4h5py_3h5a_AttrInfo *__pyx_v_info = 0;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_t_3;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("cb_attr_iter", 0);
+
+  /* "h5py/h5a.pyx":222
+ * 
+ * cdef herr_t cb_attr_iter(hid_t loc_id, char* attr_name, H5A_info_t *ainfo, void* vis_in) except 2:
+ *     cdef _AttrVisitor vis = <_AttrVisitor>vis_in             # <<<<<<<<<<<<<<
+ *     cdef AttrInfo info = AttrInfo()
+ *     info.info = ainfo[0]
+ */
+  __Pyx_INCREF(((PyObject *)((struct __pyx_obj_4h5py_3h5a__AttrVisitor *)__pyx_v_vis_in)));
+  __pyx_v_vis = ((struct __pyx_obj_4h5py_3h5a__AttrVisitor *)__pyx_v_vis_in);
+
+  /* "h5py/h5a.pyx":223
+ * cdef herr_t cb_attr_iter(hid_t loc_id, char* attr_name, H5A_info_t *ainfo, void* vis_in) except 2:
+ *     cdef _AttrVisitor vis = <_AttrVisitor>vis_in
+ *     cdef AttrInfo info = AttrInfo()             # <<<<<<<<<<<<<<
+ *     info.info = ainfo[0]
+ *     vis.retval = vis.func(attr_name, info)
+ */
+  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4h5py_3h5a_AttrInfo)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 223; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_info = ((struct __pyx_obj_4h5py_3h5a_AttrInfo *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "h5py/h5a.pyx":224
+ *     cdef _AttrVisitor vis = <_AttrVisitor>vis_in
+ *     cdef AttrInfo info = AttrInfo()
+ *     info.info = ainfo[0]             # <<<<<<<<<<<<<<
+ *     vis.retval = vis.func(attr_name, info)
+ *     if vis.retval is not None:
+ */
+  __pyx_v_info->info = (__pyx_v_ainfo[0]);
+
+  /* "h5py/h5a.pyx":225
+ *     cdef AttrInfo info = AttrInfo()
+ *     info.info = ainfo[0]
+ *     vis.retval = vis.func(attr_name, info)             # <<<<<<<<<<<<<<
+ *     if vis.retval is not None:
+ *         return 1
+ */
+  __pyx_t_1 = PyBytes_FromString(__pyx_v_attr_name); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 225; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 225; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_t_1));
+  __Pyx_GIVEREF(((PyObject *)__pyx_t_1));
+  __Pyx_INCREF(((PyObject *)__pyx_v_info));
+  PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_info));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_info));
+  __pyx_t_1 = 0;
+  __pyx_t_1 = PyObject_Call(__pyx_v_vis->func, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 225; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
+  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_GOTREF(__pyx_v_vis->retval);
+  __Pyx_DECREF(__pyx_v_vis->retval);
+  __pyx_v_vis->retval = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+  /* "h5py/h5a.pyx":226
+ *     info.info = ainfo[0]
+ *     vis.retval = vis.func(attr_name, info)
+ *     if vis.retval is not None:             # <<<<<<<<<<<<<<
+ *         return 1
+ *     return 0
+ */
+  __pyx_t_3 = (__pyx_v_vis->retval != Py_None);
+  if (__pyx_t_3) {
+
+    /* "h5py/h5a.pyx":227
+ *     vis.retval = vis.func(attr_name, info)
+ *     if vis.retval is not None:
+ *         return 1             # <<<<<<<<<<<<<<
+ *     return 0
+ * 
+ */
+    __pyx_r = 1;
+    goto __pyx_L0;
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  /* "h5py/h5a.pyx":228
+ *     if vis.retval is not None:
+ *         return 1
+ *     return 0             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t cb_attr_simple(hid_t loc_id, char* attr_name, H5A_info_t *ainfo, void* vis_in) except 2:
+ */
+  __pyx_r = 0;
+  goto __pyx_L0;
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5a.cb_attr_iter", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 2;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_vis);
+  __Pyx_XDECREF((PyObject *)__pyx_v_info);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5a.pyx":230
+ *     return 0
+ * 
+ * cdef herr_t cb_attr_simple(hid_t loc_id, char* attr_name, H5A_info_t *ainfo, void* vis_in) except 2:             # <<<<<<<<<<<<<<
+ *     cdef _AttrVisitor vis = <_AttrVisitor>vis_in
+ *     vis.retval = vis.func(attr_name)
+ */
+
+static herr_t __pyx_f_4h5py_3h5a_cb_attr_simple(CYTHON_UNUSED hid_t __pyx_v_loc_id, char *__pyx_v_attr_name, CYTHON_UNUSED H5A_info_t *__pyx_v_ainfo, void *__pyx_v_vis_in) {
+  struct __pyx_obj_4h5py_3h5a__AttrVisitor *__pyx_v_vis = 0;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_t_3;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("cb_attr_simple", 0);
+
+  /* "h5py/h5a.pyx":231
+ * 
+ * cdef herr_t cb_attr_simple(hid_t loc_id, char* attr_name, H5A_info_t *ainfo, void* vis_in) except 2:
+ *     cdef _AttrVisitor vis = <_AttrVisitor>vis_in             # <<<<<<<<<<<<<<
+ *     vis.retval = vis.func(attr_name)
+ *     if vis.retval is not None:
+ */
+  __Pyx_INCREF(((PyObject *)((struct __pyx_obj_4h5py_3h5a__AttrVisitor *)__pyx_v_vis_in)));
+  __pyx_v_vis = ((struct __pyx_obj_4h5py_3h5a__AttrVisitor *)__pyx_v_vis_in);
+
+  /* "h5py/h5a.pyx":232
+ * cdef herr_t cb_attr_simple(hid_t loc_id, char* attr_name, H5A_info_t *ainfo, void* vis_in) except 2:
+ *     cdef _AttrVisitor vis = <_AttrVisitor>vis_in
+ *     vis.retval = vis.func(attr_name)             # <<<<<<<<<<<<<<
+ *     if vis.retval is not None:
+ *         return 1
+ */
+  __pyx_t_1 = PyBytes_FromString(__pyx_v_attr_name); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 232; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 232; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_t_1));
+  __Pyx_GIVEREF(((PyObject *)__pyx_t_1));
+  __pyx_t_1 = 0;
+  __pyx_t_1 = PyObject_Call(__pyx_v_vis->func, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 232; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
+  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_GOTREF(__pyx_v_vis->retval);
+  __Pyx_DECREF(__pyx_v_vis->retval);
+  __pyx_v_vis->retval = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+  /* "h5py/h5a.pyx":233
+ *     cdef _AttrVisitor vis = <_AttrVisitor>vis_in
+ *     vis.retval = vis.func(attr_name)
+ *     if vis.retval is not None:             # <<<<<<<<<<<<<<
+ *         return 1
+ *     return 0
+ */
+  __pyx_t_3 = (__pyx_v_vis->retval != Py_None);
+  if (__pyx_t_3) {
+
+    /* "h5py/h5a.pyx":234
+ *     vis.retval = vis.func(attr_name)
+ *     if vis.retval is not None:
+ *         return 1             # <<<<<<<<<<<<<<
+ *     return 0
+ * 
+ */
+    __pyx_r = 1;
+    goto __pyx_L0;
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  /* "h5py/h5a.pyx":235
+ *     if vis.retval is not None:
+ *         return 1
+ *     return 0             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_r = 0;
+  goto __pyx_L0;
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5a.cb_attr_simple", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 2;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_vis);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5a_15iterate(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_4h5py_3h5a_14iterate[] = "(ObjectID loc, CALLABLE func, INT index=0, **kwds) => <Return value from func>\n\n    Iterate a callable (function, method or callable object) over the\n    attributes attached to this object.  You callable should have the\n    signature::\n\n        func(STRING name) => Result\n\n    or if the keyword argument \"info\" is True::\n\n        func(STRING name, AttrInfo info) => Result\n\n    Returning None continues iteration; returning anyth [...]
+static PyMethodDef __pyx_mdef_4h5py_3h5a_15iterate = {__Pyx_NAMESTR("iterate"), (PyCFunction)__pyx_pw_4h5py_3h5a_15iterate, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5a_14iterate)};
+static PyObject *__pyx_pw_4h5py_3h5a_15iterate(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_loc = 0;
+  PyObject *__pyx_v_func = 0;
+  int __pyx_v_index;
+  int __pyx_v_index_type;
+  int __pyx_v_order;
+  int __pyx_v_info;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("iterate (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__loc,&__pyx_n_s__func,&__pyx_n_s__index,&__pyx_n_s__index_type,&__pyx_n_s__order,&__pyx_n_s__info,0};
+    PyObject* values[6] = {0,0,0,0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__loc)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__func)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("iterate", 0, 2, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 238; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+        case  2:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__index);
+          if (value) { values[2] = value; kw_args--; }
+        }
+      }
+      if (kw_args > 0 && likely(kw_args <= 3)) {
+        Py_ssize_t index;
+        for (index = 3; index < 6 && kw_args > 0; index++) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, *__pyx_pyargnames[index]);
+          if (value) { values[index] = value; kw_args--; }
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "iterate") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 238; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else {
+      switch (PyTuple_GET_SIZE(__pyx_args)) {
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+    }
+    __pyx_v_loc = ((struct __pyx_obj_4h5py_8_objects_ObjectID *)values[0]);
+    __pyx_v_func = values[1];
+    if (values[2]) {
+      __pyx_v_index = __Pyx_PyInt_AsInt(values[2]); if (unlikely((__pyx_v_index == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 238; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    } else {
+      __pyx_v_index = ((int)0);
+    }
+    if (values[3]) {
+      __pyx_v_index_type = __Pyx_PyInt_AsInt(values[3]); if (unlikely((__pyx_v_index_type == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 239; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    } else {
+      __pyx_v_index_type = __pyx_k_14;
+    }
+    if (values[4]) {
+      __pyx_v_order = __Pyx_PyInt_AsInt(values[4]); if (unlikely((__pyx_v_order == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 239; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    } else {
+      __pyx_v_order = __pyx_k_15;
+    }
+    if (values[5]) {
+      __pyx_v_info = __Pyx_PyObject_IsTrue(values[5]); if (unlikely((__pyx_v_info == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 239; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    } else {
+      __pyx_v_info = ((int)0);
+    }
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("iterate", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 238; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5a.iterate", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_loc), __pyx_ptype_4h5py_8_objects_ObjectID, 0, "loc", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 238; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_pf_4h5py_3h5a_14iterate(__pyx_self, __pyx_v_loc, __pyx_v_func, __pyx_v_index, __pyx_v_index_type, __pyx_v_order, __pyx_v_info);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5a.pyx":238
+ * 
+ * 
+ * def iterate(ObjectID loc not None, object func, int index=0, *,             # <<<<<<<<<<<<<<
+ *     int index_type=H5_INDEX_NAME, int order=H5_ITER_NATIVE, bint info=0):
+ *     """(ObjectID loc, CALLABLE func, INT index=0, **kwds) => <Return value from func>
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5a_14iterate(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_loc, PyObject *__pyx_v_func, int __pyx_v_index, int __pyx_v_index_type, int __pyx_v_order, int __pyx_v_info) {
+  hsize_t __pyx_v_i;
+  struct __pyx_obj_4h5py_3h5a__AttrVisitor *__pyx_v_vis = 0;
+  H5A_operator2_t __pyx_v_cfunc;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  herr_t __pyx_t_4;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("iterate", 0);
+
+  /* "h5py/h5a.pyx":264
+ *         Index order to use
+ *     """
+ *     if index < 0:             # <<<<<<<<<<<<<<
+ *         raise ValueError("Starting index must be a non-negative integer.")
+ * 
+ */
+  __pyx_t_1 = (__pyx_v_index < 0);
+  if (__pyx_t_1) {
+
+    /* "h5py/h5a.pyx":265
+ *     """
+ *     if index < 0:
+ *         raise ValueError("Starting index must be a non-negative integer.")             # <<<<<<<<<<<<<<
+ * 
+ *     cdef hsize_t i = index
+ */
+    __pyx_t_2 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_17), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 265; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 265; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  /* "h5py/h5a.pyx":267
+ *         raise ValueError("Starting index must be a non-negative integer.")
+ * 
+ *     cdef hsize_t i = index             # <<<<<<<<<<<<<<
+ *     cdef _AttrVisitor vis = _AttrVisitor(func)
+ *     cdef H5A_operator2_t cfunc
+ */
+  __pyx_v_i = __pyx_v_index;
+
+  /* "h5py/h5a.pyx":268
+ * 
+ *     cdef hsize_t i = index
+ *     cdef _AttrVisitor vis = _AttrVisitor(func)             # <<<<<<<<<<<<<<
+ *     cdef H5A_operator2_t cfunc
+ * 
+ */
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 268; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_INCREF(__pyx_v_func);
+  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_func);
+  __Pyx_GIVEREF(__pyx_v_func);
+  __pyx_t_3 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4h5py_3h5a__AttrVisitor)), ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 268; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
+  __pyx_v_vis = ((struct __pyx_obj_4h5py_3h5a__AttrVisitor *)__pyx_t_3);
+  __pyx_t_3 = 0;
+
+  /* "h5py/h5a.pyx":271
+ *     cdef H5A_operator2_t cfunc
+ * 
+ *     if info:             # <<<<<<<<<<<<<<
+ *         cfunc = cb_attr_iter
+ *     else:
+ */
+  if (__pyx_v_info) {
+
+    /* "h5py/h5a.pyx":272
+ * 
+ *     if info:
+ *         cfunc = cb_attr_iter             # <<<<<<<<<<<<<<
+ *     else:
+ *         cfunc = cb_attr_simple
+ */
+    __pyx_v_cfunc = __pyx_f_4h5py_3h5a_cb_attr_iter;
+    goto __pyx_L4;
+  }
+  /*else*/ {
+
+    /* "h5py/h5a.pyx":274
+ *         cfunc = cb_attr_iter
+ *     else:
+ *         cfunc = cb_attr_simple             # <<<<<<<<<<<<<<
+ * 
+ *     H5Aiterate2(loc.id, <H5_index_t>index_type, <H5_iter_order_t>order,
+ */
+    __pyx_v_cfunc = __pyx_f_4h5py_3h5a_cb_attr_simple;
+  }
+  __pyx_L4:;
+
+  /* "h5py/h5a.pyx":277
+ * 
+ *     H5Aiterate2(loc.id, <H5_index_t>index_type, <H5_iter_order_t>order,
+ *         &i, cfunc, <void*>vis)             # <<<<<<<<<<<<<<
+ * 
+ *     return vis.retval
+ */
+  __pyx_t_4 = __pyx_f_4h5py_4defs_H5Aiterate2(__pyx_v_loc->id, ((H5_index_t)__pyx_v_index_type), ((H5_iter_order_t)__pyx_v_order), (&__pyx_v_i), __pyx_v_cfunc, ((void *)__pyx_v_vis)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 276; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5a.pyx":279
+ *         &i, cfunc, <void*>vis)
+ * 
+ *     return vis.retval             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_vis->retval);
+  __pyx_r = __pyx_v_vis->retval;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("h5py.h5a.iterate", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_vis);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5a_6AttrID_4name_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4h5py_3h5a_6AttrID_4name_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5a_6AttrID_4name___get__(((struct __pyx_obj_4h5py_3h5a_AttrID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5a.pyx":301
+ *     property name:
+ *         """The attribute's name"""
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.get_name()
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5a_6AttrID_4name___get__(struct __pyx_obj_4h5py_3h5a_AttrID *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "h5py/h5a.pyx":302
+ *         """The attribute's name"""
+ *         def __get__(self):
+ *             return self.get_name()             # <<<<<<<<<<<<<<
+ * 
+ *     property shape:
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__get_name); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 302; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 302; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5a.AttrID.name.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5a_6AttrID_5shape_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4h5py_3h5a_6AttrID_5shape_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5a_6AttrID_5shape___get__(((struct __pyx_obj_4h5py_3h5a_AttrID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5a.pyx":306
+ *     property shape:
+ *         """A Numpy-style shape tuple representing the attribute's dataspace"""
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ * 
+ *             cdef SpaceID space
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5a_6AttrID_5shape___get__(struct __pyx_obj_4h5py_3h5a_AttrID *__pyx_v_self) {
+  struct __pyx_obj_4h5py_3h5s_SpaceID *__pyx_v_space = 0;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "h5py/h5a.pyx":309
+ * 
+ *             cdef SpaceID space
+ *             space = self.get_space()             # <<<<<<<<<<<<<<
+ *             return space.get_simple_extent_dims()
+ * 
+ */
+  __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__get_space); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 309; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 309; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_4h5py_3h5s_SpaceID))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 309; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v_space = ((struct __pyx_obj_4h5py_3h5s_SpaceID *)__pyx_t_2);
+  __pyx_t_2 = 0;
+
+  /* "h5py/h5a.pyx":310
+ *             cdef SpaceID space
+ *             space = self.get_space()
+ *             return space.get_simple_extent_dims()             # <<<<<<<<<<<<<<
+ * 
+ *     property dtype:
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_2 = PyObject_GetAttr(((PyObject *)__pyx_v_space), __pyx_n_s_18); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 310; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 310; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5a.AttrID.shape.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_space);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5a_6AttrID_5dtype_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4h5py_3h5a_6AttrID_5dtype_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5a_6AttrID_5dtype___get__(((struct __pyx_obj_4h5py_3h5a_AttrID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5a.pyx":314
+ *     property dtype:
+ *         """A Numpy-stype dtype object representing the attribute's datatype"""
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ * 
+ *             cdef TypeID tid
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5a_6AttrID_5dtype___get__(struct __pyx_obj_4h5py_3h5a_AttrID *__pyx_v_self) {
+  struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_v_tid = 0;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "h5py/h5a.pyx":317
+ * 
+ *             cdef TypeID tid
+ *             tid = self.get_type()             # <<<<<<<<<<<<<<
+ *             return tid.py_dtype()
+ * 
+ */
+  __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__get_type); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_4h5py_3h5t_TypeID))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v_tid = ((struct __pyx_obj_4h5py_3h5t_TypeID *)__pyx_t_2);
+  __pyx_t_2 = 0;
+
+  /* "h5py/h5a.pyx":318
+ *             cdef TypeID tid
+ *             tid = self.get_type()
+ *             return tid.py_dtype()             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_2 = ((struct __pyx_vtabstruct_4h5py_3h5t_TypeID *)__pyx_v_tid->__pyx_vtab)->py_dtype(__pyx_v_tid); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 318; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5a.AttrID.dtype.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_tid);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5a_6AttrID_1_close(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5a_6AttrID__close[] = "()\n\n        Close this attribute and release resources.  You don't need to\n        call this manually; attributes are automatically destroyed when\n        their Python wrappers are freed.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5a_6AttrID_1_close(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("_close (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5a_6AttrID__close(((struct __pyx_obj_4h5py_3h5a_AttrID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5a.pyx":321
+ * 
+ * 
+ *     def _close(self):             # <<<<<<<<<<<<<<
+ *         """()
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5a_6AttrID__close(struct __pyx_obj_4h5py_3h5a_AttrID *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_close", 0);
+
+  /* "h5py/h5a.pyx":328
+ *         their Python wrappers are freed.
+ *         """
+ *         with _objects.registry.lock:             # <<<<<<<<<<<<<<
+ *             H5Aclose(self.id)
+ *             if not self.valid:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s___objects); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 328; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__registry); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 328; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __pyx_t_1 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__lock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 328; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 328; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 328; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_4 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 328; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/h5a.pyx":329
+ *         """
+ *         with _objects.registry.lock:
+ *             H5Aclose(self.id)             # <<<<<<<<<<<<<<
+ *             if not self.valid:
+ *                 del _objects.registry[self.id]
+ */
+          __pyx_t_8 = __pyx_f_4h5py_4defs_H5Aclose(__pyx_v_self->__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 329; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+
+          /* "h5py/h5a.pyx":330
+ *         with _objects.registry.lock:
+ *             H5Aclose(self.id)
+ *             if not self.valid:             # <<<<<<<<<<<<<<
+ *                 del _objects.registry[self.id]
+ * 
+ */
+          __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__valid); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 330; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 330; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __pyx_t_10 = (!__pyx_t_9);
+          if (__pyx_t_10) {
+
+            /* "h5py/h5a.pyx":331
+ *             H5Aclose(self.id)
+ *             if not self.valid:
+ *                 del _objects.registry[self.id]             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+            __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s___objects); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 331; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            __Pyx_GOTREF(__pyx_t_1);
+            __pyx_t_4 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__registry); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 331; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            __Pyx_GOTREF(__pyx_t_4);
+            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+            if (__Pyx_DelItemInt(__pyx_t_4, __pyx_v_self->__pyx_base.id, sizeof(hid_t), __Pyx_PyInt_to_py_hid_t) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 331; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+        /* "h5py/h5a.pyx":328
+ *         their Python wrappers are freed.
+ *         """
+ *         with _objects.registry.lock:             # <<<<<<<<<<<<<<
+ *             H5Aclose(self.id)
+ *             if not self.valid:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.h5a.AttrID._close", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_1, &__pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 328; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_2);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 328; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_2);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_2);
+          __Pyx_GIVEREF(__pyx_t_2);
+          __pyx_t_12 = PyObject_Call(__pyx_t_3, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 328; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_10 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 328; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_9 = (!__pyx_t_10);
+          if (__pyx_t_9) {
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_2);
+            __Pyx_ErrRestore(__pyx_t_4, __pyx_t_1, __pyx_t_2);
+            __pyx_t_4 = 0; __pyx_t_1 = 0; __pyx_t_2 = 0; 
+            {__pyx_filename = __pyx_f[0]; __pyx_lineno = 328; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L18;
+          }
+          __pyx_L18:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      if (__pyx_t_3) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_3, __pyx_k_tuple_19, NULL);
+        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 328; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 328; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+    }
+    goto __pyx_L19;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    goto __pyx_L1_error;
+    __pyx_L19:;
+  }
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.h5a.AttrID._close", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5a_6AttrID_3read(PyObject *__pyx_v_self, PyObject *__pyx_v_arr); /*proto*/
+static char __pyx_doc_4h5py_3h5a_6AttrID_2read[] = "(NDARRAY arr)\n\n        Read the attribute data into the given Numpy array.  Note that the\n        Numpy array must have the same shape as the HDF5 attribute, and a\n        conversion-compatible datatype.\n\n        The Numpy array must be writable and C-contiguous.  If this is not\n        the case, the read will fail with an exception.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5a_6AttrID_3read(PyObject *__pyx_v_self, PyObject *__pyx_v_arr) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("read (wrapper)", 0);
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_arr), __pyx_ptype_4h5py_5numpy_ndarray, 0, "arr", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 334; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_pf_4h5py_3h5a_6AttrID_2read(((struct __pyx_obj_4h5py_3h5a_AttrID *)__pyx_v_self), ((PyArrayObject *)__pyx_v_arr));
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5a.pyx":334
+ * 
+ * 
+ *     def read(self, ndarray arr not None):             # <<<<<<<<<<<<<<
+ *         """(NDARRAY arr)
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5a_6AttrID_2read(struct __pyx_obj_4h5py_3h5a_AttrID *__pyx_v_self, PyArrayObject *__pyx_v_arr) {
+  struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_v_mtype = 0;
+  hid_t __pyx_v_space_id;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  hid_t __pyx_t_1;
+  int __pyx_t_2;
+  struct __pyx_opt_args_4h5py_5utils_check_numpy_write __pyx_t_3;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  herr_t __pyx_t_6;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("read", 0);
+
+  /* "h5py/h5a.pyx":346
+ *         cdef TypeID mtype
+ *         cdef hid_t space_id
+ *         space_id = 0             # <<<<<<<<<<<<<<
+ * 
+ *         try:
+ */
+  __pyx_v_space_id = 0;
+
+  /* "h5py/h5a.pyx":348
+ *         space_id = 0
+ * 
+ *         try:             # <<<<<<<<<<<<<<
+ *             space_id = H5Aget_space(self.id)
+ *             check_numpy_write(arr, space_id)
+ */
+  /*try:*/ {
+
+    /* "h5py/h5a.pyx":349
+ * 
+ *         try:
+ *             space_id = H5Aget_space(self.id)             # <<<<<<<<<<<<<<
+ *             check_numpy_write(arr, space_id)
+ * 
+ */
+    __pyx_t_1 = __pyx_f_4h5py_4defs_H5Aget_space(__pyx_v_self->__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 349; __pyx_clineno = __LINE__; goto __pyx_L4;}
+    __pyx_v_space_id = __pyx_t_1;
+
+    /* "h5py/h5a.pyx":350
+ *         try:
+ *             space_id = H5Aget_space(self.id)
+ *             check_numpy_write(arr, space_id)             # <<<<<<<<<<<<<<
+ * 
+ *             mtype = py_create(arr.dtype)
+ */
+    __pyx_t_3.__pyx_n = 1;
+    __pyx_t_3.space_id = __pyx_v_space_id;
+    __pyx_t_2 = __pyx_f_4h5py_5utils_check_numpy_write(__pyx_v_arr, 0, &__pyx_t_3); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 350; __pyx_clineno = __LINE__; goto __pyx_L4;}
+
+    /* "h5py/h5a.pyx":352
+ *             check_numpy_write(arr, space_id)
+ * 
+ *             mtype = py_create(arr.dtype)             # <<<<<<<<<<<<<<
+ * 
+ *             attr_rw(self.id, mtype.id, PyArray_DATA(arr), 1)
+ */
+    __pyx_t_4 = PyObject_GetAttr(((PyObject *)__pyx_v_arr), __pyx_n_s__dtype); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 352; __pyx_clineno = __LINE__; goto __pyx_L4;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_5 = ((PyObject *)__pyx_f_4h5py_3h5t_py_create(__pyx_t_4, 0, NULL)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 352; __pyx_clineno = __LINE__; goto __pyx_L4;}
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_v_mtype = ((struct __pyx_obj_4h5py_3h5t_TypeID *)__pyx_t_5);
+    __pyx_t_5 = 0;
+
+    /* "h5py/h5a.pyx":354
+ *             mtype = py_create(arr.dtype)
+ * 
+ *             attr_rw(self.id, mtype.id, PyArray_DATA(arr), 1)             # <<<<<<<<<<<<<<
+ * 
+ *         finally:
+ */
+    __pyx_t_6 = __pyx_f_4h5py_6_proxy_attr_rw(__pyx_v_self->__pyx_base.id, __pyx_v_mtype->__pyx_base.id, PyArray_DATA(__pyx_v_arr), 1); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 354; __pyx_clineno = __LINE__; goto __pyx_L4;}
+  }
+
+  /* "h5py/h5a.pyx":357
+ * 
+ *         finally:
+ *             if space_id:             # <<<<<<<<<<<<<<
+ *                 H5Sclose(space_id)
+ * 
+ */
+  /*finally:*/ {
+    int __pyx_why;
+    PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb;
+    int __pyx_exc_lineno;
+    __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
+    __pyx_why = 0; goto __pyx_L5;
+    __pyx_L4: {
+      __pyx_why = 4;
+      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+      __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb);
+      __pyx_exc_lineno = __pyx_lineno;
+      goto __pyx_L5;
+    }
+    __pyx_L5:;
+    if (__pyx_v_space_id) {
+
+      /* "h5py/h5a.pyx":358
+ *         finally:
+ *             if space_id:
+ *                 H5Sclose(space_id)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+      __pyx_t_6 = __pyx_f_4h5py_4defs_H5Sclose(__pyx_v_space_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 358; __pyx_clineno = __LINE__; goto __pyx_L6_error;}
+      goto __pyx_L7;
+    }
+    __pyx_L7:;
+    goto __pyx_L8;
+    __pyx_L6_error:;
+    if (__pyx_why == 4) {
+      Py_XDECREF(__pyx_exc_type);
+      Py_XDECREF(__pyx_exc_value);
+      Py_XDECREF(__pyx_exc_tb);
+    }
+    goto __pyx_L1_error;
+    __pyx_L8:;
+    switch (__pyx_why) {
+      case 4: {
+        __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb);
+        __pyx_lineno = __pyx_exc_lineno;
+        __pyx_exc_type = 0;
+        __pyx_exc_value = 0;
+        __pyx_exc_tb = 0;
+        goto __pyx_L1_error;
+      }
+    }
+  }
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_AddTraceback("h5py.h5a.AttrID.read", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_mtype);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5a_6AttrID_5write(PyObject *__pyx_v_self, PyObject *__pyx_v_arr); /*proto*/
+static char __pyx_doc_4h5py_3h5a_6AttrID_4write[] = "(NDARRAY arr)\n\n        Write the contents of a Numpy array too the attribute.  Note that\n        the Numpy array must have the same shape as the HDF5 attribute, and\n        a conversion-compatible datatype.\n\n        The Numpy array must be C-contiguous.  If this is not the case,\n        the write will fail with an exception.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5a_6AttrID_5write(PyObject *__pyx_v_self, PyObject *__pyx_v_arr) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("write (wrapper)", 0);
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_arr), __pyx_ptype_4h5py_5numpy_ndarray, 0, "arr", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 361; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_pf_4h5py_3h5a_6AttrID_4write(((struct __pyx_obj_4h5py_3h5a_AttrID *)__pyx_v_self), ((PyArrayObject *)__pyx_v_arr));
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5a.pyx":361
+ * 
+ * 
+ *     def write(self, ndarray arr not None):             # <<<<<<<<<<<<<<
+ *         """(NDARRAY arr)
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5a_6AttrID_4write(struct __pyx_obj_4h5py_3h5a_AttrID *__pyx_v_self, PyArrayObject *__pyx_v_arr) {
+  struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_v_mtype = 0;
+  hid_t __pyx_v_space_id;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  hid_t __pyx_t_1;
+  int __pyx_t_2;
+  struct __pyx_opt_args_4h5py_5utils_check_numpy_read __pyx_t_3;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  herr_t __pyx_t_6;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("write", 0);
+
+  /* "h5py/h5a.pyx":373
+ *         cdef TypeID mtype
+ *         cdef hid_t space_id
+ *         space_id = 0             # <<<<<<<<<<<<<<
+ * 
+ *         try:
+ */
+  __pyx_v_space_id = 0;
+
+  /* "h5py/h5a.pyx":375
+ *         space_id = 0
+ * 
+ *         try:             # <<<<<<<<<<<<<<
+ *             space_id = H5Aget_space(self.id)
+ *             check_numpy_read(arr, space_id)
+ */
+  /*try:*/ {
+
+    /* "h5py/h5a.pyx":376
+ * 
+ *         try:
+ *             space_id = H5Aget_space(self.id)             # <<<<<<<<<<<<<<
+ *             check_numpy_read(arr, space_id)
+ *             mtype = py_create(arr.dtype)
+ */
+    __pyx_t_1 = __pyx_f_4h5py_4defs_H5Aget_space(__pyx_v_self->__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 376; __pyx_clineno = __LINE__; goto __pyx_L4;}
+    __pyx_v_space_id = __pyx_t_1;
+
+    /* "h5py/h5a.pyx":377
+ *         try:
+ *             space_id = H5Aget_space(self.id)
+ *             check_numpy_read(arr, space_id)             # <<<<<<<<<<<<<<
+ *             mtype = py_create(arr.dtype)
+ * 
+ */
+    __pyx_t_3.__pyx_n = 1;
+    __pyx_t_3.space_id = __pyx_v_space_id;
+    __pyx_t_2 = __pyx_f_4h5py_5utils_check_numpy_read(__pyx_v_arr, 0, &__pyx_t_3); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 377; __pyx_clineno = __LINE__; goto __pyx_L4;}
+
+    /* "h5py/h5a.pyx":378
+ *             space_id = H5Aget_space(self.id)
+ *             check_numpy_read(arr, space_id)
+ *             mtype = py_create(arr.dtype)             # <<<<<<<<<<<<<<
+ * 
+ *             attr_rw(self.id, mtype.id, PyArray_DATA(arr), 0)
+ */
+    __pyx_t_4 = PyObject_GetAttr(((PyObject *)__pyx_v_arr), __pyx_n_s__dtype); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 378; __pyx_clineno = __LINE__; goto __pyx_L4;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_5 = ((PyObject *)__pyx_f_4h5py_3h5t_py_create(__pyx_t_4, 0, NULL)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 378; __pyx_clineno = __LINE__; goto __pyx_L4;}
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_v_mtype = ((struct __pyx_obj_4h5py_3h5t_TypeID *)__pyx_t_5);
+    __pyx_t_5 = 0;
+
+    /* "h5py/h5a.pyx":380
+ *             mtype = py_create(arr.dtype)
+ * 
+ *             attr_rw(self.id, mtype.id, PyArray_DATA(arr), 0)             # <<<<<<<<<<<<<<
+ * 
+ *         finally:
+ */
+    __pyx_t_6 = __pyx_f_4h5py_6_proxy_attr_rw(__pyx_v_self->__pyx_base.id, __pyx_v_mtype->__pyx_base.id, PyArray_DATA(__pyx_v_arr), 0); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 380; __pyx_clineno = __LINE__; goto __pyx_L4;}
+  }
+
+  /* "h5py/h5a.pyx":383
+ * 
+ *         finally:
+ *             if space_id:             # <<<<<<<<<<<<<<
+ *                 H5Sclose(space_id)
+ * 
+ */
+  /*finally:*/ {
+    int __pyx_why;
+    PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb;
+    int __pyx_exc_lineno;
+    __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
+    __pyx_why = 0; goto __pyx_L5;
+    __pyx_L4: {
+      __pyx_why = 4;
+      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+      __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb);
+      __pyx_exc_lineno = __pyx_lineno;
+      goto __pyx_L5;
+    }
+    __pyx_L5:;
+    if (__pyx_v_space_id) {
+
+      /* "h5py/h5a.pyx":384
+ *         finally:
+ *             if space_id:
+ *                 H5Sclose(space_id)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+      __pyx_t_6 = __pyx_f_4h5py_4defs_H5Sclose(__pyx_v_space_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L6_error;}
+      goto __pyx_L7;
+    }
+    __pyx_L7:;
+    goto __pyx_L8;
+    __pyx_L6_error:;
+    if (__pyx_why == 4) {
+      Py_XDECREF(__pyx_exc_type);
+      Py_XDECREF(__pyx_exc_value);
+      Py_XDECREF(__pyx_exc_tb);
+    }
+    goto __pyx_L1_error;
+    __pyx_L8:;
+    switch (__pyx_why) {
+      case 4: {
+        __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb);
+        __pyx_lineno = __pyx_exc_lineno;
+        __pyx_exc_type = 0;
+        __pyx_exc_value = 0;
+        __pyx_exc_tb = 0;
+        goto __pyx_L1_error;
+      }
+    }
+  }
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_AddTraceback("h5py.h5a.AttrID.write", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_mtype);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5a_6AttrID_7get_name(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5a_6AttrID_6get_name[] = "() => STRING name\n\n        Determine the name of this attribute.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5a_6AttrID_7get_name(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_name (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5a_6AttrID_6get_name(((struct __pyx_obj_4h5py_3h5a_AttrID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5a.pyx":387
+ * 
+ * 
+ *     def get_name(self):             # <<<<<<<<<<<<<<
+ *         """() => STRING name
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5a_6AttrID_6get_name(struct __pyx_obj_4h5py_3h5a_AttrID *__pyx_v_self) {
+  int __pyx_v_blen;
+  char *__pyx_v_buf;
+  PyObject *__pyx_v_strout = NULL;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  Py_ssize_t __pyx_t_1;
+  void *__pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_name", 0);
+
+  /* "h5py/h5a.pyx":394
+ *         cdef int blen
+ *         cdef char* buf
+ *         buf = NULL             # <<<<<<<<<<<<<<
+ * 
+ *         try:
+ */
+  __pyx_v_buf = NULL;
+
+  /* "h5py/h5a.pyx":396
+ *         buf = NULL
+ * 
+ *         try:             # <<<<<<<<<<<<<<
+ *             blen = H5Aget_name(self.id, 0, NULL)
+ *             assert blen >= 0
+ */
+  /*try:*/ {
+
+    /* "h5py/h5a.pyx":397
+ * 
+ *         try:
+ *             blen = H5Aget_name(self.id, 0, NULL)             # <<<<<<<<<<<<<<
+ *             assert blen >= 0
+ *             buf = <char*>emalloc(sizeof(char)*blen+1)
+ */
+    __pyx_t_1 = __pyx_f_4h5py_4defs_H5Aget_name(__pyx_v_self->__pyx_base.id, 0, NULL); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 397; __pyx_clineno = __LINE__; goto __pyx_L4;}
+    __pyx_v_blen = __pyx_t_1;
+
+    /* "h5py/h5a.pyx":398
+ *         try:
+ *             blen = H5Aget_name(self.id, 0, NULL)
+ *             assert blen >= 0             # <<<<<<<<<<<<<<
+ *             buf = <char*>emalloc(sizeof(char)*blen+1)
+ *             blen = H5Aget_name(self.id, blen+1, buf)
+ */
+    #ifndef CYTHON_WITHOUT_ASSERTIONS
+    if (unlikely(!(__pyx_v_blen >= 0))) {
+      PyErr_SetNone(PyExc_AssertionError);
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 398; __pyx_clineno = __LINE__; goto __pyx_L4;}
+    }
+    #endif
+
+    /* "h5py/h5a.pyx":399
+ *             blen = H5Aget_name(self.id, 0, NULL)
+ *             assert blen >= 0
+ *             buf = <char*>emalloc(sizeof(char)*blen+1)             # <<<<<<<<<<<<<<
+ *             blen = H5Aget_name(self.id, blen+1, buf)
+ *             strout = <bytes>buf
+ */
+    __pyx_t_2 = __pyx_f_4h5py_5utils_emalloc((((sizeof(char)) * __pyx_v_blen) + 1)); if (unlikely(__pyx_t_2 == NULL && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L4;}
+    __pyx_v_buf = ((char *)__pyx_t_2);
+
+    /* "h5py/h5a.pyx":400
+ *             assert blen >= 0
+ *             buf = <char*>emalloc(sizeof(char)*blen+1)
+ *             blen = H5Aget_name(self.id, blen+1, buf)             # <<<<<<<<<<<<<<
+ *             strout = <bytes>buf
+ *         finally:
+ */
+    __pyx_t_1 = __pyx_f_4h5py_4defs_H5Aget_name(__pyx_v_self->__pyx_base.id, (__pyx_v_blen + 1), __pyx_v_buf); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 400; __pyx_clineno = __LINE__; goto __pyx_L4;}
+    __pyx_v_blen = __pyx_t_1;
+
+    /* "h5py/h5a.pyx":401
+ *             buf = <char*>emalloc(sizeof(char)*blen+1)
+ *             blen = H5Aget_name(self.id, blen+1, buf)
+ *             strout = <bytes>buf             # <<<<<<<<<<<<<<
+ *         finally:
+ *             efree(buf)
+ */
+    __pyx_t_3 = PyBytes_FromString(__pyx_v_buf); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 401; __pyx_clineno = __LINE__; goto __pyx_L4;}
+    __Pyx_GOTREF(((PyObject *)__pyx_t_3));
+    __Pyx_INCREF(((PyObject*)__pyx_t_3));
+    __pyx_v_strout = ((PyObject*)__pyx_t_3);
+    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
+  }
+
+  /* "h5py/h5a.pyx":403
+ *             strout = <bytes>buf
+ *         finally:
+ *             efree(buf)             # <<<<<<<<<<<<<<
+ * 
+ *         return strout
+ */
+  /*finally:*/ {
+    int __pyx_why;
+    PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb;
+    int __pyx_exc_lineno;
+    __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
+    __pyx_why = 0; goto __pyx_L5;
+    __pyx_L4: {
+      __pyx_why = 4;
+      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb);
+      __pyx_exc_lineno = __pyx_lineno;
+      goto __pyx_L5;
+    }
+    __pyx_L5:;
+    __pyx_f_4h5py_5utils_efree(__pyx_v_buf);
+    switch (__pyx_why) {
+      case 4: {
+        __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb);
+        __pyx_lineno = __pyx_exc_lineno;
+        __pyx_exc_type = 0;
+        __pyx_exc_value = 0;
+        __pyx_exc_tb = 0;
+        goto __pyx_L1_error;
+      }
+    }
+  }
+
+  /* "h5py/h5a.pyx":405
+ *             efree(buf)
+ * 
+ *         return strout             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(((PyObject *)__pyx_v_strout));
+  __pyx_r = ((PyObject *)__pyx_v_strout);
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("h5py.h5a.AttrID.get_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_strout);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5a_6AttrID_9get_space(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5a_6AttrID_8get_space[] = "() => SpaceID\n\n        Create and return a copy of the attribute's dataspace.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5a_6AttrID_9get_space(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_space (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5a_6AttrID_8get_space(((struct __pyx_obj_4h5py_3h5a_AttrID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5a.pyx":408
+ * 
+ * 
+ *     def get_space(self):             # <<<<<<<<<<<<<<
+ *         """() => SpaceID
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5a_6AttrID_8get_space(struct __pyx_obj_4h5py_3h5a_AttrID *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  hid_t __pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_space", 0);
+
+  /* "h5py/h5a.pyx":413
+ *         Create and return a copy of the attribute's dataspace.
+ *         """
+ *         return SpaceID.open(H5Aget_space(self.id))             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyObject_GetAttr(((PyObject *)((PyObject*)__pyx_ptype_4h5py_3h5s_SpaceID)), __pyx_n_s__open); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 413; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __pyx_f_4h5py_4defs_H5Aget_space(__pyx_v_self->__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 413; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyInt_to_py_hid_t(__pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 413; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 413; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_3);
+  __pyx_t_3 = 0;
+  __pyx_t_3 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 413; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
+  __pyx_r = __pyx_t_3;
+  __pyx_t_3 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("h5py.h5a.AttrID.get_space", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5a_6AttrID_11get_type(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5a_6AttrID_10get_type[] = "() => TypeID\n\n        Create and return a copy of the attribute's datatype.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5a_6AttrID_11get_type(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_type (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5a_6AttrID_10get_type(((struct __pyx_obj_4h5py_3h5a_AttrID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5a.pyx":416
+ * 
+ * 
+ *     def get_type(self):             # <<<<<<<<<<<<<<
+ *         """() => TypeID
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5a_6AttrID_10get_type(struct __pyx_obj_4h5py_3h5a_AttrID *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  hid_t __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_type", 0);
+
+  /* "h5py/h5a.pyx":421
+ *         Create and return a copy of the attribute's datatype.
+ *         """
+ *         return typewrap(H5Aget_type(self.id))             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Aget_type(__pyx_v_self->__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 421; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = ((PyObject *)__pyx_f_4h5py_3h5t_typewrap(__pyx_t_1, 0)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 421; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5a.AttrID.get_type", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5a_6AttrID_13get_storage_size(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5a_6AttrID_12get_storage_size[] = "() => INT\n\n        Get the amount of storage required for this attribute.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5a_6AttrID_13get_storage_size(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_storage_size (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5a_6AttrID_12get_storage_size(((struct __pyx_obj_4h5py_3h5a_AttrID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5a.pyx":424
+ * 
+ * 
+ *     def get_storage_size(self):             # <<<<<<<<<<<<<<
+ *         """() => INT
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5a_6AttrID_12get_storage_size(struct __pyx_obj_4h5py_3h5a_AttrID *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  hsize_t __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_storage_size", 0);
+
+  /* "h5py/h5a.pyx":429
+ *         Get the amount of storage required for this attribute.
+ *         """
+ *         return H5Aget_storage_size(self.id)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Aget_storage_size(__pyx_v_self->__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 429; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyInt_to_py_hsize_t(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 429; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5a.AttrID.get_storage_size", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_tp_new_4h5py_3h5a_AttrID(PyTypeObject *t, PyObject *a, PyObject *k) {
+  PyObject *o = __pyx_ptype_4h5py_8_objects_ObjectID->tp_new(t, a, k);
+  if (!o) return 0;
+  return o;
+}
+
+static void __pyx_tp_dealloc_4h5py_3h5a_AttrID(PyObject *o) {
+  PyObject_GC_UnTrack(o);
+  PyObject_GC_Track(o);
+  if (likely(__pyx_ptype_4h5py_8_objects_ObjectID)) __pyx_ptype_4h5py_8_objects_ObjectID->tp_dealloc(o); else __Pyx_call_next_tp_dealloc(o, __pyx_tp_dealloc_4h5py_3h5a_AttrID);
+}
+
+static int __pyx_tp_traverse_4h5py_3h5a_AttrID(PyObject *o, visitproc v, void *a) {
+  int e;
+  e = ((likely(__pyx_ptype_4h5py_8_objects_ObjectID)) ? ((__pyx_ptype_4h5py_8_objects_ObjectID->tp_traverse) ? __pyx_ptype_4h5py_8_objects_ObjectID->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_4h5py_3h5a_AttrID)); if (e) return e;
+  return 0;
+}
+
+static int __pyx_tp_clear_4h5py_3h5a_AttrID(PyObject *o) {
+  if (likely(__pyx_ptype_4h5py_8_objects_ObjectID)) { if (__pyx_ptype_4h5py_8_objects_ObjectID->tp_clear) __pyx_ptype_4h5py_8_objects_ObjectID->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_4h5py_3h5a_AttrID);
+  return 0;
+}
+
+static PyObject *__pyx_getprop_4h5py_3h5a_6AttrID_name(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_4h5py_3h5a_6AttrID_4name_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_4h5py_3h5a_6AttrID_shape(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_4h5py_3h5a_6AttrID_5shape_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_4h5py_3h5a_6AttrID_dtype(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_4h5py_3h5a_6AttrID_5dtype_1__get__(o);
+}
+
+static PyMethodDef __pyx_methods_4h5py_3h5a_AttrID[] = {
+  {__Pyx_NAMESTR("_close"), (PyCFunction)__pyx_pw_4h5py_3h5a_6AttrID_1_close, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5a_6AttrID__close)},
+  {__Pyx_NAMESTR("read"), (PyCFunction)__pyx_pw_4h5py_3h5a_6AttrID_3read, METH_O, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5a_6AttrID_2read)},
+  {__Pyx_NAMESTR("write"), (PyCFunction)__pyx_pw_4h5py_3h5a_6AttrID_5write, METH_O, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5a_6AttrID_4write)},
+  {__Pyx_NAMESTR("get_name"), (PyCFunction)__pyx_pw_4h5py_3h5a_6AttrID_7get_name, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5a_6AttrID_6get_name)},
+  {__Pyx_NAMESTR("get_space"), (PyCFunction)__pyx_pw_4h5py_3h5a_6AttrID_9get_space, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5a_6AttrID_8get_space)},
+  {__Pyx_NAMESTR("get_type"), (PyCFunction)__pyx_pw_4h5py_3h5a_6AttrID_11get_type, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5a_6AttrID_10get_type)},
+  {__Pyx_NAMESTR("get_storage_size"), (PyCFunction)__pyx_pw_4h5py_3h5a_6AttrID_13get_storage_size, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5a_6AttrID_12get_storage_size)},
+  {0, 0, 0, 0}
+};
+
+static struct PyGetSetDef __pyx_getsets_4h5py_3h5a_AttrID[] = {
+  {(char *)"name", __pyx_getprop_4h5py_3h5a_6AttrID_name, 0, __Pyx_DOCSTR(__pyx_k_20), 0},
+  {(char *)"shape", __pyx_getprop_4h5py_3h5a_6AttrID_shape, 0, __Pyx_DOCSTR(__pyx_k_21), 0},
+  {(char *)"dtype", __pyx_getprop_4h5py_3h5a_6AttrID_dtype, 0, __Pyx_DOCSTR(__pyx_k_22), 0},
+  {0, 0, 0, 0, 0}
+};
+
+static PyNumberMethods __pyx_tp_as_number_AttrID = {
+  0, /*nb_add*/
+  0, /*nb_subtract*/
+  0, /*nb_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_divide*/
+  #endif
+  0, /*nb_remainder*/
+  0, /*nb_divmod*/
+  0, /*nb_power*/
+  0, /*nb_negative*/
+  0, /*nb_positive*/
+  0, /*nb_absolute*/
+  0, /*nb_nonzero*/
+  0, /*nb_invert*/
+  0, /*nb_lshift*/
+  0, /*nb_rshift*/
+  0, /*nb_and*/
+  0, /*nb_xor*/
+  0, /*nb_or*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_coerce*/
+  #endif
+  0, /*nb_int*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_long*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*nb_float*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_oct*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_hex*/
+  #endif
+  0, /*nb_inplace_add*/
+  0, /*nb_inplace_subtract*/
+  0, /*nb_inplace_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_inplace_divide*/
+  #endif
+  0, /*nb_inplace_remainder*/
+  0, /*nb_inplace_power*/
+  0, /*nb_inplace_lshift*/
+  0, /*nb_inplace_rshift*/
+  0, /*nb_inplace_and*/
+  0, /*nb_inplace_xor*/
+  0, /*nb_inplace_or*/
+  0, /*nb_floor_divide*/
+  0, /*nb_true_divide*/
+  0, /*nb_inplace_floor_divide*/
+  0, /*nb_inplace_true_divide*/
+  #if PY_VERSION_HEX >= 0x02050000
+  0, /*nb_index*/
+  #endif
+};
+
+static PySequenceMethods __pyx_tp_as_sequence_AttrID = {
+  0, /*sq_length*/
+  0, /*sq_concat*/
+  0, /*sq_repeat*/
+  0, /*sq_item*/
+  0, /*sq_slice*/
+  0, /*sq_ass_item*/
+  0, /*sq_ass_slice*/
+  0, /*sq_contains*/
+  0, /*sq_inplace_concat*/
+  0, /*sq_inplace_repeat*/
+};
+
+static PyMappingMethods __pyx_tp_as_mapping_AttrID = {
+  0, /*mp_length*/
+  0, /*mp_subscript*/
+  0, /*mp_ass_subscript*/
+};
+
+static PyBufferProcs __pyx_tp_as_buffer_AttrID = {
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getreadbuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getwritebuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getsegcount*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getcharbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_getbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_releasebuffer*/
+  #endif
+};
+
+static PyTypeObject __pyx_type_4h5py_3h5a_AttrID = {
+  PyVarObject_HEAD_INIT(0, 0)
+  __Pyx_NAMESTR("h5py.h5a.AttrID"), /*tp_name*/
+  sizeof(struct __pyx_obj_4h5py_3h5a_AttrID), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_4h5py_3h5a_AttrID, /*tp_dealloc*/
+  0, /*tp_print*/
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*tp_repr*/
+  &__pyx_tp_as_number_AttrID, /*tp_as_number*/
+  &__pyx_tp_as_sequence_AttrID, /*tp_as_sequence*/
+  &__pyx_tp_as_mapping_AttrID, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  &__pyx_tp_as_buffer_AttrID, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+  __Pyx_DOCSTR("\n        Logical representation of an HDF5 attribute identifier.\n\n        Objects of this class can be used in any HDF5 function call\n        which expects an attribute identifier.  Additionally, all ``H5A*``\n        functions which always take an attribute instance as the first\n        argument are presented as methods of this class.\n\n        * Hashable: No\n        * Equality: Identifier comparison\n    "), /*tp_doc*/
+  __pyx_tp_traverse_4h5py_3h5a_AttrID, /*tp_traverse*/
+  __pyx_tp_clear_4h5py_3h5a_AttrID, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_4h5py_3h5a_AttrID, /*tp_methods*/
+  0, /*tp_members*/
+  __pyx_getsets_4h5py_3h5a_AttrID, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  0, /*tp_dictoffset*/
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_4h5py_3h5a_AttrID, /*tp_new*/
+  0, /*tp_free*/
+  0, /*tp_is_gc*/
+  0, /*tp_bases*/
+  0, /*tp_mro*/
+  0, /*tp_cache*/
+  0, /*tp_subclasses*/
+  0, /*tp_weaklist*/
+  0, /*tp_del*/
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*tp_version_tag*/
+  #endif
+};
+
+static PyObject *__pyx_tp_new_4h5py_3h5a_AttrInfo(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
+  PyObject *o = (*t->tp_alloc)(t, 0);
+  if (!o) return 0;
+  return o;
+}
+
+static void __pyx_tp_dealloc_4h5py_3h5a_AttrInfo(PyObject *o) {
+  (*Py_TYPE(o)->tp_free)(o);
+}
+
+static PyObject *__pyx_getprop_4h5py_3h5a_8AttrInfo_corder_valid(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_4h5py_3h5a_8AttrInfo_12corder_valid_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_4h5py_3h5a_8AttrInfo_corder(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_4h5py_3h5a_8AttrInfo_6corder_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_4h5py_3h5a_8AttrInfo_cset(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_4h5py_3h5a_8AttrInfo_4cset_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_4h5py_3h5a_8AttrInfo_data_size(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_4h5py_3h5a_8AttrInfo_9data_size_1__get__(o);
+}
+
+static PyMethodDef __pyx_methods_4h5py_3h5a_AttrInfo[] = {
+  {__Pyx_NAMESTR("_hash"), (PyCFunction)__pyx_pw_4h5py_3h5a_8AttrInfo_1_hash, METH_NOARGS, __Pyx_DOCSTR(0)},
+  {0, 0, 0, 0}
+};
+
+static struct PyGetSetDef __pyx_getsets_4h5py_3h5a_AttrInfo[] = {
+  {(char *)"corder_valid", __pyx_getprop_4h5py_3h5a_8AttrInfo_corder_valid, 0, __Pyx_DOCSTR(__pyx_k_23), 0},
+  {(char *)"corder", __pyx_getprop_4h5py_3h5a_8AttrInfo_corder, 0, __Pyx_DOCSTR(__pyx_k_24), 0},
+  {(char *)"cset", __pyx_getprop_4h5py_3h5a_8AttrInfo_cset, 0, __Pyx_DOCSTR(__pyx_k_25), 0},
+  {(char *)"data_size", __pyx_getprop_4h5py_3h5a_8AttrInfo_data_size, 0, __Pyx_DOCSTR(__pyx_k_26), 0},
+  {0, 0, 0, 0, 0}
+};
+
+static PyNumberMethods __pyx_tp_as_number_AttrInfo = {
+  0, /*nb_add*/
+  0, /*nb_subtract*/
+  0, /*nb_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_divide*/
+  #endif
+  0, /*nb_remainder*/
+  0, /*nb_divmod*/
+  0, /*nb_power*/
+  0, /*nb_negative*/
+  0, /*nb_positive*/
+  0, /*nb_absolute*/
+  0, /*nb_nonzero*/
+  0, /*nb_invert*/
+  0, /*nb_lshift*/
+  0, /*nb_rshift*/
+  0, /*nb_and*/
+  0, /*nb_xor*/
+  0, /*nb_or*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_coerce*/
+  #endif
+  0, /*nb_int*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_long*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*nb_float*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_oct*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_hex*/
+  #endif
+  0, /*nb_inplace_add*/
+  0, /*nb_inplace_subtract*/
+  0, /*nb_inplace_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_inplace_divide*/
+  #endif
+  0, /*nb_inplace_remainder*/
+  0, /*nb_inplace_power*/
+  0, /*nb_inplace_lshift*/
+  0, /*nb_inplace_rshift*/
+  0, /*nb_inplace_and*/
+  0, /*nb_inplace_xor*/
+  0, /*nb_inplace_or*/
+  0, /*nb_floor_divide*/
+  0, /*nb_true_divide*/
+  0, /*nb_inplace_floor_divide*/
+  0, /*nb_inplace_true_divide*/
+  #if PY_VERSION_HEX >= 0x02050000
+  0, /*nb_index*/
+  #endif
+};
+
+static PySequenceMethods __pyx_tp_as_sequence_AttrInfo = {
+  0, /*sq_length*/
+  0, /*sq_concat*/
+  0, /*sq_repeat*/
+  0, /*sq_item*/
+  0, /*sq_slice*/
+  0, /*sq_ass_item*/
+  0, /*sq_ass_slice*/
+  0, /*sq_contains*/
+  0, /*sq_inplace_concat*/
+  0, /*sq_inplace_repeat*/
+};
+
+static PyMappingMethods __pyx_tp_as_mapping_AttrInfo = {
+  0, /*mp_length*/
+  0, /*mp_subscript*/
+  0, /*mp_ass_subscript*/
+};
+
+static PyBufferProcs __pyx_tp_as_buffer_AttrInfo = {
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getreadbuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getwritebuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getsegcount*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getcharbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_getbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_releasebuffer*/
+  #endif
+};
+
+static PyTypeObject __pyx_type_4h5py_3h5a_AttrInfo = {
+  PyVarObject_HEAD_INIT(0, 0)
+  __Pyx_NAMESTR("h5py.h5a.AttrInfo"), /*tp_name*/
+  sizeof(struct __pyx_obj_4h5py_3h5a_AttrInfo), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_4h5py_3h5a_AttrInfo, /*tp_dealloc*/
+  0, /*tp_print*/
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*tp_repr*/
+  &__pyx_tp_as_number_AttrInfo, /*tp_as_number*/
+  &__pyx_tp_as_sequence_AttrInfo, /*tp_as_sequence*/
+  &__pyx_tp_as_mapping_AttrInfo, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  &__pyx_tp_as_buffer_AttrInfo, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
+  0, /*tp_doc*/
+  0, /*tp_traverse*/
+  0, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_4h5py_3h5a_AttrInfo, /*tp_methods*/
+  0, /*tp_members*/
+  __pyx_getsets_4h5py_3h5a_AttrInfo, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  0, /*tp_dictoffset*/
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_4h5py_3h5a_AttrInfo, /*tp_new*/
+  0, /*tp_free*/
+  0, /*tp_is_gc*/
+  0, /*tp_bases*/
+  0, /*tp_mro*/
+  0, /*tp_cache*/
+  0, /*tp_subclasses*/
+  0, /*tp_weaklist*/
+  0, /*tp_del*/
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*tp_version_tag*/
+  #endif
+};
+
+static PyObject *__pyx_tp_new_4h5py_3h5a__AttrVisitor(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
+  struct __pyx_obj_4h5py_3h5a__AttrVisitor *p;
+  PyObject *o = (*t->tp_alloc)(t, 0);
+  if (!o) return 0;
+  p = ((struct __pyx_obj_4h5py_3h5a__AttrVisitor *)o);
+  p->func = Py_None; Py_INCREF(Py_None);
+  p->retval = Py_None; Py_INCREF(Py_None);
+  return o;
+}
+
+static void __pyx_tp_dealloc_4h5py_3h5a__AttrVisitor(PyObject *o) {
+  struct __pyx_obj_4h5py_3h5a__AttrVisitor *p = (struct __pyx_obj_4h5py_3h5a__AttrVisitor *)o;
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->func);
+  Py_CLEAR(p->retval);
+  PyObject_GC_Track(o);
+  (*Py_TYPE(o)->tp_free)(o);
+}
+
+static int __pyx_tp_traverse_4h5py_3h5a__AttrVisitor(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_4h5py_3h5a__AttrVisitor *p = (struct __pyx_obj_4h5py_3h5a__AttrVisitor *)o;
+  if (p->func) {
+    e = (*v)(p->func, a); if (e) return e;
+  }
+  if (p->retval) {
+    e = (*v)(p->retval, a); if (e) return e;
+  }
+  return 0;
+}
+
+static int __pyx_tp_clear_4h5py_3h5a__AttrVisitor(PyObject *o) {
+  struct __pyx_obj_4h5py_3h5a__AttrVisitor *p = (struct __pyx_obj_4h5py_3h5a__AttrVisitor *)o;
+  PyObject* tmp;
+  tmp = ((PyObject*)p->func);
+  p->func = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->retval);
+  p->retval = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  return 0;
+}
+
+static PyMethodDef __pyx_methods_4h5py_3h5a__AttrVisitor[] = {
+  {0, 0, 0, 0}
+};
+
+static PyNumberMethods __pyx_tp_as_number__AttrVisitor = {
+  0, /*nb_add*/
+  0, /*nb_subtract*/
+  0, /*nb_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_divide*/
+  #endif
+  0, /*nb_remainder*/
+  0, /*nb_divmod*/
+  0, /*nb_power*/
+  0, /*nb_negative*/
+  0, /*nb_positive*/
+  0, /*nb_absolute*/
+  0, /*nb_nonzero*/
+  0, /*nb_invert*/
+  0, /*nb_lshift*/
+  0, /*nb_rshift*/
+  0, /*nb_and*/
+  0, /*nb_xor*/
+  0, /*nb_or*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_coerce*/
+  #endif
+  0, /*nb_int*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_long*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*nb_float*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_oct*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_hex*/
+  #endif
+  0, /*nb_inplace_add*/
+  0, /*nb_inplace_subtract*/
+  0, /*nb_inplace_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_inplace_divide*/
+  #endif
+  0, /*nb_inplace_remainder*/
+  0, /*nb_inplace_power*/
+  0, /*nb_inplace_lshift*/
+  0, /*nb_inplace_rshift*/
+  0, /*nb_inplace_and*/
+  0, /*nb_inplace_xor*/
+  0, /*nb_inplace_or*/
+  0, /*nb_floor_divide*/
+  0, /*nb_true_divide*/
+  0, /*nb_inplace_floor_divide*/
+  0, /*nb_inplace_true_divide*/
+  #if PY_VERSION_HEX >= 0x02050000
+  0, /*nb_index*/
+  #endif
+};
+
+static PySequenceMethods __pyx_tp_as_sequence__AttrVisitor = {
+  0, /*sq_length*/
+  0, /*sq_concat*/
+  0, /*sq_repeat*/
+  0, /*sq_item*/
+  0, /*sq_slice*/
+  0, /*sq_ass_item*/
+  0, /*sq_ass_slice*/
+  0, /*sq_contains*/
+  0, /*sq_inplace_concat*/
+  0, /*sq_inplace_repeat*/
+};
+
+static PyMappingMethods __pyx_tp_as_mapping__AttrVisitor = {
+  0, /*mp_length*/
+  0, /*mp_subscript*/
+  0, /*mp_ass_subscript*/
+};
+
+static PyBufferProcs __pyx_tp_as_buffer__AttrVisitor = {
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getreadbuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getwritebuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getsegcount*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getcharbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_getbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_releasebuffer*/
+  #endif
+};
+
+static PyTypeObject __pyx_type_4h5py_3h5a__AttrVisitor = {
+  PyVarObject_HEAD_INIT(0, 0)
+  __Pyx_NAMESTR("h5py.h5a._AttrVisitor"), /*tp_name*/
+  sizeof(struct __pyx_obj_4h5py_3h5a__AttrVisitor), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_4h5py_3h5a__AttrVisitor, /*tp_dealloc*/
+  0, /*tp_print*/
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*tp_repr*/
+  &__pyx_tp_as_number__AttrVisitor, /*tp_as_number*/
+  &__pyx_tp_as_sequence__AttrVisitor, /*tp_as_sequence*/
+  &__pyx_tp_as_mapping__AttrVisitor, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  &__pyx_tp_as_buffer__AttrVisitor, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_4h5py_3h5a__AttrVisitor, /*tp_traverse*/
+  __pyx_tp_clear_4h5py_3h5a__AttrVisitor, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_4h5py_3h5a__AttrVisitor, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  0, /*tp_dictoffset*/
+  __pyx_pw_4h5py_3h5a_12_AttrVisitor_1__init__, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_4h5py_3h5a__AttrVisitor, /*tp_new*/
+  0, /*tp_free*/
+  0, /*tp_is_gc*/
+  0, /*tp_bases*/
+  0, /*tp_mro*/
+  0, /*tp_cache*/
+  0, /*tp_subclasses*/
+  0, /*tp_weaklist*/
+  0, /*tp_del*/
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*tp_version_tag*/
+  #endif
+};
+
+static PyMethodDef __pyx_methods[] = {
+  {0, 0, 0, 0}
+};
+
+#if PY_MAJOR_VERSION >= 3
+static struct PyModuleDef __pyx_moduledef = {
+  #if PY_VERSION_HEX < 0x03020000
+    { PyObject_HEAD_INIT(NULL) NULL, 0, NULL },
+  #else
+    PyModuleDef_HEAD_INIT,
+  #endif
+    __Pyx_NAMESTR("h5a"),
+    __Pyx_DOCSTR(__pyx_k_27), /* m_doc */
+    -1, /* m_size */
+    __pyx_methods /* m_methods */,
+    NULL, /* m_reload */
+    NULL, /* m_traverse */
+    NULL, /* m_clear */
+    NULL /* m_free */
+};
+#endif
+
+static __Pyx_StringTabEntry __pyx_string_tab[] = {
+  {&__pyx_kp_s_12, __pyx_k_12, sizeof(__pyx_k_12), 0, 0, 1, 0},
+  {&__pyx_kp_s_16, __pyx_k_16, sizeof(__pyx_k_16), 0, 0, 1, 0},
+  {&__pyx_n_s_18, __pyx_k_18, sizeof(__pyx_k_18), 0, 0, 1, 1},
+  {&__pyx_kp_s_30, __pyx_k_30, sizeof(__pyx_k_30), 0, 0, 1, 0},
+  {&__pyx_n_s_31, __pyx_k_31, sizeof(__pyx_k_31), 0, 0, 1, 1},
+  {&__pyx_kp_s_4, __pyx_k_4, sizeof(__pyx_k_4), 0, 0, 1, 0},
+  {&__pyx_kp_s_8, __pyx_k_8, sizeof(__pyx_k_8), 0, 0, 1, 0},
+  {&__pyx_n_s__TypeError, __pyx_k__TypeError, sizeof(__pyx_k__TypeError), 0, 0, 1, 1},
+  {&__pyx_n_s__ValueError, __pyx_k__ValueError, sizeof(__pyx_k__ValueError), 0, 0, 1, 1},
+  {&__pyx_n_s____enter__, __pyx_k____enter__, sizeof(__pyx_k____enter__), 0, 0, 1, 1},
+  {&__pyx_n_s____exit__, __pyx_k____exit__, sizeof(__pyx_k____exit__), 0, 0, 1, 1},
+  {&__pyx_n_s____main__, __pyx_k____main__, sizeof(__pyx_k____main__), 0, 0, 1, 1},
+  {&__pyx_n_s____test__, __pyx_k____test__, sizeof(__pyx_k____test__), 0, 0, 1, 1},
+  {&__pyx_n_s___objects, __pyx_k___objects, sizeof(__pyx_k___objects), 0, 0, 1, 1},
+  {&__pyx_n_s__cfunc, __pyx_k__cfunc, sizeof(__pyx_k__cfunc), 0, 0, 1, 1},
+  {&__pyx_n_s__corder, __pyx_k__corder, sizeof(__pyx_k__corder), 0, 0, 1, 1},
+  {&__pyx_n_s__corder_valid, __pyx_k__corder_valid, sizeof(__pyx_k__corder_valid), 0, 0, 1, 1},
+  {&__pyx_n_s__create, __pyx_k__create, sizeof(__pyx_k__create), 0, 0, 1, 1},
+  {&__pyx_n_s__cset, __pyx_k__cset, sizeof(__pyx_k__cset), 0, 0, 1, 1},
+  {&__pyx_n_s__data_size, __pyx_k__data_size, sizeof(__pyx_k__data_size), 0, 0, 1, 1},
+  {&__pyx_n_s__delete, __pyx_k__delete, sizeof(__pyx_k__delete), 0, 0, 1, 1},
+  {&__pyx_n_s__dtype, __pyx_k__dtype, sizeof(__pyx_k__dtype), 0, 0, 1, 1},
+  {&__pyx_n_s__exists, __pyx_k__exists, sizeof(__pyx_k__exists), 0, 0, 1, 1},
+  {&__pyx_n_s__func, __pyx_k__func, sizeof(__pyx_k__func), 0, 0, 1, 1},
+  {&__pyx_n_s__get_info, __pyx_k__get_info, sizeof(__pyx_k__get_info), 0, 0, 1, 1},
+  {&__pyx_n_s__get_name, __pyx_k__get_name, sizeof(__pyx_k__get_name), 0, 0, 1, 1},
+  {&__pyx_n_s__get_num_attrs, __pyx_k__get_num_attrs, sizeof(__pyx_k__get_num_attrs), 0, 0, 1, 1},
+  {&__pyx_n_s__get_space, __pyx_k__get_space, sizeof(__pyx_k__get_space), 0, 0, 1, 1},
+  {&__pyx_n_s__get_type, __pyx_k__get_type, sizeof(__pyx_k__get_type), 0, 0, 1, 1},
+  {&__pyx_n_s__h5py, __pyx_k__h5py, sizeof(__pyx_k__h5py), 0, 0, 1, 1},
+  {&__pyx_n_s__i, __pyx_k__i, sizeof(__pyx_k__i), 0, 0, 1, 1},
+  {&__pyx_n_s__index, __pyx_k__index, sizeof(__pyx_k__index), 0, 0, 1, 1},
+  {&__pyx_n_s__index_type, __pyx_k__index_type, sizeof(__pyx_k__index_type), 0, 0, 1, 1},
+  {&__pyx_n_s__info, __pyx_k__info, sizeof(__pyx_k__info), 0, 0, 1, 1},
+  {&__pyx_n_s__iterate, __pyx_k__iterate, sizeof(__pyx_k__iterate), 0, 0, 1, 1},
+  {&__pyx_n_s__lapl, __pyx_k__lapl, sizeof(__pyx_k__lapl), 0, 0, 1, 1},
+  {&__pyx_n_s__loc, __pyx_k__loc, sizeof(__pyx_k__loc), 0, 0, 1, 1},
+  {&__pyx_n_s__lock, __pyx_k__lock, sizeof(__pyx_k__lock), 0, 0, 1, 1},
+  {&__pyx_n_s__name, __pyx_k__name, sizeof(__pyx_k__name), 0, 0, 1, 1},
+  {&__pyx_n_s__new_name, __pyx_k__new_name, sizeof(__pyx_k__new_name), 0, 0, 1, 1},
+  {&__pyx_n_s__obj_name, __pyx_k__obj_name, sizeof(__pyx_k__obj_name), 0, 0, 1, 1},
+  {&__pyx_n_s__open, __pyx_k__open, sizeof(__pyx_k__open), 0, 0, 1, 1},
+  {&__pyx_n_s__order, __pyx_k__order, sizeof(__pyx_k__order), 0, 0, 1, 1},
+  {&__pyx_n_s__registry, __pyx_k__registry, sizeof(__pyx_k__registry), 0, 0, 1, 1},
+  {&__pyx_n_s__rename, __pyx_k__rename, sizeof(__pyx_k__rename), 0, 0, 1, 1},
+  {&__pyx_n_s__space, __pyx_k__space, sizeof(__pyx_k__space), 0, 0, 1, 1},
+  {&__pyx_n_s__tid, __pyx_k__tid, sizeof(__pyx_k__tid), 0, 0, 1, 1},
+  {&__pyx_n_s__valid, __pyx_k__valid, sizeof(__pyx_k__valid), 0, 0, 1, 1},
+  {&__pyx_n_s__vis, __pyx_k__vis, sizeof(__pyx_k__vis), 0, 0, 1, 1},
+  {0, 0, 0, 0, 0, 0, 0}
+};
+static int __Pyx_InitCachedBuiltins(void) {
+  __pyx_builtin_TypeError = __Pyx_GetName(__pyx_b, __pyx_n_s__TypeError); if (!__pyx_builtin_TypeError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_builtin_ValueError = __Pyx_GetName(__pyx_b, __pyx_n_s__ValueError); if (!__pyx_builtin_ValueError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 265; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  return 0;
+  __pyx_L1_error:;
+  return -1;
+}
+
+static int __Pyx_InitCachedConstants(void) {
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0);
+
+  /* "h5py/h5a.pyx":71
+ *     """
+ *     if (name == NULL and index < 0) or (name != NULL and index >= 0):
+ *         raise TypeError("Exactly one of name or idx must be specified")             # <<<<<<<<<<<<<<
+ * 
+ *     if name != NULL:
+ */
+  __pyx_k_tuple_5 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_4)); if (unlikely(!__pyx_k_tuple_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_5);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_5));
+
+  /* "h5py/h5a.pyx":140
+ *             <H5_iter_order_t>order, index, pdefault(lapl))
+ *     else:
+ *         raise TypeError("Exactly one of index or name must be specified.")             # <<<<<<<<<<<<<<
+ * 
+ * def get_num_attrs(ObjectID loc not None):
+ */
+  __pyx_k_tuple_9 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_8)); if (unlikely(!__pyx_k_tuple_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 140; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_9);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_9));
+
+  /* "h5py/h5a.pyx":203
+ *         H5Aget_info(loc.id, &info.info)
+ *     elif name != NULL and index >= 0:
+ *         raise TypeError("At most one of name and index may be specified")             # <<<<<<<<<<<<<<
+ *     elif name != NULL:
+ *         H5Aget_info_by_name(loc.id, obj_name, name, &info.info, pdefault(lapl))
+ */
+  __pyx_k_tuple_13 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_12)); if (unlikely(!__pyx_k_tuple_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 203; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_13);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_13));
+
+  /* "h5py/h5a.pyx":265
+ *     """
+ *     if index < 0:
+ *         raise ValueError("Starting index must be a non-negative integer.")             # <<<<<<<<<<<<<<
+ * 
+ *     cdef hsize_t i = index
+ */
+  __pyx_k_tuple_17 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_16)); if (unlikely(!__pyx_k_tuple_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 265; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_17);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_17));
+
+  /* "h5py/h5a.pyx":328
+ *         their Python wrappers are freed.
+ *         """
+ *         with _objects.registry.lock:             # <<<<<<<<<<<<<<
+ *             H5Aclose(self.id)
+ *             if not self.valid:
+ */
+  __pyx_k_tuple_19 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_19)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 328; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_19);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_19));
+
+  /* "h5py/h5a.pyx":32
+ * # --- create, create_by_name ---
+ * 
+ * def create(ObjectID loc not None, char* name, TypeID tid not None,             # <<<<<<<<<<<<<<
+ *     SpaceID space not None, *, char* obj_name='.', PropID lapl=None):
+ *     """(ObjectID loc, STRING name, TypeID tid, SpaceID space, **kwds) => AttrID
+ */
+  __pyx_k_tuple_28 = PyTuple_Pack(6, ((PyObject *)__pyx_n_s__loc), ((PyObject *)__pyx_n_s__name), ((PyObject *)__pyx_n_s__tid), ((PyObject *)__pyx_n_s__space), ((PyObject *)__pyx_n_s__obj_name), ((PyObject *)__pyx_n_s__lapl)); if (unlikely(!__pyx_k_tuple_28)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_28);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_28));
+  __pyx_k_codeobj_29 = (PyObject*)__Pyx_PyCode_New(6, 2, 6, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_28, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_30, __pyx_n_s__create, 32, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_29)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5a.pyx":51
+ * # --- open, open_by_name, open_by_idx ---
+ * 
+ * def open(ObjectID loc not None, char* name=NULL, int index=-1, *,             # <<<<<<<<<<<<<<
+ *     char* obj_name='.', int index_type=H5_INDEX_NAME, int order=H5_ITER_NATIVE,
+ *     PropID lapl=None):
+ */
+  __pyx_k_tuple_32 = PyTuple_Pack(7, ((PyObject *)__pyx_n_s__loc), ((PyObject *)__pyx_n_s__name), ((PyObject *)__pyx_n_s__index), ((PyObject *)__pyx_n_s__obj_name), ((PyObject *)__pyx_n_s__index_type), ((PyObject *)__pyx_n_s__order), ((PyObject *)__pyx_n_s__lapl)); if (unlikely(!__pyx_k_tuple_32)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_32);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_32));
+  __pyx_k_codeobj_33 = (PyObject*)__Pyx_PyCode_New(7, 4, 7, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_32, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_30, __pyx_n_s__open, 51, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_33)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5a.pyx":84
+ * # --- exists, exists_by_name ---
+ * 
+ * def exists(ObjectID loc not None, char* name, *,             # <<<<<<<<<<<<<<
+ *             char* obj_name=".", PropID lapl=None):
+ *     """(ObjectID loc, STRING name, **kwds) => BOOL
+ */
+  __pyx_k_tuple_34 = PyTuple_Pack(4, ((PyObject *)__pyx_n_s__loc), ((PyObject *)__pyx_n_s__name), ((PyObject *)__pyx_n_s__obj_name), ((PyObject *)__pyx_n_s__lapl)); if (unlikely(!__pyx_k_tuple_34)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_34);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_34));
+  __pyx_k_codeobj_35 = (PyObject*)__Pyx_PyCode_New(4, 2, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_34, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_30, __pyx_n_s__exists, 84, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_35)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5a.pyx":101
+ * # --- rename, rename_by_name ---
+ * 
+ * def rename(ObjectID loc not None, char* name, char* new_name, *,             # <<<<<<<<<<<<<<
+ *     char* obj_name='.', PropID lapl=None):
+ *     """(ObjectID loc, STRING name, STRING new_name, **kwds)
+ */
+  __pyx_k_tuple_36 = PyTuple_Pack(5, ((PyObject *)__pyx_n_s__loc), ((PyObject *)__pyx_n_s__name), ((PyObject *)__pyx_n_s__new_name), ((PyObject *)__pyx_n_s__obj_name), ((PyObject *)__pyx_n_s__lapl)); if (unlikely(!__pyx_k_tuple_36)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_36);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_36));
+  __pyx_k_codeobj_37 = (PyObject*)__Pyx_PyCode_New(5, 2, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_36, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_30, __pyx_n_s__rename, 101, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_37)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5a.pyx":116
+ * 
+ * 
+ * def delete(ObjectID loc not None, char* name=NULL, int index=-1, *,             # <<<<<<<<<<<<<<
+ *     char* obj_name='.', int index_type=H5_INDEX_NAME, int order=H5_ITER_NATIVE,
+ *     PropID lapl=None):
+ */
+  __pyx_k_tuple_38 = PyTuple_Pack(7, ((PyObject *)__pyx_n_s__loc), ((PyObject *)__pyx_n_s__name), ((PyObject *)__pyx_n_s__index), ((PyObject *)__pyx_n_s__obj_name), ((PyObject *)__pyx_n_s__index_type), ((PyObject *)__pyx_n_s__order), ((PyObject *)__pyx_n_s__lapl)); if (unlikely(!__pyx_k_tuple_38)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_38);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_38));
+  __pyx_k_codeobj_39 = (PyObject*)__Pyx_PyCode_New(7, 4, 7, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_38, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_30, __pyx_n_s__delete, 116, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_39)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5a.pyx":142
+ *         raise TypeError("Exactly one of index or name must be specified.")
+ * 
+ * def get_num_attrs(ObjectID loc not None):             # <<<<<<<<<<<<<<
+ *     """(ObjectID loc) => INT
+ * 
+ */
+  __pyx_k_tuple_40 = PyTuple_Pack(1, ((PyObject *)__pyx_n_s__loc)); if (unlikely(!__pyx_k_tuple_40)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_40);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_40));
+  __pyx_k_codeobj_41 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_40, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_30, __pyx_n_s__get_num_attrs, 142, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_41)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5a.pyx":175
+ * 
+ * 
+ * def get_info(ObjectID loc not None, char* name=NULL, int index=-1, *,             # <<<<<<<<<<<<<<
+ *             char* obj_name='.', PropID lapl=None,
+ *             int index_type=H5_INDEX_NAME, int order=H5_ITER_NATIVE):
+ */
+  __pyx_k_tuple_42 = PyTuple_Pack(8, ((PyObject *)__pyx_n_s__loc), ((PyObject *)__pyx_n_s__name), ((PyObject *)__pyx_n_s__index), ((PyObject *)__pyx_n_s__obj_name), ((PyObject *)__pyx_n_s__lapl), ((PyObject *)__pyx_n_s__index_type), ((PyObject *)__pyx_n_s__order), ((PyObject *)__pyx_n_s__info)); if (unlikely(!__pyx_k_tuple_42)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 175; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_42);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_42));
+  __pyx_k_codeobj_43 = (PyObject*)__Pyx_PyCode_New(7, 4, 8, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_42, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_30, __pyx_n_s__get_info, 175, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_43)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 175; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5a.pyx":238
+ * 
+ * 
+ * def iterate(ObjectID loc not None, object func, int index=0, *,             # <<<<<<<<<<<<<<
+ *     int index_type=H5_INDEX_NAME, int order=H5_ITER_NATIVE, bint info=0):
+ *     """(ObjectID loc, CALLABLE func, INT index=0, **kwds) => <Return value from func>
+ */
+  __pyx_k_tuple_44 = PyTuple_Pack(9, ((PyObject *)__pyx_n_s__loc), ((PyObject *)__pyx_n_s__func), ((PyObject *)__pyx_n_s__index), ((PyObject *)__pyx_n_s__index_type), ((PyObject *)__pyx_n_s__order), ((PyObject *)__pyx_n_s__info), ((PyObject *)__pyx_n_s__i), ((PyObject *)__pyx_n_s__vis), ((PyObject *)__pyx_n_s__cfunc)); if (unlikely(!__pyx_k_tuple_44)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 238; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_44);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_44));
+  __pyx_k_codeobj_45 = (PyObject*)__Pyx_PyCode_New(6, 3, 9, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_44, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_30, __pyx_n_s__iterate, 238, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_45)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 238; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_RefNannyFinishContext();
+  return 0;
+  __pyx_L1_error:;
+  __Pyx_RefNannyFinishContext();
+  return -1;
+}
+
+static int __Pyx_InitGlobals(void) {
+  if (__Pyx_InitStrings(__pyx_string_tab) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  return 0;
+  __pyx_L1_error:;
+  return -1;
+}
+
+#if PY_MAJOR_VERSION < 3
+PyMODINIT_FUNC inith5a(void); /*proto*/
+PyMODINIT_FUNC inith5a(void)
+#else
+PyMODINIT_FUNC PyInit_h5a(void); /*proto*/
+PyMODINIT_FUNC PyInit_h5a(void)
+#endif
+{
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  __Pyx_RefNannyDeclarations
+  #if CYTHON_REFNANNY
+  __Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny");
+  if (!__Pyx_RefNanny) {
+      PyErr_Clear();
+      __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny");
+      if (!__Pyx_RefNanny)
+          Py_FatalError("failed to import 'refnanny' module");
+  }
+  #endif
+  __Pyx_RefNannySetupContext("PyMODINIT_FUNC PyInit_h5a(void)", 0);
+  if ( __Pyx_check_binary_version() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #ifdef __Pyx_CyFunction_USED
+  if (__Pyx_CyFunction_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #endif
+  #ifdef __Pyx_FusedFunction_USED
+  if (__pyx_FusedFunction_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #endif
+  #ifdef __Pyx_Generator_USED
+  if (__pyx_Generator_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #endif
+  /*--- Library function declarations ---*/
+  /*--- Threads initialization code ---*/
+  #if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS
+  #ifdef WITH_THREAD /* Python build with threading support? */
+  PyEval_InitThreads();
+  #endif
+  #endif
+  /*--- Module creation code ---*/
+  #if PY_MAJOR_VERSION < 3
+  __pyx_m = Py_InitModule4(__Pyx_NAMESTR("h5a"), __pyx_methods, __Pyx_DOCSTR(__pyx_k_27), 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m);
+  #else
+  __pyx_m = PyModule_Create(&__pyx_moduledef);
+  #endif
+  if (unlikely(!__pyx_m)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #if PY_MAJOR_VERSION >= 3
+  {
+    PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (!PyDict_GetItemString(modules, "h5py.h5a")) {
+      if (unlikely(PyDict_SetItemString(modules, "h5py.h5a", __pyx_m) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    }
+  }
+  #endif
+  __pyx_b = PyImport_AddModule(__Pyx_NAMESTR(__Pyx_BUILTIN_MODULE_NAME)); if (unlikely(!__pyx_b)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #if CYTHON_COMPILING_IN_PYPY
+  Py_INCREF(__pyx_b);
+  #endif
+  if (__Pyx_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  /*--- Initialize various global constants etc. ---*/
+  if (unlikely(__Pyx_InitGlobals() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__pyx_module_is_main_h5py__h5a) {
+    if (__Pyx_SetAttrString(__pyx_m, "__name__", __pyx_n_s____main__) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  }
+  /*--- Builtin init code ---*/
+  if (unlikely(__Pyx_InitCachedBuiltins() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  /*--- Constants init code ---*/
+  if (unlikely(__Pyx_InitCachedConstants() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  /*--- Global init code ---*/
+  /*--- Variable export code ---*/
+  /*--- Function export code ---*/
+  /*--- Type init code ---*/
+  __pyx_ptype_4h5py_8_objects_ObjectID = __Pyx_ImportType("h5py._objects", "ObjectID", sizeof(struct __pyx_obj_4h5py_8_objects_ObjectID), 1); if (unlikely(!__pyx_ptype_4h5py_8_objects_ObjectID)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_type_4h5py_3h5a_AttrID.tp_base = __pyx_ptype_4h5py_8_objects_ObjectID;
+  if (PyType_Ready(&__pyx_type_4h5py_3h5a_AttrID) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 285; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetAttrString(__pyx_m, "AttrID", (PyObject *)&__pyx_type_4h5py_3h5a_AttrID) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 285; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__pyx_type_4h5py_3h5a_AttrID.tp_weaklistoffset == 0) __pyx_type_4h5py_3h5a_AttrID.tp_weaklistoffset = offsetof(struct __pyx_obj_4h5py_3h5a_AttrID, __pyx_base.__weakref__);
+  __pyx_ptype_4h5py_3h5a_AttrID = &__pyx_type_4h5py_3h5a_AttrID;
+  if (PyType_Ready(&__pyx_type_4h5py_3h5a_AttrInfo) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetAttrString(__pyx_m, "AttrInfo", (PyObject *)&__pyx_type_4h5py_3h5a_AttrInfo) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5a_AttrInfo = &__pyx_type_4h5py_3h5a_AttrInfo;
+  if (PyType_Ready(&__pyx_type_4h5py_3h5a__AttrVisitor) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 214; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetAttrString(__pyx_m, "_AttrVisitor", (PyObject *)&__pyx_type_4h5py_3h5a__AttrVisitor) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 214; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5a__AttrVisitor = &__pyx_type_4h5py_3h5a__AttrVisitor;
+  /*--- Type import code ---*/
+  __pyx_ptype_4h5py_3h5t_TypeID = __Pyx_ImportType("h5py.h5t", "TypeID", sizeof(struct __pyx_obj_4h5py_3h5t_TypeID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5t_TypeID)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_vtabptr_4h5py_3h5t_TypeID = (struct __pyx_vtabstruct_4h5py_3h5t_TypeID*)__Pyx_GetVtable(__pyx_ptype_4h5py_3h5t_TypeID->tp_dict); if (unlikely(!__pyx_vtabptr_4h5py_3h5t_TypeID)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5t_TypeArrayID = __Pyx_ImportType("h5py.h5t", "TypeArrayID", sizeof(struct __pyx_obj_4h5py_3h5t_TypeArrayID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5t_TypeArrayID)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_vtabptr_4h5py_3h5t_TypeArrayID = (struct __pyx_vtabstruct_4h5py_3h5t_TypeArrayID*)__Pyx_GetVtable(__pyx_ptype_4h5py_3h5t_TypeArrayID->tp_dict); if (unlikely(!__pyx_vtabptr_4h5py_3h5t_TypeArrayID)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5t_TypeOpaqueID = __Pyx_ImportType("h5py.h5t", "TypeOpaqueID", sizeof(struct __pyx_obj_4h5py_3h5t_TypeOpaqueID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5t_TypeOpaqueID)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_vtabptr_4h5py_3h5t_TypeOpaqueID = (struct __pyx_vtabstruct_4h5py_3h5t_TypeOpaqueID*)__Pyx_GetVtable(__pyx_ptype_4h5py_3h5t_TypeOpaqueID->tp_dict); if (unlikely(!__pyx_vtabptr_4h5py_3h5t_TypeOpaqueID)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5t_TypeStringID = __Pyx_ImportType("h5py.h5t", "TypeStringID", sizeof(struct __pyx_obj_4h5py_3h5t_TypeStringID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5t_TypeStringID)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_vtabptr_4h5py_3h5t_TypeStringID = (struct __pyx_vtabstruct_4h5py_3h5t_TypeStringID*)__Pyx_GetVtable(__pyx_ptype_4h5py_3h5t_TypeStringID->tp_dict); if (unlikely(!__pyx_vtabptr_4h5py_3h5t_TypeStringID)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5t_TypeVlenID = __Pyx_ImportType("h5py.h5t", "TypeVlenID", sizeof(struct __pyx_obj_4h5py_3h5t_TypeVlenID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5t_TypeVlenID)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_vtabptr_4h5py_3h5t_TypeVlenID = (struct __pyx_vtabstruct_4h5py_3h5t_TypeVlenID*)__Pyx_GetVtable(__pyx_ptype_4h5py_3h5t_TypeVlenID->tp_dict); if (unlikely(!__pyx_vtabptr_4h5py_3h5t_TypeVlenID)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5t_TypeTimeID = __Pyx_ImportType("h5py.h5t", "TypeTimeID", sizeof(struct __pyx_obj_4h5py_3h5t_TypeTimeID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5t_TypeTimeID)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_vtabptr_4h5py_3h5t_TypeTimeID = (struct __pyx_vtabstruct_4h5py_3h5t_TypeTimeID*)__Pyx_GetVtable(__pyx_ptype_4h5py_3h5t_TypeTimeID->tp_dict); if (unlikely(!__pyx_vtabptr_4h5py_3h5t_TypeTimeID)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5t_TypeBitfieldID = __Pyx_ImportType("h5py.h5t", "TypeBitfieldID", sizeof(struct __pyx_obj_4h5py_3h5t_TypeBitfieldID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5t_TypeBitfieldID)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_vtabptr_4h5py_3h5t_TypeBitfieldID = (struct __pyx_vtabstruct_4h5py_3h5t_TypeBitfieldID*)__Pyx_GetVtable(__pyx_ptype_4h5py_3h5t_TypeBitfieldID->tp_dict); if (unlikely(!__pyx_vtabptr_4h5py_3h5t_TypeBitfieldID)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5t_TypeReferenceID = __Pyx_ImportType("h5py.h5t", "TypeReferenceID", sizeof(struct __pyx_obj_4h5py_3h5t_TypeReferenceID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5t_TypeReferenceID)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_vtabptr_4h5py_3h5t_TypeReferenceID = (struct __pyx_vtabstruct_4h5py_3h5t_TypeReferenceID*)__Pyx_GetVtable(__pyx_ptype_4h5py_3h5t_TypeReferenceID->tp_dict); if (unlikely(!__pyx_vtabptr_4h5py_3h5t_TypeReferenceID)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5t_TypeAtomicID = __Pyx_ImportType("h5py.h5t", "TypeAtomicID", sizeof(struct __pyx_obj_4h5py_3h5t_TypeAtomicID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5t_TypeAtomicID)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_vtabptr_4h5py_3h5t_TypeAtomicID = (struct __pyx_vtabstruct_4h5py_3h5t_TypeAtomicID*)__Pyx_GetVtable(__pyx_ptype_4h5py_3h5t_TypeAtomicID->tp_dict); if (unlikely(!__pyx_vtabptr_4h5py_3h5t_TypeAtomicID)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5t_TypeIntegerID = __Pyx_ImportType("h5py.h5t", "TypeIntegerID", sizeof(struct __pyx_obj_4h5py_3h5t_TypeIntegerID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5t_TypeIntegerID)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_vtabptr_4h5py_3h5t_TypeIntegerID = (struct __pyx_vtabstruct_4h5py_3h5t_TypeIntegerID*)__Pyx_GetVtable(__pyx_ptype_4h5py_3h5t_TypeIntegerID->tp_dict); if (unlikely(!__pyx_vtabptr_4h5py_3h5t_TypeIntegerID)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5t_TypeFloatID = __Pyx_ImportType("h5py.h5t", "TypeFloatID", sizeof(struct __pyx_obj_4h5py_3h5t_TypeFloatID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5t_TypeFloatID)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_vtabptr_4h5py_3h5t_TypeFloatID = (struct __pyx_vtabstruct_4h5py_3h5t_TypeFloatID*)__Pyx_GetVtable(__pyx_ptype_4h5py_3h5t_TypeFloatID->tp_dict); if (unlikely(!__pyx_vtabptr_4h5py_3h5t_TypeFloatID)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5t_TypeCompositeID = __Pyx_ImportType("h5py.h5t", "TypeCompositeID", sizeof(struct __pyx_obj_4h5py_3h5t_TypeCompositeID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5t_TypeCompositeID)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_vtabptr_4h5py_3h5t_TypeCompositeID = (struct __pyx_vtabstruct_4h5py_3h5t_TypeCompositeID*)__Pyx_GetVtable(__pyx_ptype_4h5py_3h5t_TypeCompositeID->tp_dict); if (unlikely(!__pyx_vtabptr_4h5py_3h5t_TypeCompositeID)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5t_TypeEnumID = __Pyx_ImportType("h5py.h5t", "TypeEnumID", sizeof(struct __pyx_obj_4h5py_3h5t_TypeEnumID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5t_TypeEnumID)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_vtabptr_4h5py_3h5t_TypeEnumID = (struct __pyx_vtabstruct_4h5py_3h5t_TypeEnumID*)__Pyx_GetVtable(__pyx_ptype_4h5py_3h5t_TypeEnumID->tp_dict); if (unlikely(!__pyx_vtabptr_4h5py_3h5t_TypeEnumID)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5t_TypeCompoundID = __Pyx_ImportType("h5py.h5t", "TypeCompoundID", sizeof(struct __pyx_obj_4h5py_3h5t_TypeCompoundID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5t_TypeCompoundID)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_vtabptr_4h5py_3h5t_TypeCompoundID = (struct __pyx_vtabstruct_4h5py_3h5t_TypeCompoundID*)__Pyx_GetVtable(__pyx_ptype_4h5py_3h5t_TypeCompoundID->tp_dict); if (unlikely(!__pyx_vtabptr_4h5py_3h5t_TypeCompoundID)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5s_SpaceID = __Pyx_ImportType("h5py.h5s", "SpaceID", sizeof(struct __pyx_obj_4h5py_3h5s_SpaceID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5s_SpaceID)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5p_PropID = __Pyx_ImportType("h5py.h5p", "PropID", sizeof(struct __pyx_obj_4h5py_3h5p_PropID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5p_PropID)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5p_PropClassID = __Pyx_ImportType("h5py.h5p", "PropClassID", sizeof(struct __pyx_obj_4h5py_3h5p_PropClassID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5p_PropClassID)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5p_PropInstanceID = __Pyx_ImportType("h5py.h5p", "PropInstanceID", sizeof(struct __pyx_obj_4h5py_3h5p_PropInstanceID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5p_PropInstanceID)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5p_PropCreateID = __Pyx_ImportType("h5py.h5p", "PropCreateID", sizeof(struct __pyx_obj_4h5py_3h5p_PropCreateID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5p_PropCreateID)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5p_PropCopyID = __Pyx_ImportType("h5py.h5p", "PropCopyID", sizeof(struct __pyx_obj_4h5py_3h5p_PropCopyID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5p_PropCopyID)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5p_PropOCID = __Pyx_ImportType("h5py.h5p", "PropOCID", sizeof(struct __pyx_obj_4h5py_3h5p_PropOCID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5p_PropOCID)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5p_PropDCID = __Pyx_ImportType("h5py.h5p", "PropDCID", sizeof(struct __pyx_obj_4h5py_3h5p_PropDCID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5p_PropDCID)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5p_PropFCID = __Pyx_ImportType("h5py.h5p", "PropFCID", sizeof(struct __pyx_obj_4h5py_3h5p_PropFCID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5p_PropFCID)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5p_PropFAID = __Pyx_ImportType("h5py.h5p", "PropFAID", sizeof(struct __pyx_obj_4h5py_3h5p_PropFAID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5p_PropFAID)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5p_PropDXID = __Pyx_ImportType("h5py.h5p", "PropDXID", sizeof(struct __pyx_obj_4h5py_3h5p_PropDXID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5p_PropDXID)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5p_PropLCID = __Pyx_ImportType("h5py.h5p", "PropLCID", sizeof(struct __pyx_obj_4h5py_3h5p_PropLCID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5p_PropLCID)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5p_PropLAID = __Pyx_ImportType("h5py.h5p", "PropLAID", sizeof(struct __pyx_obj_4h5py_3h5p_PropLAID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5p_PropLAID)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5p_PropGCID = __Pyx_ImportType("h5py.h5p", "PropGCID", sizeof(struct __pyx_obj_4h5py_3h5p_PropGCID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5p_PropGCID)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_5numpy_dtype = __Pyx_ImportType("numpy", "dtype", sizeof(PyArray_Descr), 0); if (unlikely(!__pyx_ptype_4h5py_5numpy_dtype)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_5numpy_ndarray = __Pyx_ImportType("numpy", "ndarray", sizeof(PyArrayObject), 0); if (unlikely(!__pyx_ptype_4h5py_5numpy_ndarray)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  /*--- Variable import code ---*/
+  /*--- Function import code ---*/
+  __pyx_t_1 = __Pyx_ImportModule("h5py.defs"); if (!__pyx_t_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Sclose", (void (**)(void))&__pyx_f_4h5py_4defs_H5Sclose, "herr_t (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Aclose", (void (**)(void))&__pyx_f_4h5py_4defs_H5Aclose, "herr_t (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Aget_num_attrs", (void (**)(void))&__pyx_f_4h5py_4defs_H5Aget_num_attrs, "int (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Aget_name", (void (**)(void))&__pyx_f_4h5py_4defs_H5Aget_name, "Py_ssize_t (hid_t, size_t, char *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Aget_space", (void (**)(void))&__pyx_f_4h5py_4defs_H5Aget_space, "hid_t (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Aget_type", (void (**)(void))&__pyx_f_4h5py_4defs_H5Aget_type, "hid_t (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Adelete_by_name", (void (**)(void))&__pyx_f_4h5py_4defs_H5Adelete_by_name, "herr_t (hid_t, char *, char *, hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Adelete_by_idx", (void (**)(void))&__pyx_f_4h5py_4defs_H5Adelete_by_idx, "herr_t (hid_t, char *, H5_index_t, H5_iter_order_t, hsize_t, hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Acreate_by_name", (void (**)(void))&__pyx_f_4h5py_4defs_H5Acreate_by_name, "hid_t (hid_t, char *, char *, hid_t, hid_t, hid_t, hid_t, hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Aopen_by_name", (void (**)(void))&__pyx_f_4h5py_4defs_H5Aopen_by_name, "herr_t (hid_t, char *, char *, hid_t, hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Aopen_by_idx", (void (**)(void))&__pyx_f_4h5py_4defs_H5Aopen_by_idx, "herr_t (hid_t, char *, H5_index_t, H5_iter_order_t, hsize_t, hid_t, hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Aexists_by_name", (void (**)(void))&__pyx_f_4h5py_4defs_H5Aexists_by_name, "htri_t (hid_t, char *, char *, hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Arename_by_name", (void (**)(void))&__pyx_f_4h5py_4defs_H5Arename_by_name, "herr_t (hid_t, char *, char *, char *, hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Aget_info", (void (**)(void))&__pyx_f_4h5py_4defs_H5Aget_info, "herr_t (hid_t, H5A_info_t *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Aget_info_by_name", (void (**)(void))&__pyx_f_4h5py_4defs_H5Aget_info_by_name, "herr_t (hid_t, char *, char *, H5A_info_t *, hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Aget_info_by_idx", (void (**)(void))&__pyx_f_4h5py_4defs_H5Aget_info_by_idx, "herr_t (hid_t, char *, H5_index_t, H5_iter_order_t, hsize_t, H5A_info_t *, hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Aiterate2", (void (**)(void))&__pyx_f_4h5py_4defs_H5Aiterate2, "herr_t (hid_t, H5_index_t, H5_iter_order_t, hsize_t *, H5A_operator2_t, void *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Aget_storage_size", (void (**)(void))&__pyx_f_4h5py_4defs_H5Aget_storage_size, "hsize_t (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  Py_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_2 = __Pyx_ImportModule("h5py._objects"); if (!__pyx_t_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_2, "pdefault", (void (**)(void))&__pyx_f_4h5py_8_objects_pdefault, "hid_t (struct __pyx_obj_4h5py_8_objects_ObjectID *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  Py_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_3 = __Pyx_ImportModule("h5py.h5t"); if (!__pyx_t_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_3, "typewrap", (void (**)(void))&__pyx_f_4h5py_3h5t_typewrap, "struct __pyx_obj_4h5py_3h5t_TypeID *(hid_t, int __pyx_skip_dispatch)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_3, "py_create", (void (**)(void))&__pyx_f_4h5py_3h5t_py_create, "struct __pyx_obj_4h5py_3h5t_TypeID *(PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_4h5py_3h5t_py_create *__pyx_optional_args)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  Py_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_t_4 = __Pyx_ImportModule("h5py.utils"); if (!__pyx_t_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_4, "emalloc", (void (**)(void))&__pyx_f_4h5py_5utils_emalloc, "void *(size_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_4, "efree", (void (**)(void))&__pyx_f_4h5py_5utils_efree, "void (void *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_4, "check_numpy_read", (void (**)(void))&__pyx_f_4h5py_5utils_check_numpy_read, "int (PyArrayObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_4h5py_5utils_check_numpy_read *__pyx_optional_args)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_4, "check_numpy_write", (void (**)(void))&__pyx_f_4h5py_5utils_check_numpy_write, "int (PyArrayObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_4h5py_5utils_check_numpy_write *__pyx_optional_args)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  Py_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __pyx_t_5 = __Pyx_ImportModule("h5py._proxy"); if (!__pyx_t_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_5, "attr_rw", (void (**)(void))&__pyx_f_4h5py_6_proxy_attr_rw, "herr_t (hid_t, hid_t, void *, int)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  Py_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  /*--- Execution code ---*/
+
+  /* "h5py/h5a.pyx":23
+ * from _proxy cimport attr_rw
+ * 
+ * from h5py import _objects             # <<<<<<<<<<<<<<
+ * 
+ * # Initialization
+ */
+  __pyx_t_6 = PyList_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_6);
+  __Pyx_INCREF(((PyObject *)__pyx_n_s___objects));
+  PyList_SET_ITEM(__pyx_t_6, 0, ((PyObject *)__pyx_n_s___objects));
+  __Pyx_GIVEREF(((PyObject *)__pyx_n_s___objects));
+  __pyx_t_7 = __Pyx_Import(((PyObject *)__pyx_n_s__h5py), ((PyObject *)__pyx_t_6), -1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_7);
+  __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
+  __pyx_t_6 = PyObject_GetAttr(__pyx_t_7, __pyx_n_s___objects);
+  if (__pyx_t_6 == NULL) {
+    if (PyErr_ExceptionMatches(PyExc_AttributeError)) __Pyx_RaiseImportError(__pyx_n_s___objects);
+    if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  }
+  __Pyx_GOTREF(__pyx_t_6);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s___objects, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "h5py/h5a.pyx":26
+ * 
+ * # Initialization
+ * import_array()             # <<<<<<<<<<<<<<
+ * 
+ * # === General attribute operations ============================================
+ */
+  import_array();
+
+  /* "h5py/h5a.pyx":32
+ * # --- create, create_by_name ---
+ * 
+ * def create(ObjectID loc not None, char* name, TypeID tid not None,             # <<<<<<<<<<<<<<
+ *     SpaceID space not None, *, char* obj_name='.', PropID lapl=None):
+ *     """(ObjectID loc, STRING name, TypeID tid, SpaceID space, **kwds) => AttrID
+ */
+  __pyx_t_7 = PyCFunction_NewEx(&__pyx_mdef_4h5py_3h5a_1create, NULL, __pyx_n_s_31); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_7);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__create, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "h5py/h5a.pyx":52
+ * 
+ * def open(ObjectID loc not None, char* name=NULL, int index=-1, *,
+ *     char* obj_name='.', int index_type=H5_INDEX_NAME, int order=H5_ITER_NATIVE,             # <<<<<<<<<<<<<<
+ *     PropID lapl=None):
+ *     """(ObjectID loc, STRING name=, INT index=, **kwds) => AttrID
+ */
+  __pyx_k_2 = H5_INDEX_NAME;
+  __pyx_k_3 = H5_ITER_NATIVE;
+
+  /* "h5py/h5a.pyx":51
+ * # --- open, open_by_name, open_by_idx ---
+ * 
+ * def open(ObjectID loc not None, char* name=NULL, int index=-1, *,             # <<<<<<<<<<<<<<
+ *     char* obj_name='.', int index_type=H5_INDEX_NAME, int order=H5_ITER_NATIVE,
+ *     PropID lapl=None):
+ */
+  __pyx_t_7 = PyCFunction_NewEx(&__pyx_mdef_4h5py_3h5a_3open, NULL, __pyx_n_s_31); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_7);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__open, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "h5py/h5a.pyx":84
+ * # --- exists, exists_by_name ---
+ * 
+ * def exists(ObjectID loc not None, char* name, *,             # <<<<<<<<<<<<<<
+ *             char* obj_name=".", PropID lapl=None):
+ *     """(ObjectID loc, STRING name, **kwds) => BOOL
+ */
+  __pyx_t_7 = PyCFunction_NewEx(&__pyx_mdef_4h5py_3h5a_5exists, NULL, __pyx_n_s_31); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_7);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__exists, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "h5py/h5a.pyx":101
+ * # --- rename, rename_by_name ---
+ * 
+ * def rename(ObjectID loc not None, char* name, char* new_name, *,             # <<<<<<<<<<<<<<
+ *     char* obj_name='.', PropID lapl=None):
+ *     """(ObjectID loc, STRING name, STRING new_name, **kwds)
+ */
+  __pyx_t_7 = PyCFunction_NewEx(&__pyx_mdef_4h5py_3h5a_7rename, NULL, __pyx_n_s_31); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_7);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__rename, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "h5py/h5a.pyx":117
+ * 
+ * def delete(ObjectID loc not None, char* name=NULL, int index=-1, *,
+ *     char* obj_name='.', int index_type=H5_INDEX_NAME, int order=H5_ITER_NATIVE,             # <<<<<<<<<<<<<<
+ *     PropID lapl=None):
+ *     """(ObjectID loc, STRING name=, INT index=, **kwds)
+ */
+  __pyx_k_6 = H5_INDEX_NAME;
+  __pyx_k_7 = H5_ITER_NATIVE;
+
+  /* "h5py/h5a.pyx":116
+ * 
+ * 
+ * def delete(ObjectID loc not None, char* name=NULL, int index=-1, *,             # <<<<<<<<<<<<<<
+ *     char* obj_name='.', int index_type=H5_INDEX_NAME, int order=H5_ITER_NATIVE,
+ *     PropID lapl=None):
+ */
+  __pyx_t_7 = PyCFunction_NewEx(&__pyx_mdef_4h5py_3h5a_9delete, NULL, __pyx_n_s_31); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_7);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__delete, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "h5py/h5a.pyx":142
+ *         raise TypeError("Exactly one of index or name must be specified.")
+ * 
+ * def get_num_attrs(ObjectID loc not None):             # <<<<<<<<<<<<<<
+ *     """(ObjectID loc) => INT
+ * 
+ */
+  __pyx_t_7 = PyCFunction_NewEx(&__pyx_mdef_4h5py_3h5a_11get_num_attrs, NULL, __pyx_n_s_31); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_7);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__get_num_attrs, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "h5py/h5a.pyx":177
+ * def get_info(ObjectID loc not None, char* name=NULL, int index=-1, *,
+ *             char* obj_name='.', PropID lapl=None,
+ *             int index_type=H5_INDEX_NAME, int order=H5_ITER_NATIVE):             # <<<<<<<<<<<<<<
+ *     """(ObjectID loc, STRING name=, INT index=, **kwds) => AttrInfo
+ * 
+ */
+  __pyx_k_10 = H5_INDEX_NAME;
+  __pyx_k_11 = H5_ITER_NATIVE;
+
+  /* "h5py/h5a.pyx":175
+ * 
+ * 
+ * def get_info(ObjectID loc not None, char* name=NULL, int index=-1, *,             # <<<<<<<<<<<<<<
+ *             char* obj_name='.', PropID lapl=None,
+ *             int index_type=H5_INDEX_NAME, int order=H5_ITER_NATIVE):
+ */
+  __pyx_t_7 = PyCFunction_NewEx(&__pyx_mdef_4h5py_3h5a_13get_info, NULL, __pyx_n_s_31); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 175; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_7);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__get_info, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 175; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "h5py/h5a.pyx":239
+ * 
+ * def iterate(ObjectID loc not None, object func, int index=0, *,
+ *     int index_type=H5_INDEX_NAME, int order=H5_ITER_NATIVE, bint info=0):             # <<<<<<<<<<<<<<
+ *     """(ObjectID loc, CALLABLE func, INT index=0, **kwds) => <Return value from func>
+ * 
+ */
+  __pyx_k_14 = H5_INDEX_NAME;
+  __pyx_k_15 = H5_ITER_NATIVE;
+
+  /* "h5py/h5a.pyx":238
+ * 
+ * 
+ * def iterate(ObjectID loc not None, object func, int index=0, *,             # <<<<<<<<<<<<<<
+ *     int index_type=H5_INDEX_NAME, int order=H5_ITER_NATIVE, bint info=0):
+ *     """(ObjectID loc, CALLABLE func, INT index=0, **kwds) => <Return value from func>
+ */
+  __pyx_t_7 = PyCFunction_NewEx(&__pyx_mdef_4h5py_3h5a_15iterate, NULL, __pyx_n_s_31); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 238; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_7);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__iterate, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 238; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+  /* "h5py/h5a.pyx":1
+ * # This file is part of h5py, a Python interface to the HDF5 library.             # <<<<<<<<<<<<<<
+ * #
+ * # http://www.h5py.org
+ */
+  __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(((PyObject *)__pyx_t_7));
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s____test__, ((PyObject *)__pyx_t_7)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(((PyObject *)__pyx_t_7)); __pyx_t_7 = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_XDECREF(__pyx_t_7);
+  if (__pyx_m) {
+    __Pyx_AddTraceback("init h5py.h5a", __pyx_clineno, __pyx_lineno, __pyx_filename);
+    Py_DECREF(__pyx_m); __pyx_m = 0;
+  } else if (!PyErr_Occurred()) {
+    PyErr_SetString(PyExc_ImportError, "init h5py.h5a");
+  }
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  #if PY_MAJOR_VERSION < 3
+  return;
+  #else
+  return __pyx_m;
+  #endif
+}
+
+/* Runtime support code */
+#if CYTHON_REFNANNY
+static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) {
+    PyObject *m = NULL, *p = NULL;
+    void *r = NULL;
+    m = PyImport_ImportModule((char *)modname);
+    if (!m) goto end;
+    p = PyObject_GetAttrString(m, (char *)"RefNannyAPI");
+    if (!p) goto end;
+    r = PyLong_AsVoidPtr(p);
+end:
+    Py_XDECREF(p);
+    Py_XDECREF(m);
+    return (__Pyx_RefNannyAPIStruct *)r;
+}
+#endif /* CYTHON_REFNANNY */
+
+static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name) {
+    PyObject *result;
+    result = PyObject_GetAttr(dict, name);
+    if (!result) {
+        if (dict != __pyx_b) {
+            PyErr_Clear();
+            result = PyObject_GetAttr(__pyx_b, name);
+        }
+        if (!result) {
+            PyErr_SetObject(PyExc_NameError, name);
+        }
+    }
+    return result;
+}
+
+static void __Pyx_RaiseArgtupleInvalid(
+    const char* func_name,
+    int exact,
+    Py_ssize_t num_min,
+    Py_ssize_t num_max,
+    Py_ssize_t num_found)
+{
+    Py_ssize_t num_expected;
+    const char *more_or_less;
+    if (num_found < num_min) {
+        num_expected = num_min;
+        more_or_less = "at least";
+    } else {
+        num_expected = num_max;
+        more_or_less = "at most";
+    }
+    if (exact) {
+        more_or_less = "exactly";
+    }
+    PyErr_Format(PyExc_TypeError,
+                 "%s() takes %s %" CYTHON_FORMAT_SSIZE_T "d positional argument%s (%" CYTHON_FORMAT_SSIZE_T "d given)",
+                 func_name, more_or_less, num_expected,
+                 (num_expected == 1) ? "" : "s", num_found);
+}
+
+static void __Pyx_RaiseDoubleKeywordsError(
+    const char* func_name,
+    PyObject* kw_name)
+{
+    PyErr_Format(PyExc_TypeError,
+        #if PY_MAJOR_VERSION >= 3
+        "%s() got multiple values for keyword argument '%U'", func_name, kw_name);
+        #else
+        "%s() got multiple values for keyword argument '%s'", func_name,
+        PyString_AsString(kw_name));
+        #endif
+}
+
+static int __Pyx_ParseOptionalKeywords(
+    PyObject *kwds,
+    PyObject **argnames[],
+    PyObject *kwds2,
+    PyObject *values[],
+    Py_ssize_t num_pos_args,
+    const char* function_name)
+{
+    PyObject *key = 0, *value = 0;
+    Py_ssize_t pos = 0;
+    PyObject*** name;
+    PyObject*** first_kw_arg = argnames + num_pos_args;
+    while (PyDict_Next(kwds, &pos, &key, &value)) {
+        name = first_kw_arg;
+        while (*name && (**name != key)) name++;
+        if (*name) {
+            values[name-argnames] = value;
+            continue;
+        }
+        name = first_kw_arg;
+        #if PY_MAJOR_VERSION < 3
+        if (likely(PyString_CheckExact(key)) || likely(PyString_Check(key))) {
+            while (*name) {
+                if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key))
+                        && _PyString_Eq(**name, key)) {
+                    values[name-argnames] = value;
+                    break;
+                }
+                name++;
+            }
+            if (*name) continue;
+            else {
+                PyObject*** argname = argnames;
+                while (argname != first_kw_arg) {
+                    if ((**argname == key) || (
+                            (CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**argname) == PyString_GET_SIZE(key))
+                             && _PyString_Eq(**argname, key))) {
+                        goto arg_passed_twice;
+                    }
+                    argname++;
+                }
+            }
+        } else
+        #endif
+        if (likely(PyUnicode_Check(key))) {
+            while (*name) {
+                int cmp = (**name == key) ? 0 :
+                #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
+                    (PyUnicode_GET_SIZE(**name) != PyUnicode_GET_SIZE(key)) ? 1 :
+                #endif
+                    PyUnicode_Compare(**name, key);
+                if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
+                if (cmp == 0) {
+                    values[name-argnames] = value;
+                    break;
+                }
+                name++;
+            }
+            if (*name) continue;
+            else {
+                PyObject*** argname = argnames;
+                while (argname != first_kw_arg) {
+                    int cmp = (**argname == key) ? 0 :
+                    #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
+                        (PyUnicode_GET_SIZE(**argname) != PyUnicode_GET_SIZE(key)) ? 1 :
+                    #endif
+                        PyUnicode_Compare(**argname, key);
+                    if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
+                    if (cmp == 0) goto arg_passed_twice;
+                    argname++;
+                }
+            }
+        } else
+            goto invalid_keyword_type;
+        if (kwds2) {
+            if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad;
+        } else {
+            goto invalid_keyword;
+        }
+    }
+    return 0;
+arg_passed_twice:
+    __Pyx_RaiseDoubleKeywordsError(function_name, key);
+    goto bad;
+invalid_keyword_type:
+    PyErr_Format(PyExc_TypeError,
+        "%s() keywords must be strings", function_name);
+    goto bad;
+invalid_keyword:
+    PyErr_Format(PyExc_TypeError,
+    #if PY_MAJOR_VERSION < 3
+        "%s() got an unexpected keyword argument '%s'",
+        function_name, PyString_AsString(key));
+    #else
+        "%s() got an unexpected keyword argument '%U'",
+        function_name, key);
+    #endif
+bad:
+    return -1;
+}
+
+static int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, int none_allowed,
+    const char *name, int exact)
+{
+    if (!type) {
+        PyErr_Format(PyExc_SystemError, "Missing type object");
+        return 0;
+    }
+    if (none_allowed && obj == Py_None) return 1;
+    else if (exact) {
+        if (Py_TYPE(obj) == type) return 1;
+    }
+    else {
+        if (PyObject_TypeCheck(obj, type)) return 1;
+    }
+    PyErr_Format(PyExc_TypeError,
+        "Argument '%s' has incorrect type (expected %s, got %s)",
+        name, type->tp_name, Py_TYPE(obj)->tp_name);
+    return 0;
+}
+
+static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb) {
+#if CYTHON_COMPILING_IN_CPYTHON
+    PyObject *tmp_type, *tmp_value, *tmp_tb;
+    PyThreadState *tstate = PyThreadState_GET();
+    tmp_type = tstate->curexc_type;
+    tmp_value = tstate->curexc_value;
+    tmp_tb = tstate->curexc_traceback;
+    tstate->curexc_type = type;
+    tstate->curexc_value = value;
+    tstate->curexc_traceback = tb;
+    Py_XDECREF(tmp_type);
+    Py_XDECREF(tmp_value);
+    Py_XDECREF(tmp_tb);
+#else
+    PyErr_Restore(type, value, tb);
+#endif
+}
+static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb) {
+#if CYTHON_COMPILING_IN_CPYTHON
+    PyThreadState *tstate = PyThreadState_GET();
+    *type = tstate->curexc_type;
+    *value = tstate->curexc_value;
+    *tb = tstate->curexc_traceback;
+    tstate->curexc_type = 0;
+    tstate->curexc_value = 0;
+    tstate->curexc_traceback = 0;
+#else
+    PyErr_Fetch(type, value, tb);
+#endif
+}
+
+#if PY_MAJOR_VERSION < 3
+static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb,
+                        CYTHON_UNUSED PyObject *cause) {
+    Py_XINCREF(type);
+    if (!value || value == Py_None)
+        value = NULL;
+    else
+        Py_INCREF(value);
+    if (!tb || tb == Py_None)
+        tb = NULL;
+    else {
+        Py_INCREF(tb);
+        if (!PyTraceBack_Check(tb)) {
+            PyErr_SetString(PyExc_TypeError,
+                "raise: arg 3 must be a traceback or None");
+            goto raise_error;
+        }
+    }
+    #if PY_VERSION_HEX < 0x02050000
+    if (PyClass_Check(type)) {
+    #else
+    if (PyType_Check(type)) {
+    #endif
+#if CYTHON_COMPILING_IN_PYPY
+        if (!value) {
+            Py_INCREF(Py_None);
+            value = Py_None;
+        }
+#endif
+        PyErr_NormalizeException(&type, &value, &tb);
+    } else {
+        if (value) {
+            PyErr_SetString(PyExc_TypeError,
+                "instance exception may not have a separate value");
+            goto raise_error;
+        }
+        value = type;
+        #if PY_VERSION_HEX < 0x02050000
+            if (PyInstance_Check(type)) {
+                type = (PyObject*) ((PyInstanceObject*)type)->in_class;
+                Py_INCREF(type);
+            }
+            else {
+                type = 0;
+                PyErr_SetString(PyExc_TypeError,
+                    "raise: exception must be an old-style class or instance");
+                goto raise_error;
+            }
+        #else
+            type = (PyObject*) Py_TYPE(type);
+            Py_INCREF(type);
+            if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) {
+                PyErr_SetString(PyExc_TypeError,
+                    "raise: exception class must be a subclass of BaseException");
+                goto raise_error;
+            }
+        #endif
+    }
+    __Pyx_ErrRestore(type, value, tb);
+    return;
+raise_error:
+    Py_XDECREF(value);
+    Py_XDECREF(type);
+    Py_XDECREF(tb);
+    return;
+}
+#else /* Python 3+ */
+static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) {
+    PyObject* owned_instance = NULL;
+    if (tb == Py_None) {
+        tb = 0;
+    } else if (tb && !PyTraceBack_Check(tb)) {
+        PyErr_SetString(PyExc_TypeError,
+            "raise: arg 3 must be a traceback or None");
+        goto bad;
+    }
+    if (value == Py_None)
+        value = 0;
+    if (PyExceptionInstance_Check(type)) {
+        if (value) {
+            PyErr_SetString(PyExc_TypeError,
+                "instance exception may not have a separate value");
+            goto bad;
+        }
+        value = type;
+        type = (PyObject*) Py_TYPE(value);
+    } else if (PyExceptionClass_Check(type)) {
+        PyObject *args;
+        if (!value)
+            args = PyTuple_New(0);
+        else if (PyTuple_Check(value)) {
+            Py_INCREF(value);
+            args = value;
+        }
+        else
+            args = PyTuple_Pack(1, value);
+        if (!args)
+            goto bad;
+        owned_instance = PyEval_CallObject(type, args);
+        Py_DECREF(args);
+        if (!owned_instance)
+            goto bad;
+        value = owned_instance;
+        if (!PyExceptionInstance_Check(value)) {
+            PyErr_Format(PyExc_TypeError,
+                         "calling %R should have returned an instance of "
+                         "BaseException, not %R",
+                         type, Py_TYPE(value));
+            goto bad;
+        }
+    } else {
+        PyErr_SetString(PyExc_TypeError,
+            "raise: exception class must be a subclass of BaseException");
+        goto bad;
+    }
+    if (cause && cause != Py_None) {
+        PyObject *fixed_cause;
+        if (PyExceptionClass_Check(cause)) {
+            fixed_cause = PyObject_CallObject(cause, NULL);
+            if (fixed_cause == NULL)
+                goto bad;
+        }
+        else if (PyExceptionInstance_Check(cause)) {
+            fixed_cause = cause;
+            Py_INCREF(fixed_cause);
+        }
+        else {
+            PyErr_SetString(PyExc_TypeError,
+                            "exception causes must derive from "
+                            "BaseException");
+            goto bad;
+        }
+        PyException_SetCause(value, fixed_cause);
+    }
+    PyErr_SetObject(type, value);
+    if (tb) {
+        PyThreadState *tstate = PyThreadState_GET();
+        PyObject* tmp_tb = tstate->curexc_traceback;
+        if (tb != tmp_tb) {
+            Py_INCREF(tb);
+            tstate->curexc_traceback = tb;
+            Py_XDECREF(tmp_tb);
+        }
+    }
+bad:
+    Py_XDECREF(owned_instance);
+    return;
+}
+#endif
+
+static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) {
+    if (unlikely(!type)) {
+        PyErr_Format(PyExc_SystemError, "Missing type object");
+        return 0;
+    }
+    if (likely(PyObject_TypeCheck(obj, type)))
+        return 1;
+    PyErr_Format(PyExc_TypeError, "Cannot convert %.200s to %.200s",
+                 Py_TYPE(obj)->tp_name, type->tp_name);
+    return 0;
+}
+
+static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) {
+    PyObject *local_type, *local_value, *local_tb;
+#if CYTHON_COMPILING_IN_CPYTHON
+    PyObject *tmp_type, *tmp_value, *tmp_tb;
+    PyThreadState *tstate = PyThreadState_GET();
+    local_type = tstate->curexc_type;
+    local_value = tstate->curexc_value;
+    local_tb = tstate->curexc_traceback;
+    tstate->curexc_type = 0;
+    tstate->curexc_value = 0;
+    tstate->curexc_traceback = 0;
+#else
+    PyErr_Fetch(&local_type, &local_value, &local_tb);
+#endif
+    PyErr_NormalizeException(&local_type, &local_value, &local_tb);
+#if CYTHON_COMPILING_IN_CPYTHON
+    if (unlikely(tstate->curexc_type))
+#else
+    if (unlikely(PyErr_Occurred()))
+#endif
+        goto bad;
+    #if PY_MAJOR_VERSION >= 3
+    if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0))
+        goto bad;
+    #endif
+    Py_INCREF(local_type);
+    Py_INCREF(local_value);
+    Py_INCREF(local_tb);
+    *type = local_type;
+    *value = local_value;
+    *tb = local_tb;
+#if CYTHON_COMPILING_IN_CPYTHON
+    tmp_type = tstate->exc_type;
+    tmp_value = tstate->exc_value;
+    tmp_tb = tstate->exc_traceback;
+    tstate->exc_type = local_type;
+    tstate->exc_value = local_value;
+    tstate->exc_traceback = local_tb;
+    /* Make sure tstate is in a consistent state when we XDECREF
+       these objects (DECREF may run arbitrary code). */
+    Py_XDECREF(tmp_type);
+    Py_XDECREF(tmp_value);
+    Py_XDECREF(tmp_tb);
+#else
+    PyErr_SetExcInfo(local_type, local_value, local_tb);
+#endif
+    return 0;
+bad:
+    *type = 0;
+    *value = 0;
+    *tb = 0;
+    Py_XDECREF(local_type);
+    Py_XDECREF(local_value);
+    Py_XDECREF(local_tb);
+    return -1;
+}
+
+static void __Pyx_call_next_tp_dealloc(PyObject* obj, destructor current_tp_dealloc) {
+    PyTypeObject* type = Py_TYPE(obj);
+    while (type && type->tp_dealloc != current_tp_dealloc)
+        type = type->tp_base;
+    while (type && type->tp_dealloc == current_tp_dealloc)
+        type = type->tp_base;
+    if (type)
+        type->tp_dealloc(obj);
+}
+
+static int __Pyx_call_next_tp_traverse(PyObject* obj, visitproc v, void *a, traverseproc current_tp_traverse) {
+    PyTypeObject* type = Py_TYPE(obj);
+    while (type && type->tp_traverse != current_tp_traverse)
+        type = type->tp_base;
+    while (type && type->tp_traverse == current_tp_traverse)
+        type = type->tp_base;
+    if (type && type->tp_traverse)
+        return type->tp_traverse(obj, v, a);
+    return 0;
+}
+
+static void __Pyx_call_next_tp_clear(PyObject* obj, inquiry current_tp_clear) {
+    PyTypeObject* type = Py_TYPE(obj);
+    while (type && type->tp_clear != current_tp_clear)
+        type = type->tp_base;
+    while (type && type->tp_clear == current_tp_clear)
+        type = type->tp_base;
+    if (type && type->tp_clear)
+        type->tp_clear(obj);
+}
+
+static CYTHON_INLINE void __Pyx_ExceptionSave(PyObject **type, PyObject **value, PyObject **tb) {
+#if CYTHON_COMPILING_IN_CPYTHON
+    PyThreadState *tstate = PyThreadState_GET();
+    *type = tstate->exc_type;
+    *value = tstate->exc_value;
+    *tb = tstate->exc_traceback;
+    Py_XINCREF(*type);
+    Py_XINCREF(*value);
+    Py_XINCREF(*tb);
+#else
+    PyErr_GetExcInfo(type, value, tb);
+#endif
+}
+static void __Pyx_ExceptionReset(PyObject *type, PyObject *value, PyObject *tb) {
+#if CYTHON_COMPILING_IN_CPYTHON
+    PyObject *tmp_type, *tmp_value, *tmp_tb;
+    PyThreadState *tstate = PyThreadState_GET();
+    tmp_type = tstate->exc_type;
+    tmp_value = tstate->exc_value;
+    tmp_tb = tstate->exc_traceback;
+    tstate->exc_type = type;
+    tstate->exc_value = value;
+    tstate->exc_traceback = tb;
+    Py_XDECREF(tmp_type);
+    Py_XDECREF(tmp_value);
+    Py_XDECREF(tmp_tb);
+#else
+    PyErr_SetExcInfo(type, value, tb);
+#endif
+}
+
+static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) {
+    PyObject *empty_list = 0;
+    PyObject *module = 0;
+    PyObject *global_dict = 0;
+    PyObject *empty_dict = 0;
+    PyObject *list;
+    #if PY_VERSION_HEX < 0x03030000
+    PyObject *py_import = 0;
+    py_import = __Pyx_GetAttrString(__pyx_b, "__import__");
+    if (!py_import)
+        goto bad;
+    #endif
+    if (from_list)
+        list = from_list;
+    else {
+        empty_list = PyList_New(0);
+        if (!empty_list)
+            goto bad;
+        list = empty_list;
+    }
+    global_dict = PyModule_GetDict(__pyx_m);
+    if (!global_dict)
+        goto bad;
+    empty_dict = PyDict_New();
+    if (!empty_dict)
+        goto bad;
+    #if PY_VERSION_HEX >= 0x02050000
+    {
+        #if PY_MAJOR_VERSION >= 3
+        if (level == -1) {
+            if (strchr(__Pyx_MODULE_NAME, '.')) {
+                #if PY_VERSION_HEX < 0x03030000
+                PyObject *py_level = PyInt_FromLong(1);
+                if (!py_level)
+                    goto bad;
+                module = PyObject_CallFunctionObjArgs(py_import,
+                    name, global_dict, empty_dict, list, py_level, NULL);
+                Py_DECREF(py_level);
+                #else
+                module = PyImport_ImportModuleLevelObject(
+                    name, global_dict, empty_dict, list, 1);
+                #endif
+                if (!module) {
+                    if (!PyErr_ExceptionMatches(PyExc_ImportError))
+                        goto bad;
+                    PyErr_Clear();
+                }
+            }
+            level = 0; /* try absolute import on failure */
+        }
+        #endif
+        if (!module) {
+            #if PY_VERSION_HEX < 0x03030000
+            PyObject *py_level = PyInt_FromLong(level);
+            if (!py_level)
+                goto bad;
+            module = PyObject_CallFunctionObjArgs(py_import,
+                name, global_dict, empty_dict, list, py_level, NULL);
+            Py_DECREF(py_level);
+            #else
+            module = PyImport_ImportModuleLevelObject(
+                name, global_dict, empty_dict, list, level);
+            #endif
+        }
+    }
+    #else
+    if (level>0) {
+        PyErr_SetString(PyExc_RuntimeError, "Relative import is not supported for Python <=2.4.");
+        goto bad;
+    }
+    module = PyObject_CallFunctionObjArgs(py_import,
+        name, global_dict, empty_dict, list, NULL);
+    #endif
+bad:
+    #if PY_VERSION_HEX < 0x03030000
+    Py_XDECREF(py_import);
+    #endif
+    Py_XDECREF(empty_list);
+    Py_XDECREF(empty_dict);
+    return module;
+}
+
+static CYTHON_INLINE void __Pyx_RaiseImportError(PyObject *name) {
+#if PY_MAJOR_VERSION < 3
+    PyErr_Format(PyExc_ImportError, "cannot import name %.230s",
+                 PyString_AsString(name));
+#else
+    PyErr_Format(PyExc_ImportError, "cannot import name %S", name);
+#endif
+}
+
+static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_hid_t(hid_t val) {
+    const hid_t neg_one = (hid_t)-1, const_zero = (hid_t)0;
+    const int is_unsigned = const_zero < neg_one;
+    if ((sizeof(hid_t) == sizeof(char))  ||
+        (sizeof(hid_t) == sizeof(short))) {
+        return PyInt_FromLong((long)val);
+    } else if ((sizeof(hid_t) == sizeof(int)) ||
+               (sizeof(hid_t) == sizeof(long))) {
+        if (is_unsigned)
+            return PyLong_FromUnsignedLong((unsigned long)val);
+        else
+            return PyInt_FromLong((long)val);
+    } else if (sizeof(hid_t) == sizeof(PY_LONG_LONG)) {
+        if (is_unsigned)
+            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG)val);
+        else
+            return PyLong_FromLongLong((PY_LONG_LONG)val);
+    } else {
+        int one = 1; int little = (int)*(unsigned char *)&one;
+        unsigned char *bytes = (unsigned char *)&val;
+        return _PyLong_FromByteArray(bytes, sizeof(hid_t),
+                                     little, !is_unsigned);
+    }
+}
+
+static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_herr_t(herr_t val) {
+    const herr_t neg_one = (herr_t)-1, const_zero = (herr_t)0;
+    const int is_unsigned = const_zero < neg_one;
+    if ((sizeof(herr_t) == sizeof(char))  ||
+        (sizeof(herr_t) == sizeof(short))) {
+        return PyInt_FromLong((long)val);
+    } else if ((sizeof(herr_t) == sizeof(int)) ||
+               (sizeof(herr_t) == sizeof(long))) {
+        if (is_unsigned)
+            return PyLong_FromUnsignedLong((unsigned long)val);
+        else
+            return PyInt_FromLong((long)val);
+    } else if (sizeof(herr_t) == sizeof(PY_LONG_LONG)) {
+        if (is_unsigned)
+            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG)val);
+        else
+            return PyLong_FromLongLong((PY_LONG_LONG)val);
+    } else {
+        int one = 1; int little = (int)*(unsigned char *)&one;
+        unsigned char *bytes = (unsigned char *)&val;
+        return _PyLong_FromByteArray(bytes, sizeof(herr_t),
+                                     little, !is_unsigned);
+    }
+}
+
+static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_hsize_t(hsize_t val) {
+    const hsize_t neg_one = (hsize_t)-1, const_zero = (hsize_t)0;
+    const int is_unsigned = const_zero < neg_one;
+    if ((sizeof(hsize_t) == sizeof(char))  ||
+        (sizeof(hsize_t) == sizeof(short))) {
+        return PyInt_FromLong((long)val);
+    } else if ((sizeof(hsize_t) == sizeof(int)) ||
+               (sizeof(hsize_t) == sizeof(long))) {
+        if (is_unsigned)
+            return PyLong_FromUnsignedLong((unsigned long)val);
+        else
+            return PyInt_FromLong((long)val);
+    } else if (sizeof(hsize_t) == sizeof(PY_LONG_LONG)) {
+        if (is_unsigned)
+            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG)val);
+        else
+            return PyLong_FromLongLong((PY_LONG_LONG)val);
+    } else {
+        int one = 1; int little = (int)*(unsigned char *)&one;
+        unsigned char *bytes = (unsigned char *)&val;
+        return _PyLong_FromByteArray(bytes, sizeof(hsize_t),
+                                     little, !is_unsigned);
+    }
+}
+
+static CYTHON_INLINE unsigned char __Pyx_PyInt_AsUnsignedChar(PyObject* x) {
+    const unsigned char neg_one = (unsigned char)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(unsigned char) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(unsigned char)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to unsigned char" :
+                    "value too large to convert to unsigned char");
+            }
+            return (unsigned char)-1;
+        }
+        return (unsigned char)val;
+    }
+    return (unsigned char)__Pyx_PyInt_AsUnsignedLong(x);
+}
+
+static CYTHON_INLINE unsigned short __Pyx_PyInt_AsUnsignedShort(PyObject* x) {
+    const unsigned short neg_one = (unsigned short)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(unsigned short) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(unsigned short)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to unsigned short" :
+                    "value too large to convert to unsigned short");
+            }
+            return (unsigned short)-1;
+        }
+        return (unsigned short)val;
+    }
+    return (unsigned short)__Pyx_PyInt_AsUnsignedLong(x);
+}
+
+static CYTHON_INLINE unsigned int __Pyx_PyInt_AsUnsignedInt(PyObject* x) {
+    const unsigned int neg_one = (unsigned int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(unsigned int) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(unsigned int)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to unsigned int" :
+                    "value too large to convert to unsigned int");
+            }
+            return (unsigned int)-1;
+        }
+        return (unsigned int)val;
+    }
+    return (unsigned int)__Pyx_PyInt_AsUnsignedLong(x);
+}
+
+static CYTHON_INLINE char __Pyx_PyInt_AsChar(PyObject* x) {
+    const char neg_one = (char)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(char) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(char)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to char" :
+                    "value too large to convert to char");
+            }
+            return (char)-1;
+        }
+        return (char)val;
+    }
+    return (char)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE short __Pyx_PyInt_AsShort(PyObject* x) {
+    const short neg_one = (short)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(short) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(short)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to short" :
+                    "value too large to convert to short");
+            }
+            return (short)-1;
+        }
+        return (short)val;
+    }
+    return (short)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE int __Pyx_PyInt_AsInt(PyObject* x) {
+    const int neg_one = (int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(int) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(int)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to int" :
+                    "value too large to convert to int");
+            }
+            return (int)-1;
+        }
+        return (int)val;
+    }
+    return (int)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE signed char __Pyx_PyInt_AsSignedChar(PyObject* x) {
+    const signed char neg_one = (signed char)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(signed char) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(signed char)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to signed char" :
+                    "value too large to convert to signed char");
+            }
+            return (signed char)-1;
+        }
+        return (signed char)val;
+    }
+    return (signed char)__Pyx_PyInt_AsSignedLong(x);
+}
+
+static CYTHON_INLINE signed short __Pyx_PyInt_AsSignedShort(PyObject* x) {
+    const signed short neg_one = (signed short)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(signed short) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(signed short)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to signed short" :
+                    "value too large to convert to signed short");
+            }
+            return (signed short)-1;
+        }
+        return (signed short)val;
+    }
+    return (signed short)__Pyx_PyInt_AsSignedLong(x);
+}
+
+static CYTHON_INLINE signed int __Pyx_PyInt_AsSignedInt(PyObject* x) {
+    const signed int neg_one = (signed int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(signed int) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(signed int)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to signed int" :
+                    "value too large to convert to signed int");
+            }
+            return (signed int)-1;
+        }
+        return (signed int)val;
+    }
+    return (signed int)__Pyx_PyInt_AsSignedLong(x);
+}
+
+static CYTHON_INLINE int __Pyx_PyInt_AsLongDouble(PyObject* x) {
+    const int neg_one = (int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(int) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(int)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to int" :
+                    "value too large to convert to int");
+            }
+            return (int)-1;
+        }
+        return (int)val;
+    }
+    return (int)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE unsigned long __Pyx_PyInt_AsUnsignedLong(PyObject* x) {
+    const unsigned long neg_one = (unsigned long)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to unsigned long");
+            return (unsigned long)-1;
+        }
+        return (unsigned long)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to unsigned long");
+                return (unsigned long)-1;
+            }
+            return (unsigned long)PyLong_AsUnsignedLong(x);
+        } else {
+            return (unsigned long)PyLong_AsLong(x);
+        }
+    } else {
+        unsigned long val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (unsigned long)-1;
+        val = __Pyx_PyInt_AsUnsignedLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE unsigned PY_LONG_LONG __Pyx_PyInt_AsUnsignedLongLong(PyObject* x) {
+    const unsigned PY_LONG_LONG neg_one = (unsigned PY_LONG_LONG)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to unsigned PY_LONG_LONG");
+            return (unsigned PY_LONG_LONG)-1;
+        }
+        return (unsigned PY_LONG_LONG)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to unsigned PY_LONG_LONG");
+                return (unsigned PY_LONG_LONG)-1;
+            }
+            return (unsigned PY_LONG_LONG)PyLong_AsUnsignedLongLong(x);
+        } else {
+            return (unsigned PY_LONG_LONG)PyLong_AsLongLong(x);
+        }
+    } else {
+        unsigned PY_LONG_LONG val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (unsigned PY_LONG_LONG)-1;
+        val = __Pyx_PyInt_AsUnsignedLongLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE long __Pyx_PyInt_AsLong(PyObject* x) {
+    const long neg_one = (long)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to long");
+            return (long)-1;
+        }
+        return (long)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to long");
+                return (long)-1;
+            }
+            return (long)PyLong_AsUnsignedLong(x);
+        } else {
+            return (long)PyLong_AsLong(x);
+        }
+    } else {
+        long val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (long)-1;
+        val = __Pyx_PyInt_AsLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE PY_LONG_LONG __Pyx_PyInt_AsLongLong(PyObject* x) {
+    const PY_LONG_LONG neg_one = (PY_LONG_LONG)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to PY_LONG_LONG");
+            return (PY_LONG_LONG)-1;
+        }
+        return (PY_LONG_LONG)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to PY_LONG_LONG");
+                return (PY_LONG_LONG)-1;
+            }
+            return (PY_LONG_LONG)PyLong_AsUnsignedLongLong(x);
+        } else {
+            return (PY_LONG_LONG)PyLong_AsLongLong(x);
+        }
+    } else {
+        PY_LONG_LONG val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (PY_LONG_LONG)-1;
+        val = __Pyx_PyInt_AsLongLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE signed long __Pyx_PyInt_AsSignedLong(PyObject* x) {
+    const signed long neg_one = (signed long)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to signed long");
+            return (signed long)-1;
+        }
+        return (signed long)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to signed long");
+                return (signed long)-1;
+            }
+            return (signed long)PyLong_AsUnsignedLong(x);
+        } else {
+            return (signed long)PyLong_AsLong(x);
+        }
+    } else {
+        signed long val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (signed long)-1;
+        val = __Pyx_PyInt_AsSignedLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE signed PY_LONG_LONG __Pyx_PyInt_AsSignedLongLong(PyObject* x) {
+    const signed PY_LONG_LONG neg_one = (signed PY_LONG_LONG)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to signed PY_LONG_LONG");
+            return (signed PY_LONG_LONG)-1;
+        }
+        return (signed PY_LONG_LONG)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to signed PY_LONG_LONG");
+                return (signed PY_LONG_LONG)-1;
+            }
+            return (signed PY_LONG_LONG)PyLong_AsUnsignedLongLong(x);
+        } else {
+            return (signed PY_LONG_LONG)PyLong_AsLongLong(x);
+        }
+    } else {
+        signed PY_LONG_LONG val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (signed PY_LONG_LONG)-1;
+        val = __Pyx_PyInt_AsSignedLongLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static int __Pyx_check_binary_version(void) {
+    char ctversion[4], rtversion[4];
+    PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION);
+    PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion());
+    if (ctversion[0] != rtversion[0] || ctversion[2] != rtversion[2]) {
+        char message[200];
+        PyOS_snprintf(message, sizeof(message),
+                      "compiletime version %s of module '%.100s' "
+                      "does not match runtime version %s",
+                      ctversion, __Pyx_MODULE_NAME, rtversion);
+        #if PY_VERSION_HEX < 0x02050000
+        return PyErr_Warn(NULL, message);
+        #else
+        return PyErr_WarnEx(NULL, message, 1);
+        #endif
+    }
+    return 0;
+}
+
+#ifndef __PYX_HAVE_RT_ImportModule
+#define __PYX_HAVE_RT_ImportModule
+static PyObject *__Pyx_ImportModule(const char *name) {
+    PyObject *py_name = 0;
+    PyObject *py_module = 0;
+    py_name = __Pyx_PyIdentifier_FromString(name);
+    if (!py_name)
+        goto bad;
+    py_module = PyImport_Import(py_name);
+    Py_DECREF(py_name);
+    return py_module;
+bad:
+    Py_XDECREF(py_name);
+    return 0;
+}
+#endif
+
+#ifndef __PYX_HAVE_RT_ImportType
+#define __PYX_HAVE_RT_ImportType
+static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name,
+    size_t size, int strict)
+{
+    PyObject *py_module = 0;
+    PyObject *result = 0;
+    PyObject *py_name = 0;
+    char warning[200];
+    Py_ssize_t basicsize;
+#ifdef Py_LIMITED_API
+    PyObject *py_basicsize;
+#endif
+    py_module = __Pyx_ImportModule(module_name);
+    if (!py_module)
+        goto bad;
+    py_name = __Pyx_PyIdentifier_FromString(class_name);
+    if (!py_name)
+        goto bad;
+    result = PyObject_GetAttr(py_module, py_name);
+    Py_DECREF(py_name);
+    py_name = 0;
+    Py_DECREF(py_module);
+    py_module = 0;
+    if (!result)
+        goto bad;
+    if (!PyType_Check(result)) {
+        PyErr_Format(PyExc_TypeError,
+            "%s.%s is not a type object",
+            module_name, class_name);
+        goto bad;
+    }
+#ifndef Py_LIMITED_API
+    basicsize = ((PyTypeObject *)result)->tp_basicsize;
+#else
+    py_basicsize = PyObject_GetAttrString(result, "__basicsize__");
+    if (!py_basicsize)
+        goto bad;
+    basicsize = PyLong_AsSsize_t(py_basicsize);
+    Py_DECREF(py_basicsize);
+    py_basicsize = 0;
+    if (basicsize == (Py_ssize_t)-1 && PyErr_Occurred())
+        goto bad;
+#endif
+    if (!strict && (size_t)basicsize > size) {
+        PyOS_snprintf(warning, sizeof(warning),
+            "%s.%s size changed, may indicate binary incompatibility",
+            module_name, class_name);
+        #if PY_VERSION_HEX < 0x02050000
+        if (PyErr_Warn(NULL, warning) < 0) goto bad;
+        #else
+        if (PyErr_WarnEx(NULL, warning, 0) < 0) goto bad;
+        #endif
+    }
+    else if ((size_t)basicsize != size) {
+        PyErr_Format(PyExc_ValueError,
+            "%s.%s has the wrong size, try recompiling",
+            module_name, class_name);
+        goto bad;
+    }
+    return (PyTypeObject *)result;
+bad:
+    Py_XDECREF(py_module);
+    Py_XDECREF(result);
+    return NULL;
+}
+#endif
+
+static void* __Pyx_GetVtable(PyObject *dict) {
+    void* ptr;
+    PyObject *ob = PyMapping_GetItemString(dict, (char *)"__pyx_vtable__");
+    if (!ob)
+        goto bad;
+#if PY_VERSION_HEX >= 0x02070000 && !(PY_MAJOR_VERSION==3&&PY_MINOR_VERSION==0)
+    ptr = PyCapsule_GetPointer(ob, 0);
+#else
+    ptr = PyCObject_AsVoidPtr(ob);
+#endif
+    if (!ptr && !PyErr_Occurred())
+        PyErr_SetString(PyExc_RuntimeError, "invalid vtable found for imported type");
+    Py_DECREF(ob);
+    return ptr;
+bad:
+    Py_XDECREF(ob);
+    return NULL;
+}
+
+#ifndef __PYX_HAVE_RT_ImportFunction
+#define __PYX_HAVE_RT_ImportFunction
+static int __Pyx_ImportFunction(PyObject *module, const char *funcname, void (**f)(void), const char *sig) {
+    PyObject *d = 0;
+    PyObject *cobj = 0;
+    union {
+        void (*fp)(void);
+        void *p;
+    } tmp;
+    d = PyObject_GetAttrString(module, (char *)"__pyx_capi__");
+    if (!d)
+        goto bad;
+    cobj = PyDict_GetItemString(d, funcname);
+    if (!cobj) {
+        PyErr_Format(PyExc_ImportError,
+            "%s does not export expected C function %s",
+                PyModule_GetName(module), funcname);
+        goto bad;
+    }
+#if PY_VERSION_HEX >= 0x02070000 && !(PY_MAJOR_VERSION==3 && PY_MINOR_VERSION==0)
+    if (!PyCapsule_IsValid(cobj, sig)) {
+        PyErr_Format(PyExc_TypeError,
+            "C function %s.%s has wrong signature (expected %s, got %s)",
+             PyModule_GetName(module), funcname, sig, PyCapsule_GetName(cobj));
+        goto bad;
+    }
+    tmp.p = PyCapsule_GetPointer(cobj, sig);
+#else
+    {const char *desc, *s1, *s2;
+    desc = (const char *)PyCObject_GetDesc(cobj);
+    if (!desc)
+        goto bad;
+    s1 = desc; s2 = sig;
+    while (*s1 != '\0' && *s1 == *s2) { s1++; s2++; }
+    if (*s1 != *s2) {
+        PyErr_Format(PyExc_TypeError,
+            "C function %s.%s has wrong signature (expected %s, got %s)",
+             PyModule_GetName(module), funcname, sig, desc);
+        goto bad;
+    }
+    tmp.p = PyCObject_AsVoidPtr(cobj);}
+#endif
+    *f = tmp.fp;
+    if (!(*f))
+        goto bad;
+    Py_DECREF(d);
+    return 0;
+bad:
+    Py_XDECREF(d);
+    return -1;
+}
+#endif
+
+static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) {
+    int start = 0, mid = 0, end = count - 1;
+    if (end >= 0 && code_line > entries[end].code_line) {
+        return count;
+    }
+    while (start < end) {
+        mid = (start + end) / 2;
+        if (code_line < entries[mid].code_line) {
+            end = mid;
+        } else if (code_line > entries[mid].code_line) {
+             start = mid + 1;
+        } else {
+            return mid;
+        }
+    }
+    if (code_line <= entries[mid].code_line) {
+        return mid;
+    } else {
+        return mid + 1;
+    }
+}
+static PyCodeObject *__pyx_find_code_object(int code_line) {
+    PyCodeObject* code_object;
+    int pos;
+    if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) {
+        return NULL;
+    }
+    pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
+    if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) {
+        return NULL;
+    }
+    code_object = __pyx_code_cache.entries[pos].code_object;
+    Py_INCREF(code_object);
+    return code_object;
+}
+static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) {
+    int pos, i;
+    __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries;
+    if (unlikely(!code_line)) {
+        return;
+    }
+    if (unlikely(!entries)) {
+        entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry));
+        if (likely(entries)) {
+            __pyx_code_cache.entries = entries;
+            __pyx_code_cache.max_count = 64;
+            __pyx_code_cache.count = 1;
+            entries[0].code_line = code_line;
+            entries[0].code_object = code_object;
+            Py_INCREF(code_object);
+        }
+        return;
+    }
+    pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
+    if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) {
+        PyCodeObject* tmp = entries[pos].code_object;
+        entries[pos].code_object = code_object;
+        Py_DECREF(tmp);
+        return;
+    }
+    if (__pyx_code_cache.count == __pyx_code_cache.max_count) {
+        int new_max = __pyx_code_cache.max_count + 64;
+        entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc(
+            __pyx_code_cache.entries, new_max*sizeof(__Pyx_CodeObjectCacheEntry));
+        if (unlikely(!entries)) {
+            return;
+        }
+        __pyx_code_cache.entries = entries;
+        __pyx_code_cache.max_count = new_max;
+    }
+    for (i=__pyx_code_cache.count; i>pos; i--) {
+        entries[i] = entries[i-1];
+    }
+    entries[pos].code_line = code_line;
+    entries[pos].code_object = code_object;
+    __pyx_code_cache.count++;
+    Py_INCREF(code_object);
+}
+
+#include "compile.h"
+#include "frameobject.h"
+#include "traceback.h"
+static PyCodeObject* __Pyx_CreateCodeObjectForTraceback(
+            const char *funcname, int c_line,
+            int py_line, const char *filename) {
+    PyCodeObject *py_code = 0;
+    PyObject *py_srcfile = 0;
+    PyObject *py_funcname = 0;
+    #if PY_MAJOR_VERSION < 3
+    py_srcfile = PyString_FromString(filename);
+    #else
+    py_srcfile = PyUnicode_FromString(filename);
+    #endif
+    if (!py_srcfile) goto bad;
+    if (c_line) {
+        #if PY_MAJOR_VERSION < 3
+        py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
+        #else
+        py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
+        #endif
+    }
+    else {
+        #if PY_MAJOR_VERSION < 3
+        py_funcname = PyString_FromString(funcname);
+        #else
+        py_funcname = PyUnicode_FromString(funcname);
+        #endif
+    }
+    if (!py_funcname) goto bad;
+    py_code = __Pyx_PyCode_New(
+        0,            /*int argcount,*/
+        0,            /*int kwonlyargcount,*/
+        0,            /*int nlocals,*/
+        0,            /*int stacksize,*/
+        0,            /*int flags,*/
+        __pyx_empty_bytes, /*PyObject *code,*/
+        __pyx_empty_tuple, /*PyObject *consts,*/
+        __pyx_empty_tuple, /*PyObject *names,*/
+        __pyx_empty_tuple, /*PyObject *varnames,*/
+        __pyx_empty_tuple, /*PyObject *freevars,*/
+        __pyx_empty_tuple, /*PyObject *cellvars,*/
+        py_srcfile,   /*PyObject *filename,*/
+        py_funcname,  /*PyObject *name,*/
+        py_line,      /*int firstlineno,*/
+        __pyx_empty_bytes  /*PyObject *lnotab*/
+    );
+    Py_DECREF(py_srcfile);
+    Py_DECREF(py_funcname);
+    return py_code;
+bad:
+    Py_XDECREF(py_srcfile);
+    Py_XDECREF(py_funcname);
+    return NULL;
+}
+static void __Pyx_AddTraceback(const char *funcname, int c_line,
+                               int py_line, const char *filename) {
+    PyCodeObject *py_code = 0;
+    PyObject *py_globals = 0;
+    PyFrameObject *py_frame = 0;
+    py_code = __pyx_find_code_object(c_line ? c_line : py_line);
+    if (!py_code) {
+        py_code = __Pyx_CreateCodeObjectForTraceback(
+            funcname, c_line, py_line, filename);
+        if (!py_code) goto bad;
+        __pyx_insert_code_object(c_line ? c_line : py_line, py_code);
+    }
+    py_globals = PyModule_GetDict(__pyx_m);
+    if (!py_globals) goto bad;
+    py_frame = PyFrame_New(
+        PyThreadState_GET(), /*PyThreadState *tstate,*/
+        py_code,             /*PyCodeObject *code,*/
+        py_globals,          /*PyObject *globals,*/
+        0                    /*PyObject *locals*/
+    );
+    if (!py_frame) goto bad;
+    py_frame->f_lineno = py_line;
+    PyTraceBack_Here(py_frame);
+bad:
+    Py_XDECREF(py_code);
+    Py_XDECREF(py_frame);
+}
+
+static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
+    while (t->p) {
+        #if PY_MAJOR_VERSION < 3
+        if (t->is_unicode) {
+            *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL);
+        } else if (t->intern) {
+            *t->p = PyString_InternFromString(t->s);
+        } else {
+            *t->p = PyString_FromStringAndSize(t->s, t->n - 1);
+        }
+        #else  /* Python 3+ has unicode identifiers */
+        if (t->is_unicode | t->is_str) {
+            if (t->intern) {
+                *t->p = PyUnicode_InternFromString(t->s);
+            } else if (t->encoding) {
+                *t->p = PyUnicode_Decode(t->s, t->n - 1, t->encoding, NULL);
+            } else {
+                *t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1);
+            }
+        } else {
+            *t->p = PyBytes_FromStringAndSize(t->s, t->n - 1);
+        }
+        #endif
+        if (!*t->p)
+            return -1;
+        ++t;
+    }
+    return 0;
+}
+
+static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) {
+   int is_true = x == Py_True;
+   if (is_true | (x == Py_False) | (x == Py_None)) return is_true;
+   else return PyObject_IsTrue(x);
+}
+static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x) {
+  PyNumberMethods *m;
+  const char *name = NULL;
+  PyObject *res = NULL;
+#if PY_VERSION_HEX < 0x03000000
+  if (PyInt_Check(x) || PyLong_Check(x))
+#else
+  if (PyLong_Check(x))
+#endif
+    return Py_INCREF(x), x;
+  m = Py_TYPE(x)->tp_as_number;
+#if PY_VERSION_HEX < 0x03000000
+  if (m && m->nb_int) {
+    name = "int";
+    res = PyNumber_Int(x);
+  }
+  else if (m && m->nb_long) {
+    name = "long";
+    res = PyNumber_Long(x);
+  }
+#else
+  if (m && m->nb_int) {
+    name = "int";
+    res = PyNumber_Long(x);
+  }
+#endif
+  if (res) {
+#if PY_VERSION_HEX < 0x03000000
+    if (!PyInt_Check(res) && !PyLong_Check(res)) {
+#else
+    if (!PyLong_Check(res)) {
+#endif
+      PyErr_Format(PyExc_TypeError,
+                   "__%s__ returned non-%s (type %.200s)",
+                   name, name, Py_TYPE(res)->tp_name);
+      Py_DECREF(res);
+      return NULL;
+    }
+  }
+  else if (!PyErr_Occurred()) {
+    PyErr_SetString(PyExc_TypeError,
+                    "an integer is required");
+  }
+  return res;
+}
+static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
+  Py_ssize_t ival;
+  PyObject* x = PyNumber_Index(b);
+  if (!x) return -1;
+  ival = PyInt_AsSsize_t(x);
+  Py_DECREF(x);
+  return ival;
+}
+static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) {
+#if PY_VERSION_HEX < 0x02050000
+   if (ival <= LONG_MAX)
+       return PyInt_FromLong((long)ival);
+   else {
+       unsigned char *bytes = (unsigned char *) &ival;
+       int one = 1; int little = (int)*(unsigned char*)&one;
+       return _PyLong_FromByteArray(bytes, sizeof(size_t), little, 0);
+   }
+#else
+   return PyInt_FromSize_t(ival);
+#endif
+}
+static CYTHON_INLINE size_t __Pyx_PyInt_AsSize_t(PyObject* x) {
+   unsigned PY_LONG_LONG val = __Pyx_PyInt_AsUnsignedLongLong(x);
+   if (unlikely(val == (unsigned PY_LONG_LONG)-1 && PyErr_Occurred())) {
+       return (size_t)-1;
+   } else if (unlikely(val != (unsigned PY_LONG_LONG)(size_t)val)) {
+       PyErr_SetString(PyExc_OverflowError,
+                       "value too large to convert to size_t");
+       return (size_t)-1;
+   }
+   return (size_t)val;
+}
+
+
+#endif /* Py_PYTHON_H */
diff --git a/h5py/h5a.pxd b/h5py/h5a.pxd
new file mode 100644
index 0000000..6a0cd76
--- /dev/null
+++ b/h5py/h5a.pxd
@@ -0,0 +1,16 @@
+# This file is part of h5py, a Python interface to the HDF5 library.
+#
+# http://www.h5py.org
+#
+# Copyright 2008-2013 Andrew Collette and contributors
+#
+# License:  Standard 3-clause BSD; see "license.txt" for full license terms
+#           and contributor agreement.
+
+from defs cimport *
+
+from _objects cimport ObjectID
+
+cdef class AttrID(ObjectID):
+    pass
+
diff --git a/h5py/h5a.pyx b/h5py/h5a.pyx
new file mode 100644
index 0000000..13c0b10
--- /dev/null
+++ b/h5py/h5a.pyx
@@ -0,0 +1,437 @@
+# This file is part of h5py, a Python interface to the HDF5 library.
+#
+# http://www.h5py.org
+#
+# Copyright 2008-2013 Andrew Collette and contributors
+#
+# License:  Standard 3-clause BSD; see "license.txt" for full license terms
+#           and contributor agreement.
+
+"""
+    Provides access to the low-level HDF5 "H5A" attribute interface.
+"""
+
+# Compile-time imports
+from _objects cimport pdefault
+from h5t cimport TypeID, typewrap, py_create
+from h5s cimport SpaceID
+from h5p cimport PropID
+from numpy cimport import_array, ndarray, PyArray_DATA
+from utils cimport check_numpy_read, check_numpy_write, emalloc, efree
+from _proxy cimport attr_rw
+
+from h5py import _objects
+
+# Initialization
+import_array()
+
+# === General attribute operations ============================================
+
+# --- create, create_by_name ---
+
+def create(ObjectID loc not None, char* name, TypeID tid not None,
+    SpaceID space not None, *, char* obj_name='.', PropID lapl=None):
+    """(ObjectID loc, STRING name, TypeID tid, SpaceID space, **kwds) => AttrID
+
+    Create a new attribute, attached to an existing object.
+
+    STRING obj_name (".")
+        Attach attribute to this group member instead
+
+    PropID lapl
+        Link access property list for obj_name
+    """
+
+    return AttrID.open(H5Acreate_by_name(loc.id, obj_name, name, tid.id,
+            space.id, H5P_DEFAULT, H5P_DEFAULT, pdefault(lapl)))
+
+
+# --- open, open_by_name, open_by_idx ---
+
+def open(ObjectID loc not None, char* name=NULL, int index=-1, *,
+    char* obj_name='.', int index_type=H5_INDEX_NAME, int order=H5_ITER_NATIVE,
+    PropID lapl=None):
+    """(ObjectID loc, STRING name=, INT index=, **kwds) => AttrID
+
+    Open an attribute attached to an existing object.  You must specify
+    exactly one of either name or idx.  Keywords are:
+
+    STRING obj_name (".")
+        Attribute is attached to this group member
+
+    PropID lapl (None)
+        Link access property list for obj_name
+
+    INT index_type (h5.INDEX_NAME)
+
+    INT order (h5.ITER_NATIVE)
+
+    """
+    if (name == NULL and index < 0) or (name != NULL and index >= 0):
+        raise TypeError("Exactly one of name or idx must be specified")
+
+    if name != NULL:
+        return AttrID.open(H5Aopen_by_name(loc.id, obj_name, name,
+                        H5P_DEFAULT, pdefault(lapl)))
+    else:
+        return AttrID.open(H5Aopen_by_idx(loc.id, obj_name,
+            <H5_index_t>index_type, <H5_iter_order_t>order, index,
+            H5P_DEFAULT, pdefault(lapl)))
+
+
+# --- exists, exists_by_name ---
+
+def exists(ObjectID loc not None, char* name, *,
+            char* obj_name=".", PropID lapl=None):
+    """(ObjectID loc, STRING name, **kwds) => BOOL
+
+    Determine if an attribute is attached to this object.  Keywords:
+
+    STRING obj_name (".")
+        Look for attributes attached to this group member
+
+    PropID lapl (None):
+        Link access property list for obj_name
+    """
+    return <bint>H5Aexists_by_name(loc.id, obj_name, name, pdefault(lapl))
+
+
+# --- rename, rename_by_name ---
+
+def rename(ObjectID loc not None, char* name, char* new_name, *,
+    char* obj_name='.', PropID lapl=None):
+    """(ObjectID loc, STRING name, STRING new_name, **kwds)
+
+    Rename an attribute.  Keywords:
+
+    STRING obj_name (".")
+        Attribute is attached to this group member
+
+    PropID lapl (None)
+        Link access property list for obj_name
+    """
+    H5Arename_by_name(loc.id, obj_name, name, new_name, pdefault(lapl))
+
+
+def delete(ObjectID loc not None, char* name=NULL, int index=-1, *,
+    char* obj_name='.', int index_type=H5_INDEX_NAME, int order=H5_ITER_NATIVE,
+    PropID lapl=None):
+    """(ObjectID loc, STRING name=, INT index=, **kwds)
+
+    Remove an attribute from an object.  Specify exactly one of "name"
+    or "index". Keyword-only arguments:
+
+    STRING obj_name (".")
+        Attribute is attached to this group member
+
+    PropID lapl (None)
+        Link access property list for obj_name
+
+    INT index_type (h5.INDEX_NAME)
+
+    INT order (h5.ITER_NATIVE)
+    """
+    if name != NULL and index < 0:
+        H5Adelete_by_name(loc.id, obj_name, name, pdefault(lapl))
+    elif name == NULL and index >= 0:
+        H5Adelete_by_idx(loc.id, obj_name, <H5_index_t>index_type,
+            <H5_iter_order_t>order, index, pdefault(lapl))
+    else:
+        raise TypeError("Exactly one of index or name must be specified.")
+
+def get_num_attrs(ObjectID loc not None):
+    """(ObjectID loc) => INT
+
+    Determine the number of attributes attached to an HDF5 object.
+    """
+    return H5Aget_num_attrs(loc.id)
+
+
+cdef class AttrInfo:
+
+    cdef H5A_info_t info
+
+    property corder_valid:
+        """Indicates if the creation order is valid"""
+        def __get__(self):
+            return <bint>self.info.corder_valid
+    property corder:
+        """Creation order"""
+        def __get__(self):
+            return <int>self.info.corder
+    property cset:
+        """Character set of attribute name (integer typecode from h5t)"""
+        def __get__(self):
+            return <int>self.info.cset
+    property data_size:
+        """Size of raw data"""
+        def __get__(self):
+            return self.info.data_size
+
+    def _hash(self):
+        return hash((self.corder_valid, self.corder, self.cset, self.data_size))
+
+
+def get_info(ObjectID loc not None, char* name=NULL, int index=-1, *,
+            char* obj_name='.', PropID lapl=None,
+            int index_type=H5_INDEX_NAME, int order=H5_ITER_NATIVE):
+    """(ObjectID loc, STRING name=, INT index=, **kwds) => AttrInfo
+
+    Get information about an attribute, in one of two ways:
+
+    1. If you have the attribute identifier, just pass it in
+    2. If you have the parent object, supply it and exactly one of
+       either name or index.
+
+    STRING obj_name (".")
+        Use this group member instead
+
+    PropID lapl (None)
+        Link access property list for obj_name
+
+    INT index_type (h5.INDEX_NAME)
+        Which index to use
+
+    INT order (h5.ITER_NATIVE)
+        What order the index is in
+    """
+    cdef AttrInfo info = AttrInfo()
+
+    if name == NULL and index < 0:
+        H5Aget_info(loc.id, &info.info)
+    elif name != NULL and index >= 0:
+        raise TypeError("At most one of name and index may be specified")
+    elif name != NULL:
+        H5Aget_info_by_name(loc.id, obj_name, name, &info.info, pdefault(lapl))
+    elif index >= 0:
+        H5Aget_info_by_idx(loc.id, obj_name, <H5_index_t>index_type,
+            <H5_iter_order_t>order, index, &info.info, pdefault(lapl))
+
+    return info
+
+# === Iteration routines ======================================================
+
+cdef class _AttrVisitor:
+    cdef object func
+    cdef object retval
+    def __init__(self, func):
+        self.func = func
+        self.retval = None
+
+cdef herr_t cb_attr_iter(hid_t loc_id, char* attr_name, H5A_info_t *ainfo, void* vis_in) except 2:
+    cdef _AttrVisitor vis = <_AttrVisitor>vis_in
+    cdef AttrInfo info = AttrInfo()
+    info.info = ainfo[0]
+    vis.retval = vis.func(attr_name, info)
+    if vis.retval is not None:
+        return 1
+    return 0
+
+cdef herr_t cb_attr_simple(hid_t loc_id, char* attr_name, H5A_info_t *ainfo, void* vis_in) except 2:
+    cdef _AttrVisitor vis = <_AttrVisitor>vis_in
+    vis.retval = vis.func(attr_name)
+    if vis.retval is not None:
+        return 1
+    return 0
+
+
+def iterate(ObjectID loc not None, object func, int index=0, *,
+    int index_type=H5_INDEX_NAME, int order=H5_ITER_NATIVE, bint info=0):
+    """(ObjectID loc, CALLABLE func, INT index=0, **kwds) => <Return value from func>
+
+    Iterate a callable (function, method or callable object) over the
+    attributes attached to this object.  You callable should have the
+    signature::
+
+        func(STRING name) => Result
+
+    or if the keyword argument "info" is True::
+
+        func(STRING name, AttrInfo info) => Result
+
+    Returning None continues iteration; returning anything else aborts
+    iteration and returns that value.  Keywords:
+
+    BOOL info (False)
+        Callback is func(STRING name, AttrInfo info), not func(STRING name)
+
+    INT index_type (h5.INDEX_NAME)
+        Which index to use
+
+    INT order (h5.ITER_NATIVE)
+        Index order to use
+    """
+    if index < 0:
+        raise ValueError("Starting index must be a non-negative integer.")
+
+    cdef hsize_t i = index
+    cdef _AttrVisitor vis = _AttrVisitor(func)
+    cdef H5A_operator2_t cfunc
+
+    if info:
+        cfunc = cb_attr_iter
+    else:
+        cfunc = cb_attr_simple
+
+    H5Aiterate2(loc.id, <H5_index_t>index_type, <H5_iter_order_t>order,
+        &i, cfunc, <void*>vis)
+
+    return vis.retval
+
+
+
+# === Attribute class & methods ===============================================
+
+cdef class AttrID(ObjectID):
+
+    """
+        Logical representation of an HDF5 attribute identifier.
+
+        Objects of this class can be used in any HDF5 function call
+        which expects an attribute identifier.  Additionally, all ``H5A*``
+        functions which always take an attribute instance as the first
+        argument are presented as methods of this class.
+
+        * Hashable: No
+        * Equality: Identifier comparison
+    """
+
+    property name:
+        """The attribute's name"""
+        def __get__(self):
+            return self.get_name()
+
+    property shape:
+        """A Numpy-style shape tuple representing the attribute's dataspace"""
+        def __get__(self):
+
+            cdef SpaceID space
+            space = self.get_space()
+            return space.get_simple_extent_dims()
+
+    property dtype:
+        """A Numpy-stype dtype object representing the attribute's datatype"""
+        def __get__(self):
+
+            cdef TypeID tid
+            tid = self.get_type()
+            return tid.py_dtype()
+
+
+    def _close(self):
+        """()
+
+        Close this attribute and release resources.  You don't need to
+        call this manually; attributes are automatically destroyed when
+        their Python wrappers are freed.
+        """
+        with _objects.registry.lock:
+            H5Aclose(self.id)
+            if not self.valid:
+                del _objects.registry[self.id]
+
+
+    def read(self, ndarray arr not None):
+        """(NDARRAY arr)
+
+        Read the attribute data into the given Numpy array.  Note that the
+        Numpy array must have the same shape as the HDF5 attribute, and a
+        conversion-compatible datatype.
+
+        The Numpy array must be writable and C-contiguous.  If this is not
+        the case, the read will fail with an exception.
+        """
+        cdef TypeID mtype
+        cdef hid_t space_id
+        space_id = 0
+
+        try:
+            space_id = H5Aget_space(self.id)
+            check_numpy_write(arr, space_id)
+
+            mtype = py_create(arr.dtype)
+
+            attr_rw(self.id, mtype.id, PyArray_DATA(arr), 1)
+
+        finally:
+            if space_id:
+                H5Sclose(space_id)
+
+
+    def write(self, ndarray arr not None):
+        """(NDARRAY arr)
+
+        Write the contents of a Numpy array too the attribute.  Note that
+        the Numpy array must have the same shape as the HDF5 attribute, and
+        a conversion-compatible datatype.
+
+        The Numpy array must be C-contiguous.  If this is not the case,
+        the write will fail with an exception.
+        """
+        cdef TypeID mtype
+        cdef hid_t space_id
+        space_id = 0
+
+        try:
+            space_id = H5Aget_space(self.id)
+            check_numpy_read(arr, space_id)
+            mtype = py_create(arr.dtype)
+
+            attr_rw(self.id, mtype.id, PyArray_DATA(arr), 0)
+
+        finally:
+            if space_id:
+                H5Sclose(space_id)
+
+
+    def get_name(self):
+        """() => STRING name
+
+        Determine the name of this attribute.
+        """
+        cdef int blen
+        cdef char* buf
+        buf = NULL
+
+        try:
+            blen = H5Aget_name(self.id, 0, NULL)
+            assert blen >= 0
+            buf = <char*>emalloc(sizeof(char)*blen+1)
+            blen = H5Aget_name(self.id, blen+1, buf)
+            strout = <bytes>buf
+        finally:
+            efree(buf)
+
+        return strout
+
+
+    def get_space(self):
+        """() => SpaceID
+
+        Create and return a copy of the attribute's dataspace.
+        """
+        return SpaceID.open(H5Aget_space(self.id))
+
+
+    def get_type(self):
+        """() => TypeID
+
+        Create and return a copy of the attribute's datatype.
+        """
+        return typewrap(H5Aget_type(self.id))
+
+
+    def get_storage_size(self):
+        """() => INT
+
+        Get the amount of storage required for this attribute.
+        """
+        return H5Aget_storage_size(self.id)
+
+
+
+
+
+
+
+
diff --git a/h5py/h5ac.c b/h5py/h5ac.c
new file mode 100644
index 0000000..8a328d4
--- /dev/null
+++ b/h5py/h5ac.c
@@ -0,0 +1,5137 @@
+/* Generated by Cython 0.18 on Mon Dec  9 16:00:33 2013 */
+
+#define PY_SSIZE_T_CLEAN
+#include "Python.h"
+#ifndef Py_PYTHON_H
+    #error Python headers needed to compile C extensions, please install development version of Python.
+#elif PY_VERSION_HEX < 0x02040000
+    #error Cython requires Python 2.4+.
+#else
+#include <stddef.h> /* For offsetof */
+#ifndef offsetof
+#define offsetof(type, member) ( (size_t) & ((type*)0) -> member )
+#endif
+#if !defined(WIN32) && !defined(MS_WINDOWS)
+  #ifndef __stdcall
+    #define __stdcall
+  #endif
+  #ifndef __cdecl
+    #define __cdecl
+  #endif
+  #ifndef __fastcall
+    #define __fastcall
+  #endif
+#endif
+#ifndef DL_IMPORT
+  #define DL_IMPORT(t) t
+#endif
+#ifndef DL_EXPORT
+  #define DL_EXPORT(t) t
+#endif
+#ifndef PY_LONG_LONG
+  #define PY_LONG_LONG LONG_LONG
+#endif
+#ifndef Py_HUGE_VAL
+  #define Py_HUGE_VAL HUGE_VAL
+#endif
+#ifdef PYPY_VERSION
+#define CYTHON_COMPILING_IN_PYPY 1
+#define CYTHON_COMPILING_IN_CPYTHON 0
+#else
+#define CYTHON_COMPILING_IN_PYPY 0
+#define CYTHON_COMPILING_IN_CPYTHON 1
+#endif
+#if PY_VERSION_HEX < 0x02050000
+  typedef int Py_ssize_t;
+  #define PY_SSIZE_T_MAX INT_MAX
+  #define PY_SSIZE_T_MIN INT_MIN
+  #define PY_FORMAT_SIZE_T ""
+  #define CYTHON_FORMAT_SSIZE_T ""
+  #define PyInt_FromSsize_t(z) PyInt_FromLong(z)
+  #define PyInt_AsSsize_t(o)   __Pyx_PyInt_AsInt(o)
+  #define PyNumber_Index(o)    ((PyNumber_Check(o) && !PyFloat_Check(o)) ? PyNumber_Int(o) : \
+                                (PyErr_Format(PyExc_TypeError, \
+                                              "expected index value, got %.200s", Py_TYPE(o)->tp_name), \
+                                 (PyObject*)0))
+  #define __Pyx_PyIndex_Check(o) (PyNumber_Check(o) && !PyFloat_Check(o) && \
+                                  !PyComplex_Check(o))
+  #define PyIndex_Check __Pyx_PyIndex_Check
+  #define PyErr_WarnEx(category, message, stacklevel) PyErr_Warn(category, message)
+  #define __PYX_BUILD_PY_SSIZE_T "i"
+#else
+  #define __PYX_BUILD_PY_SSIZE_T "n"
+  #define CYTHON_FORMAT_SSIZE_T "z"
+  #define __Pyx_PyIndex_Check PyIndex_Check
+#endif
+#if PY_VERSION_HEX < 0x02060000
+  #define Py_REFCNT(ob) (((PyObject*)(ob))->ob_refcnt)
+  #define Py_TYPE(ob)   (((PyObject*)(ob))->ob_type)
+  #define Py_SIZE(ob)   (((PyVarObject*)(ob))->ob_size)
+  #define PyVarObject_HEAD_INIT(type, size) \
+          PyObject_HEAD_INIT(type) size,
+  #define PyType_Modified(t)
+  typedef struct {
+     void *buf;
+     PyObject *obj;
+     Py_ssize_t len;
+     Py_ssize_t itemsize;
+     int readonly;
+     int ndim;
+     char *format;
+     Py_ssize_t *shape;
+     Py_ssize_t *strides;
+     Py_ssize_t *suboffsets;
+     void *internal;
+  } Py_buffer;
+  #define PyBUF_SIMPLE 0
+  #define PyBUF_WRITABLE 0x0001
+  #define PyBUF_FORMAT 0x0004
+  #define PyBUF_ND 0x0008
+  #define PyBUF_STRIDES (0x0010 | PyBUF_ND)
+  #define PyBUF_C_CONTIGUOUS (0x0020 | PyBUF_STRIDES)
+  #define PyBUF_F_CONTIGUOUS (0x0040 | PyBUF_STRIDES)
+  #define PyBUF_ANY_CONTIGUOUS (0x0080 | PyBUF_STRIDES)
+  #define PyBUF_INDIRECT (0x0100 | PyBUF_STRIDES)
+  #define PyBUF_RECORDS (PyBUF_STRIDES | PyBUF_FORMAT | PyBUF_WRITABLE)
+  #define PyBUF_FULL (PyBUF_INDIRECT | PyBUF_FORMAT | PyBUF_WRITABLE)
+  typedef int (*getbufferproc)(PyObject *, Py_buffer *, int);
+  typedef void (*releasebufferproc)(PyObject *, Py_buffer *);
+#endif
+#if PY_MAJOR_VERSION < 3
+  #define __Pyx_BUILTIN_MODULE_NAME "__builtin__"
+  #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) \
+          PyCode_New(a, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
+#else
+  #define __Pyx_BUILTIN_MODULE_NAME "builtins"
+  #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) \
+          PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
+#endif
+#if PY_MAJOR_VERSION < 3 && PY_MINOR_VERSION < 6
+  #define PyUnicode_FromString(s) PyUnicode_Decode(s, strlen(s), "UTF-8", "strict")
+#endif
+#if PY_MAJOR_VERSION >= 3
+  #define Py_TPFLAGS_CHECKTYPES 0
+  #define Py_TPFLAGS_HAVE_INDEX 0
+#endif
+#if (PY_VERSION_HEX < 0x02060000) || (PY_MAJOR_VERSION >= 3)
+  #define Py_TPFLAGS_HAVE_NEWBUFFER 0
+#endif
+#if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND)
+  #define CYTHON_PEP393_ENABLED 1
+  #define __Pyx_PyUnicode_READY(op)       (likely(PyUnicode_IS_READY(op)) ? \
+                                              0 : _PyUnicode_Ready((PyObject *)(op)))
+  #define __Pyx_PyUnicode_GET_LENGTH(u)   PyUnicode_GET_LENGTH(u)
+  #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i)
+  #define __Pyx_PyUnicode_READ(k, d, i)   PyUnicode_READ(k, d, i)
+#else
+  #define CYTHON_PEP393_ENABLED 0
+  #define __Pyx_PyUnicode_READY(op)       (0)
+  #define __Pyx_PyUnicode_GET_LENGTH(u)   PyUnicode_GET_SIZE(u)
+  #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i]))
+  #define __Pyx_PyUnicode_READ(k, d, i)   ((k=k), (Py_UCS4)(((Py_UNICODE*)d)[i]))
+#endif
+#if PY_MAJOR_VERSION >= 3
+  #define PyBaseString_Type            PyUnicode_Type
+  #define PyStringObject               PyUnicodeObject
+  #define PyString_Type                PyUnicode_Type
+  #define PyString_Check               PyUnicode_Check
+  #define PyString_CheckExact          PyUnicode_CheckExact
+#endif
+#if PY_VERSION_HEX < 0x02060000
+  #define PyBytesObject                PyStringObject
+  #define PyBytes_Type                 PyString_Type
+  #define PyBytes_Check                PyString_Check
+  #define PyBytes_CheckExact           PyString_CheckExact
+  #define PyBytes_FromString           PyString_FromString
+  #define PyBytes_FromStringAndSize    PyString_FromStringAndSize
+  #define PyBytes_FromFormat           PyString_FromFormat
+  #define PyBytes_DecodeEscape         PyString_DecodeEscape
+  #define PyBytes_AsString             PyString_AsString
+  #define PyBytes_AsStringAndSize      PyString_AsStringAndSize
+  #define PyBytes_Size                 PyString_Size
+  #define PyBytes_AS_STRING            PyString_AS_STRING
+  #define PyBytes_GET_SIZE             PyString_GET_SIZE
+  #define PyBytes_Repr                 PyString_Repr
+  #define PyBytes_Concat               PyString_Concat
+  #define PyBytes_ConcatAndDel         PyString_ConcatAndDel
+#endif
+#if PY_VERSION_HEX < 0x02060000
+  #define PySet_Check(obj)             PyObject_TypeCheck(obj, &PySet_Type)
+  #define PyFrozenSet_Check(obj)       PyObject_TypeCheck(obj, &PyFrozenSet_Type)
+#endif
+#ifndef PySet_CheckExact
+  #define PySet_CheckExact(obj)        (Py_TYPE(obj) == &PySet_Type)
+#endif
+#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type)
+#if PY_MAJOR_VERSION >= 3
+  #define PyIntObject                  PyLongObject
+  #define PyInt_Type                   PyLong_Type
+  #define PyInt_Check(op)              PyLong_Check(op)
+  #define PyInt_CheckExact(op)         PyLong_CheckExact(op)
+  #define PyInt_FromString             PyLong_FromString
+  #define PyInt_FromUnicode            PyLong_FromUnicode
+  #define PyInt_FromLong               PyLong_FromLong
+  #define PyInt_FromSize_t             PyLong_FromSize_t
+  #define PyInt_FromSsize_t            PyLong_FromSsize_t
+  #define PyInt_AsLong                 PyLong_AsLong
+  #define PyInt_AS_LONG                PyLong_AS_LONG
+  #define PyInt_AsSsize_t              PyLong_AsSsize_t
+  #define PyInt_AsUnsignedLongMask     PyLong_AsUnsignedLongMask
+  #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask
+#endif
+#if PY_MAJOR_VERSION >= 3
+  #define PyBoolObject                 PyLongObject
+#endif
+#if PY_VERSION_HEX < 0x03020000
+  typedef long Py_hash_t;
+  #define __Pyx_PyInt_FromHash_t PyInt_FromLong
+  #define __Pyx_PyInt_AsHash_t   PyInt_AsLong
+#else
+  #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t
+  #define __Pyx_PyInt_AsHash_t   PyInt_AsSsize_t
+#endif
+#if (PY_MAJOR_VERSION < 3) || (PY_VERSION_HEX >= 0x03010300)
+  #define __Pyx_PySequence_GetSlice(obj, a, b) PySequence_GetSlice(obj, a, b)
+  #define __Pyx_PySequence_SetSlice(obj, a, b, value) PySequence_SetSlice(obj, a, b, value)
+  #define __Pyx_PySequence_DelSlice(obj, a, b) PySequence_DelSlice(obj, a, b)
+#else
+  #define __Pyx_PySequence_GetSlice(obj, a, b) (unlikely(!(obj)) ? \
+        (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), (PyObject*)0) : \
+        (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_GetSlice(obj, a, b)) : \
+            (PyErr_Format(PyExc_TypeError, "'%.200s' object is unsliceable", (obj)->ob_type->tp_name), (PyObject*)0)))
+  #define __Pyx_PySequence_SetSlice(obj, a, b, value) (unlikely(!(obj)) ? \
+        (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), -1) : \
+        (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_SetSlice(obj, a, b, value)) : \
+            (PyErr_Format(PyExc_TypeError, "'%.200s' object doesn't support slice assignment", (obj)->ob_type->tp_name), -1)))
+  #define __Pyx_PySequence_DelSlice(obj, a, b) (unlikely(!(obj)) ? \
+        (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), -1) : \
+        (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_DelSlice(obj, a, b)) : \
+            (PyErr_Format(PyExc_TypeError, "'%.200s' object doesn't support slice deletion", (obj)->ob_type->tp_name), -1)))
+#endif
+#if PY_MAJOR_VERSION >= 3
+  #define PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, self) : PyInstanceMethod_New(func))
+#endif
+#if PY_VERSION_HEX < 0x02050000
+  #define __Pyx_GetAttrString(o,n)   PyObject_GetAttrString((o),((char *)(n)))
+  #define __Pyx_SetAttrString(o,n,a) PyObject_SetAttrString((o),((char *)(n)),(a))
+  #define __Pyx_DelAttrString(o,n)   PyObject_DelAttrString((o),((char *)(n)))
+#else
+  #define __Pyx_GetAttrString(o,n)   PyObject_GetAttrString((o),(n))
+  #define __Pyx_SetAttrString(o,n,a) PyObject_SetAttrString((o),(n),(a))
+  #define __Pyx_DelAttrString(o,n)   PyObject_DelAttrString((o),(n))
+#endif
+#if PY_VERSION_HEX < 0x02050000
+  #define __Pyx_NAMESTR(n) ((char *)(n))
+  #define __Pyx_DOCSTR(n)  ((char *)(n))
+#else
+  #define __Pyx_NAMESTR(n) (n)
+  #define __Pyx_DOCSTR(n)  (n)
+#endif
+
+
+#if PY_MAJOR_VERSION >= 3
+  #define __Pyx_PyNumber_Divide(x,y)         PyNumber_TrueDivide(x,y)
+  #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceTrueDivide(x,y)
+#else
+  #define __Pyx_PyNumber_Divide(x,y)         PyNumber_Divide(x,y)
+  #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceDivide(x,y)
+#endif
+
+#ifndef __PYX_EXTERN_C
+  #ifdef __cplusplus
+    #define __PYX_EXTERN_C extern "C"
+  #else
+    #define __PYX_EXTERN_C extern
+  #endif
+#endif
+
+#if defined(WIN32) || defined(MS_WINDOWS)
+#define _USE_MATH_DEFINES
+#endif
+#include <math.h>
+#define __PYX_HAVE__h5py__h5ac
+#define __PYX_HAVE_API__h5py__h5ac
+#include "stdlib.h"
+#include "string.h"
+#include "time.h"
+#include "unistd.h"
+#include "stdint.h"
+#include "api_compat.h"
+#include "lzf_filter.h"
+#include "hdf5.h"
+#include "H5Cpublic.h"
+#include "hdf5_hl.h"
+#ifdef _OPENMP
+#include <omp.h>
+#endif /* _OPENMP */
+
+#ifdef PYREX_WITHOUT_ASSERTIONS
+#define CYTHON_WITHOUT_ASSERTIONS
+#endif
+
+#ifndef CYTHON_INLINE
+  #if defined(__GNUC__)
+    #define CYTHON_INLINE __inline__
+  #elif defined(_MSC_VER)
+    #define CYTHON_INLINE __inline
+  #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+    #define CYTHON_INLINE inline
+  #else
+    #define CYTHON_INLINE
+  #endif
+#endif
+#ifndef CYTHON_UNUSED
+# if defined(__GNUC__)
+#   if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
+#     define CYTHON_UNUSED __attribute__ ((__unused__))
+#   else
+#     define CYTHON_UNUSED
+#   endif
+# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER))
+#   define CYTHON_UNUSED __attribute__ ((__unused__))
+# else
+#   define CYTHON_UNUSED
+# endif
+#endif
+typedef struct {PyObject **p; char *s; const long n; const char* encoding; const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; /*proto*/
+
+#define __Pyx_PyBytes_FromUString(s) PyBytes_FromString((char*)s)
+#define __Pyx_PyBytes_AsUString(s)   ((unsigned char*) PyBytes_AsString(s))
+#define __Pyx_Owned_Py_None(b) (Py_INCREF(Py_None), Py_None)
+#define __Pyx_PyBool_FromLong(b) ((b) ? (Py_INCREF(Py_True), Py_True) : (Py_INCREF(Py_False), Py_False))
+static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*);
+static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x);
+static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*);
+static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t);
+static CYTHON_INLINE size_t __Pyx_PyInt_AsSize_t(PyObject*);
+#if CYTHON_COMPILING_IN_CPYTHON
+#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x))
+#else
+#define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x)
+#endif
+#define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x))
+
+
+#ifdef __GNUC__
+  /* Test for GCC > 2.95 */
+  #if __GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))
+    #define likely(x)   __builtin_expect(!!(x), 1)
+    #define unlikely(x) __builtin_expect(!!(x), 0)
+  #else /* __GNUC__ > 2 ... */
+    #define likely(x)   (x)
+    #define unlikely(x) (x)
+  #endif /* __GNUC__ > 2 ... */
+#else /* __GNUC__ */
+  #define likely(x)   (x)
+  #define unlikely(x) (x)
+#endif /* __GNUC__ */
+    
+static PyObject *__pyx_m;
+static PyObject *__pyx_b;
+static PyObject *__pyx_empty_tuple;
+static PyObject *__pyx_empty_bytes;
+static int __pyx_lineno;
+static int __pyx_clineno = 0;
+static const char * __pyx_cfilenm= __FILE__;
+static const char *__pyx_filename;
+
+
+static const char *__pyx_f[] = {
+  "h5ac.pyx",
+  "_objects.pxd",
+};
+
+/*--- Type declarations ---*/
+struct __pyx_obj_4h5py_4h5ac_CacheConfig;
+struct __pyx_obj_4h5py_8_objects_ObjectID;
+
+/* "h5py/h5ac.pxd":12
+ * from defs cimport *
+ * 
+ * cdef class CacheConfig:             # <<<<<<<<<<<<<<
+ *     cdef H5AC_cache_config_t cache_config
+ */
+struct __pyx_obj_4h5py_4h5ac_CacheConfig {
+  PyObject_HEAD
+  H5AC_cache_config_t cache_config;
+};
+
+struct __pyx_obj_4h5py_8_objects_ObjectID {
+  PyObject_HEAD
+  PyObject *__weakref__;
+  hid_t id;
+  int locked;
+  PyObject *_hash;
+};
+
+#ifndef CYTHON_REFNANNY
+  #define CYTHON_REFNANNY 0
+#endif
+#if CYTHON_REFNANNY
+  typedef struct {
+    void (*INCREF)(void*, PyObject*, int);
+    void (*DECREF)(void*, PyObject*, int);
+    void (*GOTREF)(void*, PyObject*, int);
+    void (*GIVEREF)(void*, PyObject*, int);
+    void* (*SetupContext)(const char*, int, const char*);
+    void (*FinishContext)(void**);
+  } __Pyx_RefNannyAPIStruct;
+  static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL;
+  static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); /*proto*/
+  #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL;
+#ifdef WITH_THREAD
+  #define __Pyx_RefNannySetupContext(name, acquire_gil) \
+          if (acquire_gil) { \
+              PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); \
+              __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__); \
+              PyGILState_Release(__pyx_gilstate_save); \
+          } else { \
+              __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__); \
+          }
+#else
+  #define __Pyx_RefNannySetupContext(name, acquire_gil) \
+          __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__)
+#endif
+  #define __Pyx_RefNannyFinishContext() \
+          __Pyx_RefNanny->FinishContext(&__pyx_refnanny)
+  #define __Pyx_INCREF(r)  __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_DECREF(r)  __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_GOTREF(r)  __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_XINCREF(r)  do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0)
+  #define __Pyx_XDECREF(r)  do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0)
+  #define __Pyx_XGOTREF(r)  do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0)
+  #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0)
+#else
+  #define __Pyx_RefNannyDeclarations
+  #define __Pyx_RefNannySetupContext(name, acquire_gil)
+  #define __Pyx_RefNannyFinishContext()
+  #define __Pyx_INCREF(r) Py_INCREF(r)
+  #define __Pyx_DECREF(r) Py_DECREF(r)
+  #define __Pyx_GOTREF(r)
+  #define __Pyx_GIVEREF(r)
+  #define __Pyx_XINCREF(r) Py_XINCREF(r)
+  #define __Pyx_XDECREF(r) Py_XDECREF(r)
+  #define __Pyx_XGOTREF(r)
+  #define __Pyx_XGIVEREF(r)
+#endif /* CYTHON_REFNANNY */
+#define __Pyx_CLEAR(r)    do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0)
+#define __Pyx_XCLEAR(r)   do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0)
+
+static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact,
+    Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); /*proto*/
+
+static CYTHON_INLINE int __Pyx_CheckKeywordStrings(PyObject *kwdict, const char* function_name, int kw_allowed); /*proto*/
+
+static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level); /*proto*/
+
+static CYTHON_INLINE void __Pyx_RaiseImportError(PyObject *name);
+
+static CYTHON_INLINE hbool_t __Pyx_PyInt_from_py_hbool_t(PyObject *);
+
+static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_hbool_t(hbool_t);
+
+static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_hid_t(hid_t);
+
+static CYTHON_INLINE unsigned char __Pyx_PyInt_AsUnsignedChar(PyObject *);
+
+static CYTHON_INLINE unsigned short __Pyx_PyInt_AsUnsignedShort(PyObject *);
+
+static CYTHON_INLINE unsigned int __Pyx_PyInt_AsUnsignedInt(PyObject *);
+
+static CYTHON_INLINE char __Pyx_PyInt_AsChar(PyObject *);
+
+static CYTHON_INLINE short __Pyx_PyInt_AsShort(PyObject *);
+
+static CYTHON_INLINE int __Pyx_PyInt_AsInt(PyObject *);
+
+static CYTHON_INLINE signed char __Pyx_PyInt_AsSignedChar(PyObject *);
+
+static CYTHON_INLINE signed short __Pyx_PyInt_AsSignedShort(PyObject *);
+
+static CYTHON_INLINE signed int __Pyx_PyInt_AsSignedInt(PyObject *);
+
+static CYTHON_INLINE int __Pyx_PyInt_AsLongDouble(PyObject *);
+
+static CYTHON_INLINE unsigned long __Pyx_PyInt_AsUnsignedLong(PyObject *);
+
+static CYTHON_INLINE unsigned PY_LONG_LONG __Pyx_PyInt_AsUnsignedLongLong(PyObject *);
+
+static CYTHON_INLINE long __Pyx_PyInt_AsLong(PyObject *);
+
+static CYTHON_INLINE PY_LONG_LONG __Pyx_PyInt_AsLongLong(PyObject *);
+
+static CYTHON_INLINE signed long __Pyx_PyInt_AsSignedLong(PyObject *);
+
+static CYTHON_INLINE signed PY_LONG_LONG __Pyx_PyInt_AsSignedLongLong(PyObject *);
+
+static int __Pyx_check_binary_version(void);
+
+#if !defined(__Pyx_PyIdentifier_FromString)
+#if PY_MAJOR_VERSION < 3
+  #define __Pyx_PyIdentifier_FromString(s) PyString_FromString(s)
+#else
+  #define __Pyx_PyIdentifier_FromString(s) PyUnicode_FromString(s)
+#endif
+#endif
+
+static PyObject *__Pyx_ImportModule(const char *name); /*proto*/
+
+static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name, size_t size, int strict);  /*proto*/
+
+static int __Pyx_ImportFunction(PyObject *module, const char *funcname, void (**f)(void), const char *sig); /*proto*/
+
+typedef struct {
+    int code_line;
+    PyCodeObject* code_object;
+} __Pyx_CodeObjectCacheEntry;
+struct __Pyx_CodeObjectCache {
+    int count;
+    int max_count;
+    __Pyx_CodeObjectCacheEntry* entries;
+};
+static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL};
+static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line);
+static PyCodeObject *__pyx_find_code_object(int code_line);
+static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object);
+
+static void __Pyx_AddTraceback(const char *funcname, int c_line,
+                               int py_line, const char *filename); /*proto*/
+
+static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); /*proto*/
+
+
+/* Module declarations from 'h5py.api_types_ext' */
+
+/* Module declarations from 'h5py.api_types_hdf5' */
+
+/* Module declarations from 'h5py.defs' */
+
+/* Module declarations from 'h5py._objects' */
+static PyTypeObject *__pyx_ptype_4h5py_8_objects_ObjectID = 0;
+static hid_t (*__pyx_f_4h5py_8_objects_pdefault)(struct __pyx_obj_4h5py_8_objects_ObjectID *); /*proto*/
+
+/* Module declarations from 'h5py.h5ac' */
+static PyTypeObject *__pyx_ptype_4h5py_4h5ac_CacheConfig = 0;
+#define __Pyx_MODULE_NAME "h5py.h5ac"
+int __pyx_module_is_main_h5py__h5ac = 0;
+
+/* Implementation of 'h5py.h5ac' */
+static int __pyx_pf_4h5py_4h5ac_11CacheConfig___cinit__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_4h5ac_11CacheConfig_7version___get__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self); /* proto */
+static int __pyx_pf_4h5py_4h5ac_11CacheConfig_7version_2__set__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self, int __pyx_v_val); /* proto */
+static PyObject *__pyx_pf_4h5py_4h5ac_11CacheConfig_15rpt_fcn_enabled___get__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self); /* proto */
+static int __pyx_pf_4h5py_4h5ac_11CacheConfig_15rpt_fcn_enabled_2__set__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self, hbool_t __pyx_v_val); /* proto */
+static PyObject *__pyx_pf_4h5py_4h5ac_11CacheConfig_17evictions_enabled___get__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self); /* proto */
+static int __pyx_pf_4h5py_4h5ac_11CacheConfig_17evictions_enabled_2__set__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self, hbool_t __pyx_v_val); /* proto */
+static PyObject *__pyx_pf_4h5py_4h5ac_11CacheConfig_16set_initial_size___get__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self); /* proto */
+static int __pyx_pf_4h5py_4h5ac_11CacheConfig_16set_initial_size_2__set__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self, hbool_t __pyx_v_val); /* proto */
+static PyObject *__pyx_pf_4h5py_4h5ac_11CacheConfig_12initial_size___get__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self); /* proto */
+static int __pyx_pf_4h5py_4h5ac_11CacheConfig_12initial_size_2__set__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self, size_t __pyx_v_val); /* proto */
+static PyObject *__pyx_pf_4h5py_4h5ac_11CacheConfig_18min_clean_fraction___get__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self); /* proto */
+static int __pyx_pf_4h5py_4h5ac_11CacheConfig_18min_clean_fraction_2__set__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self, double __pyx_v_val); /* proto */
+static PyObject *__pyx_pf_4h5py_4h5ac_11CacheConfig_8max_size___get__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self); /* proto */
+static int __pyx_pf_4h5py_4h5ac_11CacheConfig_8max_size_2__set__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self, size_t __pyx_v_val); /* proto */
+static PyObject *__pyx_pf_4h5py_4h5ac_11CacheConfig_8min_size___get__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self); /* proto */
+static int __pyx_pf_4h5py_4h5ac_11CacheConfig_8min_size_2__set__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self, size_t __pyx_v_val); /* proto */
+static PyObject *__pyx_pf_4h5py_4h5ac_11CacheConfig_12epoch_length___get__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self); /* proto */
+static int __pyx_pf_4h5py_4h5ac_11CacheConfig_12epoch_length_2__set__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self, long __pyx_v_val); /* proto */
+static PyObject *__pyx_pf_4h5py_4h5ac_11CacheConfig_9incr_mode___get__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self); /* proto */
+static int __pyx_pf_4h5py_4h5ac_11CacheConfig_9incr_mode_2__set__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self, enum H5C_cache_incr_mode __pyx_v_val); /* proto */
+static PyObject *__pyx_pf_4h5py_4h5ac_11CacheConfig_18lower_hr_threshold___get__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self); /* proto */
+static int __pyx_pf_4h5py_4h5ac_11CacheConfig_18lower_hr_threshold_2__set__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self, double __pyx_v_val); /* proto */
+static PyObject *__pyx_pf_4h5py_4h5ac_11CacheConfig_9increment___get__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self); /* proto */
+static int __pyx_pf_4h5py_4h5ac_11CacheConfig_9increment_2__set__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self, double __pyx_v_val); /* proto */
+static PyObject *__pyx_pf_4h5py_4h5ac_11CacheConfig_19apply_max_increment___get__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self); /* proto */
+static int __pyx_pf_4h5py_4h5ac_11CacheConfig_19apply_max_increment_2__set__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self, hbool_t __pyx_v_val); /* proto */
+static PyObject *__pyx_pf_4h5py_4h5ac_11CacheConfig_13max_increment___get__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self); /* proto */
+static int __pyx_pf_4h5py_4h5ac_11CacheConfig_13max_increment_2__set__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self, size_t __pyx_v_val); /* proto */
+static PyObject *__pyx_pf_4h5py_4h5ac_11CacheConfig_15flash_incr_mode___get__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self); /* proto */
+static int __pyx_pf_4h5py_4h5ac_11CacheConfig_15flash_incr_mode_2__set__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self, enum H5C_cache_flash_incr_mode __pyx_v_val); /* proto */
+static PyObject *__pyx_pf_4h5py_4h5ac_11CacheConfig_14flash_multiple___get__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self); /* proto */
+static int __pyx_pf_4h5py_4h5ac_11CacheConfig_14flash_multiple_2__set__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self, double __pyx_v_val); /* proto */
+static PyObject *__pyx_pf_4h5py_4h5ac_11CacheConfig_15flash_threshold___get__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self); /* proto */
+static int __pyx_pf_4h5py_4h5ac_11CacheConfig_15flash_threshold_2__set__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self, double __pyx_v_val); /* proto */
+static PyObject *__pyx_pf_4h5py_4h5ac_11CacheConfig_9decr_mode___get__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self); /* proto */
+static int __pyx_pf_4h5py_4h5ac_11CacheConfig_9decr_mode_2__set__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self, enum H5C_cache_decr_mode __pyx_v_val); /* proto */
+static PyObject *__pyx_pf_4h5py_4h5ac_11CacheConfig_18upper_hr_threshold___get__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self); /* proto */
+static int __pyx_pf_4h5py_4h5ac_11CacheConfig_18upper_hr_threshold_2__set__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self, double __pyx_v_val); /* proto */
+static PyObject *__pyx_pf_4h5py_4h5ac_11CacheConfig_9decrement___get__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self); /* proto */
+static int __pyx_pf_4h5py_4h5ac_11CacheConfig_9decrement_2__set__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self, double __pyx_v_val); /* proto */
+static PyObject *__pyx_pf_4h5py_4h5ac_11CacheConfig_19apply_max_decrement___get__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self); /* proto */
+static int __pyx_pf_4h5py_4h5ac_11CacheConfig_19apply_max_decrement_2__set__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self, hbool_t __pyx_v_val); /* proto */
+static PyObject *__pyx_pf_4h5py_4h5ac_11CacheConfig_13max_decrement___get__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self); /* proto */
+static int __pyx_pf_4h5py_4h5ac_11CacheConfig_13max_decrement_2__set__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self, size_t __pyx_v_val); /* proto */
+static PyObject *__pyx_pf_4h5py_4h5ac_11CacheConfig_22epochs_before_eviction___get__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self); /* proto */
+static int __pyx_pf_4h5py_4h5ac_11CacheConfig_22epochs_before_eviction_2__set__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self, int __pyx_v_val); /* proto */
+static PyObject *__pyx_pf_4h5py_4h5ac_11CacheConfig_19apply_empty_reserve___get__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self); /* proto */
+static int __pyx_pf_4h5py_4h5ac_11CacheConfig_19apply_empty_reserve_2__set__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self, hbool_t __pyx_v_val); /* proto */
+static PyObject *__pyx_pf_4h5py_4h5ac_11CacheConfig_13empty_reserve___get__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self); /* proto */
+static int __pyx_pf_4h5py_4h5ac_11CacheConfig_13empty_reserve_2__set__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self, double __pyx_v_val); /* proto */
+static PyObject *__pyx_pf_4h5py_4h5ac_11CacheConfig_21dirty_bytes_threshold___get__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self); /* proto */
+static int __pyx_pf_4h5py_4h5ac_11CacheConfig_21dirty_bytes_threshold_2__set__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self, int __pyx_v_val); /* proto */
+static char __pyx_k_1[] = "\n    Low-level HDF5 \"H5AC\" cache configuration interface.\n";
+static char __pyx_k__h5py[] = "h5py";
+static char __pyx_k____main__[] = "__main__";
+static char __pyx_k____test__[] = "__test__";
+static char __pyx_k___objects[] = "_objects";
+static PyObject *__pyx_n_s____main__;
+static PyObject *__pyx_n_s____test__;
+static PyObject *__pyx_n_s___objects;
+static PyObject *__pyx_n_s__h5py;
+
+/* Python wrapper */
+static int __pyx_pw_4h5py_4h5ac_11CacheConfig_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_4h5py_4h5ac_11CacheConfig_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
+  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
+    __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
+  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;
+  __pyx_r = __pyx_pf_4h5py_4h5ac_11CacheConfig___cinit__(((struct __pyx_obj_4h5py_4h5ac_CacheConfig *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5ac.pyx":24
+ *     #cdef H5AC_cache_config_t cache_config
+ *     #     /[inserted by cython to avoid comment start]* general configuration fields: *[inserted by cython to avoid comment closer]/
+ *     def __cinit__(self):             # <<<<<<<<<<<<<<
+ *         self.cache_config.version = H5AC__CURR_CACHE_CONFIG_VERSION
+ * 
+ */
+
+static int __pyx_pf_4h5py_4h5ac_11CacheConfig___cinit__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__cinit__", 0);
+
+  /* "h5py/h5ac.pyx":25
+ *     #     /[inserted by cython to avoid comment start]* general configuration fields: *[inserted by cython to avoid comment closer]/
+ *     def __cinit__(self):
+ *         self.cache_config.version = H5AC__CURR_CACHE_CONFIG_VERSION             # <<<<<<<<<<<<<<
+ * 
+ *     property version:
+ */
+  __pyx_v_self->cache_config.version = H5AC__CURR_CACHE_CONFIG_VERSION;
+
+  __pyx_r = 0;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_4h5ac_11CacheConfig_7version_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4h5py_4h5ac_11CacheConfig_7version_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_4h5ac_11CacheConfig_7version___get__(((struct __pyx_obj_4h5py_4h5ac_CacheConfig *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5ac.pyx":28
+ * 
+ *     property version:
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.cache_config.version
+ *         def __set__(self, int val):
+ */
+
+static PyObject *__pyx_pf_4h5py_4h5ac_11CacheConfig_7version___get__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "h5py/h5ac.pyx":29
+ *     property version:
+ *         def __get__(self):
+ *             return self.cache_config.version             # <<<<<<<<<<<<<<
+ *         def __set__(self, int val):
+ *             self.cache_config.version = val
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyInt_FromLong(__pyx_v_self->cache_config.version); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py.h5ac.CacheConfig.version.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static int __pyx_pw_4h5py_4h5ac_11CacheConfig_7version_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_val); /*proto*/
+static int __pyx_pw_4h5py_4h5ac_11CacheConfig_7version_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_val) {
+  int __pyx_v_val;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
+  assert(__pyx_arg_val); {
+    __pyx_v_val = __Pyx_PyInt_AsInt(__pyx_arg_val); if (unlikely((__pyx_v_val == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5ac.CacheConfig.version.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return -1;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_4h5ac_11CacheConfig_7version_2__set__(((struct __pyx_obj_4h5py_4h5ac_CacheConfig *)__pyx_v_self), ((int)__pyx_v_val));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5ac.pyx":30
+ *         def __get__(self):
+ *             return self.cache_config.version
+ *         def __set__(self, int val):             # <<<<<<<<<<<<<<
+ *             self.cache_config.version = val
+ * 
+ */
+
+static int __pyx_pf_4h5py_4h5ac_11CacheConfig_7version_2__set__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self, int __pyx_v_val) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__set__", 0);
+
+  /* "h5py/h5ac.pyx":31
+ *             return self.cache_config.version
+ *         def __set__(self, int val):
+ *             self.cache_config.version = val             # <<<<<<<<<<<<<<
+ * 
+ *     property rpt_fcn_enabled:
+ */
+  __pyx_v_self->cache_config.version = __pyx_v_val;
+
+  __pyx_r = 0;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_4h5ac_11CacheConfig_15rpt_fcn_enabled_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4h5py_4h5ac_11CacheConfig_15rpt_fcn_enabled_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_4h5ac_11CacheConfig_15rpt_fcn_enabled___get__(((struct __pyx_obj_4h5py_4h5ac_CacheConfig *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5ac.pyx":34
+ * 
+ *     property rpt_fcn_enabled:
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.cache_config.rpt_fcn_enabled
+ *         def __set__(self, hbool_t val):
+ */
+
+static PyObject *__pyx_pf_4h5py_4h5ac_11CacheConfig_15rpt_fcn_enabled___get__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "h5py/h5ac.pyx":35
+ *     property rpt_fcn_enabled:
+ *         def __get__(self):
+ *             return self.cache_config.rpt_fcn_enabled             # <<<<<<<<<<<<<<
+ *         def __set__(self, hbool_t val):
+ *             self.cache_config.rpt_fcn_enabled = val
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_to_py_hbool_t(__pyx_v_self->cache_config.rpt_fcn_enabled); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py.h5ac.CacheConfig.rpt_fcn_enabled.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static int __pyx_pw_4h5py_4h5ac_11CacheConfig_15rpt_fcn_enabled_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_val); /*proto*/
+static int __pyx_pw_4h5py_4h5ac_11CacheConfig_15rpt_fcn_enabled_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_val) {
+  hbool_t __pyx_v_val;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
+  assert(__pyx_arg_val); {
+    __pyx_v_val = __Pyx_PyInt_from_py_hbool_t(__pyx_arg_val); if (unlikely((__pyx_v_val == (hbool_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5ac.CacheConfig.rpt_fcn_enabled.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return -1;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_4h5ac_11CacheConfig_15rpt_fcn_enabled_2__set__(((struct __pyx_obj_4h5py_4h5ac_CacheConfig *)__pyx_v_self), ((hbool_t)__pyx_v_val));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5ac.pyx":36
+ *         def __get__(self):
+ *             return self.cache_config.rpt_fcn_enabled
+ *         def __set__(self, hbool_t val):             # <<<<<<<<<<<<<<
+ *             self.cache_config.rpt_fcn_enabled = val
+ * 
+ */
+
+static int __pyx_pf_4h5py_4h5ac_11CacheConfig_15rpt_fcn_enabled_2__set__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self, hbool_t __pyx_v_val) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__set__", 0);
+
+  /* "h5py/h5ac.pyx":37
+ *             return self.cache_config.rpt_fcn_enabled
+ *         def __set__(self, hbool_t val):
+ *             self.cache_config.rpt_fcn_enabled = val             # <<<<<<<<<<<<<<
+ * 
+ *     property evictions_enabled:
+ */
+  __pyx_v_self->cache_config.rpt_fcn_enabled = __pyx_v_val;
+
+  __pyx_r = 0;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_4h5ac_11CacheConfig_17evictions_enabled_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4h5py_4h5ac_11CacheConfig_17evictions_enabled_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_4h5ac_11CacheConfig_17evictions_enabled___get__(((struct __pyx_obj_4h5py_4h5ac_CacheConfig *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5ac.pyx":40
+ * 
+ *     property evictions_enabled:
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.cache_config.evictions_enabled
+ *         def __set__(self, hbool_t val):
+ */
+
+static PyObject *__pyx_pf_4h5py_4h5ac_11CacheConfig_17evictions_enabled___get__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "h5py/h5ac.pyx":41
+ *     property evictions_enabled:
+ *         def __get__(self):
+ *             return self.cache_config.evictions_enabled             # <<<<<<<<<<<<<<
+ *         def __set__(self, hbool_t val):
+ *             self.cache_config.evictions_enabled = val
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_to_py_hbool_t(__pyx_v_self->cache_config.evictions_enabled); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py.h5ac.CacheConfig.evictions_enabled.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static int __pyx_pw_4h5py_4h5ac_11CacheConfig_17evictions_enabled_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_val); /*proto*/
+static int __pyx_pw_4h5py_4h5ac_11CacheConfig_17evictions_enabled_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_val) {
+  hbool_t __pyx_v_val;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
+  assert(__pyx_arg_val); {
+    __pyx_v_val = __Pyx_PyInt_from_py_hbool_t(__pyx_arg_val); if (unlikely((__pyx_v_val == (hbool_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 42; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5ac.CacheConfig.evictions_enabled.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return -1;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_4h5ac_11CacheConfig_17evictions_enabled_2__set__(((struct __pyx_obj_4h5py_4h5ac_CacheConfig *)__pyx_v_self), ((hbool_t)__pyx_v_val));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5ac.pyx":42
+ *         def __get__(self):
+ *             return self.cache_config.evictions_enabled
+ *         def __set__(self, hbool_t val):             # <<<<<<<<<<<<<<
+ *             self.cache_config.evictions_enabled = val
+ * 
+ */
+
+static int __pyx_pf_4h5py_4h5ac_11CacheConfig_17evictions_enabled_2__set__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self, hbool_t __pyx_v_val) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__set__", 0);
+
+  /* "h5py/h5ac.pyx":43
+ *             return self.cache_config.evictions_enabled
+ *         def __set__(self, hbool_t val):
+ *             self.cache_config.evictions_enabled = val             # <<<<<<<<<<<<<<
+ * 
+ *     property set_initial_size:
+ */
+  __pyx_v_self->cache_config.evictions_enabled = __pyx_v_val;
+
+  __pyx_r = 0;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_4h5ac_11CacheConfig_16set_initial_size_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4h5py_4h5ac_11CacheConfig_16set_initial_size_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_4h5ac_11CacheConfig_16set_initial_size___get__(((struct __pyx_obj_4h5py_4h5ac_CacheConfig *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5ac.pyx":46
+ * 
+ *     property set_initial_size:
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.cache_config.set_initial_size
+ *         def __set__(self, hbool_t val):
+ */
+
+static PyObject *__pyx_pf_4h5py_4h5ac_11CacheConfig_16set_initial_size___get__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "h5py/h5ac.pyx":47
+ *     property set_initial_size:
+ *         def __get__(self):
+ *             return self.cache_config.set_initial_size             # <<<<<<<<<<<<<<
+ *         def __set__(self, hbool_t val):
+ *             self.cache_config.set_initial_size = val
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_to_py_hbool_t(__pyx_v_self->cache_config.set_initial_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py.h5ac.CacheConfig.set_initial_size.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static int __pyx_pw_4h5py_4h5ac_11CacheConfig_16set_initial_size_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_val); /*proto*/
+static int __pyx_pw_4h5py_4h5ac_11CacheConfig_16set_initial_size_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_val) {
+  hbool_t __pyx_v_val;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
+  assert(__pyx_arg_val); {
+    __pyx_v_val = __Pyx_PyInt_from_py_hbool_t(__pyx_arg_val); if (unlikely((__pyx_v_val == (hbool_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5ac.CacheConfig.set_initial_size.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return -1;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_4h5ac_11CacheConfig_16set_initial_size_2__set__(((struct __pyx_obj_4h5py_4h5ac_CacheConfig *)__pyx_v_self), ((hbool_t)__pyx_v_val));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5ac.pyx":48
+ *         def __get__(self):
+ *             return self.cache_config.set_initial_size
+ *         def __set__(self, hbool_t val):             # <<<<<<<<<<<<<<
+ *             self.cache_config.set_initial_size = val
+ * 
+ */
+
+static int __pyx_pf_4h5py_4h5ac_11CacheConfig_16set_initial_size_2__set__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self, hbool_t __pyx_v_val) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__set__", 0);
+
+  /* "h5py/h5ac.pyx":49
+ *             return self.cache_config.set_initial_size
+ *         def __set__(self, hbool_t val):
+ *             self.cache_config.set_initial_size = val             # <<<<<<<<<<<<<<
+ * 
+ *     property initial_size:
+ */
+  __pyx_v_self->cache_config.set_initial_size = __pyx_v_val;
+
+  __pyx_r = 0;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_4h5ac_11CacheConfig_12initial_size_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4h5py_4h5ac_11CacheConfig_12initial_size_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_4h5ac_11CacheConfig_12initial_size___get__(((struct __pyx_obj_4h5py_4h5ac_CacheConfig *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5ac.pyx":52
+ * 
+ *     property initial_size:
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.cache_config.initial_size
+ *         def __set__(self, size_t val):
+ */
+
+static PyObject *__pyx_pf_4h5py_4h5ac_11CacheConfig_12initial_size___get__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "h5py/h5ac.pyx":53
+ *     property initial_size:
+ *         def __get__(self):
+ *             return self.cache_config.initial_size             # <<<<<<<<<<<<<<
+ *         def __set__(self, size_t val):
+ *             self.cache_config.initial_size = val
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_self->cache_config.initial_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py.h5ac.CacheConfig.initial_size.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static int __pyx_pw_4h5py_4h5ac_11CacheConfig_12initial_size_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_val); /*proto*/
+static int __pyx_pw_4h5py_4h5ac_11CacheConfig_12initial_size_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_val) {
+  size_t __pyx_v_val;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
+  assert(__pyx_arg_val); {
+    __pyx_v_val = __Pyx_PyInt_AsSize_t(__pyx_arg_val); if (unlikely((__pyx_v_val == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5ac.CacheConfig.initial_size.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return -1;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_4h5ac_11CacheConfig_12initial_size_2__set__(((struct __pyx_obj_4h5py_4h5ac_CacheConfig *)__pyx_v_self), ((size_t)__pyx_v_val));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5ac.pyx":54
+ *         def __get__(self):
+ *             return self.cache_config.initial_size
+ *         def __set__(self, size_t val):             # <<<<<<<<<<<<<<
+ *             self.cache_config.initial_size = val
+ * 
+ */
+
+static int __pyx_pf_4h5py_4h5ac_11CacheConfig_12initial_size_2__set__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self, size_t __pyx_v_val) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__set__", 0);
+
+  /* "h5py/h5ac.pyx":55
+ *             return self.cache_config.initial_size
+ *         def __set__(self, size_t val):
+ *             self.cache_config.initial_size = val             # <<<<<<<<<<<<<<
+ * 
+ *     property min_clean_fraction:
+ */
+  __pyx_v_self->cache_config.initial_size = __pyx_v_val;
+
+  __pyx_r = 0;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_4h5ac_11CacheConfig_18min_clean_fraction_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4h5py_4h5ac_11CacheConfig_18min_clean_fraction_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_4h5ac_11CacheConfig_18min_clean_fraction___get__(((struct __pyx_obj_4h5py_4h5ac_CacheConfig *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5ac.pyx":58
+ * 
+ *     property min_clean_fraction:
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.cache_config.min_clean_fraction
+ *         def __set__(self, double val):
+ */
+
+static PyObject *__pyx_pf_4h5py_4h5ac_11CacheConfig_18min_clean_fraction___get__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "h5py/h5ac.pyx":59
+ *     property min_clean_fraction:
+ *         def __get__(self):
+ *             return self.cache_config.min_clean_fraction             # <<<<<<<<<<<<<<
+ *         def __set__(self, double val):
+ *             self.cache_config.min_clean_fraction = val
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->cache_config.min_clean_fraction); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py.h5ac.CacheConfig.min_clean_fraction.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static int __pyx_pw_4h5py_4h5ac_11CacheConfig_18min_clean_fraction_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_val); /*proto*/
+static int __pyx_pw_4h5py_4h5ac_11CacheConfig_18min_clean_fraction_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_val) {
+  double __pyx_v_val;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
+  assert(__pyx_arg_val); {
+    __pyx_v_val = __pyx_PyFloat_AsDouble(__pyx_arg_val); if (unlikely((__pyx_v_val == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5ac.CacheConfig.min_clean_fraction.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return -1;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_4h5ac_11CacheConfig_18min_clean_fraction_2__set__(((struct __pyx_obj_4h5py_4h5ac_CacheConfig *)__pyx_v_self), ((double)__pyx_v_val));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5ac.pyx":60
+ *         def __get__(self):
+ *             return self.cache_config.min_clean_fraction
+ *         def __set__(self, double val):             # <<<<<<<<<<<<<<
+ *             self.cache_config.min_clean_fraction = val
+ * 
+ */
+
+static int __pyx_pf_4h5py_4h5ac_11CacheConfig_18min_clean_fraction_2__set__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self, double __pyx_v_val) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__set__", 0);
+
+  /* "h5py/h5ac.pyx":61
+ *             return self.cache_config.min_clean_fraction
+ *         def __set__(self, double val):
+ *             self.cache_config.min_clean_fraction = val             # <<<<<<<<<<<<<<
+ * 
+ *     property max_size:
+ */
+  __pyx_v_self->cache_config.min_clean_fraction = __pyx_v_val;
+
+  __pyx_r = 0;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_4h5ac_11CacheConfig_8max_size_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4h5py_4h5ac_11CacheConfig_8max_size_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_4h5ac_11CacheConfig_8max_size___get__(((struct __pyx_obj_4h5py_4h5ac_CacheConfig *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5ac.pyx":64
+ * 
+ *     property max_size:
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.cache_config.max_size
+ *         def __set__(self, size_t val):
+ */
+
+static PyObject *__pyx_pf_4h5py_4h5ac_11CacheConfig_8max_size___get__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "h5py/h5ac.pyx":65
+ *     property max_size:
+ *         def __get__(self):
+ *             return self.cache_config.max_size             # <<<<<<<<<<<<<<
+ *         def __set__(self, size_t val):
+ *             self.cache_config.max_size = val
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_self->cache_config.max_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py.h5ac.CacheConfig.max_size.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static int __pyx_pw_4h5py_4h5ac_11CacheConfig_8max_size_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_val); /*proto*/
+static int __pyx_pw_4h5py_4h5ac_11CacheConfig_8max_size_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_val) {
+  size_t __pyx_v_val;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
+  assert(__pyx_arg_val); {
+    __pyx_v_val = __Pyx_PyInt_AsSize_t(__pyx_arg_val); if (unlikely((__pyx_v_val == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5ac.CacheConfig.max_size.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return -1;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_4h5ac_11CacheConfig_8max_size_2__set__(((struct __pyx_obj_4h5py_4h5ac_CacheConfig *)__pyx_v_self), ((size_t)__pyx_v_val));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5ac.pyx":66
+ *         def __get__(self):
+ *             return self.cache_config.max_size
+ *         def __set__(self, size_t val):             # <<<<<<<<<<<<<<
+ *             self.cache_config.max_size = val
+ * 
+ */
+
+static int __pyx_pf_4h5py_4h5ac_11CacheConfig_8max_size_2__set__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self, size_t __pyx_v_val) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__set__", 0);
+
+  /* "h5py/h5ac.pyx":67
+ *             return self.cache_config.max_size
+ *         def __set__(self, size_t val):
+ *             self.cache_config.max_size = val             # <<<<<<<<<<<<<<
+ * 
+ *     property min_size:
+ */
+  __pyx_v_self->cache_config.max_size = __pyx_v_val;
+
+  __pyx_r = 0;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_4h5ac_11CacheConfig_8min_size_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4h5py_4h5ac_11CacheConfig_8min_size_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_4h5ac_11CacheConfig_8min_size___get__(((struct __pyx_obj_4h5py_4h5ac_CacheConfig *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5ac.pyx":70
+ * 
+ *     property min_size:
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.cache_config.min_size
+ *         def __set__(self, size_t val):
+ */
+
+static PyObject *__pyx_pf_4h5py_4h5ac_11CacheConfig_8min_size___get__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "h5py/h5ac.pyx":71
+ *     property min_size:
+ *         def __get__(self):
+ *             return self.cache_config.min_size             # <<<<<<<<<<<<<<
+ *         def __set__(self, size_t val):
+ *             self.cache_config.min_size = val
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_self->cache_config.min_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py.h5ac.CacheConfig.min_size.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static int __pyx_pw_4h5py_4h5ac_11CacheConfig_8min_size_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_val); /*proto*/
+static int __pyx_pw_4h5py_4h5ac_11CacheConfig_8min_size_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_val) {
+  size_t __pyx_v_val;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
+  assert(__pyx_arg_val); {
+    __pyx_v_val = __Pyx_PyInt_AsSize_t(__pyx_arg_val); if (unlikely((__pyx_v_val == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5ac.CacheConfig.min_size.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return -1;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_4h5ac_11CacheConfig_8min_size_2__set__(((struct __pyx_obj_4h5py_4h5ac_CacheConfig *)__pyx_v_self), ((size_t)__pyx_v_val));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5ac.pyx":72
+ *         def __get__(self):
+ *             return self.cache_config.min_size
+ *         def __set__(self, size_t val):             # <<<<<<<<<<<<<<
+ *             self.cache_config.min_size = val
+ * 
+ */
+
+static int __pyx_pf_4h5py_4h5ac_11CacheConfig_8min_size_2__set__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self, size_t __pyx_v_val) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__set__", 0);
+
+  /* "h5py/h5ac.pyx":73
+ *             return self.cache_config.min_size
+ *         def __set__(self, size_t val):
+ *             self.cache_config.min_size = val             # <<<<<<<<<<<<<<
+ * 
+ *     property epoch_length:
+ */
+  __pyx_v_self->cache_config.min_size = __pyx_v_val;
+
+  __pyx_r = 0;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_4h5ac_11CacheConfig_12epoch_length_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4h5py_4h5ac_11CacheConfig_12epoch_length_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_4h5ac_11CacheConfig_12epoch_length___get__(((struct __pyx_obj_4h5py_4h5ac_CacheConfig *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5ac.pyx":76
+ * 
+ *     property epoch_length:
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.cache_config.epoch_length
+ *         def __set__(self, long int val):
+ */
+
+static PyObject *__pyx_pf_4h5py_4h5ac_11CacheConfig_12epoch_length___get__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "h5py/h5ac.pyx":77
+ *     property epoch_length:
+ *         def __get__(self):
+ *             return self.cache_config.epoch_length             # <<<<<<<<<<<<<<
+ *         def __set__(self, long int val):
+ *             self.cache_config.epoch_length = val
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyInt_FromLong(__pyx_v_self->cache_config.epoch_length); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py.h5ac.CacheConfig.epoch_length.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static int __pyx_pw_4h5py_4h5ac_11CacheConfig_12epoch_length_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_val); /*proto*/
+static int __pyx_pw_4h5py_4h5ac_11CacheConfig_12epoch_length_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_val) {
+  long __pyx_v_val;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
+  assert(__pyx_arg_val); {
+    __pyx_v_val = __Pyx_PyInt_AsLong(__pyx_arg_val); if (unlikely((__pyx_v_val == (long)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5ac.CacheConfig.epoch_length.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return -1;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_4h5ac_11CacheConfig_12epoch_length_2__set__(((struct __pyx_obj_4h5py_4h5ac_CacheConfig *)__pyx_v_self), ((long)__pyx_v_val));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5ac.pyx":78
+ *         def __get__(self):
+ *             return self.cache_config.epoch_length
+ *         def __set__(self, long int val):             # <<<<<<<<<<<<<<
+ *             self.cache_config.epoch_length = val
+ * 
+ */
+
+static int __pyx_pf_4h5py_4h5ac_11CacheConfig_12epoch_length_2__set__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self, long __pyx_v_val) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__set__", 0);
+
+  /* "h5py/h5ac.pyx":79
+ *             return self.cache_config.epoch_length
+ *         def __set__(self, long int val):
+ *             self.cache_config.epoch_length = val             # <<<<<<<<<<<<<<
+ * 
+ *     #    /[inserted by cython to avoid comment start]* size increase control fields: *[inserted by cython to avoid comment closer]/
+ */
+  __pyx_v_self->cache_config.epoch_length = __pyx_v_val;
+
+  __pyx_r = 0;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_4h5ac_11CacheConfig_9incr_mode_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4h5py_4h5ac_11CacheConfig_9incr_mode_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_4h5ac_11CacheConfig_9incr_mode___get__(((struct __pyx_obj_4h5py_4h5ac_CacheConfig *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5ac.pyx":83
+ *     #    /[inserted by cython to avoid comment start]* size increase control fields: *[inserted by cython to avoid comment closer]/
+ *     property incr_mode:
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.cache_config.incr_mode
+ *         def __set__(self, H5C_cache_incr_mode val):
+ */
+
+static PyObject *__pyx_pf_4h5py_4h5ac_11CacheConfig_9incr_mode___get__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "h5py/h5ac.pyx":84
+ *     property incr_mode:
+ *         def __get__(self):
+ *             return self.cache_config.incr_mode             # <<<<<<<<<<<<<<
+ *         def __set__(self, H5C_cache_incr_mode val):
+ *             self.cache_config.incr_mode = val
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyInt_FromLong(__pyx_v_self->cache_config.incr_mode); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py.h5ac.CacheConfig.incr_mode.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static int __pyx_pw_4h5py_4h5ac_11CacheConfig_9incr_mode_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_val); /*proto*/
+static int __pyx_pw_4h5py_4h5ac_11CacheConfig_9incr_mode_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_val) {
+  enum H5C_cache_incr_mode __pyx_v_val;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
+  assert(__pyx_arg_val); {
+    __pyx_v_val = ((enum H5C_cache_incr_mode)PyInt_AsLong(__pyx_arg_val)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5ac.CacheConfig.incr_mode.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return -1;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_4h5ac_11CacheConfig_9incr_mode_2__set__(((struct __pyx_obj_4h5py_4h5ac_CacheConfig *)__pyx_v_self), ((enum H5C_cache_incr_mode)__pyx_v_val));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5ac.pyx":85
+ *         def __get__(self):
+ *             return self.cache_config.incr_mode
+ *         def __set__(self, H5C_cache_incr_mode val):             # <<<<<<<<<<<<<<
+ *             self.cache_config.incr_mode = val
+ * 
+ */
+
+static int __pyx_pf_4h5py_4h5ac_11CacheConfig_9incr_mode_2__set__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self, enum H5C_cache_incr_mode __pyx_v_val) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__set__", 0);
+
+  /* "h5py/h5ac.pyx":86
+ *             return self.cache_config.incr_mode
+ *         def __set__(self, H5C_cache_incr_mode val):
+ *             self.cache_config.incr_mode = val             # <<<<<<<<<<<<<<
+ * 
+ *     property lower_hr_threshold:
+ */
+  __pyx_v_self->cache_config.incr_mode = __pyx_v_val;
+
+  __pyx_r = 0;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_4h5ac_11CacheConfig_18lower_hr_threshold_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4h5py_4h5ac_11CacheConfig_18lower_hr_threshold_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_4h5ac_11CacheConfig_18lower_hr_threshold___get__(((struct __pyx_obj_4h5py_4h5ac_CacheConfig *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5ac.pyx":89
+ * 
+ *     property lower_hr_threshold:
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.cache_config.lower_hr_threshold
+ *         def __set__(self, double val):
+ */
+
+static PyObject *__pyx_pf_4h5py_4h5ac_11CacheConfig_18lower_hr_threshold___get__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "h5py/h5ac.pyx":90
+ *     property lower_hr_threshold:
+ *         def __get__(self):
+ *             return self.cache_config.lower_hr_threshold             # <<<<<<<<<<<<<<
+ *         def __set__(self, double val):
+ *             self.cache_config.lower_hr_threshold = val
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->cache_config.lower_hr_threshold); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py.h5ac.CacheConfig.lower_hr_threshold.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static int __pyx_pw_4h5py_4h5ac_11CacheConfig_18lower_hr_threshold_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_val); /*proto*/
+static int __pyx_pw_4h5py_4h5ac_11CacheConfig_18lower_hr_threshold_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_val) {
+  double __pyx_v_val;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
+  assert(__pyx_arg_val); {
+    __pyx_v_val = __pyx_PyFloat_AsDouble(__pyx_arg_val); if (unlikely((__pyx_v_val == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5ac.CacheConfig.lower_hr_threshold.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return -1;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_4h5ac_11CacheConfig_18lower_hr_threshold_2__set__(((struct __pyx_obj_4h5py_4h5ac_CacheConfig *)__pyx_v_self), ((double)__pyx_v_val));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5ac.pyx":91
+ *         def __get__(self):
+ *             return self.cache_config.lower_hr_threshold
+ *         def __set__(self, double val):             # <<<<<<<<<<<<<<
+ *             self.cache_config.lower_hr_threshold = val
+ * 
+ */
+
+static int __pyx_pf_4h5py_4h5ac_11CacheConfig_18lower_hr_threshold_2__set__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self, double __pyx_v_val) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__set__", 0);
+
+  /* "h5py/h5ac.pyx":92
+ *             return self.cache_config.lower_hr_threshold
+ *         def __set__(self, double val):
+ *             self.cache_config.lower_hr_threshold = val             # <<<<<<<<<<<<<<
+ * 
+ *     property increment:
+ */
+  __pyx_v_self->cache_config.lower_hr_threshold = __pyx_v_val;
+
+  __pyx_r = 0;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_4h5ac_11CacheConfig_9increment_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4h5py_4h5ac_11CacheConfig_9increment_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_4h5ac_11CacheConfig_9increment___get__(((struct __pyx_obj_4h5py_4h5ac_CacheConfig *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5ac.pyx":95
+ * 
+ *     property increment:
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.cache_config.increment
+ *         def __set__(self, double val):
+ */
+
+static PyObject *__pyx_pf_4h5py_4h5ac_11CacheConfig_9increment___get__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "h5py/h5ac.pyx":96
+ *     property increment:
+ *         def __get__(self):
+ *             return self.cache_config.increment             # <<<<<<<<<<<<<<
+ *         def __set__(self, double val):
+ *             self.cache_config.increment = val
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->cache_config.increment); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py.h5ac.CacheConfig.increment.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static int __pyx_pw_4h5py_4h5ac_11CacheConfig_9increment_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_val); /*proto*/
+static int __pyx_pw_4h5py_4h5ac_11CacheConfig_9increment_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_val) {
+  double __pyx_v_val;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
+  assert(__pyx_arg_val); {
+    __pyx_v_val = __pyx_PyFloat_AsDouble(__pyx_arg_val); if (unlikely((__pyx_v_val == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5ac.CacheConfig.increment.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return -1;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_4h5ac_11CacheConfig_9increment_2__set__(((struct __pyx_obj_4h5py_4h5ac_CacheConfig *)__pyx_v_self), ((double)__pyx_v_val));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5ac.pyx":97
+ *         def __get__(self):
+ *             return self.cache_config.increment
+ *         def __set__(self, double val):             # <<<<<<<<<<<<<<
+ *             self.cache_config.increment = val
+ * 
+ */
+
+static int __pyx_pf_4h5py_4h5ac_11CacheConfig_9increment_2__set__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self, double __pyx_v_val) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__set__", 0);
+
+  /* "h5py/h5ac.pyx":98
+ *             return self.cache_config.increment
+ *         def __set__(self, double val):
+ *             self.cache_config.increment = val             # <<<<<<<<<<<<<<
+ * 
+ *     property apply_max_increment:
+ */
+  __pyx_v_self->cache_config.increment = __pyx_v_val;
+
+  __pyx_r = 0;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_4h5ac_11CacheConfig_19apply_max_increment_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4h5py_4h5ac_11CacheConfig_19apply_max_increment_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_4h5ac_11CacheConfig_19apply_max_increment___get__(((struct __pyx_obj_4h5py_4h5ac_CacheConfig *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5ac.pyx":101
+ * 
+ *     property apply_max_increment:
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.cache_config.apply_max_increment
+ *         def __set__(self, hbool_t val):
+ */
+
+static PyObject *__pyx_pf_4h5py_4h5ac_11CacheConfig_19apply_max_increment___get__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "h5py/h5ac.pyx":102
+ *     property apply_max_increment:
+ *         def __get__(self):
+ *             return self.cache_config.apply_max_increment             # <<<<<<<<<<<<<<
+ *         def __set__(self, hbool_t val):
+ *             self.cache_config.apply_max_increment = val
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_to_py_hbool_t(__pyx_v_self->cache_config.apply_max_increment); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py.h5ac.CacheConfig.apply_max_increment.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static int __pyx_pw_4h5py_4h5ac_11CacheConfig_19apply_max_increment_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_val); /*proto*/
+static int __pyx_pw_4h5py_4h5ac_11CacheConfig_19apply_max_increment_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_val) {
+  hbool_t __pyx_v_val;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
+  assert(__pyx_arg_val); {
+    __pyx_v_val = __Pyx_PyInt_from_py_hbool_t(__pyx_arg_val); if (unlikely((__pyx_v_val == (hbool_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5ac.CacheConfig.apply_max_increment.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return -1;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_4h5ac_11CacheConfig_19apply_max_increment_2__set__(((struct __pyx_obj_4h5py_4h5ac_CacheConfig *)__pyx_v_self), ((hbool_t)__pyx_v_val));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5ac.pyx":103
+ *         def __get__(self):
+ *             return self.cache_config.apply_max_increment
+ *         def __set__(self, hbool_t val):             # <<<<<<<<<<<<<<
+ *             self.cache_config.apply_max_increment = val
+ * 
+ */
+
+static int __pyx_pf_4h5py_4h5ac_11CacheConfig_19apply_max_increment_2__set__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self, hbool_t __pyx_v_val) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__set__", 0);
+
+  /* "h5py/h5ac.pyx":104
+ *             return self.cache_config.apply_max_increment
+ *         def __set__(self, hbool_t val):
+ *             self.cache_config.apply_max_increment = val             # <<<<<<<<<<<<<<
+ * 
+ *     property max_increment:
+ */
+  __pyx_v_self->cache_config.apply_max_increment = __pyx_v_val;
+
+  __pyx_r = 0;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_4h5ac_11CacheConfig_13max_increment_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4h5py_4h5ac_11CacheConfig_13max_increment_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_4h5ac_11CacheConfig_13max_increment___get__(((struct __pyx_obj_4h5py_4h5ac_CacheConfig *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5ac.pyx":107
+ * 
+ *     property max_increment:
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.cache_config.max_increment
+ *         def __set__(self, size_t val):
+ */
+
+static PyObject *__pyx_pf_4h5py_4h5ac_11CacheConfig_13max_increment___get__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "h5py/h5ac.pyx":108
+ *     property max_increment:
+ *         def __get__(self):
+ *             return self.cache_config.max_increment             # <<<<<<<<<<<<<<
+ *         def __set__(self, size_t val):
+ *             self.cache_config.max_increment = val
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_self->cache_config.max_increment); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 108; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py.h5ac.CacheConfig.max_increment.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static int __pyx_pw_4h5py_4h5ac_11CacheConfig_13max_increment_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_val); /*proto*/
+static int __pyx_pw_4h5py_4h5ac_11CacheConfig_13max_increment_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_val) {
+  size_t __pyx_v_val;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
+  assert(__pyx_arg_val); {
+    __pyx_v_val = __Pyx_PyInt_AsSize_t(__pyx_arg_val); if (unlikely((__pyx_v_val == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5ac.CacheConfig.max_increment.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return -1;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_4h5ac_11CacheConfig_13max_increment_2__set__(((struct __pyx_obj_4h5py_4h5ac_CacheConfig *)__pyx_v_self), ((size_t)__pyx_v_val));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5ac.pyx":109
+ *         def __get__(self):
+ *             return self.cache_config.max_increment
+ *         def __set__(self, size_t val):             # <<<<<<<<<<<<<<
+ *             self.cache_config.max_increment = val
+ * 
+ */
+
+static int __pyx_pf_4h5py_4h5ac_11CacheConfig_13max_increment_2__set__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self, size_t __pyx_v_val) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__set__", 0);
+
+  /* "h5py/h5ac.pyx":110
+ *             return self.cache_config.max_increment
+ *         def __set__(self, size_t val):
+ *             self.cache_config.max_increment = val             # <<<<<<<<<<<<<<
+ * 
+ *     property flash_incr_mode:
+ */
+  __pyx_v_self->cache_config.max_increment = __pyx_v_val;
+
+  __pyx_r = 0;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_4h5ac_11CacheConfig_15flash_incr_mode_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4h5py_4h5ac_11CacheConfig_15flash_incr_mode_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_4h5ac_11CacheConfig_15flash_incr_mode___get__(((struct __pyx_obj_4h5py_4h5ac_CacheConfig *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5ac.pyx":113
+ * 
+ *     property flash_incr_mode:
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.cache_config.flash_incr_mode
+ *         def __set__(self, H5C_cache_flash_incr_mode val):
+ */
+
+static PyObject *__pyx_pf_4h5py_4h5ac_11CacheConfig_15flash_incr_mode___get__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "h5py/h5ac.pyx":114
+ *     property flash_incr_mode:
+ *         def __get__(self):
+ *             return self.cache_config.flash_incr_mode             # <<<<<<<<<<<<<<
+ *         def __set__(self, H5C_cache_flash_incr_mode val):
+ *             self.cache_config.flash_incr_mode = val
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyInt_FromLong(__pyx_v_self->cache_config.flash_incr_mode); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py.h5ac.CacheConfig.flash_incr_mode.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static int __pyx_pw_4h5py_4h5ac_11CacheConfig_15flash_incr_mode_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_val); /*proto*/
+static int __pyx_pw_4h5py_4h5ac_11CacheConfig_15flash_incr_mode_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_val) {
+  enum H5C_cache_flash_incr_mode __pyx_v_val;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
+  assert(__pyx_arg_val); {
+    __pyx_v_val = ((enum H5C_cache_flash_incr_mode)PyInt_AsLong(__pyx_arg_val)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5ac.CacheConfig.flash_incr_mode.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return -1;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_4h5ac_11CacheConfig_15flash_incr_mode_2__set__(((struct __pyx_obj_4h5py_4h5ac_CacheConfig *)__pyx_v_self), ((enum H5C_cache_flash_incr_mode)__pyx_v_val));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5ac.pyx":115
+ *         def __get__(self):
+ *             return self.cache_config.flash_incr_mode
+ *         def __set__(self, H5C_cache_flash_incr_mode val):             # <<<<<<<<<<<<<<
+ *             self.cache_config.flash_incr_mode = val
+ * 
+ */
+
+static int __pyx_pf_4h5py_4h5ac_11CacheConfig_15flash_incr_mode_2__set__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self, enum H5C_cache_flash_incr_mode __pyx_v_val) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__set__", 0);
+
+  /* "h5py/h5ac.pyx":116
+ *             return self.cache_config.flash_incr_mode
+ *         def __set__(self, H5C_cache_flash_incr_mode val):
+ *             self.cache_config.flash_incr_mode = val             # <<<<<<<<<<<<<<
+ * 
+ *     property flash_multiple:
+ */
+  __pyx_v_self->cache_config.flash_incr_mode = __pyx_v_val;
+
+  __pyx_r = 0;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_4h5ac_11CacheConfig_14flash_multiple_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4h5py_4h5ac_11CacheConfig_14flash_multiple_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_4h5ac_11CacheConfig_14flash_multiple___get__(((struct __pyx_obj_4h5py_4h5ac_CacheConfig *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5ac.pyx":119
+ * 
+ *     property flash_multiple:
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.cache_config.flash_multiple
+ *         def __set__(self, double val):
+ */
+
+static PyObject *__pyx_pf_4h5py_4h5ac_11CacheConfig_14flash_multiple___get__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "h5py/h5ac.pyx":120
+ *     property flash_multiple:
+ *         def __get__(self):
+ *             return self.cache_config.flash_multiple             # <<<<<<<<<<<<<<
+ *         def __set__(self, double val):
+ *             self.cache_config.flash_multiple = val
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->cache_config.flash_multiple); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 120; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py.h5ac.CacheConfig.flash_multiple.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static int __pyx_pw_4h5py_4h5ac_11CacheConfig_14flash_multiple_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_val); /*proto*/
+static int __pyx_pw_4h5py_4h5ac_11CacheConfig_14flash_multiple_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_val) {
+  double __pyx_v_val;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
+  assert(__pyx_arg_val); {
+    __pyx_v_val = __pyx_PyFloat_AsDouble(__pyx_arg_val); if (unlikely((__pyx_v_val == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 121; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5ac.CacheConfig.flash_multiple.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return -1;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_4h5ac_11CacheConfig_14flash_multiple_2__set__(((struct __pyx_obj_4h5py_4h5ac_CacheConfig *)__pyx_v_self), ((double)__pyx_v_val));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5ac.pyx":121
+ *         def __get__(self):
+ *             return self.cache_config.flash_multiple
+ *         def __set__(self, double val):             # <<<<<<<<<<<<<<
+ *             self.cache_config.flash_multiple = val
+ * 
+ */
+
+static int __pyx_pf_4h5py_4h5ac_11CacheConfig_14flash_multiple_2__set__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self, double __pyx_v_val) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__set__", 0);
+
+  /* "h5py/h5ac.pyx":122
+ *             return self.cache_config.flash_multiple
+ *         def __set__(self, double val):
+ *             self.cache_config.flash_multiple = val             # <<<<<<<<<<<<<<
+ * 
+ *     property flash_threshold:
+ */
+  __pyx_v_self->cache_config.flash_multiple = __pyx_v_val;
+
+  __pyx_r = 0;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_4h5ac_11CacheConfig_15flash_threshold_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4h5py_4h5ac_11CacheConfig_15flash_threshold_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_4h5ac_11CacheConfig_15flash_threshold___get__(((struct __pyx_obj_4h5py_4h5ac_CacheConfig *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5ac.pyx":125
+ * 
+ *     property flash_threshold:
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.cache_config.flash_threshold
+ *         def __set__(self, double val):
+ */
+
+static PyObject *__pyx_pf_4h5py_4h5ac_11CacheConfig_15flash_threshold___get__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "h5py/h5ac.pyx":126
+ *     property flash_threshold:
+ *         def __get__(self):
+ *             return self.cache_config.flash_threshold             # <<<<<<<<<<<<<<
+ *         def __set__(self, double val):
+ *             self.cache_config.flash_threshold = val
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->cache_config.flash_threshold); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py.h5ac.CacheConfig.flash_threshold.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static int __pyx_pw_4h5py_4h5ac_11CacheConfig_15flash_threshold_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_val); /*proto*/
+static int __pyx_pw_4h5py_4h5ac_11CacheConfig_15flash_threshold_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_val) {
+  double __pyx_v_val;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
+  assert(__pyx_arg_val); {
+    __pyx_v_val = __pyx_PyFloat_AsDouble(__pyx_arg_val); if (unlikely((__pyx_v_val == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5ac.CacheConfig.flash_threshold.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return -1;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_4h5ac_11CacheConfig_15flash_threshold_2__set__(((struct __pyx_obj_4h5py_4h5ac_CacheConfig *)__pyx_v_self), ((double)__pyx_v_val));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5ac.pyx":127
+ *         def __get__(self):
+ *             return self.cache_config.flash_threshold
+ *         def __set__(self, double val):             # <<<<<<<<<<<<<<
+ *             self.cache_config.flash_threshold = val
+ * 
+ */
+
+static int __pyx_pf_4h5py_4h5ac_11CacheConfig_15flash_threshold_2__set__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self, double __pyx_v_val) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__set__", 0);
+
+  /* "h5py/h5ac.pyx":128
+ *             return self.cache_config.flash_threshold
+ *         def __set__(self, double val):
+ *             self.cache_config.flash_threshold = val             # <<<<<<<<<<<<<<
+ * 
+ *     # /[inserted by cython to avoid comment start]* size decrease control fields: *[inserted by cython to avoid comment closer]/
+ */
+  __pyx_v_self->cache_config.flash_threshold = __pyx_v_val;
+
+  __pyx_r = 0;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_4h5ac_11CacheConfig_9decr_mode_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4h5py_4h5ac_11CacheConfig_9decr_mode_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_4h5ac_11CacheConfig_9decr_mode___get__(((struct __pyx_obj_4h5py_4h5ac_CacheConfig *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5ac.pyx":132
+ *     # /[inserted by cython to avoid comment start]* size decrease control fields: *[inserted by cython to avoid comment closer]/
+ *     property decr_mode:
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.cache_config.decr_mode
+ *         def __set__(self, H5C_cache_decr_mode val):
+ */
+
+static PyObject *__pyx_pf_4h5py_4h5ac_11CacheConfig_9decr_mode___get__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "h5py/h5ac.pyx":133
+ *     property decr_mode:
+ *         def __get__(self):
+ *             return self.cache_config.decr_mode             # <<<<<<<<<<<<<<
+ *         def __set__(self, H5C_cache_decr_mode val):
+ *             self.cache_config.decr_mode = val
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyInt_FromLong(__pyx_v_self->cache_config.decr_mode); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py.h5ac.CacheConfig.decr_mode.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static int __pyx_pw_4h5py_4h5ac_11CacheConfig_9decr_mode_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_val); /*proto*/
+static int __pyx_pw_4h5py_4h5ac_11CacheConfig_9decr_mode_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_val) {
+  enum H5C_cache_decr_mode __pyx_v_val;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
+  assert(__pyx_arg_val); {
+    __pyx_v_val = ((enum H5C_cache_decr_mode)PyInt_AsLong(__pyx_arg_val)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 134; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5ac.CacheConfig.decr_mode.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return -1;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_4h5ac_11CacheConfig_9decr_mode_2__set__(((struct __pyx_obj_4h5py_4h5ac_CacheConfig *)__pyx_v_self), ((enum H5C_cache_decr_mode)__pyx_v_val));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5ac.pyx":134
+ *         def __get__(self):
+ *             return self.cache_config.decr_mode
+ *         def __set__(self, H5C_cache_decr_mode val):             # <<<<<<<<<<<<<<
+ *             self.cache_config.decr_mode = val
+ * 
+ */
+
+static int __pyx_pf_4h5py_4h5ac_11CacheConfig_9decr_mode_2__set__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self, enum H5C_cache_decr_mode __pyx_v_val) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__set__", 0);
+
+  /* "h5py/h5ac.pyx":135
+ *             return self.cache_config.decr_mode
+ *         def __set__(self, H5C_cache_decr_mode val):
+ *             self.cache_config.decr_mode = val             # <<<<<<<<<<<<<<
+ * 
+ *     property upper_hr_threshold:
+ */
+  __pyx_v_self->cache_config.decr_mode = __pyx_v_val;
+
+  __pyx_r = 0;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_4h5ac_11CacheConfig_18upper_hr_threshold_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4h5py_4h5ac_11CacheConfig_18upper_hr_threshold_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_4h5ac_11CacheConfig_18upper_hr_threshold___get__(((struct __pyx_obj_4h5py_4h5ac_CacheConfig *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5ac.pyx":138
+ * 
+ *     property upper_hr_threshold:
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.cache_config.upper_hr_threshold
+ *         def __set__(self, double val):
+ */
+
+static PyObject *__pyx_pf_4h5py_4h5ac_11CacheConfig_18upper_hr_threshold___get__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "h5py/h5ac.pyx":139
+ *     property upper_hr_threshold:
+ *         def __get__(self):
+ *             return self.cache_config.upper_hr_threshold             # <<<<<<<<<<<<<<
+ *         def __set__(self, double val):
+ *             self.cache_config.upper_hr_threshold = val
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->cache_config.upper_hr_threshold); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 139; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py.h5ac.CacheConfig.upper_hr_threshold.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static int __pyx_pw_4h5py_4h5ac_11CacheConfig_18upper_hr_threshold_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_val); /*proto*/
+static int __pyx_pw_4h5py_4h5ac_11CacheConfig_18upper_hr_threshold_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_val) {
+  double __pyx_v_val;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
+  assert(__pyx_arg_val); {
+    __pyx_v_val = __pyx_PyFloat_AsDouble(__pyx_arg_val); if (unlikely((__pyx_v_val == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 140; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5ac.CacheConfig.upper_hr_threshold.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return -1;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_4h5ac_11CacheConfig_18upper_hr_threshold_2__set__(((struct __pyx_obj_4h5py_4h5ac_CacheConfig *)__pyx_v_self), ((double)__pyx_v_val));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5ac.pyx":140
+ *         def __get__(self):
+ *             return self.cache_config.upper_hr_threshold
+ *         def __set__(self, double val):             # <<<<<<<<<<<<<<
+ *             self.cache_config.upper_hr_threshold = val
+ * 
+ */
+
+static int __pyx_pf_4h5py_4h5ac_11CacheConfig_18upper_hr_threshold_2__set__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self, double __pyx_v_val) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__set__", 0);
+
+  /* "h5py/h5ac.pyx":141
+ *             return self.cache_config.upper_hr_threshold
+ *         def __set__(self, double val):
+ *             self.cache_config.upper_hr_threshold = val             # <<<<<<<<<<<<<<
+ * 
+ *     property decrement:
+ */
+  __pyx_v_self->cache_config.upper_hr_threshold = __pyx_v_val;
+
+  __pyx_r = 0;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_4h5ac_11CacheConfig_9decrement_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4h5py_4h5ac_11CacheConfig_9decrement_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_4h5ac_11CacheConfig_9decrement___get__(((struct __pyx_obj_4h5py_4h5ac_CacheConfig *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5ac.pyx":144
+ * 
+ *     property decrement:
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.cache_config.decrement
+ *         def __set__(self, double val):
+ */
+
+static PyObject *__pyx_pf_4h5py_4h5ac_11CacheConfig_9decrement___get__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "h5py/h5ac.pyx":145
+ *     property decrement:
+ *         def __get__(self):
+ *             return self.cache_config.decrement             # <<<<<<<<<<<<<<
+ *         def __set__(self, double val):
+ *             self.cache_config.decrement = val
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->cache_config.decrement); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py.h5ac.CacheConfig.decrement.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static int __pyx_pw_4h5py_4h5ac_11CacheConfig_9decrement_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_val); /*proto*/
+static int __pyx_pw_4h5py_4h5ac_11CacheConfig_9decrement_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_val) {
+  double __pyx_v_val;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
+  assert(__pyx_arg_val); {
+    __pyx_v_val = __pyx_PyFloat_AsDouble(__pyx_arg_val); if (unlikely((__pyx_v_val == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5ac.CacheConfig.decrement.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return -1;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_4h5ac_11CacheConfig_9decrement_2__set__(((struct __pyx_obj_4h5py_4h5ac_CacheConfig *)__pyx_v_self), ((double)__pyx_v_val));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5ac.pyx":146
+ *         def __get__(self):
+ *             return self.cache_config.decrement
+ *         def __set__(self, double val):             # <<<<<<<<<<<<<<
+ *             self.cache_config.decrement = val
+ * 
+ */
+
+static int __pyx_pf_4h5py_4h5ac_11CacheConfig_9decrement_2__set__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self, double __pyx_v_val) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__set__", 0);
+
+  /* "h5py/h5ac.pyx":147
+ *             return self.cache_config.decrement
+ *         def __set__(self, double val):
+ *             self.cache_config.decrement = val             # <<<<<<<<<<<<<<
+ * 
+ *     property apply_max_decrement:
+ */
+  __pyx_v_self->cache_config.decrement = __pyx_v_val;
+
+  __pyx_r = 0;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_4h5ac_11CacheConfig_19apply_max_decrement_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4h5py_4h5ac_11CacheConfig_19apply_max_decrement_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_4h5ac_11CacheConfig_19apply_max_decrement___get__(((struct __pyx_obj_4h5py_4h5ac_CacheConfig *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5ac.pyx":150
+ * 
+ *     property apply_max_decrement:
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.cache_config.apply_max_decrement
+ *         def __set__(self, hbool_t val):
+ */
+
+static PyObject *__pyx_pf_4h5py_4h5ac_11CacheConfig_19apply_max_decrement___get__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "h5py/h5ac.pyx":151
+ *     property apply_max_decrement:
+ *         def __get__(self):
+ *             return self.cache_config.apply_max_decrement             # <<<<<<<<<<<<<<
+ *         def __set__(self, hbool_t val):
+ *             self.cache_config.apply_max_decrement = val
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_to_py_hbool_t(__pyx_v_self->cache_config.apply_max_decrement); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py.h5ac.CacheConfig.apply_max_decrement.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static int __pyx_pw_4h5py_4h5ac_11CacheConfig_19apply_max_decrement_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_val); /*proto*/
+static int __pyx_pw_4h5py_4h5ac_11CacheConfig_19apply_max_decrement_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_val) {
+  hbool_t __pyx_v_val;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
+  assert(__pyx_arg_val); {
+    __pyx_v_val = __Pyx_PyInt_from_py_hbool_t(__pyx_arg_val); if (unlikely((__pyx_v_val == (hbool_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 152; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5ac.CacheConfig.apply_max_decrement.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return -1;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_4h5ac_11CacheConfig_19apply_max_decrement_2__set__(((struct __pyx_obj_4h5py_4h5ac_CacheConfig *)__pyx_v_self), ((hbool_t)__pyx_v_val));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5ac.pyx":152
+ *         def __get__(self):
+ *             return self.cache_config.apply_max_decrement
+ *         def __set__(self, hbool_t val):             # <<<<<<<<<<<<<<
+ *             self.cache_config.apply_max_decrement = val
+ * 
+ */
+
+static int __pyx_pf_4h5py_4h5ac_11CacheConfig_19apply_max_decrement_2__set__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self, hbool_t __pyx_v_val) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__set__", 0);
+
+  /* "h5py/h5ac.pyx":153
+ *             return self.cache_config.apply_max_decrement
+ *         def __set__(self, hbool_t val):
+ *             self.cache_config.apply_max_decrement = val             # <<<<<<<<<<<<<<
+ * 
+ *     property max_decrement:
+ */
+  __pyx_v_self->cache_config.apply_max_decrement = __pyx_v_val;
+
+  __pyx_r = 0;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_4h5ac_11CacheConfig_13max_decrement_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4h5py_4h5ac_11CacheConfig_13max_decrement_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_4h5ac_11CacheConfig_13max_decrement___get__(((struct __pyx_obj_4h5py_4h5ac_CacheConfig *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5ac.pyx":156
+ * 
+ *     property max_decrement:
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.cache_config.max_decrement
+ *         def __set__(self, size_t val):
+ */
+
+static PyObject *__pyx_pf_4h5py_4h5ac_11CacheConfig_13max_decrement___get__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "h5py/h5ac.pyx":157
+ *     property max_decrement:
+ *         def __get__(self):
+ *             return self.cache_config.max_decrement             # <<<<<<<<<<<<<<
+ *         def __set__(self, size_t val):
+ *             self.cache_config.max_decrement = val
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_self->cache_config.max_decrement); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py.h5ac.CacheConfig.max_decrement.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static int __pyx_pw_4h5py_4h5ac_11CacheConfig_13max_decrement_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_val); /*proto*/
+static int __pyx_pw_4h5py_4h5ac_11CacheConfig_13max_decrement_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_val) {
+  size_t __pyx_v_val;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
+  assert(__pyx_arg_val); {
+    __pyx_v_val = __Pyx_PyInt_AsSize_t(__pyx_arg_val); if (unlikely((__pyx_v_val == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5ac.CacheConfig.max_decrement.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return -1;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_4h5ac_11CacheConfig_13max_decrement_2__set__(((struct __pyx_obj_4h5py_4h5ac_CacheConfig *)__pyx_v_self), ((size_t)__pyx_v_val));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5ac.pyx":158
+ *         def __get__(self):
+ *             return self.cache_config.max_decrement
+ *         def __set__(self, size_t val):             # <<<<<<<<<<<<<<
+ *             self.cache_config.max_decrement = val
+ * 
+ */
+
+static int __pyx_pf_4h5py_4h5ac_11CacheConfig_13max_decrement_2__set__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self, size_t __pyx_v_val) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__set__", 0);
+
+  /* "h5py/h5ac.pyx":159
+ *             return self.cache_config.max_decrement
+ *         def __set__(self, size_t val):
+ *             self.cache_config.max_decrement = val             # <<<<<<<<<<<<<<
+ * 
+ *     property epochs_before_eviction:
+ */
+  __pyx_v_self->cache_config.max_decrement = __pyx_v_val;
+
+  __pyx_r = 0;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_4h5ac_11CacheConfig_22epochs_before_eviction_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4h5py_4h5ac_11CacheConfig_22epochs_before_eviction_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_4h5ac_11CacheConfig_22epochs_before_eviction___get__(((struct __pyx_obj_4h5py_4h5ac_CacheConfig *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5ac.pyx":162
+ * 
+ *     property epochs_before_eviction:
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.cache_config.epochs_before_eviction
+ *         def __set__(self, int val):
+ */
+
+static PyObject *__pyx_pf_4h5py_4h5ac_11CacheConfig_22epochs_before_eviction___get__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "h5py/h5ac.pyx":163
+ *     property epochs_before_eviction:
+ *         def __get__(self):
+ *             return self.cache_config.epochs_before_eviction             # <<<<<<<<<<<<<<
+ *         def __set__(self, int val):
+ *             self.cache_config.epochs_before_eviction = val
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyInt_FromLong(__pyx_v_self->cache_config.epochs_before_eviction); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 163; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py.h5ac.CacheConfig.epochs_before_eviction.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static int __pyx_pw_4h5py_4h5ac_11CacheConfig_22epochs_before_eviction_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_val); /*proto*/
+static int __pyx_pw_4h5py_4h5ac_11CacheConfig_22epochs_before_eviction_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_val) {
+  int __pyx_v_val;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
+  assert(__pyx_arg_val); {
+    __pyx_v_val = __Pyx_PyInt_AsInt(__pyx_arg_val); if (unlikely((__pyx_v_val == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 164; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5ac.CacheConfig.epochs_before_eviction.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return -1;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_4h5ac_11CacheConfig_22epochs_before_eviction_2__set__(((struct __pyx_obj_4h5py_4h5ac_CacheConfig *)__pyx_v_self), ((int)__pyx_v_val));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5ac.pyx":164
+ *         def __get__(self):
+ *             return self.cache_config.epochs_before_eviction
+ *         def __set__(self, int val):             # <<<<<<<<<<<<<<
+ *             self.cache_config.epochs_before_eviction = val
+ * 
+ */
+
+static int __pyx_pf_4h5py_4h5ac_11CacheConfig_22epochs_before_eviction_2__set__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self, int __pyx_v_val) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__set__", 0);
+
+  /* "h5py/h5ac.pyx":165
+ *             return self.cache_config.epochs_before_eviction
+ *         def __set__(self, int val):
+ *             self.cache_config.epochs_before_eviction = val             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_v_self->cache_config.epochs_before_eviction = __pyx_v_val;
+
+  __pyx_r = 0;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_4h5ac_11CacheConfig_19apply_empty_reserve_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4h5py_4h5ac_11CacheConfig_19apply_empty_reserve_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_4h5ac_11CacheConfig_19apply_empty_reserve___get__(((struct __pyx_obj_4h5py_4h5ac_CacheConfig *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5ac.pyx":170
+ * 
+ *     property apply_empty_reserve:
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.cache_config.apply_empty_reserve
+ *         def __set__(self, hbool_t val):
+ */
+
+static PyObject *__pyx_pf_4h5py_4h5ac_11CacheConfig_19apply_empty_reserve___get__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "h5py/h5ac.pyx":171
+ *     property apply_empty_reserve:
+ *         def __get__(self):
+ *             return self.cache_config.apply_empty_reserve             # <<<<<<<<<<<<<<
+ *         def __set__(self, hbool_t val):
+ *             self.cache_config.apply_empty_reserve = val
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_to_py_hbool_t(__pyx_v_self->cache_config.apply_empty_reserve); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 171; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py.h5ac.CacheConfig.apply_empty_reserve.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static int __pyx_pw_4h5py_4h5ac_11CacheConfig_19apply_empty_reserve_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_val); /*proto*/
+static int __pyx_pw_4h5py_4h5ac_11CacheConfig_19apply_empty_reserve_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_val) {
+  hbool_t __pyx_v_val;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
+  assert(__pyx_arg_val); {
+    __pyx_v_val = __Pyx_PyInt_from_py_hbool_t(__pyx_arg_val); if (unlikely((__pyx_v_val == (hbool_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5ac.CacheConfig.apply_empty_reserve.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return -1;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_4h5ac_11CacheConfig_19apply_empty_reserve_2__set__(((struct __pyx_obj_4h5py_4h5ac_CacheConfig *)__pyx_v_self), ((hbool_t)__pyx_v_val));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5ac.pyx":172
+ *         def __get__(self):
+ *             return self.cache_config.apply_empty_reserve
+ *         def __set__(self, hbool_t val):             # <<<<<<<<<<<<<<
+ *             self.cache_config.apply_empty_reserve = val
+ * 
+ */
+
+static int __pyx_pf_4h5py_4h5ac_11CacheConfig_19apply_empty_reserve_2__set__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self, hbool_t __pyx_v_val) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__set__", 0);
+
+  /* "h5py/h5ac.pyx":173
+ *             return self.cache_config.apply_empty_reserve
+ *         def __set__(self, hbool_t val):
+ *             self.cache_config.apply_empty_reserve = val             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_v_self->cache_config.apply_empty_reserve = __pyx_v_val;
+
+  __pyx_r = 0;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_4h5ac_11CacheConfig_13empty_reserve_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4h5py_4h5ac_11CacheConfig_13empty_reserve_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_4h5ac_11CacheConfig_13empty_reserve___get__(((struct __pyx_obj_4h5py_4h5ac_CacheConfig *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5ac.pyx":177
+ * 
+ *     property empty_reserve:
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.cache_config.empty_reserve
+ *         def __set__(self, double val):
+ */
+
+static PyObject *__pyx_pf_4h5py_4h5ac_11CacheConfig_13empty_reserve___get__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "h5py/h5ac.pyx":178
+ *     property empty_reserve:
+ *         def __get__(self):
+ *             return self.cache_config.empty_reserve             # <<<<<<<<<<<<<<
+ *         def __set__(self, double val):
+ *             self.cache_config.empty_reserve = val
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->cache_config.empty_reserve); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 178; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py.h5ac.CacheConfig.empty_reserve.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static int __pyx_pw_4h5py_4h5ac_11CacheConfig_13empty_reserve_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_val); /*proto*/
+static int __pyx_pw_4h5py_4h5ac_11CacheConfig_13empty_reserve_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_val) {
+  double __pyx_v_val;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
+  assert(__pyx_arg_val); {
+    __pyx_v_val = __pyx_PyFloat_AsDouble(__pyx_arg_val); if (unlikely((__pyx_v_val == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 179; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5ac.CacheConfig.empty_reserve.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return -1;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_4h5ac_11CacheConfig_13empty_reserve_2__set__(((struct __pyx_obj_4h5py_4h5ac_CacheConfig *)__pyx_v_self), ((double)__pyx_v_val));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5ac.pyx":179
+ *         def __get__(self):
+ *             return self.cache_config.empty_reserve
+ *         def __set__(self, double val):             # <<<<<<<<<<<<<<
+ *             self.cache_config.empty_reserve = val
+ * 
+ */
+
+static int __pyx_pf_4h5py_4h5ac_11CacheConfig_13empty_reserve_2__set__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self, double __pyx_v_val) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__set__", 0);
+
+  /* "h5py/h5ac.pyx":180
+ *             return self.cache_config.empty_reserve
+ *         def __set__(self, double val):
+ *             self.cache_config.empty_reserve = val             # <<<<<<<<<<<<<<
+ * 
+ *     # /[inserted by cython to avoid comment start]* parallel configuration fields: *[inserted by cython to avoid comment closer]/
+ */
+  __pyx_v_self->cache_config.empty_reserve = __pyx_v_val;
+
+  __pyx_r = 0;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_4h5ac_11CacheConfig_21dirty_bytes_threshold_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4h5py_4h5ac_11CacheConfig_21dirty_bytes_threshold_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_4h5ac_11CacheConfig_21dirty_bytes_threshold___get__(((struct __pyx_obj_4h5py_4h5ac_CacheConfig *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5ac.pyx":184
+ *     # /[inserted by cython to avoid comment start]* parallel configuration fields: *[inserted by cython to avoid comment closer]/
+ *     property dirty_bytes_threshold:
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.cache_config.dirty_bytes_threshold
+ *         def __set__(self, int val):
+ */
+
+static PyObject *__pyx_pf_4h5py_4h5ac_11CacheConfig_21dirty_bytes_threshold___get__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "h5py/h5ac.pyx":185
+ *     property dirty_bytes_threshold:
+ *         def __get__(self):
+ *             return self.cache_config.dirty_bytes_threshold             # <<<<<<<<<<<<<<
+ *         def __set__(self, int val):
+ *             self.cache_config.dirty_bytes_threshold = val
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyInt_FromLong(__pyx_v_self->cache_config.dirty_bytes_threshold); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 185; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py.h5ac.CacheConfig.dirty_bytes_threshold.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static int __pyx_pw_4h5py_4h5ac_11CacheConfig_21dirty_bytes_threshold_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_val); /*proto*/
+static int __pyx_pw_4h5py_4h5ac_11CacheConfig_21dirty_bytes_threshold_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_val) {
+  int __pyx_v_val;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
+  assert(__pyx_arg_val); {
+    __pyx_v_val = __Pyx_PyInt_AsInt(__pyx_arg_val); if (unlikely((__pyx_v_val == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5ac.CacheConfig.dirty_bytes_threshold.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return -1;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_4h5ac_11CacheConfig_21dirty_bytes_threshold_2__set__(((struct __pyx_obj_4h5py_4h5ac_CacheConfig *)__pyx_v_self), ((int)__pyx_v_val));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5ac.pyx":186
+ *         def __get__(self):
+ *             return self.cache_config.dirty_bytes_threshold
+ *         def __set__(self, int val):             # <<<<<<<<<<<<<<
+ *             self.cache_config.dirty_bytes_threshold = val
+ */
+
+static int __pyx_pf_4h5py_4h5ac_11CacheConfig_21dirty_bytes_threshold_2__set__(struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_self, int __pyx_v_val) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__set__", 0);
+
+  /* "h5py/h5ac.pyx":187
+ *             return self.cache_config.dirty_bytes_threshold
+ *         def __set__(self, int val):
+ *             self.cache_config.dirty_bytes_threshold = val             # <<<<<<<<<<<<<<
+ */
+  __pyx_v_self->cache_config.dirty_bytes_threshold = __pyx_v_val;
+
+  __pyx_r = 0;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_tp_new_4h5py_4h5ac_CacheConfig(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
+  PyObject *o = (*t->tp_alloc)(t, 0);
+  if (!o) return 0;
+  if (__pyx_pw_4h5py_4h5ac_11CacheConfig_1__cinit__(o, __pyx_empty_tuple, NULL) < 0) {
+    Py_DECREF(o); o = 0;
+  }
+  return o;
+}
+
+static void __pyx_tp_dealloc_4h5py_4h5ac_CacheConfig(PyObject *o) {
+  (*Py_TYPE(o)->tp_free)(o);
+}
+
+static PyObject *__pyx_getprop_4h5py_4h5ac_11CacheConfig_version(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_4h5py_4h5ac_11CacheConfig_7version_1__get__(o);
+}
+
+static int __pyx_setprop_4h5py_4h5ac_11CacheConfig_version(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
+  if (v) {
+    return __pyx_pw_4h5py_4h5ac_11CacheConfig_7version_3__set__(o, v);
+  }
+  else {
+    PyErr_SetString(PyExc_NotImplementedError, "__del__");
+    return -1;
+  }
+}
+
+static PyObject *__pyx_getprop_4h5py_4h5ac_11CacheConfig_rpt_fcn_enabled(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_4h5py_4h5ac_11CacheConfig_15rpt_fcn_enabled_1__get__(o);
+}
+
+static int __pyx_setprop_4h5py_4h5ac_11CacheConfig_rpt_fcn_enabled(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
+  if (v) {
+    return __pyx_pw_4h5py_4h5ac_11CacheConfig_15rpt_fcn_enabled_3__set__(o, v);
+  }
+  else {
+    PyErr_SetString(PyExc_NotImplementedError, "__del__");
+    return -1;
+  }
+}
+
+static PyObject *__pyx_getprop_4h5py_4h5ac_11CacheConfig_evictions_enabled(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_4h5py_4h5ac_11CacheConfig_17evictions_enabled_1__get__(o);
+}
+
+static int __pyx_setprop_4h5py_4h5ac_11CacheConfig_evictions_enabled(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
+  if (v) {
+    return __pyx_pw_4h5py_4h5ac_11CacheConfig_17evictions_enabled_3__set__(o, v);
+  }
+  else {
+    PyErr_SetString(PyExc_NotImplementedError, "__del__");
+    return -1;
+  }
+}
+
+static PyObject *__pyx_getprop_4h5py_4h5ac_11CacheConfig_set_initial_size(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_4h5py_4h5ac_11CacheConfig_16set_initial_size_1__get__(o);
+}
+
+static int __pyx_setprop_4h5py_4h5ac_11CacheConfig_set_initial_size(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
+  if (v) {
+    return __pyx_pw_4h5py_4h5ac_11CacheConfig_16set_initial_size_3__set__(o, v);
+  }
+  else {
+    PyErr_SetString(PyExc_NotImplementedError, "__del__");
+    return -1;
+  }
+}
+
+static PyObject *__pyx_getprop_4h5py_4h5ac_11CacheConfig_initial_size(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_4h5py_4h5ac_11CacheConfig_12initial_size_1__get__(o);
+}
+
+static int __pyx_setprop_4h5py_4h5ac_11CacheConfig_initial_size(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
+  if (v) {
+    return __pyx_pw_4h5py_4h5ac_11CacheConfig_12initial_size_3__set__(o, v);
+  }
+  else {
+    PyErr_SetString(PyExc_NotImplementedError, "__del__");
+    return -1;
+  }
+}
+
+static PyObject *__pyx_getprop_4h5py_4h5ac_11CacheConfig_min_clean_fraction(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_4h5py_4h5ac_11CacheConfig_18min_clean_fraction_1__get__(o);
+}
+
+static int __pyx_setprop_4h5py_4h5ac_11CacheConfig_min_clean_fraction(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
+  if (v) {
+    return __pyx_pw_4h5py_4h5ac_11CacheConfig_18min_clean_fraction_3__set__(o, v);
+  }
+  else {
+    PyErr_SetString(PyExc_NotImplementedError, "__del__");
+    return -1;
+  }
+}
+
+static PyObject *__pyx_getprop_4h5py_4h5ac_11CacheConfig_max_size(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_4h5py_4h5ac_11CacheConfig_8max_size_1__get__(o);
+}
+
+static int __pyx_setprop_4h5py_4h5ac_11CacheConfig_max_size(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
+  if (v) {
+    return __pyx_pw_4h5py_4h5ac_11CacheConfig_8max_size_3__set__(o, v);
+  }
+  else {
+    PyErr_SetString(PyExc_NotImplementedError, "__del__");
+    return -1;
+  }
+}
+
+static PyObject *__pyx_getprop_4h5py_4h5ac_11CacheConfig_min_size(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_4h5py_4h5ac_11CacheConfig_8min_size_1__get__(o);
+}
+
+static int __pyx_setprop_4h5py_4h5ac_11CacheConfig_min_size(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
+  if (v) {
+    return __pyx_pw_4h5py_4h5ac_11CacheConfig_8min_size_3__set__(o, v);
+  }
+  else {
+    PyErr_SetString(PyExc_NotImplementedError, "__del__");
+    return -1;
+  }
+}
+
+static PyObject *__pyx_getprop_4h5py_4h5ac_11CacheConfig_epoch_length(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_4h5py_4h5ac_11CacheConfig_12epoch_length_1__get__(o);
+}
+
+static int __pyx_setprop_4h5py_4h5ac_11CacheConfig_epoch_length(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
+  if (v) {
+    return __pyx_pw_4h5py_4h5ac_11CacheConfig_12epoch_length_3__set__(o, v);
+  }
+  else {
+    PyErr_SetString(PyExc_NotImplementedError, "__del__");
+    return -1;
+  }
+}
+
+static PyObject *__pyx_getprop_4h5py_4h5ac_11CacheConfig_incr_mode(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_4h5py_4h5ac_11CacheConfig_9incr_mode_1__get__(o);
+}
+
+static int __pyx_setprop_4h5py_4h5ac_11CacheConfig_incr_mode(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
+  if (v) {
+    return __pyx_pw_4h5py_4h5ac_11CacheConfig_9incr_mode_3__set__(o, v);
+  }
+  else {
+    PyErr_SetString(PyExc_NotImplementedError, "__del__");
+    return -1;
+  }
+}
+
+static PyObject *__pyx_getprop_4h5py_4h5ac_11CacheConfig_lower_hr_threshold(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_4h5py_4h5ac_11CacheConfig_18lower_hr_threshold_1__get__(o);
+}
+
+static int __pyx_setprop_4h5py_4h5ac_11CacheConfig_lower_hr_threshold(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
+  if (v) {
+    return __pyx_pw_4h5py_4h5ac_11CacheConfig_18lower_hr_threshold_3__set__(o, v);
+  }
+  else {
+    PyErr_SetString(PyExc_NotImplementedError, "__del__");
+    return -1;
+  }
+}
+
+static PyObject *__pyx_getprop_4h5py_4h5ac_11CacheConfig_increment(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_4h5py_4h5ac_11CacheConfig_9increment_1__get__(o);
+}
+
+static int __pyx_setprop_4h5py_4h5ac_11CacheConfig_increment(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
+  if (v) {
+    return __pyx_pw_4h5py_4h5ac_11CacheConfig_9increment_3__set__(o, v);
+  }
+  else {
+    PyErr_SetString(PyExc_NotImplementedError, "__del__");
+    return -1;
+  }
+}
+
+static PyObject *__pyx_getprop_4h5py_4h5ac_11CacheConfig_apply_max_increment(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_4h5py_4h5ac_11CacheConfig_19apply_max_increment_1__get__(o);
+}
+
+static int __pyx_setprop_4h5py_4h5ac_11CacheConfig_apply_max_increment(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
+  if (v) {
+    return __pyx_pw_4h5py_4h5ac_11CacheConfig_19apply_max_increment_3__set__(o, v);
+  }
+  else {
+    PyErr_SetString(PyExc_NotImplementedError, "__del__");
+    return -1;
+  }
+}
+
+static PyObject *__pyx_getprop_4h5py_4h5ac_11CacheConfig_max_increment(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_4h5py_4h5ac_11CacheConfig_13max_increment_1__get__(o);
+}
+
+static int __pyx_setprop_4h5py_4h5ac_11CacheConfig_max_increment(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
+  if (v) {
+    return __pyx_pw_4h5py_4h5ac_11CacheConfig_13max_increment_3__set__(o, v);
+  }
+  else {
+    PyErr_SetString(PyExc_NotImplementedError, "__del__");
+    return -1;
+  }
+}
+
+static PyObject *__pyx_getprop_4h5py_4h5ac_11CacheConfig_flash_incr_mode(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_4h5py_4h5ac_11CacheConfig_15flash_incr_mode_1__get__(o);
+}
+
+static int __pyx_setprop_4h5py_4h5ac_11CacheConfig_flash_incr_mode(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
+  if (v) {
+    return __pyx_pw_4h5py_4h5ac_11CacheConfig_15flash_incr_mode_3__set__(o, v);
+  }
+  else {
+    PyErr_SetString(PyExc_NotImplementedError, "__del__");
+    return -1;
+  }
+}
+
+static PyObject *__pyx_getprop_4h5py_4h5ac_11CacheConfig_flash_multiple(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_4h5py_4h5ac_11CacheConfig_14flash_multiple_1__get__(o);
+}
+
+static int __pyx_setprop_4h5py_4h5ac_11CacheConfig_flash_multiple(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
+  if (v) {
+    return __pyx_pw_4h5py_4h5ac_11CacheConfig_14flash_multiple_3__set__(o, v);
+  }
+  else {
+    PyErr_SetString(PyExc_NotImplementedError, "__del__");
+    return -1;
+  }
+}
+
+static PyObject *__pyx_getprop_4h5py_4h5ac_11CacheConfig_flash_threshold(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_4h5py_4h5ac_11CacheConfig_15flash_threshold_1__get__(o);
+}
+
+static int __pyx_setprop_4h5py_4h5ac_11CacheConfig_flash_threshold(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
+  if (v) {
+    return __pyx_pw_4h5py_4h5ac_11CacheConfig_15flash_threshold_3__set__(o, v);
+  }
+  else {
+    PyErr_SetString(PyExc_NotImplementedError, "__del__");
+    return -1;
+  }
+}
+
+static PyObject *__pyx_getprop_4h5py_4h5ac_11CacheConfig_decr_mode(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_4h5py_4h5ac_11CacheConfig_9decr_mode_1__get__(o);
+}
+
+static int __pyx_setprop_4h5py_4h5ac_11CacheConfig_decr_mode(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
+  if (v) {
+    return __pyx_pw_4h5py_4h5ac_11CacheConfig_9decr_mode_3__set__(o, v);
+  }
+  else {
+    PyErr_SetString(PyExc_NotImplementedError, "__del__");
+    return -1;
+  }
+}
+
+static PyObject *__pyx_getprop_4h5py_4h5ac_11CacheConfig_upper_hr_threshold(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_4h5py_4h5ac_11CacheConfig_18upper_hr_threshold_1__get__(o);
+}
+
+static int __pyx_setprop_4h5py_4h5ac_11CacheConfig_upper_hr_threshold(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
+  if (v) {
+    return __pyx_pw_4h5py_4h5ac_11CacheConfig_18upper_hr_threshold_3__set__(o, v);
+  }
+  else {
+    PyErr_SetString(PyExc_NotImplementedError, "__del__");
+    return -1;
+  }
+}
+
+static PyObject *__pyx_getprop_4h5py_4h5ac_11CacheConfig_decrement(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_4h5py_4h5ac_11CacheConfig_9decrement_1__get__(o);
+}
+
+static int __pyx_setprop_4h5py_4h5ac_11CacheConfig_decrement(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
+  if (v) {
+    return __pyx_pw_4h5py_4h5ac_11CacheConfig_9decrement_3__set__(o, v);
+  }
+  else {
+    PyErr_SetString(PyExc_NotImplementedError, "__del__");
+    return -1;
+  }
+}
+
+static PyObject *__pyx_getprop_4h5py_4h5ac_11CacheConfig_apply_max_decrement(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_4h5py_4h5ac_11CacheConfig_19apply_max_decrement_1__get__(o);
+}
+
+static int __pyx_setprop_4h5py_4h5ac_11CacheConfig_apply_max_decrement(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
+  if (v) {
+    return __pyx_pw_4h5py_4h5ac_11CacheConfig_19apply_max_decrement_3__set__(o, v);
+  }
+  else {
+    PyErr_SetString(PyExc_NotImplementedError, "__del__");
+    return -1;
+  }
+}
+
+static PyObject *__pyx_getprop_4h5py_4h5ac_11CacheConfig_max_decrement(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_4h5py_4h5ac_11CacheConfig_13max_decrement_1__get__(o);
+}
+
+static int __pyx_setprop_4h5py_4h5ac_11CacheConfig_max_decrement(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
+  if (v) {
+    return __pyx_pw_4h5py_4h5ac_11CacheConfig_13max_decrement_3__set__(o, v);
+  }
+  else {
+    PyErr_SetString(PyExc_NotImplementedError, "__del__");
+    return -1;
+  }
+}
+
+static PyObject *__pyx_getprop_4h5py_4h5ac_11CacheConfig_epochs_before_eviction(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_4h5py_4h5ac_11CacheConfig_22epochs_before_eviction_1__get__(o);
+}
+
+static int __pyx_setprop_4h5py_4h5ac_11CacheConfig_epochs_before_eviction(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
+  if (v) {
+    return __pyx_pw_4h5py_4h5ac_11CacheConfig_22epochs_before_eviction_3__set__(o, v);
+  }
+  else {
+    PyErr_SetString(PyExc_NotImplementedError, "__del__");
+    return -1;
+  }
+}
+
+static PyObject *__pyx_getprop_4h5py_4h5ac_11CacheConfig_apply_empty_reserve(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_4h5py_4h5ac_11CacheConfig_19apply_empty_reserve_1__get__(o);
+}
+
+static int __pyx_setprop_4h5py_4h5ac_11CacheConfig_apply_empty_reserve(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
+  if (v) {
+    return __pyx_pw_4h5py_4h5ac_11CacheConfig_19apply_empty_reserve_3__set__(o, v);
+  }
+  else {
+    PyErr_SetString(PyExc_NotImplementedError, "__del__");
+    return -1;
+  }
+}
+
+static PyObject *__pyx_getprop_4h5py_4h5ac_11CacheConfig_empty_reserve(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_4h5py_4h5ac_11CacheConfig_13empty_reserve_1__get__(o);
+}
+
+static int __pyx_setprop_4h5py_4h5ac_11CacheConfig_empty_reserve(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
+  if (v) {
+    return __pyx_pw_4h5py_4h5ac_11CacheConfig_13empty_reserve_3__set__(o, v);
+  }
+  else {
+    PyErr_SetString(PyExc_NotImplementedError, "__del__");
+    return -1;
+  }
+}
+
+static PyObject *__pyx_getprop_4h5py_4h5ac_11CacheConfig_dirty_bytes_threshold(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_4h5py_4h5ac_11CacheConfig_21dirty_bytes_threshold_1__get__(o);
+}
+
+static int __pyx_setprop_4h5py_4h5ac_11CacheConfig_dirty_bytes_threshold(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
+  if (v) {
+    return __pyx_pw_4h5py_4h5ac_11CacheConfig_21dirty_bytes_threshold_3__set__(o, v);
+  }
+  else {
+    PyErr_SetString(PyExc_NotImplementedError, "__del__");
+    return -1;
+  }
+}
+
+static PyMethodDef __pyx_methods_4h5py_4h5ac_CacheConfig[] = {
+  {0, 0, 0, 0}
+};
+
+static struct PyGetSetDef __pyx_getsets_4h5py_4h5ac_CacheConfig[] = {
+  {(char *)"version", __pyx_getprop_4h5py_4h5ac_11CacheConfig_version, __pyx_setprop_4h5py_4h5ac_11CacheConfig_version, 0, 0},
+  {(char *)"rpt_fcn_enabled", __pyx_getprop_4h5py_4h5ac_11CacheConfig_rpt_fcn_enabled, __pyx_setprop_4h5py_4h5ac_11CacheConfig_rpt_fcn_enabled, 0, 0},
+  {(char *)"evictions_enabled", __pyx_getprop_4h5py_4h5ac_11CacheConfig_evictions_enabled, __pyx_setprop_4h5py_4h5ac_11CacheConfig_evictions_enabled, 0, 0},
+  {(char *)"set_initial_size", __pyx_getprop_4h5py_4h5ac_11CacheConfig_set_initial_size, __pyx_setprop_4h5py_4h5ac_11CacheConfig_set_initial_size, 0, 0},
+  {(char *)"initial_size", __pyx_getprop_4h5py_4h5ac_11CacheConfig_initial_size, __pyx_setprop_4h5py_4h5ac_11CacheConfig_initial_size, 0, 0},
+  {(char *)"min_clean_fraction", __pyx_getprop_4h5py_4h5ac_11CacheConfig_min_clean_fraction, __pyx_setprop_4h5py_4h5ac_11CacheConfig_min_clean_fraction, 0, 0},
+  {(char *)"max_size", __pyx_getprop_4h5py_4h5ac_11CacheConfig_max_size, __pyx_setprop_4h5py_4h5ac_11CacheConfig_max_size, 0, 0},
+  {(char *)"min_size", __pyx_getprop_4h5py_4h5ac_11CacheConfig_min_size, __pyx_setprop_4h5py_4h5ac_11CacheConfig_min_size, 0, 0},
+  {(char *)"epoch_length", __pyx_getprop_4h5py_4h5ac_11CacheConfig_epoch_length, __pyx_setprop_4h5py_4h5ac_11CacheConfig_epoch_length, 0, 0},
+  {(char *)"incr_mode", __pyx_getprop_4h5py_4h5ac_11CacheConfig_incr_mode, __pyx_setprop_4h5py_4h5ac_11CacheConfig_incr_mode, 0, 0},
+  {(char *)"lower_hr_threshold", __pyx_getprop_4h5py_4h5ac_11CacheConfig_lower_hr_threshold, __pyx_setprop_4h5py_4h5ac_11CacheConfig_lower_hr_threshold, 0, 0},
+  {(char *)"increment", __pyx_getprop_4h5py_4h5ac_11CacheConfig_increment, __pyx_setprop_4h5py_4h5ac_11CacheConfig_increment, 0, 0},
+  {(char *)"apply_max_increment", __pyx_getprop_4h5py_4h5ac_11CacheConfig_apply_max_increment, __pyx_setprop_4h5py_4h5ac_11CacheConfig_apply_max_increment, 0, 0},
+  {(char *)"max_increment", __pyx_getprop_4h5py_4h5ac_11CacheConfig_max_increment, __pyx_setprop_4h5py_4h5ac_11CacheConfig_max_increment, 0, 0},
+  {(char *)"flash_incr_mode", __pyx_getprop_4h5py_4h5ac_11CacheConfig_flash_incr_mode, __pyx_setprop_4h5py_4h5ac_11CacheConfig_flash_incr_mode, 0, 0},
+  {(char *)"flash_multiple", __pyx_getprop_4h5py_4h5ac_11CacheConfig_flash_multiple, __pyx_setprop_4h5py_4h5ac_11CacheConfig_flash_multiple, 0, 0},
+  {(char *)"flash_threshold", __pyx_getprop_4h5py_4h5ac_11CacheConfig_flash_threshold, __pyx_setprop_4h5py_4h5ac_11CacheConfig_flash_threshold, 0, 0},
+  {(char *)"decr_mode", __pyx_getprop_4h5py_4h5ac_11CacheConfig_decr_mode, __pyx_setprop_4h5py_4h5ac_11CacheConfig_decr_mode, 0, 0},
+  {(char *)"upper_hr_threshold", __pyx_getprop_4h5py_4h5ac_11CacheConfig_upper_hr_threshold, __pyx_setprop_4h5py_4h5ac_11CacheConfig_upper_hr_threshold, 0, 0},
+  {(char *)"decrement", __pyx_getprop_4h5py_4h5ac_11CacheConfig_decrement, __pyx_setprop_4h5py_4h5ac_11CacheConfig_decrement, 0, 0},
+  {(char *)"apply_max_decrement", __pyx_getprop_4h5py_4h5ac_11CacheConfig_apply_max_decrement, __pyx_setprop_4h5py_4h5ac_11CacheConfig_apply_max_decrement, 0, 0},
+  {(char *)"max_decrement", __pyx_getprop_4h5py_4h5ac_11CacheConfig_max_decrement, __pyx_setprop_4h5py_4h5ac_11CacheConfig_max_decrement, 0, 0},
+  {(char *)"epochs_before_eviction", __pyx_getprop_4h5py_4h5ac_11CacheConfig_epochs_before_eviction, __pyx_setprop_4h5py_4h5ac_11CacheConfig_epochs_before_eviction, 0, 0},
+  {(char *)"apply_empty_reserve", __pyx_getprop_4h5py_4h5ac_11CacheConfig_apply_empty_reserve, __pyx_setprop_4h5py_4h5ac_11CacheConfig_apply_empty_reserve, 0, 0},
+  {(char *)"empty_reserve", __pyx_getprop_4h5py_4h5ac_11CacheConfig_empty_reserve, __pyx_setprop_4h5py_4h5ac_11CacheConfig_empty_reserve, 0, 0},
+  {(char *)"dirty_bytes_threshold", __pyx_getprop_4h5py_4h5ac_11CacheConfig_dirty_bytes_threshold, __pyx_setprop_4h5py_4h5ac_11CacheConfig_dirty_bytes_threshold, 0, 0},
+  {0, 0, 0, 0, 0}
+};
+
+static PyNumberMethods __pyx_tp_as_number_CacheConfig = {
+  0, /*nb_add*/
+  0, /*nb_subtract*/
+  0, /*nb_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_divide*/
+  #endif
+  0, /*nb_remainder*/
+  0, /*nb_divmod*/
+  0, /*nb_power*/
+  0, /*nb_negative*/
+  0, /*nb_positive*/
+  0, /*nb_absolute*/
+  0, /*nb_nonzero*/
+  0, /*nb_invert*/
+  0, /*nb_lshift*/
+  0, /*nb_rshift*/
+  0, /*nb_and*/
+  0, /*nb_xor*/
+  0, /*nb_or*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_coerce*/
+  #endif
+  0, /*nb_int*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_long*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*nb_float*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_oct*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_hex*/
+  #endif
+  0, /*nb_inplace_add*/
+  0, /*nb_inplace_subtract*/
+  0, /*nb_inplace_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_inplace_divide*/
+  #endif
+  0, /*nb_inplace_remainder*/
+  0, /*nb_inplace_power*/
+  0, /*nb_inplace_lshift*/
+  0, /*nb_inplace_rshift*/
+  0, /*nb_inplace_and*/
+  0, /*nb_inplace_xor*/
+  0, /*nb_inplace_or*/
+  0, /*nb_floor_divide*/
+  0, /*nb_true_divide*/
+  0, /*nb_inplace_floor_divide*/
+  0, /*nb_inplace_true_divide*/
+  #if PY_VERSION_HEX >= 0x02050000
+  0, /*nb_index*/
+  #endif
+};
+
+static PySequenceMethods __pyx_tp_as_sequence_CacheConfig = {
+  0, /*sq_length*/
+  0, /*sq_concat*/
+  0, /*sq_repeat*/
+  0, /*sq_item*/
+  0, /*sq_slice*/
+  0, /*sq_ass_item*/
+  0, /*sq_ass_slice*/
+  0, /*sq_contains*/
+  0, /*sq_inplace_concat*/
+  0, /*sq_inplace_repeat*/
+};
+
+static PyMappingMethods __pyx_tp_as_mapping_CacheConfig = {
+  0, /*mp_length*/
+  0, /*mp_subscript*/
+  0, /*mp_ass_subscript*/
+};
+
+static PyBufferProcs __pyx_tp_as_buffer_CacheConfig = {
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getreadbuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getwritebuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getsegcount*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getcharbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_getbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_releasebuffer*/
+  #endif
+};
+
+static PyTypeObject __pyx_type_4h5py_4h5ac_CacheConfig = {
+  PyVarObject_HEAD_INIT(0, 0)
+  __Pyx_NAMESTR("h5py.h5ac.CacheConfig"), /*tp_name*/
+  sizeof(struct __pyx_obj_4h5py_4h5ac_CacheConfig), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_4h5py_4h5ac_CacheConfig, /*tp_dealloc*/
+  0, /*tp_print*/
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*tp_repr*/
+  &__pyx_tp_as_number_CacheConfig, /*tp_as_number*/
+  &__pyx_tp_as_sequence_CacheConfig, /*tp_as_sequence*/
+  &__pyx_tp_as_mapping_CacheConfig, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  &__pyx_tp_as_buffer_CacheConfig, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
+  __Pyx_DOCSTR("Represents H5AC_cache_config_t objects\n\n    "), /*tp_doc*/
+  0, /*tp_traverse*/
+  0, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_4h5py_4h5ac_CacheConfig, /*tp_methods*/
+  0, /*tp_members*/
+  __pyx_getsets_4h5py_4h5ac_CacheConfig, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  0, /*tp_dictoffset*/
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_4h5py_4h5ac_CacheConfig, /*tp_new*/
+  0, /*tp_free*/
+  0, /*tp_is_gc*/
+  0, /*tp_bases*/
+  0, /*tp_mro*/
+  0, /*tp_cache*/
+  0, /*tp_subclasses*/
+  0, /*tp_weaklist*/
+  0, /*tp_del*/
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*tp_version_tag*/
+  #endif
+};
+
+static PyMethodDef __pyx_methods[] = {
+  {0, 0, 0, 0}
+};
+
+#if PY_MAJOR_VERSION >= 3
+static struct PyModuleDef __pyx_moduledef = {
+  #if PY_VERSION_HEX < 0x03020000
+    { PyObject_HEAD_INIT(NULL) NULL, 0, NULL },
+  #else
+    PyModuleDef_HEAD_INIT,
+  #endif
+    __Pyx_NAMESTR("h5ac"),
+    __Pyx_DOCSTR(__pyx_k_1), /* m_doc */
+    -1, /* m_size */
+    __pyx_methods /* m_methods */,
+    NULL, /* m_reload */
+    NULL, /* m_traverse */
+    NULL, /* m_clear */
+    NULL /* m_free */
+};
+#endif
+
+static __Pyx_StringTabEntry __pyx_string_tab[] = {
+  {&__pyx_n_s____main__, __pyx_k____main__, sizeof(__pyx_k____main__), 0, 0, 1, 1},
+  {&__pyx_n_s____test__, __pyx_k____test__, sizeof(__pyx_k____test__), 0, 0, 1, 1},
+  {&__pyx_n_s___objects, __pyx_k___objects, sizeof(__pyx_k___objects), 0, 0, 1, 1},
+  {&__pyx_n_s__h5py, __pyx_k__h5py, sizeof(__pyx_k__h5py), 0, 0, 1, 1},
+  {0, 0, 0, 0, 0, 0, 0}
+};
+static int __Pyx_InitCachedBuiltins(void) {
+  return 0;
+}
+
+static int __Pyx_InitCachedConstants(void) {
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0);
+  __Pyx_RefNannyFinishContext();
+  return 0;
+}
+
+static int __Pyx_InitGlobals(void) {
+  if (__Pyx_InitStrings(__pyx_string_tab) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  return 0;
+  __pyx_L1_error:;
+  return -1;
+}
+
+#if PY_MAJOR_VERSION < 3
+PyMODINIT_FUNC inith5ac(void); /*proto*/
+PyMODINIT_FUNC inith5ac(void)
+#else
+PyMODINIT_FUNC PyInit_h5ac(void); /*proto*/
+PyMODINIT_FUNC PyInit_h5ac(void)
+#endif
+{
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  __Pyx_RefNannyDeclarations
+  #if CYTHON_REFNANNY
+  __Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny");
+  if (!__Pyx_RefNanny) {
+      PyErr_Clear();
+      __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny");
+      if (!__Pyx_RefNanny)
+          Py_FatalError("failed to import 'refnanny' module");
+  }
+  #endif
+  __Pyx_RefNannySetupContext("PyMODINIT_FUNC PyInit_h5ac(void)", 0);
+  if ( __Pyx_check_binary_version() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #ifdef __Pyx_CyFunction_USED
+  if (__Pyx_CyFunction_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #endif
+  #ifdef __Pyx_FusedFunction_USED
+  if (__pyx_FusedFunction_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #endif
+  #ifdef __Pyx_Generator_USED
+  if (__pyx_Generator_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #endif
+  /*--- Library function declarations ---*/
+  /*--- Threads initialization code ---*/
+  #if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS
+  #ifdef WITH_THREAD /* Python build with threading support? */
+  PyEval_InitThreads();
+  #endif
+  #endif
+  /*--- Module creation code ---*/
+  #if PY_MAJOR_VERSION < 3
+  __pyx_m = Py_InitModule4(__Pyx_NAMESTR("h5ac"), __pyx_methods, __Pyx_DOCSTR(__pyx_k_1), 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m);
+  #else
+  __pyx_m = PyModule_Create(&__pyx_moduledef);
+  #endif
+  if (unlikely(!__pyx_m)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #if PY_MAJOR_VERSION >= 3
+  {
+    PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (!PyDict_GetItemString(modules, "h5py.h5ac")) {
+      if (unlikely(PyDict_SetItemString(modules, "h5py.h5ac", __pyx_m) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    }
+  }
+  #endif
+  __pyx_b = PyImport_AddModule(__Pyx_NAMESTR(__Pyx_BUILTIN_MODULE_NAME)); if (unlikely(!__pyx_b)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #if CYTHON_COMPILING_IN_PYPY
+  Py_INCREF(__pyx_b);
+  #endif
+  if (__Pyx_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  /*--- Initialize various global constants etc. ---*/
+  if (unlikely(__Pyx_InitGlobals() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__pyx_module_is_main_h5py__h5ac) {
+    if (__Pyx_SetAttrString(__pyx_m, "__name__", __pyx_n_s____main__) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  }
+  /*--- Builtin init code ---*/
+  if (unlikely(__Pyx_InitCachedBuiltins() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  /*--- Constants init code ---*/
+  if (unlikely(__Pyx_InitCachedConstants() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  /*--- Global init code ---*/
+  /*--- Variable export code ---*/
+  /*--- Function export code ---*/
+  /*--- Type init code ---*/
+  if (PyType_Ready(&__pyx_type_4h5py_4h5ac_CacheConfig) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetAttrString(__pyx_m, "CacheConfig", (PyObject *)&__pyx_type_4h5py_4h5ac_CacheConfig) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_4h5ac_CacheConfig = &__pyx_type_4h5py_4h5ac_CacheConfig;
+  /*--- Type import code ---*/
+  __pyx_ptype_4h5py_8_objects_ObjectID = __Pyx_ImportType("h5py._objects", "ObjectID", sizeof(struct __pyx_obj_4h5py_8_objects_ObjectID), 1); if (unlikely(!__pyx_ptype_4h5py_8_objects_ObjectID)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  /*--- Variable import code ---*/
+  /*--- Function import code ---*/
+  __pyx_t_1 = __Pyx_ImportModule("h5py._objects"); if (!__pyx_t_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "pdefault", (void (**)(void))&__pyx_f_4h5py_8_objects_pdefault, "hid_t (struct __pyx_obj_4h5py_8_objects_ObjectID *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  Py_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  /*--- Execution code ---*/
+
+  /* "h5py/h5ac.pyx":15
+ * """
+ * from _objects cimport pdefault
+ * from h5py import _objects             # <<<<<<<<<<<<<<
+ * 
+ * cdef class CacheConfig:
+ */
+  __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_INCREF(((PyObject *)__pyx_n_s___objects));
+  PyList_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_n_s___objects));
+  __Pyx_GIVEREF(((PyObject *)__pyx_n_s___objects));
+  __pyx_t_3 = __Pyx_Import(((PyObject *)__pyx_n_s__h5py), ((PyObject *)__pyx_t_2), -1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
+  __pyx_t_2 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s___objects);
+  if (__pyx_t_2 == NULL) {
+    if (PyErr_ExceptionMatches(PyExc_AttributeError)) __Pyx_RaiseImportError(__pyx_n_s___objects);
+    if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  }
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s___objects, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+  /* "h5py/h5ac.pyx":1
+ * # This file is part of h5py, a Python interface to the HDF5 library.             # <<<<<<<<<<<<<<
+ * #
+ * # http://www.h5py.org
+ */
+  __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(((PyObject *)__pyx_t_3));
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s____test__, ((PyObject *)__pyx_t_3)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  if (__pyx_m) {
+    __Pyx_AddTraceback("init h5py.h5ac", __pyx_clineno, __pyx_lineno, __pyx_filename);
+    Py_DECREF(__pyx_m); __pyx_m = 0;
+  } else if (!PyErr_Occurred()) {
+    PyErr_SetString(PyExc_ImportError, "init h5py.h5ac");
+  }
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  #if PY_MAJOR_VERSION < 3
+  return;
+  #else
+  return __pyx_m;
+  #endif
+}
+
+/* Runtime support code */
+#if CYTHON_REFNANNY
+static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) {
+    PyObject *m = NULL, *p = NULL;
+    void *r = NULL;
+    m = PyImport_ImportModule((char *)modname);
+    if (!m) goto end;
+    p = PyObject_GetAttrString(m, (char *)"RefNannyAPI");
+    if (!p) goto end;
+    r = PyLong_AsVoidPtr(p);
+end:
+    Py_XDECREF(p);
+    Py_XDECREF(m);
+    return (__Pyx_RefNannyAPIStruct *)r;
+}
+#endif /* CYTHON_REFNANNY */
+
+static void __Pyx_RaiseArgtupleInvalid(
+    const char* func_name,
+    int exact,
+    Py_ssize_t num_min,
+    Py_ssize_t num_max,
+    Py_ssize_t num_found)
+{
+    Py_ssize_t num_expected;
+    const char *more_or_less;
+    if (num_found < num_min) {
+        num_expected = num_min;
+        more_or_less = "at least";
+    } else {
+        num_expected = num_max;
+        more_or_less = "at most";
+    }
+    if (exact) {
+        more_or_less = "exactly";
+    }
+    PyErr_Format(PyExc_TypeError,
+                 "%s() takes %s %" CYTHON_FORMAT_SSIZE_T "d positional argument%s (%" CYTHON_FORMAT_SSIZE_T "d given)",
+                 func_name, more_or_less, num_expected,
+                 (num_expected == 1) ? "" : "s", num_found);
+}
+
+static CYTHON_INLINE int __Pyx_CheckKeywordStrings(
+    PyObject *kwdict,
+    const char* function_name,
+    int kw_allowed)
+{
+    PyObject* key = 0;
+    Py_ssize_t pos = 0;
+#if CPYTHON_COMPILING_IN_PYPY
+    if (!kw_allowed && PyDict_Next(kwdict, &pos, &key, 0))
+        goto invalid_keyword;
+    return 1;
+#else
+    while (PyDict_Next(kwdict, &pos, &key, 0)) {
+        #if PY_MAJOR_VERSION < 3
+        if (unlikely(!PyString_CheckExact(key)) && unlikely(!PyString_Check(key)))
+        #endif
+            if (unlikely(!PyUnicode_Check(key)))
+                goto invalid_keyword_type;
+    }
+    if ((!kw_allowed) && unlikely(key))
+        goto invalid_keyword;
+    return 1;
+invalid_keyword_type:
+    PyErr_Format(PyExc_TypeError,
+        "%s() keywords must be strings", function_name);
+    return 0;
+#endif
+invalid_keyword:
+    PyErr_Format(PyExc_TypeError,
+    #if PY_MAJOR_VERSION < 3
+        "%s() got an unexpected keyword argument '%s'",
+        function_name, PyString_AsString(key));
+    #else
+        "%s() got an unexpected keyword argument '%U'",
+        function_name, key);
+    #endif
+    return 0;
+}
+
+static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) {
+    PyObject *empty_list = 0;
+    PyObject *module = 0;
+    PyObject *global_dict = 0;
+    PyObject *empty_dict = 0;
+    PyObject *list;
+    #if PY_VERSION_HEX < 0x03030000
+    PyObject *py_import = 0;
+    py_import = __Pyx_GetAttrString(__pyx_b, "__import__");
+    if (!py_import)
+        goto bad;
+    #endif
+    if (from_list)
+        list = from_list;
+    else {
+        empty_list = PyList_New(0);
+        if (!empty_list)
+            goto bad;
+        list = empty_list;
+    }
+    global_dict = PyModule_GetDict(__pyx_m);
+    if (!global_dict)
+        goto bad;
+    empty_dict = PyDict_New();
+    if (!empty_dict)
+        goto bad;
+    #if PY_VERSION_HEX >= 0x02050000
+    {
+        #if PY_MAJOR_VERSION >= 3
+        if (level == -1) {
+            if (strchr(__Pyx_MODULE_NAME, '.')) {
+                #if PY_VERSION_HEX < 0x03030000
+                PyObject *py_level = PyInt_FromLong(1);
+                if (!py_level)
+                    goto bad;
+                module = PyObject_CallFunctionObjArgs(py_import,
+                    name, global_dict, empty_dict, list, py_level, NULL);
+                Py_DECREF(py_level);
+                #else
+                module = PyImport_ImportModuleLevelObject(
+                    name, global_dict, empty_dict, list, 1);
+                #endif
+                if (!module) {
+                    if (!PyErr_ExceptionMatches(PyExc_ImportError))
+                        goto bad;
+                    PyErr_Clear();
+                }
+            }
+            level = 0; /* try absolute import on failure */
+        }
+        #endif
+        if (!module) {
+            #if PY_VERSION_HEX < 0x03030000
+            PyObject *py_level = PyInt_FromLong(level);
+            if (!py_level)
+                goto bad;
+            module = PyObject_CallFunctionObjArgs(py_import,
+                name, global_dict, empty_dict, list, py_level, NULL);
+            Py_DECREF(py_level);
+            #else
+            module = PyImport_ImportModuleLevelObject(
+                name, global_dict, empty_dict, list, level);
+            #endif
+        }
+    }
+    #else
+    if (level>0) {
+        PyErr_SetString(PyExc_RuntimeError, "Relative import is not supported for Python <=2.4.");
+        goto bad;
+    }
+    module = PyObject_CallFunctionObjArgs(py_import,
+        name, global_dict, empty_dict, list, NULL);
+    #endif
+bad:
+    #if PY_VERSION_HEX < 0x03030000
+    Py_XDECREF(py_import);
+    #endif
+    Py_XDECREF(empty_list);
+    Py_XDECREF(empty_dict);
+    return module;
+}
+
+static CYTHON_INLINE void __Pyx_RaiseImportError(PyObject *name) {
+#if PY_MAJOR_VERSION < 3
+    PyErr_Format(PyExc_ImportError, "cannot import name %.230s",
+                 PyString_AsString(name));
+#else
+    PyErr_Format(PyExc_ImportError, "cannot import name %S", name);
+#endif
+}
+
+static CYTHON_INLINE hbool_t __Pyx_PyInt_from_py_hbool_t(PyObject* x) {
+    const hbool_t neg_one = (hbool_t)-1, const_zero = (hbool_t)0;
+    const int is_unsigned = const_zero < neg_one;
+    if (sizeof(hbool_t) == sizeof(char)) {
+        if (is_unsigned)
+            return (hbool_t)__Pyx_PyInt_AsUnsignedChar(x);
+        else
+            return (hbool_t)__Pyx_PyInt_AsSignedChar(x);
+    } else if (sizeof(hbool_t) == sizeof(short)) {
+        if (is_unsigned)
+            return (hbool_t)__Pyx_PyInt_AsUnsignedShort(x);
+        else
+            return (hbool_t)__Pyx_PyInt_AsSignedShort(x);
+    } else if (sizeof(hbool_t) == sizeof(int)) {
+        if (is_unsigned)
+            return (hbool_t)__Pyx_PyInt_AsUnsignedInt(x);
+        else
+            return (hbool_t)__Pyx_PyInt_AsSignedInt(x);
+    } else if (sizeof(hbool_t) == sizeof(long)) {
+        if (is_unsigned)
+            return (hbool_t)__Pyx_PyInt_AsUnsignedLong(x);
+        else
+            return (hbool_t)__Pyx_PyInt_AsSignedLong(x);
+    } else if (sizeof(hbool_t) == sizeof(PY_LONG_LONG)) {
+        if (is_unsigned)
+            return (hbool_t)__Pyx_PyInt_AsUnsignedLongLong(x);
+        else
+            return (hbool_t)__Pyx_PyInt_AsSignedLongLong(x);
+    }  else {
+        #if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
+        PyErr_SetString(PyExc_RuntimeError,
+                        "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
+        #else
+        hbool_t val;
+        PyObject *v = __Pyx_PyNumber_Int(x);
+        #if PY_VERSION_HEX < 0x03000000
+        if (likely(v) && !PyLong_Check(v)) {
+            PyObject *tmp = v;
+            v = PyNumber_Long(tmp);
+            Py_DECREF(tmp);
+        }
+        #endif
+        if (likely(v)) {
+            int one = 1; int is_little = (int)*(unsigned char *)&one;
+            unsigned char *bytes = (unsigned char *)&val;
+            int ret = _PyLong_AsByteArray((PyLongObject *)v,
+                                          bytes, sizeof(val),
+                                          is_little, !is_unsigned);
+            Py_DECREF(v);
+            if (likely(!ret))
+                return val;
+        }
+        #endif
+        return (hbool_t)-1;
+    }
+}
+
+static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_hbool_t(hbool_t val) {
+    const hbool_t neg_one = (hbool_t)-1, const_zero = (hbool_t)0;
+    const int is_unsigned = const_zero < neg_one;
+    if ((sizeof(hbool_t) == sizeof(char))  ||
+        (sizeof(hbool_t) == sizeof(short))) {
+        return PyInt_FromLong((long)val);
+    } else if ((sizeof(hbool_t) == sizeof(int)) ||
+               (sizeof(hbool_t) == sizeof(long))) {
+        if (is_unsigned)
+            return PyLong_FromUnsignedLong((unsigned long)val);
+        else
+            return PyInt_FromLong((long)val);
+    } else if (sizeof(hbool_t) == sizeof(PY_LONG_LONG)) {
+        if (is_unsigned)
+            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG)val);
+        else
+            return PyLong_FromLongLong((PY_LONG_LONG)val);
+    } else {
+        int one = 1; int little = (int)*(unsigned char *)&one;
+        unsigned char *bytes = (unsigned char *)&val;
+        return _PyLong_FromByteArray(bytes, sizeof(hbool_t),
+                                     little, !is_unsigned);
+    }
+}
+
+static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_hid_t(hid_t val) {
+    const hid_t neg_one = (hid_t)-1, const_zero = (hid_t)0;
+    const int is_unsigned = const_zero < neg_one;
+    if ((sizeof(hid_t) == sizeof(char))  ||
+        (sizeof(hid_t) == sizeof(short))) {
+        return PyInt_FromLong((long)val);
+    } else if ((sizeof(hid_t) == sizeof(int)) ||
+               (sizeof(hid_t) == sizeof(long))) {
+        if (is_unsigned)
+            return PyLong_FromUnsignedLong((unsigned long)val);
+        else
+            return PyInt_FromLong((long)val);
+    } else if (sizeof(hid_t) == sizeof(PY_LONG_LONG)) {
+        if (is_unsigned)
+            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG)val);
+        else
+            return PyLong_FromLongLong((PY_LONG_LONG)val);
+    } else {
+        int one = 1; int little = (int)*(unsigned char *)&one;
+        unsigned char *bytes = (unsigned char *)&val;
+        return _PyLong_FromByteArray(bytes, sizeof(hid_t),
+                                     little, !is_unsigned);
+    }
+}
+
+static CYTHON_INLINE unsigned char __Pyx_PyInt_AsUnsignedChar(PyObject* x) {
+    const unsigned char neg_one = (unsigned char)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(unsigned char) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(unsigned char)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to unsigned char" :
+                    "value too large to convert to unsigned char");
+            }
+            return (unsigned char)-1;
+        }
+        return (unsigned char)val;
+    }
+    return (unsigned char)__Pyx_PyInt_AsUnsignedLong(x);
+}
+
+static CYTHON_INLINE unsigned short __Pyx_PyInt_AsUnsignedShort(PyObject* x) {
+    const unsigned short neg_one = (unsigned short)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(unsigned short) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(unsigned short)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to unsigned short" :
+                    "value too large to convert to unsigned short");
+            }
+            return (unsigned short)-1;
+        }
+        return (unsigned short)val;
+    }
+    return (unsigned short)__Pyx_PyInt_AsUnsignedLong(x);
+}
+
+static CYTHON_INLINE unsigned int __Pyx_PyInt_AsUnsignedInt(PyObject* x) {
+    const unsigned int neg_one = (unsigned int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(unsigned int) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(unsigned int)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to unsigned int" :
+                    "value too large to convert to unsigned int");
+            }
+            return (unsigned int)-1;
+        }
+        return (unsigned int)val;
+    }
+    return (unsigned int)__Pyx_PyInt_AsUnsignedLong(x);
+}
+
+static CYTHON_INLINE char __Pyx_PyInt_AsChar(PyObject* x) {
+    const char neg_one = (char)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(char) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(char)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to char" :
+                    "value too large to convert to char");
+            }
+            return (char)-1;
+        }
+        return (char)val;
+    }
+    return (char)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE short __Pyx_PyInt_AsShort(PyObject* x) {
+    const short neg_one = (short)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(short) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(short)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to short" :
+                    "value too large to convert to short");
+            }
+            return (short)-1;
+        }
+        return (short)val;
+    }
+    return (short)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE int __Pyx_PyInt_AsInt(PyObject* x) {
+    const int neg_one = (int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(int) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(int)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to int" :
+                    "value too large to convert to int");
+            }
+            return (int)-1;
+        }
+        return (int)val;
+    }
+    return (int)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE signed char __Pyx_PyInt_AsSignedChar(PyObject* x) {
+    const signed char neg_one = (signed char)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(signed char) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(signed char)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to signed char" :
+                    "value too large to convert to signed char");
+            }
+            return (signed char)-1;
+        }
+        return (signed char)val;
+    }
+    return (signed char)__Pyx_PyInt_AsSignedLong(x);
+}
+
+static CYTHON_INLINE signed short __Pyx_PyInt_AsSignedShort(PyObject* x) {
+    const signed short neg_one = (signed short)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(signed short) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(signed short)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to signed short" :
+                    "value too large to convert to signed short");
+            }
+            return (signed short)-1;
+        }
+        return (signed short)val;
+    }
+    return (signed short)__Pyx_PyInt_AsSignedLong(x);
+}
+
+static CYTHON_INLINE signed int __Pyx_PyInt_AsSignedInt(PyObject* x) {
+    const signed int neg_one = (signed int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(signed int) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(signed int)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to signed int" :
+                    "value too large to convert to signed int");
+            }
+            return (signed int)-1;
+        }
+        return (signed int)val;
+    }
+    return (signed int)__Pyx_PyInt_AsSignedLong(x);
+}
+
+static CYTHON_INLINE int __Pyx_PyInt_AsLongDouble(PyObject* x) {
+    const int neg_one = (int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(int) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(int)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to int" :
+                    "value too large to convert to int");
+            }
+            return (int)-1;
+        }
+        return (int)val;
+    }
+    return (int)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE unsigned long __Pyx_PyInt_AsUnsignedLong(PyObject* x) {
+    const unsigned long neg_one = (unsigned long)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to unsigned long");
+            return (unsigned long)-1;
+        }
+        return (unsigned long)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to unsigned long");
+                return (unsigned long)-1;
+            }
+            return (unsigned long)PyLong_AsUnsignedLong(x);
+        } else {
+            return (unsigned long)PyLong_AsLong(x);
+        }
+    } else {
+        unsigned long val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (unsigned long)-1;
+        val = __Pyx_PyInt_AsUnsignedLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE unsigned PY_LONG_LONG __Pyx_PyInt_AsUnsignedLongLong(PyObject* x) {
+    const unsigned PY_LONG_LONG neg_one = (unsigned PY_LONG_LONG)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to unsigned PY_LONG_LONG");
+            return (unsigned PY_LONG_LONG)-1;
+        }
+        return (unsigned PY_LONG_LONG)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to unsigned PY_LONG_LONG");
+                return (unsigned PY_LONG_LONG)-1;
+            }
+            return (unsigned PY_LONG_LONG)PyLong_AsUnsignedLongLong(x);
+        } else {
+            return (unsigned PY_LONG_LONG)PyLong_AsLongLong(x);
+        }
+    } else {
+        unsigned PY_LONG_LONG val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (unsigned PY_LONG_LONG)-1;
+        val = __Pyx_PyInt_AsUnsignedLongLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE long __Pyx_PyInt_AsLong(PyObject* x) {
+    const long neg_one = (long)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to long");
+            return (long)-1;
+        }
+        return (long)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to long");
+                return (long)-1;
+            }
+            return (long)PyLong_AsUnsignedLong(x);
+        } else {
+            return (long)PyLong_AsLong(x);
+        }
+    } else {
+        long val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (long)-1;
+        val = __Pyx_PyInt_AsLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE PY_LONG_LONG __Pyx_PyInt_AsLongLong(PyObject* x) {
+    const PY_LONG_LONG neg_one = (PY_LONG_LONG)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to PY_LONG_LONG");
+            return (PY_LONG_LONG)-1;
+        }
+        return (PY_LONG_LONG)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to PY_LONG_LONG");
+                return (PY_LONG_LONG)-1;
+            }
+            return (PY_LONG_LONG)PyLong_AsUnsignedLongLong(x);
+        } else {
+            return (PY_LONG_LONG)PyLong_AsLongLong(x);
+        }
+    } else {
+        PY_LONG_LONG val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (PY_LONG_LONG)-1;
+        val = __Pyx_PyInt_AsLongLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE signed long __Pyx_PyInt_AsSignedLong(PyObject* x) {
+    const signed long neg_one = (signed long)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to signed long");
+            return (signed long)-1;
+        }
+        return (signed long)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to signed long");
+                return (signed long)-1;
+            }
+            return (signed long)PyLong_AsUnsignedLong(x);
+        } else {
+            return (signed long)PyLong_AsLong(x);
+        }
+    } else {
+        signed long val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (signed long)-1;
+        val = __Pyx_PyInt_AsSignedLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE signed PY_LONG_LONG __Pyx_PyInt_AsSignedLongLong(PyObject* x) {
+    const signed PY_LONG_LONG neg_one = (signed PY_LONG_LONG)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to signed PY_LONG_LONG");
+            return (signed PY_LONG_LONG)-1;
+        }
+        return (signed PY_LONG_LONG)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to signed PY_LONG_LONG");
+                return (signed PY_LONG_LONG)-1;
+            }
+            return (signed PY_LONG_LONG)PyLong_AsUnsignedLongLong(x);
+        } else {
+            return (signed PY_LONG_LONG)PyLong_AsLongLong(x);
+        }
+    } else {
+        signed PY_LONG_LONG val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (signed PY_LONG_LONG)-1;
+        val = __Pyx_PyInt_AsSignedLongLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static int __Pyx_check_binary_version(void) {
+    char ctversion[4], rtversion[4];
+    PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION);
+    PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion());
+    if (ctversion[0] != rtversion[0] || ctversion[2] != rtversion[2]) {
+        char message[200];
+        PyOS_snprintf(message, sizeof(message),
+                      "compiletime version %s of module '%.100s' "
+                      "does not match runtime version %s",
+                      ctversion, __Pyx_MODULE_NAME, rtversion);
+        #if PY_VERSION_HEX < 0x02050000
+        return PyErr_Warn(NULL, message);
+        #else
+        return PyErr_WarnEx(NULL, message, 1);
+        #endif
+    }
+    return 0;
+}
+
+#ifndef __PYX_HAVE_RT_ImportModule
+#define __PYX_HAVE_RT_ImportModule
+static PyObject *__Pyx_ImportModule(const char *name) {
+    PyObject *py_name = 0;
+    PyObject *py_module = 0;
+    py_name = __Pyx_PyIdentifier_FromString(name);
+    if (!py_name)
+        goto bad;
+    py_module = PyImport_Import(py_name);
+    Py_DECREF(py_name);
+    return py_module;
+bad:
+    Py_XDECREF(py_name);
+    return 0;
+}
+#endif
+
+#ifndef __PYX_HAVE_RT_ImportType
+#define __PYX_HAVE_RT_ImportType
+static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name,
+    size_t size, int strict)
+{
+    PyObject *py_module = 0;
+    PyObject *result = 0;
+    PyObject *py_name = 0;
+    char warning[200];
+    Py_ssize_t basicsize;
+#ifdef Py_LIMITED_API
+    PyObject *py_basicsize;
+#endif
+    py_module = __Pyx_ImportModule(module_name);
+    if (!py_module)
+        goto bad;
+    py_name = __Pyx_PyIdentifier_FromString(class_name);
+    if (!py_name)
+        goto bad;
+    result = PyObject_GetAttr(py_module, py_name);
+    Py_DECREF(py_name);
+    py_name = 0;
+    Py_DECREF(py_module);
+    py_module = 0;
+    if (!result)
+        goto bad;
+    if (!PyType_Check(result)) {
+        PyErr_Format(PyExc_TypeError,
+            "%s.%s is not a type object",
+            module_name, class_name);
+        goto bad;
+    }
+#ifndef Py_LIMITED_API
+    basicsize = ((PyTypeObject *)result)->tp_basicsize;
+#else
+    py_basicsize = PyObject_GetAttrString(result, "__basicsize__");
+    if (!py_basicsize)
+        goto bad;
+    basicsize = PyLong_AsSsize_t(py_basicsize);
+    Py_DECREF(py_basicsize);
+    py_basicsize = 0;
+    if (basicsize == (Py_ssize_t)-1 && PyErr_Occurred())
+        goto bad;
+#endif
+    if (!strict && (size_t)basicsize > size) {
+        PyOS_snprintf(warning, sizeof(warning),
+            "%s.%s size changed, may indicate binary incompatibility",
+            module_name, class_name);
+        #if PY_VERSION_HEX < 0x02050000
+        if (PyErr_Warn(NULL, warning) < 0) goto bad;
+        #else
+        if (PyErr_WarnEx(NULL, warning, 0) < 0) goto bad;
+        #endif
+    }
+    else if ((size_t)basicsize != size) {
+        PyErr_Format(PyExc_ValueError,
+            "%s.%s has the wrong size, try recompiling",
+            module_name, class_name);
+        goto bad;
+    }
+    return (PyTypeObject *)result;
+bad:
+    Py_XDECREF(py_module);
+    Py_XDECREF(result);
+    return NULL;
+}
+#endif
+
+#ifndef __PYX_HAVE_RT_ImportFunction
+#define __PYX_HAVE_RT_ImportFunction
+static int __Pyx_ImportFunction(PyObject *module, const char *funcname, void (**f)(void), const char *sig) {
+    PyObject *d = 0;
+    PyObject *cobj = 0;
+    union {
+        void (*fp)(void);
+        void *p;
+    } tmp;
+    d = PyObject_GetAttrString(module, (char *)"__pyx_capi__");
+    if (!d)
+        goto bad;
+    cobj = PyDict_GetItemString(d, funcname);
+    if (!cobj) {
+        PyErr_Format(PyExc_ImportError,
+            "%s does not export expected C function %s",
+                PyModule_GetName(module), funcname);
+        goto bad;
+    }
+#if PY_VERSION_HEX >= 0x02070000 && !(PY_MAJOR_VERSION==3 && PY_MINOR_VERSION==0)
+    if (!PyCapsule_IsValid(cobj, sig)) {
+        PyErr_Format(PyExc_TypeError,
+            "C function %s.%s has wrong signature (expected %s, got %s)",
+             PyModule_GetName(module), funcname, sig, PyCapsule_GetName(cobj));
+        goto bad;
+    }
+    tmp.p = PyCapsule_GetPointer(cobj, sig);
+#else
+    {const char *desc, *s1, *s2;
+    desc = (const char *)PyCObject_GetDesc(cobj);
+    if (!desc)
+        goto bad;
+    s1 = desc; s2 = sig;
+    while (*s1 != '\0' && *s1 == *s2) { s1++; s2++; }
+    if (*s1 != *s2) {
+        PyErr_Format(PyExc_TypeError,
+            "C function %s.%s has wrong signature (expected %s, got %s)",
+             PyModule_GetName(module), funcname, sig, desc);
+        goto bad;
+    }
+    tmp.p = PyCObject_AsVoidPtr(cobj);}
+#endif
+    *f = tmp.fp;
+    if (!(*f))
+        goto bad;
+    Py_DECREF(d);
+    return 0;
+bad:
+    Py_XDECREF(d);
+    return -1;
+}
+#endif
+
+static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) {
+    int start = 0, mid = 0, end = count - 1;
+    if (end >= 0 && code_line > entries[end].code_line) {
+        return count;
+    }
+    while (start < end) {
+        mid = (start + end) / 2;
+        if (code_line < entries[mid].code_line) {
+            end = mid;
+        } else if (code_line > entries[mid].code_line) {
+             start = mid + 1;
+        } else {
+            return mid;
+        }
+    }
+    if (code_line <= entries[mid].code_line) {
+        return mid;
+    } else {
+        return mid + 1;
+    }
+}
+static PyCodeObject *__pyx_find_code_object(int code_line) {
+    PyCodeObject* code_object;
+    int pos;
+    if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) {
+        return NULL;
+    }
+    pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
+    if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) {
+        return NULL;
+    }
+    code_object = __pyx_code_cache.entries[pos].code_object;
+    Py_INCREF(code_object);
+    return code_object;
+}
+static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) {
+    int pos, i;
+    __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries;
+    if (unlikely(!code_line)) {
+        return;
+    }
+    if (unlikely(!entries)) {
+        entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry));
+        if (likely(entries)) {
+            __pyx_code_cache.entries = entries;
+            __pyx_code_cache.max_count = 64;
+            __pyx_code_cache.count = 1;
+            entries[0].code_line = code_line;
+            entries[0].code_object = code_object;
+            Py_INCREF(code_object);
+        }
+        return;
+    }
+    pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
+    if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) {
+        PyCodeObject* tmp = entries[pos].code_object;
+        entries[pos].code_object = code_object;
+        Py_DECREF(tmp);
+        return;
+    }
+    if (__pyx_code_cache.count == __pyx_code_cache.max_count) {
+        int new_max = __pyx_code_cache.max_count + 64;
+        entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc(
+            __pyx_code_cache.entries, new_max*sizeof(__Pyx_CodeObjectCacheEntry));
+        if (unlikely(!entries)) {
+            return;
+        }
+        __pyx_code_cache.entries = entries;
+        __pyx_code_cache.max_count = new_max;
+    }
+    for (i=__pyx_code_cache.count; i>pos; i--) {
+        entries[i] = entries[i-1];
+    }
+    entries[pos].code_line = code_line;
+    entries[pos].code_object = code_object;
+    __pyx_code_cache.count++;
+    Py_INCREF(code_object);
+}
+
+#include "compile.h"
+#include "frameobject.h"
+#include "traceback.h"
+static PyCodeObject* __Pyx_CreateCodeObjectForTraceback(
+            const char *funcname, int c_line,
+            int py_line, const char *filename) {
+    PyCodeObject *py_code = 0;
+    PyObject *py_srcfile = 0;
+    PyObject *py_funcname = 0;
+    #if PY_MAJOR_VERSION < 3
+    py_srcfile = PyString_FromString(filename);
+    #else
+    py_srcfile = PyUnicode_FromString(filename);
+    #endif
+    if (!py_srcfile) goto bad;
+    if (c_line) {
+        #if PY_MAJOR_VERSION < 3
+        py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
+        #else
+        py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
+        #endif
+    }
+    else {
+        #if PY_MAJOR_VERSION < 3
+        py_funcname = PyString_FromString(funcname);
+        #else
+        py_funcname = PyUnicode_FromString(funcname);
+        #endif
+    }
+    if (!py_funcname) goto bad;
+    py_code = __Pyx_PyCode_New(
+        0,            /*int argcount,*/
+        0,            /*int kwonlyargcount,*/
+        0,            /*int nlocals,*/
+        0,            /*int stacksize,*/
+        0,            /*int flags,*/
+        __pyx_empty_bytes, /*PyObject *code,*/
+        __pyx_empty_tuple, /*PyObject *consts,*/
+        __pyx_empty_tuple, /*PyObject *names,*/
+        __pyx_empty_tuple, /*PyObject *varnames,*/
+        __pyx_empty_tuple, /*PyObject *freevars,*/
+        __pyx_empty_tuple, /*PyObject *cellvars,*/
+        py_srcfile,   /*PyObject *filename,*/
+        py_funcname,  /*PyObject *name,*/
+        py_line,      /*int firstlineno,*/
+        __pyx_empty_bytes  /*PyObject *lnotab*/
+    );
+    Py_DECREF(py_srcfile);
+    Py_DECREF(py_funcname);
+    return py_code;
+bad:
+    Py_XDECREF(py_srcfile);
+    Py_XDECREF(py_funcname);
+    return NULL;
+}
+static void __Pyx_AddTraceback(const char *funcname, int c_line,
+                               int py_line, const char *filename) {
+    PyCodeObject *py_code = 0;
+    PyObject *py_globals = 0;
+    PyFrameObject *py_frame = 0;
+    py_code = __pyx_find_code_object(c_line ? c_line : py_line);
+    if (!py_code) {
+        py_code = __Pyx_CreateCodeObjectForTraceback(
+            funcname, c_line, py_line, filename);
+        if (!py_code) goto bad;
+        __pyx_insert_code_object(c_line ? c_line : py_line, py_code);
+    }
+    py_globals = PyModule_GetDict(__pyx_m);
+    if (!py_globals) goto bad;
+    py_frame = PyFrame_New(
+        PyThreadState_GET(), /*PyThreadState *tstate,*/
+        py_code,             /*PyCodeObject *code,*/
+        py_globals,          /*PyObject *globals,*/
+        0                    /*PyObject *locals*/
+    );
+    if (!py_frame) goto bad;
+    py_frame->f_lineno = py_line;
+    PyTraceBack_Here(py_frame);
+bad:
+    Py_XDECREF(py_code);
+    Py_XDECREF(py_frame);
+}
+
+static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
+    while (t->p) {
+        #if PY_MAJOR_VERSION < 3
+        if (t->is_unicode) {
+            *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL);
+        } else if (t->intern) {
+            *t->p = PyString_InternFromString(t->s);
+        } else {
+            *t->p = PyString_FromStringAndSize(t->s, t->n - 1);
+        }
+        #else  /* Python 3+ has unicode identifiers */
+        if (t->is_unicode | t->is_str) {
+            if (t->intern) {
+                *t->p = PyUnicode_InternFromString(t->s);
+            } else if (t->encoding) {
+                *t->p = PyUnicode_Decode(t->s, t->n - 1, t->encoding, NULL);
+            } else {
+                *t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1);
+            }
+        } else {
+            *t->p = PyBytes_FromStringAndSize(t->s, t->n - 1);
+        }
+        #endif
+        if (!*t->p)
+            return -1;
+        ++t;
+    }
+    return 0;
+}
+
+static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) {
+   int is_true = x == Py_True;
+   if (is_true | (x == Py_False) | (x == Py_None)) return is_true;
+   else return PyObject_IsTrue(x);
+}
+static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x) {
+  PyNumberMethods *m;
+  const char *name = NULL;
+  PyObject *res = NULL;
+#if PY_VERSION_HEX < 0x03000000
+  if (PyInt_Check(x) || PyLong_Check(x))
+#else
+  if (PyLong_Check(x))
+#endif
+    return Py_INCREF(x), x;
+  m = Py_TYPE(x)->tp_as_number;
+#if PY_VERSION_HEX < 0x03000000
+  if (m && m->nb_int) {
+    name = "int";
+    res = PyNumber_Int(x);
+  }
+  else if (m && m->nb_long) {
+    name = "long";
+    res = PyNumber_Long(x);
+  }
+#else
+  if (m && m->nb_int) {
+    name = "int";
+    res = PyNumber_Long(x);
+  }
+#endif
+  if (res) {
+#if PY_VERSION_HEX < 0x03000000
+    if (!PyInt_Check(res) && !PyLong_Check(res)) {
+#else
+    if (!PyLong_Check(res)) {
+#endif
+      PyErr_Format(PyExc_TypeError,
+                   "__%s__ returned non-%s (type %.200s)",
+                   name, name, Py_TYPE(res)->tp_name);
+      Py_DECREF(res);
+      return NULL;
+    }
+  }
+  else if (!PyErr_Occurred()) {
+    PyErr_SetString(PyExc_TypeError,
+                    "an integer is required");
+  }
+  return res;
+}
+static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
+  Py_ssize_t ival;
+  PyObject* x = PyNumber_Index(b);
+  if (!x) return -1;
+  ival = PyInt_AsSsize_t(x);
+  Py_DECREF(x);
+  return ival;
+}
+static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) {
+#if PY_VERSION_HEX < 0x02050000
+   if (ival <= LONG_MAX)
+       return PyInt_FromLong((long)ival);
+   else {
+       unsigned char *bytes = (unsigned char *) &ival;
+       int one = 1; int little = (int)*(unsigned char*)&one;
+       return _PyLong_FromByteArray(bytes, sizeof(size_t), little, 0);
+   }
+#else
+   return PyInt_FromSize_t(ival);
+#endif
+}
+static CYTHON_INLINE size_t __Pyx_PyInt_AsSize_t(PyObject* x) {
+   unsigned PY_LONG_LONG val = __Pyx_PyInt_AsUnsignedLongLong(x);
+   if (unlikely(val == (unsigned PY_LONG_LONG)-1 && PyErr_Occurred())) {
+       return (size_t)-1;
+   } else if (unlikely(val != (unsigned PY_LONG_LONG)(size_t)val)) {
+       PyErr_SetString(PyExc_OverflowError,
+                       "value too large to convert to size_t");
+       return (size_t)-1;
+   }
+   return (size_t)val;
+}
+
+
+#endif /* Py_PYTHON_H */
diff --git a/h5py/h5ac.pxd b/h5py/h5ac.pxd
new file mode 100644
index 0000000..ce8fb7b
--- /dev/null
+++ b/h5py/h5ac.pxd
@@ -0,0 +1,13 @@
+# This file is part of h5py, a Python interface to the HDF5 library.
+#
+# http://www.h5py.org
+#
+# Copyright 2008-2013 Andrew Collette and contributors
+#
+# License:  Standard 3-clause BSD; see "license.txt" for full license terms
+#           and contributor agreement.
+
+from defs cimport *
+
+cdef class CacheConfig:
+    cdef H5AC_cache_config_t cache_config
diff --git a/h5py/h5ac.pyx b/h5py/h5ac.pyx
new file mode 100644
index 0000000..abc9c53
--- /dev/null
+++ b/h5py/h5ac.pyx
@@ -0,0 +1,187 @@
+# This file is part of h5py, a Python interface to the HDF5 library.
+#
+# http://www.h5py.org
+#
+# Copyright 2008-2013 Andrew Collette and contributors
+#
+# License:  Standard 3-clause BSD; see "license.txt" for full license terms
+#           and contributor agreement.
+
+
+"""
+    Low-level HDF5 "H5AC" cache configuration interface.
+"""
+from _objects cimport pdefault
+from h5py import _objects
+
+cdef class CacheConfig:
+    """Represents H5AC_cache_config_t objects
+
+    """
+
+    #cdef H5AC_cache_config_t cache_config
+    #     /* general configuration fields: */
+    def __cinit__(self):
+        self.cache_config.version = H5AC__CURR_CACHE_CONFIG_VERSION
+
+    property version:
+        def __get__(self):
+            return self.cache_config.version
+        def __set__(self, int val):
+            self.cache_config.version = val
+
+    property rpt_fcn_enabled:
+        def __get__(self):
+            return self.cache_config.rpt_fcn_enabled
+        def __set__(self, hbool_t val):
+            self.cache_config.rpt_fcn_enabled = val
+
+    property evictions_enabled:
+        def __get__(self):
+            return self.cache_config.evictions_enabled
+        def __set__(self, hbool_t val):
+            self.cache_config.evictions_enabled = val
+
+    property set_initial_size:
+        def __get__(self):
+            return self.cache_config.set_initial_size
+        def __set__(self, hbool_t val):
+            self.cache_config.set_initial_size = val
+
+    property initial_size:
+        def __get__(self):
+            return self.cache_config.initial_size
+        def __set__(self, size_t val):
+            self.cache_config.initial_size = val
+
+    property min_clean_fraction:
+        def __get__(self):
+            return self.cache_config.min_clean_fraction
+        def __set__(self, double val):
+            self.cache_config.min_clean_fraction = val
+
+    property max_size:
+        def __get__(self):
+            return self.cache_config.max_size
+        def __set__(self, size_t val):
+            self.cache_config.max_size = val
+
+    property min_size:
+        def __get__(self):
+            return self.cache_config.min_size
+        def __set__(self, size_t val):
+            self.cache_config.min_size = val
+
+    property epoch_length:
+        def __get__(self):
+            return self.cache_config.epoch_length
+        def __set__(self, long int val):
+            self.cache_config.epoch_length = val
+
+    #    /* size increase control fields: */
+    property incr_mode:
+        def __get__(self):
+            return self.cache_config.incr_mode
+        def __set__(self, H5C_cache_incr_mode val):
+            self.cache_config.incr_mode = val
+
+    property lower_hr_threshold:
+        def __get__(self):
+            return self.cache_config.lower_hr_threshold
+        def __set__(self, double val):
+            self.cache_config.lower_hr_threshold = val
+
+    property increment:
+        def __get__(self):
+            return self.cache_config.increment
+        def __set__(self, double val):
+            self.cache_config.increment = val
+
+    property apply_max_increment:
+        def __get__(self):
+            return self.cache_config.apply_max_increment
+        def __set__(self, hbool_t val):
+            self.cache_config.apply_max_increment = val
+
+    property max_increment:
+        def __get__(self):
+            return self.cache_config.max_increment
+        def __set__(self, size_t val):
+            self.cache_config.max_increment = val
+
+    property flash_incr_mode:
+        def __get__(self):
+            return self.cache_config.flash_incr_mode
+        def __set__(self, H5C_cache_flash_incr_mode val):
+            self.cache_config.flash_incr_mode = val
+
+    property flash_multiple:
+        def __get__(self):
+            return self.cache_config.flash_multiple
+        def __set__(self, double val):
+            self.cache_config.flash_multiple = val
+
+    property flash_threshold:
+        def __get__(self):
+            return self.cache_config.flash_threshold
+        def __set__(self, double val):
+            self.cache_config.flash_threshold = val
+
+    # /* size decrease control fields: */
+    property decr_mode:
+        def __get__(self):
+            return self.cache_config.decr_mode
+        def __set__(self, H5C_cache_decr_mode val):
+            self.cache_config.decr_mode = val
+
+    property upper_hr_threshold:
+        def __get__(self):
+            return self.cache_config.upper_hr_threshold
+        def __set__(self, double val):
+            self.cache_config.upper_hr_threshold = val
+
+    property decrement:
+        def __get__(self):
+            return self.cache_config.decrement
+        def __set__(self, double val):
+            self.cache_config.decrement = val
+
+    property apply_max_decrement:
+        def __get__(self):
+            return self.cache_config.apply_max_decrement
+        def __set__(self, hbool_t val):
+            self.cache_config.apply_max_decrement = val
+
+    property max_decrement:
+        def __get__(self):
+            return self.cache_config.max_decrement
+        def __set__(self, size_t val):
+            self.cache_config.max_decrement = val
+
+    property epochs_before_eviction:
+        def __get__(self):
+            return self.cache_config.epochs_before_eviction
+        def __set__(self, int val):
+            self.cache_config.epochs_before_eviction = val
+
+
+
+    property apply_empty_reserve:
+        def __get__(self):
+            return self.cache_config.apply_empty_reserve
+        def __set__(self, hbool_t val):
+            self.cache_config.apply_empty_reserve = val
+
+
+    property empty_reserve:
+        def __get__(self):
+            return self.cache_config.empty_reserve
+        def __set__(self, double val):
+            self.cache_config.empty_reserve = val
+
+    # /* parallel configuration fields: */
+    property dirty_bytes_threshold:
+        def __get__(self):
+            return self.cache_config.dirty_bytes_threshold
+        def __set__(self, int val):
+            self.cache_config.dirty_bytes_threshold = val
diff --git a/h5py/h5d.c b/h5py/h5d.c
new file mode 100644
index 0000000..d65295d
--- /dev/null
+++ b/h5py/h5d.c
@@ -0,0 +1,6009 @@
+/* Generated by Cython 0.18 on Mon Dec  9 16:00:33 2013 */
+
+#define PY_SSIZE_T_CLEAN
+#include "Python.h"
+#ifndef Py_PYTHON_H
+    #error Python headers needed to compile C extensions, please install development version of Python.
+#elif PY_VERSION_HEX < 0x02040000
+    #error Cython requires Python 2.4+.
+#else
+#include <stddef.h> /* For offsetof */
+#ifndef offsetof
+#define offsetof(type, member) ( (size_t) & ((type*)0) -> member )
+#endif
+#if !defined(WIN32) && !defined(MS_WINDOWS)
+  #ifndef __stdcall
+    #define __stdcall
+  #endif
+  #ifndef __cdecl
+    #define __cdecl
+  #endif
+  #ifndef __fastcall
+    #define __fastcall
+  #endif
+#endif
+#ifndef DL_IMPORT
+  #define DL_IMPORT(t) t
+#endif
+#ifndef DL_EXPORT
+  #define DL_EXPORT(t) t
+#endif
+#ifndef PY_LONG_LONG
+  #define PY_LONG_LONG LONG_LONG
+#endif
+#ifndef Py_HUGE_VAL
+  #define Py_HUGE_VAL HUGE_VAL
+#endif
+#ifdef PYPY_VERSION
+#define CYTHON_COMPILING_IN_PYPY 1
+#define CYTHON_COMPILING_IN_CPYTHON 0
+#else
+#define CYTHON_COMPILING_IN_PYPY 0
+#define CYTHON_COMPILING_IN_CPYTHON 1
+#endif
+#if PY_VERSION_HEX < 0x02050000
+  typedef int Py_ssize_t;
+  #define PY_SSIZE_T_MAX INT_MAX
+  #define PY_SSIZE_T_MIN INT_MIN
+  #define PY_FORMAT_SIZE_T ""
+  #define CYTHON_FORMAT_SSIZE_T ""
+  #define PyInt_FromSsize_t(z) PyInt_FromLong(z)
+  #define PyInt_AsSsize_t(o)   __Pyx_PyInt_AsInt(o)
+  #define PyNumber_Index(o)    ((PyNumber_Check(o) && !PyFloat_Check(o)) ? PyNumber_Int(o) : \
+                                (PyErr_Format(PyExc_TypeError, \
+                                              "expected index value, got %.200s", Py_TYPE(o)->tp_name), \
+                                 (PyObject*)0))
+  #define __Pyx_PyIndex_Check(o) (PyNumber_Check(o) && !PyFloat_Check(o) && \
+                                  !PyComplex_Check(o))
+  #define PyIndex_Check __Pyx_PyIndex_Check
+  #define PyErr_WarnEx(category, message, stacklevel) PyErr_Warn(category, message)
+  #define __PYX_BUILD_PY_SSIZE_T "i"
+#else
+  #define __PYX_BUILD_PY_SSIZE_T "n"
+  #define CYTHON_FORMAT_SSIZE_T "z"
+  #define __Pyx_PyIndex_Check PyIndex_Check
+#endif
+#if PY_VERSION_HEX < 0x02060000
+  #define Py_REFCNT(ob) (((PyObject*)(ob))->ob_refcnt)
+  #define Py_TYPE(ob)   (((PyObject*)(ob))->ob_type)
+  #define Py_SIZE(ob)   (((PyVarObject*)(ob))->ob_size)
+  #define PyVarObject_HEAD_INIT(type, size) \
+          PyObject_HEAD_INIT(type) size,
+  #define PyType_Modified(t)
+  typedef struct {
+     void *buf;
+     PyObject *obj;
+     Py_ssize_t len;
+     Py_ssize_t itemsize;
+     int readonly;
+     int ndim;
+     char *format;
+     Py_ssize_t *shape;
+     Py_ssize_t *strides;
+     Py_ssize_t *suboffsets;
+     void *internal;
+  } Py_buffer;
+  #define PyBUF_SIMPLE 0
+  #define PyBUF_WRITABLE 0x0001
+  #define PyBUF_FORMAT 0x0004
+  #define PyBUF_ND 0x0008
+  #define PyBUF_STRIDES (0x0010 | PyBUF_ND)
+  #define PyBUF_C_CONTIGUOUS (0x0020 | PyBUF_STRIDES)
+  #define PyBUF_F_CONTIGUOUS (0x0040 | PyBUF_STRIDES)
+  #define PyBUF_ANY_CONTIGUOUS (0x0080 | PyBUF_STRIDES)
+  #define PyBUF_INDIRECT (0x0100 | PyBUF_STRIDES)
+  #define PyBUF_RECORDS (PyBUF_STRIDES | PyBUF_FORMAT | PyBUF_WRITABLE)
+  #define PyBUF_FULL (PyBUF_INDIRECT | PyBUF_FORMAT | PyBUF_WRITABLE)
+  typedef int (*getbufferproc)(PyObject *, Py_buffer *, int);
+  typedef void (*releasebufferproc)(PyObject *, Py_buffer *);
+#endif
+#if PY_MAJOR_VERSION < 3
+  #define __Pyx_BUILTIN_MODULE_NAME "__builtin__"
+  #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) \
+          PyCode_New(a, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
+#else
+  #define __Pyx_BUILTIN_MODULE_NAME "builtins"
+  #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) \
+          PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
+#endif
+#if PY_MAJOR_VERSION < 3 && PY_MINOR_VERSION < 6
+  #define PyUnicode_FromString(s) PyUnicode_Decode(s, strlen(s), "UTF-8", "strict")
+#endif
+#if PY_MAJOR_VERSION >= 3
+  #define Py_TPFLAGS_CHECKTYPES 0
+  #define Py_TPFLAGS_HAVE_INDEX 0
+#endif
+#if (PY_VERSION_HEX < 0x02060000) || (PY_MAJOR_VERSION >= 3)
+  #define Py_TPFLAGS_HAVE_NEWBUFFER 0
+#endif
+#if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND)
+  #define CYTHON_PEP393_ENABLED 1
+  #define __Pyx_PyUnicode_READY(op)       (likely(PyUnicode_IS_READY(op)) ? \
+                                              0 : _PyUnicode_Ready((PyObject *)(op)))
+  #define __Pyx_PyUnicode_GET_LENGTH(u)   PyUnicode_GET_LENGTH(u)
+  #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i)
+  #define __Pyx_PyUnicode_READ(k, d, i)   PyUnicode_READ(k, d, i)
+#else
+  #define CYTHON_PEP393_ENABLED 0
+  #define __Pyx_PyUnicode_READY(op)       (0)
+  #define __Pyx_PyUnicode_GET_LENGTH(u)   PyUnicode_GET_SIZE(u)
+  #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i]))
+  #define __Pyx_PyUnicode_READ(k, d, i)   ((k=k), (Py_UCS4)(((Py_UNICODE*)d)[i]))
+#endif
+#if PY_MAJOR_VERSION >= 3
+  #define PyBaseString_Type            PyUnicode_Type
+  #define PyStringObject               PyUnicodeObject
+  #define PyString_Type                PyUnicode_Type
+  #define PyString_Check               PyUnicode_Check
+  #define PyString_CheckExact          PyUnicode_CheckExact
+#endif
+#if PY_VERSION_HEX < 0x02060000
+  #define PyBytesObject                PyStringObject
+  #define PyBytes_Type                 PyString_Type
+  #define PyBytes_Check                PyString_Check
+  #define PyBytes_CheckExact           PyString_CheckExact
+  #define PyBytes_FromString           PyString_FromString
+  #define PyBytes_FromStringAndSize    PyString_FromStringAndSize
+  #define PyBytes_FromFormat           PyString_FromFormat
+  #define PyBytes_DecodeEscape         PyString_DecodeEscape
+  #define PyBytes_AsString             PyString_AsString
+  #define PyBytes_AsStringAndSize      PyString_AsStringAndSize
+  #define PyBytes_Size                 PyString_Size
+  #define PyBytes_AS_STRING            PyString_AS_STRING
+  #define PyBytes_GET_SIZE             PyString_GET_SIZE
+  #define PyBytes_Repr                 PyString_Repr
+  #define PyBytes_Concat               PyString_Concat
+  #define PyBytes_ConcatAndDel         PyString_ConcatAndDel
+#endif
+#if PY_VERSION_HEX < 0x02060000
+  #define PySet_Check(obj)             PyObject_TypeCheck(obj, &PySet_Type)
+  #define PyFrozenSet_Check(obj)       PyObject_TypeCheck(obj, &PyFrozenSet_Type)
+#endif
+#ifndef PySet_CheckExact
+  #define PySet_CheckExact(obj)        (Py_TYPE(obj) == &PySet_Type)
+#endif
+#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type)
+#if PY_MAJOR_VERSION >= 3
+  #define PyIntObject                  PyLongObject
+  #define PyInt_Type                   PyLong_Type
+  #define PyInt_Check(op)              PyLong_Check(op)
+  #define PyInt_CheckExact(op)         PyLong_CheckExact(op)
+  #define PyInt_FromString             PyLong_FromString
+  #define PyInt_FromUnicode            PyLong_FromUnicode
+  #define PyInt_FromLong               PyLong_FromLong
+  #define PyInt_FromSize_t             PyLong_FromSize_t
+  #define PyInt_FromSsize_t            PyLong_FromSsize_t
+  #define PyInt_AsLong                 PyLong_AsLong
+  #define PyInt_AS_LONG                PyLong_AS_LONG
+  #define PyInt_AsSsize_t              PyLong_AsSsize_t
+  #define PyInt_AsUnsignedLongMask     PyLong_AsUnsignedLongMask
+  #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask
+#endif
+#if PY_MAJOR_VERSION >= 3
+  #define PyBoolObject                 PyLongObject
+#endif
+#if PY_VERSION_HEX < 0x03020000
+  typedef long Py_hash_t;
+  #define __Pyx_PyInt_FromHash_t PyInt_FromLong
+  #define __Pyx_PyInt_AsHash_t   PyInt_AsLong
+#else
+  #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t
+  #define __Pyx_PyInt_AsHash_t   PyInt_AsSsize_t
+#endif
+#if (PY_MAJOR_VERSION < 3) || (PY_VERSION_HEX >= 0x03010300)
+  #define __Pyx_PySequence_GetSlice(obj, a, b) PySequence_GetSlice(obj, a, b)
+  #define __Pyx_PySequence_SetSlice(obj, a, b, value) PySequence_SetSlice(obj, a, b, value)
+  #define __Pyx_PySequence_DelSlice(obj, a, b) PySequence_DelSlice(obj, a, b)
+#else
+  #define __Pyx_PySequence_GetSlice(obj, a, b) (unlikely(!(obj)) ? \
+        (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), (PyObject*)0) : \
+        (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_GetSlice(obj, a, b)) : \
+            (PyErr_Format(PyExc_TypeError, "'%.200s' object is unsliceable", (obj)->ob_type->tp_name), (PyObject*)0)))
+  #define __Pyx_PySequence_SetSlice(obj, a, b, value) (unlikely(!(obj)) ? \
+        (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), -1) : \
+        (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_SetSlice(obj, a, b, value)) : \
+            (PyErr_Format(PyExc_TypeError, "'%.200s' object doesn't support slice assignment", (obj)->ob_type->tp_name), -1)))
+  #define __Pyx_PySequence_DelSlice(obj, a, b) (unlikely(!(obj)) ? \
+        (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), -1) : \
+        (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_DelSlice(obj, a, b)) : \
+            (PyErr_Format(PyExc_TypeError, "'%.200s' object doesn't support slice deletion", (obj)->ob_type->tp_name), -1)))
+#endif
+#if PY_MAJOR_VERSION >= 3
+  #define PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, self) : PyInstanceMethod_New(func))
+#endif
+#if PY_VERSION_HEX < 0x02050000
+  #define __Pyx_GetAttrString(o,n)   PyObject_GetAttrString((o),((char *)(n)))
+  #define __Pyx_SetAttrString(o,n,a) PyObject_SetAttrString((o),((char *)(n)),(a))
+  #define __Pyx_DelAttrString(o,n)   PyObject_DelAttrString((o),((char *)(n)))
+#else
+  #define __Pyx_GetAttrString(o,n)   PyObject_GetAttrString((o),(n))
+  #define __Pyx_SetAttrString(o,n,a) PyObject_SetAttrString((o),(n),(a))
+  #define __Pyx_DelAttrString(o,n)   PyObject_DelAttrString((o),(n))
+#endif
+#if PY_VERSION_HEX < 0x02050000
+  #define __Pyx_NAMESTR(n) ((char *)(n))
+  #define __Pyx_DOCSTR(n)  ((char *)(n))
+#else
+  #define __Pyx_NAMESTR(n) (n)
+  #define __Pyx_DOCSTR(n)  (n)
+#endif
+
+
+#if PY_MAJOR_VERSION >= 3
+  #define __Pyx_PyNumber_Divide(x,y)         PyNumber_TrueDivide(x,y)
+  #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceTrueDivide(x,y)
+#else
+  #define __Pyx_PyNumber_Divide(x,y)         PyNumber_Divide(x,y)
+  #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceDivide(x,y)
+#endif
+
+#ifndef __PYX_EXTERN_C
+  #ifdef __cplusplus
+    #define __PYX_EXTERN_C extern "C"
+  #else
+    #define __PYX_EXTERN_C extern
+  #endif
+#endif
+
+#if defined(WIN32) || defined(MS_WINDOWS)
+#define _USE_MATH_DEFINES
+#endif
+#include <math.h>
+#define __PYX_HAVE__h5py__h5d
+#define __PYX_HAVE_API__h5py__h5d
+#include "stdlib.h"
+#include "string.h"
+#include "time.h"
+#include "unistd.h"
+#include "stdint.h"
+#include "api_compat.h"
+#include "lzf_filter.h"
+#include "hdf5.h"
+#include "H5Cpublic.h"
+#include "hdf5_hl.h"
+#include "numpy/arrayobject.h"
+#ifdef _OPENMP
+#include <omp.h>
+#endif /* _OPENMP */
+
+#ifdef PYREX_WITHOUT_ASSERTIONS
+#define CYTHON_WITHOUT_ASSERTIONS
+#endif
+
+#ifndef CYTHON_INLINE
+  #if defined(__GNUC__)
+    #define CYTHON_INLINE __inline__
+  #elif defined(_MSC_VER)
+    #define CYTHON_INLINE __inline
+  #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+    #define CYTHON_INLINE inline
+  #else
+    #define CYTHON_INLINE
+  #endif
+#endif
+#ifndef CYTHON_UNUSED
+# if defined(__GNUC__)
+#   if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
+#     define CYTHON_UNUSED __attribute__ ((__unused__))
+#   else
+#     define CYTHON_UNUSED
+#   endif
+# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER))
+#   define CYTHON_UNUSED __attribute__ ((__unused__))
+# else
+#   define CYTHON_UNUSED
+# endif
+#endif
+typedef struct {PyObject **p; char *s; const long n; const char* encoding; const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; /*proto*/
+
+#define __Pyx_PyBytes_FromUString(s) PyBytes_FromString((char*)s)
+#define __Pyx_PyBytes_AsUString(s)   ((unsigned char*) PyBytes_AsString(s))
+#define __Pyx_Owned_Py_None(b) (Py_INCREF(Py_None), Py_None)
+#define __Pyx_PyBool_FromLong(b) ((b) ? (Py_INCREF(Py_True), Py_True) : (Py_INCREF(Py_False), Py_False))
+static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*);
+static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x);
+static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*);
+static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t);
+static CYTHON_INLINE size_t __Pyx_PyInt_AsSize_t(PyObject*);
+#if CYTHON_COMPILING_IN_CPYTHON
+#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x))
+#else
+#define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x)
+#endif
+#define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x))
+
+
+#ifdef __GNUC__
+  /* Test for GCC > 2.95 */
+  #if __GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))
+    #define likely(x)   __builtin_expect(!!(x), 1)
+    #define unlikely(x) __builtin_expect(!!(x), 0)
+  #else /* __GNUC__ > 2 ... */
+    #define likely(x)   (x)
+    #define unlikely(x) (x)
+  #endif /* __GNUC__ > 2 ... */
+#else /* __GNUC__ */
+  #define likely(x)   (x)
+  #define unlikely(x) (x)
+#endif /* __GNUC__ */
+    
+static PyObject *__pyx_m;
+static PyObject *__pyx_b;
+static PyObject *__pyx_empty_tuple;
+static PyObject *__pyx_empty_bytes;
+static int __pyx_lineno;
+static int __pyx_clineno = 0;
+static const char * __pyx_cfilenm= __FILE__;
+static const char *__pyx_filename;
+
+
+static const char *__pyx_f[] = {
+  "h5d.pyx",
+  "numpy.pxd",
+  "h5t.pxd",
+  "h5s.pxd",
+  "h5p.pxd",
+};
+
+/*--- Type declarations ---*/
+struct __pyx_obj_4h5py_8_objects_ObjectID;
+struct __pyx_obj_4h5py_3h5p_PropID;
+struct __pyx_obj_4h5py_3h5p_PropInstanceID;
+struct __pyx_obj_4h5py_3h5p_PropFAID;
+struct __pyx_obj_4h5py_3h5t_TypeID;
+struct __pyx_obj_4h5py_3h5t_TypeBitfieldID;
+struct __pyx_obj_4h5py_3h5p_PropCreateID;
+struct __pyx_obj_4h5py_3h5p_PropFCID;
+struct __pyx_obj_4h5py_3h5p_PropClassID;
+struct __pyx_obj_4h5py_3h5t_TypeCompositeID;
+struct __pyx_obj_4h5py_3h5t_TypeCompoundID;
+struct __pyx_obj_4h5py_3h5t_TypeVlenID;
+struct __pyx_obj_4h5py_3h5p_PropOCID;
+struct __pyx_obj_4h5py_3h5p_PropLCID;
+struct __pyx_obj_4h5py_3h5p_PropGCID;
+struct __pyx_obj_4h5py_3h5p_PropDCID;
+struct __pyx_obj_4h5py_3h5t_TypeTimeID;
+struct __pyx_obj_4h5py_3h5t_TypeArrayID;
+struct __pyx_obj_4h5py_3h5t_TypeAtomicID;
+struct __pyx_obj_4h5py_3h5t_TypeFloatID;
+struct __pyx_obj_4h5py_3h5t_TypeStringID;
+struct __pyx_obj_4h5py_3h5t_TypeOpaqueID;
+struct __pyx_obj_4h5py_3h5t_TypeEnumID;
+struct __pyx_obj_4h5py_3h5p_PropCopyID;
+struct __pyx_obj_4h5py_3h5t_TypeIntegerID;
+struct __pyx_obj_4h5py_3h5t_TypeReferenceID;
+struct __pyx_obj_4h5py_3h5p_PropDXID;
+struct __pyx_obj_4h5py_3h5d_DatasetID;
+struct __pyx_obj_4h5py_3h5s_SpaceID;
+struct __pyx_obj_4h5py_3h5p_PropLAID;
+struct __pyx_opt_args_4h5py_5utils_check_numpy_read;
+struct __pyx_opt_args_4h5py_5utils_check_numpy_write;
+
+/* "utils.pxd":17
+ * cdef void efree(void* ptr)
+ * 
+ * cpdef int check_numpy_read(ndarray arr, hid_t space_id=*) except -1             # <<<<<<<<<<<<<<
+ * cpdef int check_numpy_write(ndarray arr, hid_t space_id=*) except -1
+ * 
+ */
+struct __pyx_opt_args_4h5py_5utils_check_numpy_read {
+  int __pyx_n;
+  hid_t space_id;
+};
+
+/* "utils.pxd":18
+ * 
+ * cpdef int check_numpy_read(ndarray arr, hid_t space_id=*) except -1
+ * cpdef int check_numpy_write(ndarray arr, hid_t space_id=*) except -1             # <<<<<<<<<<<<<<
+ * 
+ * cdef int convert_tuple(object tuple, hsize_t *dims, hsize_t rank) except -1
+ */
+struct __pyx_opt_args_4h5py_5utils_check_numpy_write {
+  int __pyx_n;
+  hid_t space_id;
+};
+struct __pyx_opt_args_4h5py_3h5t_py_create;
+
+/* "h5t.pxd":69
+ * 
+ * cpdef TypeID typewrap(hid_t id_)
+ * cpdef TypeID py_create(object dtype, bint logical=*)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+struct __pyx_opt_args_4h5py_3h5t_py_create {
+  int __pyx_n;
+  int logical;
+};
+
+/* "_objects.pxd":12
+ * from defs cimport *
+ * 
+ * cdef class ObjectID:             # <<<<<<<<<<<<<<
+ * 
+ *     cdef object __weakref__
+ */
+struct __pyx_obj_4h5py_8_objects_ObjectID {
+  PyObject_HEAD
+  PyObject *__weakref__;
+  hid_t id;
+  int locked;
+  PyObject *_hash;
+};
+
+
+/* "h5p.pxd":16
+ * # --- Base classes ---
+ * 
+ * cdef class PropID(ObjectID):             # <<<<<<<<<<<<<<
+ *     """ Base class for all property lists """
+ *     pass
+ */
+struct __pyx_obj_4h5py_3h5p_PropID {
+  struct __pyx_obj_4h5py_8_objects_ObjectID __pyx_base;
+};
+
+
+/* "h5p.pxd":26
+ *     pass
+ * 
+ * cdef class PropInstanceID(PropID):             # <<<<<<<<<<<<<<
+ *     """ Represents an instance of a property list class (i.e. an actual list
+ *         which can be passed on to other API functions).
+ */
+struct __pyx_obj_4h5py_3h5p_PropInstanceID {
+  struct __pyx_obj_4h5py_3h5p_PropID __pyx_base;
+};
+
+
+/* "h5p.pxd":59
+ * # --- Object access ---
+ * 
+ * cdef class PropFAID(PropInstanceID):             # <<<<<<<<<<<<<<
+ *     """ File access property list """
+ *     pass
+ */
+struct __pyx_obj_4h5py_3h5p_PropFAID {
+  struct __pyx_obj_4h5py_3h5p_PropInstanceID __pyx_base;
+};
+
+
+/* "h5t.pxd":14
+ * from _objects cimport class ObjectID
+ * 
+ * cdef class TypeID(ObjectID):             # <<<<<<<<<<<<<<
+ * 
+ *     cdef object py_dtype(self)
+ */
+struct __pyx_obj_4h5py_3h5t_TypeID {
+  struct __pyx_obj_4h5py_8_objects_ObjectID __pyx_base;
+  struct __pyx_vtabstruct_4h5py_3h5t_TypeID *__pyx_vtab;
+};
+
+
+/* "h5t.pxd":37
+ *     pass
+ * 
+ * cdef class TypeBitfieldID(TypeID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+struct __pyx_obj_4h5py_3h5t_TypeBitfieldID {
+  struct __pyx_obj_4h5py_3h5t_TypeID __pyx_base;
+};
+
+
+/* "h5p.pxd":32
+ *     pass
+ * 
+ * cdef class PropCreateID(PropInstanceID):             # <<<<<<<<<<<<<<
+ *     """ Base class for all object creation lists.
+ * 
+ */
+struct __pyx_obj_4h5py_3h5p_PropCreateID {
+  struct __pyx_obj_4h5py_3h5p_PropInstanceID __pyx_base;
+};
+
+
+/* "h5p.pxd":52
+ *     pass
+ * 
+ * cdef class PropFCID(PropCreateID):             # <<<<<<<<<<<<<<
+ *     """ File creation property list """
+ *     pass
+ */
+struct __pyx_obj_4h5py_3h5p_PropFCID {
+  struct __pyx_obj_4h5py_3h5p_PropCreateID __pyx_base;
+};
+
+
+/* "h5p.pxd":20
+ *     pass
+ * 
+ * cdef class PropClassID(PropID):             # <<<<<<<<<<<<<<
+ *     """ Represents an HDF5 property list class.  These can be either (locked)
+ *         library-defined classes or user-created classes.
+ */
+struct __pyx_obj_4h5py_3h5p_PropClassID {
+  struct __pyx_obj_4h5py_3h5p_PropID __pyx_base;
+};
+
+
+/* "h5t.pxd":56
+ * # --- Enums & compound types ---
+ * 
+ * cdef class TypeCompositeID(TypeID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+struct __pyx_obj_4h5py_3h5t_TypeCompositeID {
+  struct __pyx_obj_4h5py_3h5t_TypeID __pyx_base;
+};
+
+
+/* "h5t.pxd":63
+ *     cdef int enum_convert(self, long long *buf, int reverse) except -1
+ * 
+ * cdef class TypeCompoundID(TypeCompositeID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+struct __pyx_obj_4h5py_3h5t_TypeCompoundID {
+  struct __pyx_obj_4h5py_3h5t_TypeCompositeID __pyx_base;
+};
+
+
+/* "h5t.pxd":30
+ *     pass
+ * 
+ * cdef class TypeVlenID(TypeID):             # <<<<<<<<<<<<<<
+ *     # Non-string vlens
+ *     pass
+ */
+struct __pyx_obj_4h5py_3h5t_TypeVlenID {
+  struct __pyx_obj_4h5py_3h5t_TypeID __pyx_base;
+};
+
+
+/* "h5p.pxd":44
+ * # --- Object creation ---
+ * 
+ * cdef class PropOCID(PropCreateID):             # <<<<<<<<<<<<<<
+ *     """ Object creation property list """
+ *     pass
+ */
+struct __pyx_obj_4h5py_3h5p_PropOCID {
+  struct __pyx_obj_4h5py_3h5p_PropCreateID __pyx_base;
+};
+
+
+/* "h5p.pxd":70
+ * # --- New in 1.8 ---
+ * 
+ * cdef class PropLCID(PropCreateID):             # <<<<<<<<<<<<<<
+ *     """ Link creation property list """
+ *     pass
+ */
+struct __pyx_obj_4h5py_3h5p_PropLCID {
+  struct __pyx_obj_4h5py_3h5p_PropCreateID __pyx_base;
+};
+
+
+/* "h5p.pxd":78
+ *     cdef char* _buf
+ * 
+ * cdef class PropGCID(PropOCID):             # <<<<<<<<<<<<<<
+ *     """ Group creation property list """
+ *     pass
+ */
+struct __pyx_obj_4h5py_3h5p_PropGCID {
+  struct __pyx_obj_4h5py_3h5p_PropOCID __pyx_base;
+};
+
+
+/* "h5p.pxd":48
+ *     pass
+ * 
+ * cdef class PropDCID(PropOCID):             # <<<<<<<<<<<<<<
+ *     """ Dataset creation property list """
+ *     pass
+ */
+struct __pyx_obj_4h5py_3h5p_PropDCID {
+  struct __pyx_obj_4h5py_3h5p_PropOCID __pyx_base;
+};
+
+
+/* "h5t.pxd":34
+ *     pass
+ * 
+ * cdef class TypeTimeID(TypeID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+struct __pyx_obj_4h5py_3h5t_TypeTimeID {
+  struct __pyx_obj_4h5py_3h5t_TypeID __pyx_base;
+};
+
+
+/* "h5t.pxd":20
+ * # --- Top-level classes ---
+ * 
+ * cdef class TypeArrayID(TypeID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+struct __pyx_obj_4h5py_3h5t_TypeArrayID {
+  struct __pyx_obj_4h5py_3h5t_TypeID __pyx_base;
+};
+
+
+/* "h5t.pxd":45
+ * # --- Numeric atomic types ---
+ * 
+ * cdef class TypeAtomicID(TypeID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+struct __pyx_obj_4h5py_3h5t_TypeAtomicID {
+  struct __pyx_obj_4h5py_3h5t_TypeID __pyx_base;
+};
+
+
+/* "h5t.pxd":51
+ *     pass
+ * 
+ * cdef class TypeFloatID(TypeAtomicID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+struct __pyx_obj_4h5py_3h5t_TypeFloatID {
+  struct __pyx_obj_4h5py_3h5t_TypeAtomicID __pyx_base;
+};
+
+
+/* "h5t.pxd":26
+ *     pass
+ * 
+ * cdef class TypeStringID(TypeID):             # <<<<<<<<<<<<<<
+ *     # Both vlen and fixed-len strings
+ *     pass
+ */
+struct __pyx_obj_4h5py_3h5t_TypeStringID {
+  struct __pyx_obj_4h5py_3h5t_TypeID __pyx_base;
+};
+
+
+/* "h5t.pxd":23
+ *     pass
+ * 
+ * cdef class TypeOpaqueID(TypeID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+struct __pyx_obj_4h5py_3h5t_TypeOpaqueID {
+  struct __pyx_obj_4h5py_3h5t_TypeID __pyx_base;
+};
+
+
+/* "h5t.pxd":59
+ *     pass
+ * 
+ * cdef class TypeEnumID(TypeCompositeID):             # <<<<<<<<<<<<<<
+ * 
+ *     cdef int enum_convert(self, long long *buf, int reverse) except -1
+ */
+struct __pyx_obj_4h5py_3h5t_TypeEnumID {
+  struct __pyx_obj_4h5py_3h5t_TypeCompositeID __pyx_base;
+};
+
+
+/* "h5p.pxd":39
+ *     pass
+ * 
+ * cdef class PropCopyID(PropInstanceID):             # <<<<<<<<<<<<<<
+ *     """ Property list for copying objects (as in h5o.copy) """
+ * 
+ */
+struct __pyx_obj_4h5py_3h5p_PropCopyID {
+  struct __pyx_obj_4h5py_3h5p_PropInstanceID __pyx_base;
+};
+
+
+/* "h5t.pxd":48
+ *     pass
+ * 
+ * cdef class TypeIntegerID(TypeAtomicID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+struct __pyx_obj_4h5py_3h5t_TypeIntegerID {
+  struct __pyx_obj_4h5py_3h5t_TypeAtomicID __pyx_base;
+};
+
+
+/* "h5t.pxd":40
+ *     pass
+ * 
+ * cdef class TypeReferenceID(TypeID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+struct __pyx_obj_4h5py_3h5t_TypeReferenceID {
+  struct __pyx_obj_4h5py_3h5t_TypeID __pyx_base;
+};
+
+
+/* "h5p.pxd":63
+ *     pass
+ * 
+ * cdef class PropDXID(PropInstanceID):             # <<<<<<<<<<<<<<
+ *     """ Dataset transfer property list """
+ *     pass
+ */
+struct __pyx_obj_4h5py_3h5p_PropDXID {
+  struct __pyx_obj_4h5py_3h5p_PropInstanceID __pyx_base;
+};
+
+
+/* "h5py/h5d.pxd":14
+ * from _objects cimport ObjectID
+ * 
+ * cdef class DatasetID(ObjectID):             # <<<<<<<<<<<<<<
+ *     cdef object _dtype
+ * 
+ */
+struct __pyx_obj_4h5py_3h5d_DatasetID {
+  struct __pyx_obj_4h5py_8_objects_ObjectID __pyx_base;
+  PyObject *_dtype;
+};
+
+struct __pyx_obj_4h5py_3h5s_SpaceID {
+  struct __pyx_obj_4h5py_8_objects_ObjectID __pyx_base;
+};
+
+
+/* "h5p.pxd":74
+ *     pass
+ * 
+ * cdef class PropLAID(PropInstanceID):             # <<<<<<<<<<<<<<
+ *     """ Link access property list """
+ *     cdef char* _buf
+ */
+struct __pyx_obj_4h5py_3h5p_PropLAID {
+  struct __pyx_obj_4h5py_3h5p_PropInstanceID __pyx_base;
+  char *_buf;
+};
+
+
+
+/* "h5t.pxd":14
+ * from _objects cimport class ObjectID
+ * 
+ * cdef class TypeID(ObjectID):             # <<<<<<<<<<<<<<
+ * 
+ *     cdef object py_dtype(self)
+ */
+
+struct __pyx_vtabstruct_4h5py_3h5t_TypeID {
+  PyObject *(*py_dtype)(struct __pyx_obj_4h5py_3h5t_TypeID *);
+};
+static struct __pyx_vtabstruct_4h5py_3h5t_TypeID *__pyx_vtabptr_4h5py_3h5t_TypeID;
+
+
+/* "h5t.pxd":56
+ * # --- Enums & compound types ---
+ * 
+ * cdef class TypeCompositeID(TypeID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+
+struct __pyx_vtabstruct_4h5py_3h5t_TypeCompositeID {
+  struct __pyx_vtabstruct_4h5py_3h5t_TypeID __pyx_base;
+};
+static struct __pyx_vtabstruct_4h5py_3h5t_TypeCompositeID *__pyx_vtabptr_4h5py_3h5t_TypeCompositeID;
+
+
+/* "h5t.pxd":63
+ *     cdef int enum_convert(self, long long *buf, int reverse) except -1
+ * 
+ * cdef class TypeCompoundID(TypeCompositeID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+
+struct __pyx_vtabstruct_4h5py_3h5t_TypeCompoundID {
+  struct __pyx_vtabstruct_4h5py_3h5t_TypeCompositeID __pyx_base;
+};
+static struct __pyx_vtabstruct_4h5py_3h5t_TypeCompoundID *__pyx_vtabptr_4h5py_3h5t_TypeCompoundID;
+
+
+/* "h5t.pxd":23
+ *     pass
+ * 
+ * cdef class TypeOpaqueID(TypeID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+
+struct __pyx_vtabstruct_4h5py_3h5t_TypeOpaqueID {
+  struct __pyx_vtabstruct_4h5py_3h5t_TypeID __pyx_base;
+};
+static struct __pyx_vtabstruct_4h5py_3h5t_TypeOpaqueID *__pyx_vtabptr_4h5py_3h5t_TypeOpaqueID;
+
+
+/* "h5t.pxd":20
+ * # --- Top-level classes ---
+ * 
+ * cdef class TypeArrayID(TypeID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+
+struct __pyx_vtabstruct_4h5py_3h5t_TypeArrayID {
+  struct __pyx_vtabstruct_4h5py_3h5t_TypeID __pyx_base;
+};
+static struct __pyx_vtabstruct_4h5py_3h5t_TypeArrayID *__pyx_vtabptr_4h5py_3h5t_TypeArrayID;
+
+
+/* "h5t.pxd":45
+ * # --- Numeric atomic types ---
+ * 
+ * cdef class TypeAtomicID(TypeID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+
+struct __pyx_vtabstruct_4h5py_3h5t_TypeAtomicID {
+  struct __pyx_vtabstruct_4h5py_3h5t_TypeID __pyx_base;
+};
+static struct __pyx_vtabstruct_4h5py_3h5t_TypeAtomicID *__pyx_vtabptr_4h5py_3h5t_TypeAtomicID;
+
+
+/* "h5t.pxd":48
+ *     pass
+ * 
+ * cdef class TypeIntegerID(TypeAtomicID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+
+struct __pyx_vtabstruct_4h5py_3h5t_TypeIntegerID {
+  struct __pyx_vtabstruct_4h5py_3h5t_TypeAtomicID __pyx_base;
+};
+static struct __pyx_vtabstruct_4h5py_3h5t_TypeIntegerID *__pyx_vtabptr_4h5py_3h5t_TypeIntegerID;
+
+
+/* "h5t.pxd":40
+ *     pass
+ * 
+ * cdef class TypeReferenceID(TypeID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+
+struct __pyx_vtabstruct_4h5py_3h5t_TypeReferenceID {
+  struct __pyx_vtabstruct_4h5py_3h5t_TypeID __pyx_base;
+};
+static struct __pyx_vtabstruct_4h5py_3h5t_TypeReferenceID *__pyx_vtabptr_4h5py_3h5t_TypeReferenceID;
+
+
+/* "h5t.pxd":26
+ *     pass
+ * 
+ * cdef class TypeStringID(TypeID):             # <<<<<<<<<<<<<<
+ *     # Both vlen and fixed-len strings
+ *     pass
+ */
+
+struct __pyx_vtabstruct_4h5py_3h5t_TypeStringID {
+  struct __pyx_vtabstruct_4h5py_3h5t_TypeID __pyx_base;
+};
+static struct __pyx_vtabstruct_4h5py_3h5t_TypeStringID *__pyx_vtabptr_4h5py_3h5t_TypeStringID;
+
+
+/* "h5t.pxd":51
+ *     pass
+ * 
+ * cdef class TypeFloatID(TypeAtomicID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+
+struct __pyx_vtabstruct_4h5py_3h5t_TypeFloatID {
+  struct __pyx_vtabstruct_4h5py_3h5t_TypeAtomicID __pyx_base;
+};
+static struct __pyx_vtabstruct_4h5py_3h5t_TypeFloatID *__pyx_vtabptr_4h5py_3h5t_TypeFloatID;
+
+
+/* "h5t.pxd":34
+ *     pass
+ * 
+ * cdef class TypeTimeID(TypeID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+
+struct __pyx_vtabstruct_4h5py_3h5t_TypeTimeID {
+  struct __pyx_vtabstruct_4h5py_3h5t_TypeID __pyx_base;
+};
+static struct __pyx_vtabstruct_4h5py_3h5t_TypeTimeID *__pyx_vtabptr_4h5py_3h5t_TypeTimeID;
+
+
+/* "h5t.pxd":37
+ *     pass
+ * 
+ * cdef class TypeBitfieldID(TypeID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+
+struct __pyx_vtabstruct_4h5py_3h5t_TypeBitfieldID {
+  struct __pyx_vtabstruct_4h5py_3h5t_TypeID __pyx_base;
+};
+static struct __pyx_vtabstruct_4h5py_3h5t_TypeBitfieldID *__pyx_vtabptr_4h5py_3h5t_TypeBitfieldID;
+
+
+/* "h5t.pxd":30
+ *     pass
+ * 
+ * cdef class TypeVlenID(TypeID):             # <<<<<<<<<<<<<<
+ *     # Non-string vlens
+ *     pass
+ */
+
+struct __pyx_vtabstruct_4h5py_3h5t_TypeVlenID {
+  struct __pyx_vtabstruct_4h5py_3h5t_TypeID __pyx_base;
+};
+static struct __pyx_vtabstruct_4h5py_3h5t_TypeVlenID *__pyx_vtabptr_4h5py_3h5t_TypeVlenID;
+
+
+/* "h5t.pxd":59
+ *     pass
+ * 
+ * cdef class TypeEnumID(TypeCompositeID):             # <<<<<<<<<<<<<<
+ * 
+ *     cdef int enum_convert(self, long long *buf, int reverse) except -1
+ */
+
+struct __pyx_vtabstruct_4h5py_3h5t_TypeEnumID {
+  struct __pyx_vtabstruct_4h5py_3h5t_TypeCompositeID __pyx_base;
+  int (*enum_convert)(struct __pyx_obj_4h5py_3h5t_TypeEnumID *, PY_LONG_LONG *, int);
+};
+static struct __pyx_vtabstruct_4h5py_3h5t_TypeEnumID *__pyx_vtabptr_4h5py_3h5t_TypeEnumID;
+#ifndef CYTHON_REFNANNY
+  #define CYTHON_REFNANNY 0
+#endif
+#if CYTHON_REFNANNY
+  typedef struct {
+    void (*INCREF)(void*, PyObject*, int);
+    void (*DECREF)(void*, PyObject*, int);
+    void (*GOTREF)(void*, PyObject*, int);
+    void (*GIVEREF)(void*, PyObject*, int);
+    void* (*SetupContext)(const char*, int, const char*);
+    void (*FinishContext)(void**);
+  } __Pyx_RefNannyAPIStruct;
+  static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL;
+  static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); /*proto*/
+  #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL;
+#ifdef WITH_THREAD
+  #define __Pyx_RefNannySetupContext(name, acquire_gil) \
+          if (acquire_gil) { \
+              PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); \
+              __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__); \
+              PyGILState_Release(__pyx_gilstate_save); \
+          } else { \
+              __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__); \
+          }
+#else
+  #define __Pyx_RefNannySetupContext(name, acquire_gil) \
+          __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__)
+#endif
+  #define __Pyx_RefNannyFinishContext() \
+          __Pyx_RefNanny->FinishContext(&__pyx_refnanny)
+  #define __Pyx_INCREF(r)  __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_DECREF(r)  __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_GOTREF(r)  __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_XINCREF(r)  do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0)
+  #define __Pyx_XDECREF(r)  do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0)
+  #define __Pyx_XGOTREF(r)  do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0)
+  #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0)
+#else
+  #define __Pyx_RefNannyDeclarations
+  #define __Pyx_RefNannySetupContext(name, acquire_gil)
+  #define __Pyx_RefNannyFinishContext()
+  #define __Pyx_INCREF(r) Py_INCREF(r)
+  #define __Pyx_DECREF(r) Py_DECREF(r)
+  #define __Pyx_GOTREF(r)
+  #define __Pyx_GIVEREF(r)
+  #define __Pyx_XINCREF(r) Py_XINCREF(r)
+  #define __Pyx_XDECREF(r) Py_XDECREF(r)
+  #define __Pyx_XGOTREF(r)
+  #define __Pyx_XGIVEREF(r)
+#endif /* CYTHON_REFNANNY */
+#define __Pyx_CLEAR(r)    do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0)
+#define __Pyx_XCLEAR(r)   do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0)
+
+static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name); /*proto*/
+
+static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact,
+    Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); /*proto*/
+
+static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name); /*proto*/
+
+static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[], \
+    PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args, \
+    const char* function_name); /*proto*/
+
+static int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, int none_allowed,
+    const char *name, int exact); /*proto*/
+
+static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type); /*proto*/
+
+#define __Pyx_DelItemInt(o, i, size, to_py_func) (((size) <= sizeof(Py_ssize_t)) ? \
+                                                    __Pyx_DelItemInt_Fast(o, i) : \
+                                                    __Pyx_DelItem_Generic(o, to_py_func(i)))
+static CYTHON_INLINE int __Pyx_DelItem_Generic(PyObject *o, PyObject *j) {
+    int r;
+    if (!j) return -1;
+    r = PyObject_DelItem(o, j);
+    Py_DECREF(j);
+    return r;
+}
+static CYTHON_INLINE int __Pyx_DelItemInt_Fast(PyObject *o, Py_ssize_t i) {
+#if CYTHON_COMPILING_IN_PYPY
+    if (PySequence_Check(o)) {
+        return PySequence_DelItem(o, i);
+    }
+#else
+    PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence;
+    if (likely(m && m->sq_ass_item)) {
+        if (unlikely(i < 0) && likely(m->sq_length)) {
+            Py_ssize_t l = m->sq_length(o);
+            if (unlikely(l < 0)) return -1;
+            i += l;
+        }
+        return m->sq_ass_item(o, i, (PyObject *)NULL);
+    }
+#endif
+    return __Pyx_DelItem_Generic(o, PyInt_FromSsize_t(i));
+}
+
+static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb); /*proto*/
+
+static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb); /*proto*/
+static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb); /*proto*/
+
+static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause); /*proto*/
+
+static void __Pyx_call_next_tp_dealloc(PyObject* obj, destructor current_tp_dealloc);
+
+static int __Pyx_call_next_tp_traverse(PyObject* obj, visitproc v, void *a, traverseproc current_tp_traverse);
+
+static void __Pyx_call_next_tp_clear(PyObject* obj, inquiry current_tp_dealloc);
+
+static CYTHON_INLINE void __Pyx_ExceptionSave(PyObject **type, PyObject **value, PyObject **tb); /*proto*/
+static void __Pyx_ExceptionReset(PyObject *type, PyObject *value, PyObject *tb); /*proto*/
+
+static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level); /*proto*/
+
+static CYTHON_INLINE void __Pyx_RaiseImportError(PyObject *name);
+
+static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_hid_t(hid_t);
+
+static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_haddr_t(haddr_t);
+
+static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_hsize_t(hsize_t);
+
+static CYTHON_INLINE unsigned char __Pyx_PyInt_AsUnsignedChar(PyObject *);
+
+static CYTHON_INLINE unsigned short __Pyx_PyInt_AsUnsignedShort(PyObject *);
+
+static CYTHON_INLINE unsigned int __Pyx_PyInt_AsUnsignedInt(PyObject *);
+
+static CYTHON_INLINE char __Pyx_PyInt_AsChar(PyObject *);
+
+static CYTHON_INLINE short __Pyx_PyInt_AsShort(PyObject *);
+
+static CYTHON_INLINE int __Pyx_PyInt_AsInt(PyObject *);
+
+static CYTHON_INLINE signed char __Pyx_PyInt_AsSignedChar(PyObject *);
+
+static CYTHON_INLINE signed short __Pyx_PyInt_AsSignedShort(PyObject *);
+
+static CYTHON_INLINE signed int __Pyx_PyInt_AsSignedInt(PyObject *);
+
+static CYTHON_INLINE int __Pyx_PyInt_AsLongDouble(PyObject *);
+
+static CYTHON_INLINE unsigned long __Pyx_PyInt_AsUnsignedLong(PyObject *);
+
+static CYTHON_INLINE unsigned PY_LONG_LONG __Pyx_PyInt_AsUnsignedLongLong(PyObject *);
+
+static CYTHON_INLINE long __Pyx_PyInt_AsLong(PyObject *);
+
+static CYTHON_INLINE PY_LONG_LONG __Pyx_PyInt_AsLongLong(PyObject *);
+
+static CYTHON_INLINE signed long __Pyx_PyInt_AsSignedLong(PyObject *);
+
+static CYTHON_INLINE signed PY_LONG_LONG __Pyx_PyInt_AsSignedLongLong(PyObject *);
+
+static int __Pyx_check_binary_version(void);
+
+#if !defined(__Pyx_PyIdentifier_FromString)
+#if PY_MAJOR_VERSION < 3
+  #define __Pyx_PyIdentifier_FromString(s) PyString_FromString(s)
+#else
+  #define __Pyx_PyIdentifier_FromString(s) PyUnicode_FromString(s)
+#endif
+#endif
+
+static PyObject *__Pyx_ImportModule(const char *name); /*proto*/
+
+static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name, size_t size, int strict);  /*proto*/
+
+static void* __Pyx_GetVtable(PyObject *dict); /*proto*/
+
+static int __Pyx_ImportFunction(PyObject *module, const char *funcname, void (**f)(void), const char *sig); /*proto*/
+
+typedef struct {
+    int code_line;
+    PyCodeObject* code_object;
+} __Pyx_CodeObjectCacheEntry;
+struct __Pyx_CodeObjectCache {
+    int count;
+    int max_count;
+    __Pyx_CodeObjectCacheEntry* entries;
+};
+static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL};
+static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line);
+static PyCodeObject *__pyx_find_code_object(int code_line);
+static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object);
+
+static void __Pyx_AddTraceback(const char *funcname, int c_line,
+                               int py_line, const char *filename); /*proto*/
+
+static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); /*proto*/
+
+
+/* Module declarations from 'h5py.api_types_ext' */
+
+/* Module declarations from 'h5py.api_types_hdf5' */
+
+/* Module declarations from 'h5py.defs' */
+static hid_t (*__pyx_f_4h5py_4defs_H5Dcreate2)(hid_t, char *, hid_t, hid_t, hid_t, hid_t, hid_t); /*proto*/
+static hid_t (*__pyx_f_4h5py_4defs_H5Dcreate_anon)(hid_t, hid_t, hid_t, hid_t, hid_t); /*proto*/
+static hid_t (*__pyx_f_4h5py_4defs_H5Dopen)(hid_t, char *); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Dclose)(hid_t); /*proto*/
+static hid_t (*__pyx_f_4h5py_4defs_H5Dget_space)(hid_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Dget_space_status)(hid_t, H5D_space_status_t *); /*proto*/
+static hid_t (*__pyx_f_4h5py_4defs_H5Dget_type)(hid_t); /*proto*/
+static hid_t (*__pyx_f_4h5py_4defs_H5Dget_create_plist)(hid_t); /*proto*/
+static haddr_t (*__pyx_f_4h5py_4defs_H5Dget_offset)(hid_t); /*proto*/
+static hsize_t (*__pyx_f_4h5py_4defs_H5Dget_storage_size)(hid_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Dextend)(hid_t, hsize_t *); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Dset_extent)(hid_t, hsize_t *); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Sclose)(hid_t); /*proto*/
+static int (*__pyx_f_4h5py_4defs_H5Sget_simple_extent_ndims)(hid_t); /*proto*/
+
+/* Module declarations from 'h5py._objects' */
+static PyTypeObject *__pyx_ptype_4h5py_8_objects_ObjectID = 0;
+static hid_t (*__pyx_f_4h5py_8_objects_pdefault)(struct __pyx_obj_4h5py_8_objects_ObjectID *); /*proto*/
+
+/* Module declarations from 'numpy' */
+
+/* Module declarations from 'h5py.numpy' */
+static PyTypeObject *__pyx_ptype_4h5py_5numpy_dtype = 0;
+static PyTypeObject *__pyx_ptype_4h5py_5numpy_ndarray = 0;
+
+/* Module declarations from 'h5py.utils' */
+static void *(*__pyx_f_4h5py_5utils_emalloc)(size_t); /*proto*/
+static void (*__pyx_f_4h5py_5utils_efree)(void *); /*proto*/
+static int (*__pyx_f_4h5py_5utils_check_numpy_read)(PyArrayObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_4h5py_5utils_check_numpy_read *__pyx_optional_args); /*proto*/
+static int (*__pyx_f_4h5py_5utils_check_numpy_write)(PyArrayObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_4h5py_5utils_check_numpy_write *__pyx_optional_args); /*proto*/
+static int (*__pyx_f_4h5py_5utils_convert_tuple)(PyObject *, hsize_t *, hsize_t); /*proto*/
+
+/* Module declarations from 'h5py.h5t' */
+static PyTypeObject *__pyx_ptype_4h5py_3h5t_TypeID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5t_TypeArrayID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5t_TypeOpaqueID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5t_TypeStringID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5t_TypeVlenID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5t_TypeTimeID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5t_TypeBitfieldID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5t_TypeReferenceID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5t_TypeAtomicID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5t_TypeIntegerID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5t_TypeFloatID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5t_TypeCompositeID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5t_TypeEnumID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5t_TypeCompoundID = 0;
+static struct __pyx_obj_4h5py_3h5t_TypeID *(*__pyx_f_4h5py_3h5t_typewrap)(hid_t, int __pyx_skip_dispatch); /*proto*/
+static struct __pyx_obj_4h5py_3h5t_TypeID *(*__pyx_f_4h5py_3h5t_py_create)(PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_4h5py_3h5t_py_create *__pyx_optional_args); /*proto*/
+
+/* Module declarations from 'h5py.h5s' */
+static PyTypeObject *__pyx_ptype_4h5py_3h5s_SpaceID = 0;
+
+/* Module declarations from 'h5py.h5p' */
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropClassID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropInstanceID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropCreateID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropCopyID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropOCID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropDCID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropFCID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropFAID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropDXID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropLCID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropLAID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropGCID = 0;
+static PyObject *(*__pyx_f_4h5py_3h5p_propwrap)(hid_t); /*proto*/
+
+/* Module declarations from 'h5py._proxy' */
+static herr_t (*__pyx_f_4h5py_6_proxy_dset_rw)(hid_t, hid_t, hid_t, hid_t, hid_t, void *, int); /*proto*/
+
+/* Module declarations from 'h5py.h5d' */
+static PyTypeObject *__pyx_ptype_4h5py_3h5d_DatasetID = 0;
+#define __Pyx_MODULE_NAME "h5py.h5d"
+int __pyx_module_is_main_h5py__h5d = 0;
+
+/* Implementation of 'h5py.h5d' */
+static PyObject *__pyx_builtin_TypeError;
+static PyObject *__pyx_pf_4h5py_3h5d_create(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_loc, PyObject *__pyx_v_name, struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_v_tid, struct __pyx_obj_4h5py_3h5s_SpaceID *__pyx_v_space, struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_dcpl, struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_lcpl, struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_dapl); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5d_2open(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_loc, char *__pyx_v_name); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5d_9DatasetID_5dtype___get__(struct __pyx_obj_4h5py_3h5d_DatasetID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5d_9DatasetID_5shape___get__(struct __pyx_obj_4h5py_3h5d_DatasetID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5d_9DatasetID_4rank___get__(struct __pyx_obj_4h5py_3h5d_DatasetID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5d_9DatasetID__close(struct __pyx_obj_4h5py_3h5d_DatasetID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5d_9DatasetID_2read(struct __pyx_obj_4h5py_3h5d_DatasetID *__pyx_v_self, struct __pyx_obj_4h5py_3h5s_SpaceID *__pyx_v_mspace, struct __pyx_obj_4h5py_3h5s_SpaceID *__pyx_v_fspace, PyArrayObject *__pyx_v_arr_obj, struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_v_mtype, struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_dxpl); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5d_9DatasetID_4write(struct __pyx_obj_4h5py_3h5d_DatasetID *__pyx_v_self, struct __pyx_obj_4h5py_3h5s_SpaceID *__pyx_v_mspace, struct __pyx_obj_4h5py_3h5s_SpaceID *__pyx_v_fspace, PyArrayObject *__pyx_v_arr_obj, struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_v_mtype, struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_dxpl); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5d_9DatasetID_6extend(struct __pyx_obj_4h5py_3h5d_DatasetID *__pyx_v_self, PyObject *__pyx_v_shape); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5d_9DatasetID_8set_extent(struct __pyx_obj_4h5py_3h5d_DatasetID *__pyx_v_self, PyObject *__pyx_v_shape); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5d_9DatasetID_10get_space(struct __pyx_obj_4h5py_3h5d_DatasetID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5d_9DatasetID_12get_space_status(struct __pyx_obj_4h5py_3h5d_DatasetID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5d_9DatasetID_14get_type(struct __pyx_obj_4h5py_3h5d_DatasetID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5d_9DatasetID_16get_create_plist(struct __pyx_obj_4h5py_3h5d_DatasetID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5d_9DatasetID_18get_offset(struct __pyx_obj_4h5py_3h5d_DatasetID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5d_9DatasetID_20get_storage_size(struct __pyx_obj_4h5py_3h5d_DatasetID *__pyx_v_self); /* proto */
+static char __pyx_k_1[] = "get_simple_extent_dims";
+static char __pyx_k_2[] = "get_simple_extent_ndims";
+static char __pyx_k_4[] = "New shape length (%d) must match dataset rank (%d)";
+static char __pyx_k_5[] = " Numpy dtype object representing the dataset type ";
+static char __pyx_k_6[] = " Numpy-style shape tuple representing the dataspace ";
+static char __pyx_k_7[] = " Integer giving the dataset rank (0 = scalar) ";
+static char __pyx_k_8[] = "\n    Provides access to the low-level HDF5 \"H5D\" dataset interface.\n";
+static char __pyx_k_9[] = "SPACE_STATUS_NOT_ALLOCATED";
+static char __pyx_k_10[] = "SPACE_STATUS_PART_ALLOCATED";
+static char __pyx_k_11[] = "SPACE_STATUS_ALLOCATED";
+static char __pyx_k_12[] = "FILL_VALUE_UNDEFINED";
+static char __pyx_k_13[] = "FILL_VALUE_USER_DEFINED";
+static char __pyx_k_16[] = "/home/computer/h5py/h5py/h5d.pyx";
+static char __pyx_k_17[] = "h5py.h5d";
+static char __pyx_k__loc[] = "loc";
+static char __pyx_k__tid[] = "tid";
+static char __pyx_k__dapl[] = "dapl";
+static char __pyx_k__dcpl[] = "dcpl";
+static char __pyx_k__dsid[] = "dsid";
+static char __pyx_k__dxpl[] = "dxpl";
+static char __pyx_k__h5py[] = "h5py";
+static char __pyx_k__lcpl[] = "lcpl";
+static char __pyx_k__lock[] = "lock";
+static char __pyx_k__name[] = "name";
+static char __pyx_k__open[] = "open";
+static char __pyx_k__cname[] = "cname";
+static char __pyx_k__dtype[] = "dtype";
+static char __pyx_k__mtype[] = "mtype";
+static char __pyx_k__space[] = "space";
+static char __pyx_k__valid[] = "valid";
+static char __pyx_k__create[] = "create";
+static char __pyx_k__fspace[] = "fspace";
+static char __pyx_k__mspace[] = "mspace";
+static char __pyx_k__CHUNKED[] = "CHUNKED";
+static char __pyx_k__COMPACT[] = "COMPACT";
+static char __pyx_k__arr_obj[] = "arr_obj";
+static char __pyx_k____exit__[] = "__exit__";
+static char __pyx_k____main__[] = "__main__";
+static char __pyx_k____test__[] = "__test__";
+static char __pyx_k___objects[] = "_objects";
+static char __pyx_k__get_type[] = "get_type";
+static char __pyx_k__registry[] = "registry";
+static char __pyx_k__TypeError[] = "TypeError";
+static char __pyx_k____enter__[] = "__enter__";
+static char __pyx_k__get_space[] = "get_space";
+static char __pyx_k__CONTIGUOUS[] = "CONTIGUOUS";
+static char __pyx_k__ALLOC_TIME_INCR[] = "ALLOC_TIME_INCR";
+static char __pyx_k__ALLOC_TIME_LATE[] = "ALLOC_TIME_LATE";
+static char __pyx_k__FILL_TIME_ALLOC[] = "FILL_TIME_ALLOC";
+static char __pyx_k__FILL_TIME_IFSET[] = "FILL_TIME_IFSET";
+static char __pyx_k__FILL_TIME_NEVER[] = "FILL_TIME_NEVER";
+static char __pyx_k__ALLOC_TIME_EARLY[] = "ALLOC_TIME_EARLY";
+static char __pyx_k__ALLOC_TIME_DEFAULT[] = "ALLOC_TIME_DEFAULT";
+static char __pyx_k__FILL_VALUE_DEFAULT[] = "FILL_VALUE_DEFAULT";
+static PyObject *__pyx_n_s_1;
+static PyObject *__pyx_n_s_10;
+static PyObject *__pyx_n_s_11;
+static PyObject *__pyx_n_s_12;
+static PyObject *__pyx_n_s_13;
+static PyObject *__pyx_kp_s_16;
+static PyObject *__pyx_n_s_17;
+static PyObject *__pyx_n_s_2;
+static PyObject *__pyx_kp_s_4;
+static PyObject *__pyx_n_s_9;
+static PyObject *__pyx_n_s__ALLOC_TIME_DEFAULT;
+static PyObject *__pyx_n_s__ALLOC_TIME_EARLY;
+static PyObject *__pyx_n_s__ALLOC_TIME_INCR;
+static PyObject *__pyx_n_s__ALLOC_TIME_LATE;
+static PyObject *__pyx_n_s__CHUNKED;
+static PyObject *__pyx_n_s__COMPACT;
+static PyObject *__pyx_n_s__CONTIGUOUS;
+static PyObject *__pyx_n_s__FILL_TIME_ALLOC;
+static PyObject *__pyx_n_s__FILL_TIME_IFSET;
+static PyObject *__pyx_n_s__FILL_TIME_NEVER;
+static PyObject *__pyx_n_s__FILL_VALUE_DEFAULT;
+static PyObject *__pyx_n_s__TypeError;
+static PyObject *__pyx_n_s____enter__;
+static PyObject *__pyx_n_s____exit__;
+static PyObject *__pyx_n_s____main__;
+static PyObject *__pyx_n_s____test__;
+static PyObject *__pyx_n_s___objects;
+static PyObject *__pyx_n_s__arr_obj;
+static PyObject *__pyx_n_s__cname;
+static PyObject *__pyx_n_s__create;
+static PyObject *__pyx_n_s__dapl;
+static PyObject *__pyx_n_s__dcpl;
+static PyObject *__pyx_n_s__dsid;
+static PyObject *__pyx_n_s__dtype;
+static PyObject *__pyx_n_s__dxpl;
+static PyObject *__pyx_n_s__fspace;
+static PyObject *__pyx_n_s__get_space;
+static PyObject *__pyx_n_s__get_type;
+static PyObject *__pyx_n_s__h5py;
+static PyObject *__pyx_n_s__lcpl;
+static PyObject *__pyx_n_s__loc;
+static PyObject *__pyx_n_s__lock;
+static PyObject *__pyx_n_s__mspace;
+static PyObject *__pyx_n_s__mtype;
+static PyObject *__pyx_n_s__name;
+static PyObject *__pyx_n_s__open;
+static PyObject *__pyx_n_s__registry;
+static PyObject *__pyx_n_s__space;
+static PyObject *__pyx_n_s__tid;
+static PyObject *__pyx_n_s__valid;
+static PyObject *__pyx_k_tuple_3;
+static PyObject *__pyx_k_tuple_14;
+static PyObject *__pyx_k_tuple_18;
+static PyObject *__pyx_k_codeobj_15;
+static PyObject *__pyx_k_codeobj_19;
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5d_1create(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_4h5py_3h5d_create[] = " (objectID loc, STRING name or None, TypeID tid, SpaceID space,\n             PropDCID dcpl=None, PropID lcpl=None) => DatasetID\n\n        Create a new dataset.  If \"name\" is None, the dataset will be\n        anonymous.\n        ";
+static PyMethodDef __pyx_mdef_4h5py_3h5d_1create = {__Pyx_NAMESTR("create"), (PyCFunction)__pyx_pw_4h5py_3h5d_1create, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5d_create)};
+static PyObject *__pyx_pw_4h5py_3h5d_1create(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_loc = 0;
+  PyObject *__pyx_v_name = 0;
+  struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_v_tid = 0;
+  struct __pyx_obj_4h5py_3h5s_SpaceID *__pyx_v_space = 0;
+  struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_dcpl = 0;
+  struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_lcpl = 0;
+  struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_dapl = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("create (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__loc,&__pyx_n_s__name,&__pyx_n_s__tid,&__pyx_n_s__space,&__pyx_n_s__dcpl,&__pyx_n_s__lcpl,&__pyx_n_s__dapl,0};
+    PyObject* values[7] = {0,0,0,0,0,0,0};
+
+    /* "h5py/h5d.pyx":55
+ * 
+ * def create(ObjectID loc not None, object name, TypeID tid not None,
+ *                SpaceID space not None, PropID dcpl=None, PropID lcpl=None, PropID dapl = None):             # <<<<<<<<<<<<<<
+ *         """ (objectID loc, STRING name or None, TypeID tid, SpaceID space,
+ *              PropDCID dcpl=None, PropID lcpl=None) => DatasetID
+ */
+    values[4] = (PyObject *)((struct __pyx_obj_4h5py_3h5p_PropID *)Py_None);
+    values[5] = (PyObject *)((struct __pyx_obj_4h5py_3h5p_PropID *)Py_None);
+    values[6] = (PyObject *)((struct __pyx_obj_4h5py_3h5p_PropID *)Py_None);
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
+        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__loc)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__name)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("create", 0, 4, 7, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+        case  2:
+        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__tid)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("create", 0, 4, 7, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+        case  3:
+        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__space)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("create", 0, 4, 7, 3); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+        case  4:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__dcpl);
+          if (value) { values[4] = value; kw_args--; }
+        }
+        case  5:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__lcpl);
+          if (value) { values[5] = value; kw_args--; }
+        }
+        case  6:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__dapl);
+          if (value) { values[6] = value; kw_args--; }
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "create") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else {
+      switch (PyTuple_GET_SIZE(__pyx_args)) {
+        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
+        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+    }
+    __pyx_v_loc = ((struct __pyx_obj_4h5py_8_objects_ObjectID *)values[0]);
+    __pyx_v_name = values[1];
+    __pyx_v_tid = ((struct __pyx_obj_4h5py_3h5t_TypeID *)values[2]);
+    __pyx_v_space = ((struct __pyx_obj_4h5py_3h5s_SpaceID *)values[3]);
+    __pyx_v_dcpl = ((struct __pyx_obj_4h5py_3h5p_PropID *)values[4]);
+    __pyx_v_lcpl = ((struct __pyx_obj_4h5py_3h5p_PropID *)values[5]);
+    __pyx_v_dapl = ((struct __pyx_obj_4h5py_3h5p_PropID *)values[6]);
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("create", 0, 4, 7, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5d.create", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_loc), __pyx_ptype_4h5py_8_objects_ObjectID, 0, "loc", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_tid), __pyx_ptype_4h5py_3h5t_TypeID, 0, "tid", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_space), __pyx_ptype_4h5py_3h5s_SpaceID, 0, "space", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_dcpl), __pyx_ptype_4h5py_3h5p_PropID, 1, "dcpl", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_lcpl), __pyx_ptype_4h5py_3h5p_PropID, 1, "lcpl", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_dapl), __pyx_ptype_4h5py_3h5p_PropID, 1, "dapl", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_pf_4h5py_3h5d_create(__pyx_self, __pyx_v_loc, __pyx_v_name, __pyx_v_tid, __pyx_v_space, __pyx_v_dcpl, __pyx_v_lcpl, __pyx_v_dapl);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5d.pyx":54
+ * # === Dataset operations ======================================================
+ * 
+ * def create(ObjectID loc not None, object name, TypeID tid not None,             # <<<<<<<<<<<<<<
+ *                SpaceID space not None, PropID dcpl=None, PropID lcpl=None, PropID dapl = None):
+ *         """ (objectID loc, STRING name or None, TypeID tid, SpaceID space,
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5d_create(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_loc, PyObject *__pyx_v_name, struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_v_tid, struct __pyx_obj_4h5py_3h5s_SpaceID *__pyx_v_space, struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_dcpl, struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_lcpl, struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_dapl) {
+  hid_t __pyx_v_dsid;
+  char *__pyx_v_cname;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  char *__pyx_t_2;
+  hid_t __pyx_t_3;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("create", 0);
+
+  /* "h5py/h5d.pyx":63
+ *         """
+ *         cdef hid_t dsid
+ *         cdef char* cname = NULL             # <<<<<<<<<<<<<<
+ *         if name is not None:
+ *             cname = name
+ */
+  __pyx_v_cname = NULL;
+
+  /* "h5py/h5d.pyx":64
+ *         cdef hid_t dsid
+ *         cdef char* cname = NULL
+ *         if name is not None:             # <<<<<<<<<<<<<<
+ *             cname = name
+ * 
+ */
+  __pyx_t_1 = (__pyx_v_name != Py_None);
+  if (__pyx_t_1) {
+
+    /* "h5py/h5d.pyx":65
+ *         cdef char* cname = NULL
+ *         if name is not None:
+ *             cname = name             # <<<<<<<<<<<<<<
+ * 
+ *         if cname != NULL:
+ */
+    __pyx_t_2 = PyBytes_AsString(__pyx_v_name); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_v_cname = __pyx_t_2;
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  /* "h5py/h5d.pyx":67
+ *             cname = name
+ * 
+ *         if cname != NULL:             # <<<<<<<<<<<<<<
+ *             dsid = H5Dcreate2(loc.id, cname, tid.id, space.id,
+ *                      pdefault(lcpl), pdefault(dcpl), pdefault(dapl))
+ */
+  __pyx_t_1 = (__pyx_v_cname != NULL);
+  if (__pyx_t_1) {
+
+    /* "h5py/h5d.pyx":69
+ *         if cname != NULL:
+ *             dsid = H5Dcreate2(loc.id, cname, tid.id, space.id,
+ *                      pdefault(lcpl), pdefault(dcpl), pdefault(dapl))             # <<<<<<<<<<<<<<
+ *         else:
+ *             dsid = H5Dcreate_anon(loc.id, tid.id, space.id,
+ */
+    __pyx_t_3 = __pyx_f_4h5py_4defs_H5Dcreate2(__pyx_v_loc->id, __pyx_v_cname, __pyx_v_tid->__pyx_base.id, __pyx_v_space->__pyx_base.id, __pyx_f_4h5py_8_objects_pdefault(((struct __pyx_obj_4h5py_8_objects_ObjectID *)__pyx_v_lcpl)), __pyx_f_4h5py_8_objects_pdefault(((struct __pyx_obj_4h5py_8_objects_ObjectID *)__pyx_v_dcpl)), __pyx_f_4h5py_8_objects_pdefault(((struct __pyx_obj_4h5py_8_objects_ObjectID *)__pyx_v_dapl))); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_l [...]
+    __pyx_v_dsid = __pyx_t_3;
+    goto __pyx_L4;
+  }
+  /*else*/ {
+
+    /* "h5py/h5d.pyx":72
+ *         else:
+ *             dsid = H5Dcreate_anon(loc.id, tid.id, space.id,
+ *                      pdefault(dcpl), pdefault(dapl))             # <<<<<<<<<<<<<<
+ *         return DatasetID.open(dsid)
+ * 
+ */
+    __pyx_t_3 = __pyx_f_4h5py_4defs_H5Dcreate_anon(__pyx_v_loc->id, __pyx_v_tid->__pyx_base.id, __pyx_v_space->__pyx_base.id, __pyx_f_4h5py_8_objects_pdefault(((struct __pyx_obj_4h5py_8_objects_ObjectID *)__pyx_v_dcpl)), __pyx_f_4h5py_8_objects_pdefault(((struct __pyx_obj_4h5py_8_objects_ObjectID *)__pyx_v_dapl))); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_v_dsid = __pyx_t_3;
+  }
+  __pyx_L4:;
+
+  /* "h5py/h5d.pyx":73
+ *             dsid = H5Dcreate_anon(loc.id, tid.id, space.id,
+ *                      pdefault(dcpl), pdefault(dapl))
+ *         return DatasetID.open(dsid)             # <<<<<<<<<<<<<<
+ * 
+ * def open(ObjectID loc not None, char* name):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_4 = PyObject_GetAttr(((PyObject *)((PyObject*)__pyx_ptype_4h5py_3h5d_DatasetID)), __pyx_n_s__open); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = __Pyx_PyInt_to_py_hid_t(__pyx_v_dsid); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_6);
+  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5);
+  __Pyx_GIVEREF(__pyx_t_5);
+  __pyx_t_5 = 0;
+  __pyx_t_5 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
+  __pyx_r = __pyx_t_5;
+  __pyx_t_5 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_AddTraceback("h5py.h5d.create", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5d_3open(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_4h5py_3h5d_2open[] = " (ObjectID loc, STRING name) => DatasetID\n\n        Open an existing dataset attached to a group or file object, by name.\n    ";
+static PyMethodDef __pyx_mdef_4h5py_3h5d_3open = {__Pyx_NAMESTR("open"), (PyCFunction)__pyx_pw_4h5py_3h5d_3open, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5d_2open)};
+static PyObject *__pyx_pw_4h5py_3h5d_3open(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_loc = 0;
+  char *__pyx_v_name;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("open (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__loc,&__pyx_n_s__name,0};
+    PyObject* values[2] = {0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__loc)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__name)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("open", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "open") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+    }
+    __pyx_v_loc = ((struct __pyx_obj_4h5py_8_objects_ObjectID *)values[0]);
+    __pyx_v_name = PyBytes_AsString(values[1]); if (unlikely((!__pyx_v_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("open", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5d.open", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_loc), __pyx_ptype_4h5py_8_objects_ObjectID, 0, "loc", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_pf_4h5py_3h5d_2open(__pyx_self, __pyx_v_loc, __pyx_v_name);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5d.pyx":75
+ *         return DatasetID.open(dsid)
+ * 
+ * def open(ObjectID loc not None, char* name):             # <<<<<<<<<<<<<<
+ *     """ (ObjectID loc, STRING name) => DatasetID
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5d_2open(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_loc, char *__pyx_v_name) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  hid_t __pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("open", 0);
+
+  /* "h5py/h5d.pyx":80
+ *         Open an existing dataset attached to a group or file object, by name.
+ *     """
+ *     return DatasetID.open(H5Dopen(loc.id, name))             # <<<<<<<<<<<<<<
+ * 
+ * # --- Proxy functions for safe(r) threading -----------------------------------
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyObject_GetAttr(((PyObject *)((PyObject*)__pyx_ptype_4h5py_3h5d_DatasetID)), __pyx_n_s__open); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __pyx_f_4h5py_4defs_H5Dopen(__pyx_v_loc->id, __pyx_v_name); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyInt_to_py_hid_t(__pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_3);
+  __pyx_t_3 = 0;
+  __pyx_t_3 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
+  __pyx_r = __pyx_t_3;
+  __pyx_t_3 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("h5py.h5d.open", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5d_9DatasetID_5dtype_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4h5py_3h5d_9DatasetID_5dtype_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5d_9DatasetID_5dtype___get__(((struct __pyx_obj_4h5py_3h5d_DatasetID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5d.pyx":106
+ *     property dtype:
+ *         """ Numpy dtype object representing the dataset type """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             # Dataset type can't change
+ *             cdef TypeID tid
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5d_9DatasetID_5dtype___get__(struct __pyx_obj_4h5py_3h5d_DatasetID *__pyx_v_self) {
+  struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_v_tid = 0;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "h5py/h5d.pyx":109
+ *             # Dataset type can't change
+ *             cdef TypeID tid
+ *             if self._dtype is None:             # <<<<<<<<<<<<<<
+ *                 tid = self.get_type()
+ *                 self._dtype = tid.dtype
+ */
+  __pyx_t_1 = (__pyx_v_self->_dtype == Py_None);
+  if (__pyx_t_1) {
+
+    /* "h5py/h5d.pyx":110
+ *             cdef TypeID tid
+ *             if self._dtype is None:
+ *                 tid = self.get_type()             # <<<<<<<<<<<<<<
+ *                 self._dtype = tid.dtype
+ *             return self._dtype
+ */
+    __pyx_t_2 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__get_type); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_4h5py_3h5t_TypeID))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_v_tid = ((struct __pyx_obj_4h5py_3h5t_TypeID *)__pyx_t_3);
+    __pyx_t_3 = 0;
+
+    /* "h5py/h5d.pyx":111
+ *             if self._dtype is None:
+ *                 tid = self.get_type()
+ *                 self._dtype = tid.dtype             # <<<<<<<<<<<<<<
+ *             return self._dtype
+ * 
+ */
+    __pyx_t_3 = PyObject_GetAttr(((PyObject *)__pyx_v_tid), __pyx_n_s__dtype); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_GIVEREF(__pyx_t_3);
+    __Pyx_GOTREF(__pyx_v_self->_dtype);
+    __Pyx_DECREF(__pyx_v_self->_dtype);
+    __pyx_v_self->_dtype = __pyx_t_3;
+    __pyx_t_3 = 0;
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  /* "h5py/h5d.pyx":112
+ *                 tid = self.get_type()
+ *                 self._dtype = tid.dtype
+ *             return self._dtype             # <<<<<<<<<<<<<<
+ * 
+ *     property shape:
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_self->_dtype);
+  __pyx_r = __pyx_v_self->_dtype;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("h5py.h5d.DatasetID.dtype.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_tid);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5d_9DatasetID_5shape_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4h5py_3h5d_9DatasetID_5shape_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5d_9DatasetID_5shape___get__(((struct __pyx_obj_4h5py_3h5d_DatasetID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5d.pyx":116
+ *     property shape:
+ *         """ Numpy-style shape tuple representing the dataspace """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             # Shape can change (DatasetID.extend), so don't cache it
+ *             cdef SpaceID sid
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5d_9DatasetID_5shape___get__(struct __pyx_obj_4h5py_3h5d_DatasetID *__pyx_v_self) {
+  struct __pyx_obj_4h5py_3h5s_SpaceID *__pyx_v_sid = 0;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "h5py/h5d.pyx":119
+ *             # Shape can change (DatasetID.extend), so don't cache it
+ *             cdef SpaceID sid
+ *             sid = self.get_space()             # <<<<<<<<<<<<<<
+ *             return sid.get_simple_extent_dims()
+ * 
+ */
+  __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__get_space); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_4h5py_3h5s_SpaceID))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v_sid = ((struct __pyx_obj_4h5py_3h5s_SpaceID *)__pyx_t_2);
+  __pyx_t_2 = 0;
+
+  /* "h5py/h5d.pyx":120
+ *             cdef SpaceID sid
+ *             sid = self.get_space()
+ *             return sid.get_simple_extent_dims()             # <<<<<<<<<<<<<<
+ * 
+ *     property rank:
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_2 = PyObject_GetAttr(((PyObject *)__pyx_v_sid), __pyx_n_s_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 120; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 120; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5d.DatasetID.shape.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_sid);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5d_9DatasetID_4rank_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4h5py_3h5d_9DatasetID_4rank_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5d_9DatasetID_4rank___get__(((struct __pyx_obj_4h5py_3h5d_DatasetID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5d.pyx":124
+ *     property rank:
+ *         """ Integer giving the dataset rank (0 = scalar) """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             cdef SpaceID sid
+ *             sid = self.get_space()
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5d_9DatasetID_4rank___get__(struct __pyx_obj_4h5py_3h5d_DatasetID *__pyx_v_self) {
+  struct __pyx_obj_4h5py_3h5s_SpaceID *__pyx_v_sid = 0;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "h5py/h5d.pyx":126
+ *         def __get__(self):
+ *             cdef SpaceID sid
+ *             sid = self.get_space()             # <<<<<<<<<<<<<<
+ *             return sid.get_simple_extent_ndims()
+ * 
+ */
+  __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__get_space); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_4h5py_3h5s_SpaceID))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v_sid = ((struct __pyx_obj_4h5py_3h5s_SpaceID *)__pyx_t_2);
+  __pyx_t_2 = 0;
+
+  /* "h5py/h5d.pyx":127
+ *             cdef SpaceID sid
+ *             sid = self.get_space()
+ *             return sid.get_simple_extent_ndims()             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_2 = PyObject_GetAttr(((PyObject *)__pyx_v_sid), __pyx_n_s_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5d.DatasetID.rank.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_sid);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5d_9DatasetID_1_close(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5d_9DatasetID__close[] = " ()\n\n            Terminate access through this identifier.  You shouldn't have to\n            call this manually; Dataset objects are automatically destroyed\n            when their Python wrappers are freed.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5d_9DatasetID_1_close(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("_close (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5d_9DatasetID__close(((struct __pyx_obj_4h5py_3h5d_DatasetID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5d.pyx":130
+ * 
+ * 
+ *     def _close(self):             # <<<<<<<<<<<<<<
+ *         """ ()
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5d_9DatasetID__close(struct __pyx_obj_4h5py_3h5d_DatasetID *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_close", 0);
+
+  /* "h5py/h5d.pyx":137
+ *             when their Python wrappers are freed.
+ *         """
+ *         with _objects.registry.lock:             # <<<<<<<<<<<<<<
+ *             H5Dclose(self.id)
+ *             if not self.valid:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s___objects); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__registry); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __pyx_t_1 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__lock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_4 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/h5d.pyx":138
+ *         """
+ *         with _objects.registry.lock:
+ *             H5Dclose(self.id)             # <<<<<<<<<<<<<<
+ *             if not self.valid:
+ *                 del _objects.registry[self.id]
+ */
+          __pyx_t_8 = __pyx_f_4h5py_4defs_H5Dclose(__pyx_v_self->__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 138; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+
+          /* "h5py/h5d.pyx":139
+ *         with _objects.registry.lock:
+ *             H5Dclose(self.id)
+ *             if not self.valid:             # <<<<<<<<<<<<<<
+ *                 del _objects.registry[self.id]
+ * 
+ */
+          __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__valid); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 139; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 139; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __pyx_t_10 = (!__pyx_t_9);
+          if (__pyx_t_10) {
+
+            /* "h5py/h5d.pyx":140
+ *             H5Dclose(self.id)
+ *             if not self.valid:
+ *                 del _objects.registry[self.id]             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+            __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s___objects); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 140; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            __Pyx_GOTREF(__pyx_t_1);
+            __pyx_t_4 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__registry); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 140; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            __Pyx_GOTREF(__pyx_t_4);
+            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+            if (__Pyx_DelItemInt(__pyx_t_4, __pyx_v_self->__pyx_base.id, sizeof(hid_t), __Pyx_PyInt_to_py_hid_t) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 140; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+        /* "h5py/h5d.pyx":137
+ *             when their Python wrappers are freed.
+ *         """
+ *         with _objects.registry.lock:             # <<<<<<<<<<<<<<
+ *             H5Dclose(self.id)
+ *             if not self.valid:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.h5d.DatasetID._close", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_1, &__pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_2);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_2);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_2);
+          __Pyx_GIVEREF(__pyx_t_2);
+          __pyx_t_12 = PyObject_Call(__pyx_t_3, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_10 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_9 = (!__pyx_t_10);
+          if (__pyx_t_9) {
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_2);
+            __Pyx_ErrRestore(__pyx_t_4, __pyx_t_1, __pyx_t_2);
+            __pyx_t_4 = 0; __pyx_t_1 = 0; __pyx_t_2 = 0; 
+            {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L18;
+          }
+          __pyx_L18:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      if (__pyx_t_3) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_3, __pyx_k_tuple_3, NULL);
+        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+    }
+    goto __pyx_L19;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    goto __pyx_L1_error;
+    __pyx_L19:;
+  }
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.h5d.DatasetID._close", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5d_9DatasetID_3read(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_4h5py_3h5d_9DatasetID_2read[] = " (SpaceID mspace, SpaceID fspace, NDARRAY arr_obj,\n             TypeID mtype=None, PropDXID dxpl=None)\n\n            Read data from an HDF5 dataset into a Numpy array.\n\n            It is your responsibility to ensure that the memory dataspace\n            provided is compatible with the shape of the Numpy array.  Since a\n            wide variety of dataspace configurations are possible, this is not\n            checked.  You can [...]
+static PyObject *__pyx_pw_4h5py_3h5d_9DatasetID_3read(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  struct __pyx_obj_4h5py_3h5s_SpaceID *__pyx_v_mspace = 0;
+  struct __pyx_obj_4h5py_3h5s_SpaceID *__pyx_v_fspace = 0;
+  PyArrayObject *__pyx_v_arr_obj = 0;
+  struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_v_mtype = 0;
+  struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_dxpl = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("read (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__mspace,&__pyx_n_s__fspace,&__pyx_n_s__arr_obj,&__pyx_n_s__mtype,&__pyx_n_s__dxpl,0};
+    PyObject* values[5] = {0,0,0,0,0};
+
+    /* "h5py/h5d.pyx":144
+ * 
+ *     def read(self, SpaceID mspace not None, SpaceID fspace not None,
+ *                    ndarray arr_obj not None, TypeID mtype=None,             # <<<<<<<<<<<<<<
+ *                    PropID dxpl=None):
+ *         """ (SpaceID mspace, SpaceID fspace, NDARRAY arr_obj,
+ */
+    values[3] = (PyObject *)((struct __pyx_obj_4h5py_3h5t_TypeID *)Py_None);
+
+    /* "h5py/h5d.pyx":145
+ *     def read(self, SpaceID mspace not None, SpaceID fspace not None,
+ *                    ndarray arr_obj not None, TypeID mtype=None,
+ *                    PropID dxpl=None):             # <<<<<<<<<<<<<<
+ *         """ (SpaceID mspace, SpaceID fspace, NDARRAY arr_obj,
+ *              TypeID mtype=None, PropDXID dxpl=None)
+ */
+    values[4] = (PyObject *)((struct __pyx_obj_4h5py_3h5p_PropID *)Py_None);
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__mspace)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__fspace)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("read", 0, 3, 5, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 143; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+        case  2:
+        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__arr_obj)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("read", 0, 3, 5, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 143; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+        case  3:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__mtype);
+          if (value) { values[3] = value; kw_args--; }
+        }
+        case  4:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__dxpl);
+          if (value) { values[4] = value; kw_args--; }
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "read") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 143; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else {
+      switch (PyTuple_GET_SIZE(__pyx_args)) {
+        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+    }
+    __pyx_v_mspace = ((struct __pyx_obj_4h5py_3h5s_SpaceID *)values[0]);
+    __pyx_v_fspace = ((struct __pyx_obj_4h5py_3h5s_SpaceID *)values[1]);
+    __pyx_v_arr_obj = ((PyArrayObject *)values[2]);
+    __pyx_v_mtype = ((struct __pyx_obj_4h5py_3h5t_TypeID *)values[3]);
+    __pyx_v_dxpl = ((struct __pyx_obj_4h5py_3h5p_PropID *)values[4]);
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("read", 0, 3, 5, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 143; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5d.DatasetID.read", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_mspace), __pyx_ptype_4h5py_3h5s_SpaceID, 0, "mspace", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_fspace), __pyx_ptype_4h5py_3h5s_SpaceID, 0, "fspace", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_arr_obj), __pyx_ptype_4h5py_5numpy_ndarray, 0, "arr_obj", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_mtype), __pyx_ptype_4h5py_3h5t_TypeID, 1, "mtype", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_dxpl), __pyx_ptype_4h5py_3h5p_PropID, 1, "dxpl", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_pf_4h5py_3h5d_9DatasetID_2read(((struct __pyx_obj_4h5py_3h5d_DatasetID *)__pyx_v_self), __pyx_v_mspace, __pyx_v_fspace, __pyx_v_arr_obj, __pyx_v_mtype, __pyx_v_dxpl);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5d.pyx":143
+ * 
+ * 
+ *     def read(self, SpaceID mspace not None, SpaceID fspace not None,             # <<<<<<<<<<<<<<
+ *                    ndarray arr_obj not None, TypeID mtype=None,
+ *                    PropID dxpl=None):
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5d_9DatasetID_2read(struct __pyx_obj_4h5py_3h5d_DatasetID *__pyx_v_self, struct __pyx_obj_4h5py_3h5s_SpaceID *__pyx_v_mspace, struct __pyx_obj_4h5py_3h5s_SpaceID *__pyx_v_fspace, PyArrayObject *__pyx_v_arr_obj, struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_v_mtype, struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_dxpl) {
+  hid_t __pyx_v_self_id;
+  hid_t __pyx_v_mtype_id;
+  hid_t __pyx_v_mspace_id;
+  hid_t __pyx_v_fspace_id;
+  hid_t __pyx_v_plist_id;
+  void *__pyx_v_data;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  int __pyx_t_4;
+  struct __pyx_opt_args_4h5py_5utils_check_numpy_write __pyx_t_5;
+  hid_t __pyx_t_6;
+  herr_t __pyx_t_7;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("read", 0);
+  __Pyx_INCREF((PyObject *)__pyx_v_mtype);
+
+  /* "h5py/h5d.pyx":168
+ *         cdef int oldflags
+ * 
+ *         if mtype is None:             # <<<<<<<<<<<<<<
+ *             mtype = py_create(arr_obj.dtype)
+ *         check_numpy_write(arr_obj, -1)
+ */
+  __pyx_t_1 = (((PyObject *)__pyx_v_mtype) == Py_None);
+  if (__pyx_t_1) {
+
+    /* "h5py/h5d.pyx":169
+ * 
+ *         if mtype is None:
+ *             mtype = py_create(arr_obj.dtype)             # <<<<<<<<<<<<<<
+ *         check_numpy_write(arr_obj, -1)
+ * 
+ */
+    __pyx_t_2 = PyObject_GetAttr(((PyObject *)__pyx_v_arr_obj), __pyx_n_s__dtype); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 169; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = ((PyObject *)__pyx_f_4h5py_3h5t_py_create(__pyx_t_2, 0, NULL)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 169; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __Pyx_DECREF(((PyObject *)__pyx_v_mtype));
+    __pyx_v_mtype = ((struct __pyx_obj_4h5py_3h5t_TypeID *)__pyx_t_3);
+    __pyx_t_3 = 0;
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  /* "h5py/h5d.pyx":170
+ *         if mtype is None:
+ *             mtype = py_create(arr_obj.dtype)
+ *         check_numpy_write(arr_obj, -1)             # <<<<<<<<<<<<<<
+ * 
+ *         self_id = self.id
+ */
+  __pyx_t_5.__pyx_n = 1;
+  __pyx_t_5.space_id = -1;
+  __pyx_t_4 = __pyx_f_4h5py_5utils_check_numpy_write(__pyx_v_arr_obj, 0, &__pyx_t_5); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5d.pyx":172
+ *         check_numpy_write(arr_obj, -1)
+ * 
+ *         self_id = self.id             # <<<<<<<<<<<<<<
+ *         mtype_id = mtype.id
+ *         mspace_id = mspace.id
+ */
+  __pyx_t_6 = __pyx_v_self->__pyx_base.id;
+  __pyx_v_self_id = __pyx_t_6;
+
+  /* "h5py/h5d.pyx":173
+ * 
+ *         self_id = self.id
+ *         mtype_id = mtype.id             # <<<<<<<<<<<<<<
+ *         mspace_id = mspace.id
+ *         fspace_id = fspace.id
+ */
+  __pyx_t_6 = __pyx_v_mtype->__pyx_base.id;
+  __pyx_v_mtype_id = __pyx_t_6;
+
+  /* "h5py/h5d.pyx":174
+ *         self_id = self.id
+ *         mtype_id = mtype.id
+ *         mspace_id = mspace.id             # <<<<<<<<<<<<<<
+ *         fspace_id = fspace.id
+ *         plist_id = pdefault(dxpl)
+ */
+  __pyx_t_6 = __pyx_v_mspace->__pyx_base.id;
+  __pyx_v_mspace_id = __pyx_t_6;
+
+  /* "h5py/h5d.pyx":175
+ *         mtype_id = mtype.id
+ *         mspace_id = mspace.id
+ *         fspace_id = fspace.id             # <<<<<<<<<<<<<<
+ *         plist_id = pdefault(dxpl)
+ *         data = PyArray_DATA(arr_obj)
+ */
+  __pyx_t_6 = __pyx_v_fspace->__pyx_base.id;
+  __pyx_v_fspace_id = __pyx_t_6;
+
+  /* "h5py/h5d.pyx":176
+ *         mspace_id = mspace.id
+ *         fspace_id = fspace.id
+ *         plist_id = pdefault(dxpl)             # <<<<<<<<<<<<<<
+ *         data = PyArray_DATA(arr_obj)
+ * 
+ */
+  __pyx_v_plist_id = __pyx_f_4h5py_8_objects_pdefault(((struct __pyx_obj_4h5py_8_objects_ObjectID *)__pyx_v_dxpl));
+
+  /* "h5py/h5d.pyx":177
+ *         fspace_id = fspace.id
+ *         plist_id = pdefault(dxpl)
+ *         data = PyArray_DATA(arr_obj)             # <<<<<<<<<<<<<<
+ * 
+ *         dset_rw(self_id, mtype_id, mspace_id, fspace_id, plist_id, data, 1)
+ */
+  __pyx_v_data = PyArray_DATA(__pyx_v_arr_obj);
+
+  /* "h5py/h5d.pyx":179
+ *         data = PyArray_DATA(arr_obj)
+ * 
+ *         dset_rw(self_id, mtype_id, mspace_id, fspace_id, plist_id, data, 1)             # <<<<<<<<<<<<<<
+ * 
+ *     def write(self, SpaceID mspace not None, SpaceID fspace not None,
+ */
+  __pyx_t_7 = __pyx_f_4h5py_6_proxy_dset_rw(__pyx_v_self_id, __pyx_v_mtype_id, __pyx_v_mspace_id, __pyx_v_fspace_id, __pyx_v_plist_id, __pyx_v_data, 1); if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 179; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("h5py.h5d.DatasetID.read", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_mtype);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5d_9DatasetID_5write(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_4h5py_3h5d_9DatasetID_4write[] = " (SpaceID mspace, SpaceID fspace, NDARRAY arr_obj,\n             TypeID mtype=None, PropDXID dxpl=None)\n\n            Write data from a Numpy array to an HDF5 dataset. Keyword dxpl may\n            be a dataset transfer property list.\n\n            It is your responsibility to ensure that the memory dataspace\n            provided is compatible with the shape of the Numpy array.  Since a\n            wide variety of dataspace conf [...]
+static PyObject *__pyx_pw_4h5py_3h5d_9DatasetID_5write(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  struct __pyx_obj_4h5py_3h5s_SpaceID *__pyx_v_mspace = 0;
+  struct __pyx_obj_4h5py_3h5s_SpaceID *__pyx_v_fspace = 0;
+  PyArrayObject *__pyx_v_arr_obj = 0;
+  struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_v_mtype = 0;
+  struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_dxpl = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("write (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__mspace,&__pyx_n_s__fspace,&__pyx_n_s__arr_obj,&__pyx_n_s__mtype,&__pyx_n_s__dxpl,0};
+    PyObject* values[5] = {0,0,0,0,0};
+
+    /* "h5py/h5d.pyx":182
+ * 
+ *     def write(self, SpaceID mspace not None, SpaceID fspace not None,
+ *                     ndarray arr_obj not None, TypeID mtype=None,             # <<<<<<<<<<<<<<
+ *                     PropID dxpl=None):
+ *         """ (SpaceID mspace, SpaceID fspace, NDARRAY arr_obj,
+ */
+    values[3] = (PyObject *)((struct __pyx_obj_4h5py_3h5t_TypeID *)Py_None);
+
+    /* "h5py/h5d.pyx":183
+ *     def write(self, SpaceID mspace not None, SpaceID fspace not None,
+ *                     ndarray arr_obj not None, TypeID mtype=None,
+ *                     PropID dxpl=None):             # <<<<<<<<<<<<<<
+ *         """ (SpaceID mspace, SpaceID fspace, NDARRAY arr_obj,
+ *              TypeID mtype=None, PropDXID dxpl=None)
+ */
+    values[4] = (PyObject *)((struct __pyx_obj_4h5py_3h5p_PropID *)Py_None);
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__mspace)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__fspace)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("write", 0, 3, 5, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 181; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+        case  2:
+        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__arr_obj)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("write", 0, 3, 5, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 181; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+        case  3:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__mtype);
+          if (value) { values[3] = value; kw_args--; }
+        }
+        case  4:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__dxpl);
+          if (value) { values[4] = value; kw_args--; }
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "write") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 181; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else {
+      switch (PyTuple_GET_SIZE(__pyx_args)) {
+        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+    }
+    __pyx_v_mspace = ((struct __pyx_obj_4h5py_3h5s_SpaceID *)values[0]);
+    __pyx_v_fspace = ((struct __pyx_obj_4h5py_3h5s_SpaceID *)values[1]);
+    __pyx_v_arr_obj = ((PyArrayObject *)values[2]);
+    __pyx_v_mtype = ((struct __pyx_obj_4h5py_3h5t_TypeID *)values[3]);
+    __pyx_v_dxpl = ((struct __pyx_obj_4h5py_3h5p_PropID *)values[4]);
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("write", 0, 3, 5, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 181; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5d.DatasetID.write", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_mspace), __pyx_ptype_4h5py_3h5s_SpaceID, 0, "mspace", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 181; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_fspace), __pyx_ptype_4h5py_3h5s_SpaceID, 0, "fspace", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 181; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_arr_obj), __pyx_ptype_4h5py_5numpy_ndarray, 0, "arr_obj", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_mtype), __pyx_ptype_4h5py_3h5t_TypeID, 1, "mtype", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_dxpl), __pyx_ptype_4h5py_3h5p_PropID, 1, "dxpl", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 183; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_pf_4h5py_3h5d_9DatasetID_4write(((struct __pyx_obj_4h5py_3h5d_DatasetID *)__pyx_v_self), __pyx_v_mspace, __pyx_v_fspace, __pyx_v_arr_obj, __pyx_v_mtype, __pyx_v_dxpl);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5d.pyx":181
+ *         dset_rw(self_id, mtype_id, mspace_id, fspace_id, plist_id, data, 1)
+ * 
+ *     def write(self, SpaceID mspace not None, SpaceID fspace not None,             # <<<<<<<<<<<<<<
+ *                     ndarray arr_obj not None, TypeID mtype=None,
+ *                     PropID dxpl=None):
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5d_9DatasetID_4write(struct __pyx_obj_4h5py_3h5d_DatasetID *__pyx_v_self, struct __pyx_obj_4h5py_3h5s_SpaceID *__pyx_v_mspace, struct __pyx_obj_4h5py_3h5s_SpaceID *__pyx_v_fspace, PyArrayObject *__pyx_v_arr_obj, struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_v_mtype, struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_dxpl) {
+  hid_t __pyx_v_self_id;
+  hid_t __pyx_v_mtype_id;
+  hid_t __pyx_v_mspace_id;
+  hid_t __pyx_v_fspace_id;
+  hid_t __pyx_v_plist_id;
+  void *__pyx_v_data;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  int __pyx_t_4;
+  struct __pyx_opt_args_4h5py_5utils_check_numpy_read __pyx_t_5;
+  hid_t __pyx_t_6;
+  herr_t __pyx_t_7;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("write", 0);
+  __Pyx_INCREF((PyObject *)__pyx_v_mtype);
+
+  /* "h5py/h5d.pyx":206
+ *         cdef int oldflags
+ * 
+ *         if mtype is None:             # <<<<<<<<<<<<<<
+ *             mtype = py_create(arr_obj.dtype)
+ *         check_numpy_read(arr_obj, -1)
+ */
+  __pyx_t_1 = (((PyObject *)__pyx_v_mtype) == Py_None);
+  if (__pyx_t_1) {
+
+    /* "h5py/h5d.pyx":207
+ * 
+ *         if mtype is None:
+ *             mtype = py_create(arr_obj.dtype)             # <<<<<<<<<<<<<<
+ *         check_numpy_read(arr_obj, -1)
+ * 
+ */
+    __pyx_t_2 = PyObject_GetAttr(((PyObject *)__pyx_v_arr_obj), __pyx_n_s__dtype); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 207; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = ((PyObject *)__pyx_f_4h5py_3h5t_py_create(__pyx_t_2, 0, NULL)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 207; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __Pyx_DECREF(((PyObject *)__pyx_v_mtype));
+    __pyx_v_mtype = ((struct __pyx_obj_4h5py_3h5t_TypeID *)__pyx_t_3);
+    __pyx_t_3 = 0;
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  /* "h5py/h5d.pyx":208
+ *         if mtype is None:
+ *             mtype = py_create(arr_obj.dtype)
+ *         check_numpy_read(arr_obj, -1)             # <<<<<<<<<<<<<<
+ * 
+ *         self_id = self.id
+ */
+  __pyx_t_5.__pyx_n = 1;
+  __pyx_t_5.space_id = -1;
+  __pyx_t_4 = __pyx_f_4h5py_5utils_check_numpy_read(__pyx_v_arr_obj, 0, &__pyx_t_5); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5d.pyx":210
+ *         check_numpy_read(arr_obj, -1)
+ * 
+ *         self_id = self.id             # <<<<<<<<<<<<<<
+ *         mtype_id = mtype.id
+ *         mspace_id = mspace.id
+ */
+  __pyx_t_6 = __pyx_v_self->__pyx_base.id;
+  __pyx_v_self_id = __pyx_t_6;
+
+  /* "h5py/h5d.pyx":211
+ * 
+ *         self_id = self.id
+ *         mtype_id = mtype.id             # <<<<<<<<<<<<<<
+ *         mspace_id = mspace.id
+ *         fspace_id = fspace.id
+ */
+  __pyx_t_6 = __pyx_v_mtype->__pyx_base.id;
+  __pyx_v_mtype_id = __pyx_t_6;
+
+  /* "h5py/h5d.pyx":212
+ *         self_id = self.id
+ *         mtype_id = mtype.id
+ *         mspace_id = mspace.id             # <<<<<<<<<<<<<<
+ *         fspace_id = fspace.id
+ *         plist_id = pdefault(dxpl)
+ */
+  __pyx_t_6 = __pyx_v_mspace->__pyx_base.id;
+  __pyx_v_mspace_id = __pyx_t_6;
+
+  /* "h5py/h5d.pyx":213
+ *         mtype_id = mtype.id
+ *         mspace_id = mspace.id
+ *         fspace_id = fspace.id             # <<<<<<<<<<<<<<
+ *         plist_id = pdefault(dxpl)
+ *         data = PyArray_DATA(arr_obj)
+ */
+  __pyx_t_6 = __pyx_v_fspace->__pyx_base.id;
+  __pyx_v_fspace_id = __pyx_t_6;
+
+  /* "h5py/h5d.pyx":214
+ *         mspace_id = mspace.id
+ *         fspace_id = fspace.id
+ *         plist_id = pdefault(dxpl)             # <<<<<<<<<<<<<<
+ *         data = PyArray_DATA(arr_obj)
+ * 
+ */
+  __pyx_v_plist_id = __pyx_f_4h5py_8_objects_pdefault(((struct __pyx_obj_4h5py_8_objects_ObjectID *)__pyx_v_dxpl));
+
+  /* "h5py/h5d.pyx":215
+ *         fspace_id = fspace.id
+ *         plist_id = pdefault(dxpl)
+ *         data = PyArray_DATA(arr_obj)             # <<<<<<<<<<<<<<
+ * 
+ *         dset_rw(self_id, mtype_id, mspace_id, fspace_id, plist_id, data, 0)
+ */
+  __pyx_v_data = PyArray_DATA(__pyx_v_arr_obj);
+
+  /* "h5py/h5d.pyx":217
+ *         data = PyArray_DATA(arr_obj)
+ * 
+ *         dset_rw(self_id, mtype_id, mspace_id, fspace_id, plist_id, data, 0)             # <<<<<<<<<<<<<<
+ * 
+ *     def extend(self, tuple shape):
+ */
+  __pyx_t_7 = __pyx_f_4h5py_6_proxy_dset_rw(__pyx_v_self_id, __pyx_v_mtype_id, __pyx_v_mspace_id, __pyx_v_fspace_id, __pyx_v_plist_id, __pyx_v_data, 0); if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 217; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("h5py.h5d.DatasetID.write", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_mtype);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5d_9DatasetID_7extend(PyObject *__pyx_v_self, PyObject *__pyx_v_shape); /*proto*/
+static char __pyx_doc_4h5py_3h5d_9DatasetID_6extend[] = " (TUPLE shape)\n\n            Extend the given dataset so it's at least as big as \"shape\".  Note\n            that a dataset may only be extended up to the maximum dimensions of\n            its dataspace, which are fixed when the dataset is created.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5d_9DatasetID_7extend(PyObject *__pyx_v_self, PyObject *__pyx_v_shape) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("extend (wrapper)", 0);
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_shape), (&PyTuple_Type), 1, "shape", 1))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_pf_4h5py_3h5d_9DatasetID_6extend(((struct __pyx_obj_4h5py_3h5d_DatasetID *)__pyx_v_self), ((PyObject*)__pyx_v_shape));
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5d.pyx":219
+ *         dset_rw(self_id, mtype_id, mspace_id, fspace_id, plist_id, data, 0)
+ * 
+ *     def extend(self, tuple shape):             # <<<<<<<<<<<<<<
+ *         """ (TUPLE shape)
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5d_9DatasetID_6extend(struct __pyx_obj_4h5py_3h5d_DatasetID *__pyx_v_self, PyObject *__pyx_v_shape) {
+  int __pyx_v_rank;
+  hid_t __pyx_v_space_id;
+  hsize_t *__pyx_v_dims;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  hid_t __pyx_t_1;
+  int __pyx_t_2;
+  Py_ssize_t __pyx_t_3;
+  int __pyx_t_4;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  void *__pyx_t_8;
+  herr_t __pyx_t_9;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("extend", 0);
+
+  /* "h5py/h5d.pyx":227
+ *         """
+ *         cdef int rank
+ *         cdef hid_t space_id = 0             # <<<<<<<<<<<<<<
+ *         cdef hsize_t* dims = NULL
+ * 
+ */
+  __pyx_v_space_id = 0;
+
+  /* "h5py/h5d.pyx":228
+ *         cdef int rank
+ *         cdef hid_t space_id = 0
+ *         cdef hsize_t* dims = NULL             # <<<<<<<<<<<<<<
+ * 
+ *         try:
+ */
+  __pyx_v_dims = NULL;
+
+  /* "h5py/h5d.pyx":230
+ *         cdef hsize_t* dims = NULL
+ * 
+ *         try:             # <<<<<<<<<<<<<<
+ *             space_id = H5Dget_space(self.id)
+ *             rank = H5Sget_simple_extent_ndims(space_id)
+ */
+  /*try:*/ {
+
+    /* "h5py/h5d.pyx":231
+ * 
+ *         try:
+ *             space_id = H5Dget_space(self.id)             # <<<<<<<<<<<<<<
+ *             rank = H5Sget_simple_extent_ndims(space_id)
+ * 
+ */
+    __pyx_t_1 = __pyx_f_4h5py_4defs_H5Dget_space(__pyx_v_self->__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L4;}
+    __pyx_v_space_id = __pyx_t_1;
+
+    /* "h5py/h5d.pyx":232
+ *         try:
+ *             space_id = H5Dget_space(self.id)
+ *             rank = H5Sget_simple_extent_ndims(space_id)             # <<<<<<<<<<<<<<
+ * 
+ *             if len(shape) != rank:
+ */
+    __pyx_t_2 = __pyx_f_4h5py_4defs_H5Sget_simple_extent_ndims(__pyx_v_space_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 232; __pyx_clineno = __LINE__; goto __pyx_L4;}
+    __pyx_v_rank = __pyx_t_2;
+
+    /* "h5py/h5d.pyx":234
+ *             rank = H5Sget_simple_extent_ndims(space_id)
+ * 
+ *             if len(shape) != rank:             # <<<<<<<<<<<<<<
+ *                 raise TypeError("New shape length (%d) must match dataset rank (%d)" % (len(shape), rank))
+ * 
+ */
+    if (unlikely(((PyObject *)__pyx_v_shape) == Py_None)) {
+      PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 234; __pyx_clineno = __LINE__; goto __pyx_L4;}
+    }
+    __pyx_t_3 = PyTuple_GET_SIZE(((PyObject *)__pyx_v_shape)); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 234; __pyx_clineno = __LINE__; goto __pyx_L4;}
+    __pyx_t_4 = (__pyx_t_3 != __pyx_v_rank);
+    if (__pyx_t_4) {
+
+      /* "h5py/h5d.pyx":235
+ * 
+ *             if len(shape) != rank:
+ *                 raise TypeError("New shape length (%d) must match dataset rank (%d)" % (len(shape), rank))             # <<<<<<<<<<<<<<
+ * 
+ *             dims = <hsize_t*>emalloc(sizeof(hsize_t)*rank)
+ */
+      if (unlikely(((PyObject *)__pyx_v_shape) == Py_None)) {
+        PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 235; __pyx_clineno = __LINE__; goto __pyx_L4;}
+      }
+      __pyx_t_3 = PyTuple_GET_SIZE(((PyObject *)__pyx_v_shape)); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 235; __pyx_clineno = __LINE__; goto __pyx_L4;}
+      __pyx_t_5 = PyInt_FromSsize_t(__pyx_t_3); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 235; __pyx_clineno = __LINE__; goto __pyx_L4;}
+      __Pyx_GOTREF(__pyx_t_5);
+      __pyx_t_6 = PyInt_FromLong(__pyx_v_rank); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 235; __pyx_clineno = __LINE__; goto __pyx_L4;}
+      __Pyx_GOTREF(__pyx_t_6);
+      __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 235; __pyx_clineno = __LINE__; goto __pyx_L4;}
+      __Pyx_GOTREF(__pyx_t_7);
+      PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5);
+      __Pyx_GIVEREF(__pyx_t_5);
+      PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_6);
+      __Pyx_GIVEREF(__pyx_t_6);
+      __pyx_t_5 = 0;
+      __pyx_t_6 = 0;
+      __pyx_t_6 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_4), ((PyObject *)__pyx_t_7)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 235; __pyx_clineno = __LINE__; goto __pyx_L4;}
+      __Pyx_GOTREF(((PyObject *)__pyx_t_6));
+      __Pyx_DECREF(((PyObject *)__pyx_t_7)); __pyx_t_7 = 0;
+      __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 235; __pyx_clineno = __LINE__; goto __pyx_L4;}
+      __Pyx_GOTREF(__pyx_t_7);
+      PyTuple_SET_ITEM(__pyx_t_7, 0, ((PyObject *)__pyx_t_6));
+      __Pyx_GIVEREF(((PyObject *)__pyx_t_6));
+      __pyx_t_6 = 0;
+      __pyx_t_6 = PyObject_Call(__pyx_builtin_TypeError, ((PyObject *)__pyx_t_7), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 235; __pyx_clineno = __LINE__; goto __pyx_L4;}
+      __Pyx_GOTREF(__pyx_t_6);
+      __Pyx_DECREF(((PyObject *)__pyx_t_7)); __pyx_t_7 = 0;
+      __Pyx_Raise(__pyx_t_6, 0, 0, 0);
+      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 235; __pyx_clineno = __LINE__; goto __pyx_L4;}
+      goto __pyx_L6;
+    }
+    __pyx_L6:;
+
+    /* "h5py/h5d.pyx":237
+ *                 raise TypeError("New shape length (%d) must match dataset rank (%d)" % (len(shape), rank))
+ * 
+ *             dims = <hsize_t*>emalloc(sizeof(hsize_t)*rank)             # <<<<<<<<<<<<<<
+ *             convert_tuple(shape, dims, rank)
+ *             H5Dextend(self.id, dims)
+ */
+    __pyx_t_8 = __pyx_f_4h5py_5utils_emalloc(((sizeof(hsize_t)) * __pyx_v_rank)); if (unlikely(__pyx_t_8 == NULL && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 237; __pyx_clineno = __LINE__; goto __pyx_L4;}
+    __pyx_v_dims = ((hsize_t *)__pyx_t_8);
+
+    /* "h5py/h5d.pyx":238
+ * 
+ *             dims = <hsize_t*>emalloc(sizeof(hsize_t)*rank)
+ *             convert_tuple(shape, dims, rank)             # <<<<<<<<<<<<<<
+ *             H5Dextend(self.id, dims)
+ * 
+ */
+    __pyx_t_2 = __pyx_f_4h5py_5utils_convert_tuple(((PyObject *)__pyx_v_shape), __pyx_v_dims, __pyx_v_rank); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 238; __pyx_clineno = __LINE__; goto __pyx_L4;}
+
+    /* "h5py/h5d.pyx":239
+ *             dims = <hsize_t*>emalloc(sizeof(hsize_t)*rank)
+ *             convert_tuple(shape, dims, rank)
+ *             H5Dextend(self.id, dims)             # <<<<<<<<<<<<<<
+ * 
+ *         finally:
+ */
+    __pyx_t_9 = __pyx_f_4h5py_4defs_H5Dextend(__pyx_v_self->__pyx_base.id, __pyx_v_dims); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 239; __pyx_clineno = __LINE__; goto __pyx_L4;}
+  }
+
+  /* "h5py/h5d.pyx":242
+ * 
+ *         finally:
+ *             efree(dims)             # <<<<<<<<<<<<<<
+ *             if space_id:
+ *                 H5Sclose(space_id)
+ */
+  /*finally:*/ {
+    int __pyx_why;
+    PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb;
+    int __pyx_exc_lineno;
+    __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
+    __pyx_why = 0; goto __pyx_L5;
+    __pyx_L4: {
+      __pyx_why = 4;
+      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+      __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb);
+      __pyx_exc_lineno = __pyx_lineno;
+      goto __pyx_L5;
+    }
+    __pyx_L5:;
+    __pyx_f_4h5py_5utils_efree(__pyx_v_dims);
+
+    /* "h5py/h5d.pyx":243
+ *         finally:
+ *             efree(dims)
+ *             if space_id:             # <<<<<<<<<<<<<<
+ *                 H5Sclose(space_id)
+ * 
+ */
+    if (__pyx_v_space_id) {
+
+      /* "h5py/h5d.pyx":244
+ *             efree(dims)
+ *             if space_id:
+ *                 H5Sclose(space_id)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+      __pyx_t_9 = __pyx_f_4h5py_4defs_H5Sclose(__pyx_v_space_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 244; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+      goto __pyx_L8;
+    }
+    __pyx_L8:;
+    goto __pyx_L9;
+    __pyx_L7_error:;
+    if (__pyx_why == 4) {
+      Py_XDECREF(__pyx_exc_type);
+      Py_XDECREF(__pyx_exc_value);
+      Py_XDECREF(__pyx_exc_tb);
+    }
+    goto __pyx_L1_error;
+    __pyx_L9:;
+    switch (__pyx_why) {
+      case 4: {
+        __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb);
+        __pyx_lineno = __pyx_exc_lineno;
+        __pyx_exc_type = 0;
+        __pyx_exc_value = 0;
+        __pyx_exc_tb = 0;
+        goto __pyx_L1_error;
+      }
+    }
+  }
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_AddTraceback("h5py.h5d.DatasetID.extend", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5d_9DatasetID_9set_extent(PyObject *__pyx_v_self, PyObject *__pyx_v_shape); /*proto*/
+static char __pyx_doc_4h5py_3h5d_9DatasetID_8set_extent[] = " (TUPLE shape)\n\n            Set the size of the dataspace to match the given shape.  If the new\n            size is larger in any dimension, it must be compatible with the\n            maximum dataspace size.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5d_9DatasetID_9set_extent(PyObject *__pyx_v_self, PyObject *__pyx_v_shape) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("set_extent (wrapper)", 0);
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_shape), (&PyTuple_Type), 1, "shape", 1))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 247; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_pf_4h5py_3h5d_9DatasetID_8set_extent(((struct __pyx_obj_4h5py_3h5d_DatasetID *)__pyx_v_self), ((PyObject*)__pyx_v_shape));
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5d.pyx":247
+ * 
+ * 
+ *     def set_extent(self, tuple shape):             # <<<<<<<<<<<<<<
+ *         """ (TUPLE shape)
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5d_9DatasetID_8set_extent(struct __pyx_obj_4h5py_3h5d_DatasetID *__pyx_v_self, PyObject *__pyx_v_shape) {
+  int __pyx_v_rank;
+  hid_t __pyx_v_space_id;
+  hsize_t *__pyx_v_dims;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  hid_t __pyx_t_1;
+  int __pyx_t_2;
+  Py_ssize_t __pyx_t_3;
+  int __pyx_t_4;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  void *__pyx_t_8;
+  herr_t __pyx_t_9;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("set_extent", 0);
+
+  /* "h5py/h5d.pyx":255
+ *         """
+ *         cdef int rank
+ *         cdef hid_t space_id = 0             # <<<<<<<<<<<<<<
+ *         cdef hsize_t* dims = NULL
+ * 
+ */
+  __pyx_v_space_id = 0;
+
+  /* "h5py/h5d.pyx":256
+ *         cdef int rank
+ *         cdef hid_t space_id = 0
+ *         cdef hsize_t* dims = NULL             # <<<<<<<<<<<<<<
+ * 
+ *         try:
+ */
+  __pyx_v_dims = NULL;
+
+  /* "h5py/h5d.pyx":258
+ *         cdef hsize_t* dims = NULL
+ * 
+ *         try:             # <<<<<<<<<<<<<<
+ *             space_id = H5Dget_space(self.id)
+ *             rank = H5Sget_simple_extent_ndims(space_id)
+ */
+  /*try:*/ {
+
+    /* "h5py/h5d.pyx":259
+ * 
+ *         try:
+ *             space_id = H5Dget_space(self.id)             # <<<<<<<<<<<<<<
+ *             rank = H5Sget_simple_extent_ndims(space_id)
+ * 
+ */
+    __pyx_t_1 = __pyx_f_4h5py_4defs_H5Dget_space(__pyx_v_self->__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 259; __pyx_clineno = __LINE__; goto __pyx_L4;}
+    __pyx_v_space_id = __pyx_t_1;
+
+    /* "h5py/h5d.pyx":260
+ *         try:
+ *             space_id = H5Dget_space(self.id)
+ *             rank = H5Sget_simple_extent_ndims(space_id)             # <<<<<<<<<<<<<<
+ * 
+ *             if len(shape) != rank:
+ */
+    __pyx_t_2 = __pyx_f_4h5py_4defs_H5Sget_simple_extent_ndims(__pyx_v_space_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 260; __pyx_clineno = __LINE__; goto __pyx_L4;}
+    __pyx_v_rank = __pyx_t_2;
+
+    /* "h5py/h5d.pyx":262
+ *             rank = H5Sget_simple_extent_ndims(space_id)
+ * 
+ *             if len(shape) != rank:             # <<<<<<<<<<<<<<
+ *                 raise TypeError("New shape length (%d) must match dataset rank (%d)" % (len(shape), rank))
+ * 
+ */
+    if (unlikely(((PyObject *)__pyx_v_shape) == Py_None)) {
+      PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 262; __pyx_clineno = __LINE__; goto __pyx_L4;}
+    }
+    __pyx_t_3 = PyTuple_GET_SIZE(((PyObject *)__pyx_v_shape)); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 262; __pyx_clineno = __LINE__; goto __pyx_L4;}
+    __pyx_t_4 = (__pyx_t_3 != __pyx_v_rank);
+    if (__pyx_t_4) {
+
+      /* "h5py/h5d.pyx":263
+ * 
+ *             if len(shape) != rank:
+ *                 raise TypeError("New shape length (%d) must match dataset rank (%d)" % (len(shape), rank))             # <<<<<<<<<<<<<<
+ * 
+ *             dims = <hsize_t*>emalloc(sizeof(hsize_t)*rank)
+ */
+      if (unlikely(((PyObject *)__pyx_v_shape) == Py_None)) {
+        PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 263; __pyx_clineno = __LINE__; goto __pyx_L4;}
+      }
+      __pyx_t_3 = PyTuple_GET_SIZE(((PyObject *)__pyx_v_shape)); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 263; __pyx_clineno = __LINE__; goto __pyx_L4;}
+      __pyx_t_5 = PyInt_FromSsize_t(__pyx_t_3); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 263; __pyx_clineno = __LINE__; goto __pyx_L4;}
+      __Pyx_GOTREF(__pyx_t_5);
+      __pyx_t_6 = PyInt_FromLong(__pyx_v_rank); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 263; __pyx_clineno = __LINE__; goto __pyx_L4;}
+      __Pyx_GOTREF(__pyx_t_6);
+      __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 263; __pyx_clineno = __LINE__; goto __pyx_L4;}
+      __Pyx_GOTREF(__pyx_t_7);
+      PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5);
+      __Pyx_GIVEREF(__pyx_t_5);
+      PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_6);
+      __Pyx_GIVEREF(__pyx_t_6);
+      __pyx_t_5 = 0;
+      __pyx_t_6 = 0;
+      __pyx_t_6 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_4), ((PyObject *)__pyx_t_7)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 263; __pyx_clineno = __LINE__; goto __pyx_L4;}
+      __Pyx_GOTREF(((PyObject *)__pyx_t_6));
+      __Pyx_DECREF(((PyObject *)__pyx_t_7)); __pyx_t_7 = 0;
+      __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 263; __pyx_clineno = __LINE__; goto __pyx_L4;}
+      __Pyx_GOTREF(__pyx_t_7);
+      PyTuple_SET_ITEM(__pyx_t_7, 0, ((PyObject *)__pyx_t_6));
+      __Pyx_GIVEREF(((PyObject *)__pyx_t_6));
+      __pyx_t_6 = 0;
+      __pyx_t_6 = PyObject_Call(__pyx_builtin_TypeError, ((PyObject *)__pyx_t_7), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 263; __pyx_clineno = __LINE__; goto __pyx_L4;}
+      __Pyx_GOTREF(__pyx_t_6);
+      __Pyx_DECREF(((PyObject *)__pyx_t_7)); __pyx_t_7 = 0;
+      __Pyx_Raise(__pyx_t_6, 0, 0, 0);
+      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 263; __pyx_clineno = __LINE__; goto __pyx_L4;}
+      goto __pyx_L6;
+    }
+    __pyx_L6:;
+
+    /* "h5py/h5d.pyx":265
+ *                 raise TypeError("New shape length (%d) must match dataset rank (%d)" % (len(shape), rank))
+ * 
+ *             dims = <hsize_t*>emalloc(sizeof(hsize_t)*rank)             # <<<<<<<<<<<<<<
+ *             convert_tuple(shape, dims, rank)
+ *             H5Dset_extent(self.id, dims)
+ */
+    __pyx_t_8 = __pyx_f_4h5py_5utils_emalloc(((sizeof(hsize_t)) * __pyx_v_rank)); if (unlikely(__pyx_t_8 == NULL && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 265; __pyx_clineno = __LINE__; goto __pyx_L4;}
+    __pyx_v_dims = ((hsize_t *)__pyx_t_8);
+
+    /* "h5py/h5d.pyx":266
+ * 
+ *             dims = <hsize_t*>emalloc(sizeof(hsize_t)*rank)
+ *             convert_tuple(shape, dims, rank)             # <<<<<<<<<<<<<<
+ *             H5Dset_extent(self.id, dims)
+ * 
+ */
+    __pyx_t_2 = __pyx_f_4h5py_5utils_convert_tuple(((PyObject *)__pyx_v_shape), __pyx_v_dims, __pyx_v_rank); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 266; __pyx_clineno = __LINE__; goto __pyx_L4;}
+
+    /* "h5py/h5d.pyx":267
+ *             dims = <hsize_t*>emalloc(sizeof(hsize_t)*rank)
+ *             convert_tuple(shape, dims, rank)
+ *             H5Dset_extent(self.id, dims)             # <<<<<<<<<<<<<<
+ * 
+ *         finally:
+ */
+    __pyx_t_9 = __pyx_f_4h5py_4defs_H5Dset_extent(__pyx_v_self->__pyx_base.id, __pyx_v_dims); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 267; __pyx_clineno = __LINE__; goto __pyx_L4;}
+  }
+
+  /* "h5py/h5d.pyx":270
+ * 
+ *         finally:
+ *             efree(dims)             # <<<<<<<<<<<<<<
+ *             if space_id:
+ *                 H5Sclose(space_id)
+ */
+  /*finally:*/ {
+    int __pyx_why;
+    PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb;
+    int __pyx_exc_lineno;
+    __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
+    __pyx_why = 0; goto __pyx_L5;
+    __pyx_L4: {
+      __pyx_why = 4;
+      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+      __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb);
+      __pyx_exc_lineno = __pyx_lineno;
+      goto __pyx_L5;
+    }
+    __pyx_L5:;
+    __pyx_f_4h5py_5utils_efree(__pyx_v_dims);
+
+    /* "h5py/h5d.pyx":271
+ *         finally:
+ *             efree(dims)
+ *             if space_id:             # <<<<<<<<<<<<<<
+ *                 H5Sclose(space_id)
+ * 
+ */
+    if (__pyx_v_space_id) {
+
+      /* "h5py/h5d.pyx":272
+ *             efree(dims)
+ *             if space_id:
+ *                 H5Sclose(space_id)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+      __pyx_t_9 = __pyx_f_4h5py_4defs_H5Sclose(__pyx_v_space_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 272; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+      goto __pyx_L8;
+    }
+    __pyx_L8:;
+    goto __pyx_L9;
+    __pyx_L7_error:;
+    if (__pyx_why == 4) {
+      Py_XDECREF(__pyx_exc_type);
+      Py_XDECREF(__pyx_exc_value);
+      Py_XDECREF(__pyx_exc_tb);
+    }
+    goto __pyx_L1_error;
+    __pyx_L9:;
+    switch (__pyx_why) {
+      case 4: {
+        __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb);
+        __pyx_lineno = __pyx_exc_lineno;
+        __pyx_exc_type = 0;
+        __pyx_exc_value = 0;
+        __pyx_exc_tb = 0;
+        goto __pyx_L1_error;
+      }
+    }
+  }
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_AddTraceback("h5py.h5d.DatasetID.set_extent", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5d_9DatasetID_11get_space(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5d_9DatasetID_10get_space[] = " () => SpaceID\n\n            Create and return a new copy of the dataspace for this dataset.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5d_9DatasetID_11get_space(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_space (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5d_9DatasetID_10get_space(((struct __pyx_obj_4h5py_3h5d_DatasetID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5d.pyx":276
+ * 
+ * 
+ *     def get_space(self):             # <<<<<<<<<<<<<<
+ *         """ () => SpaceID
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5d_9DatasetID_10get_space(struct __pyx_obj_4h5py_3h5d_DatasetID *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  hid_t __pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_space", 0);
+
+  /* "h5py/h5d.pyx":281
+ *             Create and return a new copy of the dataspace for this dataset.
+ *         """
+ *         return SpaceID.open(H5Dget_space(self.id))             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyObject_GetAttr(((PyObject *)((PyObject*)__pyx_ptype_4h5py_3h5s_SpaceID)), __pyx_n_s__open); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 281; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __pyx_f_4h5py_4defs_H5Dget_space(__pyx_v_self->__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 281; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyInt_to_py_hid_t(__pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 281; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 281; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_3);
+  __pyx_t_3 = 0;
+  __pyx_t_3 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 281; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
+  __pyx_r = __pyx_t_3;
+  __pyx_t_3 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("h5py.h5d.DatasetID.get_space", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5d_9DatasetID_13get_space_status(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5d_9DatasetID_12get_space_status[] = " () => INT space_status_code\n\n            Determine if space has been allocated for a dataset.\n            Return value is one of:\n\n            * SPACE_STATUS_NOT_ALLOCATED\n            * SPACE_STATUS_PART_ALLOCATED\n            * SPACE_STATUS_ALLOCATED\n        ";
+static PyObject *__pyx_pw_4h5py_3h5d_9DatasetID_13get_space_status(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_space_status (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5d_9DatasetID_12get_space_status(((struct __pyx_obj_4h5py_3h5d_DatasetID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5d.pyx":284
+ * 
+ * 
+ *     def get_space_status(self):             # <<<<<<<<<<<<<<
+ *         """ () => INT space_status_code
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5d_9DatasetID_12get_space_status(struct __pyx_obj_4h5py_3h5d_DatasetID *__pyx_v_self) {
+  H5D_space_status_t __pyx_v_status;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_space_status", 0);
+
+  /* "h5py/h5d.pyx":295
+ *         """
+ *         cdef H5D_space_status_t status
+ *         H5Dget_space_status(self.id, &status)             # <<<<<<<<<<<<<<
+ *         return <int>status
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Dget_space_status(__pyx_v_self->__pyx_base.id, (&__pyx_v_status)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 295; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5d.pyx":296
+ *         cdef H5D_space_status_t status
+ *         H5Dget_space_status(self.id, &status)
+ *         return <int>status             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_2 = PyInt_FromLong(((int)__pyx_v_status)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 296; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5d.DatasetID.get_space_status", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5d_9DatasetID_15get_type(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5d_9DatasetID_14get_type[] = " () => TypeID\n\n            Create and return a new copy of the datatype for this dataset.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5d_9DatasetID_15get_type(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_type (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5d_9DatasetID_14get_type(((struct __pyx_obj_4h5py_3h5d_DatasetID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5d.pyx":299
+ * 
+ * 
+ *     def get_type(self):             # <<<<<<<<<<<<<<
+ *         """ () => TypeID
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5d_9DatasetID_14get_type(struct __pyx_obj_4h5py_3h5d_DatasetID *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  hid_t __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_type", 0);
+
+  /* "h5py/h5d.pyx":304
+ *             Create and return a new copy of the datatype for this dataset.
+ *         """
+ *         return typewrap(H5Dget_type(self.id))             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Dget_type(__pyx_v_self->__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 304; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = ((PyObject *)__pyx_f_4h5py_3h5t_typewrap(__pyx_t_1, 0)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 304; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5d.DatasetID.get_type", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5d_9DatasetID_17get_create_plist(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5d_9DatasetID_16get_create_plist[] = " () => PropDCID\n\n            Create an return a new copy of the dataset creation property list\n            used when this dataset was created.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5d_9DatasetID_17get_create_plist(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_create_plist (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5d_9DatasetID_16get_create_plist(((struct __pyx_obj_4h5py_3h5d_DatasetID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5d.pyx":307
+ * 
+ * 
+ *     def get_create_plist(self):             # <<<<<<<<<<<<<<
+ *         """ () => PropDCID
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5d_9DatasetID_16get_create_plist(struct __pyx_obj_4h5py_3h5d_DatasetID *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  hid_t __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_create_plist", 0);
+
+  /* "h5py/h5d.pyx":313
+ *             used when this dataset was created.
+ *         """
+ *         return propwrap(H5Dget_create_plist(self.id))             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Dget_create_plist(__pyx_v_self->__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 313; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __pyx_f_4h5py_3h5p_propwrap(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 313; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5d.DatasetID.get_create_plist", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5d_9DatasetID_19get_offset(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5d_9DatasetID_18get_offset[] = " () => LONG offset or None\n\n            Get the offset of this dataset in the file, in bytes, or None if\n            it doesn't have one.  This is always the case for datasets which\n            use chunked storage, compact datasets, and datasets for which space\n            has not yet been allocated in the file.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5d_9DatasetID_19get_offset(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_offset (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5d_9DatasetID_18get_offset(((struct __pyx_obj_4h5py_3h5d_DatasetID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5d.pyx":316
+ * 
+ * 
+ *     def get_offset(self):             # <<<<<<<<<<<<<<
+ *         """ () => LONG offset or None
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5d_9DatasetID_18get_offset(struct __pyx_obj_4h5py_3h5d_DatasetID *__pyx_v_self) {
+  haddr_t __pyx_v_offset;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  haddr_t __pyx_t_1;
+  int __pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_offset", 0);
+
+  /* "h5py/h5d.pyx":325
+ *         """
+ *         cdef haddr_t offset
+ *         offset = H5Dget_offset(self.id)             # <<<<<<<<<<<<<<
+ *         if offset == HADDR_UNDEF:
+ *             return None
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Dget_offset(__pyx_v_self->__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 325; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v_offset = __pyx_t_1;
+
+  /* "h5py/h5d.pyx":326
+ *         cdef haddr_t offset
+ *         offset = H5Dget_offset(self.id)
+ *         if offset == HADDR_UNDEF:             # <<<<<<<<<<<<<<
+ *             return None
+ *         return offset
+ */
+  __pyx_t_2 = (__pyx_v_offset == HADDR_UNDEF);
+  if (__pyx_t_2) {
+
+    /* "h5py/h5d.pyx":327
+ *         offset = H5Dget_offset(self.id)
+ *         if offset == HADDR_UNDEF:
+ *             return None             # <<<<<<<<<<<<<<
+ *         return offset
+ * 
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __Pyx_INCREF(Py_None);
+    __pyx_r = Py_None;
+    goto __pyx_L0;
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  /* "h5py/h5d.pyx":328
+ *         if offset == HADDR_UNDEF:
+ *             return None
+ *         return offset             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_3 = __Pyx_PyInt_to_py_haddr_t(__pyx_v_offset); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 328; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_r = __pyx_t_3;
+  __pyx_t_3 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("h5py.h5d.DatasetID.get_offset", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5d_9DatasetID_21get_storage_size(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5d_9DatasetID_20get_storage_size[] = " () => LONG storage_size\n\n            Determine the amount of file space required for a dataset.  Note\n            this only counts the space which has actually been allocated; it\n            may even be zero.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5d_9DatasetID_21get_storage_size(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_storage_size (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5d_9DatasetID_20get_storage_size(((struct __pyx_obj_4h5py_3h5d_DatasetID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5d.pyx":331
+ * 
+ * 
+ *     def get_storage_size(self):             # <<<<<<<<<<<<<<
+ *         """ () => LONG storage_size
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5d_9DatasetID_20get_storage_size(struct __pyx_obj_4h5py_3h5d_DatasetID *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  hsize_t __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_storage_size", 0);
+
+  /* "h5py/h5d.pyx":338
+ *             may even be zero.
+ *         """
+ *         return H5Dget_storage_size(self.id)             # <<<<<<<<<<<<<<
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Dget_storage_size(__pyx_v_self->__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 338; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyInt_to_py_hsize_t(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 338; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5d.DatasetID.get_storage_size", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_tp_new_4h5py_3h5d_DatasetID(PyTypeObject *t, PyObject *a, PyObject *k) {
+  struct __pyx_obj_4h5py_3h5d_DatasetID *p;
+  PyObject *o = __pyx_ptype_4h5py_8_objects_ObjectID->tp_new(t, a, k);
+  if (!o) return 0;
+  p = ((struct __pyx_obj_4h5py_3h5d_DatasetID *)o);
+  p->_dtype = Py_None; Py_INCREF(Py_None);
+  return o;
+}
+
+static void __pyx_tp_dealloc_4h5py_3h5d_DatasetID(PyObject *o) {
+  struct __pyx_obj_4h5py_3h5d_DatasetID *p = (struct __pyx_obj_4h5py_3h5d_DatasetID *)o;
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->_dtype);
+  PyObject_GC_Track(o);
+  if (likely(__pyx_ptype_4h5py_8_objects_ObjectID)) __pyx_ptype_4h5py_8_objects_ObjectID->tp_dealloc(o); else __Pyx_call_next_tp_dealloc(o, __pyx_tp_dealloc_4h5py_3h5d_DatasetID);
+}
+
+static int __pyx_tp_traverse_4h5py_3h5d_DatasetID(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_4h5py_3h5d_DatasetID *p = (struct __pyx_obj_4h5py_3h5d_DatasetID *)o;
+  e = ((likely(__pyx_ptype_4h5py_8_objects_ObjectID)) ? ((__pyx_ptype_4h5py_8_objects_ObjectID->tp_traverse) ? __pyx_ptype_4h5py_8_objects_ObjectID->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_4h5py_3h5d_DatasetID)); if (e) return e;
+  if (p->_dtype) {
+    e = (*v)(p->_dtype, a); if (e) return e;
+  }
+  return 0;
+}
+
+static int __pyx_tp_clear_4h5py_3h5d_DatasetID(PyObject *o) {
+  struct __pyx_obj_4h5py_3h5d_DatasetID *p = (struct __pyx_obj_4h5py_3h5d_DatasetID *)o;
+  PyObject* tmp;
+  if (likely(__pyx_ptype_4h5py_8_objects_ObjectID)) { if (__pyx_ptype_4h5py_8_objects_ObjectID->tp_clear) __pyx_ptype_4h5py_8_objects_ObjectID->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_4h5py_3h5d_DatasetID);
+  tmp = ((PyObject*)p->_dtype);
+  p->_dtype = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  return 0;
+}
+
+static PyObject *__pyx_getprop_4h5py_3h5d_9DatasetID_dtype(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_4h5py_3h5d_9DatasetID_5dtype_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_4h5py_3h5d_9DatasetID_shape(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_4h5py_3h5d_9DatasetID_5shape_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_4h5py_3h5d_9DatasetID_rank(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_4h5py_3h5d_9DatasetID_4rank_1__get__(o);
+}
+
+static PyMethodDef __pyx_methods_4h5py_3h5d_DatasetID[] = {
+  {__Pyx_NAMESTR("_close"), (PyCFunction)__pyx_pw_4h5py_3h5d_9DatasetID_1_close, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5d_9DatasetID__close)},
+  {__Pyx_NAMESTR("read"), (PyCFunction)__pyx_pw_4h5py_3h5d_9DatasetID_3read, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5d_9DatasetID_2read)},
+  {__Pyx_NAMESTR("write"), (PyCFunction)__pyx_pw_4h5py_3h5d_9DatasetID_5write, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5d_9DatasetID_4write)},
+  {__Pyx_NAMESTR("extend"), (PyCFunction)__pyx_pw_4h5py_3h5d_9DatasetID_7extend, METH_O, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5d_9DatasetID_6extend)},
+  {__Pyx_NAMESTR("set_extent"), (PyCFunction)__pyx_pw_4h5py_3h5d_9DatasetID_9set_extent, METH_O, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5d_9DatasetID_8set_extent)},
+  {__Pyx_NAMESTR("get_space"), (PyCFunction)__pyx_pw_4h5py_3h5d_9DatasetID_11get_space, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5d_9DatasetID_10get_space)},
+  {__Pyx_NAMESTR("get_space_status"), (PyCFunction)__pyx_pw_4h5py_3h5d_9DatasetID_13get_space_status, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5d_9DatasetID_12get_space_status)},
+  {__Pyx_NAMESTR("get_type"), (PyCFunction)__pyx_pw_4h5py_3h5d_9DatasetID_15get_type, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5d_9DatasetID_14get_type)},
+  {__Pyx_NAMESTR("get_create_plist"), (PyCFunction)__pyx_pw_4h5py_3h5d_9DatasetID_17get_create_plist, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5d_9DatasetID_16get_create_plist)},
+  {__Pyx_NAMESTR("get_offset"), (PyCFunction)__pyx_pw_4h5py_3h5d_9DatasetID_19get_offset, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5d_9DatasetID_18get_offset)},
+  {__Pyx_NAMESTR("get_storage_size"), (PyCFunction)__pyx_pw_4h5py_3h5d_9DatasetID_21get_storage_size, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5d_9DatasetID_20get_storage_size)},
+  {0, 0, 0, 0}
+};
+
+static struct PyGetSetDef __pyx_getsets_4h5py_3h5d_DatasetID[] = {
+  {(char *)"dtype", __pyx_getprop_4h5py_3h5d_9DatasetID_dtype, 0, __Pyx_DOCSTR(__pyx_k_5), 0},
+  {(char *)"shape", __pyx_getprop_4h5py_3h5d_9DatasetID_shape, 0, __Pyx_DOCSTR(__pyx_k_6), 0},
+  {(char *)"rank", __pyx_getprop_4h5py_3h5d_9DatasetID_rank, 0, __Pyx_DOCSTR(__pyx_k_7), 0},
+  {0, 0, 0, 0, 0}
+};
+
+static PyNumberMethods __pyx_tp_as_number_DatasetID = {
+  0, /*nb_add*/
+  0, /*nb_subtract*/
+  0, /*nb_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_divide*/
+  #endif
+  0, /*nb_remainder*/
+  0, /*nb_divmod*/
+  0, /*nb_power*/
+  0, /*nb_negative*/
+  0, /*nb_positive*/
+  0, /*nb_absolute*/
+  0, /*nb_nonzero*/
+  0, /*nb_invert*/
+  0, /*nb_lshift*/
+  0, /*nb_rshift*/
+  0, /*nb_and*/
+  0, /*nb_xor*/
+  0, /*nb_or*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_coerce*/
+  #endif
+  0, /*nb_int*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_long*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*nb_float*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_oct*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_hex*/
+  #endif
+  0, /*nb_inplace_add*/
+  0, /*nb_inplace_subtract*/
+  0, /*nb_inplace_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_inplace_divide*/
+  #endif
+  0, /*nb_inplace_remainder*/
+  0, /*nb_inplace_power*/
+  0, /*nb_inplace_lshift*/
+  0, /*nb_inplace_rshift*/
+  0, /*nb_inplace_and*/
+  0, /*nb_inplace_xor*/
+  0, /*nb_inplace_or*/
+  0, /*nb_floor_divide*/
+  0, /*nb_true_divide*/
+  0, /*nb_inplace_floor_divide*/
+  0, /*nb_inplace_true_divide*/
+  #if PY_VERSION_HEX >= 0x02050000
+  0, /*nb_index*/
+  #endif
+};
+
+static PySequenceMethods __pyx_tp_as_sequence_DatasetID = {
+  0, /*sq_length*/
+  0, /*sq_concat*/
+  0, /*sq_repeat*/
+  0, /*sq_item*/
+  0, /*sq_slice*/
+  0, /*sq_ass_item*/
+  0, /*sq_ass_slice*/
+  0, /*sq_contains*/
+  0, /*sq_inplace_concat*/
+  0, /*sq_inplace_repeat*/
+};
+
+static PyMappingMethods __pyx_tp_as_mapping_DatasetID = {
+  0, /*mp_length*/
+  0, /*mp_subscript*/
+  0, /*mp_ass_subscript*/
+};
+
+static PyBufferProcs __pyx_tp_as_buffer_DatasetID = {
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getreadbuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getwritebuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getsegcount*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getcharbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_getbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_releasebuffer*/
+  #endif
+};
+
+static PyTypeObject __pyx_type_4h5py_3h5d_DatasetID = {
+  PyVarObject_HEAD_INIT(0, 0)
+  __Pyx_NAMESTR("h5py.h5d.DatasetID"), /*tp_name*/
+  sizeof(struct __pyx_obj_4h5py_3h5d_DatasetID), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_4h5py_3h5d_DatasetID, /*tp_dealloc*/
+  0, /*tp_print*/
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*tp_repr*/
+  &__pyx_tp_as_number_DatasetID, /*tp_as_number*/
+  &__pyx_tp_as_sequence_DatasetID, /*tp_as_sequence*/
+  &__pyx_tp_as_mapping_DatasetID, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  &__pyx_tp_as_buffer_DatasetID, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+  __Pyx_DOCSTR("\n        Represents an HDF5 dataset identifier.\n\n        Objects of this class may be used in any HDF5 function which expects\n        a dataset identifier.  Also, all H5D* functions which take a dataset\n        instance as their first argument are presented as methods of this\n        class.\n\n        Properties:\n        dtype:  Numpy dtype representing the dataset type\n        shape:  Numpy-style shape tuple representing the dataspace\n        rank:   Integer giv [...]
+  __pyx_tp_traverse_4h5py_3h5d_DatasetID, /*tp_traverse*/
+  __pyx_tp_clear_4h5py_3h5d_DatasetID, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_4h5py_3h5d_DatasetID, /*tp_methods*/
+  0, /*tp_members*/
+  __pyx_getsets_4h5py_3h5d_DatasetID, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  0, /*tp_dictoffset*/
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_4h5py_3h5d_DatasetID, /*tp_new*/
+  0, /*tp_free*/
+  0, /*tp_is_gc*/
+  0, /*tp_bases*/
+  0, /*tp_mro*/
+  0, /*tp_cache*/
+  0, /*tp_subclasses*/
+  0, /*tp_weaklist*/
+  0, /*tp_del*/
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*tp_version_tag*/
+  #endif
+};
+
+static PyMethodDef __pyx_methods[] = {
+  {0, 0, 0, 0}
+};
+
+#if PY_MAJOR_VERSION >= 3
+static struct PyModuleDef __pyx_moduledef = {
+  #if PY_VERSION_HEX < 0x03020000
+    { PyObject_HEAD_INIT(NULL) NULL, 0, NULL },
+  #else
+    PyModuleDef_HEAD_INIT,
+  #endif
+    __Pyx_NAMESTR("h5d"),
+    __Pyx_DOCSTR(__pyx_k_8), /* m_doc */
+    -1, /* m_size */
+    __pyx_methods /* m_methods */,
+    NULL, /* m_reload */
+    NULL, /* m_traverse */
+    NULL, /* m_clear */
+    NULL /* m_free */
+};
+#endif
+
+static __Pyx_StringTabEntry __pyx_string_tab[] = {
+  {&__pyx_n_s_1, __pyx_k_1, sizeof(__pyx_k_1), 0, 0, 1, 1},
+  {&__pyx_n_s_10, __pyx_k_10, sizeof(__pyx_k_10), 0, 0, 1, 1},
+  {&__pyx_n_s_11, __pyx_k_11, sizeof(__pyx_k_11), 0, 0, 1, 1},
+  {&__pyx_n_s_12, __pyx_k_12, sizeof(__pyx_k_12), 0, 0, 1, 1},
+  {&__pyx_n_s_13, __pyx_k_13, sizeof(__pyx_k_13), 0, 0, 1, 1},
+  {&__pyx_kp_s_16, __pyx_k_16, sizeof(__pyx_k_16), 0, 0, 1, 0},
+  {&__pyx_n_s_17, __pyx_k_17, sizeof(__pyx_k_17), 0, 0, 1, 1},
+  {&__pyx_n_s_2, __pyx_k_2, sizeof(__pyx_k_2), 0, 0, 1, 1},
+  {&__pyx_kp_s_4, __pyx_k_4, sizeof(__pyx_k_4), 0, 0, 1, 0},
+  {&__pyx_n_s_9, __pyx_k_9, sizeof(__pyx_k_9), 0, 0, 1, 1},
+  {&__pyx_n_s__ALLOC_TIME_DEFAULT, __pyx_k__ALLOC_TIME_DEFAULT, sizeof(__pyx_k__ALLOC_TIME_DEFAULT), 0, 0, 1, 1},
+  {&__pyx_n_s__ALLOC_TIME_EARLY, __pyx_k__ALLOC_TIME_EARLY, sizeof(__pyx_k__ALLOC_TIME_EARLY), 0, 0, 1, 1},
+  {&__pyx_n_s__ALLOC_TIME_INCR, __pyx_k__ALLOC_TIME_INCR, sizeof(__pyx_k__ALLOC_TIME_INCR), 0, 0, 1, 1},
+  {&__pyx_n_s__ALLOC_TIME_LATE, __pyx_k__ALLOC_TIME_LATE, sizeof(__pyx_k__ALLOC_TIME_LATE), 0, 0, 1, 1},
+  {&__pyx_n_s__CHUNKED, __pyx_k__CHUNKED, sizeof(__pyx_k__CHUNKED), 0, 0, 1, 1},
+  {&__pyx_n_s__COMPACT, __pyx_k__COMPACT, sizeof(__pyx_k__COMPACT), 0, 0, 1, 1},
+  {&__pyx_n_s__CONTIGUOUS, __pyx_k__CONTIGUOUS, sizeof(__pyx_k__CONTIGUOUS), 0, 0, 1, 1},
+  {&__pyx_n_s__FILL_TIME_ALLOC, __pyx_k__FILL_TIME_ALLOC, sizeof(__pyx_k__FILL_TIME_ALLOC), 0, 0, 1, 1},
+  {&__pyx_n_s__FILL_TIME_IFSET, __pyx_k__FILL_TIME_IFSET, sizeof(__pyx_k__FILL_TIME_IFSET), 0, 0, 1, 1},
+  {&__pyx_n_s__FILL_TIME_NEVER, __pyx_k__FILL_TIME_NEVER, sizeof(__pyx_k__FILL_TIME_NEVER), 0, 0, 1, 1},
+  {&__pyx_n_s__FILL_VALUE_DEFAULT, __pyx_k__FILL_VALUE_DEFAULT, sizeof(__pyx_k__FILL_VALUE_DEFAULT), 0, 0, 1, 1},
+  {&__pyx_n_s__TypeError, __pyx_k__TypeError, sizeof(__pyx_k__TypeError), 0, 0, 1, 1},
+  {&__pyx_n_s____enter__, __pyx_k____enter__, sizeof(__pyx_k____enter__), 0, 0, 1, 1},
+  {&__pyx_n_s____exit__, __pyx_k____exit__, sizeof(__pyx_k____exit__), 0, 0, 1, 1},
+  {&__pyx_n_s____main__, __pyx_k____main__, sizeof(__pyx_k____main__), 0, 0, 1, 1},
+  {&__pyx_n_s____test__, __pyx_k____test__, sizeof(__pyx_k____test__), 0, 0, 1, 1},
+  {&__pyx_n_s___objects, __pyx_k___objects, sizeof(__pyx_k___objects), 0, 0, 1, 1},
+  {&__pyx_n_s__arr_obj, __pyx_k__arr_obj, sizeof(__pyx_k__arr_obj), 0, 0, 1, 1},
+  {&__pyx_n_s__cname, __pyx_k__cname, sizeof(__pyx_k__cname), 0, 0, 1, 1},
+  {&__pyx_n_s__create, __pyx_k__create, sizeof(__pyx_k__create), 0, 0, 1, 1},
+  {&__pyx_n_s__dapl, __pyx_k__dapl, sizeof(__pyx_k__dapl), 0, 0, 1, 1},
+  {&__pyx_n_s__dcpl, __pyx_k__dcpl, sizeof(__pyx_k__dcpl), 0, 0, 1, 1},
+  {&__pyx_n_s__dsid, __pyx_k__dsid, sizeof(__pyx_k__dsid), 0, 0, 1, 1},
+  {&__pyx_n_s__dtype, __pyx_k__dtype, sizeof(__pyx_k__dtype), 0, 0, 1, 1},
+  {&__pyx_n_s__dxpl, __pyx_k__dxpl, sizeof(__pyx_k__dxpl), 0, 0, 1, 1},
+  {&__pyx_n_s__fspace, __pyx_k__fspace, sizeof(__pyx_k__fspace), 0, 0, 1, 1},
+  {&__pyx_n_s__get_space, __pyx_k__get_space, sizeof(__pyx_k__get_space), 0, 0, 1, 1},
+  {&__pyx_n_s__get_type, __pyx_k__get_type, sizeof(__pyx_k__get_type), 0, 0, 1, 1},
+  {&__pyx_n_s__h5py, __pyx_k__h5py, sizeof(__pyx_k__h5py), 0, 0, 1, 1},
+  {&__pyx_n_s__lcpl, __pyx_k__lcpl, sizeof(__pyx_k__lcpl), 0, 0, 1, 1},
+  {&__pyx_n_s__loc, __pyx_k__loc, sizeof(__pyx_k__loc), 0, 0, 1, 1},
+  {&__pyx_n_s__lock, __pyx_k__lock, sizeof(__pyx_k__lock), 0, 0, 1, 1},
+  {&__pyx_n_s__mspace, __pyx_k__mspace, sizeof(__pyx_k__mspace), 0, 0, 1, 1},
+  {&__pyx_n_s__mtype, __pyx_k__mtype, sizeof(__pyx_k__mtype), 0, 0, 1, 1},
+  {&__pyx_n_s__name, __pyx_k__name, sizeof(__pyx_k__name), 0, 0, 1, 1},
+  {&__pyx_n_s__open, __pyx_k__open, sizeof(__pyx_k__open), 0, 0, 1, 1},
+  {&__pyx_n_s__registry, __pyx_k__registry, sizeof(__pyx_k__registry), 0, 0, 1, 1},
+  {&__pyx_n_s__space, __pyx_k__space, sizeof(__pyx_k__space), 0, 0, 1, 1},
+  {&__pyx_n_s__tid, __pyx_k__tid, sizeof(__pyx_k__tid), 0, 0, 1, 1},
+  {&__pyx_n_s__valid, __pyx_k__valid, sizeof(__pyx_k__valid), 0, 0, 1, 1},
+  {0, 0, 0, 0, 0, 0, 0}
+};
+static int __Pyx_InitCachedBuiltins(void) {
+  __pyx_builtin_TypeError = __Pyx_GetName(__pyx_b, __pyx_n_s__TypeError); if (!__pyx_builtin_TypeError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 235; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  return 0;
+  __pyx_L1_error:;
+  return -1;
+}
+
+static int __Pyx_InitCachedConstants(void) {
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0);
+
+  /* "h5py/h5d.pyx":137
+ *             when their Python wrappers are freed.
+ *         """
+ *         with _objects.registry.lock:             # <<<<<<<<<<<<<<
+ *             H5Dclose(self.id)
+ *             if not self.valid:
+ */
+  __pyx_k_tuple_3 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_3);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_3));
+
+  /* "h5py/h5d.pyx":54
+ * # === Dataset operations ======================================================
+ * 
+ * def create(ObjectID loc not None, object name, TypeID tid not None,             # <<<<<<<<<<<<<<
+ *                SpaceID space not None, PropID dcpl=None, PropID lcpl=None, PropID dapl = None):
+ *         """ (objectID loc, STRING name or None, TypeID tid, SpaceID space,
+ */
+  __pyx_k_tuple_14 = PyTuple_Pack(9, ((PyObject *)__pyx_n_s__loc), ((PyObject *)__pyx_n_s__name), ((PyObject *)__pyx_n_s__tid), ((PyObject *)__pyx_n_s__space), ((PyObject *)__pyx_n_s__dcpl), ((PyObject *)__pyx_n_s__lcpl), ((PyObject *)__pyx_n_s__dapl), ((PyObject *)__pyx_n_s__dsid), ((PyObject *)__pyx_n_s__cname)); if (unlikely(!__pyx_k_tuple_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_14);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_14));
+  __pyx_k_codeobj_15 = (PyObject*)__Pyx_PyCode_New(7, 0, 9, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_14, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_16, __pyx_n_s__create, 54, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5d.pyx":75
+ *         return DatasetID.open(dsid)
+ * 
+ * def open(ObjectID loc not None, char* name):             # <<<<<<<<<<<<<<
+ *     """ (ObjectID loc, STRING name) => DatasetID
+ * 
+ */
+  __pyx_k_tuple_18 = PyTuple_Pack(2, ((PyObject *)__pyx_n_s__loc), ((PyObject *)__pyx_n_s__name)); if (unlikely(!__pyx_k_tuple_18)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_18);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_18));
+  __pyx_k_codeobj_19 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_16, __pyx_n_s__open, 75, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_19)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_RefNannyFinishContext();
+  return 0;
+  __pyx_L1_error:;
+  __Pyx_RefNannyFinishContext();
+  return -1;
+}
+
+static int __Pyx_InitGlobals(void) {
+  if (__Pyx_InitStrings(__pyx_string_tab) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  return 0;
+  __pyx_L1_error:;
+  return -1;
+}
+
+#if PY_MAJOR_VERSION < 3
+PyMODINIT_FUNC inith5d(void); /*proto*/
+PyMODINIT_FUNC inith5d(void)
+#else
+PyMODINIT_FUNC PyInit_h5d(void); /*proto*/
+PyMODINIT_FUNC PyInit_h5d(void)
+#endif
+{
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  PyObject *__pyx_t_8 = NULL;
+  __Pyx_RefNannyDeclarations
+  #if CYTHON_REFNANNY
+  __Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny");
+  if (!__Pyx_RefNanny) {
+      PyErr_Clear();
+      __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny");
+      if (!__Pyx_RefNanny)
+          Py_FatalError("failed to import 'refnanny' module");
+  }
+  #endif
+  __Pyx_RefNannySetupContext("PyMODINIT_FUNC PyInit_h5d(void)", 0);
+  if ( __Pyx_check_binary_version() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #ifdef __Pyx_CyFunction_USED
+  if (__Pyx_CyFunction_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #endif
+  #ifdef __Pyx_FusedFunction_USED
+  if (__pyx_FusedFunction_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #endif
+  #ifdef __Pyx_Generator_USED
+  if (__pyx_Generator_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #endif
+  /*--- Library function declarations ---*/
+  /*--- Threads initialization code ---*/
+  #if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS
+  #ifdef WITH_THREAD /* Python build with threading support? */
+  PyEval_InitThreads();
+  #endif
+  #endif
+  /*--- Module creation code ---*/
+  #if PY_MAJOR_VERSION < 3
+  __pyx_m = Py_InitModule4(__Pyx_NAMESTR("h5d"), __pyx_methods, __Pyx_DOCSTR(__pyx_k_8), 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m);
+  #else
+  __pyx_m = PyModule_Create(&__pyx_moduledef);
+  #endif
+  if (unlikely(!__pyx_m)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #if PY_MAJOR_VERSION >= 3
+  {
+    PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (!PyDict_GetItemString(modules, "h5py.h5d")) {
+      if (unlikely(PyDict_SetItemString(modules, "h5py.h5d", __pyx_m) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    }
+  }
+  #endif
+  __pyx_b = PyImport_AddModule(__Pyx_NAMESTR(__Pyx_BUILTIN_MODULE_NAME)); if (unlikely(!__pyx_b)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #if CYTHON_COMPILING_IN_PYPY
+  Py_INCREF(__pyx_b);
+  #endif
+  if (__Pyx_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  /*--- Initialize various global constants etc. ---*/
+  if (unlikely(__Pyx_InitGlobals() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__pyx_module_is_main_h5py__h5d) {
+    if (__Pyx_SetAttrString(__pyx_m, "__name__", __pyx_n_s____main__) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  }
+  /*--- Builtin init code ---*/
+  if (unlikely(__Pyx_InitCachedBuiltins() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  /*--- Constants init code ---*/
+  if (unlikely(__Pyx_InitCachedConstants() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  /*--- Global init code ---*/
+  /*--- Variable export code ---*/
+  /*--- Function export code ---*/
+  /*--- Type init code ---*/
+  __pyx_ptype_4h5py_8_objects_ObjectID = __Pyx_ImportType("h5py._objects", "ObjectID", sizeof(struct __pyx_obj_4h5py_8_objects_ObjectID), 1); if (unlikely(!__pyx_ptype_4h5py_8_objects_ObjectID)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_type_4h5py_3h5d_DatasetID.tp_base = __pyx_ptype_4h5py_8_objects_ObjectID;
+  if (PyType_Ready(&__pyx_type_4h5py_3h5d_DatasetID) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetAttrString(__pyx_m, "DatasetID", (PyObject *)&__pyx_type_4h5py_3h5d_DatasetID) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__pyx_type_4h5py_3h5d_DatasetID.tp_weaklistoffset == 0) __pyx_type_4h5py_3h5d_DatasetID.tp_weaklistoffset = offsetof(struct __pyx_obj_4h5py_3h5d_DatasetID, __pyx_base.__weakref__);
+  __pyx_ptype_4h5py_3h5d_DatasetID = &__pyx_type_4h5py_3h5d_DatasetID;
+  /*--- Type import code ---*/
+  __pyx_ptype_4h5py_5numpy_dtype = __Pyx_ImportType("numpy", "dtype", sizeof(PyArray_Descr), 0); if (unlikely(!__pyx_ptype_4h5py_5numpy_dtype)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_5numpy_ndarray = __Pyx_ImportType("numpy", "ndarray", sizeof(PyArrayObject), 0); if (unlikely(!__pyx_ptype_4h5py_5numpy_ndarray)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5t_TypeID = __Pyx_ImportType("h5py.h5t", "TypeID", sizeof(struct __pyx_obj_4h5py_3h5t_TypeID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5t_TypeID)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_vtabptr_4h5py_3h5t_TypeID = (struct __pyx_vtabstruct_4h5py_3h5t_TypeID*)__Pyx_GetVtable(__pyx_ptype_4h5py_3h5t_TypeID->tp_dict); if (unlikely(!__pyx_vtabptr_4h5py_3h5t_TypeID)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5t_TypeArrayID = __Pyx_ImportType("h5py.h5t", "TypeArrayID", sizeof(struct __pyx_obj_4h5py_3h5t_TypeArrayID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5t_TypeArrayID)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_vtabptr_4h5py_3h5t_TypeArrayID = (struct __pyx_vtabstruct_4h5py_3h5t_TypeArrayID*)__Pyx_GetVtable(__pyx_ptype_4h5py_3h5t_TypeArrayID->tp_dict); if (unlikely(!__pyx_vtabptr_4h5py_3h5t_TypeArrayID)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5t_TypeOpaqueID = __Pyx_ImportType("h5py.h5t", "TypeOpaqueID", sizeof(struct __pyx_obj_4h5py_3h5t_TypeOpaqueID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5t_TypeOpaqueID)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_vtabptr_4h5py_3h5t_TypeOpaqueID = (struct __pyx_vtabstruct_4h5py_3h5t_TypeOpaqueID*)__Pyx_GetVtable(__pyx_ptype_4h5py_3h5t_TypeOpaqueID->tp_dict); if (unlikely(!__pyx_vtabptr_4h5py_3h5t_TypeOpaqueID)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5t_TypeStringID = __Pyx_ImportType("h5py.h5t", "TypeStringID", sizeof(struct __pyx_obj_4h5py_3h5t_TypeStringID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5t_TypeStringID)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_vtabptr_4h5py_3h5t_TypeStringID = (struct __pyx_vtabstruct_4h5py_3h5t_TypeStringID*)__Pyx_GetVtable(__pyx_ptype_4h5py_3h5t_TypeStringID->tp_dict); if (unlikely(!__pyx_vtabptr_4h5py_3h5t_TypeStringID)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5t_TypeVlenID = __Pyx_ImportType("h5py.h5t", "TypeVlenID", sizeof(struct __pyx_obj_4h5py_3h5t_TypeVlenID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5t_TypeVlenID)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_vtabptr_4h5py_3h5t_TypeVlenID = (struct __pyx_vtabstruct_4h5py_3h5t_TypeVlenID*)__Pyx_GetVtable(__pyx_ptype_4h5py_3h5t_TypeVlenID->tp_dict); if (unlikely(!__pyx_vtabptr_4h5py_3h5t_TypeVlenID)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5t_TypeTimeID = __Pyx_ImportType("h5py.h5t", "TypeTimeID", sizeof(struct __pyx_obj_4h5py_3h5t_TypeTimeID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5t_TypeTimeID)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_vtabptr_4h5py_3h5t_TypeTimeID = (struct __pyx_vtabstruct_4h5py_3h5t_TypeTimeID*)__Pyx_GetVtable(__pyx_ptype_4h5py_3h5t_TypeTimeID->tp_dict); if (unlikely(!__pyx_vtabptr_4h5py_3h5t_TypeTimeID)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5t_TypeBitfieldID = __Pyx_ImportType("h5py.h5t", "TypeBitfieldID", sizeof(struct __pyx_obj_4h5py_3h5t_TypeBitfieldID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5t_TypeBitfieldID)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_vtabptr_4h5py_3h5t_TypeBitfieldID = (struct __pyx_vtabstruct_4h5py_3h5t_TypeBitfieldID*)__Pyx_GetVtable(__pyx_ptype_4h5py_3h5t_TypeBitfieldID->tp_dict); if (unlikely(!__pyx_vtabptr_4h5py_3h5t_TypeBitfieldID)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5t_TypeReferenceID = __Pyx_ImportType("h5py.h5t", "TypeReferenceID", sizeof(struct __pyx_obj_4h5py_3h5t_TypeReferenceID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5t_TypeReferenceID)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_vtabptr_4h5py_3h5t_TypeReferenceID = (struct __pyx_vtabstruct_4h5py_3h5t_TypeReferenceID*)__Pyx_GetVtable(__pyx_ptype_4h5py_3h5t_TypeReferenceID->tp_dict); if (unlikely(!__pyx_vtabptr_4h5py_3h5t_TypeReferenceID)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5t_TypeAtomicID = __Pyx_ImportType("h5py.h5t", "TypeAtomicID", sizeof(struct __pyx_obj_4h5py_3h5t_TypeAtomicID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5t_TypeAtomicID)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_vtabptr_4h5py_3h5t_TypeAtomicID = (struct __pyx_vtabstruct_4h5py_3h5t_TypeAtomicID*)__Pyx_GetVtable(__pyx_ptype_4h5py_3h5t_TypeAtomicID->tp_dict); if (unlikely(!__pyx_vtabptr_4h5py_3h5t_TypeAtomicID)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5t_TypeIntegerID = __Pyx_ImportType("h5py.h5t", "TypeIntegerID", sizeof(struct __pyx_obj_4h5py_3h5t_TypeIntegerID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5t_TypeIntegerID)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_vtabptr_4h5py_3h5t_TypeIntegerID = (struct __pyx_vtabstruct_4h5py_3h5t_TypeIntegerID*)__Pyx_GetVtable(__pyx_ptype_4h5py_3h5t_TypeIntegerID->tp_dict); if (unlikely(!__pyx_vtabptr_4h5py_3h5t_TypeIntegerID)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5t_TypeFloatID = __Pyx_ImportType("h5py.h5t", "TypeFloatID", sizeof(struct __pyx_obj_4h5py_3h5t_TypeFloatID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5t_TypeFloatID)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_vtabptr_4h5py_3h5t_TypeFloatID = (struct __pyx_vtabstruct_4h5py_3h5t_TypeFloatID*)__Pyx_GetVtable(__pyx_ptype_4h5py_3h5t_TypeFloatID->tp_dict); if (unlikely(!__pyx_vtabptr_4h5py_3h5t_TypeFloatID)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5t_TypeCompositeID = __Pyx_ImportType("h5py.h5t", "TypeCompositeID", sizeof(struct __pyx_obj_4h5py_3h5t_TypeCompositeID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5t_TypeCompositeID)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_vtabptr_4h5py_3h5t_TypeCompositeID = (struct __pyx_vtabstruct_4h5py_3h5t_TypeCompositeID*)__Pyx_GetVtable(__pyx_ptype_4h5py_3h5t_TypeCompositeID->tp_dict); if (unlikely(!__pyx_vtabptr_4h5py_3h5t_TypeCompositeID)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5t_TypeEnumID = __Pyx_ImportType("h5py.h5t", "TypeEnumID", sizeof(struct __pyx_obj_4h5py_3h5t_TypeEnumID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5t_TypeEnumID)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_vtabptr_4h5py_3h5t_TypeEnumID = (struct __pyx_vtabstruct_4h5py_3h5t_TypeEnumID*)__Pyx_GetVtable(__pyx_ptype_4h5py_3h5t_TypeEnumID->tp_dict); if (unlikely(!__pyx_vtabptr_4h5py_3h5t_TypeEnumID)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5t_TypeCompoundID = __Pyx_ImportType("h5py.h5t", "TypeCompoundID", sizeof(struct __pyx_obj_4h5py_3h5t_TypeCompoundID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5t_TypeCompoundID)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_vtabptr_4h5py_3h5t_TypeCompoundID = (struct __pyx_vtabstruct_4h5py_3h5t_TypeCompoundID*)__Pyx_GetVtable(__pyx_ptype_4h5py_3h5t_TypeCompoundID->tp_dict); if (unlikely(!__pyx_vtabptr_4h5py_3h5t_TypeCompoundID)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5s_SpaceID = __Pyx_ImportType("h5py.h5s", "SpaceID", sizeof(struct __pyx_obj_4h5py_3h5s_SpaceID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5s_SpaceID)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5p_PropID = __Pyx_ImportType("h5py.h5p", "PropID", sizeof(struct __pyx_obj_4h5py_3h5p_PropID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5p_PropID)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5p_PropClassID = __Pyx_ImportType("h5py.h5p", "PropClassID", sizeof(struct __pyx_obj_4h5py_3h5p_PropClassID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5p_PropClassID)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5p_PropInstanceID = __Pyx_ImportType("h5py.h5p", "PropInstanceID", sizeof(struct __pyx_obj_4h5py_3h5p_PropInstanceID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5p_PropInstanceID)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5p_PropCreateID = __Pyx_ImportType("h5py.h5p", "PropCreateID", sizeof(struct __pyx_obj_4h5py_3h5p_PropCreateID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5p_PropCreateID)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5p_PropCopyID = __Pyx_ImportType("h5py.h5p", "PropCopyID", sizeof(struct __pyx_obj_4h5py_3h5p_PropCopyID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5p_PropCopyID)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5p_PropOCID = __Pyx_ImportType("h5py.h5p", "PropOCID", sizeof(struct __pyx_obj_4h5py_3h5p_PropOCID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5p_PropOCID)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5p_PropDCID = __Pyx_ImportType("h5py.h5p", "PropDCID", sizeof(struct __pyx_obj_4h5py_3h5p_PropDCID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5p_PropDCID)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5p_PropFCID = __Pyx_ImportType("h5py.h5p", "PropFCID", sizeof(struct __pyx_obj_4h5py_3h5p_PropFCID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5p_PropFCID)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5p_PropFAID = __Pyx_ImportType("h5py.h5p", "PropFAID", sizeof(struct __pyx_obj_4h5py_3h5p_PropFAID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5p_PropFAID)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5p_PropDXID = __Pyx_ImportType("h5py.h5p", "PropDXID", sizeof(struct __pyx_obj_4h5py_3h5p_PropDXID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5p_PropDXID)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5p_PropLCID = __Pyx_ImportType("h5py.h5p", "PropLCID", sizeof(struct __pyx_obj_4h5py_3h5p_PropLCID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5p_PropLCID)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5p_PropLAID = __Pyx_ImportType("h5py.h5p", "PropLAID", sizeof(struct __pyx_obj_4h5py_3h5p_PropLAID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5p_PropLAID)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5p_PropGCID = __Pyx_ImportType("h5py.h5p", "PropGCID", sizeof(struct __pyx_obj_4h5py_3h5p_PropGCID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5p_PropGCID)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  /*--- Variable import code ---*/
+  /*--- Function import code ---*/
+  __pyx_t_1 = __Pyx_ImportModule("h5py.defs"); if (!__pyx_t_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Dcreate2", (void (**)(void))&__pyx_f_4h5py_4defs_H5Dcreate2, "hid_t (hid_t, char *, hid_t, hid_t, hid_t, hid_t, hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Dcreate_anon", (void (**)(void))&__pyx_f_4h5py_4defs_H5Dcreate_anon, "hid_t (hid_t, hid_t, hid_t, hid_t, hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Dopen", (void (**)(void))&__pyx_f_4h5py_4defs_H5Dopen, "hid_t (hid_t, char *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Dclose", (void (**)(void))&__pyx_f_4h5py_4defs_H5Dclose, "herr_t (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Dget_space", (void (**)(void))&__pyx_f_4h5py_4defs_H5Dget_space, "hid_t (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Dget_space_status", (void (**)(void))&__pyx_f_4h5py_4defs_H5Dget_space_status, "herr_t (hid_t, H5D_space_status_t *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Dget_type", (void (**)(void))&__pyx_f_4h5py_4defs_H5Dget_type, "hid_t (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Dget_create_plist", (void (**)(void))&__pyx_f_4h5py_4defs_H5Dget_create_plist, "hid_t (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Dget_offset", (void (**)(void))&__pyx_f_4h5py_4defs_H5Dget_offset, "haddr_t (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Dget_storage_size", (void (**)(void))&__pyx_f_4h5py_4defs_H5Dget_storage_size, "hsize_t (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Dextend", (void (**)(void))&__pyx_f_4h5py_4defs_H5Dextend, "herr_t (hid_t, hsize_t *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Dset_extent", (void (**)(void))&__pyx_f_4h5py_4defs_H5Dset_extent, "herr_t (hid_t, hsize_t *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Sclose", (void (**)(void))&__pyx_f_4h5py_4defs_H5Sclose, "herr_t (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Sget_simple_extent_ndims", (void (**)(void))&__pyx_f_4h5py_4defs_H5Sget_simple_extent_ndims, "int (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  Py_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_2 = __Pyx_ImportModule("h5py._objects"); if (!__pyx_t_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_2, "pdefault", (void (**)(void))&__pyx_f_4h5py_8_objects_pdefault, "hid_t (struct __pyx_obj_4h5py_8_objects_ObjectID *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  Py_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_3 = __Pyx_ImportModule("h5py.utils"); if (!__pyx_t_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_3, "emalloc", (void (**)(void))&__pyx_f_4h5py_5utils_emalloc, "void *(size_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_3, "efree", (void (**)(void))&__pyx_f_4h5py_5utils_efree, "void (void *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_3, "check_numpy_read", (void (**)(void))&__pyx_f_4h5py_5utils_check_numpy_read, "int (PyArrayObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_4h5py_5utils_check_numpy_read *__pyx_optional_args)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_3, "check_numpy_write", (void (**)(void))&__pyx_f_4h5py_5utils_check_numpy_write, "int (PyArrayObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_4h5py_5utils_check_numpy_write *__pyx_optional_args)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_3, "convert_tuple", (void (**)(void))&__pyx_f_4h5py_5utils_convert_tuple, "int (PyObject *, hsize_t *, hsize_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  Py_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_t_4 = __Pyx_ImportModule("h5py.h5t"); if (!__pyx_t_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_4, "typewrap", (void (**)(void))&__pyx_f_4h5py_3h5t_typewrap, "struct __pyx_obj_4h5py_3h5t_TypeID *(hid_t, int __pyx_skip_dispatch)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_4, "py_create", (void (**)(void))&__pyx_f_4h5py_3h5t_py_create, "struct __pyx_obj_4h5py_3h5t_TypeID *(PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_4h5py_3h5t_py_create *__pyx_optional_args)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  Py_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __pyx_t_5 = __Pyx_ImportModule("h5py.h5p"); if (!__pyx_t_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_5, "propwrap", (void (**)(void))&__pyx_f_4h5py_3h5p_propwrap, "PyObject *(hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  Py_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_6 = __Pyx_ImportModule("h5py._proxy"); if (!__pyx_t_6) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_6, "dset_rw", (void (**)(void))&__pyx_f_4h5py_6_proxy_dset_rw, "herr_t (hid_t, hid_t, hid_t, hid_t, hid_t, void *, int)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  Py_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+  /*--- Execution code ---*/
+
+  /* "h5py/h5d.pyx":23
+ * from _proxy cimport dset_rw
+ * 
+ * from h5py import _objects             # <<<<<<<<<<<<<<
+ * 
+ * # Initialization
+ */
+  __pyx_t_7 = PyList_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_7);
+  __Pyx_INCREF(((PyObject *)__pyx_n_s___objects));
+  PyList_SET_ITEM(__pyx_t_7, 0, ((PyObject *)__pyx_n_s___objects));
+  __Pyx_GIVEREF(((PyObject *)__pyx_n_s___objects));
+  __pyx_t_8 = __Pyx_Import(((PyObject *)__pyx_n_s__h5py), ((PyObject *)__pyx_t_7), -1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_8);
+  __Pyx_DECREF(((PyObject *)__pyx_t_7)); __pyx_t_7 = 0;
+  __pyx_t_7 = PyObject_GetAttr(__pyx_t_8, __pyx_n_s___objects);
+  if (__pyx_t_7 == NULL) {
+    if (PyErr_ExceptionMatches(PyExc_AttributeError)) __Pyx_RaiseImportError(__pyx_n_s___objects);
+    if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  }
+  __Pyx_GOTREF(__pyx_t_7);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s___objects, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+
+  /* "h5py/h5d.pyx":26
+ * 
+ * # Initialization
+ * import_array()             # <<<<<<<<<<<<<<
+ * 
+ * # === Public constants and data structures ====================================
+ */
+  import_array();
+
+  /* "h5py/h5d.pyx":30
+ * # === Public constants and data structures ====================================
+ * 
+ * COMPACT     = H5D_COMPACT             # <<<<<<<<<<<<<<
+ * CONTIGUOUS  = H5D_CONTIGUOUS
+ * CHUNKED     = H5D_CHUNKED
+ */
+  __pyx_t_8 = PyInt_FromLong(H5D_COMPACT); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_8);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__COMPACT, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+
+  /* "h5py/h5d.pyx":31
+ * 
+ * COMPACT     = H5D_COMPACT
+ * CONTIGUOUS  = H5D_CONTIGUOUS             # <<<<<<<<<<<<<<
+ * CHUNKED     = H5D_CHUNKED
+ * 
+ */
+  __pyx_t_8 = PyInt_FromLong(H5D_CONTIGUOUS); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_8);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__CONTIGUOUS, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+
+  /* "h5py/h5d.pyx":32
+ * COMPACT     = H5D_COMPACT
+ * CONTIGUOUS  = H5D_CONTIGUOUS
+ * CHUNKED     = H5D_CHUNKED             # <<<<<<<<<<<<<<
+ * 
+ * ALLOC_TIME_DEFAULT  = H5D_ALLOC_TIME_DEFAULT
+ */
+  __pyx_t_8 = PyInt_FromLong(H5D_CHUNKED); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_8);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__CHUNKED, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+
+  /* "h5py/h5d.pyx":34
+ * CHUNKED     = H5D_CHUNKED
+ * 
+ * ALLOC_TIME_DEFAULT  = H5D_ALLOC_TIME_DEFAULT             # <<<<<<<<<<<<<<
+ * ALLOC_TIME_LATE     = H5D_ALLOC_TIME_LATE
+ * ALLOC_TIME_EARLY    = H5D_ALLOC_TIME_EARLY
+ */
+  __pyx_t_8 = PyInt_FromLong(H5D_ALLOC_TIME_DEFAULT); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_8);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ALLOC_TIME_DEFAULT, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+
+  /* "h5py/h5d.pyx":35
+ * 
+ * ALLOC_TIME_DEFAULT  = H5D_ALLOC_TIME_DEFAULT
+ * ALLOC_TIME_LATE     = H5D_ALLOC_TIME_LATE             # <<<<<<<<<<<<<<
+ * ALLOC_TIME_EARLY    = H5D_ALLOC_TIME_EARLY
+ * ALLOC_TIME_INCR     = H5D_ALLOC_TIME_INCR
+ */
+  __pyx_t_8 = PyInt_FromLong(H5D_ALLOC_TIME_LATE); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_8);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ALLOC_TIME_LATE, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+
+  /* "h5py/h5d.pyx":36
+ * ALLOC_TIME_DEFAULT  = H5D_ALLOC_TIME_DEFAULT
+ * ALLOC_TIME_LATE     = H5D_ALLOC_TIME_LATE
+ * ALLOC_TIME_EARLY    = H5D_ALLOC_TIME_EARLY             # <<<<<<<<<<<<<<
+ * ALLOC_TIME_INCR     = H5D_ALLOC_TIME_INCR
+ * 
+ */
+  __pyx_t_8 = PyInt_FromLong(H5D_ALLOC_TIME_EARLY); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_8);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ALLOC_TIME_EARLY, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+
+  /* "h5py/h5d.pyx":37
+ * ALLOC_TIME_LATE     = H5D_ALLOC_TIME_LATE
+ * ALLOC_TIME_EARLY    = H5D_ALLOC_TIME_EARLY
+ * ALLOC_TIME_INCR     = H5D_ALLOC_TIME_INCR             # <<<<<<<<<<<<<<
+ * 
+ * SPACE_STATUS_NOT_ALLOCATED  = H5D_SPACE_STATUS_NOT_ALLOCATED
+ */
+  __pyx_t_8 = PyInt_FromLong(H5D_ALLOC_TIME_INCR); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_8);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ALLOC_TIME_INCR, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+
+  /* "h5py/h5d.pyx":39
+ * ALLOC_TIME_INCR     = H5D_ALLOC_TIME_INCR
+ * 
+ * SPACE_STATUS_NOT_ALLOCATED  = H5D_SPACE_STATUS_NOT_ALLOCATED             # <<<<<<<<<<<<<<
+ * SPACE_STATUS_PART_ALLOCATED = H5D_SPACE_STATUS_PART_ALLOCATED
+ * SPACE_STATUS_ALLOCATED      = H5D_SPACE_STATUS_ALLOCATED
+ */
+  __pyx_t_8 = PyInt_FromLong(H5D_SPACE_STATUS_NOT_ALLOCATED); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_8);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_9, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+
+  /* "h5py/h5d.pyx":40
+ * 
+ * SPACE_STATUS_NOT_ALLOCATED  = H5D_SPACE_STATUS_NOT_ALLOCATED
+ * SPACE_STATUS_PART_ALLOCATED = H5D_SPACE_STATUS_PART_ALLOCATED             # <<<<<<<<<<<<<<
+ * SPACE_STATUS_ALLOCATED      = H5D_SPACE_STATUS_ALLOCATED
+ * 
+ */
+  __pyx_t_8 = PyInt_FromLong(H5D_SPACE_STATUS_PART_ALLOCATED); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_8);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_10, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+
+  /* "h5py/h5d.pyx":41
+ * SPACE_STATUS_NOT_ALLOCATED  = H5D_SPACE_STATUS_NOT_ALLOCATED
+ * SPACE_STATUS_PART_ALLOCATED = H5D_SPACE_STATUS_PART_ALLOCATED
+ * SPACE_STATUS_ALLOCATED      = H5D_SPACE_STATUS_ALLOCATED             # <<<<<<<<<<<<<<
+ * 
+ * FILL_TIME_ALLOC = H5D_FILL_TIME_ALLOC
+ */
+  __pyx_t_8 = PyInt_FromLong(H5D_SPACE_STATUS_ALLOCATED); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_8);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_11, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+
+  /* "h5py/h5d.pyx":43
+ * SPACE_STATUS_ALLOCATED      = H5D_SPACE_STATUS_ALLOCATED
+ * 
+ * FILL_TIME_ALLOC = H5D_FILL_TIME_ALLOC             # <<<<<<<<<<<<<<
+ * FILL_TIME_NEVER = H5D_FILL_TIME_NEVER
+ * FILL_TIME_IFSET = H5D_FILL_TIME_IFSET
+ */
+  __pyx_t_8 = PyInt_FromLong(H5D_FILL_TIME_ALLOC); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_8);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__FILL_TIME_ALLOC, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+
+  /* "h5py/h5d.pyx":44
+ * 
+ * FILL_TIME_ALLOC = H5D_FILL_TIME_ALLOC
+ * FILL_TIME_NEVER = H5D_FILL_TIME_NEVER             # <<<<<<<<<<<<<<
+ * FILL_TIME_IFSET = H5D_FILL_TIME_IFSET
+ * 
+ */
+  __pyx_t_8 = PyInt_FromLong(H5D_FILL_TIME_NEVER); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_8);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__FILL_TIME_NEVER, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+
+  /* "h5py/h5d.pyx":45
+ * FILL_TIME_ALLOC = H5D_FILL_TIME_ALLOC
+ * FILL_TIME_NEVER = H5D_FILL_TIME_NEVER
+ * FILL_TIME_IFSET = H5D_FILL_TIME_IFSET             # <<<<<<<<<<<<<<
+ * 
+ * FILL_VALUE_UNDEFINED    = H5D_FILL_VALUE_UNDEFINED
+ */
+  __pyx_t_8 = PyInt_FromLong(H5D_FILL_TIME_IFSET); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_8);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__FILL_TIME_IFSET, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+
+  /* "h5py/h5d.pyx":47
+ * FILL_TIME_IFSET = H5D_FILL_TIME_IFSET
+ * 
+ * FILL_VALUE_UNDEFINED    = H5D_FILL_VALUE_UNDEFINED             # <<<<<<<<<<<<<<
+ * FILL_VALUE_DEFAULT      = H5D_FILL_VALUE_DEFAULT
+ * FILL_VALUE_USER_DEFINED = H5D_FILL_VALUE_USER_DEFINED
+ */
+  __pyx_t_8 = PyInt_FromLong(H5D_FILL_VALUE_UNDEFINED); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_8);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_12, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+
+  /* "h5py/h5d.pyx":48
+ * 
+ * FILL_VALUE_UNDEFINED    = H5D_FILL_VALUE_UNDEFINED
+ * FILL_VALUE_DEFAULT      = H5D_FILL_VALUE_DEFAULT             # <<<<<<<<<<<<<<
+ * FILL_VALUE_USER_DEFINED = H5D_FILL_VALUE_USER_DEFINED
+ * 
+ */
+  __pyx_t_8 = PyInt_FromLong(H5D_FILL_VALUE_DEFAULT); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_8);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__FILL_VALUE_DEFAULT, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+
+  /* "h5py/h5d.pyx":49
+ * FILL_VALUE_UNDEFINED    = H5D_FILL_VALUE_UNDEFINED
+ * FILL_VALUE_DEFAULT      = H5D_FILL_VALUE_DEFAULT
+ * FILL_VALUE_USER_DEFINED = H5D_FILL_VALUE_USER_DEFINED             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_8 = PyInt_FromLong(H5D_FILL_VALUE_USER_DEFINED); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_8);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_13, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+
+  /* "h5py/h5d.pyx":54
+ * # === Dataset operations ======================================================
+ * 
+ * def create(ObjectID loc not None, object name, TypeID tid not None,             # <<<<<<<<<<<<<<
+ *                SpaceID space not None, PropID dcpl=None, PropID lcpl=None, PropID dapl = None):
+ *         """ (objectID loc, STRING name or None, TypeID tid, SpaceID space,
+ */
+  __pyx_t_8 = PyCFunction_NewEx(&__pyx_mdef_4h5py_3h5d_1create, NULL, __pyx_n_s_17); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_8);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__create, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+
+  /* "h5py/h5d.pyx":75
+ *         return DatasetID.open(dsid)
+ * 
+ * def open(ObjectID loc not None, char* name):             # <<<<<<<<<<<<<<
+ *     """ (ObjectID loc, STRING name) => DatasetID
+ * 
+ */
+  __pyx_t_8 = PyCFunction_NewEx(&__pyx_mdef_4h5py_3h5d_3open, NULL, __pyx_n_s_17); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_8);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__open, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+
+  /* "h5py/h5d.pyx":1
+ * # This file is part of h5py, a Python interface to the HDF5 library.             # <<<<<<<<<<<<<<
+ * #
+ * # http://www.h5py.org
+ */
+  __pyx_t_8 = PyDict_New(); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(((PyObject *)__pyx_t_8));
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s____test__, ((PyObject *)__pyx_t_8)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_XDECREF(__pyx_t_8);
+  if (__pyx_m) {
+    __Pyx_AddTraceback("init h5py.h5d", __pyx_clineno, __pyx_lineno, __pyx_filename);
+    Py_DECREF(__pyx_m); __pyx_m = 0;
+  } else if (!PyErr_Occurred()) {
+    PyErr_SetString(PyExc_ImportError, "init h5py.h5d");
+  }
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  #if PY_MAJOR_VERSION < 3
+  return;
+  #else
+  return __pyx_m;
+  #endif
+}
+
+/* Runtime support code */
+#if CYTHON_REFNANNY
+static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) {
+    PyObject *m = NULL, *p = NULL;
+    void *r = NULL;
+    m = PyImport_ImportModule((char *)modname);
+    if (!m) goto end;
+    p = PyObject_GetAttrString(m, (char *)"RefNannyAPI");
+    if (!p) goto end;
+    r = PyLong_AsVoidPtr(p);
+end:
+    Py_XDECREF(p);
+    Py_XDECREF(m);
+    return (__Pyx_RefNannyAPIStruct *)r;
+}
+#endif /* CYTHON_REFNANNY */
+
+static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name) {
+    PyObject *result;
+    result = PyObject_GetAttr(dict, name);
+    if (!result) {
+        if (dict != __pyx_b) {
+            PyErr_Clear();
+            result = PyObject_GetAttr(__pyx_b, name);
+        }
+        if (!result) {
+            PyErr_SetObject(PyExc_NameError, name);
+        }
+    }
+    return result;
+}
+
+static void __Pyx_RaiseArgtupleInvalid(
+    const char* func_name,
+    int exact,
+    Py_ssize_t num_min,
+    Py_ssize_t num_max,
+    Py_ssize_t num_found)
+{
+    Py_ssize_t num_expected;
+    const char *more_or_less;
+    if (num_found < num_min) {
+        num_expected = num_min;
+        more_or_less = "at least";
+    } else {
+        num_expected = num_max;
+        more_or_less = "at most";
+    }
+    if (exact) {
+        more_or_less = "exactly";
+    }
+    PyErr_Format(PyExc_TypeError,
+                 "%s() takes %s %" CYTHON_FORMAT_SSIZE_T "d positional argument%s (%" CYTHON_FORMAT_SSIZE_T "d given)",
+                 func_name, more_or_less, num_expected,
+                 (num_expected == 1) ? "" : "s", num_found);
+}
+
+static void __Pyx_RaiseDoubleKeywordsError(
+    const char* func_name,
+    PyObject* kw_name)
+{
+    PyErr_Format(PyExc_TypeError,
+        #if PY_MAJOR_VERSION >= 3
+        "%s() got multiple values for keyword argument '%U'", func_name, kw_name);
+        #else
+        "%s() got multiple values for keyword argument '%s'", func_name,
+        PyString_AsString(kw_name));
+        #endif
+}
+
+static int __Pyx_ParseOptionalKeywords(
+    PyObject *kwds,
+    PyObject **argnames[],
+    PyObject *kwds2,
+    PyObject *values[],
+    Py_ssize_t num_pos_args,
+    const char* function_name)
+{
+    PyObject *key = 0, *value = 0;
+    Py_ssize_t pos = 0;
+    PyObject*** name;
+    PyObject*** first_kw_arg = argnames + num_pos_args;
+    while (PyDict_Next(kwds, &pos, &key, &value)) {
+        name = first_kw_arg;
+        while (*name && (**name != key)) name++;
+        if (*name) {
+            values[name-argnames] = value;
+            continue;
+        }
+        name = first_kw_arg;
+        #if PY_MAJOR_VERSION < 3
+        if (likely(PyString_CheckExact(key)) || likely(PyString_Check(key))) {
+            while (*name) {
+                if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key))
+                        && _PyString_Eq(**name, key)) {
+                    values[name-argnames] = value;
+                    break;
+                }
+                name++;
+            }
+            if (*name) continue;
+            else {
+                PyObject*** argname = argnames;
+                while (argname != first_kw_arg) {
+                    if ((**argname == key) || (
+                            (CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**argname) == PyString_GET_SIZE(key))
+                             && _PyString_Eq(**argname, key))) {
+                        goto arg_passed_twice;
+                    }
+                    argname++;
+                }
+            }
+        } else
+        #endif
+        if (likely(PyUnicode_Check(key))) {
+            while (*name) {
+                int cmp = (**name == key) ? 0 :
+                #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
+                    (PyUnicode_GET_SIZE(**name) != PyUnicode_GET_SIZE(key)) ? 1 :
+                #endif
+                    PyUnicode_Compare(**name, key);
+                if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
+                if (cmp == 0) {
+                    values[name-argnames] = value;
+                    break;
+                }
+                name++;
+            }
+            if (*name) continue;
+            else {
+                PyObject*** argname = argnames;
+                while (argname != first_kw_arg) {
+                    int cmp = (**argname == key) ? 0 :
+                    #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
+                        (PyUnicode_GET_SIZE(**argname) != PyUnicode_GET_SIZE(key)) ? 1 :
+                    #endif
+                        PyUnicode_Compare(**argname, key);
+                    if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
+                    if (cmp == 0) goto arg_passed_twice;
+                    argname++;
+                }
+            }
+        } else
+            goto invalid_keyword_type;
+        if (kwds2) {
+            if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad;
+        } else {
+            goto invalid_keyword;
+        }
+    }
+    return 0;
+arg_passed_twice:
+    __Pyx_RaiseDoubleKeywordsError(function_name, key);
+    goto bad;
+invalid_keyword_type:
+    PyErr_Format(PyExc_TypeError,
+        "%s() keywords must be strings", function_name);
+    goto bad;
+invalid_keyword:
+    PyErr_Format(PyExc_TypeError,
+    #if PY_MAJOR_VERSION < 3
+        "%s() got an unexpected keyword argument '%s'",
+        function_name, PyString_AsString(key));
+    #else
+        "%s() got an unexpected keyword argument '%U'",
+        function_name, key);
+    #endif
+bad:
+    return -1;
+}
+
+static int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, int none_allowed,
+    const char *name, int exact)
+{
+    if (!type) {
+        PyErr_Format(PyExc_SystemError, "Missing type object");
+        return 0;
+    }
+    if (none_allowed && obj == Py_None) return 1;
+    else if (exact) {
+        if (Py_TYPE(obj) == type) return 1;
+    }
+    else {
+        if (PyObject_TypeCheck(obj, type)) return 1;
+    }
+    PyErr_Format(PyExc_TypeError,
+        "Argument '%s' has incorrect type (expected %s, got %s)",
+        name, type->tp_name, Py_TYPE(obj)->tp_name);
+    return 0;
+}
+
+static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) {
+    if (unlikely(!type)) {
+        PyErr_Format(PyExc_SystemError, "Missing type object");
+        return 0;
+    }
+    if (likely(PyObject_TypeCheck(obj, type)))
+        return 1;
+    PyErr_Format(PyExc_TypeError, "Cannot convert %.200s to %.200s",
+                 Py_TYPE(obj)->tp_name, type->tp_name);
+    return 0;
+}
+
+static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) {
+    PyObject *local_type, *local_value, *local_tb;
+#if CYTHON_COMPILING_IN_CPYTHON
+    PyObject *tmp_type, *tmp_value, *tmp_tb;
+    PyThreadState *tstate = PyThreadState_GET();
+    local_type = tstate->curexc_type;
+    local_value = tstate->curexc_value;
+    local_tb = tstate->curexc_traceback;
+    tstate->curexc_type = 0;
+    tstate->curexc_value = 0;
+    tstate->curexc_traceback = 0;
+#else
+    PyErr_Fetch(&local_type, &local_value, &local_tb);
+#endif
+    PyErr_NormalizeException(&local_type, &local_value, &local_tb);
+#if CYTHON_COMPILING_IN_CPYTHON
+    if (unlikely(tstate->curexc_type))
+#else
+    if (unlikely(PyErr_Occurred()))
+#endif
+        goto bad;
+    #if PY_MAJOR_VERSION >= 3
+    if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0))
+        goto bad;
+    #endif
+    Py_INCREF(local_type);
+    Py_INCREF(local_value);
+    Py_INCREF(local_tb);
+    *type = local_type;
+    *value = local_value;
+    *tb = local_tb;
+#if CYTHON_COMPILING_IN_CPYTHON
+    tmp_type = tstate->exc_type;
+    tmp_value = tstate->exc_value;
+    tmp_tb = tstate->exc_traceback;
+    tstate->exc_type = local_type;
+    tstate->exc_value = local_value;
+    tstate->exc_traceback = local_tb;
+    /* Make sure tstate is in a consistent state when we XDECREF
+       these objects (DECREF may run arbitrary code). */
+    Py_XDECREF(tmp_type);
+    Py_XDECREF(tmp_value);
+    Py_XDECREF(tmp_tb);
+#else
+    PyErr_SetExcInfo(local_type, local_value, local_tb);
+#endif
+    return 0;
+bad:
+    *type = 0;
+    *value = 0;
+    *tb = 0;
+    Py_XDECREF(local_type);
+    Py_XDECREF(local_value);
+    Py_XDECREF(local_tb);
+    return -1;
+}
+
+static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb) {
+#if CYTHON_COMPILING_IN_CPYTHON
+    PyObject *tmp_type, *tmp_value, *tmp_tb;
+    PyThreadState *tstate = PyThreadState_GET();
+    tmp_type = tstate->curexc_type;
+    tmp_value = tstate->curexc_value;
+    tmp_tb = tstate->curexc_traceback;
+    tstate->curexc_type = type;
+    tstate->curexc_value = value;
+    tstate->curexc_traceback = tb;
+    Py_XDECREF(tmp_type);
+    Py_XDECREF(tmp_value);
+    Py_XDECREF(tmp_tb);
+#else
+    PyErr_Restore(type, value, tb);
+#endif
+}
+static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb) {
+#if CYTHON_COMPILING_IN_CPYTHON
+    PyThreadState *tstate = PyThreadState_GET();
+    *type = tstate->curexc_type;
+    *value = tstate->curexc_value;
+    *tb = tstate->curexc_traceback;
+    tstate->curexc_type = 0;
+    tstate->curexc_value = 0;
+    tstate->curexc_traceback = 0;
+#else
+    PyErr_Fetch(type, value, tb);
+#endif
+}
+
+#if PY_MAJOR_VERSION < 3
+static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb,
+                        CYTHON_UNUSED PyObject *cause) {
+    Py_XINCREF(type);
+    if (!value || value == Py_None)
+        value = NULL;
+    else
+        Py_INCREF(value);
+    if (!tb || tb == Py_None)
+        tb = NULL;
+    else {
+        Py_INCREF(tb);
+        if (!PyTraceBack_Check(tb)) {
+            PyErr_SetString(PyExc_TypeError,
+                "raise: arg 3 must be a traceback or None");
+            goto raise_error;
+        }
+    }
+    #if PY_VERSION_HEX < 0x02050000
+    if (PyClass_Check(type)) {
+    #else
+    if (PyType_Check(type)) {
+    #endif
+#if CYTHON_COMPILING_IN_PYPY
+        if (!value) {
+            Py_INCREF(Py_None);
+            value = Py_None;
+        }
+#endif
+        PyErr_NormalizeException(&type, &value, &tb);
+    } else {
+        if (value) {
+            PyErr_SetString(PyExc_TypeError,
+                "instance exception may not have a separate value");
+            goto raise_error;
+        }
+        value = type;
+        #if PY_VERSION_HEX < 0x02050000
+            if (PyInstance_Check(type)) {
+                type = (PyObject*) ((PyInstanceObject*)type)->in_class;
+                Py_INCREF(type);
+            }
+            else {
+                type = 0;
+                PyErr_SetString(PyExc_TypeError,
+                    "raise: exception must be an old-style class or instance");
+                goto raise_error;
+            }
+        #else
+            type = (PyObject*) Py_TYPE(type);
+            Py_INCREF(type);
+            if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) {
+                PyErr_SetString(PyExc_TypeError,
+                    "raise: exception class must be a subclass of BaseException");
+                goto raise_error;
+            }
+        #endif
+    }
+    __Pyx_ErrRestore(type, value, tb);
+    return;
+raise_error:
+    Py_XDECREF(value);
+    Py_XDECREF(type);
+    Py_XDECREF(tb);
+    return;
+}
+#else /* Python 3+ */
+static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) {
+    PyObject* owned_instance = NULL;
+    if (tb == Py_None) {
+        tb = 0;
+    } else if (tb && !PyTraceBack_Check(tb)) {
+        PyErr_SetString(PyExc_TypeError,
+            "raise: arg 3 must be a traceback or None");
+        goto bad;
+    }
+    if (value == Py_None)
+        value = 0;
+    if (PyExceptionInstance_Check(type)) {
+        if (value) {
+            PyErr_SetString(PyExc_TypeError,
+                "instance exception may not have a separate value");
+            goto bad;
+        }
+        value = type;
+        type = (PyObject*) Py_TYPE(value);
+    } else if (PyExceptionClass_Check(type)) {
+        PyObject *args;
+        if (!value)
+            args = PyTuple_New(0);
+        else if (PyTuple_Check(value)) {
+            Py_INCREF(value);
+            args = value;
+        }
+        else
+            args = PyTuple_Pack(1, value);
+        if (!args)
+            goto bad;
+        owned_instance = PyEval_CallObject(type, args);
+        Py_DECREF(args);
+        if (!owned_instance)
+            goto bad;
+        value = owned_instance;
+        if (!PyExceptionInstance_Check(value)) {
+            PyErr_Format(PyExc_TypeError,
+                         "calling %R should have returned an instance of "
+                         "BaseException, not %R",
+                         type, Py_TYPE(value));
+            goto bad;
+        }
+    } else {
+        PyErr_SetString(PyExc_TypeError,
+            "raise: exception class must be a subclass of BaseException");
+        goto bad;
+    }
+    if (cause && cause != Py_None) {
+        PyObject *fixed_cause;
+        if (PyExceptionClass_Check(cause)) {
+            fixed_cause = PyObject_CallObject(cause, NULL);
+            if (fixed_cause == NULL)
+                goto bad;
+        }
+        else if (PyExceptionInstance_Check(cause)) {
+            fixed_cause = cause;
+            Py_INCREF(fixed_cause);
+        }
+        else {
+            PyErr_SetString(PyExc_TypeError,
+                            "exception causes must derive from "
+                            "BaseException");
+            goto bad;
+        }
+        PyException_SetCause(value, fixed_cause);
+    }
+    PyErr_SetObject(type, value);
+    if (tb) {
+        PyThreadState *tstate = PyThreadState_GET();
+        PyObject* tmp_tb = tstate->curexc_traceback;
+        if (tb != tmp_tb) {
+            Py_INCREF(tb);
+            tstate->curexc_traceback = tb;
+            Py_XDECREF(tmp_tb);
+        }
+    }
+bad:
+    Py_XDECREF(owned_instance);
+    return;
+}
+#endif
+
+static void __Pyx_call_next_tp_dealloc(PyObject* obj, destructor current_tp_dealloc) {
+    PyTypeObject* type = Py_TYPE(obj);
+    while (type && type->tp_dealloc != current_tp_dealloc)
+        type = type->tp_base;
+    while (type && type->tp_dealloc == current_tp_dealloc)
+        type = type->tp_base;
+    if (type)
+        type->tp_dealloc(obj);
+}
+
+static int __Pyx_call_next_tp_traverse(PyObject* obj, visitproc v, void *a, traverseproc current_tp_traverse) {
+    PyTypeObject* type = Py_TYPE(obj);
+    while (type && type->tp_traverse != current_tp_traverse)
+        type = type->tp_base;
+    while (type && type->tp_traverse == current_tp_traverse)
+        type = type->tp_base;
+    if (type && type->tp_traverse)
+        return type->tp_traverse(obj, v, a);
+    return 0;
+}
+
+static void __Pyx_call_next_tp_clear(PyObject* obj, inquiry current_tp_clear) {
+    PyTypeObject* type = Py_TYPE(obj);
+    while (type && type->tp_clear != current_tp_clear)
+        type = type->tp_base;
+    while (type && type->tp_clear == current_tp_clear)
+        type = type->tp_base;
+    if (type && type->tp_clear)
+        type->tp_clear(obj);
+}
+
+static CYTHON_INLINE void __Pyx_ExceptionSave(PyObject **type, PyObject **value, PyObject **tb) {
+#if CYTHON_COMPILING_IN_CPYTHON
+    PyThreadState *tstate = PyThreadState_GET();
+    *type = tstate->exc_type;
+    *value = tstate->exc_value;
+    *tb = tstate->exc_traceback;
+    Py_XINCREF(*type);
+    Py_XINCREF(*value);
+    Py_XINCREF(*tb);
+#else
+    PyErr_GetExcInfo(type, value, tb);
+#endif
+}
+static void __Pyx_ExceptionReset(PyObject *type, PyObject *value, PyObject *tb) {
+#if CYTHON_COMPILING_IN_CPYTHON
+    PyObject *tmp_type, *tmp_value, *tmp_tb;
+    PyThreadState *tstate = PyThreadState_GET();
+    tmp_type = tstate->exc_type;
+    tmp_value = tstate->exc_value;
+    tmp_tb = tstate->exc_traceback;
+    tstate->exc_type = type;
+    tstate->exc_value = value;
+    tstate->exc_traceback = tb;
+    Py_XDECREF(tmp_type);
+    Py_XDECREF(tmp_value);
+    Py_XDECREF(tmp_tb);
+#else
+    PyErr_SetExcInfo(type, value, tb);
+#endif
+}
+
+static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) {
+    PyObject *empty_list = 0;
+    PyObject *module = 0;
+    PyObject *global_dict = 0;
+    PyObject *empty_dict = 0;
+    PyObject *list;
+    #if PY_VERSION_HEX < 0x03030000
+    PyObject *py_import = 0;
+    py_import = __Pyx_GetAttrString(__pyx_b, "__import__");
+    if (!py_import)
+        goto bad;
+    #endif
+    if (from_list)
+        list = from_list;
+    else {
+        empty_list = PyList_New(0);
+        if (!empty_list)
+            goto bad;
+        list = empty_list;
+    }
+    global_dict = PyModule_GetDict(__pyx_m);
+    if (!global_dict)
+        goto bad;
+    empty_dict = PyDict_New();
+    if (!empty_dict)
+        goto bad;
+    #if PY_VERSION_HEX >= 0x02050000
+    {
+        #if PY_MAJOR_VERSION >= 3
+        if (level == -1) {
+            if (strchr(__Pyx_MODULE_NAME, '.')) {
+                #if PY_VERSION_HEX < 0x03030000
+                PyObject *py_level = PyInt_FromLong(1);
+                if (!py_level)
+                    goto bad;
+                module = PyObject_CallFunctionObjArgs(py_import,
+                    name, global_dict, empty_dict, list, py_level, NULL);
+                Py_DECREF(py_level);
+                #else
+                module = PyImport_ImportModuleLevelObject(
+                    name, global_dict, empty_dict, list, 1);
+                #endif
+                if (!module) {
+                    if (!PyErr_ExceptionMatches(PyExc_ImportError))
+                        goto bad;
+                    PyErr_Clear();
+                }
+            }
+            level = 0; /* try absolute import on failure */
+        }
+        #endif
+        if (!module) {
+            #if PY_VERSION_HEX < 0x03030000
+            PyObject *py_level = PyInt_FromLong(level);
+            if (!py_level)
+                goto bad;
+            module = PyObject_CallFunctionObjArgs(py_import,
+                name, global_dict, empty_dict, list, py_level, NULL);
+            Py_DECREF(py_level);
+            #else
+            module = PyImport_ImportModuleLevelObject(
+                name, global_dict, empty_dict, list, level);
+            #endif
+        }
+    }
+    #else
+    if (level>0) {
+        PyErr_SetString(PyExc_RuntimeError, "Relative import is not supported for Python <=2.4.");
+        goto bad;
+    }
+    module = PyObject_CallFunctionObjArgs(py_import,
+        name, global_dict, empty_dict, list, NULL);
+    #endif
+bad:
+    #if PY_VERSION_HEX < 0x03030000
+    Py_XDECREF(py_import);
+    #endif
+    Py_XDECREF(empty_list);
+    Py_XDECREF(empty_dict);
+    return module;
+}
+
+static CYTHON_INLINE void __Pyx_RaiseImportError(PyObject *name) {
+#if PY_MAJOR_VERSION < 3
+    PyErr_Format(PyExc_ImportError, "cannot import name %.230s",
+                 PyString_AsString(name));
+#else
+    PyErr_Format(PyExc_ImportError, "cannot import name %S", name);
+#endif
+}
+
+static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_hid_t(hid_t val) {
+    const hid_t neg_one = (hid_t)-1, const_zero = (hid_t)0;
+    const int is_unsigned = const_zero < neg_one;
+    if ((sizeof(hid_t) == sizeof(char))  ||
+        (sizeof(hid_t) == sizeof(short))) {
+        return PyInt_FromLong((long)val);
+    } else if ((sizeof(hid_t) == sizeof(int)) ||
+               (sizeof(hid_t) == sizeof(long))) {
+        if (is_unsigned)
+            return PyLong_FromUnsignedLong((unsigned long)val);
+        else
+            return PyInt_FromLong((long)val);
+    } else if (sizeof(hid_t) == sizeof(PY_LONG_LONG)) {
+        if (is_unsigned)
+            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG)val);
+        else
+            return PyLong_FromLongLong((PY_LONG_LONG)val);
+    } else {
+        int one = 1; int little = (int)*(unsigned char *)&one;
+        unsigned char *bytes = (unsigned char *)&val;
+        return _PyLong_FromByteArray(bytes, sizeof(hid_t),
+                                     little, !is_unsigned);
+    }
+}
+
+static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_haddr_t(haddr_t val) {
+    const haddr_t neg_one = (haddr_t)-1, const_zero = (haddr_t)0;
+    const int is_unsigned = const_zero < neg_one;
+    if ((sizeof(haddr_t) == sizeof(char))  ||
+        (sizeof(haddr_t) == sizeof(short))) {
+        return PyInt_FromLong((long)val);
+    } else if ((sizeof(haddr_t) == sizeof(int)) ||
+               (sizeof(haddr_t) == sizeof(long))) {
+        if (is_unsigned)
+            return PyLong_FromUnsignedLong((unsigned long)val);
+        else
+            return PyInt_FromLong((long)val);
+    } else if (sizeof(haddr_t) == sizeof(PY_LONG_LONG)) {
+        if (is_unsigned)
+            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG)val);
+        else
+            return PyLong_FromLongLong((PY_LONG_LONG)val);
+    } else {
+        int one = 1; int little = (int)*(unsigned char *)&one;
+        unsigned char *bytes = (unsigned char *)&val;
+        return _PyLong_FromByteArray(bytes, sizeof(haddr_t),
+                                     little, !is_unsigned);
+    }
+}
+
+static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_hsize_t(hsize_t val) {
+    const hsize_t neg_one = (hsize_t)-1, const_zero = (hsize_t)0;
+    const int is_unsigned = const_zero < neg_one;
+    if ((sizeof(hsize_t) == sizeof(char))  ||
+        (sizeof(hsize_t) == sizeof(short))) {
+        return PyInt_FromLong((long)val);
+    } else if ((sizeof(hsize_t) == sizeof(int)) ||
+               (sizeof(hsize_t) == sizeof(long))) {
+        if (is_unsigned)
+            return PyLong_FromUnsignedLong((unsigned long)val);
+        else
+            return PyInt_FromLong((long)val);
+    } else if (sizeof(hsize_t) == sizeof(PY_LONG_LONG)) {
+        if (is_unsigned)
+            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG)val);
+        else
+            return PyLong_FromLongLong((PY_LONG_LONG)val);
+    } else {
+        int one = 1; int little = (int)*(unsigned char *)&one;
+        unsigned char *bytes = (unsigned char *)&val;
+        return _PyLong_FromByteArray(bytes, sizeof(hsize_t),
+                                     little, !is_unsigned);
+    }
+}
+
+static CYTHON_INLINE unsigned char __Pyx_PyInt_AsUnsignedChar(PyObject* x) {
+    const unsigned char neg_one = (unsigned char)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(unsigned char) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(unsigned char)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to unsigned char" :
+                    "value too large to convert to unsigned char");
+            }
+            return (unsigned char)-1;
+        }
+        return (unsigned char)val;
+    }
+    return (unsigned char)__Pyx_PyInt_AsUnsignedLong(x);
+}
+
+static CYTHON_INLINE unsigned short __Pyx_PyInt_AsUnsignedShort(PyObject* x) {
+    const unsigned short neg_one = (unsigned short)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(unsigned short) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(unsigned short)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to unsigned short" :
+                    "value too large to convert to unsigned short");
+            }
+            return (unsigned short)-1;
+        }
+        return (unsigned short)val;
+    }
+    return (unsigned short)__Pyx_PyInt_AsUnsignedLong(x);
+}
+
+static CYTHON_INLINE unsigned int __Pyx_PyInt_AsUnsignedInt(PyObject* x) {
+    const unsigned int neg_one = (unsigned int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(unsigned int) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(unsigned int)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to unsigned int" :
+                    "value too large to convert to unsigned int");
+            }
+            return (unsigned int)-1;
+        }
+        return (unsigned int)val;
+    }
+    return (unsigned int)__Pyx_PyInt_AsUnsignedLong(x);
+}
+
+static CYTHON_INLINE char __Pyx_PyInt_AsChar(PyObject* x) {
+    const char neg_one = (char)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(char) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(char)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to char" :
+                    "value too large to convert to char");
+            }
+            return (char)-1;
+        }
+        return (char)val;
+    }
+    return (char)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE short __Pyx_PyInt_AsShort(PyObject* x) {
+    const short neg_one = (short)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(short) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(short)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to short" :
+                    "value too large to convert to short");
+            }
+            return (short)-1;
+        }
+        return (short)val;
+    }
+    return (short)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE int __Pyx_PyInt_AsInt(PyObject* x) {
+    const int neg_one = (int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(int) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(int)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to int" :
+                    "value too large to convert to int");
+            }
+            return (int)-1;
+        }
+        return (int)val;
+    }
+    return (int)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE signed char __Pyx_PyInt_AsSignedChar(PyObject* x) {
+    const signed char neg_one = (signed char)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(signed char) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(signed char)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to signed char" :
+                    "value too large to convert to signed char");
+            }
+            return (signed char)-1;
+        }
+        return (signed char)val;
+    }
+    return (signed char)__Pyx_PyInt_AsSignedLong(x);
+}
+
+static CYTHON_INLINE signed short __Pyx_PyInt_AsSignedShort(PyObject* x) {
+    const signed short neg_one = (signed short)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(signed short) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(signed short)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to signed short" :
+                    "value too large to convert to signed short");
+            }
+            return (signed short)-1;
+        }
+        return (signed short)val;
+    }
+    return (signed short)__Pyx_PyInt_AsSignedLong(x);
+}
+
+static CYTHON_INLINE signed int __Pyx_PyInt_AsSignedInt(PyObject* x) {
+    const signed int neg_one = (signed int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(signed int) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(signed int)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to signed int" :
+                    "value too large to convert to signed int");
+            }
+            return (signed int)-1;
+        }
+        return (signed int)val;
+    }
+    return (signed int)__Pyx_PyInt_AsSignedLong(x);
+}
+
+static CYTHON_INLINE int __Pyx_PyInt_AsLongDouble(PyObject* x) {
+    const int neg_one = (int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(int) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(int)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to int" :
+                    "value too large to convert to int");
+            }
+            return (int)-1;
+        }
+        return (int)val;
+    }
+    return (int)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE unsigned long __Pyx_PyInt_AsUnsignedLong(PyObject* x) {
+    const unsigned long neg_one = (unsigned long)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to unsigned long");
+            return (unsigned long)-1;
+        }
+        return (unsigned long)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to unsigned long");
+                return (unsigned long)-1;
+            }
+            return (unsigned long)PyLong_AsUnsignedLong(x);
+        } else {
+            return (unsigned long)PyLong_AsLong(x);
+        }
+    } else {
+        unsigned long val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (unsigned long)-1;
+        val = __Pyx_PyInt_AsUnsignedLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE unsigned PY_LONG_LONG __Pyx_PyInt_AsUnsignedLongLong(PyObject* x) {
+    const unsigned PY_LONG_LONG neg_one = (unsigned PY_LONG_LONG)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to unsigned PY_LONG_LONG");
+            return (unsigned PY_LONG_LONG)-1;
+        }
+        return (unsigned PY_LONG_LONG)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to unsigned PY_LONG_LONG");
+                return (unsigned PY_LONG_LONG)-1;
+            }
+            return (unsigned PY_LONG_LONG)PyLong_AsUnsignedLongLong(x);
+        } else {
+            return (unsigned PY_LONG_LONG)PyLong_AsLongLong(x);
+        }
+    } else {
+        unsigned PY_LONG_LONG val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (unsigned PY_LONG_LONG)-1;
+        val = __Pyx_PyInt_AsUnsignedLongLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE long __Pyx_PyInt_AsLong(PyObject* x) {
+    const long neg_one = (long)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to long");
+            return (long)-1;
+        }
+        return (long)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to long");
+                return (long)-1;
+            }
+            return (long)PyLong_AsUnsignedLong(x);
+        } else {
+            return (long)PyLong_AsLong(x);
+        }
+    } else {
+        long val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (long)-1;
+        val = __Pyx_PyInt_AsLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE PY_LONG_LONG __Pyx_PyInt_AsLongLong(PyObject* x) {
+    const PY_LONG_LONG neg_one = (PY_LONG_LONG)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to PY_LONG_LONG");
+            return (PY_LONG_LONG)-1;
+        }
+        return (PY_LONG_LONG)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to PY_LONG_LONG");
+                return (PY_LONG_LONG)-1;
+            }
+            return (PY_LONG_LONG)PyLong_AsUnsignedLongLong(x);
+        } else {
+            return (PY_LONG_LONG)PyLong_AsLongLong(x);
+        }
+    } else {
+        PY_LONG_LONG val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (PY_LONG_LONG)-1;
+        val = __Pyx_PyInt_AsLongLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE signed long __Pyx_PyInt_AsSignedLong(PyObject* x) {
+    const signed long neg_one = (signed long)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to signed long");
+            return (signed long)-1;
+        }
+        return (signed long)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to signed long");
+                return (signed long)-1;
+            }
+            return (signed long)PyLong_AsUnsignedLong(x);
+        } else {
+            return (signed long)PyLong_AsLong(x);
+        }
+    } else {
+        signed long val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (signed long)-1;
+        val = __Pyx_PyInt_AsSignedLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE signed PY_LONG_LONG __Pyx_PyInt_AsSignedLongLong(PyObject* x) {
+    const signed PY_LONG_LONG neg_one = (signed PY_LONG_LONG)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to signed PY_LONG_LONG");
+            return (signed PY_LONG_LONG)-1;
+        }
+        return (signed PY_LONG_LONG)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to signed PY_LONG_LONG");
+                return (signed PY_LONG_LONG)-1;
+            }
+            return (signed PY_LONG_LONG)PyLong_AsUnsignedLongLong(x);
+        } else {
+            return (signed PY_LONG_LONG)PyLong_AsLongLong(x);
+        }
+    } else {
+        signed PY_LONG_LONG val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (signed PY_LONG_LONG)-1;
+        val = __Pyx_PyInt_AsSignedLongLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static int __Pyx_check_binary_version(void) {
+    char ctversion[4], rtversion[4];
+    PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION);
+    PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion());
+    if (ctversion[0] != rtversion[0] || ctversion[2] != rtversion[2]) {
+        char message[200];
+        PyOS_snprintf(message, sizeof(message),
+                      "compiletime version %s of module '%.100s' "
+                      "does not match runtime version %s",
+                      ctversion, __Pyx_MODULE_NAME, rtversion);
+        #if PY_VERSION_HEX < 0x02050000
+        return PyErr_Warn(NULL, message);
+        #else
+        return PyErr_WarnEx(NULL, message, 1);
+        #endif
+    }
+    return 0;
+}
+
+#ifndef __PYX_HAVE_RT_ImportModule
+#define __PYX_HAVE_RT_ImportModule
+static PyObject *__Pyx_ImportModule(const char *name) {
+    PyObject *py_name = 0;
+    PyObject *py_module = 0;
+    py_name = __Pyx_PyIdentifier_FromString(name);
+    if (!py_name)
+        goto bad;
+    py_module = PyImport_Import(py_name);
+    Py_DECREF(py_name);
+    return py_module;
+bad:
+    Py_XDECREF(py_name);
+    return 0;
+}
+#endif
+
+#ifndef __PYX_HAVE_RT_ImportType
+#define __PYX_HAVE_RT_ImportType
+static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name,
+    size_t size, int strict)
+{
+    PyObject *py_module = 0;
+    PyObject *result = 0;
+    PyObject *py_name = 0;
+    char warning[200];
+    Py_ssize_t basicsize;
+#ifdef Py_LIMITED_API
+    PyObject *py_basicsize;
+#endif
+    py_module = __Pyx_ImportModule(module_name);
+    if (!py_module)
+        goto bad;
+    py_name = __Pyx_PyIdentifier_FromString(class_name);
+    if (!py_name)
+        goto bad;
+    result = PyObject_GetAttr(py_module, py_name);
+    Py_DECREF(py_name);
+    py_name = 0;
+    Py_DECREF(py_module);
+    py_module = 0;
+    if (!result)
+        goto bad;
+    if (!PyType_Check(result)) {
+        PyErr_Format(PyExc_TypeError,
+            "%s.%s is not a type object",
+            module_name, class_name);
+        goto bad;
+    }
+#ifndef Py_LIMITED_API
+    basicsize = ((PyTypeObject *)result)->tp_basicsize;
+#else
+    py_basicsize = PyObject_GetAttrString(result, "__basicsize__");
+    if (!py_basicsize)
+        goto bad;
+    basicsize = PyLong_AsSsize_t(py_basicsize);
+    Py_DECREF(py_basicsize);
+    py_basicsize = 0;
+    if (basicsize == (Py_ssize_t)-1 && PyErr_Occurred())
+        goto bad;
+#endif
+    if (!strict && (size_t)basicsize > size) {
+        PyOS_snprintf(warning, sizeof(warning),
+            "%s.%s size changed, may indicate binary incompatibility",
+            module_name, class_name);
+        #if PY_VERSION_HEX < 0x02050000
+        if (PyErr_Warn(NULL, warning) < 0) goto bad;
+        #else
+        if (PyErr_WarnEx(NULL, warning, 0) < 0) goto bad;
+        #endif
+    }
+    else if ((size_t)basicsize != size) {
+        PyErr_Format(PyExc_ValueError,
+            "%s.%s has the wrong size, try recompiling",
+            module_name, class_name);
+        goto bad;
+    }
+    return (PyTypeObject *)result;
+bad:
+    Py_XDECREF(py_module);
+    Py_XDECREF(result);
+    return NULL;
+}
+#endif
+
+static void* __Pyx_GetVtable(PyObject *dict) {
+    void* ptr;
+    PyObject *ob = PyMapping_GetItemString(dict, (char *)"__pyx_vtable__");
+    if (!ob)
+        goto bad;
+#if PY_VERSION_HEX >= 0x02070000 && !(PY_MAJOR_VERSION==3&&PY_MINOR_VERSION==0)
+    ptr = PyCapsule_GetPointer(ob, 0);
+#else
+    ptr = PyCObject_AsVoidPtr(ob);
+#endif
+    if (!ptr && !PyErr_Occurred())
+        PyErr_SetString(PyExc_RuntimeError, "invalid vtable found for imported type");
+    Py_DECREF(ob);
+    return ptr;
+bad:
+    Py_XDECREF(ob);
+    return NULL;
+}
+
+#ifndef __PYX_HAVE_RT_ImportFunction
+#define __PYX_HAVE_RT_ImportFunction
+static int __Pyx_ImportFunction(PyObject *module, const char *funcname, void (**f)(void), const char *sig) {
+    PyObject *d = 0;
+    PyObject *cobj = 0;
+    union {
+        void (*fp)(void);
+        void *p;
+    } tmp;
+    d = PyObject_GetAttrString(module, (char *)"__pyx_capi__");
+    if (!d)
+        goto bad;
+    cobj = PyDict_GetItemString(d, funcname);
+    if (!cobj) {
+        PyErr_Format(PyExc_ImportError,
+            "%s does not export expected C function %s",
+                PyModule_GetName(module), funcname);
+        goto bad;
+    }
+#if PY_VERSION_HEX >= 0x02070000 && !(PY_MAJOR_VERSION==3 && PY_MINOR_VERSION==0)
+    if (!PyCapsule_IsValid(cobj, sig)) {
+        PyErr_Format(PyExc_TypeError,
+            "C function %s.%s has wrong signature (expected %s, got %s)",
+             PyModule_GetName(module), funcname, sig, PyCapsule_GetName(cobj));
+        goto bad;
+    }
+    tmp.p = PyCapsule_GetPointer(cobj, sig);
+#else
+    {const char *desc, *s1, *s2;
+    desc = (const char *)PyCObject_GetDesc(cobj);
+    if (!desc)
+        goto bad;
+    s1 = desc; s2 = sig;
+    while (*s1 != '\0' && *s1 == *s2) { s1++; s2++; }
+    if (*s1 != *s2) {
+        PyErr_Format(PyExc_TypeError,
+            "C function %s.%s has wrong signature (expected %s, got %s)",
+             PyModule_GetName(module), funcname, sig, desc);
+        goto bad;
+    }
+    tmp.p = PyCObject_AsVoidPtr(cobj);}
+#endif
+    *f = tmp.fp;
+    if (!(*f))
+        goto bad;
+    Py_DECREF(d);
+    return 0;
+bad:
+    Py_XDECREF(d);
+    return -1;
+}
+#endif
+
+static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) {
+    int start = 0, mid = 0, end = count - 1;
+    if (end >= 0 && code_line > entries[end].code_line) {
+        return count;
+    }
+    while (start < end) {
+        mid = (start + end) / 2;
+        if (code_line < entries[mid].code_line) {
+            end = mid;
+        } else if (code_line > entries[mid].code_line) {
+             start = mid + 1;
+        } else {
+            return mid;
+        }
+    }
+    if (code_line <= entries[mid].code_line) {
+        return mid;
+    } else {
+        return mid + 1;
+    }
+}
+static PyCodeObject *__pyx_find_code_object(int code_line) {
+    PyCodeObject* code_object;
+    int pos;
+    if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) {
+        return NULL;
+    }
+    pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
+    if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) {
+        return NULL;
+    }
+    code_object = __pyx_code_cache.entries[pos].code_object;
+    Py_INCREF(code_object);
+    return code_object;
+}
+static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) {
+    int pos, i;
+    __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries;
+    if (unlikely(!code_line)) {
+        return;
+    }
+    if (unlikely(!entries)) {
+        entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry));
+        if (likely(entries)) {
+            __pyx_code_cache.entries = entries;
+            __pyx_code_cache.max_count = 64;
+            __pyx_code_cache.count = 1;
+            entries[0].code_line = code_line;
+            entries[0].code_object = code_object;
+            Py_INCREF(code_object);
+        }
+        return;
+    }
+    pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
+    if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) {
+        PyCodeObject* tmp = entries[pos].code_object;
+        entries[pos].code_object = code_object;
+        Py_DECREF(tmp);
+        return;
+    }
+    if (__pyx_code_cache.count == __pyx_code_cache.max_count) {
+        int new_max = __pyx_code_cache.max_count + 64;
+        entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc(
+            __pyx_code_cache.entries, new_max*sizeof(__Pyx_CodeObjectCacheEntry));
+        if (unlikely(!entries)) {
+            return;
+        }
+        __pyx_code_cache.entries = entries;
+        __pyx_code_cache.max_count = new_max;
+    }
+    for (i=__pyx_code_cache.count; i>pos; i--) {
+        entries[i] = entries[i-1];
+    }
+    entries[pos].code_line = code_line;
+    entries[pos].code_object = code_object;
+    __pyx_code_cache.count++;
+    Py_INCREF(code_object);
+}
+
+#include "compile.h"
+#include "frameobject.h"
+#include "traceback.h"
+static PyCodeObject* __Pyx_CreateCodeObjectForTraceback(
+            const char *funcname, int c_line,
+            int py_line, const char *filename) {
+    PyCodeObject *py_code = 0;
+    PyObject *py_srcfile = 0;
+    PyObject *py_funcname = 0;
+    #if PY_MAJOR_VERSION < 3
+    py_srcfile = PyString_FromString(filename);
+    #else
+    py_srcfile = PyUnicode_FromString(filename);
+    #endif
+    if (!py_srcfile) goto bad;
+    if (c_line) {
+        #if PY_MAJOR_VERSION < 3
+        py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
+        #else
+        py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
+        #endif
+    }
+    else {
+        #if PY_MAJOR_VERSION < 3
+        py_funcname = PyString_FromString(funcname);
+        #else
+        py_funcname = PyUnicode_FromString(funcname);
+        #endif
+    }
+    if (!py_funcname) goto bad;
+    py_code = __Pyx_PyCode_New(
+        0,            /*int argcount,*/
+        0,            /*int kwonlyargcount,*/
+        0,            /*int nlocals,*/
+        0,            /*int stacksize,*/
+        0,            /*int flags,*/
+        __pyx_empty_bytes, /*PyObject *code,*/
+        __pyx_empty_tuple, /*PyObject *consts,*/
+        __pyx_empty_tuple, /*PyObject *names,*/
+        __pyx_empty_tuple, /*PyObject *varnames,*/
+        __pyx_empty_tuple, /*PyObject *freevars,*/
+        __pyx_empty_tuple, /*PyObject *cellvars,*/
+        py_srcfile,   /*PyObject *filename,*/
+        py_funcname,  /*PyObject *name,*/
+        py_line,      /*int firstlineno,*/
+        __pyx_empty_bytes  /*PyObject *lnotab*/
+    );
+    Py_DECREF(py_srcfile);
+    Py_DECREF(py_funcname);
+    return py_code;
+bad:
+    Py_XDECREF(py_srcfile);
+    Py_XDECREF(py_funcname);
+    return NULL;
+}
+static void __Pyx_AddTraceback(const char *funcname, int c_line,
+                               int py_line, const char *filename) {
+    PyCodeObject *py_code = 0;
+    PyObject *py_globals = 0;
+    PyFrameObject *py_frame = 0;
+    py_code = __pyx_find_code_object(c_line ? c_line : py_line);
+    if (!py_code) {
+        py_code = __Pyx_CreateCodeObjectForTraceback(
+            funcname, c_line, py_line, filename);
+        if (!py_code) goto bad;
+        __pyx_insert_code_object(c_line ? c_line : py_line, py_code);
+    }
+    py_globals = PyModule_GetDict(__pyx_m);
+    if (!py_globals) goto bad;
+    py_frame = PyFrame_New(
+        PyThreadState_GET(), /*PyThreadState *tstate,*/
+        py_code,             /*PyCodeObject *code,*/
+        py_globals,          /*PyObject *globals,*/
+        0                    /*PyObject *locals*/
+    );
+    if (!py_frame) goto bad;
+    py_frame->f_lineno = py_line;
+    PyTraceBack_Here(py_frame);
+bad:
+    Py_XDECREF(py_code);
+    Py_XDECREF(py_frame);
+}
+
+static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
+    while (t->p) {
+        #if PY_MAJOR_VERSION < 3
+        if (t->is_unicode) {
+            *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL);
+        } else if (t->intern) {
+            *t->p = PyString_InternFromString(t->s);
+        } else {
+            *t->p = PyString_FromStringAndSize(t->s, t->n - 1);
+        }
+        #else  /* Python 3+ has unicode identifiers */
+        if (t->is_unicode | t->is_str) {
+            if (t->intern) {
+                *t->p = PyUnicode_InternFromString(t->s);
+            } else if (t->encoding) {
+                *t->p = PyUnicode_Decode(t->s, t->n - 1, t->encoding, NULL);
+            } else {
+                *t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1);
+            }
+        } else {
+            *t->p = PyBytes_FromStringAndSize(t->s, t->n - 1);
+        }
+        #endif
+        if (!*t->p)
+            return -1;
+        ++t;
+    }
+    return 0;
+}
+
+static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) {
+   int is_true = x == Py_True;
+   if (is_true | (x == Py_False) | (x == Py_None)) return is_true;
+   else return PyObject_IsTrue(x);
+}
+static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x) {
+  PyNumberMethods *m;
+  const char *name = NULL;
+  PyObject *res = NULL;
+#if PY_VERSION_HEX < 0x03000000
+  if (PyInt_Check(x) || PyLong_Check(x))
+#else
+  if (PyLong_Check(x))
+#endif
+    return Py_INCREF(x), x;
+  m = Py_TYPE(x)->tp_as_number;
+#if PY_VERSION_HEX < 0x03000000
+  if (m && m->nb_int) {
+    name = "int";
+    res = PyNumber_Int(x);
+  }
+  else if (m && m->nb_long) {
+    name = "long";
+    res = PyNumber_Long(x);
+  }
+#else
+  if (m && m->nb_int) {
+    name = "int";
+    res = PyNumber_Long(x);
+  }
+#endif
+  if (res) {
+#if PY_VERSION_HEX < 0x03000000
+    if (!PyInt_Check(res) && !PyLong_Check(res)) {
+#else
+    if (!PyLong_Check(res)) {
+#endif
+      PyErr_Format(PyExc_TypeError,
+                   "__%s__ returned non-%s (type %.200s)",
+                   name, name, Py_TYPE(res)->tp_name);
+      Py_DECREF(res);
+      return NULL;
+    }
+  }
+  else if (!PyErr_Occurred()) {
+    PyErr_SetString(PyExc_TypeError,
+                    "an integer is required");
+  }
+  return res;
+}
+static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
+  Py_ssize_t ival;
+  PyObject* x = PyNumber_Index(b);
+  if (!x) return -1;
+  ival = PyInt_AsSsize_t(x);
+  Py_DECREF(x);
+  return ival;
+}
+static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) {
+#if PY_VERSION_HEX < 0x02050000
+   if (ival <= LONG_MAX)
+       return PyInt_FromLong((long)ival);
+   else {
+       unsigned char *bytes = (unsigned char *) &ival;
+       int one = 1; int little = (int)*(unsigned char*)&one;
+       return _PyLong_FromByteArray(bytes, sizeof(size_t), little, 0);
+   }
+#else
+   return PyInt_FromSize_t(ival);
+#endif
+}
+static CYTHON_INLINE size_t __Pyx_PyInt_AsSize_t(PyObject* x) {
+   unsigned PY_LONG_LONG val = __Pyx_PyInt_AsUnsignedLongLong(x);
+   if (unlikely(val == (unsigned PY_LONG_LONG)-1 && PyErr_Occurred())) {
+       return (size_t)-1;
+   } else if (unlikely(val != (unsigned PY_LONG_LONG)(size_t)val)) {
+       PyErr_SetString(PyExc_OverflowError,
+                       "value too large to convert to size_t");
+       return (size_t)-1;
+   }
+   return (size_t)val;
+}
+
+
+#endif /* Py_PYTHON_H */
diff --git a/h5py/h5d.pxd b/h5py/h5d.pxd
new file mode 100644
index 0000000..65bfac4
--- /dev/null
+++ b/h5py/h5d.pxd
@@ -0,0 +1,16 @@
+# This file is part of h5py, a Python interface to the HDF5 library.
+#
+# http://www.h5py.org
+#
+# Copyright 2008-2013 Andrew Collette and contributors
+#
+# License:  Standard 3-clause BSD; see "license.txt" for full license terms
+#           and contributor agreement.
+
+from defs cimport *
+
+from _objects cimport ObjectID
+
+cdef class DatasetID(ObjectID):
+    cdef object _dtype
+
diff --git a/h5py/h5d.pyx b/h5py/h5d.pyx
new file mode 100644
index 0000000..79a7e99
--- /dev/null
+++ b/h5py/h5d.pyx
@@ -0,0 +1,338 @@
+# This file is part of h5py, a Python interface to the HDF5 library.
+#
+# http://www.h5py.org
+#
+# Copyright 2008-2013 Andrew Collette and contributors
+#
+# License:  Standard 3-clause BSD; see "license.txt" for full license terms
+#           and contributor agreement.
+"""
+    Provides access to the low-level HDF5 "H5D" dataset interface.
+"""
+
+# Compile-time imports
+from _objects cimport pdefault
+from numpy cimport ndarray, import_array, PyArray_DATA, NPY_WRITEABLE
+from utils cimport  check_numpy_read, check_numpy_write, \
+                    convert_tuple, emalloc, efree
+from h5t cimport TypeID, typewrap, py_create
+from h5s cimport SpaceID
+from h5p cimport PropID, propwrap
+from _proxy cimport dset_rw
+
+from h5py import _objects
+
+# Initialization
+import_array()
+
+# === Public constants and data structures ====================================
+
+COMPACT     = H5D_COMPACT
+CONTIGUOUS  = H5D_CONTIGUOUS
+CHUNKED     = H5D_CHUNKED
+
+ALLOC_TIME_DEFAULT  = H5D_ALLOC_TIME_DEFAULT
+ALLOC_TIME_LATE     = H5D_ALLOC_TIME_LATE
+ALLOC_TIME_EARLY    = H5D_ALLOC_TIME_EARLY
+ALLOC_TIME_INCR     = H5D_ALLOC_TIME_INCR
+
+SPACE_STATUS_NOT_ALLOCATED  = H5D_SPACE_STATUS_NOT_ALLOCATED
+SPACE_STATUS_PART_ALLOCATED = H5D_SPACE_STATUS_PART_ALLOCATED
+SPACE_STATUS_ALLOCATED      = H5D_SPACE_STATUS_ALLOCATED
+
+FILL_TIME_ALLOC = H5D_FILL_TIME_ALLOC
+FILL_TIME_NEVER = H5D_FILL_TIME_NEVER
+FILL_TIME_IFSET = H5D_FILL_TIME_IFSET
+
+FILL_VALUE_UNDEFINED    = H5D_FILL_VALUE_UNDEFINED
+FILL_VALUE_DEFAULT      = H5D_FILL_VALUE_DEFAULT
+FILL_VALUE_USER_DEFINED = H5D_FILL_VALUE_USER_DEFINED
+
+
+# === Dataset operations ======================================================
+
+def create(ObjectID loc not None, object name, TypeID tid not None,
+               SpaceID space not None, PropID dcpl=None, PropID lcpl=None, PropID dapl = None):
+        """ (objectID loc, STRING name or None, TypeID tid, SpaceID space,
+             PropDCID dcpl=None, PropID lcpl=None) => DatasetID
+
+        Create a new dataset.  If "name" is None, the dataset will be
+        anonymous.
+        """
+        cdef hid_t dsid
+        cdef char* cname = NULL
+        if name is not None:
+            cname = name
+
+        if cname != NULL:
+            dsid = H5Dcreate2(loc.id, cname, tid.id, space.id,
+                     pdefault(lcpl), pdefault(dcpl), pdefault(dapl))
+        else:
+            dsid = H5Dcreate_anon(loc.id, tid.id, space.id,
+                     pdefault(dcpl), pdefault(dapl))
+        return DatasetID.open(dsid)
+
+def open(ObjectID loc not None, char* name):
+    """ (ObjectID loc, STRING name) => DatasetID
+
+        Open an existing dataset attached to a group or file object, by name.
+    """
+    return DatasetID.open(H5Dopen(loc.id, name))
+
+# --- Proxy functions for safe(r) threading -----------------------------------
+
+
+cdef class DatasetID(ObjectID):
+
+    """
+        Represents an HDF5 dataset identifier.
+
+        Objects of this class may be used in any HDF5 function which expects
+        a dataset identifier.  Also, all H5D* functions which take a dataset
+        instance as their first argument are presented as methods of this
+        class.
+
+        Properties:
+        dtype:  Numpy dtype representing the dataset type
+        shape:  Numpy-style shape tuple representing the dataspace
+        rank:   Integer giving dataset rank
+
+        * Hashable: Yes, unless anonymous
+        * Equality: True HDF5 identity if unless anonymous
+    """
+
+    property dtype:
+        """ Numpy dtype object representing the dataset type """
+        def __get__(self):
+            # Dataset type can't change
+            cdef TypeID tid
+            if self._dtype is None:
+                tid = self.get_type()
+                self._dtype = tid.dtype
+            return self._dtype
+
+    property shape:
+        """ Numpy-style shape tuple representing the dataspace """
+        def __get__(self):
+            # Shape can change (DatasetID.extend), so don't cache it
+            cdef SpaceID sid
+            sid = self.get_space()
+            return sid.get_simple_extent_dims()
+
+    property rank:
+        """ Integer giving the dataset rank (0 = scalar) """
+        def __get__(self):
+            cdef SpaceID sid
+            sid = self.get_space()
+            return sid.get_simple_extent_ndims()
+
+
+    def _close(self):
+        """ ()
+
+            Terminate access through this identifier.  You shouldn't have to
+            call this manually; Dataset objects are automatically destroyed
+            when their Python wrappers are freed.
+        """
+        with _objects.registry.lock:
+            H5Dclose(self.id)
+            if not self.valid:
+                del _objects.registry[self.id]
+
+
+    def read(self, SpaceID mspace not None, SpaceID fspace not None,
+                   ndarray arr_obj not None, TypeID mtype=None,
+                   PropID dxpl=None):
+        """ (SpaceID mspace, SpaceID fspace, NDARRAY arr_obj,
+             TypeID mtype=None, PropDXID dxpl=None)
+
+            Read data from an HDF5 dataset into a Numpy array.
+
+            It is your responsibility to ensure that the memory dataspace
+            provided is compatible with the shape of the Numpy array.  Since a
+            wide variety of dataspace configurations are possible, this is not
+            checked.  You can easily crash Python by reading in data from too
+            large a dataspace.
+
+            If a memory datatype is not specified, one will be auto-created
+            based on the array's dtype.
+
+            The provided Numpy array must be writable and C-contiguous.  If
+            this is not the case, ValueError will be raised and the read will
+            fail.  Keyword dxpl may be a dataset transfer property list.
+        """
+        cdef hid_t self_id, mtype_id, mspace_id, fspace_id, plist_id
+        cdef void* data
+        cdef int oldflags
+
+        if mtype is None:
+            mtype = py_create(arr_obj.dtype)
+        check_numpy_write(arr_obj, -1)
+
+        self_id = self.id
+        mtype_id = mtype.id
+        mspace_id = mspace.id
+        fspace_id = fspace.id
+        plist_id = pdefault(dxpl)
+        data = PyArray_DATA(arr_obj)
+
+        dset_rw(self_id, mtype_id, mspace_id, fspace_id, plist_id, data, 1)
+
+    def write(self, SpaceID mspace not None, SpaceID fspace not None,
+                    ndarray arr_obj not None, TypeID mtype=None,
+                    PropID dxpl=None):
+        """ (SpaceID mspace, SpaceID fspace, NDARRAY arr_obj,
+             TypeID mtype=None, PropDXID dxpl=None)
+
+            Write data from a Numpy array to an HDF5 dataset. Keyword dxpl may
+            be a dataset transfer property list.
+
+            It is your responsibility to ensure that the memory dataspace
+            provided is compatible with the shape of the Numpy array.  Since a
+            wide variety of dataspace configurations are possible, this is not
+            checked.  You can easily crash Python by writing data from too
+            large a dataspace.
+
+            If a memory datatype is not specified, one will be auto-created
+            based on the array's dtype.
+
+            The provided Numpy array must be C-contiguous.  If this is not the
+            case, ValueError will be raised and the read will fail.
+        """
+        cdef hid_t self_id, mtype_id, mspace_id, fspace_id, plist_id
+        cdef void* data
+        cdef int oldflags
+
+        if mtype is None:
+            mtype = py_create(arr_obj.dtype)
+        check_numpy_read(arr_obj, -1)
+
+        self_id = self.id
+        mtype_id = mtype.id
+        mspace_id = mspace.id
+        fspace_id = fspace.id
+        plist_id = pdefault(dxpl)
+        data = PyArray_DATA(arr_obj)
+
+        dset_rw(self_id, mtype_id, mspace_id, fspace_id, plist_id, data, 0)
+
+    def extend(self, tuple shape):
+        """ (TUPLE shape)
+
+            Extend the given dataset so it's at least as big as "shape".  Note
+            that a dataset may only be extended up to the maximum dimensions of
+            its dataspace, which are fixed when the dataset is created.
+        """
+        cdef int rank
+        cdef hid_t space_id = 0
+        cdef hsize_t* dims = NULL
+
+        try:
+            space_id = H5Dget_space(self.id)
+            rank = H5Sget_simple_extent_ndims(space_id)
+
+            if len(shape) != rank:
+                raise TypeError("New shape length (%d) must match dataset rank (%d)" % (len(shape), rank))
+
+            dims = <hsize_t*>emalloc(sizeof(hsize_t)*rank)
+            convert_tuple(shape, dims, rank)
+            H5Dextend(self.id, dims)
+
+        finally:
+            efree(dims)
+            if space_id:
+                H5Sclose(space_id)
+
+
+    def set_extent(self, tuple shape):
+        """ (TUPLE shape)
+
+            Set the size of the dataspace to match the given shape.  If the new
+            size is larger in any dimension, it must be compatible with the
+            maximum dataspace size.
+        """
+        cdef int rank
+        cdef hid_t space_id = 0
+        cdef hsize_t* dims = NULL
+
+        try:
+            space_id = H5Dget_space(self.id)
+            rank = H5Sget_simple_extent_ndims(space_id)
+
+            if len(shape) != rank:
+                raise TypeError("New shape length (%d) must match dataset rank (%d)" % (len(shape), rank))
+
+            dims = <hsize_t*>emalloc(sizeof(hsize_t)*rank)
+            convert_tuple(shape, dims, rank)
+            H5Dset_extent(self.id, dims)
+
+        finally:
+            efree(dims)
+            if space_id:
+                H5Sclose(space_id)
+
+
+
+    def get_space(self):
+        """ () => SpaceID
+
+            Create and return a new copy of the dataspace for this dataset.
+        """
+        return SpaceID.open(H5Dget_space(self.id))
+
+
+    def get_space_status(self):
+        """ () => INT space_status_code
+
+            Determine if space has been allocated for a dataset.
+            Return value is one of:
+
+            * SPACE_STATUS_NOT_ALLOCATED
+            * SPACE_STATUS_PART_ALLOCATED
+            * SPACE_STATUS_ALLOCATED
+        """
+        cdef H5D_space_status_t status
+        H5Dget_space_status(self.id, &status)
+        return <int>status
+
+
+    def get_type(self):
+        """ () => TypeID
+
+            Create and return a new copy of the datatype for this dataset.
+        """
+        return typewrap(H5Dget_type(self.id))
+
+
+    def get_create_plist(self):
+        """ () => PropDCID
+
+            Create an return a new copy of the dataset creation property list
+            used when this dataset was created.
+        """
+        return propwrap(H5Dget_create_plist(self.id))
+
+
+    def get_offset(self):
+        """ () => LONG offset or None
+
+            Get the offset of this dataset in the file, in bytes, or None if
+            it doesn't have one.  This is always the case for datasets which
+            use chunked storage, compact datasets, and datasets for which space
+            has not yet been allocated in the file.
+        """
+        cdef haddr_t offset
+        offset = H5Dget_offset(self.id)
+        if offset == HADDR_UNDEF:
+            return None
+        return offset
+
+
+    def get_storage_size(self):
+        """ () => LONG storage_size
+
+            Determine the amount of file space required for a dataset.  Note
+            this only counts the space which has actually been allocated; it
+            may even be zero.
+        """
+        return H5Dget_storage_size(self.id)
diff --git a/h5py/h5ds.c b/h5py/h5ds.c
new file mode 100644
index 0000000..08cc3c1
--- /dev/null
+++ b/h5py/h5ds.c
@@ -0,0 +1,4142 @@
+/* Generated by Cython 0.18 on Mon Dec  9 16:00:33 2013 */
+
+#define PY_SSIZE_T_CLEAN
+#include "Python.h"
+#ifndef Py_PYTHON_H
+    #error Python headers needed to compile C extensions, please install development version of Python.
+#elif PY_VERSION_HEX < 0x02040000
+    #error Cython requires Python 2.4+.
+#else
+#include <stddef.h> /* For offsetof */
+#ifndef offsetof
+#define offsetof(type, member) ( (size_t) & ((type*)0) -> member )
+#endif
+#if !defined(WIN32) && !defined(MS_WINDOWS)
+  #ifndef __stdcall
+    #define __stdcall
+  #endif
+  #ifndef __cdecl
+    #define __cdecl
+  #endif
+  #ifndef __fastcall
+    #define __fastcall
+  #endif
+#endif
+#ifndef DL_IMPORT
+  #define DL_IMPORT(t) t
+#endif
+#ifndef DL_EXPORT
+  #define DL_EXPORT(t) t
+#endif
+#ifndef PY_LONG_LONG
+  #define PY_LONG_LONG LONG_LONG
+#endif
+#ifndef Py_HUGE_VAL
+  #define Py_HUGE_VAL HUGE_VAL
+#endif
+#ifdef PYPY_VERSION
+#define CYTHON_COMPILING_IN_PYPY 1
+#define CYTHON_COMPILING_IN_CPYTHON 0
+#else
+#define CYTHON_COMPILING_IN_PYPY 0
+#define CYTHON_COMPILING_IN_CPYTHON 1
+#endif
+#if PY_VERSION_HEX < 0x02050000
+  typedef int Py_ssize_t;
+  #define PY_SSIZE_T_MAX INT_MAX
+  #define PY_SSIZE_T_MIN INT_MIN
+  #define PY_FORMAT_SIZE_T ""
+  #define CYTHON_FORMAT_SSIZE_T ""
+  #define PyInt_FromSsize_t(z) PyInt_FromLong(z)
+  #define PyInt_AsSsize_t(o)   __Pyx_PyInt_AsInt(o)
+  #define PyNumber_Index(o)    ((PyNumber_Check(o) && !PyFloat_Check(o)) ? PyNumber_Int(o) : \
+                                (PyErr_Format(PyExc_TypeError, \
+                                              "expected index value, got %.200s", Py_TYPE(o)->tp_name), \
+                                 (PyObject*)0))
+  #define __Pyx_PyIndex_Check(o) (PyNumber_Check(o) && !PyFloat_Check(o) && \
+                                  !PyComplex_Check(o))
+  #define PyIndex_Check __Pyx_PyIndex_Check
+  #define PyErr_WarnEx(category, message, stacklevel) PyErr_Warn(category, message)
+  #define __PYX_BUILD_PY_SSIZE_T "i"
+#else
+  #define __PYX_BUILD_PY_SSIZE_T "n"
+  #define CYTHON_FORMAT_SSIZE_T "z"
+  #define __Pyx_PyIndex_Check PyIndex_Check
+#endif
+#if PY_VERSION_HEX < 0x02060000
+  #define Py_REFCNT(ob) (((PyObject*)(ob))->ob_refcnt)
+  #define Py_TYPE(ob)   (((PyObject*)(ob))->ob_type)
+  #define Py_SIZE(ob)   (((PyVarObject*)(ob))->ob_size)
+  #define PyVarObject_HEAD_INIT(type, size) \
+          PyObject_HEAD_INIT(type) size,
+  #define PyType_Modified(t)
+  typedef struct {
+     void *buf;
+     PyObject *obj;
+     Py_ssize_t len;
+     Py_ssize_t itemsize;
+     int readonly;
+     int ndim;
+     char *format;
+     Py_ssize_t *shape;
+     Py_ssize_t *strides;
+     Py_ssize_t *suboffsets;
+     void *internal;
+  } Py_buffer;
+  #define PyBUF_SIMPLE 0
+  #define PyBUF_WRITABLE 0x0001
+  #define PyBUF_FORMAT 0x0004
+  #define PyBUF_ND 0x0008
+  #define PyBUF_STRIDES (0x0010 | PyBUF_ND)
+  #define PyBUF_C_CONTIGUOUS (0x0020 | PyBUF_STRIDES)
+  #define PyBUF_F_CONTIGUOUS (0x0040 | PyBUF_STRIDES)
+  #define PyBUF_ANY_CONTIGUOUS (0x0080 | PyBUF_STRIDES)
+  #define PyBUF_INDIRECT (0x0100 | PyBUF_STRIDES)
+  #define PyBUF_RECORDS (PyBUF_STRIDES | PyBUF_FORMAT | PyBUF_WRITABLE)
+  #define PyBUF_FULL (PyBUF_INDIRECT | PyBUF_FORMAT | PyBUF_WRITABLE)
+  typedef int (*getbufferproc)(PyObject *, Py_buffer *, int);
+  typedef void (*releasebufferproc)(PyObject *, Py_buffer *);
+#endif
+#if PY_MAJOR_VERSION < 3
+  #define __Pyx_BUILTIN_MODULE_NAME "__builtin__"
+  #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) \
+          PyCode_New(a, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
+#else
+  #define __Pyx_BUILTIN_MODULE_NAME "builtins"
+  #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) \
+          PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
+#endif
+#if PY_MAJOR_VERSION < 3 && PY_MINOR_VERSION < 6
+  #define PyUnicode_FromString(s) PyUnicode_Decode(s, strlen(s), "UTF-8", "strict")
+#endif
+#if PY_MAJOR_VERSION >= 3
+  #define Py_TPFLAGS_CHECKTYPES 0
+  #define Py_TPFLAGS_HAVE_INDEX 0
+#endif
+#if (PY_VERSION_HEX < 0x02060000) || (PY_MAJOR_VERSION >= 3)
+  #define Py_TPFLAGS_HAVE_NEWBUFFER 0
+#endif
+#if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND)
+  #define CYTHON_PEP393_ENABLED 1
+  #define __Pyx_PyUnicode_READY(op)       (likely(PyUnicode_IS_READY(op)) ? \
+                                              0 : _PyUnicode_Ready((PyObject *)(op)))
+  #define __Pyx_PyUnicode_GET_LENGTH(u)   PyUnicode_GET_LENGTH(u)
+  #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i)
+  #define __Pyx_PyUnicode_READ(k, d, i)   PyUnicode_READ(k, d, i)
+#else
+  #define CYTHON_PEP393_ENABLED 0
+  #define __Pyx_PyUnicode_READY(op)       (0)
+  #define __Pyx_PyUnicode_GET_LENGTH(u)   PyUnicode_GET_SIZE(u)
+  #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i]))
+  #define __Pyx_PyUnicode_READ(k, d, i)   ((k=k), (Py_UCS4)(((Py_UNICODE*)d)[i]))
+#endif
+#if PY_MAJOR_VERSION >= 3
+  #define PyBaseString_Type            PyUnicode_Type
+  #define PyStringObject               PyUnicodeObject
+  #define PyString_Type                PyUnicode_Type
+  #define PyString_Check               PyUnicode_Check
+  #define PyString_CheckExact          PyUnicode_CheckExact
+#endif
+#if PY_VERSION_HEX < 0x02060000
+  #define PyBytesObject                PyStringObject
+  #define PyBytes_Type                 PyString_Type
+  #define PyBytes_Check                PyString_Check
+  #define PyBytes_CheckExact           PyString_CheckExact
+  #define PyBytes_FromString           PyString_FromString
+  #define PyBytes_FromStringAndSize    PyString_FromStringAndSize
+  #define PyBytes_FromFormat           PyString_FromFormat
+  #define PyBytes_DecodeEscape         PyString_DecodeEscape
+  #define PyBytes_AsString             PyString_AsString
+  #define PyBytes_AsStringAndSize      PyString_AsStringAndSize
+  #define PyBytes_Size                 PyString_Size
+  #define PyBytes_AS_STRING            PyString_AS_STRING
+  #define PyBytes_GET_SIZE             PyString_GET_SIZE
+  #define PyBytes_Repr                 PyString_Repr
+  #define PyBytes_Concat               PyString_Concat
+  #define PyBytes_ConcatAndDel         PyString_ConcatAndDel
+#endif
+#if PY_VERSION_HEX < 0x02060000
+  #define PySet_Check(obj)             PyObject_TypeCheck(obj, &PySet_Type)
+  #define PyFrozenSet_Check(obj)       PyObject_TypeCheck(obj, &PyFrozenSet_Type)
+#endif
+#ifndef PySet_CheckExact
+  #define PySet_CheckExact(obj)        (Py_TYPE(obj) == &PySet_Type)
+#endif
+#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type)
+#if PY_MAJOR_VERSION >= 3
+  #define PyIntObject                  PyLongObject
+  #define PyInt_Type                   PyLong_Type
+  #define PyInt_Check(op)              PyLong_Check(op)
+  #define PyInt_CheckExact(op)         PyLong_CheckExact(op)
+  #define PyInt_FromString             PyLong_FromString
+  #define PyInt_FromUnicode            PyLong_FromUnicode
+  #define PyInt_FromLong               PyLong_FromLong
+  #define PyInt_FromSize_t             PyLong_FromSize_t
+  #define PyInt_FromSsize_t            PyLong_FromSsize_t
+  #define PyInt_AsLong                 PyLong_AsLong
+  #define PyInt_AS_LONG                PyLong_AS_LONG
+  #define PyInt_AsSsize_t              PyLong_AsSsize_t
+  #define PyInt_AsUnsignedLongMask     PyLong_AsUnsignedLongMask
+  #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask
+#endif
+#if PY_MAJOR_VERSION >= 3
+  #define PyBoolObject                 PyLongObject
+#endif
+#if PY_VERSION_HEX < 0x03020000
+  typedef long Py_hash_t;
+  #define __Pyx_PyInt_FromHash_t PyInt_FromLong
+  #define __Pyx_PyInt_AsHash_t   PyInt_AsLong
+#else
+  #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t
+  #define __Pyx_PyInt_AsHash_t   PyInt_AsSsize_t
+#endif
+#if (PY_MAJOR_VERSION < 3) || (PY_VERSION_HEX >= 0x03010300)
+  #define __Pyx_PySequence_GetSlice(obj, a, b) PySequence_GetSlice(obj, a, b)
+  #define __Pyx_PySequence_SetSlice(obj, a, b, value) PySequence_SetSlice(obj, a, b, value)
+  #define __Pyx_PySequence_DelSlice(obj, a, b) PySequence_DelSlice(obj, a, b)
+#else
+  #define __Pyx_PySequence_GetSlice(obj, a, b) (unlikely(!(obj)) ? \
+        (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), (PyObject*)0) : \
+        (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_GetSlice(obj, a, b)) : \
+            (PyErr_Format(PyExc_TypeError, "'%.200s' object is unsliceable", (obj)->ob_type->tp_name), (PyObject*)0)))
+  #define __Pyx_PySequence_SetSlice(obj, a, b, value) (unlikely(!(obj)) ? \
+        (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), -1) : \
+        (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_SetSlice(obj, a, b, value)) : \
+            (PyErr_Format(PyExc_TypeError, "'%.200s' object doesn't support slice assignment", (obj)->ob_type->tp_name), -1)))
+  #define __Pyx_PySequence_DelSlice(obj, a, b) (unlikely(!(obj)) ? \
+        (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), -1) : \
+        (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_DelSlice(obj, a, b)) : \
+            (PyErr_Format(PyExc_TypeError, "'%.200s' object doesn't support slice deletion", (obj)->ob_type->tp_name), -1)))
+#endif
+#if PY_MAJOR_VERSION >= 3
+  #define PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, self) : PyInstanceMethod_New(func))
+#endif
+#if PY_VERSION_HEX < 0x02050000
+  #define __Pyx_GetAttrString(o,n)   PyObject_GetAttrString((o),((char *)(n)))
+  #define __Pyx_SetAttrString(o,n,a) PyObject_SetAttrString((o),((char *)(n)),(a))
+  #define __Pyx_DelAttrString(o,n)   PyObject_DelAttrString((o),((char *)(n)))
+#else
+  #define __Pyx_GetAttrString(o,n)   PyObject_GetAttrString((o),(n))
+  #define __Pyx_SetAttrString(o,n,a) PyObject_SetAttrString((o),(n),(a))
+  #define __Pyx_DelAttrString(o,n)   PyObject_DelAttrString((o),(n))
+#endif
+#if PY_VERSION_HEX < 0x02050000
+  #define __Pyx_NAMESTR(n) ((char *)(n))
+  #define __Pyx_DOCSTR(n)  ((char *)(n))
+#else
+  #define __Pyx_NAMESTR(n) (n)
+  #define __Pyx_DOCSTR(n)  (n)
+#endif
+
+
+#if PY_MAJOR_VERSION >= 3
+  #define __Pyx_PyNumber_Divide(x,y)         PyNumber_TrueDivide(x,y)
+  #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceTrueDivide(x,y)
+#else
+  #define __Pyx_PyNumber_Divide(x,y)         PyNumber_Divide(x,y)
+  #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceDivide(x,y)
+#endif
+
+#ifndef __PYX_EXTERN_C
+  #ifdef __cplusplus
+    #define __PYX_EXTERN_C extern "C"
+  #else
+    #define __PYX_EXTERN_C extern
+  #endif
+#endif
+
+#if defined(WIN32) || defined(MS_WINDOWS)
+#define _USE_MATH_DEFINES
+#endif
+#include <math.h>
+#define __PYX_HAVE__h5py__h5ds
+#define __PYX_HAVE_API__h5py__h5ds
+#include "stdlib.h"
+#include "string.h"
+#include "time.h"
+#include "unistd.h"
+#include "stdint.h"
+#include "api_compat.h"
+#include "lzf_filter.h"
+#include "hdf5.h"
+#include "H5Cpublic.h"
+#include "hdf5_hl.h"
+#include "numpy/arrayobject.h"
+#ifdef _OPENMP
+#include <omp.h>
+#endif /* _OPENMP */
+
+#ifdef PYREX_WITHOUT_ASSERTIONS
+#define CYTHON_WITHOUT_ASSERTIONS
+#endif
+
+#ifndef CYTHON_INLINE
+  #if defined(__GNUC__)
+    #define CYTHON_INLINE __inline__
+  #elif defined(_MSC_VER)
+    #define CYTHON_INLINE __inline
+  #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+    #define CYTHON_INLINE inline
+  #else
+    #define CYTHON_INLINE
+  #endif
+#endif
+#ifndef CYTHON_UNUSED
+# if defined(__GNUC__)
+#   if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
+#     define CYTHON_UNUSED __attribute__ ((__unused__))
+#   else
+#     define CYTHON_UNUSED
+#   endif
+# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER))
+#   define CYTHON_UNUSED __attribute__ ((__unused__))
+# else
+#   define CYTHON_UNUSED
+# endif
+#endif
+typedef struct {PyObject **p; char *s; const long n; const char* encoding; const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; /*proto*/
+
+#define __Pyx_PyBytes_FromUString(s) PyBytes_FromString((char*)s)
+#define __Pyx_PyBytes_AsUString(s)   ((unsigned char*) PyBytes_AsString(s))
+#define __Pyx_Owned_Py_None(b) (Py_INCREF(Py_None), Py_None)
+#define __Pyx_PyBool_FromLong(b) ((b) ? (Py_INCREF(Py_True), Py_True) : (Py_INCREF(Py_False), Py_False))
+static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*);
+static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x);
+static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*);
+static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t);
+static CYTHON_INLINE size_t __Pyx_PyInt_AsSize_t(PyObject*);
+#if CYTHON_COMPILING_IN_CPYTHON
+#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x))
+#else
+#define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x)
+#endif
+#define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x))
+
+
+#ifdef __GNUC__
+  /* Test for GCC > 2.95 */
+  #if __GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))
+    #define likely(x)   __builtin_expect(!!(x), 1)
+    #define unlikely(x) __builtin_expect(!!(x), 0)
+  #else /* __GNUC__ > 2 ... */
+    #define likely(x)   (x)
+    #define unlikely(x) (x)
+  #endif /* __GNUC__ > 2 ... */
+#else /* __GNUC__ */
+  #define likely(x)   (x)
+  #define unlikely(x) (x)
+#endif /* __GNUC__ */
+    
+static PyObject *__pyx_m;
+static PyObject *__pyx_b;
+static PyObject *__pyx_empty_tuple;
+static PyObject *__pyx_empty_bytes;
+static int __pyx_lineno;
+static int __pyx_clineno = 0;
+static const char * __pyx_cfilenm= __FILE__;
+static const char *__pyx_filename;
+
+
+static const char *__pyx_f[] = {
+  "h5ds.pyx",
+  "_objects.pxd",
+  "h5d.pxd",
+  "numpy.pxd",
+};
+
+/*--- Type declarations ---*/
+struct __pyx_obj_4h5py_8_objects_ObjectID;
+struct __pyx_obj_4h5py_3h5d_DatasetID;
+struct __pyx_obj_4h5py_4h5ds__DimensionScaleVisitor;
+struct __pyx_opt_args_4h5py_5utils_check_numpy_read;
+struct __pyx_opt_args_4h5py_5utils_check_numpy_write;
+
+/* "utils.pxd":17
+ * cdef void efree(void* ptr)
+ * 
+ * cpdef int check_numpy_read(ndarray arr, hid_t space_id=*) except -1             # <<<<<<<<<<<<<<
+ * cpdef int check_numpy_write(ndarray arr, hid_t space_id=*) except -1
+ * 
+ */
+struct __pyx_opt_args_4h5py_5utils_check_numpy_read {
+  int __pyx_n;
+  hid_t space_id;
+};
+
+/* "utils.pxd":18
+ * 
+ * cpdef int check_numpy_read(ndarray arr, hid_t space_id=*) except -1
+ * cpdef int check_numpy_write(ndarray arr, hid_t space_id=*) except -1             # <<<<<<<<<<<<<<
+ * 
+ * cdef int convert_tuple(object tuple, hsize_t *dims, hsize_t rank) except -1
+ */
+struct __pyx_opt_args_4h5py_5utils_check_numpy_write {
+  int __pyx_n;
+  hid_t space_id;
+};
+
+/* "_objects.pxd":12
+ * from defs cimport *
+ * 
+ * cdef class ObjectID:             # <<<<<<<<<<<<<<
+ * 
+ *     cdef object __weakref__
+ */
+struct __pyx_obj_4h5py_8_objects_ObjectID {
+  PyObject_HEAD
+  PyObject *__weakref__;
+  hid_t id;
+  int locked;
+  PyObject *_hash;
+};
+
+
+/* "h5d.pxd":14
+ * from _objects cimport ObjectID
+ * 
+ * cdef class DatasetID(ObjectID):             # <<<<<<<<<<<<<<
+ *     cdef object _dtype
+ * 
+ */
+struct __pyx_obj_4h5py_3h5d_DatasetID {
+  struct __pyx_obj_4h5py_8_objects_ObjectID __pyx_base;
+  PyObject *_dtype;
+};
+
+
+/* "h5py/h5ds.pyx":83
+ * 
+ * 
+ * cdef class _DimensionScaleVisitor:             # <<<<<<<<<<<<<<
+ * 
+ *     cdef object func
+ */
+struct __pyx_obj_4h5py_4h5ds__DimensionScaleVisitor {
+  PyObject_HEAD
+  PyObject *func;
+  PyObject *retval;
+};
+
+#ifndef CYTHON_REFNANNY
+  #define CYTHON_REFNANNY 0
+#endif
+#if CYTHON_REFNANNY
+  typedef struct {
+    void (*INCREF)(void*, PyObject*, int);
+    void (*DECREF)(void*, PyObject*, int);
+    void (*GOTREF)(void*, PyObject*, int);
+    void (*GIVEREF)(void*, PyObject*, int);
+    void* (*SetupContext)(const char*, int, const char*);
+    void (*FinishContext)(void**);
+  } __Pyx_RefNannyAPIStruct;
+  static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL;
+  static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); /*proto*/
+  #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL;
+#ifdef WITH_THREAD
+  #define __Pyx_RefNannySetupContext(name, acquire_gil) \
+          if (acquire_gil) { \
+              PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); \
+              __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__); \
+              PyGILState_Release(__pyx_gilstate_save); \
+          } else { \
+              __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__); \
+          }
+#else
+  #define __Pyx_RefNannySetupContext(name, acquire_gil) \
+          __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__)
+#endif
+  #define __Pyx_RefNannyFinishContext() \
+          __Pyx_RefNanny->FinishContext(&__pyx_refnanny)
+  #define __Pyx_INCREF(r)  __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_DECREF(r)  __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_GOTREF(r)  __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_XINCREF(r)  do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0)
+  #define __Pyx_XDECREF(r)  do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0)
+  #define __Pyx_XGOTREF(r)  do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0)
+  #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0)
+#else
+  #define __Pyx_RefNannyDeclarations
+  #define __Pyx_RefNannySetupContext(name, acquire_gil)
+  #define __Pyx_RefNannyFinishContext()
+  #define __Pyx_INCREF(r) Py_INCREF(r)
+  #define __Pyx_DECREF(r) Py_DECREF(r)
+  #define __Pyx_GOTREF(r)
+  #define __Pyx_GIVEREF(r)
+  #define __Pyx_XINCREF(r) Py_XINCREF(r)
+  #define __Pyx_XDECREF(r) Py_XDECREF(r)
+  #define __Pyx_XGOTREF(r)
+  #define __Pyx_XGIVEREF(r)
+#endif /* CYTHON_REFNANNY */
+#define __Pyx_CLEAR(r)    do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0)
+#define __Pyx_XCLEAR(r)   do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0)
+
+static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name); /*proto*/
+
+static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name); /*proto*/
+
+static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[], \
+    PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args, \
+    const char* function_name); /*proto*/
+
+static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact,
+    Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); /*proto*/
+
+static int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, int none_allowed,
+    const char *name, int exact); /*proto*/
+
+static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb); /*proto*/
+static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb); /*proto*/
+
+static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause); /*proto*/
+
+static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_hid_t(hid_t);
+
+static CYTHON_INLINE unsigned char __Pyx_PyInt_AsUnsignedChar(PyObject *);
+
+static CYTHON_INLINE unsigned short __Pyx_PyInt_AsUnsignedShort(PyObject *);
+
+static CYTHON_INLINE unsigned int __Pyx_PyInt_AsUnsignedInt(PyObject *);
+
+static CYTHON_INLINE char __Pyx_PyInt_AsChar(PyObject *);
+
+static CYTHON_INLINE short __Pyx_PyInt_AsShort(PyObject *);
+
+static CYTHON_INLINE int __Pyx_PyInt_AsInt(PyObject *);
+
+static CYTHON_INLINE signed char __Pyx_PyInt_AsSignedChar(PyObject *);
+
+static CYTHON_INLINE signed short __Pyx_PyInt_AsSignedShort(PyObject *);
+
+static CYTHON_INLINE signed int __Pyx_PyInt_AsSignedInt(PyObject *);
+
+static CYTHON_INLINE int __Pyx_PyInt_AsLongDouble(PyObject *);
+
+static CYTHON_INLINE unsigned long __Pyx_PyInt_AsUnsignedLong(PyObject *);
+
+static CYTHON_INLINE unsigned PY_LONG_LONG __Pyx_PyInt_AsUnsignedLongLong(PyObject *);
+
+static CYTHON_INLINE long __Pyx_PyInt_AsLong(PyObject *);
+
+static CYTHON_INLINE PY_LONG_LONG __Pyx_PyInt_AsLongLong(PyObject *);
+
+static CYTHON_INLINE signed long __Pyx_PyInt_AsSignedLong(PyObject *);
+
+static CYTHON_INLINE signed PY_LONG_LONG __Pyx_PyInt_AsSignedLongLong(PyObject *);
+
+static int __Pyx_check_binary_version(void);
+
+#if !defined(__Pyx_PyIdentifier_FromString)
+#if PY_MAJOR_VERSION < 3
+  #define __Pyx_PyIdentifier_FromString(s) PyString_FromString(s)
+#else
+  #define __Pyx_PyIdentifier_FromString(s) PyUnicode_FromString(s)
+#endif
+#endif
+
+static PyObject *__Pyx_ImportModule(const char *name); /*proto*/
+
+static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name, size_t size, int strict);  /*proto*/
+
+static int __Pyx_ImportFunction(PyObject *module, const char *funcname, void (**f)(void), const char *sig); /*proto*/
+
+typedef struct {
+    int code_line;
+    PyCodeObject* code_object;
+} __Pyx_CodeObjectCacheEntry;
+struct __Pyx_CodeObjectCache {
+    int count;
+    int max_count;
+    __Pyx_CodeObjectCacheEntry* entries;
+};
+static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL};
+static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line);
+static PyCodeObject *__pyx_find_code_object(int code_line);
+static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object);
+
+static void __Pyx_AddTraceback(const char *funcname, int c_line,
+                               int py_line, const char *filename); /*proto*/
+
+static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); /*proto*/
+
+
+/* Module declarations from 'h5py.api_types_ext' */
+
+/* Module declarations from 'h5py.api_types_hdf5' */
+
+/* Module declarations from 'h5py.defs' */
+static int (*__pyx_f_4h5py_4defs_H5Iinc_ref)(hid_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5DSattach_scale)(hid_t, hid_t, unsigned int); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5DSdetach_scale)(hid_t, hid_t, unsigned int); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5DSset_scale)(hid_t, char *); /*proto*/
+static int (*__pyx_f_4h5py_4defs_H5DSget_num_scales)(hid_t, unsigned int); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5DSset_label)(hid_t, unsigned int, char *); /*proto*/
+static Py_ssize_t (*__pyx_f_4h5py_4defs_H5DSget_label)(hid_t, unsigned int, char *, size_t); /*proto*/
+static Py_ssize_t (*__pyx_f_4h5py_4defs_H5DSget_scale_name)(hid_t, char *, size_t); /*proto*/
+static htri_t (*__pyx_f_4h5py_4defs_H5DSis_scale)(hid_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5DSiterate_scales)(hid_t, unsigned int, int *, H5DS_iterate_t, void *); /*proto*/
+static htri_t (*__pyx_f_4h5py_4defs_H5DSis_attached)(hid_t, hid_t, unsigned int); /*proto*/
+
+/* Module declarations from 'h5py._objects' */
+static PyTypeObject *__pyx_ptype_4h5py_8_objects_ObjectID = 0;
+
+/* Module declarations from 'h5py.h5d' */
+static PyTypeObject *__pyx_ptype_4h5py_3h5d_DatasetID = 0;
+
+/* Module declarations from 'numpy' */
+
+/* Module declarations from 'h5py.numpy' */
+static PyTypeObject *__pyx_ptype_4h5py_5numpy_dtype = 0;
+static PyTypeObject *__pyx_ptype_4h5py_5numpy_ndarray = 0;
+
+/* Module declarations from 'h5py.utils' */
+static void *(*__pyx_f_4h5py_5utils_emalloc)(size_t); /*proto*/
+static void (*__pyx_f_4h5py_5utils_efree)(void *); /*proto*/
+
+/* Module declarations from 'h5py.h5ds' */
+static PyTypeObject *__pyx_ptype_4h5py_4h5ds__DimensionScaleVisitor = 0;
+static herr_t __pyx_f_4h5py_4h5ds_cb_ds_iter(hid_t, unsigned int, hid_t, void *); /*proto*/
+#define __Pyx_MODULE_NAME "h5py.h5ds"
+int __pyx_module_is_main_h5py__h5ds = 0;
+
+/* Implementation of 'h5py.h5ds' */
+static PyObject *__pyx_builtin_ValueError;
+static PyObject *__pyx_pf_4h5py_4h5ds_set_scale(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_3h5d_DatasetID *__pyx_v_dset, char *__pyx_v_dimname); /* proto */
+static PyObject *__pyx_pf_4h5py_4h5ds_2is_scale(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_3h5d_DatasetID *__pyx_v_dset); /* proto */
+static PyObject *__pyx_pf_4h5py_4h5ds_4attach_scale(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_3h5d_DatasetID *__pyx_v_dset, struct __pyx_obj_4h5py_3h5d_DatasetID *__pyx_v_dscale, unsigned int __pyx_v_idx); /* proto */
+static PyObject *__pyx_pf_4h5py_4h5ds_6is_attached(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_3h5d_DatasetID *__pyx_v_dset, struct __pyx_obj_4h5py_3h5d_DatasetID *__pyx_v_dscale, unsigned int __pyx_v_idx); /* proto */
+static PyObject *__pyx_pf_4h5py_4h5ds_8detach_scale(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_3h5d_DatasetID *__pyx_v_dset, struct __pyx_obj_4h5py_3h5d_DatasetID *__pyx_v_dscale, unsigned int __pyx_v_idx); /* proto */
+static PyObject *__pyx_pf_4h5py_4h5ds_10get_num_scales(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_3h5d_DatasetID *__pyx_v_dset, unsigned int __pyx_v_dim); /* proto */
+static PyObject *__pyx_pf_4h5py_4h5ds_12set_label(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_3h5d_DatasetID *__pyx_v_dset, unsigned int __pyx_v_idx, char *__pyx_v_label); /* proto */
+static PyObject *__pyx_pf_4h5py_4h5ds_14get_label(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_3h5d_DatasetID *__pyx_v_dset, unsigned int __pyx_v_idx); /* proto */
+static PyObject *__pyx_pf_4h5py_4h5ds_16get_scale_name(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_3h5d_DatasetID *__pyx_v_dscale); /* proto */
+static int __pyx_pf_4h5py_4h5ds_22_DimensionScaleVisitor___init__(struct __pyx_obj_4h5py_4h5ds__DimensionScaleVisitor *__pyx_v_self, PyObject *__pyx_v_func); /* proto */
+static PyObject *__pyx_pf_4h5py_4h5ds_18iterate(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_3h5d_DatasetID *__pyx_v_dset, unsigned int __pyx_v_dim, PyObject *__pyx_v_func, int __pyx_v_startidx); /* proto */
+static char __pyx_k_1[] = "";
+static char __pyx_k_2[] = "Starting index must be non-negative";
+static char __pyx_k_4[] = "\n    Low-level HDF5 \"H5G\" group interface.\n";
+static char __pyx_k_7[] = "/home/computer/h5py/h5py/h5ds.pyx";
+static char __pyx_k_8[] = "h5py.h5ds";
+static char __pyx_k__i[] = "i";
+static char __pyx_k__dim[] = "dim";
+static char __pyx_k__idx[] = "idx";
+static char __pyx_k__vis[] = "vis";
+static char __pyx_k__dset[] = "dset";
+static char __pyx_k__func[] = "func";
+static char __pyx_k__name[] = "name";
+static char __pyx_k__open[] = "open";
+static char __pyx_k__size[] = "size";
+static char __pyx_k__label[] = "label";
+static char __pyx_k__pname[] = "pname";
+static char __pyx_k__dscale[] = "dscale";
+static char __pyx_k__plabel[] = "plabel";
+static char __pyx_k__dimname[] = "dimname";
+static char __pyx_k__iterate[] = "iterate";
+static char __pyx_k__namelen[] = "namelen";
+static char __pyx_k____main__[] = "__main__";
+static char __pyx_k____test__[] = "__test__";
+static char __pyx_k__is_scale[] = "is_scale";
+static char __pyx_k__startidx[] = "startidx";
+static char __pyx_k__get_label[] = "get_label";
+static char __pyx_k__set_label[] = "set_label";
+static char __pyx_k__set_scale[] = "set_scale";
+static char __pyx_k__ValueError[] = "ValueError";
+static char __pyx_k__is_attached[] = "is_attached";
+static char __pyx_k__attach_scale[] = "attach_scale";
+static char __pyx_k__detach_scale[] = "detach_scale";
+static char __pyx_k__get_num_scales[] = "get_num_scales";
+static char __pyx_k__get_scale_name[] = "get_scale_name";
+static PyObject *__pyx_kp_b_1;
+static PyObject *__pyx_kp_s_2;
+static PyObject *__pyx_kp_s_7;
+static PyObject *__pyx_n_s_8;
+static PyObject *__pyx_n_s__ValueError;
+static PyObject *__pyx_n_s____main__;
+static PyObject *__pyx_n_s____test__;
+static PyObject *__pyx_n_s__attach_scale;
+static PyObject *__pyx_n_s__detach_scale;
+static PyObject *__pyx_n_s__dim;
+static PyObject *__pyx_n_s__dimname;
+static PyObject *__pyx_n_s__dscale;
+static PyObject *__pyx_n_s__dset;
+static PyObject *__pyx_n_s__func;
+static PyObject *__pyx_n_s__get_label;
+static PyObject *__pyx_n_s__get_num_scales;
+static PyObject *__pyx_n_s__get_scale_name;
+static PyObject *__pyx_n_s__i;
+static PyObject *__pyx_n_s__idx;
+static PyObject *__pyx_n_s__is_attached;
+static PyObject *__pyx_n_s__is_scale;
+static PyObject *__pyx_n_s__iterate;
+static PyObject *__pyx_n_s__label;
+static PyObject *__pyx_n_s__name;
+static PyObject *__pyx_n_s__namelen;
+static PyObject *__pyx_n_s__open;
+static PyObject *__pyx_n_s__plabel;
+static PyObject *__pyx_n_s__pname;
+static PyObject *__pyx_n_s__set_label;
+static PyObject *__pyx_n_s__set_scale;
+static PyObject *__pyx_n_s__size;
+static PyObject *__pyx_n_s__startidx;
+static PyObject *__pyx_n_s__vis;
+static PyObject *__pyx_k_tuple_3;
+static PyObject *__pyx_k_tuple_5;
+static PyObject *__pyx_k_tuple_9;
+static PyObject *__pyx_k_tuple_11;
+static PyObject *__pyx_k_tuple_13;
+static PyObject *__pyx_k_tuple_15;
+static PyObject *__pyx_k_tuple_17;
+static PyObject *__pyx_k_tuple_19;
+static PyObject *__pyx_k_tuple_21;
+static PyObject *__pyx_k_tuple_23;
+static PyObject *__pyx_k_tuple_25;
+static PyObject *__pyx_k_codeobj_6;
+static PyObject *__pyx_k_codeobj_10;
+static PyObject *__pyx_k_codeobj_12;
+static PyObject *__pyx_k_codeobj_14;
+static PyObject *__pyx_k_codeobj_16;
+static PyObject *__pyx_k_codeobj_18;
+static PyObject *__pyx_k_codeobj_20;
+static PyObject *__pyx_k_codeobj_22;
+static PyObject *__pyx_k_codeobj_24;
+static PyObject *__pyx_k_codeobj_26;
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_4h5ds_1set_scale(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_4h5py_4h5ds_set_scale[] = "(DatasetID dset, STRING dimname)\n\n    Convert dataset dset to a dimension scale, with optional name dimname.\n    ";
+static PyMethodDef __pyx_mdef_4h5py_4h5ds_1set_scale = {__Pyx_NAMESTR("set_scale"), (PyCFunction)__pyx_pw_4h5py_4h5ds_1set_scale, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4h5py_4h5ds_set_scale)};
+static PyObject *__pyx_pw_4h5py_4h5ds_1set_scale(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  struct __pyx_obj_4h5py_3h5d_DatasetID *__pyx_v_dset = 0;
+  char *__pyx_v_dimname;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("set_scale (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__dset,&__pyx_n_s__dimname,0};
+    PyObject* values[2] = {0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__dset)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__dimname);
+          if (value) { values[1] = value; kw_args--; }
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_scale") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else {
+      switch (PyTuple_GET_SIZE(__pyx_args)) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+    }
+    __pyx_v_dset = ((struct __pyx_obj_4h5py_3h5d_DatasetID *)values[0]);
+    if (values[1]) {
+      __pyx_v_dimname = PyBytes_AsString(values[1]); if (unlikely((!__pyx_v_dimname) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    } else {
+      __pyx_v_dimname = ((char *)__pyx_k_1);
+    }
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("set_scale", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5ds.set_scale", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_dset), __pyx_ptype_4h5py_3h5d_DatasetID, 0, "dset", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_pf_4h5py_4h5ds_set_scale(__pyx_self, __pyx_v_dset, __pyx_v_dimname);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5ds.pyx":19
+ * 
+ * 
+ * def set_scale(DatasetID dset not None, char* dimname=''):             # <<<<<<<<<<<<<<
+ *     """(DatasetID dset, STRING dimname)
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_4h5ds_set_scale(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_3h5d_DatasetID *__pyx_v_dset, char *__pyx_v_dimname) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("set_scale", 0);
+
+  /* "h5py/h5ds.pyx":24
+ *     Convert dataset dset to a dimension scale, with optional name dimname.
+ *     """
+ *     H5DSset_scale(dset.id, dimname)             # <<<<<<<<<<<<<<
+ * 
+ * def is_scale(DatasetID dset not None):
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5DSset_scale(__pyx_v_dset->__pyx_base.id, __pyx_v_dimname); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py.h5ds.set_scale", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_4h5ds_3is_scale(PyObject *__pyx_self, PyObject *__pyx_v_dset); /*proto*/
+static char __pyx_doc_4h5py_4h5ds_2is_scale[] = "(DatasetID dset)\n\n    Determines whether dset is a dimension scale.\n    ";
+static PyMethodDef __pyx_mdef_4h5py_4h5ds_3is_scale = {__Pyx_NAMESTR("is_scale"), (PyCFunction)__pyx_pw_4h5py_4h5ds_3is_scale, METH_O, __Pyx_DOCSTR(__pyx_doc_4h5py_4h5ds_2is_scale)};
+static PyObject *__pyx_pw_4h5py_4h5ds_3is_scale(PyObject *__pyx_self, PyObject *__pyx_v_dset) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("is_scale (wrapper)", 0);
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_dset), __pyx_ptype_4h5py_3h5d_DatasetID, 0, "dset", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_pf_4h5py_4h5ds_2is_scale(__pyx_self, ((struct __pyx_obj_4h5py_3h5d_DatasetID *)__pyx_v_dset));
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5ds.pyx":26
+ *     H5DSset_scale(dset.id, dimname)
+ * 
+ * def is_scale(DatasetID dset not None):             # <<<<<<<<<<<<<<
+ *     """(DatasetID dset)
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_4h5ds_2is_scale(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_3h5d_DatasetID *__pyx_v_dset) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  htri_t __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("is_scale", 0);
+
+  /* "h5py/h5ds.pyx":31
+ *     Determines whether dset is a dimension scale.
+ *     """
+ *     return <bint>(H5DSis_scale(dset.id))             # <<<<<<<<<<<<<<
+ * 
+ * def attach_scale(DatasetID dset not None, DatasetID dscale not None, unsigned
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5DSis_scale(__pyx_v_dset->__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyBool_FromLong(((int)__pyx_t_1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5ds.is_scale", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_4h5ds_5attach_scale(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyMethodDef __pyx_mdef_4h5py_4h5ds_5attach_scale = {__Pyx_NAMESTR("attach_scale"), (PyCFunction)__pyx_pw_4h5py_4h5ds_5attach_scale, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)};
+static PyObject *__pyx_pw_4h5py_4h5ds_5attach_scale(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  struct __pyx_obj_4h5py_3h5d_DatasetID *__pyx_v_dset = 0;
+  struct __pyx_obj_4h5py_3h5d_DatasetID *__pyx_v_dscale = 0;
+  unsigned int __pyx_v_idx;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("attach_scale (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__dset,&__pyx_n_s__dscale,&__pyx_n_s__idx,0};
+    PyObject* values[3] = {0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__dset)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__dscale)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("attach_scale", 1, 3, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+        case  2:
+        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__idx)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("attach_scale", 1, 3, 3, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "attach_scale") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+    }
+    __pyx_v_dset = ((struct __pyx_obj_4h5py_3h5d_DatasetID *)values[0]);
+    __pyx_v_dscale = ((struct __pyx_obj_4h5py_3h5d_DatasetID *)values[1]);
+    __pyx_v_idx = __Pyx_PyInt_AsUnsignedInt(values[2]); if (unlikely((__pyx_v_idx == (unsigned int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("attach_scale", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5ds.attach_scale", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_dset), __pyx_ptype_4h5py_3h5d_DatasetID, 0, "dset", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_dscale), __pyx_ptype_4h5py_3h5d_DatasetID, 0, "dscale", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_pf_4h5py_4h5ds_4attach_scale(__pyx_self, __pyx_v_dset, __pyx_v_dscale, __pyx_v_idx);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5ds.pyx":33
+ *     return <bint>(H5DSis_scale(dset.id))
+ * 
+ * def attach_scale(DatasetID dset not None, DatasetID dscale not None, unsigned             # <<<<<<<<<<<<<<
+ *                  int idx):
+ *     H5DSattach_scale(dset.id, dscale.id, idx)
+ */
+
+static PyObject *__pyx_pf_4h5py_4h5ds_4attach_scale(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_3h5d_DatasetID *__pyx_v_dset, struct __pyx_obj_4h5py_3h5d_DatasetID *__pyx_v_dscale, unsigned int __pyx_v_idx) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("attach_scale", 0);
+
+  /* "h5py/h5ds.pyx":35
+ * def attach_scale(DatasetID dset not None, DatasetID dscale not None, unsigned
+ *                  int idx):
+ *     H5DSattach_scale(dset.id, dscale.id, idx)             # <<<<<<<<<<<<<<
+ * 
+ * def is_attached(DatasetID dset not None, DatasetID dscale not None,
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5DSattach_scale(__pyx_v_dset->__pyx_base.id, __pyx_v_dscale->__pyx_base.id, __pyx_v_idx); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py.h5ds.attach_scale", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_4h5ds_7is_attached(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyMethodDef __pyx_mdef_4h5py_4h5ds_7is_attached = {__Pyx_NAMESTR("is_attached"), (PyCFunction)__pyx_pw_4h5py_4h5ds_7is_attached, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)};
+static PyObject *__pyx_pw_4h5py_4h5ds_7is_attached(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  struct __pyx_obj_4h5py_3h5d_DatasetID *__pyx_v_dset = 0;
+  struct __pyx_obj_4h5py_3h5d_DatasetID *__pyx_v_dscale = 0;
+  unsigned int __pyx_v_idx;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("is_attached (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__dset,&__pyx_n_s__dscale,&__pyx_n_s__idx,0};
+    PyObject* values[3] = {0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__dset)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__dscale)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("is_attached", 1, 3, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+        case  2:
+        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__idx)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("is_attached", 1, 3, 3, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "is_attached") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+    }
+    __pyx_v_dset = ((struct __pyx_obj_4h5py_3h5d_DatasetID *)values[0]);
+    __pyx_v_dscale = ((struct __pyx_obj_4h5py_3h5d_DatasetID *)values[1]);
+    __pyx_v_idx = __Pyx_PyInt_AsUnsignedInt(values[2]); if (unlikely((__pyx_v_idx == (unsigned int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("is_attached", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5ds.is_attached", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_dset), __pyx_ptype_4h5py_3h5d_DatasetID, 0, "dset", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_dscale), __pyx_ptype_4h5py_3h5d_DatasetID, 0, "dscale", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_pf_4h5py_4h5ds_6is_attached(__pyx_self, __pyx_v_dset, __pyx_v_dscale, __pyx_v_idx);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5ds.pyx":37
+ *     H5DSattach_scale(dset.id, dscale.id, idx)
+ * 
+ * def is_attached(DatasetID dset not None, DatasetID dscale not None,             # <<<<<<<<<<<<<<
+ *                 unsigned int idx):
+ *     return <bint>(H5DSis_attached(dset.id, dscale.id, idx))
+ */
+
+static PyObject *__pyx_pf_4h5py_4h5ds_6is_attached(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_3h5d_DatasetID *__pyx_v_dset, struct __pyx_obj_4h5py_3h5d_DatasetID *__pyx_v_dscale, unsigned int __pyx_v_idx) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  htri_t __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("is_attached", 0);
+
+  /* "h5py/h5ds.pyx":39
+ * def is_attached(DatasetID dset not None, DatasetID dscale not None,
+ *                 unsigned int idx):
+ *     return <bint>(H5DSis_attached(dset.id, dscale.id, idx))             # <<<<<<<<<<<<<<
+ * 
+ * def detach_scale(DatasetID dset not None, DatasetID dscale not None,
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5DSis_attached(__pyx_v_dset->__pyx_base.id, __pyx_v_dscale->__pyx_base.id, __pyx_v_idx); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyBool_FromLong(((int)__pyx_t_1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5ds.is_attached", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_4h5ds_9detach_scale(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyMethodDef __pyx_mdef_4h5py_4h5ds_9detach_scale = {__Pyx_NAMESTR("detach_scale"), (PyCFunction)__pyx_pw_4h5py_4h5ds_9detach_scale, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)};
+static PyObject *__pyx_pw_4h5py_4h5ds_9detach_scale(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  struct __pyx_obj_4h5py_3h5d_DatasetID *__pyx_v_dset = 0;
+  struct __pyx_obj_4h5py_3h5d_DatasetID *__pyx_v_dscale = 0;
+  unsigned int __pyx_v_idx;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("detach_scale (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__dset,&__pyx_n_s__dscale,&__pyx_n_s__idx,0};
+    PyObject* values[3] = {0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__dset)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__dscale)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("detach_scale", 1, 3, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+        case  2:
+        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__idx)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("detach_scale", 1, 3, 3, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "detach_scale") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+    }
+    __pyx_v_dset = ((struct __pyx_obj_4h5py_3h5d_DatasetID *)values[0]);
+    __pyx_v_dscale = ((struct __pyx_obj_4h5py_3h5d_DatasetID *)values[1]);
+    __pyx_v_idx = __Pyx_PyInt_AsUnsignedInt(values[2]); if (unlikely((__pyx_v_idx == (unsigned int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 42; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("detach_scale", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5ds.detach_scale", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_dset), __pyx_ptype_4h5py_3h5d_DatasetID, 0, "dset", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_dscale), __pyx_ptype_4h5py_3h5d_DatasetID, 0, "dscale", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_pf_4h5py_4h5ds_8detach_scale(__pyx_self, __pyx_v_dset, __pyx_v_dscale, __pyx_v_idx);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5ds.pyx":41
+ *     return <bint>(H5DSis_attached(dset.id, dscale.id, idx))
+ * 
+ * def detach_scale(DatasetID dset not None, DatasetID dscale not None,             # <<<<<<<<<<<<<<
+ *                  unsigned int idx):
+ *     H5DSdetach_scale(dset.id, dscale.id, idx)
+ */
+
+static PyObject *__pyx_pf_4h5py_4h5ds_8detach_scale(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_3h5d_DatasetID *__pyx_v_dset, struct __pyx_obj_4h5py_3h5d_DatasetID *__pyx_v_dscale, unsigned int __pyx_v_idx) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("detach_scale", 0);
+
+  /* "h5py/h5ds.pyx":43
+ * def detach_scale(DatasetID dset not None, DatasetID dscale not None,
+ *                  unsigned int idx):
+ *     H5DSdetach_scale(dset.id, dscale.id, idx)             # <<<<<<<<<<<<<<
+ * 
+ * def get_num_scales(DatasetID dset not None, unsigned int dim):
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5DSdetach_scale(__pyx_v_dset->__pyx_base.id, __pyx_v_dscale->__pyx_base.id, __pyx_v_idx); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py.h5ds.detach_scale", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_4h5ds_11get_num_scales(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyMethodDef __pyx_mdef_4h5py_4h5ds_11get_num_scales = {__Pyx_NAMESTR("get_num_scales"), (PyCFunction)__pyx_pw_4h5py_4h5ds_11get_num_scales, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)};
+static PyObject *__pyx_pw_4h5py_4h5ds_11get_num_scales(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  struct __pyx_obj_4h5py_3h5d_DatasetID *__pyx_v_dset = 0;
+  unsigned int __pyx_v_dim;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_num_scales (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__dset,&__pyx_n_s__dim,0};
+    PyObject* values[2] = {0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__dset)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__dim)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("get_num_scales", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_num_scales") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+    }
+    __pyx_v_dset = ((struct __pyx_obj_4h5py_3h5d_DatasetID *)values[0]);
+    __pyx_v_dim = __Pyx_PyInt_AsUnsignedInt(values[1]); if (unlikely((__pyx_v_dim == (unsigned int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("get_num_scales", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5ds.get_num_scales", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_dset), __pyx_ptype_4h5py_3h5d_DatasetID, 0, "dset", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_pf_4h5py_4h5ds_10get_num_scales(__pyx_self, __pyx_v_dset, __pyx_v_dim);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5ds.pyx":45
+ *     H5DSdetach_scale(dset.id, dscale.id, idx)
+ * 
+ * def get_num_scales(DatasetID dset not None, unsigned int dim):             # <<<<<<<<<<<<<<
+ *     return H5DSget_num_scales(dset.id, dim)
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_4h5ds_10get_num_scales(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_3h5d_DatasetID *__pyx_v_dset, unsigned int __pyx_v_dim) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_num_scales", 0);
+
+  /* "h5py/h5ds.pyx":46
+ * 
+ * def get_num_scales(DatasetID dset not None, unsigned int dim):
+ *     return H5DSget_num_scales(dset.id, dim)             # <<<<<<<<<<<<<<
+ * 
+ * def set_label(DatasetID dset not None, unsigned int idx, char* label):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5DSget_num_scales(__pyx_v_dset->__pyx_base.id, __pyx_v_dim); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyInt_FromLong(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5ds.get_num_scales", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_4h5ds_13set_label(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyMethodDef __pyx_mdef_4h5py_4h5ds_13set_label = {__Pyx_NAMESTR("set_label"), (PyCFunction)__pyx_pw_4h5py_4h5ds_13set_label, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)};
+static PyObject *__pyx_pw_4h5py_4h5ds_13set_label(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  struct __pyx_obj_4h5py_3h5d_DatasetID *__pyx_v_dset = 0;
+  unsigned int __pyx_v_idx;
+  char *__pyx_v_label;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("set_label (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__dset,&__pyx_n_s__idx,&__pyx_n_s__label,0};
+    PyObject* values[3] = {0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__dset)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__idx)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("set_label", 1, 3, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+        case  2:
+        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__label)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("set_label", 1, 3, 3, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_label") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+    }
+    __pyx_v_dset = ((struct __pyx_obj_4h5py_3h5d_DatasetID *)values[0]);
+    __pyx_v_idx = __Pyx_PyInt_AsUnsignedInt(values[1]); if (unlikely((__pyx_v_idx == (unsigned int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_label = PyBytes_AsString(values[2]); if (unlikely((!__pyx_v_label) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("set_label", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5ds.set_label", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_dset), __pyx_ptype_4h5py_3h5d_DatasetID, 0, "dset", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_pf_4h5py_4h5ds_12set_label(__pyx_self, __pyx_v_dset, __pyx_v_idx, __pyx_v_label);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5ds.pyx":48
+ *     return H5DSget_num_scales(dset.id, dim)
+ * 
+ * def set_label(DatasetID dset not None, unsigned int idx, char* label):             # <<<<<<<<<<<<<<
+ *     H5DSset_label(dset.id, idx, label)
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_4h5ds_12set_label(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_3h5d_DatasetID *__pyx_v_dset, unsigned int __pyx_v_idx, char *__pyx_v_label) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("set_label", 0);
+
+  /* "h5py/h5ds.pyx":49
+ * 
+ * def set_label(DatasetID dset not None, unsigned int idx, char* label):
+ *     H5DSset_label(dset.id, idx, label)             # <<<<<<<<<<<<<<
+ * 
+ * def get_label(DatasetID dset not None, unsigned int idx):
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5DSset_label(__pyx_v_dset->__pyx_base.id, __pyx_v_idx, __pyx_v_label); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py.h5ds.set_label", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_4h5ds_15get_label(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyMethodDef __pyx_mdef_4h5py_4h5ds_15get_label = {__Pyx_NAMESTR("get_label"), (PyCFunction)__pyx_pw_4h5py_4h5ds_15get_label, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)};
+static PyObject *__pyx_pw_4h5py_4h5ds_15get_label(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  struct __pyx_obj_4h5py_3h5d_DatasetID *__pyx_v_dset = 0;
+  unsigned int __pyx_v_idx;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_label (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__dset,&__pyx_n_s__idx,0};
+    PyObject* values[2] = {0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__dset)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__idx)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("get_label", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_label") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+    }
+    __pyx_v_dset = ((struct __pyx_obj_4h5py_3h5d_DatasetID *)values[0]);
+    __pyx_v_idx = __Pyx_PyInt_AsUnsignedInt(values[1]); if (unlikely((__pyx_v_idx == (unsigned int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("get_label", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5ds.get_label", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_dset), __pyx_ptype_4h5py_3h5d_DatasetID, 0, "dset", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_pf_4h5py_4h5ds_14get_label(__pyx_self, __pyx_v_dset, __pyx_v_idx);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5ds.pyx":51
+ *     H5DSset_label(dset.id, idx, label)
+ * 
+ * def get_label(DatasetID dset not None, unsigned int idx):             # <<<<<<<<<<<<<<
+ *     cdef ssize_t size
+ *     cdef char* label
+ */
+
+static PyObject *__pyx_pf_4h5py_4h5ds_14get_label(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_3h5d_DatasetID *__pyx_v_dset, unsigned int __pyx_v_idx) {
+  Py_ssize_t __pyx_v_size;
+  char *__pyx_v_label;
+  char *__pyx_v_plabel;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  Py_ssize_t __pyx_t_1;
+  int __pyx_t_2;
+  void *__pyx_t_3;
+  PyObject *__pyx_t_4 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_label", 0);
+
+  /* "h5py/h5ds.pyx":54
+ *     cdef ssize_t size
+ *     cdef char* label
+ *     label = NULL             # <<<<<<<<<<<<<<
+ * 
+ *     size = H5DSget_label(dset.id, idx, NULL, 0)
+ */
+  __pyx_v_label = NULL;
+
+  /* "h5py/h5ds.pyx":56
+ *     label = NULL
+ * 
+ *     size = H5DSget_label(dset.id, idx, NULL, 0)             # <<<<<<<<<<<<<<
+ *     if size <= 0:
+ *         return b''
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5DSget_label(__pyx_v_dset->__pyx_base.id, __pyx_v_idx, NULL, 0); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v_size = __pyx_t_1;
+
+  /* "h5py/h5ds.pyx":57
+ * 
+ *     size = H5DSget_label(dset.id, idx, NULL, 0)
+ *     if size <= 0:             # <<<<<<<<<<<<<<
+ *         return b''
+ *     label = <char*>emalloc(sizeof(char)*(size+1))
+ */
+  __pyx_t_2 = (__pyx_v_size <= 0);
+  if (__pyx_t_2) {
+
+    /* "h5py/h5ds.pyx":58
+ *     size = H5DSget_label(dset.id, idx, NULL, 0)
+ *     if size <= 0:
+ *         return b''             # <<<<<<<<<<<<<<
+ *     label = <char*>emalloc(sizeof(char)*(size+1))
+ *     try:
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __Pyx_INCREF(((PyObject *)__pyx_kp_b_1));
+    __pyx_r = ((PyObject *)__pyx_kp_b_1);
+    goto __pyx_L0;
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  /* "h5py/h5ds.pyx":59
+ *     if size <= 0:
+ *         return b''
+ *     label = <char*>emalloc(sizeof(char)*(size+1))             # <<<<<<<<<<<<<<
+ *     try:
+ *         H5DSget_label(dset.id, idx, label, size+1)
+ */
+  __pyx_t_3 = __pyx_f_4h5py_5utils_emalloc(((sizeof(char)) * (__pyx_v_size + 1))); if (unlikely(__pyx_t_3 == NULL && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v_label = ((char *)__pyx_t_3);
+
+  /* "h5py/h5ds.pyx":60
+ *         return b''
+ *     label = <char*>emalloc(sizeof(char)*(size+1))
+ *     try:             # <<<<<<<<<<<<<<
+ *         H5DSget_label(dset.id, idx, label, size+1)
+ *         plabel = label
+ */
+  /*try:*/ {
+
+    /* "h5py/h5ds.pyx":61
+ *     label = <char*>emalloc(sizeof(char)*(size+1))
+ *     try:
+ *         H5DSget_label(dset.id, idx, label, size+1)             # <<<<<<<<<<<<<<
+ *         plabel = label
+ *         return plabel
+ */
+    __pyx_t_1 = __pyx_f_4h5py_4defs_H5DSget_label(__pyx_v_dset->__pyx_base.id, __pyx_v_idx, __pyx_v_label, (__pyx_v_size + 1)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L5;}
+
+    /* "h5py/h5ds.pyx":62
+ *     try:
+ *         H5DSget_label(dset.id, idx, label, size+1)
+ *         plabel = label             # <<<<<<<<<<<<<<
+ *         return plabel
+ *     finally:
+ */
+    __pyx_v_plabel = __pyx_v_label;
+
+    /* "h5py/h5ds.pyx":63
+ *         H5DSget_label(dset.id, idx, label, size+1)
+ *         plabel = label
+ *         return plabel             # <<<<<<<<<<<<<<
+ *     finally:
+ *         efree(label)
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_4 = PyBytes_FromString(__pyx_v_plabel); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L5;}
+    __Pyx_GOTREF(((PyObject *)__pyx_t_4));
+    __pyx_r = ((PyObject *)__pyx_t_4);
+    __pyx_t_4 = 0;
+    goto __pyx_L4;
+  }
+
+  /* "h5py/h5ds.pyx":65
+ *         return plabel
+ *     finally:
+ *         efree(label)             # <<<<<<<<<<<<<<
+ * 
+ * def get_scale_name(DatasetID dscale not None):
+ */
+  /*finally:*/ {
+    int __pyx_why;
+    PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb;
+    int __pyx_exc_lineno;
+    __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
+    __pyx_why = 0; goto __pyx_L6;
+    __pyx_L4: __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
+    __pyx_why = 3; goto __pyx_L6;
+    __pyx_L5: {
+      __pyx_why = 4;
+      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb);
+      __pyx_exc_lineno = __pyx_lineno;
+      goto __pyx_L6;
+    }
+    __pyx_L6:;
+    __pyx_f_4h5py_5utils_efree(__pyx_v_label);
+    switch (__pyx_why) {
+      case 3: goto __pyx_L0;
+      case 4: {
+        __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb);
+        __pyx_lineno = __pyx_exc_lineno;
+        __pyx_exc_type = 0;
+        __pyx_exc_value = 0;
+        __pyx_exc_tb = 0;
+        goto __pyx_L1_error;
+      }
+    }
+  }
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("h5py.h5ds.get_label", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_4h5ds_17get_scale_name(PyObject *__pyx_self, PyObject *__pyx_v_dscale); /*proto*/
+static PyMethodDef __pyx_mdef_4h5py_4h5ds_17get_scale_name = {__Pyx_NAMESTR("get_scale_name"), (PyCFunction)__pyx_pw_4h5py_4h5ds_17get_scale_name, METH_O, __Pyx_DOCSTR(0)};
+static PyObject *__pyx_pw_4h5py_4h5ds_17get_scale_name(PyObject *__pyx_self, PyObject *__pyx_v_dscale) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_scale_name (wrapper)", 0);
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_dscale), __pyx_ptype_4h5py_3h5d_DatasetID, 0, "dscale", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_pf_4h5py_4h5ds_16get_scale_name(__pyx_self, ((struct __pyx_obj_4h5py_3h5d_DatasetID *)__pyx_v_dscale));
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5ds.pyx":67
+ *         efree(label)
+ * 
+ * def get_scale_name(DatasetID dscale not None):             # <<<<<<<<<<<<<<
+ *     cdef ssize_t namelen
+ *     cdef char* name = NULL
+ */
+
+static PyObject *__pyx_pf_4h5py_4h5ds_16get_scale_name(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_3h5d_DatasetID *__pyx_v_dscale) {
+  Py_ssize_t __pyx_v_namelen;
+  char *__pyx_v_name;
+  char *__pyx_v_pname;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  Py_ssize_t __pyx_t_1;
+  int __pyx_t_2;
+  void *__pyx_t_3;
+  PyObject *__pyx_t_4 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_scale_name", 0);
+
+  /* "h5py/h5ds.pyx":69
+ * def get_scale_name(DatasetID dscale not None):
+ *     cdef ssize_t namelen
+ *     cdef char* name = NULL             # <<<<<<<<<<<<<<
+ * 
+ *     namelen = H5DSget_scale_name(dscale.id, NULL, 0)
+ */
+  __pyx_v_name = NULL;
+
+  /* "h5py/h5ds.pyx":71
+ *     cdef char* name = NULL
+ * 
+ *     namelen = H5DSget_scale_name(dscale.id, NULL, 0)             # <<<<<<<<<<<<<<
+ *     if namelen <= 0:
+ *         return b''
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5DSget_scale_name(__pyx_v_dscale->__pyx_base.id, NULL, 0); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v_namelen = __pyx_t_1;
+
+  /* "h5py/h5ds.pyx":72
+ * 
+ *     namelen = H5DSget_scale_name(dscale.id, NULL, 0)
+ *     if namelen <= 0:             # <<<<<<<<<<<<<<
+ *         return b''
+ *     name = <char*>emalloc(sizeof(char)*(namelen+1))
+ */
+  __pyx_t_2 = (__pyx_v_namelen <= 0);
+  if (__pyx_t_2) {
+
+    /* "h5py/h5ds.pyx":73
+ *     namelen = H5DSget_scale_name(dscale.id, NULL, 0)
+ *     if namelen <= 0:
+ *         return b''             # <<<<<<<<<<<<<<
+ *     name = <char*>emalloc(sizeof(char)*(namelen+1))
+ *     try:
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __Pyx_INCREF(((PyObject *)__pyx_kp_b_1));
+    __pyx_r = ((PyObject *)__pyx_kp_b_1);
+    goto __pyx_L0;
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  /* "h5py/h5ds.pyx":74
+ *     if namelen <= 0:
+ *         return b''
+ *     name = <char*>emalloc(sizeof(char)*(namelen+1))             # <<<<<<<<<<<<<<
+ *     try:
+ *         H5DSget_scale_name(dscale.id, name, namelen+1)
+ */
+  __pyx_t_3 = __pyx_f_4h5py_5utils_emalloc(((sizeof(char)) * (__pyx_v_namelen + 1))); if (unlikely(__pyx_t_3 == NULL && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v_name = ((char *)__pyx_t_3);
+
+  /* "h5py/h5ds.pyx":75
+ *         return b''
+ *     name = <char*>emalloc(sizeof(char)*(namelen+1))
+ *     try:             # <<<<<<<<<<<<<<
+ *         H5DSget_scale_name(dscale.id, name, namelen+1)
+ *         pname = name
+ */
+  /*try:*/ {
+
+    /* "h5py/h5ds.pyx":76
+ *     name = <char*>emalloc(sizeof(char)*(namelen+1))
+ *     try:
+ *         H5DSget_scale_name(dscale.id, name, namelen+1)             # <<<<<<<<<<<<<<
+ *         pname = name
+ *         return pname
+ */
+    __pyx_t_1 = __pyx_f_4h5py_4defs_H5DSget_scale_name(__pyx_v_dscale->__pyx_base.id, __pyx_v_name, (__pyx_v_namelen + 1)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 76; __pyx_clineno = __LINE__; goto __pyx_L5;}
+
+    /* "h5py/h5ds.pyx":77
+ *     try:
+ *         H5DSget_scale_name(dscale.id, name, namelen+1)
+ *         pname = name             # <<<<<<<<<<<<<<
+ *         return pname
+ *     finally:
+ */
+    __pyx_v_pname = __pyx_v_name;
+
+    /* "h5py/h5ds.pyx":78
+ *         H5DSget_scale_name(dscale.id, name, namelen+1)
+ *         pname = name
+ *         return pname             # <<<<<<<<<<<<<<
+ *     finally:
+ *         efree(name)
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_4 = PyBytes_FromString(__pyx_v_pname); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L5;}
+    __Pyx_GOTREF(((PyObject *)__pyx_t_4));
+    __pyx_r = ((PyObject *)__pyx_t_4);
+    __pyx_t_4 = 0;
+    goto __pyx_L4;
+  }
+
+  /* "h5py/h5ds.pyx":80
+ *         return pname
+ *     finally:
+ *         efree(name)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  /*finally:*/ {
+    int __pyx_why;
+    PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb;
+    int __pyx_exc_lineno;
+    __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
+    __pyx_why = 0; goto __pyx_L6;
+    __pyx_L4: __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
+    __pyx_why = 3; goto __pyx_L6;
+    __pyx_L5: {
+      __pyx_why = 4;
+      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb);
+      __pyx_exc_lineno = __pyx_lineno;
+      goto __pyx_L6;
+    }
+    __pyx_L6:;
+    __pyx_f_4h5py_5utils_efree(__pyx_v_name);
+    switch (__pyx_why) {
+      case 3: goto __pyx_L0;
+      case 4: {
+        __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb);
+        __pyx_lineno = __pyx_exc_lineno;
+        __pyx_exc_type = 0;
+        __pyx_exc_value = 0;
+        __pyx_exc_tb = 0;
+        goto __pyx_L1_error;
+      }
+    }
+  }
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("h5py.h5ds.get_scale_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static int __pyx_pw_4h5py_4h5ds_22_DimensionScaleVisitor_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_4h5py_4h5ds_22_DimensionScaleVisitor_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_func = 0;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__func,0};
+    PyObject* values[1] = {0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__func)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+    }
+    __pyx_v_func = values[0];
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5ds._DimensionScaleVisitor.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return -1;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_4h5ds_22_DimensionScaleVisitor___init__(((struct __pyx_obj_4h5py_4h5ds__DimensionScaleVisitor *)__pyx_v_self), __pyx_v_func);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5ds.pyx":88
+ *     cdef object retval
+ * 
+ *     def __init__(self, func):             # <<<<<<<<<<<<<<
+ *         self.func = func
+ *         self.retval = None
+ */
+
+static int __pyx_pf_4h5py_4h5ds_22_DimensionScaleVisitor___init__(struct __pyx_obj_4h5py_4h5ds__DimensionScaleVisitor *__pyx_v_self, PyObject *__pyx_v_func) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__init__", 0);
+
+  /* "h5py/h5ds.pyx":89
+ * 
+ *     def __init__(self, func):
+ *         self.func = func             # <<<<<<<<<<<<<<
+ *         self.retval = None
+ * 
+ */
+  __Pyx_INCREF(__pyx_v_func);
+  __Pyx_GIVEREF(__pyx_v_func);
+  __Pyx_GOTREF(__pyx_v_self->func);
+  __Pyx_DECREF(__pyx_v_self->func);
+  __pyx_v_self->func = __pyx_v_func;
+
+  /* "h5py/h5ds.pyx":90
+ *     def __init__(self, func):
+ *         self.func = func
+ *         self.retval = None             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_INCREF(Py_None);
+  __Pyx_GIVEREF(Py_None);
+  __Pyx_GOTREF(__pyx_v_self->retval);
+  __Pyx_DECREF(__pyx_v_self->retval);
+  __pyx_v_self->retval = Py_None;
+
+  __pyx_r = 0;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5ds.pyx":93
+ * 
+ * 
+ * cdef herr_t cb_ds_iter(hid_t dset, unsigned int dim, hid_t scale, void* vis_in) except 2:             # <<<<<<<<<<<<<<
+ * 
+ *     cdef _DimensionScaleVisitor vis = <_DimensionScaleVisitor>vis_in
+ */
+
+static herr_t __pyx_f_4h5py_4h5ds_cb_ds_iter(CYTHON_UNUSED hid_t __pyx_v_dset, CYTHON_UNUSED unsigned int __pyx_v_dim, hid_t __pyx_v_scale, void *__pyx_v_vis_in) {
+  struct __pyx_obj_4h5py_4h5ds__DimensionScaleVisitor *__pyx_v_vis = 0;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  int __pyx_t_5;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("cb_ds_iter", 0);
+
+  /* "h5py/h5ds.pyx":95
+ * cdef herr_t cb_ds_iter(hid_t dset, unsigned int dim, hid_t scale, void* vis_in) except 2:
+ * 
+ *     cdef _DimensionScaleVisitor vis = <_DimensionScaleVisitor>vis_in             # <<<<<<<<<<<<<<
+ * 
+ *     # we did not retrieve the scale identifier using the normal machinery,
+ */
+  __Pyx_INCREF(((PyObject *)((struct __pyx_obj_4h5py_4h5ds__DimensionScaleVisitor *)__pyx_v_vis_in)));
+  __pyx_v_vis = ((struct __pyx_obj_4h5py_4h5ds__DimensionScaleVisitor *)__pyx_v_vis_in);
+
+  /* "h5py/h5ds.pyx":99
+ *     # we did not retrieve the scale identifier using the normal machinery,
+ *     # so we need to inc_ref it before using it to create a DatasetID.
+ *     H5Iinc_ref(scale)             # <<<<<<<<<<<<<<
+ *     vis.retval = vis.func(DatasetID.open(scale))
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Iinc_ref(__pyx_v_scale); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 99; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5ds.pyx":100
+ *     # so we need to inc_ref it before using it to create a DatasetID.
+ *     H5Iinc_ref(scale)
+ *     vis.retval = vis.func(DatasetID.open(scale))             # <<<<<<<<<<<<<<
+ * 
+ *     if vis.retval is not None:
+ */
+  __pyx_t_2 = PyObject_GetAttr(((PyObject *)((PyObject*)__pyx_ptype_4h5py_3h5d_DatasetID)), __pyx_n_s__open); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = __Pyx_PyInt_to_py_hid_t(__pyx_v_scale); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_3);
+  __pyx_t_3 = 0;
+  __pyx_t_3 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
+  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_3);
+  __pyx_t_3 = 0;
+  __pyx_t_3 = PyObject_Call(__pyx_v_vis->func, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
+  __Pyx_GIVEREF(__pyx_t_3);
+  __Pyx_GOTREF(__pyx_v_vis->retval);
+  __Pyx_DECREF(__pyx_v_vis->retval);
+  __pyx_v_vis->retval = __pyx_t_3;
+  __pyx_t_3 = 0;
+
+  /* "h5py/h5ds.pyx":102
+ *     vis.retval = vis.func(DatasetID.open(scale))
+ * 
+ *     if vis.retval is not None:             # <<<<<<<<<<<<<<
+ *         return 1
+ *     return 0
+ */
+  __pyx_t_5 = (__pyx_v_vis->retval != Py_None);
+  if (__pyx_t_5) {
+
+    /* "h5py/h5ds.pyx":103
+ * 
+ *     if vis.retval is not None:
+ *         return 1             # <<<<<<<<<<<<<<
+ *     return 0
+ * 
+ */
+    __pyx_r = 1;
+    goto __pyx_L0;
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  /* "h5py/h5ds.pyx":104
+ *     if vis.retval is not None:
+ *         return 1
+ *     return 0             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_r = 0;
+  goto __pyx_L0;
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("h5py.h5ds.cb_ds_iter", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 2;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_vis);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_4h5ds_19iterate(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_4h5py_4h5ds_18iterate[] = " (DatasetID loc, UINT dim, CALLABLE func, UINT startidx=0)\n    => Return value from func\n\n    Iterate a callable (function, method or callable object) over the\n    members of a group.  Your callable shoutld have the signature::\n\n        func(STRING name) => Result\n\n    Returning None continues iteration; returning anything else aborts\n    iteration and returns that value. Keywords:\n    ";
+static PyMethodDef __pyx_mdef_4h5py_4h5ds_19iterate = {__Pyx_NAMESTR("iterate"), (PyCFunction)__pyx_pw_4h5py_4h5ds_19iterate, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4h5py_4h5ds_18iterate)};
+static PyObject *__pyx_pw_4h5py_4h5ds_19iterate(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  struct __pyx_obj_4h5py_3h5d_DatasetID *__pyx_v_dset = 0;
+  unsigned int __pyx_v_dim;
+  PyObject *__pyx_v_func = 0;
+  int __pyx_v_startidx;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("iterate (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__dset,&__pyx_n_s__dim,&__pyx_n_s__func,&__pyx_n_s__startidx,0};
+    PyObject* values[4] = {0,0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__dset)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__dim)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("iterate", 0, 3, 4, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+        case  2:
+        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__func)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("iterate", 0, 3, 4, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+        case  3:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__startidx);
+          if (value) { values[3] = value; kw_args--; }
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "iterate") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else {
+      switch (PyTuple_GET_SIZE(__pyx_args)) {
+        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+    }
+    __pyx_v_dset = ((struct __pyx_obj_4h5py_3h5d_DatasetID *)values[0]);
+    __pyx_v_dim = __Pyx_PyInt_AsUnsignedInt(values[1]); if (unlikely((__pyx_v_dim == (unsigned int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_func = values[2];
+    if (values[3]) {
+      __pyx_v_startidx = __Pyx_PyInt_AsInt(values[3]); if (unlikely((__pyx_v_startidx == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 108; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    } else {
+      __pyx_v_startidx = ((int)0);
+    }
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("iterate", 0, 3, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5ds.iterate", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_dset), __pyx_ptype_4h5py_3h5d_DatasetID, 0, "dset", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_pf_4h5py_4h5ds_18iterate(__pyx_self, __pyx_v_dset, __pyx_v_dim, __pyx_v_func, __pyx_v_startidx);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5ds.pyx":107
+ * 
+ * 
+ * def iterate(DatasetID dset not None, unsigned int dim, object func,             # <<<<<<<<<<<<<<
+ *             int startidx=0):
+ *     """ (DatasetID loc, UINT dim, CALLABLE func, UINT startidx=0)
+ */
+
+static PyObject *__pyx_pf_4h5py_4h5ds_18iterate(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_3h5d_DatasetID *__pyx_v_dset, unsigned int __pyx_v_dim, PyObject *__pyx_v_func, int __pyx_v_startidx) {
+  int __pyx_v_i;
+  struct __pyx_obj_4h5py_4h5ds__DimensionScaleVisitor *__pyx_v_vis = 0;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  herr_t __pyx_t_4;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("iterate", 0);
+
+  /* "h5py/h5ds.pyx":120
+ *     iteration and returns that value. Keywords:
+ *     """
+ *     if startidx < 0:             # <<<<<<<<<<<<<<
+ *         raise ValueError("Starting index must be non-negative")
+ * 
+ */
+  __pyx_t_1 = (__pyx_v_startidx < 0);
+  if (__pyx_t_1) {
+
+    /* "h5py/h5ds.pyx":121
+ *     """
+ *     if startidx < 0:
+ *         raise ValueError("Starting index must be non-negative")             # <<<<<<<<<<<<<<
+ * 
+ *     cdef int i = startidx
+ */
+    __pyx_t_2 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  /* "h5py/h5ds.pyx":123
+ *         raise ValueError("Starting index must be non-negative")
+ * 
+ *     cdef int i = startidx             # <<<<<<<<<<<<<<
+ *     cdef _DimensionScaleVisitor vis = _DimensionScaleVisitor(func)
+ * 
+ */
+  __pyx_v_i = __pyx_v_startidx;
+
+  /* "h5py/h5ds.pyx":124
+ * 
+ *     cdef int i = startidx
+ *     cdef _DimensionScaleVisitor vis = _DimensionScaleVisitor(func)             # <<<<<<<<<<<<<<
+ * 
+ *     H5DSiterate_scales(dset.id, dim, &i, <H5DS_iterate_t>cb_ds_iter, <void*>vis)
+ */
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_INCREF(__pyx_v_func);
+  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_func);
+  __Pyx_GIVEREF(__pyx_v_func);
+  __pyx_t_3 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4h5py_4h5ds__DimensionScaleVisitor)), ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
+  __pyx_v_vis = ((struct __pyx_obj_4h5py_4h5ds__DimensionScaleVisitor *)__pyx_t_3);
+  __pyx_t_3 = 0;
+
+  /* "h5py/h5ds.pyx":126
+ *     cdef _DimensionScaleVisitor vis = _DimensionScaleVisitor(func)
+ * 
+ *     H5DSiterate_scales(dset.id, dim, &i, <H5DS_iterate_t>cb_ds_iter, <void*>vis)             # <<<<<<<<<<<<<<
+ * 
+ *     return vis.retval
+ */
+  __pyx_t_4 = __pyx_f_4h5py_4defs_H5DSiterate_scales(__pyx_v_dset->__pyx_base.id, __pyx_v_dim, (&__pyx_v_i), ((H5DS_iterate_t)__pyx_f_4h5py_4h5ds_cb_ds_iter), ((void *)__pyx_v_vis)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5ds.pyx":128
+ *     H5DSiterate_scales(dset.id, dim, &i, <H5DS_iterate_t>cb_ds_iter, <void*>vis)
+ * 
+ *     return vis.retval             # <<<<<<<<<<<<<<
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_vis->retval);
+  __pyx_r = __pyx_v_vis->retval;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("h5py.h5ds.iterate", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_vis);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_tp_new_4h5py_4h5ds__DimensionScaleVisitor(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
+  struct __pyx_obj_4h5py_4h5ds__DimensionScaleVisitor *p;
+  PyObject *o = (*t->tp_alloc)(t, 0);
+  if (!o) return 0;
+  p = ((struct __pyx_obj_4h5py_4h5ds__DimensionScaleVisitor *)o);
+  p->func = Py_None; Py_INCREF(Py_None);
+  p->retval = Py_None; Py_INCREF(Py_None);
+  return o;
+}
+
+static void __pyx_tp_dealloc_4h5py_4h5ds__DimensionScaleVisitor(PyObject *o) {
+  struct __pyx_obj_4h5py_4h5ds__DimensionScaleVisitor *p = (struct __pyx_obj_4h5py_4h5ds__DimensionScaleVisitor *)o;
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->func);
+  Py_CLEAR(p->retval);
+  PyObject_GC_Track(o);
+  (*Py_TYPE(o)->tp_free)(o);
+}
+
+static int __pyx_tp_traverse_4h5py_4h5ds__DimensionScaleVisitor(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_4h5py_4h5ds__DimensionScaleVisitor *p = (struct __pyx_obj_4h5py_4h5ds__DimensionScaleVisitor *)o;
+  if (p->func) {
+    e = (*v)(p->func, a); if (e) return e;
+  }
+  if (p->retval) {
+    e = (*v)(p->retval, a); if (e) return e;
+  }
+  return 0;
+}
+
+static int __pyx_tp_clear_4h5py_4h5ds__DimensionScaleVisitor(PyObject *o) {
+  struct __pyx_obj_4h5py_4h5ds__DimensionScaleVisitor *p = (struct __pyx_obj_4h5py_4h5ds__DimensionScaleVisitor *)o;
+  PyObject* tmp;
+  tmp = ((PyObject*)p->func);
+  p->func = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->retval);
+  p->retval = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  return 0;
+}
+
+static PyMethodDef __pyx_methods_4h5py_4h5ds__DimensionScaleVisitor[] = {
+  {0, 0, 0, 0}
+};
+
+static PyNumberMethods __pyx_tp_as_number__DimensionScaleVisitor = {
+  0, /*nb_add*/
+  0, /*nb_subtract*/
+  0, /*nb_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_divide*/
+  #endif
+  0, /*nb_remainder*/
+  0, /*nb_divmod*/
+  0, /*nb_power*/
+  0, /*nb_negative*/
+  0, /*nb_positive*/
+  0, /*nb_absolute*/
+  0, /*nb_nonzero*/
+  0, /*nb_invert*/
+  0, /*nb_lshift*/
+  0, /*nb_rshift*/
+  0, /*nb_and*/
+  0, /*nb_xor*/
+  0, /*nb_or*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_coerce*/
+  #endif
+  0, /*nb_int*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_long*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*nb_float*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_oct*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_hex*/
+  #endif
+  0, /*nb_inplace_add*/
+  0, /*nb_inplace_subtract*/
+  0, /*nb_inplace_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_inplace_divide*/
+  #endif
+  0, /*nb_inplace_remainder*/
+  0, /*nb_inplace_power*/
+  0, /*nb_inplace_lshift*/
+  0, /*nb_inplace_rshift*/
+  0, /*nb_inplace_and*/
+  0, /*nb_inplace_xor*/
+  0, /*nb_inplace_or*/
+  0, /*nb_floor_divide*/
+  0, /*nb_true_divide*/
+  0, /*nb_inplace_floor_divide*/
+  0, /*nb_inplace_true_divide*/
+  #if PY_VERSION_HEX >= 0x02050000
+  0, /*nb_index*/
+  #endif
+};
+
+static PySequenceMethods __pyx_tp_as_sequence__DimensionScaleVisitor = {
+  0, /*sq_length*/
+  0, /*sq_concat*/
+  0, /*sq_repeat*/
+  0, /*sq_item*/
+  0, /*sq_slice*/
+  0, /*sq_ass_item*/
+  0, /*sq_ass_slice*/
+  0, /*sq_contains*/
+  0, /*sq_inplace_concat*/
+  0, /*sq_inplace_repeat*/
+};
+
+static PyMappingMethods __pyx_tp_as_mapping__DimensionScaleVisitor = {
+  0, /*mp_length*/
+  0, /*mp_subscript*/
+  0, /*mp_ass_subscript*/
+};
+
+static PyBufferProcs __pyx_tp_as_buffer__DimensionScaleVisitor = {
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getreadbuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getwritebuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getsegcount*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getcharbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_getbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_releasebuffer*/
+  #endif
+};
+
+static PyTypeObject __pyx_type_4h5py_4h5ds__DimensionScaleVisitor = {
+  PyVarObject_HEAD_INIT(0, 0)
+  __Pyx_NAMESTR("h5py.h5ds._DimensionScaleVisitor"), /*tp_name*/
+  sizeof(struct __pyx_obj_4h5py_4h5ds__DimensionScaleVisitor), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_4h5py_4h5ds__DimensionScaleVisitor, /*tp_dealloc*/
+  0, /*tp_print*/
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*tp_repr*/
+  &__pyx_tp_as_number__DimensionScaleVisitor, /*tp_as_number*/
+  &__pyx_tp_as_sequence__DimensionScaleVisitor, /*tp_as_sequence*/
+  &__pyx_tp_as_mapping__DimensionScaleVisitor, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  &__pyx_tp_as_buffer__DimensionScaleVisitor, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_4h5py_4h5ds__DimensionScaleVisitor, /*tp_traverse*/
+  __pyx_tp_clear_4h5py_4h5ds__DimensionScaleVisitor, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_4h5py_4h5ds__DimensionScaleVisitor, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  0, /*tp_dictoffset*/
+  __pyx_pw_4h5py_4h5ds_22_DimensionScaleVisitor_1__init__, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_4h5py_4h5ds__DimensionScaleVisitor, /*tp_new*/
+  0, /*tp_free*/
+  0, /*tp_is_gc*/
+  0, /*tp_bases*/
+  0, /*tp_mro*/
+  0, /*tp_cache*/
+  0, /*tp_subclasses*/
+  0, /*tp_weaklist*/
+  0, /*tp_del*/
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*tp_version_tag*/
+  #endif
+};
+
+static PyMethodDef __pyx_methods[] = {
+  {0, 0, 0, 0}
+};
+
+#if PY_MAJOR_VERSION >= 3
+static struct PyModuleDef __pyx_moduledef = {
+  #if PY_VERSION_HEX < 0x03020000
+    { PyObject_HEAD_INIT(NULL) NULL, 0, NULL },
+  #else
+    PyModuleDef_HEAD_INIT,
+  #endif
+    __Pyx_NAMESTR("h5ds"),
+    __Pyx_DOCSTR(__pyx_k_4), /* m_doc */
+    -1, /* m_size */
+    __pyx_methods /* m_methods */,
+    NULL, /* m_reload */
+    NULL, /* m_traverse */
+    NULL, /* m_clear */
+    NULL /* m_free */
+};
+#endif
+
+static __Pyx_StringTabEntry __pyx_string_tab[] = {
+  {&__pyx_kp_b_1, __pyx_k_1, sizeof(__pyx_k_1), 0, 0, 0, 0},
+  {&__pyx_kp_s_2, __pyx_k_2, sizeof(__pyx_k_2), 0, 0, 1, 0},
+  {&__pyx_kp_s_7, __pyx_k_7, sizeof(__pyx_k_7), 0, 0, 1, 0},
+  {&__pyx_n_s_8, __pyx_k_8, sizeof(__pyx_k_8), 0, 0, 1, 1},
+  {&__pyx_n_s__ValueError, __pyx_k__ValueError, sizeof(__pyx_k__ValueError), 0, 0, 1, 1},
+  {&__pyx_n_s____main__, __pyx_k____main__, sizeof(__pyx_k____main__), 0, 0, 1, 1},
+  {&__pyx_n_s____test__, __pyx_k____test__, sizeof(__pyx_k____test__), 0, 0, 1, 1},
+  {&__pyx_n_s__attach_scale, __pyx_k__attach_scale, sizeof(__pyx_k__attach_scale), 0, 0, 1, 1},
+  {&__pyx_n_s__detach_scale, __pyx_k__detach_scale, sizeof(__pyx_k__detach_scale), 0, 0, 1, 1},
+  {&__pyx_n_s__dim, __pyx_k__dim, sizeof(__pyx_k__dim), 0, 0, 1, 1},
+  {&__pyx_n_s__dimname, __pyx_k__dimname, sizeof(__pyx_k__dimname), 0, 0, 1, 1},
+  {&__pyx_n_s__dscale, __pyx_k__dscale, sizeof(__pyx_k__dscale), 0, 0, 1, 1},
+  {&__pyx_n_s__dset, __pyx_k__dset, sizeof(__pyx_k__dset), 0, 0, 1, 1},
+  {&__pyx_n_s__func, __pyx_k__func, sizeof(__pyx_k__func), 0, 0, 1, 1},
+  {&__pyx_n_s__get_label, __pyx_k__get_label, sizeof(__pyx_k__get_label), 0, 0, 1, 1},
+  {&__pyx_n_s__get_num_scales, __pyx_k__get_num_scales, sizeof(__pyx_k__get_num_scales), 0, 0, 1, 1},
+  {&__pyx_n_s__get_scale_name, __pyx_k__get_scale_name, sizeof(__pyx_k__get_scale_name), 0, 0, 1, 1},
+  {&__pyx_n_s__i, __pyx_k__i, sizeof(__pyx_k__i), 0, 0, 1, 1},
+  {&__pyx_n_s__idx, __pyx_k__idx, sizeof(__pyx_k__idx), 0, 0, 1, 1},
+  {&__pyx_n_s__is_attached, __pyx_k__is_attached, sizeof(__pyx_k__is_attached), 0, 0, 1, 1},
+  {&__pyx_n_s__is_scale, __pyx_k__is_scale, sizeof(__pyx_k__is_scale), 0, 0, 1, 1},
+  {&__pyx_n_s__iterate, __pyx_k__iterate, sizeof(__pyx_k__iterate), 0, 0, 1, 1},
+  {&__pyx_n_s__label, __pyx_k__label, sizeof(__pyx_k__label), 0, 0, 1, 1},
+  {&__pyx_n_s__name, __pyx_k__name, sizeof(__pyx_k__name), 0, 0, 1, 1},
+  {&__pyx_n_s__namelen, __pyx_k__namelen, sizeof(__pyx_k__namelen), 0, 0, 1, 1},
+  {&__pyx_n_s__open, __pyx_k__open, sizeof(__pyx_k__open), 0, 0, 1, 1},
+  {&__pyx_n_s__plabel, __pyx_k__plabel, sizeof(__pyx_k__plabel), 0, 0, 1, 1},
+  {&__pyx_n_s__pname, __pyx_k__pname, sizeof(__pyx_k__pname), 0, 0, 1, 1},
+  {&__pyx_n_s__set_label, __pyx_k__set_label, sizeof(__pyx_k__set_label), 0, 0, 1, 1},
+  {&__pyx_n_s__set_scale, __pyx_k__set_scale, sizeof(__pyx_k__set_scale), 0, 0, 1, 1},
+  {&__pyx_n_s__size, __pyx_k__size, sizeof(__pyx_k__size), 0, 0, 1, 1},
+  {&__pyx_n_s__startidx, __pyx_k__startidx, sizeof(__pyx_k__startidx), 0, 0, 1, 1},
+  {&__pyx_n_s__vis, __pyx_k__vis, sizeof(__pyx_k__vis), 0, 0, 1, 1},
+  {0, 0, 0, 0, 0, 0, 0}
+};
+static int __Pyx_InitCachedBuiltins(void) {
+  __pyx_builtin_ValueError = __Pyx_GetName(__pyx_b, __pyx_n_s__ValueError); if (!__pyx_builtin_ValueError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  return 0;
+  __pyx_L1_error:;
+  return -1;
+}
+
+static int __Pyx_InitCachedConstants(void) {
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0);
+
+  /* "h5py/h5ds.pyx":121
+ *     """
+ *     if startidx < 0:
+ *         raise ValueError("Starting index must be non-negative")             # <<<<<<<<<<<<<<
+ * 
+ *     cdef int i = startidx
+ */
+  __pyx_k_tuple_3 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_2)); if (unlikely(!__pyx_k_tuple_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_3);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_3));
+
+  /* "h5py/h5ds.pyx":19
+ * 
+ * 
+ * def set_scale(DatasetID dset not None, char* dimname=''):             # <<<<<<<<<<<<<<
+ *     """(DatasetID dset, STRING dimname)
+ * 
+ */
+  __pyx_k_tuple_5 = PyTuple_Pack(2, ((PyObject *)__pyx_n_s__dset), ((PyObject *)__pyx_n_s__dimname)); if (unlikely(!__pyx_k_tuple_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_5);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_5));
+  __pyx_k_codeobj_6 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_5, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_7, __pyx_n_s__set_scale, 19, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5ds.pyx":26
+ *     H5DSset_scale(dset.id, dimname)
+ * 
+ * def is_scale(DatasetID dset not None):             # <<<<<<<<<<<<<<
+ *     """(DatasetID dset)
+ * 
+ */
+  __pyx_k_tuple_9 = PyTuple_Pack(1, ((PyObject *)__pyx_n_s__dset)); if (unlikely(!__pyx_k_tuple_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_9);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_9));
+  __pyx_k_codeobj_10 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_9, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_7, __pyx_n_s__is_scale, 26, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5ds.pyx":33
+ *     return <bint>(H5DSis_scale(dset.id))
+ * 
+ * def attach_scale(DatasetID dset not None, DatasetID dscale not None, unsigned             # <<<<<<<<<<<<<<
+ *                  int idx):
+ *     H5DSattach_scale(dset.id, dscale.id, idx)
+ */
+  __pyx_k_tuple_11 = PyTuple_Pack(3, ((PyObject *)__pyx_n_s__dset), ((PyObject *)__pyx_n_s__dscale), ((PyObject *)__pyx_n_s__idx)); if (unlikely(!__pyx_k_tuple_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_11);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_11));
+  __pyx_k_codeobj_12 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_11, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_7, __pyx_n_s__attach_scale, 33, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5ds.pyx":37
+ *     H5DSattach_scale(dset.id, dscale.id, idx)
+ * 
+ * def is_attached(DatasetID dset not None, DatasetID dscale not None,             # <<<<<<<<<<<<<<
+ *                 unsigned int idx):
+ *     return <bint>(H5DSis_attached(dset.id, dscale.id, idx))
+ */
+  __pyx_k_tuple_13 = PyTuple_Pack(3, ((PyObject *)__pyx_n_s__dset), ((PyObject *)__pyx_n_s__dscale), ((PyObject *)__pyx_n_s__idx)); if (unlikely(!__pyx_k_tuple_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_13);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_13));
+  __pyx_k_codeobj_14 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_7, __pyx_n_s__is_attached, 37, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5ds.pyx":41
+ *     return <bint>(H5DSis_attached(dset.id, dscale.id, idx))
+ * 
+ * def detach_scale(DatasetID dset not None, DatasetID dscale not None,             # <<<<<<<<<<<<<<
+ *                  unsigned int idx):
+ *     H5DSdetach_scale(dset.id, dscale.id, idx)
+ */
+  __pyx_k_tuple_15 = PyTuple_Pack(3, ((PyObject *)__pyx_n_s__dset), ((PyObject *)__pyx_n_s__dscale), ((PyObject *)__pyx_n_s__idx)); if (unlikely(!__pyx_k_tuple_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_15);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_15));
+  __pyx_k_codeobj_16 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_15, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_7, __pyx_n_s__detach_scale, 41, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5ds.pyx":45
+ *     H5DSdetach_scale(dset.id, dscale.id, idx)
+ * 
+ * def get_num_scales(DatasetID dset not None, unsigned int dim):             # <<<<<<<<<<<<<<
+ *     return H5DSget_num_scales(dset.id, dim)
+ * 
+ */
+  __pyx_k_tuple_17 = PyTuple_Pack(2, ((PyObject *)__pyx_n_s__dset), ((PyObject *)__pyx_n_s__dim)); if (unlikely(!__pyx_k_tuple_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_17);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_17));
+  __pyx_k_codeobj_18 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_17, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_7, __pyx_n_s__get_num_scales, 45, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_18)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5ds.pyx":48
+ *     return H5DSget_num_scales(dset.id, dim)
+ * 
+ * def set_label(DatasetID dset not None, unsigned int idx, char* label):             # <<<<<<<<<<<<<<
+ *     H5DSset_label(dset.id, idx, label)
+ * 
+ */
+  __pyx_k_tuple_19 = PyTuple_Pack(3, ((PyObject *)__pyx_n_s__dset), ((PyObject *)__pyx_n_s__idx), ((PyObject *)__pyx_n_s__label)); if (unlikely(!__pyx_k_tuple_19)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_19);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_19));
+  __pyx_k_codeobj_20 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_19, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_7, __pyx_n_s__set_label, 48, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_20)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5ds.pyx":51
+ *     H5DSset_label(dset.id, idx, label)
+ * 
+ * def get_label(DatasetID dset not None, unsigned int idx):             # <<<<<<<<<<<<<<
+ *     cdef ssize_t size
+ *     cdef char* label
+ */
+  __pyx_k_tuple_21 = PyTuple_Pack(5, ((PyObject *)__pyx_n_s__dset), ((PyObject *)__pyx_n_s__idx), ((PyObject *)__pyx_n_s__size), ((PyObject *)__pyx_n_s__label), ((PyObject *)__pyx_n_s__plabel)); if (unlikely(!__pyx_k_tuple_21)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_21);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_21));
+  __pyx_k_codeobj_22 = (PyObject*)__Pyx_PyCode_New(2, 0, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_7, __pyx_n_s__get_label, 51, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_22)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5ds.pyx":67
+ *         efree(label)
+ * 
+ * def get_scale_name(DatasetID dscale not None):             # <<<<<<<<<<<<<<
+ *     cdef ssize_t namelen
+ *     cdef char* name = NULL
+ */
+  __pyx_k_tuple_23 = PyTuple_Pack(4, ((PyObject *)__pyx_n_s__dscale), ((PyObject *)__pyx_n_s__namelen), ((PyObject *)__pyx_n_s__name), ((PyObject *)__pyx_n_s__pname)); if (unlikely(!__pyx_k_tuple_23)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_23);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_23));
+  __pyx_k_codeobj_24 = (PyObject*)__Pyx_PyCode_New(1, 0, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_23, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_7, __pyx_n_s__get_scale_name, 67, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_24)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5ds.pyx":107
+ * 
+ * 
+ * def iterate(DatasetID dset not None, unsigned int dim, object func,             # <<<<<<<<<<<<<<
+ *             int startidx=0):
+ *     """ (DatasetID loc, UINT dim, CALLABLE func, UINT startidx=0)
+ */
+  __pyx_k_tuple_25 = PyTuple_Pack(6, ((PyObject *)__pyx_n_s__dset), ((PyObject *)__pyx_n_s__dim), ((PyObject *)__pyx_n_s__func), ((PyObject *)__pyx_n_s__startidx), ((PyObject *)__pyx_n_s__i), ((PyObject *)__pyx_n_s__vis)); if (unlikely(!__pyx_k_tuple_25)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_25);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_25));
+  __pyx_k_codeobj_26 = (PyObject*)__Pyx_PyCode_New(4, 0, 6, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_25, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_7, __pyx_n_s__iterate, 107, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_26)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_RefNannyFinishContext();
+  return 0;
+  __pyx_L1_error:;
+  __Pyx_RefNannyFinishContext();
+  return -1;
+}
+
+static int __Pyx_InitGlobals(void) {
+  if (__Pyx_InitStrings(__pyx_string_tab) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  return 0;
+  __pyx_L1_error:;
+  return -1;
+}
+
+#if PY_MAJOR_VERSION < 3
+PyMODINIT_FUNC inith5ds(void); /*proto*/
+PyMODINIT_FUNC inith5ds(void)
+#else
+PyMODINIT_FUNC PyInit_h5ds(void); /*proto*/
+PyMODINIT_FUNC PyInit_h5ds(void)
+#endif
+{
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  __Pyx_RefNannyDeclarations
+  #if CYTHON_REFNANNY
+  __Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny");
+  if (!__Pyx_RefNanny) {
+      PyErr_Clear();
+      __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny");
+      if (!__Pyx_RefNanny)
+          Py_FatalError("failed to import 'refnanny' module");
+  }
+  #endif
+  __Pyx_RefNannySetupContext("PyMODINIT_FUNC PyInit_h5ds(void)", 0);
+  if ( __Pyx_check_binary_version() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #ifdef __Pyx_CyFunction_USED
+  if (__Pyx_CyFunction_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #endif
+  #ifdef __Pyx_FusedFunction_USED
+  if (__pyx_FusedFunction_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #endif
+  #ifdef __Pyx_Generator_USED
+  if (__pyx_Generator_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #endif
+  /*--- Library function declarations ---*/
+  /*--- Threads initialization code ---*/
+  #if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS
+  #ifdef WITH_THREAD /* Python build with threading support? */
+  PyEval_InitThreads();
+  #endif
+  #endif
+  /*--- Module creation code ---*/
+  #if PY_MAJOR_VERSION < 3
+  __pyx_m = Py_InitModule4(__Pyx_NAMESTR("h5ds"), __pyx_methods, __Pyx_DOCSTR(__pyx_k_4), 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m);
+  #else
+  __pyx_m = PyModule_Create(&__pyx_moduledef);
+  #endif
+  if (unlikely(!__pyx_m)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #if PY_MAJOR_VERSION >= 3
+  {
+    PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (!PyDict_GetItemString(modules, "h5py.h5ds")) {
+      if (unlikely(PyDict_SetItemString(modules, "h5py.h5ds", __pyx_m) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    }
+  }
+  #endif
+  __pyx_b = PyImport_AddModule(__Pyx_NAMESTR(__Pyx_BUILTIN_MODULE_NAME)); if (unlikely(!__pyx_b)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #if CYTHON_COMPILING_IN_PYPY
+  Py_INCREF(__pyx_b);
+  #endif
+  if (__Pyx_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  /*--- Initialize various global constants etc. ---*/
+  if (unlikely(__Pyx_InitGlobals() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__pyx_module_is_main_h5py__h5ds) {
+    if (__Pyx_SetAttrString(__pyx_m, "__name__", __pyx_n_s____main__) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  }
+  /*--- Builtin init code ---*/
+  if (unlikely(__Pyx_InitCachedBuiltins() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  /*--- Constants init code ---*/
+  if (unlikely(__Pyx_InitCachedConstants() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  /*--- Global init code ---*/
+  /*--- Variable export code ---*/
+  /*--- Function export code ---*/
+  /*--- Type init code ---*/
+  if (PyType_Ready(&__pyx_type_4h5py_4h5ds__DimensionScaleVisitor) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetAttrString(__pyx_m, "_DimensionScaleVisitor", (PyObject *)&__pyx_type_4h5py_4h5ds__DimensionScaleVisitor) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_4h5ds__DimensionScaleVisitor = &__pyx_type_4h5py_4h5ds__DimensionScaleVisitor;
+  /*--- Type import code ---*/
+  __pyx_ptype_4h5py_8_objects_ObjectID = __Pyx_ImportType("h5py._objects", "ObjectID", sizeof(struct __pyx_obj_4h5py_8_objects_ObjectID), 1); if (unlikely(!__pyx_ptype_4h5py_8_objects_ObjectID)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5d_DatasetID = __Pyx_ImportType("h5py.h5d", "DatasetID", sizeof(struct __pyx_obj_4h5py_3h5d_DatasetID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5d_DatasetID)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_5numpy_dtype = __Pyx_ImportType("numpy", "dtype", sizeof(PyArray_Descr), 0); if (unlikely(!__pyx_ptype_4h5py_5numpy_dtype)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_5numpy_ndarray = __Pyx_ImportType("numpy", "ndarray", sizeof(PyArrayObject), 0); if (unlikely(!__pyx_ptype_4h5py_5numpy_ndarray)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  /*--- Variable import code ---*/
+  /*--- Function import code ---*/
+  __pyx_t_1 = __Pyx_ImportModule("h5py.defs"); if (!__pyx_t_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Iinc_ref", (void (**)(void))&__pyx_f_4h5py_4defs_H5Iinc_ref, "int (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5DSattach_scale", (void (**)(void))&__pyx_f_4h5py_4defs_H5DSattach_scale, "herr_t (hid_t, hid_t, unsigned int)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5DSdetach_scale", (void (**)(void))&__pyx_f_4h5py_4defs_H5DSdetach_scale, "herr_t (hid_t, hid_t, unsigned int)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5DSset_scale", (void (**)(void))&__pyx_f_4h5py_4defs_H5DSset_scale, "herr_t (hid_t, char *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5DSget_num_scales", (void (**)(void))&__pyx_f_4h5py_4defs_H5DSget_num_scales, "int (hid_t, unsigned int)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5DSset_label", (void (**)(void))&__pyx_f_4h5py_4defs_H5DSset_label, "herr_t (hid_t, unsigned int, char *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5DSget_label", (void (**)(void))&__pyx_f_4h5py_4defs_H5DSget_label, "Py_ssize_t (hid_t, unsigned int, char *, size_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5DSget_scale_name", (void (**)(void))&__pyx_f_4h5py_4defs_H5DSget_scale_name, "Py_ssize_t (hid_t, char *, size_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5DSis_scale", (void (**)(void))&__pyx_f_4h5py_4defs_H5DSis_scale, "htri_t (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5DSiterate_scales", (void (**)(void))&__pyx_f_4h5py_4defs_H5DSiterate_scales, "herr_t (hid_t, unsigned int, int *, H5DS_iterate_t, void *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5DSis_attached", (void (**)(void))&__pyx_f_4h5py_4defs_H5DSis_attached, "htri_t (hid_t, hid_t, unsigned int)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  Py_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_2 = __Pyx_ImportModule("h5py.utils"); if (!__pyx_t_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_2, "emalloc", (void (**)(void))&__pyx_f_4h5py_5utils_emalloc, "void *(size_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_2, "efree", (void (**)(void))&__pyx_f_4h5py_5utils_efree, "void (void *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  Py_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  /*--- Execution code ---*/
+
+  /* "h5py/h5ds.pyx":19
+ * 
+ * 
+ * def set_scale(DatasetID dset not None, char* dimname=''):             # <<<<<<<<<<<<<<
+ *     """(DatasetID dset, STRING dimname)
+ * 
+ */
+  __pyx_t_3 = PyCFunction_NewEx(&__pyx_mdef_4h5py_4h5ds_1set_scale, NULL, __pyx_n_s_8); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__set_scale, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+  /* "h5py/h5ds.pyx":26
+ *     H5DSset_scale(dset.id, dimname)
+ * 
+ * def is_scale(DatasetID dset not None):             # <<<<<<<<<<<<<<
+ *     """(DatasetID dset)
+ * 
+ */
+  __pyx_t_3 = PyCFunction_NewEx(&__pyx_mdef_4h5py_4h5ds_3is_scale, NULL, __pyx_n_s_8); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__is_scale, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+  /* "h5py/h5ds.pyx":33
+ *     return <bint>(H5DSis_scale(dset.id))
+ * 
+ * def attach_scale(DatasetID dset not None, DatasetID dscale not None, unsigned             # <<<<<<<<<<<<<<
+ *                  int idx):
+ *     H5DSattach_scale(dset.id, dscale.id, idx)
+ */
+  __pyx_t_3 = PyCFunction_NewEx(&__pyx_mdef_4h5py_4h5ds_5attach_scale, NULL, __pyx_n_s_8); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__attach_scale, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+  /* "h5py/h5ds.pyx":37
+ *     H5DSattach_scale(dset.id, dscale.id, idx)
+ * 
+ * def is_attached(DatasetID dset not None, DatasetID dscale not None,             # <<<<<<<<<<<<<<
+ *                 unsigned int idx):
+ *     return <bint>(H5DSis_attached(dset.id, dscale.id, idx))
+ */
+  __pyx_t_3 = PyCFunction_NewEx(&__pyx_mdef_4h5py_4h5ds_7is_attached, NULL, __pyx_n_s_8); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__is_attached, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+  /* "h5py/h5ds.pyx":41
+ *     return <bint>(H5DSis_attached(dset.id, dscale.id, idx))
+ * 
+ * def detach_scale(DatasetID dset not None, DatasetID dscale not None,             # <<<<<<<<<<<<<<
+ *                  unsigned int idx):
+ *     H5DSdetach_scale(dset.id, dscale.id, idx)
+ */
+  __pyx_t_3 = PyCFunction_NewEx(&__pyx_mdef_4h5py_4h5ds_9detach_scale, NULL, __pyx_n_s_8); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__detach_scale, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+  /* "h5py/h5ds.pyx":45
+ *     H5DSdetach_scale(dset.id, dscale.id, idx)
+ * 
+ * def get_num_scales(DatasetID dset not None, unsigned int dim):             # <<<<<<<<<<<<<<
+ *     return H5DSget_num_scales(dset.id, dim)
+ * 
+ */
+  __pyx_t_3 = PyCFunction_NewEx(&__pyx_mdef_4h5py_4h5ds_11get_num_scales, NULL, __pyx_n_s_8); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__get_num_scales, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+  /* "h5py/h5ds.pyx":48
+ *     return H5DSget_num_scales(dset.id, dim)
+ * 
+ * def set_label(DatasetID dset not None, unsigned int idx, char* label):             # <<<<<<<<<<<<<<
+ *     H5DSset_label(dset.id, idx, label)
+ * 
+ */
+  __pyx_t_3 = PyCFunction_NewEx(&__pyx_mdef_4h5py_4h5ds_13set_label, NULL, __pyx_n_s_8); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__set_label, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+  /* "h5py/h5ds.pyx":51
+ *     H5DSset_label(dset.id, idx, label)
+ * 
+ * def get_label(DatasetID dset not None, unsigned int idx):             # <<<<<<<<<<<<<<
+ *     cdef ssize_t size
+ *     cdef char* label
+ */
+  __pyx_t_3 = PyCFunction_NewEx(&__pyx_mdef_4h5py_4h5ds_15get_label, NULL, __pyx_n_s_8); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__get_label, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+  /* "h5py/h5ds.pyx":67
+ *         efree(label)
+ * 
+ * def get_scale_name(DatasetID dscale not None):             # <<<<<<<<<<<<<<
+ *     cdef ssize_t namelen
+ *     cdef char* name = NULL
+ */
+  __pyx_t_3 = PyCFunction_NewEx(&__pyx_mdef_4h5py_4h5ds_17get_scale_name, NULL, __pyx_n_s_8); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__get_scale_name, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+  /* "h5py/h5ds.pyx":107
+ * 
+ * 
+ * def iterate(DatasetID dset not None, unsigned int dim, object func,             # <<<<<<<<<<<<<<
+ *             int startidx=0):
+ *     """ (DatasetID loc, UINT dim, CALLABLE func, UINT startidx=0)
+ */
+  __pyx_t_3 = PyCFunction_NewEx(&__pyx_mdef_4h5py_4h5ds_19iterate, NULL, __pyx_n_s_8); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__iterate, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+  /* "h5py/h5ds.pyx":1
+ * # This file is part of h5py, a Python interface to the HDF5 library.             # <<<<<<<<<<<<<<
+ * #
+ * # http://www.h5py.org
+ */
+  __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(((PyObject *)__pyx_t_3));
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s____test__, ((PyObject *)__pyx_t_3)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  if (__pyx_m) {
+    __Pyx_AddTraceback("init h5py.h5ds", __pyx_clineno, __pyx_lineno, __pyx_filename);
+    Py_DECREF(__pyx_m); __pyx_m = 0;
+  } else if (!PyErr_Occurred()) {
+    PyErr_SetString(PyExc_ImportError, "init h5py.h5ds");
+  }
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  #if PY_MAJOR_VERSION < 3
+  return;
+  #else
+  return __pyx_m;
+  #endif
+}
+
+/* Runtime support code */
+#if CYTHON_REFNANNY
+static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) {
+    PyObject *m = NULL, *p = NULL;
+    void *r = NULL;
+    m = PyImport_ImportModule((char *)modname);
+    if (!m) goto end;
+    p = PyObject_GetAttrString(m, (char *)"RefNannyAPI");
+    if (!p) goto end;
+    r = PyLong_AsVoidPtr(p);
+end:
+    Py_XDECREF(p);
+    Py_XDECREF(m);
+    return (__Pyx_RefNannyAPIStruct *)r;
+}
+#endif /* CYTHON_REFNANNY */
+
+static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name) {
+    PyObject *result;
+    result = PyObject_GetAttr(dict, name);
+    if (!result) {
+        if (dict != __pyx_b) {
+            PyErr_Clear();
+            result = PyObject_GetAttr(__pyx_b, name);
+        }
+        if (!result) {
+            PyErr_SetObject(PyExc_NameError, name);
+        }
+    }
+    return result;
+}
+
+static void __Pyx_RaiseDoubleKeywordsError(
+    const char* func_name,
+    PyObject* kw_name)
+{
+    PyErr_Format(PyExc_TypeError,
+        #if PY_MAJOR_VERSION >= 3
+        "%s() got multiple values for keyword argument '%U'", func_name, kw_name);
+        #else
+        "%s() got multiple values for keyword argument '%s'", func_name,
+        PyString_AsString(kw_name));
+        #endif
+}
+
+static int __Pyx_ParseOptionalKeywords(
+    PyObject *kwds,
+    PyObject **argnames[],
+    PyObject *kwds2,
+    PyObject *values[],
+    Py_ssize_t num_pos_args,
+    const char* function_name)
+{
+    PyObject *key = 0, *value = 0;
+    Py_ssize_t pos = 0;
+    PyObject*** name;
+    PyObject*** first_kw_arg = argnames + num_pos_args;
+    while (PyDict_Next(kwds, &pos, &key, &value)) {
+        name = first_kw_arg;
+        while (*name && (**name != key)) name++;
+        if (*name) {
+            values[name-argnames] = value;
+            continue;
+        }
+        name = first_kw_arg;
+        #if PY_MAJOR_VERSION < 3
+        if (likely(PyString_CheckExact(key)) || likely(PyString_Check(key))) {
+            while (*name) {
+                if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key))
+                        && _PyString_Eq(**name, key)) {
+                    values[name-argnames] = value;
+                    break;
+                }
+                name++;
+            }
+            if (*name) continue;
+            else {
+                PyObject*** argname = argnames;
+                while (argname != first_kw_arg) {
+                    if ((**argname == key) || (
+                            (CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**argname) == PyString_GET_SIZE(key))
+                             && _PyString_Eq(**argname, key))) {
+                        goto arg_passed_twice;
+                    }
+                    argname++;
+                }
+            }
+        } else
+        #endif
+        if (likely(PyUnicode_Check(key))) {
+            while (*name) {
+                int cmp = (**name == key) ? 0 :
+                #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
+                    (PyUnicode_GET_SIZE(**name) != PyUnicode_GET_SIZE(key)) ? 1 :
+                #endif
+                    PyUnicode_Compare(**name, key);
+                if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
+                if (cmp == 0) {
+                    values[name-argnames] = value;
+                    break;
+                }
+                name++;
+            }
+            if (*name) continue;
+            else {
+                PyObject*** argname = argnames;
+                while (argname != first_kw_arg) {
+                    int cmp = (**argname == key) ? 0 :
+                    #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
+                        (PyUnicode_GET_SIZE(**argname) != PyUnicode_GET_SIZE(key)) ? 1 :
+                    #endif
+                        PyUnicode_Compare(**argname, key);
+                    if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
+                    if (cmp == 0) goto arg_passed_twice;
+                    argname++;
+                }
+            }
+        } else
+            goto invalid_keyword_type;
+        if (kwds2) {
+            if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad;
+        } else {
+            goto invalid_keyword;
+        }
+    }
+    return 0;
+arg_passed_twice:
+    __Pyx_RaiseDoubleKeywordsError(function_name, key);
+    goto bad;
+invalid_keyword_type:
+    PyErr_Format(PyExc_TypeError,
+        "%s() keywords must be strings", function_name);
+    goto bad;
+invalid_keyword:
+    PyErr_Format(PyExc_TypeError,
+    #if PY_MAJOR_VERSION < 3
+        "%s() got an unexpected keyword argument '%s'",
+        function_name, PyString_AsString(key));
+    #else
+        "%s() got an unexpected keyword argument '%U'",
+        function_name, key);
+    #endif
+bad:
+    return -1;
+}
+
+static void __Pyx_RaiseArgtupleInvalid(
+    const char* func_name,
+    int exact,
+    Py_ssize_t num_min,
+    Py_ssize_t num_max,
+    Py_ssize_t num_found)
+{
+    Py_ssize_t num_expected;
+    const char *more_or_less;
+    if (num_found < num_min) {
+        num_expected = num_min;
+        more_or_less = "at least";
+    } else {
+        num_expected = num_max;
+        more_or_less = "at most";
+    }
+    if (exact) {
+        more_or_less = "exactly";
+    }
+    PyErr_Format(PyExc_TypeError,
+                 "%s() takes %s %" CYTHON_FORMAT_SSIZE_T "d positional argument%s (%" CYTHON_FORMAT_SSIZE_T "d given)",
+                 func_name, more_or_less, num_expected,
+                 (num_expected == 1) ? "" : "s", num_found);
+}
+
+static int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, int none_allowed,
+    const char *name, int exact)
+{
+    if (!type) {
+        PyErr_Format(PyExc_SystemError, "Missing type object");
+        return 0;
+    }
+    if (none_allowed && obj == Py_None) return 1;
+    else if (exact) {
+        if (Py_TYPE(obj) == type) return 1;
+    }
+    else {
+        if (PyObject_TypeCheck(obj, type)) return 1;
+    }
+    PyErr_Format(PyExc_TypeError,
+        "Argument '%s' has incorrect type (expected %s, got %s)",
+        name, type->tp_name, Py_TYPE(obj)->tp_name);
+    return 0;
+}
+
+static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb) {
+#if CYTHON_COMPILING_IN_CPYTHON
+    PyObject *tmp_type, *tmp_value, *tmp_tb;
+    PyThreadState *tstate = PyThreadState_GET();
+    tmp_type = tstate->curexc_type;
+    tmp_value = tstate->curexc_value;
+    tmp_tb = tstate->curexc_traceback;
+    tstate->curexc_type = type;
+    tstate->curexc_value = value;
+    tstate->curexc_traceback = tb;
+    Py_XDECREF(tmp_type);
+    Py_XDECREF(tmp_value);
+    Py_XDECREF(tmp_tb);
+#else
+    PyErr_Restore(type, value, tb);
+#endif
+}
+static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb) {
+#if CYTHON_COMPILING_IN_CPYTHON
+    PyThreadState *tstate = PyThreadState_GET();
+    *type = tstate->curexc_type;
+    *value = tstate->curexc_value;
+    *tb = tstate->curexc_traceback;
+    tstate->curexc_type = 0;
+    tstate->curexc_value = 0;
+    tstate->curexc_traceback = 0;
+#else
+    PyErr_Fetch(type, value, tb);
+#endif
+}
+
+#if PY_MAJOR_VERSION < 3
+static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb,
+                        CYTHON_UNUSED PyObject *cause) {
+    Py_XINCREF(type);
+    if (!value || value == Py_None)
+        value = NULL;
+    else
+        Py_INCREF(value);
+    if (!tb || tb == Py_None)
+        tb = NULL;
+    else {
+        Py_INCREF(tb);
+        if (!PyTraceBack_Check(tb)) {
+            PyErr_SetString(PyExc_TypeError,
+                "raise: arg 3 must be a traceback or None");
+            goto raise_error;
+        }
+    }
+    #if PY_VERSION_HEX < 0x02050000
+    if (PyClass_Check(type)) {
+    #else
+    if (PyType_Check(type)) {
+    #endif
+#if CYTHON_COMPILING_IN_PYPY
+        if (!value) {
+            Py_INCREF(Py_None);
+            value = Py_None;
+        }
+#endif
+        PyErr_NormalizeException(&type, &value, &tb);
+    } else {
+        if (value) {
+            PyErr_SetString(PyExc_TypeError,
+                "instance exception may not have a separate value");
+            goto raise_error;
+        }
+        value = type;
+        #if PY_VERSION_HEX < 0x02050000
+            if (PyInstance_Check(type)) {
+                type = (PyObject*) ((PyInstanceObject*)type)->in_class;
+                Py_INCREF(type);
+            }
+            else {
+                type = 0;
+                PyErr_SetString(PyExc_TypeError,
+                    "raise: exception must be an old-style class or instance");
+                goto raise_error;
+            }
+        #else
+            type = (PyObject*) Py_TYPE(type);
+            Py_INCREF(type);
+            if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) {
+                PyErr_SetString(PyExc_TypeError,
+                    "raise: exception class must be a subclass of BaseException");
+                goto raise_error;
+            }
+        #endif
+    }
+    __Pyx_ErrRestore(type, value, tb);
+    return;
+raise_error:
+    Py_XDECREF(value);
+    Py_XDECREF(type);
+    Py_XDECREF(tb);
+    return;
+}
+#else /* Python 3+ */
+static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) {
+    PyObject* owned_instance = NULL;
+    if (tb == Py_None) {
+        tb = 0;
+    } else if (tb && !PyTraceBack_Check(tb)) {
+        PyErr_SetString(PyExc_TypeError,
+            "raise: arg 3 must be a traceback or None");
+        goto bad;
+    }
+    if (value == Py_None)
+        value = 0;
+    if (PyExceptionInstance_Check(type)) {
+        if (value) {
+            PyErr_SetString(PyExc_TypeError,
+                "instance exception may not have a separate value");
+            goto bad;
+        }
+        value = type;
+        type = (PyObject*) Py_TYPE(value);
+    } else if (PyExceptionClass_Check(type)) {
+        PyObject *args;
+        if (!value)
+            args = PyTuple_New(0);
+        else if (PyTuple_Check(value)) {
+            Py_INCREF(value);
+            args = value;
+        }
+        else
+            args = PyTuple_Pack(1, value);
+        if (!args)
+            goto bad;
+        owned_instance = PyEval_CallObject(type, args);
+        Py_DECREF(args);
+        if (!owned_instance)
+            goto bad;
+        value = owned_instance;
+        if (!PyExceptionInstance_Check(value)) {
+            PyErr_Format(PyExc_TypeError,
+                         "calling %R should have returned an instance of "
+                         "BaseException, not %R",
+                         type, Py_TYPE(value));
+            goto bad;
+        }
+    } else {
+        PyErr_SetString(PyExc_TypeError,
+            "raise: exception class must be a subclass of BaseException");
+        goto bad;
+    }
+    if (cause && cause != Py_None) {
+        PyObject *fixed_cause;
+        if (PyExceptionClass_Check(cause)) {
+            fixed_cause = PyObject_CallObject(cause, NULL);
+            if (fixed_cause == NULL)
+                goto bad;
+        }
+        else if (PyExceptionInstance_Check(cause)) {
+            fixed_cause = cause;
+            Py_INCREF(fixed_cause);
+        }
+        else {
+            PyErr_SetString(PyExc_TypeError,
+                            "exception causes must derive from "
+                            "BaseException");
+            goto bad;
+        }
+        PyException_SetCause(value, fixed_cause);
+    }
+    PyErr_SetObject(type, value);
+    if (tb) {
+        PyThreadState *tstate = PyThreadState_GET();
+        PyObject* tmp_tb = tstate->curexc_traceback;
+        if (tb != tmp_tb) {
+            Py_INCREF(tb);
+            tstate->curexc_traceback = tb;
+            Py_XDECREF(tmp_tb);
+        }
+    }
+bad:
+    Py_XDECREF(owned_instance);
+    return;
+}
+#endif
+
+static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_hid_t(hid_t val) {
+    const hid_t neg_one = (hid_t)-1, const_zero = (hid_t)0;
+    const int is_unsigned = const_zero < neg_one;
+    if ((sizeof(hid_t) == sizeof(char))  ||
+        (sizeof(hid_t) == sizeof(short))) {
+        return PyInt_FromLong((long)val);
+    } else if ((sizeof(hid_t) == sizeof(int)) ||
+               (sizeof(hid_t) == sizeof(long))) {
+        if (is_unsigned)
+            return PyLong_FromUnsignedLong((unsigned long)val);
+        else
+            return PyInt_FromLong((long)val);
+    } else if (sizeof(hid_t) == sizeof(PY_LONG_LONG)) {
+        if (is_unsigned)
+            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG)val);
+        else
+            return PyLong_FromLongLong((PY_LONG_LONG)val);
+    } else {
+        int one = 1; int little = (int)*(unsigned char *)&one;
+        unsigned char *bytes = (unsigned char *)&val;
+        return _PyLong_FromByteArray(bytes, sizeof(hid_t),
+                                     little, !is_unsigned);
+    }
+}
+
+static CYTHON_INLINE unsigned char __Pyx_PyInt_AsUnsignedChar(PyObject* x) {
+    const unsigned char neg_one = (unsigned char)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(unsigned char) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(unsigned char)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to unsigned char" :
+                    "value too large to convert to unsigned char");
+            }
+            return (unsigned char)-1;
+        }
+        return (unsigned char)val;
+    }
+    return (unsigned char)__Pyx_PyInt_AsUnsignedLong(x);
+}
+
+static CYTHON_INLINE unsigned short __Pyx_PyInt_AsUnsignedShort(PyObject* x) {
+    const unsigned short neg_one = (unsigned short)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(unsigned short) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(unsigned short)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to unsigned short" :
+                    "value too large to convert to unsigned short");
+            }
+            return (unsigned short)-1;
+        }
+        return (unsigned short)val;
+    }
+    return (unsigned short)__Pyx_PyInt_AsUnsignedLong(x);
+}
+
+static CYTHON_INLINE unsigned int __Pyx_PyInt_AsUnsignedInt(PyObject* x) {
+    const unsigned int neg_one = (unsigned int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(unsigned int) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(unsigned int)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to unsigned int" :
+                    "value too large to convert to unsigned int");
+            }
+            return (unsigned int)-1;
+        }
+        return (unsigned int)val;
+    }
+    return (unsigned int)__Pyx_PyInt_AsUnsignedLong(x);
+}
+
+static CYTHON_INLINE char __Pyx_PyInt_AsChar(PyObject* x) {
+    const char neg_one = (char)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(char) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(char)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to char" :
+                    "value too large to convert to char");
+            }
+            return (char)-1;
+        }
+        return (char)val;
+    }
+    return (char)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE short __Pyx_PyInt_AsShort(PyObject* x) {
+    const short neg_one = (short)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(short) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(short)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to short" :
+                    "value too large to convert to short");
+            }
+            return (short)-1;
+        }
+        return (short)val;
+    }
+    return (short)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE int __Pyx_PyInt_AsInt(PyObject* x) {
+    const int neg_one = (int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(int) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(int)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to int" :
+                    "value too large to convert to int");
+            }
+            return (int)-1;
+        }
+        return (int)val;
+    }
+    return (int)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE signed char __Pyx_PyInt_AsSignedChar(PyObject* x) {
+    const signed char neg_one = (signed char)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(signed char) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(signed char)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to signed char" :
+                    "value too large to convert to signed char");
+            }
+            return (signed char)-1;
+        }
+        return (signed char)val;
+    }
+    return (signed char)__Pyx_PyInt_AsSignedLong(x);
+}
+
+static CYTHON_INLINE signed short __Pyx_PyInt_AsSignedShort(PyObject* x) {
+    const signed short neg_one = (signed short)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(signed short) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(signed short)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to signed short" :
+                    "value too large to convert to signed short");
+            }
+            return (signed short)-1;
+        }
+        return (signed short)val;
+    }
+    return (signed short)__Pyx_PyInt_AsSignedLong(x);
+}
+
+static CYTHON_INLINE signed int __Pyx_PyInt_AsSignedInt(PyObject* x) {
+    const signed int neg_one = (signed int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(signed int) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(signed int)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to signed int" :
+                    "value too large to convert to signed int");
+            }
+            return (signed int)-1;
+        }
+        return (signed int)val;
+    }
+    return (signed int)__Pyx_PyInt_AsSignedLong(x);
+}
+
+static CYTHON_INLINE int __Pyx_PyInt_AsLongDouble(PyObject* x) {
+    const int neg_one = (int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(int) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(int)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to int" :
+                    "value too large to convert to int");
+            }
+            return (int)-1;
+        }
+        return (int)val;
+    }
+    return (int)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE unsigned long __Pyx_PyInt_AsUnsignedLong(PyObject* x) {
+    const unsigned long neg_one = (unsigned long)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to unsigned long");
+            return (unsigned long)-1;
+        }
+        return (unsigned long)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to unsigned long");
+                return (unsigned long)-1;
+            }
+            return (unsigned long)PyLong_AsUnsignedLong(x);
+        } else {
+            return (unsigned long)PyLong_AsLong(x);
+        }
+    } else {
+        unsigned long val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (unsigned long)-1;
+        val = __Pyx_PyInt_AsUnsignedLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE unsigned PY_LONG_LONG __Pyx_PyInt_AsUnsignedLongLong(PyObject* x) {
+    const unsigned PY_LONG_LONG neg_one = (unsigned PY_LONG_LONG)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to unsigned PY_LONG_LONG");
+            return (unsigned PY_LONG_LONG)-1;
+        }
+        return (unsigned PY_LONG_LONG)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to unsigned PY_LONG_LONG");
+                return (unsigned PY_LONG_LONG)-1;
+            }
+            return (unsigned PY_LONG_LONG)PyLong_AsUnsignedLongLong(x);
+        } else {
+            return (unsigned PY_LONG_LONG)PyLong_AsLongLong(x);
+        }
+    } else {
+        unsigned PY_LONG_LONG val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (unsigned PY_LONG_LONG)-1;
+        val = __Pyx_PyInt_AsUnsignedLongLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE long __Pyx_PyInt_AsLong(PyObject* x) {
+    const long neg_one = (long)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to long");
+            return (long)-1;
+        }
+        return (long)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to long");
+                return (long)-1;
+            }
+            return (long)PyLong_AsUnsignedLong(x);
+        } else {
+            return (long)PyLong_AsLong(x);
+        }
+    } else {
+        long val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (long)-1;
+        val = __Pyx_PyInt_AsLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE PY_LONG_LONG __Pyx_PyInt_AsLongLong(PyObject* x) {
+    const PY_LONG_LONG neg_one = (PY_LONG_LONG)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to PY_LONG_LONG");
+            return (PY_LONG_LONG)-1;
+        }
+        return (PY_LONG_LONG)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to PY_LONG_LONG");
+                return (PY_LONG_LONG)-1;
+            }
+            return (PY_LONG_LONG)PyLong_AsUnsignedLongLong(x);
+        } else {
+            return (PY_LONG_LONG)PyLong_AsLongLong(x);
+        }
+    } else {
+        PY_LONG_LONG val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (PY_LONG_LONG)-1;
+        val = __Pyx_PyInt_AsLongLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE signed long __Pyx_PyInt_AsSignedLong(PyObject* x) {
+    const signed long neg_one = (signed long)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to signed long");
+            return (signed long)-1;
+        }
+        return (signed long)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to signed long");
+                return (signed long)-1;
+            }
+            return (signed long)PyLong_AsUnsignedLong(x);
+        } else {
+            return (signed long)PyLong_AsLong(x);
+        }
+    } else {
+        signed long val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (signed long)-1;
+        val = __Pyx_PyInt_AsSignedLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE signed PY_LONG_LONG __Pyx_PyInt_AsSignedLongLong(PyObject* x) {
+    const signed PY_LONG_LONG neg_one = (signed PY_LONG_LONG)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to signed PY_LONG_LONG");
+            return (signed PY_LONG_LONG)-1;
+        }
+        return (signed PY_LONG_LONG)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to signed PY_LONG_LONG");
+                return (signed PY_LONG_LONG)-1;
+            }
+            return (signed PY_LONG_LONG)PyLong_AsUnsignedLongLong(x);
+        } else {
+            return (signed PY_LONG_LONG)PyLong_AsLongLong(x);
+        }
+    } else {
+        signed PY_LONG_LONG val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (signed PY_LONG_LONG)-1;
+        val = __Pyx_PyInt_AsSignedLongLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static int __Pyx_check_binary_version(void) {
+    char ctversion[4], rtversion[4];
+    PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION);
+    PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion());
+    if (ctversion[0] != rtversion[0] || ctversion[2] != rtversion[2]) {
+        char message[200];
+        PyOS_snprintf(message, sizeof(message),
+                      "compiletime version %s of module '%.100s' "
+                      "does not match runtime version %s",
+                      ctversion, __Pyx_MODULE_NAME, rtversion);
+        #if PY_VERSION_HEX < 0x02050000
+        return PyErr_Warn(NULL, message);
+        #else
+        return PyErr_WarnEx(NULL, message, 1);
+        #endif
+    }
+    return 0;
+}
+
+#ifndef __PYX_HAVE_RT_ImportModule
+#define __PYX_HAVE_RT_ImportModule
+static PyObject *__Pyx_ImportModule(const char *name) {
+    PyObject *py_name = 0;
+    PyObject *py_module = 0;
+    py_name = __Pyx_PyIdentifier_FromString(name);
+    if (!py_name)
+        goto bad;
+    py_module = PyImport_Import(py_name);
+    Py_DECREF(py_name);
+    return py_module;
+bad:
+    Py_XDECREF(py_name);
+    return 0;
+}
+#endif
+
+#ifndef __PYX_HAVE_RT_ImportType
+#define __PYX_HAVE_RT_ImportType
+static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name,
+    size_t size, int strict)
+{
+    PyObject *py_module = 0;
+    PyObject *result = 0;
+    PyObject *py_name = 0;
+    char warning[200];
+    Py_ssize_t basicsize;
+#ifdef Py_LIMITED_API
+    PyObject *py_basicsize;
+#endif
+    py_module = __Pyx_ImportModule(module_name);
+    if (!py_module)
+        goto bad;
+    py_name = __Pyx_PyIdentifier_FromString(class_name);
+    if (!py_name)
+        goto bad;
+    result = PyObject_GetAttr(py_module, py_name);
+    Py_DECREF(py_name);
+    py_name = 0;
+    Py_DECREF(py_module);
+    py_module = 0;
+    if (!result)
+        goto bad;
+    if (!PyType_Check(result)) {
+        PyErr_Format(PyExc_TypeError,
+            "%s.%s is not a type object",
+            module_name, class_name);
+        goto bad;
+    }
+#ifndef Py_LIMITED_API
+    basicsize = ((PyTypeObject *)result)->tp_basicsize;
+#else
+    py_basicsize = PyObject_GetAttrString(result, "__basicsize__");
+    if (!py_basicsize)
+        goto bad;
+    basicsize = PyLong_AsSsize_t(py_basicsize);
+    Py_DECREF(py_basicsize);
+    py_basicsize = 0;
+    if (basicsize == (Py_ssize_t)-1 && PyErr_Occurred())
+        goto bad;
+#endif
+    if (!strict && (size_t)basicsize > size) {
+        PyOS_snprintf(warning, sizeof(warning),
+            "%s.%s size changed, may indicate binary incompatibility",
+            module_name, class_name);
+        #if PY_VERSION_HEX < 0x02050000
+        if (PyErr_Warn(NULL, warning) < 0) goto bad;
+        #else
+        if (PyErr_WarnEx(NULL, warning, 0) < 0) goto bad;
+        #endif
+    }
+    else if ((size_t)basicsize != size) {
+        PyErr_Format(PyExc_ValueError,
+            "%s.%s has the wrong size, try recompiling",
+            module_name, class_name);
+        goto bad;
+    }
+    return (PyTypeObject *)result;
+bad:
+    Py_XDECREF(py_module);
+    Py_XDECREF(result);
+    return NULL;
+}
+#endif
+
+#ifndef __PYX_HAVE_RT_ImportFunction
+#define __PYX_HAVE_RT_ImportFunction
+static int __Pyx_ImportFunction(PyObject *module, const char *funcname, void (**f)(void), const char *sig) {
+    PyObject *d = 0;
+    PyObject *cobj = 0;
+    union {
+        void (*fp)(void);
+        void *p;
+    } tmp;
+    d = PyObject_GetAttrString(module, (char *)"__pyx_capi__");
+    if (!d)
+        goto bad;
+    cobj = PyDict_GetItemString(d, funcname);
+    if (!cobj) {
+        PyErr_Format(PyExc_ImportError,
+            "%s does not export expected C function %s",
+                PyModule_GetName(module), funcname);
+        goto bad;
+    }
+#if PY_VERSION_HEX >= 0x02070000 && !(PY_MAJOR_VERSION==3 && PY_MINOR_VERSION==0)
+    if (!PyCapsule_IsValid(cobj, sig)) {
+        PyErr_Format(PyExc_TypeError,
+            "C function %s.%s has wrong signature (expected %s, got %s)",
+             PyModule_GetName(module), funcname, sig, PyCapsule_GetName(cobj));
+        goto bad;
+    }
+    tmp.p = PyCapsule_GetPointer(cobj, sig);
+#else
+    {const char *desc, *s1, *s2;
+    desc = (const char *)PyCObject_GetDesc(cobj);
+    if (!desc)
+        goto bad;
+    s1 = desc; s2 = sig;
+    while (*s1 != '\0' && *s1 == *s2) { s1++; s2++; }
+    if (*s1 != *s2) {
+        PyErr_Format(PyExc_TypeError,
+            "C function %s.%s has wrong signature (expected %s, got %s)",
+             PyModule_GetName(module), funcname, sig, desc);
+        goto bad;
+    }
+    tmp.p = PyCObject_AsVoidPtr(cobj);}
+#endif
+    *f = tmp.fp;
+    if (!(*f))
+        goto bad;
+    Py_DECREF(d);
+    return 0;
+bad:
+    Py_XDECREF(d);
+    return -1;
+}
+#endif
+
+static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) {
+    int start = 0, mid = 0, end = count - 1;
+    if (end >= 0 && code_line > entries[end].code_line) {
+        return count;
+    }
+    while (start < end) {
+        mid = (start + end) / 2;
+        if (code_line < entries[mid].code_line) {
+            end = mid;
+        } else if (code_line > entries[mid].code_line) {
+             start = mid + 1;
+        } else {
+            return mid;
+        }
+    }
+    if (code_line <= entries[mid].code_line) {
+        return mid;
+    } else {
+        return mid + 1;
+    }
+}
+static PyCodeObject *__pyx_find_code_object(int code_line) {
+    PyCodeObject* code_object;
+    int pos;
+    if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) {
+        return NULL;
+    }
+    pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
+    if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) {
+        return NULL;
+    }
+    code_object = __pyx_code_cache.entries[pos].code_object;
+    Py_INCREF(code_object);
+    return code_object;
+}
+static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) {
+    int pos, i;
+    __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries;
+    if (unlikely(!code_line)) {
+        return;
+    }
+    if (unlikely(!entries)) {
+        entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry));
+        if (likely(entries)) {
+            __pyx_code_cache.entries = entries;
+            __pyx_code_cache.max_count = 64;
+            __pyx_code_cache.count = 1;
+            entries[0].code_line = code_line;
+            entries[0].code_object = code_object;
+            Py_INCREF(code_object);
+        }
+        return;
+    }
+    pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
+    if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) {
+        PyCodeObject* tmp = entries[pos].code_object;
+        entries[pos].code_object = code_object;
+        Py_DECREF(tmp);
+        return;
+    }
+    if (__pyx_code_cache.count == __pyx_code_cache.max_count) {
+        int new_max = __pyx_code_cache.max_count + 64;
+        entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc(
+            __pyx_code_cache.entries, new_max*sizeof(__Pyx_CodeObjectCacheEntry));
+        if (unlikely(!entries)) {
+            return;
+        }
+        __pyx_code_cache.entries = entries;
+        __pyx_code_cache.max_count = new_max;
+    }
+    for (i=__pyx_code_cache.count; i>pos; i--) {
+        entries[i] = entries[i-1];
+    }
+    entries[pos].code_line = code_line;
+    entries[pos].code_object = code_object;
+    __pyx_code_cache.count++;
+    Py_INCREF(code_object);
+}
+
+#include "compile.h"
+#include "frameobject.h"
+#include "traceback.h"
+static PyCodeObject* __Pyx_CreateCodeObjectForTraceback(
+            const char *funcname, int c_line,
+            int py_line, const char *filename) {
+    PyCodeObject *py_code = 0;
+    PyObject *py_srcfile = 0;
+    PyObject *py_funcname = 0;
+    #if PY_MAJOR_VERSION < 3
+    py_srcfile = PyString_FromString(filename);
+    #else
+    py_srcfile = PyUnicode_FromString(filename);
+    #endif
+    if (!py_srcfile) goto bad;
+    if (c_line) {
+        #if PY_MAJOR_VERSION < 3
+        py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
+        #else
+        py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
+        #endif
+    }
+    else {
+        #if PY_MAJOR_VERSION < 3
+        py_funcname = PyString_FromString(funcname);
+        #else
+        py_funcname = PyUnicode_FromString(funcname);
+        #endif
+    }
+    if (!py_funcname) goto bad;
+    py_code = __Pyx_PyCode_New(
+        0,            /*int argcount,*/
+        0,            /*int kwonlyargcount,*/
+        0,            /*int nlocals,*/
+        0,            /*int stacksize,*/
+        0,            /*int flags,*/
+        __pyx_empty_bytes, /*PyObject *code,*/
+        __pyx_empty_tuple, /*PyObject *consts,*/
+        __pyx_empty_tuple, /*PyObject *names,*/
+        __pyx_empty_tuple, /*PyObject *varnames,*/
+        __pyx_empty_tuple, /*PyObject *freevars,*/
+        __pyx_empty_tuple, /*PyObject *cellvars,*/
+        py_srcfile,   /*PyObject *filename,*/
+        py_funcname,  /*PyObject *name,*/
+        py_line,      /*int firstlineno,*/
+        __pyx_empty_bytes  /*PyObject *lnotab*/
+    );
+    Py_DECREF(py_srcfile);
+    Py_DECREF(py_funcname);
+    return py_code;
+bad:
+    Py_XDECREF(py_srcfile);
+    Py_XDECREF(py_funcname);
+    return NULL;
+}
+static void __Pyx_AddTraceback(const char *funcname, int c_line,
+                               int py_line, const char *filename) {
+    PyCodeObject *py_code = 0;
+    PyObject *py_globals = 0;
+    PyFrameObject *py_frame = 0;
+    py_code = __pyx_find_code_object(c_line ? c_line : py_line);
+    if (!py_code) {
+        py_code = __Pyx_CreateCodeObjectForTraceback(
+            funcname, c_line, py_line, filename);
+        if (!py_code) goto bad;
+        __pyx_insert_code_object(c_line ? c_line : py_line, py_code);
+    }
+    py_globals = PyModule_GetDict(__pyx_m);
+    if (!py_globals) goto bad;
+    py_frame = PyFrame_New(
+        PyThreadState_GET(), /*PyThreadState *tstate,*/
+        py_code,             /*PyCodeObject *code,*/
+        py_globals,          /*PyObject *globals,*/
+        0                    /*PyObject *locals*/
+    );
+    if (!py_frame) goto bad;
+    py_frame->f_lineno = py_line;
+    PyTraceBack_Here(py_frame);
+bad:
+    Py_XDECREF(py_code);
+    Py_XDECREF(py_frame);
+}
+
+static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
+    while (t->p) {
+        #if PY_MAJOR_VERSION < 3
+        if (t->is_unicode) {
+            *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL);
+        } else if (t->intern) {
+            *t->p = PyString_InternFromString(t->s);
+        } else {
+            *t->p = PyString_FromStringAndSize(t->s, t->n - 1);
+        }
+        #else  /* Python 3+ has unicode identifiers */
+        if (t->is_unicode | t->is_str) {
+            if (t->intern) {
+                *t->p = PyUnicode_InternFromString(t->s);
+            } else if (t->encoding) {
+                *t->p = PyUnicode_Decode(t->s, t->n - 1, t->encoding, NULL);
+            } else {
+                *t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1);
+            }
+        } else {
+            *t->p = PyBytes_FromStringAndSize(t->s, t->n - 1);
+        }
+        #endif
+        if (!*t->p)
+            return -1;
+        ++t;
+    }
+    return 0;
+}
+
+static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) {
+   int is_true = x == Py_True;
+   if (is_true | (x == Py_False) | (x == Py_None)) return is_true;
+   else return PyObject_IsTrue(x);
+}
+static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x) {
+  PyNumberMethods *m;
+  const char *name = NULL;
+  PyObject *res = NULL;
+#if PY_VERSION_HEX < 0x03000000
+  if (PyInt_Check(x) || PyLong_Check(x))
+#else
+  if (PyLong_Check(x))
+#endif
+    return Py_INCREF(x), x;
+  m = Py_TYPE(x)->tp_as_number;
+#if PY_VERSION_HEX < 0x03000000
+  if (m && m->nb_int) {
+    name = "int";
+    res = PyNumber_Int(x);
+  }
+  else if (m && m->nb_long) {
+    name = "long";
+    res = PyNumber_Long(x);
+  }
+#else
+  if (m && m->nb_int) {
+    name = "int";
+    res = PyNumber_Long(x);
+  }
+#endif
+  if (res) {
+#if PY_VERSION_HEX < 0x03000000
+    if (!PyInt_Check(res) && !PyLong_Check(res)) {
+#else
+    if (!PyLong_Check(res)) {
+#endif
+      PyErr_Format(PyExc_TypeError,
+                   "__%s__ returned non-%s (type %.200s)",
+                   name, name, Py_TYPE(res)->tp_name);
+      Py_DECREF(res);
+      return NULL;
+    }
+  }
+  else if (!PyErr_Occurred()) {
+    PyErr_SetString(PyExc_TypeError,
+                    "an integer is required");
+  }
+  return res;
+}
+static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
+  Py_ssize_t ival;
+  PyObject* x = PyNumber_Index(b);
+  if (!x) return -1;
+  ival = PyInt_AsSsize_t(x);
+  Py_DECREF(x);
+  return ival;
+}
+static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) {
+#if PY_VERSION_HEX < 0x02050000
+   if (ival <= LONG_MAX)
+       return PyInt_FromLong((long)ival);
+   else {
+       unsigned char *bytes = (unsigned char *) &ival;
+       int one = 1; int little = (int)*(unsigned char*)&one;
+       return _PyLong_FromByteArray(bytes, sizeof(size_t), little, 0);
+   }
+#else
+   return PyInt_FromSize_t(ival);
+#endif
+}
+static CYTHON_INLINE size_t __Pyx_PyInt_AsSize_t(PyObject* x) {
+   unsigned PY_LONG_LONG val = __Pyx_PyInt_AsUnsignedLongLong(x);
+   if (unlikely(val == (unsigned PY_LONG_LONG)-1 && PyErr_Occurred())) {
+       return (size_t)-1;
+   } else if (unlikely(val != (unsigned PY_LONG_LONG)(size_t)val)) {
+       PyErr_SetString(PyExc_OverflowError,
+                       "value too large to convert to size_t");
+       return (size_t)-1;
+   }
+   return (size_t)val;
+}
+
+
+#endif /* Py_PYTHON_H */
diff --git a/h5py/h5ds.pxd b/h5py/h5ds.pxd
new file mode 100644
index 0000000..86a3436
--- /dev/null
+++ b/h5py/h5ds.pxd
@@ -0,0 +1,10 @@
+# This file is part of h5py, a Python interface to the HDF5 library.
+#
+# http://www.h5py.org
+#
+# Copyright 2008-2013 Andrew Collette and contributors
+#
+# License:  Standard 3-clause BSD; see "license.txt" for full license terms
+#           and contributor agreement.
+
+from defs cimport *
diff --git a/h5py/h5ds.pyx b/h5py/h5ds.pyx
new file mode 100644
index 0000000..e94881b
--- /dev/null
+++ b/h5py/h5ds.pyx
@@ -0,0 +1,128 @@
+# This file is part of h5py, a Python interface to the HDF5 library.
+#
+# http://www.h5py.org
+#
+# Copyright 2008-2013 Andrew Collette and contributors
+#
+# License:  Standard 3-clause BSD; see "license.txt" for full license terms
+#           and contributor agreement.
+
+"""
+    Low-level HDF5 "H5G" group interface.
+"""
+
+# Compile-time imports
+from h5d cimport DatasetID
+from utils cimport emalloc, efree
+
+
+def set_scale(DatasetID dset not None, char* dimname=''):
+    """(DatasetID dset, STRING dimname)
+
+    Convert dataset dset to a dimension scale, with optional name dimname.
+    """
+    H5DSset_scale(dset.id, dimname)
+
+def is_scale(DatasetID dset not None):
+    """(DatasetID dset)
+
+    Determines whether dset is a dimension scale.
+    """
+    return <bint>(H5DSis_scale(dset.id))
+
+def attach_scale(DatasetID dset not None, DatasetID dscale not None, unsigned
+                 int idx):
+    H5DSattach_scale(dset.id, dscale.id, idx)
+
+def is_attached(DatasetID dset not None, DatasetID dscale not None,
+                unsigned int idx):
+    return <bint>(H5DSis_attached(dset.id, dscale.id, idx))
+
+def detach_scale(DatasetID dset not None, DatasetID dscale not None,
+                 unsigned int idx):
+    H5DSdetach_scale(dset.id, dscale.id, idx)
+
+def get_num_scales(DatasetID dset not None, unsigned int dim):
+    return H5DSget_num_scales(dset.id, dim)
+
+def set_label(DatasetID dset not None, unsigned int idx, char* label):
+    H5DSset_label(dset.id, idx, label)
+
+def get_label(DatasetID dset not None, unsigned int idx):
+    cdef ssize_t size
+    cdef char* label
+    label = NULL
+
+    size = H5DSget_label(dset.id, idx, NULL, 0)
+    if size <= 0:
+        return b''
+    label = <char*>emalloc(sizeof(char)*(size+1))
+    try:
+        H5DSget_label(dset.id, idx, label, size+1)
+        plabel = label
+        return plabel
+    finally:
+        efree(label)
+
+def get_scale_name(DatasetID dscale not None):
+    cdef ssize_t namelen
+    cdef char* name = NULL
+
+    namelen = H5DSget_scale_name(dscale.id, NULL, 0)
+    if namelen <= 0:
+        return b''
+    name = <char*>emalloc(sizeof(char)*(namelen+1))
+    try:
+        H5DSget_scale_name(dscale.id, name, namelen+1)
+        pname = name
+        return pname
+    finally:
+        efree(name)
+
+
+cdef class _DimensionScaleVisitor:
+
+    cdef object func
+    cdef object retval
+
+    def __init__(self, func):
+        self.func = func
+        self.retval = None
+
+
+cdef herr_t cb_ds_iter(hid_t dset, unsigned int dim, hid_t scale, void* vis_in) except 2:
+
+    cdef _DimensionScaleVisitor vis = <_DimensionScaleVisitor>vis_in
+
+    # we did not retrieve the scale identifier using the normal machinery,
+    # so we need to inc_ref it before using it to create a DatasetID.
+    H5Iinc_ref(scale)
+    vis.retval = vis.func(DatasetID.open(scale))
+
+    if vis.retval is not None:
+        return 1
+    return 0
+
+
+def iterate(DatasetID dset not None, unsigned int dim, object func,
+            int startidx=0):
+    """ (DatasetID loc, UINT dim, CALLABLE func, UINT startidx=0)
+    => Return value from func
+
+    Iterate a callable (function, method or callable object) over the
+    members of a group.  Your callable shoutld have the signature::
+
+        func(STRING name) => Result
+
+    Returning None continues iteration; returning anything else aborts
+    iteration and returns that value. Keywords:
+    """
+    if startidx < 0:
+        raise ValueError("Starting index must be non-negative")
+
+    cdef int i = startidx
+    cdef _DimensionScaleVisitor vis = _DimensionScaleVisitor(func)
+
+    H5DSiterate_scales(dset.id, dim, &i, <H5DS_iterate_t>cb_ds_iter, <void*>vis)
+
+    return vis.retval
diff --git a/h5py/h5f.c b/h5py/h5f.c
new file mode 100644
index 0000000..55311eb
--- /dev/null
+++ b/h5py/h5f.c
@@ -0,0 +1,6655 @@
+/* Generated by Cython 0.18 on Mon Dec  9 16:00:33 2013 */
+
+#define PY_SSIZE_T_CLEAN
+#include "Python.h"
+#ifndef Py_PYTHON_H
+    #error Python headers needed to compile C extensions, please install development version of Python.
+#elif PY_VERSION_HEX < 0x02040000
+    #error Cython requires Python 2.4+.
+#else
+#include <stddef.h> /* For offsetof */
+#ifndef offsetof
+#define offsetof(type, member) ( (size_t) & ((type*)0) -> member )
+#endif
+#if !defined(WIN32) && !defined(MS_WINDOWS)
+  #ifndef __stdcall
+    #define __stdcall
+  #endif
+  #ifndef __cdecl
+    #define __cdecl
+  #endif
+  #ifndef __fastcall
+    #define __fastcall
+  #endif
+#endif
+#ifndef DL_IMPORT
+  #define DL_IMPORT(t) t
+#endif
+#ifndef DL_EXPORT
+  #define DL_EXPORT(t) t
+#endif
+#ifndef PY_LONG_LONG
+  #define PY_LONG_LONG LONG_LONG
+#endif
+#ifndef Py_HUGE_VAL
+  #define Py_HUGE_VAL HUGE_VAL
+#endif
+#ifdef PYPY_VERSION
+#define CYTHON_COMPILING_IN_PYPY 1
+#define CYTHON_COMPILING_IN_CPYTHON 0
+#else
+#define CYTHON_COMPILING_IN_PYPY 0
+#define CYTHON_COMPILING_IN_CPYTHON 1
+#endif
+#if PY_VERSION_HEX < 0x02050000
+  typedef int Py_ssize_t;
+  #define PY_SSIZE_T_MAX INT_MAX
+  #define PY_SSIZE_T_MIN INT_MIN
+  #define PY_FORMAT_SIZE_T ""
+  #define CYTHON_FORMAT_SSIZE_T ""
+  #define PyInt_FromSsize_t(z) PyInt_FromLong(z)
+  #define PyInt_AsSsize_t(o)   __Pyx_PyInt_AsInt(o)
+  #define PyNumber_Index(o)    ((PyNumber_Check(o) && !PyFloat_Check(o)) ? PyNumber_Int(o) : \
+                                (PyErr_Format(PyExc_TypeError, \
+                                              "expected index value, got %.200s", Py_TYPE(o)->tp_name), \
+                                 (PyObject*)0))
+  #define __Pyx_PyIndex_Check(o) (PyNumber_Check(o) && !PyFloat_Check(o) && \
+                                  !PyComplex_Check(o))
+  #define PyIndex_Check __Pyx_PyIndex_Check
+  #define PyErr_WarnEx(category, message, stacklevel) PyErr_Warn(category, message)
+  #define __PYX_BUILD_PY_SSIZE_T "i"
+#else
+  #define __PYX_BUILD_PY_SSIZE_T "n"
+  #define CYTHON_FORMAT_SSIZE_T "z"
+  #define __Pyx_PyIndex_Check PyIndex_Check
+#endif
+#if PY_VERSION_HEX < 0x02060000
+  #define Py_REFCNT(ob) (((PyObject*)(ob))->ob_refcnt)
+  #define Py_TYPE(ob)   (((PyObject*)(ob))->ob_type)
+  #define Py_SIZE(ob)   (((PyVarObject*)(ob))->ob_size)
+  #define PyVarObject_HEAD_INIT(type, size) \
+          PyObject_HEAD_INIT(type) size,
+  #define PyType_Modified(t)
+  typedef struct {
+     void *buf;
+     PyObject *obj;
+     Py_ssize_t len;
+     Py_ssize_t itemsize;
+     int readonly;
+     int ndim;
+     char *format;
+     Py_ssize_t *shape;
+     Py_ssize_t *strides;
+     Py_ssize_t *suboffsets;
+     void *internal;
+  } Py_buffer;
+  #define PyBUF_SIMPLE 0
+  #define PyBUF_WRITABLE 0x0001
+  #define PyBUF_FORMAT 0x0004
+  #define PyBUF_ND 0x0008
+  #define PyBUF_STRIDES (0x0010 | PyBUF_ND)
+  #define PyBUF_C_CONTIGUOUS (0x0020 | PyBUF_STRIDES)
+  #define PyBUF_F_CONTIGUOUS (0x0040 | PyBUF_STRIDES)
+  #define PyBUF_ANY_CONTIGUOUS (0x0080 | PyBUF_STRIDES)
+  #define PyBUF_INDIRECT (0x0100 | PyBUF_STRIDES)
+  #define PyBUF_RECORDS (PyBUF_STRIDES | PyBUF_FORMAT | PyBUF_WRITABLE)
+  #define PyBUF_FULL (PyBUF_INDIRECT | PyBUF_FORMAT | PyBUF_WRITABLE)
+  typedef int (*getbufferproc)(PyObject *, Py_buffer *, int);
+  typedef void (*releasebufferproc)(PyObject *, Py_buffer *);
+#endif
+#if PY_MAJOR_VERSION < 3
+  #define __Pyx_BUILTIN_MODULE_NAME "__builtin__"
+  #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) \
+          PyCode_New(a, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
+#else
+  #define __Pyx_BUILTIN_MODULE_NAME "builtins"
+  #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) \
+          PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
+#endif
+#if PY_MAJOR_VERSION < 3 && PY_MINOR_VERSION < 6
+  #define PyUnicode_FromString(s) PyUnicode_Decode(s, strlen(s), "UTF-8", "strict")
+#endif
+#if PY_MAJOR_VERSION >= 3
+  #define Py_TPFLAGS_CHECKTYPES 0
+  #define Py_TPFLAGS_HAVE_INDEX 0
+#endif
+#if (PY_VERSION_HEX < 0x02060000) || (PY_MAJOR_VERSION >= 3)
+  #define Py_TPFLAGS_HAVE_NEWBUFFER 0
+#endif
+#if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND)
+  #define CYTHON_PEP393_ENABLED 1
+  #define __Pyx_PyUnicode_READY(op)       (likely(PyUnicode_IS_READY(op)) ? \
+                                              0 : _PyUnicode_Ready((PyObject *)(op)))
+  #define __Pyx_PyUnicode_GET_LENGTH(u)   PyUnicode_GET_LENGTH(u)
+  #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i)
+  #define __Pyx_PyUnicode_READ(k, d, i)   PyUnicode_READ(k, d, i)
+#else
+  #define CYTHON_PEP393_ENABLED 0
+  #define __Pyx_PyUnicode_READY(op)       (0)
+  #define __Pyx_PyUnicode_GET_LENGTH(u)   PyUnicode_GET_SIZE(u)
+  #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i]))
+  #define __Pyx_PyUnicode_READ(k, d, i)   ((k=k), (Py_UCS4)(((Py_UNICODE*)d)[i]))
+#endif
+#if PY_MAJOR_VERSION >= 3
+  #define PyBaseString_Type            PyUnicode_Type
+  #define PyStringObject               PyUnicodeObject
+  #define PyString_Type                PyUnicode_Type
+  #define PyString_Check               PyUnicode_Check
+  #define PyString_CheckExact          PyUnicode_CheckExact
+#endif
+#if PY_VERSION_HEX < 0x02060000
+  #define PyBytesObject                PyStringObject
+  #define PyBytes_Type                 PyString_Type
+  #define PyBytes_Check                PyString_Check
+  #define PyBytes_CheckExact           PyString_CheckExact
+  #define PyBytes_FromString           PyString_FromString
+  #define PyBytes_FromStringAndSize    PyString_FromStringAndSize
+  #define PyBytes_FromFormat           PyString_FromFormat
+  #define PyBytes_DecodeEscape         PyString_DecodeEscape
+  #define PyBytes_AsString             PyString_AsString
+  #define PyBytes_AsStringAndSize      PyString_AsStringAndSize
+  #define PyBytes_Size                 PyString_Size
+  #define PyBytes_AS_STRING            PyString_AS_STRING
+  #define PyBytes_GET_SIZE             PyString_GET_SIZE
+  #define PyBytes_Repr                 PyString_Repr
+  #define PyBytes_Concat               PyString_Concat
+  #define PyBytes_ConcatAndDel         PyString_ConcatAndDel
+#endif
+#if PY_VERSION_HEX < 0x02060000
+  #define PySet_Check(obj)             PyObject_TypeCheck(obj, &PySet_Type)
+  #define PyFrozenSet_Check(obj)       PyObject_TypeCheck(obj, &PyFrozenSet_Type)
+#endif
+#ifndef PySet_CheckExact
+  #define PySet_CheckExact(obj)        (Py_TYPE(obj) == &PySet_Type)
+#endif
+#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type)
+#if PY_MAJOR_VERSION >= 3
+  #define PyIntObject                  PyLongObject
+  #define PyInt_Type                   PyLong_Type
+  #define PyInt_Check(op)              PyLong_Check(op)
+  #define PyInt_CheckExact(op)         PyLong_CheckExact(op)
+  #define PyInt_FromString             PyLong_FromString
+  #define PyInt_FromUnicode            PyLong_FromUnicode
+  #define PyInt_FromLong               PyLong_FromLong
+  #define PyInt_FromSize_t             PyLong_FromSize_t
+  #define PyInt_FromSsize_t            PyLong_FromSsize_t
+  #define PyInt_AsLong                 PyLong_AsLong
+  #define PyInt_AS_LONG                PyLong_AS_LONG
+  #define PyInt_AsSsize_t              PyLong_AsSsize_t
+  #define PyInt_AsUnsignedLongMask     PyLong_AsUnsignedLongMask
+  #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask
+#endif
+#if PY_MAJOR_VERSION >= 3
+  #define PyBoolObject                 PyLongObject
+#endif
+#if PY_VERSION_HEX < 0x03020000
+  typedef long Py_hash_t;
+  #define __Pyx_PyInt_FromHash_t PyInt_FromLong
+  #define __Pyx_PyInt_AsHash_t   PyInt_AsLong
+#else
+  #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t
+  #define __Pyx_PyInt_AsHash_t   PyInt_AsSsize_t
+#endif
+#if (PY_MAJOR_VERSION < 3) || (PY_VERSION_HEX >= 0x03010300)
+  #define __Pyx_PySequence_GetSlice(obj, a, b) PySequence_GetSlice(obj, a, b)
+  #define __Pyx_PySequence_SetSlice(obj, a, b, value) PySequence_SetSlice(obj, a, b, value)
+  #define __Pyx_PySequence_DelSlice(obj, a, b) PySequence_DelSlice(obj, a, b)
+#else
+  #define __Pyx_PySequence_GetSlice(obj, a, b) (unlikely(!(obj)) ? \
+        (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), (PyObject*)0) : \
+        (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_GetSlice(obj, a, b)) : \
+            (PyErr_Format(PyExc_TypeError, "'%.200s' object is unsliceable", (obj)->ob_type->tp_name), (PyObject*)0)))
+  #define __Pyx_PySequence_SetSlice(obj, a, b, value) (unlikely(!(obj)) ? \
+        (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), -1) : \
+        (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_SetSlice(obj, a, b, value)) : \
+            (PyErr_Format(PyExc_TypeError, "'%.200s' object doesn't support slice assignment", (obj)->ob_type->tp_name), -1)))
+  #define __Pyx_PySequence_DelSlice(obj, a, b) (unlikely(!(obj)) ? \
+        (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), -1) : \
+        (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_DelSlice(obj, a, b)) : \
+            (PyErr_Format(PyExc_TypeError, "'%.200s' object doesn't support slice deletion", (obj)->ob_type->tp_name), -1)))
+#endif
+#if PY_MAJOR_VERSION >= 3
+  #define PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, self) : PyInstanceMethod_New(func))
+#endif
+#if PY_VERSION_HEX < 0x02050000
+  #define __Pyx_GetAttrString(o,n)   PyObject_GetAttrString((o),((char *)(n)))
+  #define __Pyx_SetAttrString(o,n,a) PyObject_SetAttrString((o),((char *)(n)),(a))
+  #define __Pyx_DelAttrString(o,n)   PyObject_DelAttrString((o),((char *)(n)))
+#else
+  #define __Pyx_GetAttrString(o,n)   PyObject_GetAttrString((o),(n))
+  #define __Pyx_SetAttrString(o,n,a) PyObject_SetAttrString((o),(n),(a))
+  #define __Pyx_DelAttrString(o,n)   PyObject_DelAttrString((o),(n))
+#endif
+#if PY_VERSION_HEX < 0x02050000
+  #define __Pyx_NAMESTR(n) ((char *)(n))
+  #define __Pyx_DOCSTR(n)  ((char *)(n))
+#else
+  #define __Pyx_NAMESTR(n) (n)
+  #define __Pyx_DOCSTR(n)  (n)
+#endif
+
+
+#if PY_MAJOR_VERSION >= 3
+  #define __Pyx_PyNumber_Divide(x,y)         PyNumber_TrueDivide(x,y)
+  #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceTrueDivide(x,y)
+#else
+  #define __Pyx_PyNumber_Divide(x,y)         PyNumber_Divide(x,y)
+  #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceDivide(x,y)
+#endif
+
+#ifndef __PYX_EXTERN_C
+  #ifdef __cplusplus
+    #define __PYX_EXTERN_C extern "C"
+  #else
+    #define __PYX_EXTERN_C extern
+  #endif
+#endif
+
+#if defined(WIN32) || defined(MS_WINDOWS)
+#define _USE_MATH_DEFINES
+#endif
+#include <math.h>
+#define __PYX_HAVE__h5py__h5f
+#define __PYX_HAVE_API__h5py__h5f
+#include "stdlib.h"
+#include "string.h"
+#include "time.h"
+#include "unistd.h"
+#include "stdint.h"
+#include "api_compat.h"
+#include "lzf_filter.h"
+#include "hdf5.h"
+#include "H5Cpublic.h"
+#include "hdf5_hl.h"
+#include "numpy/arrayobject.h"
+#ifdef _OPENMP
+#include <omp.h>
+#endif /* _OPENMP */
+
+#ifdef PYREX_WITHOUT_ASSERTIONS
+#define CYTHON_WITHOUT_ASSERTIONS
+#endif
+
+#ifndef CYTHON_INLINE
+  #if defined(__GNUC__)
+    #define CYTHON_INLINE __inline__
+  #elif defined(_MSC_VER)
+    #define CYTHON_INLINE __inline
+  #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+    #define CYTHON_INLINE inline
+  #else
+    #define CYTHON_INLINE
+  #endif
+#endif
+#ifndef CYTHON_UNUSED
+# if defined(__GNUC__)
+#   if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
+#     define CYTHON_UNUSED __attribute__ ((__unused__))
+#   else
+#     define CYTHON_UNUSED
+#   endif
+# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER))
+#   define CYTHON_UNUSED __attribute__ ((__unused__))
+# else
+#   define CYTHON_UNUSED
+# endif
+#endif
+typedef struct {PyObject **p; char *s; const long n; const char* encoding; const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; /*proto*/
+
+#define __Pyx_PyBytes_FromUString(s) PyBytes_FromString((char*)s)
+#define __Pyx_PyBytes_AsUString(s)   ((unsigned char*) PyBytes_AsString(s))
+#define __Pyx_Owned_Py_None(b) (Py_INCREF(Py_None), Py_None)
+#define __Pyx_PyBool_FromLong(b) ((b) ? (Py_INCREF(Py_True), Py_True) : (Py_INCREF(Py_False), Py_False))
+static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*);
+static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x);
+static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*);
+static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t);
+static CYTHON_INLINE size_t __Pyx_PyInt_AsSize_t(PyObject*);
+#if CYTHON_COMPILING_IN_CPYTHON
+#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x))
+#else
+#define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x)
+#endif
+#define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x))
+
+
+#ifdef __GNUC__
+  /* Test for GCC > 2.95 */
+  #if __GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))
+    #define likely(x)   __builtin_expect(!!(x), 1)
+    #define unlikely(x) __builtin_expect(!!(x), 0)
+  #else /* __GNUC__ > 2 ... */
+    #define likely(x)   (x)
+    #define unlikely(x) (x)
+  #endif /* __GNUC__ > 2 ... */
+#else /* __GNUC__ */
+  #define likely(x)   (x)
+  #define unlikely(x) (x)
+#endif /* __GNUC__ */
+    
+static PyObject *__pyx_m;
+static PyObject *__pyx_b;
+static PyObject *__pyx_empty_tuple;
+static PyObject *__pyx_empty_bytes;
+static int __pyx_lineno;
+static int __pyx_clineno = 0;
+static const char * __pyx_cfilenm= __FILE__;
+static const char *__pyx_filename;
+
+
+static const char *__pyx_f[] = {
+  "h5f.pyx",
+  "_objects.pxd",
+  "h5p.pxd",
+  "h5t.pxd",
+  "h5ac.pxd",
+  "numpy.pxd",
+};
+
+/*--- Type declarations ---*/
+struct __pyx_obj_4h5py_8_objects_ObjectID;
+struct __pyx_obj_4h5py_3h5p_PropID;
+struct __pyx_obj_4h5py_3h5p_PropInstanceID;
+struct __pyx_obj_4h5py_3h5p_PropFAID;
+struct __pyx_obj_4h5py_4h5ac_CacheConfig;
+struct __pyx_obj_4h5py_3h5t_TypeID;
+struct __pyx_obj_4h5py_3h5t_TypeBitfieldID;
+struct __pyx_obj_4h5py_3h5p_PropCreateID;
+struct __pyx_obj_4h5py_3h5p_PropFCID;
+struct __pyx_obj_4h5py_3h5p_PropClassID;
+struct __pyx_obj_4h5py_3h5t_TypeCompositeID;
+struct __pyx_obj_4h5py_3h5t_TypeCompoundID;
+struct __pyx_obj_4h5py_3h5t_TypeVlenID;
+struct __pyx_obj_4h5py_3h5p_PropOCID;
+struct __pyx_obj_4h5py_3h5p_PropLCID;
+struct __pyx_obj_4h5py_3h5g_GroupID;
+struct __pyx_obj_4h5py_3h5p_PropGCID;
+struct __pyx_obj_4h5py_3h5p_PropDCID;
+struct __pyx_obj_4h5py_3h5t_TypeTimeID;
+struct __pyx_obj_4h5py_3h5t_TypeArrayID;
+struct __pyx_obj_4h5py_3h5t_TypeAtomicID;
+struct __pyx_obj_4h5py_3h5f_FileID;
+struct __pyx_obj_4h5py_3h5t_TypeFloatID;
+struct __pyx_obj_4h5py_3h5t_TypeStringID;
+struct __pyx_obj_4h5py_3h5t_TypeOpaqueID;
+struct __pyx_obj_4h5py_3h5t_TypeEnumID;
+struct __pyx_obj_4h5py_3h5p_PropCopyID;
+struct __pyx_obj_4h5py_3h5t_TypeIntegerID;
+struct __pyx_obj_4h5py_3h5t_TypeReferenceID;
+struct __pyx_obj_4h5py_3h5p_PropDXID;
+struct __pyx_obj_4h5py_3h5p_PropLAID;
+struct __pyx_opt_args_4h5py_3h5t_py_create;
+
+/* "h5t.pxd":69
+ * 
+ * cpdef TypeID typewrap(hid_t id_)
+ * cpdef TypeID py_create(object dtype, bint logical=*)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+struct __pyx_opt_args_4h5py_3h5t_py_create {
+  int __pyx_n;
+  int logical;
+};
+struct __pyx_opt_args_4h5py_5utils_check_numpy_read;
+struct __pyx_opt_args_4h5py_5utils_check_numpy_write;
+
+/* "utils.pxd":17
+ * cdef void efree(void* ptr)
+ * 
+ * cpdef int check_numpy_read(ndarray arr, hid_t space_id=*) except -1             # <<<<<<<<<<<<<<
+ * cpdef int check_numpy_write(ndarray arr, hid_t space_id=*) except -1
+ * 
+ */
+struct __pyx_opt_args_4h5py_5utils_check_numpy_read {
+  int __pyx_n;
+  hid_t space_id;
+};
+
+/* "utils.pxd":18
+ * 
+ * cpdef int check_numpy_read(ndarray arr, hid_t space_id=*) except -1
+ * cpdef int check_numpy_write(ndarray arr, hid_t space_id=*) except -1             # <<<<<<<<<<<<<<
+ * 
+ * cdef int convert_tuple(object tuple, hsize_t *dims, hsize_t rank) except -1
+ */
+struct __pyx_opt_args_4h5py_5utils_check_numpy_write {
+  int __pyx_n;
+  hid_t space_id;
+};
+
+/* "_objects.pxd":12
+ * from defs cimport *
+ * 
+ * cdef class ObjectID:             # <<<<<<<<<<<<<<
+ * 
+ *     cdef object __weakref__
+ */
+struct __pyx_obj_4h5py_8_objects_ObjectID {
+  PyObject_HEAD
+  PyObject *__weakref__;
+  hid_t id;
+  int locked;
+  PyObject *_hash;
+};
+
+
+/* "h5p.pxd":16
+ * # --- Base classes ---
+ * 
+ * cdef class PropID(ObjectID):             # <<<<<<<<<<<<<<
+ *     """ Base class for all property lists """
+ *     pass
+ */
+struct __pyx_obj_4h5py_3h5p_PropID {
+  struct __pyx_obj_4h5py_8_objects_ObjectID __pyx_base;
+};
+
+
+/* "h5p.pxd":26
+ *     pass
+ * 
+ * cdef class PropInstanceID(PropID):             # <<<<<<<<<<<<<<
+ *     """ Represents an instance of a property list class (i.e. an actual list
+ *         which can be passed on to other API functions).
+ */
+struct __pyx_obj_4h5py_3h5p_PropInstanceID {
+  struct __pyx_obj_4h5py_3h5p_PropID __pyx_base;
+};
+
+
+/* "h5p.pxd":59
+ * # --- Object access ---
+ * 
+ * cdef class PropFAID(PropInstanceID):             # <<<<<<<<<<<<<<
+ *     """ File access property list """
+ *     pass
+ */
+struct __pyx_obj_4h5py_3h5p_PropFAID {
+  struct __pyx_obj_4h5py_3h5p_PropInstanceID __pyx_base;
+};
+
+
+/* "h5ac.pxd":12
+ * from defs cimport *
+ * 
+ * cdef class CacheConfig:             # <<<<<<<<<<<<<<
+ *     cdef H5AC_cache_config_t cache_config
+ */
+struct __pyx_obj_4h5py_4h5ac_CacheConfig {
+  PyObject_HEAD
+  H5AC_cache_config_t cache_config;
+};
+
+
+/* "h5t.pxd":14
+ * from _objects cimport class ObjectID
+ * 
+ * cdef class TypeID(ObjectID):             # <<<<<<<<<<<<<<
+ * 
+ *     cdef object py_dtype(self)
+ */
+struct __pyx_obj_4h5py_3h5t_TypeID {
+  struct __pyx_obj_4h5py_8_objects_ObjectID __pyx_base;
+  struct __pyx_vtabstruct_4h5py_3h5t_TypeID *__pyx_vtab;
+};
+
+
+/* "h5t.pxd":37
+ *     pass
+ * 
+ * cdef class TypeBitfieldID(TypeID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+struct __pyx_obj_4h5py_3h5t_TypeBitfieldID {
+  struct __pyx_obj_4h5py_3h5t_TypeID __pyx_base;
+};
+
+
+/* "h5p.pxd":32
+ *     pass
+ * 
+ * cdef class PropCreateID(PropInstanceID):             # <<<<<<<<<<<<<<
+ *     """ Base class for all object creation lists.
+ * 
+ */
+struct __pyx_obj_4h5py_3h5p_PropCreateID {
+  struct __pyx_obj_4h5py_3h5p_PropInstanceID __pyx_base;
+};
+
+
+/* "h5p.pxd":52
+ *     pass
+ * 
+ * cdef class PropFCID(PropCreateID):             # <<<<<<<<<<<<<<
+ *     """ File creation property list """
+ *     pass
+ */
+struct __pyx_obj_4h5py_3h5p_PropFCID {
+  struct __pyx_obj_4h5py_3h5p_PropCreateID __pyx_base;
+};
+
+
+/* "h5p.pxd":20
+ *     pass
+ * 
+ * cdef class PropClassID(PropID):             # <<<<<<<<<<<<<<
+ *     """ Represents an HDF5 property list class.  These can be either (locked)
+ *         library-defined classes or user-created classes.
+ */
+struct __pyx_obj_4h5py_3h5p_PropClassID {
+  struct __pyx_obj_4h5py_3h5p_PropID __pyx_base;
+};
+
+
+/* "h5t.pxd":56
+ * # --- Enums & compound types ---
+ * 
+ * cdef class TypeCompositeID(TypeID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+struct __pyx_obj_4h5py_3h5t_TypeCompositeID {
+  struct __pyx_obj_4h5py_3h5t_TypeID __pyx_base;
+};
+
+
+/* "h5t.pxd":63
+ *     cdef int enum_convert(self, long long *buf, int reverse) except -1
+ * 
+ * cdef class TypeCompoundID(TypeCompositeID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+struct __pyx_obj_4h5py_3h5t_TypeCompoundID {
+  struct __pyx_obj_4h5py_3h5t_TypeCompositeID __pyx_base;
+};
+
+
+/* "h5t.pxd":30
+ *     pass
+ * 
+ * cdef class TypeVlenID(TypeID):             # <<<<<<<<<<<<<<
+ *     # Non-string vlens
+ *     pass
+ */
+struct __pyx_obj_4h5py_3h5t_TypeVlenID {
+  struct __pyx_obj_4h5py_3h5t_TypeID __pyx_base;
+};
+
+
+/* "h5p.pxd":44
+ * # --- Object creation ---
+ * 
+ * cdef class PropOCID(PropCreateID):             # <<<<<<<<<<<<<<
+ *     """ Object creation property list """
+ *     pass
+ */
+struct __pyx_obj_4h5py_3h5p_PropOCID {
+  struct __pyx_obj_4h5py_3h5p_PropCreateID __pyx_base;
+};
+
+
+/* "h5p.pxd":70
+ * # --- New in 1.8 ---
+ * 
+ * cdef class PropLCID(PropCreateID):             # <<<<<<<<<<<<<<
+ *     """ Link creation property list """
+ *     pass
+ */
+struct __pyx_obj_4h5py_3h5p_PropLCID {
+  struct __pyx_obj_4h5py_3h5p_PropCreateID __pyx_base;
+};
+
+
+/* "h5g.pxd":14
+ * from _objects cimport ObjectID
+ * 
+ * cdef class GroupID(ObjectID):             # <<<<<<<<<<<<<<
+ * 
+ *     cdef readonly object links
+ */
+struct __pyx_obj_4h5py_3h5g_GroupID {
+  struct __pyx_obj_4h5py_8_objects_ObjectID __pyx_base;
+  PyObject *links;
+};
+
+
+/* "h5p.pxd":78
+ *     cdef char* _buf
+ * 
+ * cdef class PropGCID(PropOCID):             # <<<<<<<<<<<<<<
+ *     """ Group creation property list """
+ *     pass
+ */
+struct __pyx_obj_4h5py_3h5p_PropGCID {
+  struct __pyx_obj_4h5py_3h5p_PropOCID __pyx_base;
+};
+
+
+/* "h5p.pxd":48
+ *     pass
+ * 
+ * cdef class PropDCID(PropOCID):             # <<<<<<<<<<<<<<
+ *     """ Dataset creation property list """
+ *     pass
+ */
+struct __pyx_obj_4h5py_3h5p_PropDCID {
+  struct __pyx_obj_4h5py_3h5p_PropOCID __pyx_base;
+};
+
+
+/* "h5t.pxd":34
+ *     pass
+ * 
+ * cdef class TypeTimeID(TypeID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+struct __pyx_obj_4h5py_3h5t_TypeTimeID {
+  struct __pyx_obj_4h5py_3h5t_TypeID __pyx_base;
+};
+
+
+/* "h5t.pxd":20
+ * # --- Top-level classes ---
+ * 
+ * cdef class TypeArrayID(TypeID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+struct __pyx_obj_4h5py_3h5t_TypeArrayID {
+  struct __pyx_obj_4h5py_3h5t_TypeID __pyx_base;
+};
+
+
+/* "h5t.pxd":45
+ * # --- Numeric atomic types ---
+ * 
+ * cdef class TypeAtomicID(TypeID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+struct __pyx_obj_4h5py_3h5t_TypeAtomicID {
+  struct __pyx_obj_4h5py_3h5t_TypeID __pyx_base;
+};
+
+
+/* "h5py/h5f.pxd":15
+ * from h5g cimport GroupID
+ * 
+ * cdef class FileID(GroupID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+struct __pyx_obj_4h5py_3h5f_FileID {
+  struct __pyx_obj_4h5py_3h5g_GroupID __pyx_base;
+};
+
+
+/* "h5t.pxd":51
+ *     pass
+ * 
+ * cdef class TypeFloatID(TypeAtomicID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+struct __pyx_obj_4h5py_3h5t_TypeFloatID {
+  struct __pyx_obj_4h5py_3h5t_TypeAtomicID __pyx_base;
+};
+
+
+/* "h5t.pxd":26
+ *     pass
+ * 
+ * cdef class TypeStringID(TypeID):             # <<<<<<<<<<<<<<
+ *     # Both vlen and fixed-len strings
+ *     pass
+ */
+struct __pyx_obj_4h5py_3h5t_TypeStringID {
+  struct __pyx_obj_4h5py_3h5t_TypeID __pyx_base;
+};
+
+
+/* "h5t.pxd":23
+ *     pass
+ * 
+ * cdef class TypeOpaqueID(TypeID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+struct __pyx_obj_4h5py_3h5t_TypeOpaqueID {
+  struct __pyx_obj_4h5py_3h5t_TypeID __pyx_base;
+};
+
+
+/* "h5t.pxd":59
+ *     pass
+ * 
+ * cdef class TypeEnumID(TypeCompositeID):             # <<<<<<<<<<<<<<
+ * 
+ *     cdef int enum_convert(self, long long *buf, int reverse) except -1
+ */
+struct __pyx_obj_4h5py_3h5t_TypeEnumID {
+  struct __pyx_obj_4h5py_3h5t_TypeCompositeID __pyx_base;
+};
+
+
+/* "h5p.pxd":39
+ *     pass
+ * 
+ * cdef class PropCopyID(PropInstanceID):             # <<<<<<<<<<<<<<
+ *     """ Property list for copying objects (as in h5o.copy) """
+ * 
+ */
+struct __pyx_obj_4h5py_3h5p_PropCopyID {
+  struct __pyx_obj_4h5py_3h5p_PropInstanceID __pyx_base;
+};
+
+
+/* "h5t.pxd":48
+ *     pass
+ * 
+ * cdef class TypeIntegerID(TypeAtomicID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+struct __pyx_obj_4h5py_3h5t_TypeIntegerID {
+  struct __pyx_obj_4h5py_3h5t_TypeAtomicID __pyx_base;
+};
+
+
+/* "h5t.pxd":40
+ *     pass
+ * 
+ * cdef class TypeReferenceID(TypeID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+struct __pyx_obj_4h5py_3h5t_TypeReferenceID {
+  struct __pyx_obj_4h5py_3h5t_TypeID __pyx_base;
+};
+
+
+/* "h5p.pxd":63
+ *     pass
+ * 
+ * cdef class PropDXID(PropInstanceID):             # <<<<<<<<<<<<<<
+ *     """ Dataset transfer property list """
+ *     pass
+ */
+struct __pyx_obj_4h5py_3h5p_PropDXID {
+  struct __pyx_obj_4h5py_3h5p_PropInstanceID __pyx_base;
+};
+
+
+/* "h5p.pxd":74
+ *     pass
+ * 
+ * cdef class PropLAID(PropInstanceID):             # <<<<<<<<<<<<<<
+ *     """ Link access property list """
+ *     cdef char* _buf
+ */
+struct __pyx_obj_4h5py_3h5p_PropLAID {
+  struct __pyx_obj_4h5py_3h5p_PropInstanceID __pyx_base;
+  char *_buf;
+};
+
+
+
+/* "h5t.pxd":14
+ * from _objects cimport class ObjectID
+ * 
+ * cdef class TypeID(ObjectID):             # <<<<<<<<<<<<<<
+ * 
+ *     cdef object py_dtype(self)
+ */
+
+struct __pyx_vtabstruct_4h5py_3h5t_TypeID {
+  PyObject *(*py_dtype)(struct __pyx_obj_4h5py_3h5t_TypeID *);
+};
+static struct __pyx_vtabstruct_4h5py_3h5t_TypeID *__pyx_vtabptr_4h5py_3h5t_TypeID;
+
+
+/* "h5t.pxd":56
+ * # --- Enums & compound types ---
+ * 
+ * cdef class TypeCompositeID(TypeID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+
+struct __pyx_vtabstruct_4h5py_3h5t_TypeCompositeID {
+  struct __pyx_vtabstruct_4h5py_3h5t_TypeID __pyx_base;
+};
+static struct __pyx_vtabstruct_4h5py_3h5t_TypeCompositeID *__pyx_vtabptr_4h5py_3h5t_TypeCompositeID;
+
+
+/* "h5t.pxd":63
+ *     cdef int enum_convert(self, long long *buf, int reverse) except -1
+ * 
+ * cdef class TypeCompoundID(TypeCompositeID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+
+struct __pyx_vtabstruct_4h5py_3h5t_TypeCompoundID {
+  struct __pyx_vtabstruct_4h5py_3h5t_TypeCompositeID __pyx_base;
+};
+static struct __pyx_vtabstruct_4h5py_3h5t_TypeCompoundID *__pyx_vtabptr_4h5py_3h5t_TypeCompoundID;
+
+
+/* "h5t.pxd":23
+ *     pass
+ * 
+ * cdef class TypeOpaqueID(TypeID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+
+struct __pyx_vtabstruct_4h5py_3h5t_TypeOpaqueID {
+  struct __pyx_vtabstruct_4h5py_3h5t_TypeID __pyx_base;
+};
+static struct __pyx_vtabstruct_4h5py_3h5t_TypeOpaqueID *__pyx_vtabptr_4h5py_3h5t_TypeOpaqueID;
+
+
+/* "h5t.pxd":20
+ * # --- Top-level classes ---
+ * 
+ * cdef class TypeArrayID(TypeID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+
+struct __pyx_vtabstruct_4h5py_3h5t_TypeArrayID {
+  struct __pyx_vtabstruct_4h5py_3h5t_TypeID __pyx_base;
+};
+static struct __pyx_vtabstruct_4h5py_3h5t_TypeArrayID *__pyx_vtabptr_4h5py_3h5t_TypeArrayID;
+
+
+/* "h5t.pxd":45
+ * # --- Numeric atomic types ---
+ * 
+ * cdef class TypeAtomicID(TypeID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+
+struct __pyx_vtabstruct_4h5py_3h5t_TypeAtomicID {
+  struct __pyx_vtabstruct_4h5py_3h5t_TypeID __pyx_base;
+};
+static struct __pyx_vtabstruct_4h5py_3h5t_TypeAtomicID *__pyx_vtabptr_4h5py_3h5t_TypeAtomicID;
+
+
+/* "h5t.pxd":48
+ *     pass
+ * 
+ * cdef class TypeIntegerID(TypeAtomicID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+
+struct __pyx_vtabstruct_4h5py_3h5t_TypeIntegerID {
+  struct __pyx_vtabstruct_4h5py_3h5t_TypeAtomicID __pyx_base;
+};
+static struct __pyx_vtabstruct_4h5py_3h5t_TypeIntegerID *__pyx_vtabptr_4h5py_3h5t_TypeIntegerID;
+
+
+/* "h5t.pxd":40
+ *     pass
+ * 
+ * cdef class TypeReferenceID(TypeID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+
+struct __pyx_vtabstruct_4h5py_3h5t_TypeReferenceID {
+  struct __pyx_vtabstruct_4h5py_3h5t_TypeID __pyx_base;
+};
+static struct __pyx_vtabstruct_4h5py_3h5t_TypeReferenceID *__pyx_vtabptr_4h5py_3h5t_TypeReferenceID;
+
+
+/* "h5t.pxd":26
+ *     pass
+ * 
+ * cdef class TypeStringID(TypeID):             # <<<<<<<<<<<<<<
+ *     # Both vlen and fixed-len strings
+ *     pass
+ */
+
+struct __pyx_vtabstruct_4h5py_3h5t_TypeStringID {
+  struct __pyx_vtabstruct_4h5py_3h5t_TypeID __pyx_base;
+};
+static struct __pyx_vtabstruct_4h5py_3h5t_TypeStringID *__pyx_vtabptr_4h5py_3h5t_TypeStringID;
+
+
+/* "h5t.pxd":51
+ *     pass
+ * 
+ * cdef class TypeFloatID(TypeAtomicID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+
+struct __pyx_vtabstruct_4h5py_3h5t_TypeFloatID {
+  struct __pyx_vtabstruct_4h5py_3h5t_TypeAtomicID __pyx_base;
+};
+static struct __pyx_vtabstruct_4h5py_3h5t_TypeFloatID *__pyx_vtabptr_4h5py_3h5t_TypeFloatID;
+
+
+/* "h5t.pxd":34
+ *     pass
+ * 
+ * cdef class TypeTimeID(TypeID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+
+struct __pyx_vtabstruct_4h5py_3h5t_TypeTimeID {
+  struct __pyx_vtabstruct_4h5py_3h5t_TypeID __pyx_base;
+};
+static struct __pyx_vtabstruct_4h5py_3h5t_TypeTimeID *__pyx_vtabptr_4h5py_3h5t_TypeTimeID;
+
+
+/* "h5t.pxd":37
+ *     pass
+ * 
+ * cdef class TypeBitfieldID(TypeID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+
+struct __pyx_vtabstruct_4h5py_3h5t_TypeBitfieldID {
+  struct __pyx_vtabstruct_4h5py_3h5t_TypeID __pyx_base;
+};
+static struct __pyx_vtabstruct_4h5py_3h5t_TypeBitfieldID *__pyx_vtabptr_4h5py_3h5t_TypeBitfieldID;
+
+
+/* "h5t.pxd":30
+ *     pass
+ * 
+ * cdef class TypeVlenID(TypeID):             # <<<<<<<<<<<<<<
+ *     # Non-string vlens
+ *     pass
+ */
+
+struct __pyx_vtabstruct_4h5py_3h5t_TypeVlenID {
+  struct __pyx_vtabstruct_4h5py_3h5t_TypeID __pyx_base;
+};
+static struct __pyx_vtabstruct_4h5py_3h5t_TypeVlenID *__pyx_vtabptr_4h5py_3h5t_TypeVlenID;
+
+
+/* "h5t.pxd":59
+ *     pass
+ * 
+ * cdef class TypeEnumID(TypeCompositeID):             # <<<<<<<<<<<<<<
+ * 
+ *     cdef int enum_convert(self, long long *buf, int reverse) except -1
+ */
+
+struct __pyx_vtabstruct_4h5py_3h5t_TypeEnumID {
+  struct __pyx_vtabstruct_4h5py_3h5t_TypeCompositeID __pyx_base;
+  int (*enum_convert)(struct __pyx_obj_4h5py_3h5t_TypeEnumID *, PY_LONG_LONG *, int);
+};
+static struct __pyx_vtabstruct_4h5py_3h5t_TypeEnumID *__pyx_vtabptr_4h5py_3h5t_TypeEnumID;
+#ifndef CYTHON_REFNANNY
+  #define CYTHON_REFNANNY 0
+#endif
+#if CYTHON_REFNANNY
+  typedef struct {
+    void (*INCREF)(void*, PyObject*, int);
+    void (*DECREF)(void*, PyObject*, int);
+    void (*GOTREF)(void*, PyObject*, int);
+    void (*GIVEREF)(void*, PyObject*, int);
+    void* (*SetupContext)(const char*, int, const char*);
+    void (*FinishContext)(void**);
+  } __Pyx_RefNannyAPIStruct;
+  static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL;
+  static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); /*proto*/
+  #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL;
+#ifdef WITH_THREAD
+  #define __Pyx_RefNannySetupContext(name, acquire_gil) \
+          if (acquire_gil) { \
+              PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); \
+              __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__); \
+              PyGILState_Release(__pyx_gilstate_save); \
+          } else { \
+              __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__); \
+          }
+#else
+  #define __Pyx_RefNannySetupContext(name, acquire_gil) \
+          __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__)
+#endif
+  #define __Pyx_RefNannyFinishContext() \
+          __Pyx_RefNanny->FinishContext(&__pyx_refnanny)
+  #define __Pyx_INCREF(r)  __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_DECREF(r)  __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_GOTREF(r)  __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_XINCREF(r)  do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0)
+  #define __Pyx_XDECREF(r)  do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0)
+  #define __Pyx_XGOTREF(r)  do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0)
+  #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0)
+#else
+  #define __Pyx_RefNannyDeclarations
+  #define __Pyx_RefNannySetupContext(name, acquire_gil)
+  #define __Pyx_RefNannyFinishContext()
+  #define __Pyx_INCREF(r) Py_INCREF(r)
+  #define __Pyx_DECREF(r) Py_DECREF(r)
+  #define __Pyx_GOTREF(r)
+  #define __Pyx_GIVEREF(r)
+  #define __Pyx_XINCREF(r) Py_XINCREF(r)
+  #define __Pyx_XDECREF(r) Py_XDECREF(r)
+  #define __Pyx_XGOTREF(r)
+  #define __Pyx_XGIVEREF(r)
+#endif /* CYTHON_REFNANNY */
+#define __Pyx_CLEAR(r)    do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0)
+#define __Pyx_XCLEAR(r)   do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0)
+
+static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name); /*proto*/
+
+static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name); /*proto*/
+
+static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[], \
+    PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args, \
+    const char* function_name); /*proto*/
+
+static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact,
+    Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); /*proto*/
+
+static int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, int none_allowed,
+    const char *name, int exact); /*proto*/
+
+static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb); /*proto*/
+static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb); /*proto*/
+
+static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause); /*proto*/
+
+static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb); /*proto*/
+
+static void __Pyx_call_next_tp_dealloc(PyObject* obj, destructor current_tp_dealloc);
+
+static int __Pyx_call_next_tp_traverse(PyObject* obj, visitproc v, void *a, traverseproc current_tp_traverse);
+
+static void __Pyx_call_next_tp_clear(PyObject* obj, inquiry current_tp_dealloc);
+
+static CYTHON_INLINE void __Pyx_ExceptionSave(PyObject **type, PyObject **value, PyObject **tb); /*proto*/
+static void __Pyx_ExceptionReset(PyObject *type, PyObject *value, PyObject *tb); /*proto*/
+
+static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level); /*proto*/
+
+static CYTHON_INLINE void __Pyx_RaiseImportError(PyObject *name);
+
+static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_hid_t(hid_t);
+
+static CYTHON_INLINE hid_t __Pyx_PyInt_from_py_hid_t(PyObject *);
+
+static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_hsize_t(hsize_t);
+
+static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_hssize_t(hssize_t);
+
+static CYTHON_INLINE unsigned char __Pyx_PyInt_AsUnsignedChar(PyObject *);
+
+static CYTHON_INLINE unsigned short __Pyx_PyInt_AsUnsignedShort(PyObject *);
+
+static CYTHON_INLINE unsigned int __Pyx_PyInt_AsUnsignedInt(PyObject *);
+
+static CYTHON_INLINE char __Pyx_PyInt_AsChar(PyObject *);
+
+static CYTHON_INLINE short __Pyx_PyInt_AsShort(PyObject *);
+
+static CYTHON_INLINE int __Pyx_PyInt_AsInt(PyObject *);
+
+static CYTHON_INLINE signed char __Pyx_PyInt_AsSignedChar(PyObject *);
+
+static CYTHON_INLINE signed short __Pyx_PyInt_AsSignedShort(PyObject *);
+
+static CYTHON_INLINE signed int __Pyx_PyInt_AsSignedInt(PyObject *);
+
+static CYTHON_INLINE int __Pyx_PyInt_AsLongDouble(PyObject *);
+
+static CYTHON_INLINE unsigned long __Pyx_PyInt_AsUnsignedLong(PyObject *);
+
+static CYTHON_INLINE unsigned PY_LONG_LONG __Pyx_PyInt_AsUnsignedLongLong(PyObject *);
+
+static CYTHON_INLINE long __Pyx_PyInt_AsLong(PyObject *);
+
+static CYTHON_INLINE PY_LONG_LONG __Pyx_PyInt_AsLongLong(PyObject *);
+
+static CYTHON_INLINE signed long __Pyx_PyInt_AsSignedLong(PyObject *);
+
+static CYTHON_INLINE signed PY_LONG_LONG __Pyx_PyInt_AsSignedLongLong(PyObject *);
+
+static int __Pyx_check_binary_version(void);
+
+#if !defined(__Pyx_PyIdentifier_FromString)
+#if PY_MAJOR_VERSION < 3
+  #define __Pyx_PyIdentifier_FromString(s) PyString_FromString(s)
+#else
+  #define __Pyx_PyIdentifier_FromString(s) PyUnicode_FromString(s)
+#endif
+#endif
+
+static PyObject *__Pyx_ImportModule(const char *name); /*proto*/
+
+static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name, size_t size, int strict);  /*proto*/
+
+static void* __Pyx_GetVtable(PyObject *dict); /*proto*/
+
+static int __Pyx_ImportFunction(PyObject *module, const char *funcname, void (**f)(void), const char *sig); /*proto*/
+
+typedef struct {
+    int code_line;
+    PyCodeObject* code_object;
+} __Pyx_CodeObjectCacheEntry;
+struct __Pyx_CodeObjectCache {
+    int count;
+    int max_count;
+    __Pyx_CodeObjectCacheEntry* entries;
+};
+static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL};
+static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line);
+static PyCodeObject *__pyx_find_code_object(int code_line);
+static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object);
+
+static void __Pyx_AddTraceback(const char *funcname, int c_line,
+                               int py_line, const char *filename); /*proto*/
+
+static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); /*proto*/
+
+
+/* Module declarations from 'h5py.api_types_ext' */
+
+/* Module declarations from 'h5py.api_types_hdf5' */
+
+/* Module declarations from 'h5py.defs' */
+static hid_t (*__pyx_f_4h5py_4defs_H5Fcreate)(char *, unsigned int, hid_t, hid_t); /*proto*/
+static hid_t (*__pyx_f_4h5py_4defs_H5Fopen)(char *, unsigned int, hid_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Fclose)(hid_t); /*proto*/
+static htri_t (*__pyx_f_4h5py_4defs_H5Fis_hdf5)(char *); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Fflush)(hid_t, enum H5F_scope_t); /*proto*/
+static hid_t (*__pyx_f_4h5py_4defs_H5Freopen)(hid_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Fmount)(hid_t, char *, hid_t, hid_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Funmount)(hid_t, char *); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Fget_filesize)(hid_t, hsize_t *); /*proto*/
+static hid_t (*__pyx_f_4h5py_4defs_H5Fget_create_plist)(hid_t); /*proto*/
+static hid_t (*__pyx_f_4h5py_4defs_H5Fget_access_plist)(hid_t); /*proto*/
+static hssize_t (*__pyx_f_4h5py_4defs_H5Fget_freespace)(hid_t); /*proto*/
+static Py_ssize_t (*__pyx_f_4h5py_4defs_H5Fget_name)(hid_t, char *, size_t); /*proto*/
+static int (*__pyx_f_4h5py_4defs_H5Fget_obj_count)(hid_t, unsigned int); /*proto*/
+static int (*__pyx_f_4h5py_4defs_H5Fget_obj_ids)(hid_t, unsigned int, int, hid_t *); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Fget_vfd_handle)(hid_t, hid_t, void **); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Fget_intent)(hid_t, unsigned int *); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Fget_mdc_config)(hid_t, H5AC_cache_config_t *); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Fget_mdc_hit_rate)(hid_t, double *); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Fget_mdc_size)(hid_t, size_t *, size_t *, size_t *, int *); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Freset_mdc_hit_rate_stats)(hid_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Fset_mdc_config)(hid_t, H5AC_cache_config_t *); /*proto*/
+static hid_t (*__pyx_f_4h5py_4defs_H5Pget_driver)(hid_t); /*proto*/
+
+/* Module declarations from 'h5py._objects' */
+static PyTypeObject *__pyx_ptype_4h5py_8_objects_ObjectID = 0;
+static hid_t (*__pyx_f_4h5py_8_objects_pdefault)(struct __pyx_obj_4h5py_8_objects_ObjectID *); /*proto*/
+
+/* Module declarations from 'h5py.h5g' */
+static PyTypeObject *__pyx_ptype_4h5py_3h5g_GroupID = 0;
+
+/* Module declarations from 'h5py.h5p' */
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropClassID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropInstanceID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropCreateID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropCopyID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropOCID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropDCID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropFCID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropFAID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropDXID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropLCID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropLAID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropGCID = 0;
+static PyObject *(*__pyx_f_4h5py_3h5p_propwrap)(hid_t); /*proto*/
+
+/* Module declarations from 'h5py.h5t' */
+static PyTypeObject *__pyx_ptype_4h5py_3h5t_TypeID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5t_TypeArrayID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5t_TypeOpaqueID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5t_TypeStringID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5t_TypeVlenID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5t_TypeTimeID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5t_TypeBitfieldID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5t_TypeReferenceID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5t_TypeAtomicID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5t_TypeIntegerID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5t_TypeFloatID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5t_TypeCompositeID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5t_TypeEnumID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5t_TypeCompoundID = 0;
+static struct __pyx_obj_4h5py_3h5t_TypeID *(*__pyx_f_4h5py_3h5t_typewrap)(hid_t, int __pyx_skip_dispatch); /*proto*/
+
+/* Module declarations from 'h5py.h5i' */
+static struct __pyx_obj_4h5py_8_objects_ObjectID *(*__pyx_f_4h5py_3h5i_wrap_identifier)(hid_t, int __pyx_skip_dispatch); /*proto*/
+
+/* Module declarations from 'h5py.h5ac' */
+static PyTypeObject *__pyx_ptype_4h5py_4h5ac_CacheConfig = 0;
+
+/* Module declarations from 'numpy' */
+
+/* Module declarations from 'h5py.numpy' */
+static PyTypeObject *__pyx_ptype_4h5py_5numpy_dtype = 0;
+static PyTypeObject *__pyx_ptype_4h5py_5numpy_ndarray = 0;
+
+/* Module declarations from 'h5py.utils' */
+static void *(*__pyx_f_4h5py_5utils_emalloc)(size_t); /*proto*/
+static void (*__pyx_f_4h5py_5utils_efree)(void *); /*proto*/
+
+/* Module declarations from 'h5py.h5f' */
+static PyTypeObject *__pyx_ptype_4h5py_3h5f_FileID = 0;
+#define __Pyx_MODULE_NAME "h5py.h5f"
+int __pyx_module_is_main_h5py__h5f = 0;
+
+/* Implementation of 'h5py.h5f' */
+static PyObject *__pyx_builtin_TypeError;
+static PyObject *__pyx_builtin_NotImplementedError;
+static PyObject *__pyx_pf_4h5py_3h5f_open(CYTHON_UNUSED PyObject *__pyx_self, char *__pyx_v_name, unsigned int __pyx_v_flags, struct __pyx_obj_4h5py_3h5p_PropFAID *__pyx_v_fapl); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5f_2create(CYTHON_UNUSED PyObject *__pyx_self, char *__pyx_v_name, int __pyx_v_flags, struct __pyx_obj_4h5py_3h5p_PropFCID *__pyx_v_fcpl, struct __pyx_obj_4h5py_3h5p_PropFAID *__pyx_v_fapl); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5f_4flush(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_obj, int __pyx_v_scope); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5f_6is_hdf5(CYTHON_UNUSED PyObject *__pyx_self, char *__pyx_v_name); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5f_8mount(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_loc, char *__pyx_v_name, struct __pyx_obj_4h5py_3h5f_FileID *__pyx_v_fid); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5f_10unmount(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_loc, char *__pyx_v_name); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5f_12get_name(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_obj); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5f_14get_obj_count(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_where, int __pyx_v_types); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5f_16get_obj_ids(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_where, int __pyx_v_types); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5f_6FileID_4name___get__(struct __pyx_obj_4h5py_3h5f_FileID *__pyx_v_self); /* proto */
+static int __pyx_pf_4h5py_3h5f_6FileID___cinit__(struct __pyx_obj_4h5py_3h5f_FileID *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_id); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5f_6FileID_2close(struct __pyx_obj_4h5py_3h5f_FileID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5f_6FileID_4reopen(struct __pyx_obj_4h5py_3h5f_FileID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5f_6FileID_6get_filesize(struct __pyx_obj_4h5py_3h5f_FileID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5f_6FileID_8get_create_plist(struct __pyx_obj_4h5py_3h5f_FileID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5f_6FileID_10get_access_plist(struct __pyx_obj_4h5py_3h5f_FileID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5f_6FileID_12get_freespace(struct __pyx_obj_4h5py_3h5f_FileID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5f_6FileID_14get_intent(struct __pyx_obj_4h5py_3h5f_FileID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5f_6FileID_16get_vfd_handle(struct __pyx_obj_4h5py_3h5f_FileID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5f_6FileID_18get_mdc_hit_rate(struct __pyx_obj_4h5py_3h5f_FileID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5f_6FileID_20get_mdc_size(struct __pyx_obj_4h5py_3h5f_FileID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5f_6FileID_22reset_mdc_hit_rate_stats(struct __pyx_obj_4h5py_3h5f_FileID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5f_6FileID_24get_mdc_config(struct __pyx_obj_4h5py_3h5f_FileID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5f_6FileID_26set_mdc_config(struct __pyx_obj_4h5py_3h5f_FileID *__pyx_v_self, struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_config); /* proto */
+static char __pyx_k_6[] = "Location must be a FileID or OBJ_ALL.";
+static char __pyx_k_12[] = " File name on disk (according to h5f.get_name()) ";
+static char __pyx_k_13[] = "\n    Low-level operations on HDF5 file objects.\n";
+static char __pyx_k_16[] = "/home/computer/h5py/h5py/h5f.pyx";
+static char __pyx_k_17[] = "h5py.h5f";
+static char __pyx_k__i[] = "i";
+static char __pyx_k__id[] = "id";
+static char __pyx_k__fid[] = "fid";
+static char __pyx_k__loc[] = "loc";
+static char __pyx_k__obj[] = "obj";
+static char __pyx_k__SEC2[] = "SEC2";
+static char __pyx_k__fapl[] = "fapl";
+static char __pyx_k__fcpl[] = "fcpl";
+static char __pyx_k__h5fd[] = "h5fd";
+static char __pyx_k__h5py[] = "h5py";
+static char __pyx_k__lock[] = "lock";
+static char __pyx_k__name[] = "name";
+static char __pyx_k__open[] = "open";
+static char __pyx_k__size[] = "size";
+static char __pyx_k__count[] = "count";
+static char __pyx_k__flags[] = "flags";
+static char __pyx_k__flush[] = "flush";
+static char __pyx_k__mount[] = "mount";
+static char __pyx_k__pname[] = "pname";
+static char __pyx_k__scope[] = "scope";
+static char __pyx_k__types[] = "types";
+static char __pyx_k__where[] = "where";
+static char __pyx_k__create[] = "create";
+static char __pyx_k__OBJ_ALL[] = "OBJ_ALL";
+static char __pyx_k__cleanup[] = "cleanup";
+static char __pyx_k__is_hdf5[] = "is_hdf5";
+static char __pyx_k__unmount[] = "unmount";
+static char __pyx_k__ACC_EXCL[] = "ACC_EXCL";
+static char __pyx_k__ACC_RDWR[] = "ACC_RDWR";
+static char __pyx_k__OBJ_ATTR[] = "OBJ_ATTR";
+static char __pyx_k__OBJ_FILE[] = "OBJ_FILE";
+static char __pyx_k____exit__[] = "__exit__";
+static char __pyx_k____main__[] = "__main__";
+static char __pyx_k____test__[] = "__test__";
+static char __pyx_k___objects[] = "_objects";
+static char __pyx_k__get_name[] = "get_name";
+static char __pyx_k__obj_list[] = "obj_list";
+static char __pyx_k__registry[] = "registry";
+static char __pyx_k__where_id[] = "where_id";
+static char __pyx_k__ACC_TRUNC[] = "ACC_TRUNC";
+static char __pyx_k__OBJ_GROUP[] = "OBJ_GROUP";
+static char __pyx_k__OBJ_LOCAL[] = "OBJ_LOCAL";
+static char __pyx_k__TypeError[] = "TypeError";
+static char __pyx_k____enter__[] = "__enter__";
+static char __pyx_k__ACC_RDONLY[] = "ACC_RDONLY";
+static char __pyx_k__CLOSE_SEMI[] = "CLOSE_SEMI";
+static char __pyx_k__CLOSE_WEAK[] = "CLOSE_WEAK";
+static char __pyx_k__OBJ_DATASET[] = "OBJ_DATASET";
+static char __pyx_k__SCOPE_LOCAL[] = "SCOPE_LOCAL";
+static char __pyx_k__get_obj_ids[] = "get_obj_ids";
+static char __pyx_k__py_obj_list[] = "py_obj_list";
+static char __pyx_k__CLOSE_STRONG[] = "CLOSE_STRONG";
+static char __pyx_k__OBJ_DATATYPE[] = "OBJ_DATATYPE";
+static char __pyx_k__SCOPE_GLOBAL[] = "SCOPE_GLOBAL";
+static char __pyx_k__CLOSE_DEFAULT[] = "CLOSE_DEFAULT";
+static char __pyx_k__LIBVER_LATEST[] = "LIBVER_LATEST";
+static char __pyx_k__get_obj_count[] = "get_obj_count";
+static char __pyx_k__LIBVER_EARLIEST[] = "LIBVER_EARLIEST";
+static char __pyx_k__NotImplementedError[] = "NotImplementedError";
+static PyObject *__pyx_kp_s_16;
+static PyObject *__pyx_n_s_17;
+static PyObject *__pyx_kp_s_6;
+static PyObject *__pyx_n_s__ACC_EXCL;
+static PyObject *__pyx_n_s__ACC_RDONLY;
+static PyObject *__pyx_n_s__ACC_RDWR;
+static PyObject *__pyx_n_s__ACC_TRUNC;
+static PyObject *__pyx_n_s__CLOSE_DEFAULT;
+static PyObject *__pyx_n_s__CLOSE_SEMI;
+static PyObject *__pyx_n_s__CLOSE_STRONG;
+static PyObject *__pyx_n_s__CLOSE_WEAK;
+static PyObject *__pyx_n_s__LIBVER_EARLIEST;
+static PyObject *__pyx_n_s__LIBVER_LATEST;
+static PyObject *__pyx_n_s__NotImplementedError;
+static PyObject *__pyx_n_s__OBJ_ALL;
+static PyObject *__pyx_n_s__OBJ_ATTR;
+static PyObject *__pyx_n_s__OBJ_DATASET;
+static PyObject *__pyx_n_s__OBJ_DATATYPE;
+static PyObject *__pyx_n_s__OBJ_FILE;
+static PyObject *__pyx_n_s__OBJ_GROUP;
+static PyObject *__pyx_n_s__OBJ_LOCAL;
+static PyObject *__pyx_n_s__SCOPE_GLOBAL;
+static PyObject *__pyx_n_s__SCOPE_LOCAL;
+static PyObject *__pyx_n_s__SEC2;
+static PyObject *__pyx_n_s__TypeError;
+static PyObject *__pyx_n_s____enter__;
+static PyObject *__pyx_n_s____exit__;
+static PyObject *__pyx_n_s____main__;
+static PyObject *__pyx_n_s____test__;
+static PyObject *__pyx_n_s___objects;
+static PyObject *__pyx_n_s__cleanup;
+static PyObject *__pyx_n_s__count;
+static PyObject *__pyx_n_s__create;
+static PyObject *__pyx_n_s__fapl;
+static PyObject *__pyx_n_s__fcpl;
+static PyObject *__pyx_n_s__fid;
+static PyObject *__pyx_n_s__flags;
+static PyObject *__pyx_n_s__flush;
+static PyObject *__pyx_n_s__get_name;
+static PyObject *__pyx_n_s__get_obj_count;
+static PyObject *__pyx_n_s__get_obj_ids;
+static PyObject *__pyx_n_s__h5fd;
+static PyObject *__pyx_n_s__h5py;
+static PyObject *__pyx_n_s__i;
+static PyObject *__pyx_n_s__id;
+static PyObject *__pyx_n_s__is_hdf5;
+static PyObject *__pyx_n_s__loc;
+static PyObject *__pyx_n_s__lock;
+static PyObject *__pyx_n_s__mount;
+static PyObject *__pyx_n_s__name;
+static PyObject *__pyx_n_s__obj;
+static PyObject *__pyx_n_s__obj_list;
+static PyObject *__pyx_n_s__open;
+static PyObject *__pyx_n_s__pname;
+static PyObject *__pyx_n_s__py_obj_list;
+static PyObject *__pyx_n_s__registry;
+static PyObject *__pyx_n_s__scope;
+static PyObject *__pyx_n_s__size;
+static PyObject *__pyx_n_s__types;
+static PyObject *__pyx_n_s__unmount;
+static PyObject *__pyx_n_s__where;
+static PyObject *__pyx_n_s__where_id;
+static unsigned int __pyx_k_1;
+static int __pyx_k_2;
+static int __pyx_k_3;
+static PyObject *__pyx_k_4;
+static int __pyx_k_5;
+static PyObject *__pyx_k_8;
+static int __pyx_k_9;
+static PyObject *__pyx_k_tuple_7;
+static PyObject *__pyx_k_tuple_10;
+static PyObject *__pyx_k_tuple_11;
+static PyObject *__pyx_k_tuple_14;
+static PyObject *__pyx_k_tuple_18;
+static PyObject *__pyx_k_tuple_20;
+static PyObject *__pyx_k_tuple_22;
+static PyObject *__pyx_k_tuple_24;
+static PyObject *__pyx_k_tuple_26;
+static PyObject *__pyx_k_tuple_28;
+static PyObject *__pyx_k_tuple_30;
+static PyObject *__pyx_k_tuple_32;
+static PyObject *__pyx_k_codeobj_15;
+static PyObject *__pyx_k_codeobj_19;
+static PyObject *__pyx_k_codeobj_21;
+static PyObject *__pyx_k_codeobj_23;
+static PyObject *__pyx_k_codeobj_25;
+static PyObject *__pyx_k_codeobj_27;
+static PyObject *__pyx_k_codeobj_29;
+static PyObject *__pyx_k_codeobj_31;
+static PyObject *__pyx_k_codeobj_33;
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5f_1open(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_4h5py_3h5f_open[] = "(STRING name, UINT flags=ACC_RDWR, PropFAID fapl=None) => FileID\n\n    Open an existing HDF5 file.  Keyword \"flags\" may be:\n\n    ACC_RDWR\n        Open in read-write mode\n\n    ACC_RDONLY\n        Open in readonly mode\n\n    Keyword fapl may be a file access property list.\n    ";
+static PyMethodDef __pyx_mdef_4h5py_3h5f_1open = {__Pyx_NAMESTR("open"), (PyCFunction)__pyx_pw_4h5py_3h5f_1open, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5f_open)};
+static PyObject *__pyx_pw_4h5py_3h5f_1open(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  char *__pyx_v_name;
+  unsigned int __pyx_v_flags;
+  struct __pyx_obj_4h5py_3h5p_PropFAID *__pyx_v_fapl = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("open (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__name,&__pyx_n_s__flags,&__pyx_n_s__fapl,0};
+    PyObject* values[3] = {0,0,0};
+
+    /* "h5py/h5f.pyx":58
+ * 
+ * 
+ * def open(char* name, unsigned int flags=H5F_ACC_RDWR, PropFAID fapl=None):             # <<<<<<<<<<<<<<
+ *     """(STRING name, UINT flags=ACC_RDWR, PropFAID fapl=None) => FileID
+ * 
+ */
+    values[2] = (PyObject *)((struct __pyx_obj_4h5py_3h5p_PropFAID *)Py_None);
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__name)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__flags);
+          if (value) { values[1] = value; kw_args--; }
+        }
+        case  2:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__fapl);
+          if (value) { values[2] = value; kw_args--; }
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "open") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else {
+      switch (PyTuple_GET_SIZE(__pyx_args)) {
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+    }
+    __pyx_v_name = PyBytes_AsString(values[0]); if (unlikely((!__pyx_v_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    if (values[1]) {
+      __pyx_v_flags = __Pyx_PyInt_AsUnsignedInt(values[1]); if (unlikely((__pyx_v_flags == (unsigned int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    } else {
+      __pyx_v_flags = __pyx_k_1;
+    }
+    __pyx_v_fapl = ((struct __pyx_obj_4h5py_3h5p_PropFAID *)values[2]);
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("open", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5f.open", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_fapl), __pyx_ptype_4h5py_3h5p_PropFAID, 1, "fapl", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_pf_4h5py_3h5f_open(__pyx_self, __pyx_v_name, __pyx_v_flags, __pyx_v_fapl);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_4h5py_3h5f_open(CYTHON_UNUSED PyObject *__pyx_self, char *__pyx_v_name, unsigned int __pyx_v_flags, struct __pyx_obj_4h5py_3h5p_PropFAID *__pyx_v_fapl) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  hid_t __pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("open", 0);
+
+  /* "h5py/h5f.pyx":71
+ *     Keyword fapl may be a file access property list.
+ *     """
+ *     return FileID.open(H5Fopen(name, flags, pdefault(fapl)))             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyObject_GetAttr(((PyObject *)((PyObject*)__pyx_ptype_4h5py_3h5f_FileID)), __pyx_n_s__open); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __pyx_f_4h5py_4defs_H5Fopen(__pyx_v_name, __pyx_v_flags, __pyx_f_4h5py_8_objects_pdefault(((struct __pyx_obj_4h5py_8_objects_ObjectID *)__pyx_v_fapl))); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyInt_to_py_hid_t(__pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_3);
+  __pyx_t_3 = 0;
+  __pyx_t_3 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
+  __pyx_r = __pyx_t_3;
+  __pyx_t_3 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("h5py.h5f.open", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5f_3create(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_4h5py_3h5f_2create[] = "(STRING name, INT flags=ACC_TRUNC, PropFCID fcpl=None,\n    PropFAID fapl=None) => FileID\n\n    Create a new HDF5 file.  Keyword \"flags\" may be:\n\n    ACC_TRUNC\n        Truncate an existing file, discarding its data\n\n    ACC_EXCL\n        Fail if a conflicting file exists\n\n    To keep the behavior in line with that of Python's built-in functions,\n    the default is ACC_TRUNC.  Be careful!\n    ";
+static PyMethodDef __pyx_mdef_4h5py_3h5f_3create = {__Pyx_NAMESTR("create"), (PyCFunction)__pyx_pw_4h5py_3h5f_3create, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5f_2create)};
+static PyObject *__pyx_pw_4h5py_3h5f_3create(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  char *__pyx_v_name;
+  int __pyx_v_flags;
+  struct __pyx_obj_4h5py_3h5p_PropFCID *__pyx_v_fcpl = 0;
+  struct __pyx_obj_4h5py_3h5p_PropFAID *__pyx_v_fapl = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("create (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__name,&__pyx_n_s__flags,&__pyx_n_s__fcpl,&__pyx_n_s__fapl,0};
+    PyObject* values[4] = {0,0,0,0};
+
+    /* "h5py/h5f.pyx":74
+ * 
+ * 
+ * def create(char* name, int flags=H5F_ACC_TRUNC, PropFCID fcpl=None,             # <<<<<<<<<<<<<<
+ *                                                 PropFAID fapl=None):
+ *     """(STRING name, INT flags=ACC_TRUNC, PropFCID fcpl=None,
+ */
+    values[2] = (PyObject *)((struct __pyx_obj_4h5py_3h5p_PropFCID *)Py_None);
+
+    /* "h5py/h5f.pyx":75
+ * 
+ * def create(char* name, int flags=H5F_ACC_TRUNC, PropFCID fcpl=None,
+ *                                                 PropFAID fapl=None):             # <<<<<<<<<<<<<<
+ *     """(STRING name, INT flags=ACC_TRUNC, PropFCID fcpl=None,
+ *     PropFAID fapl=None) => FileID
+ */
+    values[3] = (PyObject *)((struct __pyx_obj_4h5py_3h5p_PropFAID *)Py_None);
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__name)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__flags);
+          if (value) { values[1] = value; kw_args--; }
+        }
+        case  2:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__fcpl);
+          if (value) { values[2] = value; kw_args--; }
+        }
+        case  3:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__fapl);
+          if (value) { values[3] = value; kw_args--; }
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "create") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else {
+      switch (PyTuple_GET_SIZE(__pyx_args)) {
+        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+    }
+    __pyx_v_name = PyBytes_AsString(values[0]); if (unlikely((!__pyx_v_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    if (values[1]) {
+      __pyx_v_flags = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_flags == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    } else {
+      __pyx_v_flags = __pyx_k_2;
+    }
+    __pyx_v_fcpl = ((struct __pyx_obj_4h5py_3h5p_PropFCID *)values[2]);
+    __pyx_v_fapl = ((struct __pyx_obj_4h5py_3h5p_PropFAID *)values[3]);
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("create", 0, 1, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5f.create", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_fcpl), __pyx_ptype_4h5py_3h5p_PropFCID, 1, "fcpl", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_fapl), __pyx_ptype_4h5py_3h5p_PropFAID, 1, "fapl", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_pf_4h5py_3h5f_2create(__pyx_self, __pyx_v_name, __pyx_v_flags, __pyx_v_fcpl, __pyx_v_fapl);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5f.pyx":74
+ * 
+ * 
+ * def create(char* name, int flags=H5F_ACC_TRUNC, PropFCID fcpl=None,             # <<<<<<<<<<<<<<
+ *                                                 PropFAID fapl=None):
+ *     """(STRING name, INT flags=ACC_TRUNC, PropFCID fcpl=None,
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5f_2create(CYTHON_UNUSED PyObject *__pyx_self, char *__pyx_v_name, int __pyx_v_flags, struct __pyx_obj_4h5py_3h5p_PropFCID *__pyx_v_fcpl, struct __pyx_obj_4h5py_3h5p_PropFAID *__pyx_v_fapl) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  hid_t __pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("create", 0);
+
+  /* "h5py/h5f.pyx":90
+ *     the default is ACC_TRUNC.  Be careful!
+ *     """
+ *     return FileID.open(H5Fcreate(name, flags, pdefault(fcpl), pdefault(fapl)))             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyObject_GetAttr(((PyObject *)((PyObject*)__pyx_ptype_4h5py_3h5f_FileID)), __pyx_n_s__open); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __pyx_f_4h5py_4defs_H5Fcreate(__pyx_v_name, __pyx_v_flags, __pyx_f_4h5py_8_objects_pdefault(((struct __pyx_obj_4h5py_8_objects_ObjectID *)__pyx_v_fcpl)), __pyx_f_4h5py_8_objects_pdefault(((struct __pyx_obj_4h5py_8_objects_ObjectID *)__pyx_v_fapl))); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyInt_to_py_hid_t(__pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_3);
+  __pyx_t_3 = 0;
+  __pyx_t_3 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
+  __pyx_r = __pyx_t_3;
+  __pyx_t_3 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("h5py.h5f.create", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5f_5flush(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_4h5py_3h5f_4flush[] = "(ObjectID obj, INT scope=SCOPE_LOCAL)\n\n    Tell the HDF5 library to flush file buffers to disk.  \"obj\" may\n    be the file identifier, or the identifier of any object residing in\n    the file.  Keyword \"scope\" may be:\n\n    SCOPE_LOCAL\n        Flush only the given file\n\n    SCOPE_GLOBAL\n        Flush the entire virtual file\n    ";
+static PyMethodDef __pyx_mdef_4h5py_3h5f_5flush = {__Pyx_NAMESTR("flush"), (PyCFunction)__pyx_pw_4h5py_3h5f_5flush, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5f_4flush)};
+static PyObject *__pyx_pw_4h5py_3h5f_5flush(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_obj = 0;
+  int __pyx_v_scope;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("flush (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__obj,&__pyx_n_s__scope,0};
+    PyObject* values[2] = {0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__obj)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__scope);
+          if (value) { values[1] = value; kw_args--; }
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "flush") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else {
+      switch (PyTuple_GET_SIZE(__pyx_args)) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+    }
+    __pyx_v_obj = ((struct __pyx_obj_4h5py_8_objects_ObjectID *)values[0]);
+    if (values[1]) {
+      __pyx_v_scope = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_scope == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    } else {
+      __pyx_v_scope = __pyx_k_3;
+    }
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("flush", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5f.flush", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_obj), __pyx_ptype_4h5py_8_objects_ObjectID, 0, "obj", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_pf_4h5py_3h5f_4flush(__pyx_self, __pyx_v_obj, __pyx_v_scope);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5f.pyx":93
+ * 
+ * 
+ * def flush(ObjectID obj not None, int scope=H5F_SCOPE_LOCAL):             # <<<<<<<<<<<<<<
+ *     """(ObjectID obj, INT scope=SCOPE_LOCAL)
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5f_4flush(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_obj, int __pyx_v_scope) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("flush", 0);
+
+  /* "h5py/h5f.pyx":106
+ *         Flush the entire virtual file
+ *     """
+ *     H5Fflush(obj.id, <H5F_scope_t>scope)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Fflush(__pyx_v_obj->id, ((enum H5F_scope_t)__pyx_v_scope)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py.h5f.flush", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5f_7is_hdf5(PyObject *__pyx_self, PyObject *__pyx_arg_name); /*proto*/
+static char __pyx_doc_4h5py_3h5f_6is_hdf5[] = "(STRING name) => BOOL\n\n    Determine if a given file is an HDF5 file.  Note this raises an\n    exception if the file doesn't exist.\n    ";
+static PyMethodDef __pyx_mdef_4h5py_3h5f_7is_hdf5 = {__Pyx_NAMESTR("is_hdf5"), (PyCFunction)__pyx_pw_4h5py_3h5f_7is_hdf5, METH_O, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5f_6is_hdf5)};
+static PyObject *__pyx_pw_4h5py_3h5f_7is_hdf5(PyObject *__pyx_self, PyObject *__pyx_arg_name) {
+  char *__pyx_v_name;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("is_hdf5 (wrapper)", 0);
+  assert(__pyx_arg_name); {
+    __pyx_v_name = PyBytes_AsString(__pyx_arg_name); if (unlikely((!__pyx_v_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5f.is_hdf5", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_3h5f_6is_hdf5(__pyx_self, ((char *)__pyx_v_name));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5f.pyx":109
+ * 
+ * 
+ * def is_hdf5(char* name):             # <<<<<<<<<<<<<<
+ *     """(STRING name) => BOOL
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5f_6is_hdf5(CYTHON_UNUSED PyObject *__pyx_self, char *__pyx_v_name) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  htri_t __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("is_hdf5", 0);
+
+  /* "h5py/h5f.pyx":115
+ *     exception if the file doesn't exist.
+ *     """
+ *     return <bint>(H5Fis_hdf5(name))             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Fis_hdf5(__pyx_v_name); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyBool_FromLong(((int)__pyx_t_1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5f.is_hdf5", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5f_9mount(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_4h5py_3h5f_8mount[] = "(ObjectID loc, STRING name, FileID fid)\n\n    Mount an open file on the group \"name\" under group loc_id.  Note that\n    \"name\" must already exist.\n    ";
+static PyMethodDef __pyx_mdef_4h5py_3h5f_9mount = {__Pyx_NAMESTR("mount"), (PyCFunction)__pyx_pw_4h5py_3h5f_9mount, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5f_8mount)};
+static PyObject *__pyx_pw_4h5py_3h5f_9mount(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_loc = 0;
+  char *__pyx_v_name;
+  struct __pyx_obj_4h5py_3h5f_FileID *__pyx_v_fid = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("mount (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__loc,&__pyx_n_s__name,&__pyx_n_s__fid,0};
+    PyObject* values[3] = {0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__loc)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__name)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("mount", 1, 3, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+        case  2:
+        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__fid)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("mount", 1, 3, 3, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "mount") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+    }
+    __pyx_v_loc = ((struct __pyx_obj_4h5py_8_objects_ObjectID *)values[0]);
+    __pyx_v_name = PyBytes_AsString(values[1]); if (unlikely((!__pyx_v_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_fid = ((struct __pyx_obj_4h5py_3h5f_FileID *)values[2]);
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("mount", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5f.mount", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_loc), __pyx_ptype_4h5py_8_objects_ObjectID, 0, "loc", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_fid), __pyx_ptype_4h5py_3h5f_FileID, 0, "fid", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_pf_4h5py_3h5f_8mount(__pyx_self, __pyx_v_loc, __pyx_v_name, __pyx_v_fid);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5f.pyx":118
+ * 
+ * 
+ * def mount(ObjectID loc not None, char* name, FileID fid not None):             # <<<<<<<<<<<<<<
+ *     """(ObjectID loc, STRING name, FileID fid)
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5f_8mount(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_loc, char *__pyx_v_name, struct __pyx_obj_4h5py_3h5f_FileID *__pyx_v_fid) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("mount", 0);
+
+  /* "h5py/h5f.pyx":124
+ *     "name" must already exist.
+ *     """
+ *     H5Fmount(loc.id, name, fid.id, H5P_DEFAULT)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Fmount(__pyx_v_loc->id, __pyx_v_name, __pyx_v_fid->__pyx_base.__pyx_base.id, H5P_DEFAULT); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py.h5f.mount", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5f_11unmount(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_4h5py_3h5f_10unmount[] = "(ObjectID loc, STRING name)\n\n    Unmount a file, mounted at \"name\" under group loc_id.\n    ";
+static PyMethodDef __pyx_mdef_4h5py_3h5f_11unmount = {__Pyx_NAMESTR("unmount"), (PyCFunction)__pyx_pw_4h5py_3h5f_11unmount, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5f_10unmount)};
+static PyObject *__pyx_pw_4h5py_3h5f_11unmount(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_loc = 0;
+  char *__pyx_v_name;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("unmount (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__loc,&__pyx_n_s__name,0};
+    PyObject* values[2] = {0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__loc)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__name)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("unmount", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "unmount") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+    }
+    __pyx_v_loc = ((struct __pyx_obj_4h5py_8_objects_ObjectID *)values[0]);
+    __pyx_v_name = PyBytes_AsString(values[1]); if (unlikely((!__pyx_v_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("unmount", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5f.unmount", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_loc), __pyx_ptype_4h5py_8_objects_ObjectID, 0, "loc", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_pf_4h5py_3h5f_10unmount(__pyx_self, __pyx_v_loc, __pyx_v_name);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5f.pyx":127
+ * 
+ * 
+ * def unmount(ObjectID loc not None, char* name):             # <<<<<<<<<<<<<<
+ *     """(ObjectID loc, STRING name)
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5f_10unmount(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_loc, char *__pyx_v_name) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("unmount", 0);
+
+  /* "h5py/h5f.pyx":132
+ *     Unmount a file, mounted at "name" under group loc_id.
+ *     """
+ *     H5Funmount(loc.id, name)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Funmount(__pyx_v_loc->id, __pyx_v_name); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py.h5f.unmount", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5f_13get_name(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/
+static char __pyx_doc_4h5py_3h5f_12get_name[] = "(ObjectID obj) => STRING\n\n    Determine the name of the file in which the specified object resides.\n    ";
+static PyMethodDef __pyx_mdef_4h5py_3h5f_13get_name = {__Pyx_NAMESTR("get_name"), (PyCFunction)__pyx_pw_4h5py_3h5f_13get_name, METH_O, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5f_12get_name)};
+static PyObject *__pyx_pw_4h5py_3h5f_13get_name(PyObject *__pyx_self, PyObject *__pyx_v_obj) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_name (wrapper)", 0);
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_obj), __pyx_ptype_4h5py_8_objects_ObjectID, 0, "obj", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_pf_4h5py_3h5f_12get_name(__pyx_self, ((struct __pyx_obj_4h5py_8_objects_ObjectID *)__pyx_v_obj));
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5f.pyx":135
+ * 
+ * 
+ * def get_name(ObjectID obj not None):             # <<<<<<<<<<<<<<
+ *     """(ObjectID obj) => STRING
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5f_12get_name(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_obj) {
+  Py_ssize_t __pyx_v_size;
+  char *__pyx_v_name;
+  char *__pyx_v_pname;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  Py_ssize_t __pyx_t_1;
+  void *__pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_name", 0);
+
+  /* "h5py/h5f.pyx":142
+ *     cdef ssize_t size
+ *     cdef char* name
+ *     name = NULL             # <<<<<<<<<<<<<<
+ * 
+ *     size = H5Fget_name(obj.id, NULL, 0)
+ */
+  __pyx_v_name = NULL;
+
+  /* "h5py/h5f.pyx":144
+ *     name = NULL
+ * 
+ *     size = H5Fget_name(obj.id, NULL, 0)             # <<<<<<<<<<<<<<
+ *     assert size >= 0
+ *     name = <char*>emalloc(sizeof(char)*(size+1))
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Fget_name(__pyx_v_obj->id, NULL, 0); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v_size = __pyx_t_1;
+
+  /* "h5py/h5f.pyx":145
+ * 
+ *     size = H5Fget_name(obj.id, NULL, 0)
+ *     assert size >= 0             # <<<<<<<<<<<<<<
+ *     name = <char*>emalloc(sizeof(char)*(size+1))
+ *     try:
+ */
+  #ifndef CYTHON_WITHOUT_ASSERTIONS
+  if (unlikely(!(__pyx_v_size >= 0))) {
+    PyErr_SetNone(PyExc_AssertionError);
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  }
+  #endif
+
+  /* "h5py/h5f.pyx":146
+ *     size = H5Fget_name(obj.id, NULL, 0)
+ *     assert size >= 0
+ *     name = <char*>emalloc(sizeof(char)*(size+1))             # <<<<<<<<<<<<<<
+ *     try:
+ *         H5Fget_name(obj.id, name, size+1)
+ */
+  __pyx_t_2 = __pyx_f_4h5py_5utils_emalloc(((sizeof(char)) * (__pyx_v_size + 1))); if (unlikely(__pyx_t_2 == NULL && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v_name = ((char *)__pyx_t_2);
+
+  /* "h5py/h5f.pyx":147
+ *     assert size >= 0
+ *     name = <char*>emalloc(sizeof(char)*(size+1))
+ *     try:             # <<<<<<<<<<<<<<
+ *         H5Fget_name(obj.id, name, size+1)
+ *         pname = name
+ */
+  /*try:*/ {
+
+    /* "h5py/h5f.pyx":148
+ *     name = <char*>emalloc(sizeof(char)*(size+1))
+ *     try:
+ *         H5Fget_name(obj.id, name, size+1)             # <<<<<<<<<<<<<<
+ *         pname = name
+ *         return pname
+ */
+    __pyx_t_1 = __pyx_f_4h5py_4defs_H5Fget_name(__pyx_v_obj->id, __pyx_v_name, (__pyx_v_size + 1)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 148; __pyx_clineno = __LINE__; goto __pyx_L4;}
+
+    /* "h5py/h5f.pyx":149
+ *     try:
+ *         H5Fget_name(obj.id, name, size+1)
+ *         pname = name             # <<<<<<<<<<<<<<
+ *         return pname
+ *     finally:
+ */
+    __pyx_v_pname = __pyx_v_name;
+
+    /* "h5py/h5f.pyx":150
+ *         H5Fget_name(obj.id, name, size+1)
+ *         pname = name
+ *         return pname             # <<<<<<<<<<<<<<
+ *     finally:
+ *         efree(name)
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_3 = PyBytes_FromString(__pyx_v_pname); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L4;}
+    __Pyx_GOTREF(((PyObject *)__pyx_t_3));
+    __pyx_r = ((PyObject *)__pyx_t_3);
+    __pyx_t_3 = 0;
+    goto __pyx_L3;
+  }
+
+  /* "h5py/h5f.pyx":152
+ *         return pname
+ *     finally:
+ *         efree(name)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  /*finally:*/ {
+    int __pyx_why;
+    PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb;
+    int __pyx_exc_lineno;
+    __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
+    __pyx_why = 0; goto __pyx_L5;
+    __pyx_L3: __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
+    __pyx_why = 3; goto __pyx_L5;
+    __pyx_L4: {
+      __pyx_why = 4;
+      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb);
+      __pyx_exc_lineno = __pyx_lineno;
+      goto __pyx_L5;
+    }
+    __pyx_L5:;
+    __pyx_f_4h5py_5utils_efree(__pyx_v_name);
+    switch (__pyx_why) {
+      case 3: goto __pyx_L0;
+      case 4: {
+        __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb);
+        __pyx_lineno = __pyx_exc_lineno;
+        __pyx_exc_type = 0;
+        __pyx_exc_value = 0;
+        __pyx_exc_tb = 0;
+        goto __pyx_L1_error;
+      }
+    }
+  }
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("h5py.h5f.get_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5f_15get_obj_count(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_4h5py_3h5f_14get_obj_count[] = "(OBJECT where=OBJ_ALL, types=OBJ_ALL) => INT\n\n    Get the number of open objects.\n\n    where\n        Either a FileID instance representing an HDF5 file, or the\n        special constant OBJ_ALL, to count objects in all files.\n\n    type\n        Specify what kinds of object to include.  May be one of OBJ*,\n        or any bitwise combination (e.g. OBJ_FILE | OBJ_ATTR).\n\n        The special value OBJ_ALL matches all object type [...]
+static PyMethodDef __pyx_mdef_4h5py_3h5f_15get_obj_count = {__Pyx_NAMESTR("get_obj_count"), (PyCFunction)__pyx_pw_4h5py_3h5f_15get_obj_count, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5f_14get_obj_count)};
+static PyObject *__pyx_pw_4h5py_3h5f_15get_obj_count(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_where = 0;
+  int __pyx_v_types;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_obj_count (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__where,&__pyx_n_s__types,0};
+    PyObject* values[2] = {0,0};
+    values[0] = __pyx_k_4;
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__where);
+          if (value) { values[0] = value; kw_args--; }
+        }
+        case  1:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__types);
+          if (value) { values[1] = value; kw_args--; }
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_obj_count") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 155; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else {
+      switch (PyTuple_GET_SIZE(__pyx_args)) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+    }
+    __pyx_v_where = values[0];
+    if (values[1]) {
+      __pyx_v_types = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_types == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 155; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    } else {
+      __pyx_v_types = __pyx_k_5;
+    }
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("get_obj_count", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 155; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5f.get_obj_count", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_3h5f_14get_obj_count(__pyx_self, __pyx_v_where, __pyx_v_types);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5f.pyx":155
+ * 
+ * 
+ * def get_obj_count(object where=OBJ_ALL, int types=H5F_OBJ_ALL):             # <<<<<<<<<<<<<<
+ *     """(OBJECT where=OBJ_ALL, types=OBJ_ALL) => INT
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5f_14get_obj_count(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_where, int __pyx_v_types) {
+  hid_t __pyx_v_where_id;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  hid_t __pyx_t_3;
+  int __pyx_t_4;
+  int __pyx_t_5;
+  int __pyx_t_6;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_obj_count", 0);
+
+  /* "h5py/h5f.pyx":173
+ *     """
+ *     cdef hid_t where_id
+ *     if isinstance(where, FileID):             # <<<<<<<<<<<<<<
+ *         where_id = where.id
+ *     elif isinstance(where, int) or isinstance(where, long):
+ */
+  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_where, ((PyObject*)__pyx_ptype_4h5py_3h5f_FileID)); 
+  if (__pyx_t_1) {
+
+    /* "h5py/h5f.pyx":174
+ *     cdef hid_t where_id
+ *     if isinstance(where, FileID):
+ *         where_id = where.id             # <<<<<<<<<<<<<<
+ *     elif isinstance(where, int) or isinstance(where, long):
+ *         where_id = where
+ */
+    __pyx_t_2 = PyObject_GetAttr(__pyx_v_where, __pyx_n_s__id); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = __Pyx_PyInt_from_py_hid_t(__pyx_t_2); if (unlikely((__pyx_t_3 == (hid_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __pyx_v_where_id = __pyx_t_3;
+    goto __pyx_L3;
+  }
+
+  /* "h5py/h5f.pyx":175
+ *     if isinstance(where, FileID):
+ *         where_id = where.id
+ *     elif isinstance(where, int) or isinstance(where, long):             # <<<<<<<<<<<<<<
+ *         where_id = where
+ *     else:
+ */
+  __pyx_t_1 = PyInt_Check(__pyx_v_where); 
+  if (!__pyx_t_1) {
+    __pyx_t_4 = PyLong_Check(__pyx_v_where); 
+    __pyx_t_5 = __pyx_t_4;
+  } else {
+    __pyx_t_5 = __pyx_t_1;
+  }
+  if (__pyx_t_5) {
+
+    /* "h5py/h5f.pyx":176
+ *         where_id = where.id
+ *     elif isinstance(where, int) or isinstance(where, long):
+ *         where_id = where             # <<<<<<<<<<<<<<
+ *     else:
+ *         raise TypeError("Location must be a FileID or OBJ_ALL.")
+ */
+    __pyx_t_3 = __Pyx_PyInt_from_py_hid_t(__pyx_v_where); if (unlikely((__pyx_t_3 == (hid_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 176; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_v_where_id = __pyx_t_3;
+    goto __pyx_L3;
+  }
+  /*else*/ {
+
+    /* "h5py/h5f.pyx":178
+ *         where_id = where
+ *     else:
+ *         raise TypeError("Location must be a FileID or OBJ_ALL.")             # <<<<<<<<<<<<<<
+ * 
+ *     return H5Fget_obj_count(where_id, types)
+ */
+    __pyx_t_2 = PyObject_Call(__pyx_builtin_TypeError, ((PyObject *)__pyx_k_tuple_7), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 178; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 178; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  }
+  __pyx_L3:;
+
+  /* "h5py/h5f.pyx":180
+ *         raise TypeError("Location must be a FileID or OBJ_ALL.")
+ * 
+ *     return H5Fget_obj_count(where_id, types)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_6 = __pyx_f_4h5py_4defs_H5Fget_obj_count(__pyx_v_where_id, __pyx_v_types); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 180; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyInt_FromLong(__pyx_t_6); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 180; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5f.get_obj_count", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5f_17get_obj_ids(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_4h5py_3h5f_16get_obj_ids[] = "(OBJECT where=OBJ_ALL, types=OBJ_ALL) => LIST\n\n    Get a list of identifier instances for open objects.\n\n    where\n        Either a FileID instance representing an HDF5 file, or the\n        special constant OBJ_ALL, to list objects in all files.\n\n    type\n        Specify what kinds of object to include.  May be one of OBJ*,\n        or any bitwise combination (e.g. OBJ_FILE | OBJ_ATTR).\n\n        The special value OBJ_ALL matc [...]
+static PyMethodDef __pyx_mdef_4h5py_3h5f_17get_obj_ids = {__Pyx_NAMESTR("get_obj_ids"), (PyCFunction)__pyx_pw_4h5py_3h5f_17get_obj_ids, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5f_16get_obj_ids)};
+static PyObject *__pyx_pw_4h5py_3h5f_17get_obj_ids(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_where = 0;
+  int __pyx_v_types;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_obj_ids (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__where,&__pyx_n_s__types,0};
+    PyObject* values[2] = {0,0};
+    values[0] = __pyx_k_8;
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__where);
+          if (value) { values[0] = value; kw_args--; }
+        }
+        case  1:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__types);
+          if (value) { values[1] = value; kw_args--; }
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_obj_ids") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 183; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else {
+      switch (PyTuple_GET_SIZE(__pyx_args)) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+    }
+    __pyx_v_where = values[0];
+    if (values[1]) {
+      __pyx_v_types = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_types == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 183; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    } else {
+      __pyx_v_types = __pyx_k_9;
+    }
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("get_obj_ids", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 183; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5f.get_obj_ids", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_3h5f_16get_obj_ids(__pyx_self, __pyx_v_where, __pyx_v_types);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5f.pyx":183
+ * 
+ * 
+ * def get_obj_ids(object where=OBJ_ALL, int types=H5F_OBJ_ALL):             # <<<<<<<<<<<<<<
+ *     """(OBJECT where=OBJ_ALL, types=OBJ_ALL) => LIST
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5f_16get_obj_ids(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_where, int __pyx_v_types) {
+  int __pyx_v_count;
+  int __pyx_v_i;
+  hid_t __pyx_v_where_id;
+  hid_t *__pyx_v_obj_list;
+  PyObject *__pyx_v_py_obj_list = 0;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_t_2;
+  hid_t __pyx_t_3;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  int __pyx_t_8;
+  PyObject *__pyx_t_9 = NULL;
+  PyObject *__pyx_t_10 = NULL;
+  void *__pyx_t_11;
+  int __pyx_t_12;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_obj_ids", 0);
+
+  /* "h5py/h5f.pyx":203
+ *     cdef int i
+ *     cdef hid_t where_id
+ *     cdef hid_t *obj_list = NULL             # <<<<<<<<<<<<<<
+ *     cdef list py_obj_list = []
+ * 
+ */
+  __pyx_v_obj_list = NULL;
+
+  /* "h5py/h5f.pyx":204
+ *     cdef hid_t where_id
+ *     cdef hid_t *obj_list = NULL
+ *     cdef list py_obj_list = []             # <<<<<<<<<<<<<<
+ * 
+ *     if isinstance(where, FileID):
+ */
+  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 204; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_py_obj_list = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "h5py/h5f.pyx":206
+ *     cdef list py_obj_list = []
+ * 
+ *     if isinstance(where, FileID):             # <<<<<<<<<<<<<<
+ *         where_id = where.id
+ *     else:
+ */
+  __pyx_t_2 = __Pyx_TypeCheck(__pyx_v_where, ((PyObject*)__pyx_ptype_4h5py_3h5f_FileID)); 
+  if (__pyx_t_2) {
+
+    /* "h5py/h5f.pyx":207
+ * 
+ *     if isinstance(where, FileID):
+ *         where_id = where.id             # <<<<<<<<<<<<<<
+ *     else:
+ *         try:
+ */
+    __pyx_t_1 = PyObject_GetAttr(__pyx_v_where, __pyx_n_s__id); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 207; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_3 = __Pyx_PyInt_from_py_hid_t(__pyx_t_1); if (unlikely((__pyx_t_3 == (hid_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 207; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __pyx_v_where_id = __pyx_t_3;
+    goto __pyx_L3;
+  }
+  /*else*/ {
+
+    /* "h5py/h5f.pyx":209
+ *         where_id = where.id
+ *     else:
+ *         try:             # <<<<<<<<<<<<<<
+ *             where_id = int(where)
+ *         except TypeError:
+ */
+    {
+      __Pyx_ExceptionSave(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6);
+      __Pyx_XGOTREF(__pyx_t_4);
+      __Pyx_XGOTREF(__pyx_t_5);
+      __Pyx_XGOTREF(__pyx_t_6);
+      /*try:*/ {
+
+        /* "h5py/h5f.pyx":210
+ *     else:
+ *         try:
+ *             where_id = int(where)             # <<<<<<<<<<<<<<
+ *         except TypeError:
+ *             raise TypeError("Location must be a FileID or OBJ_ALL.")
+ */
+        __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+        __Pyx_GOTREF(__pyx_t_1);
+        __Pyx_INCREF(__pyx_v_where);
+        PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_where);
+        __Pyx_GIVEREF(__pyx_v_where);
+        __pyx_t_7 = PyObject_Call(((PyObject *)((PyObject*)(&PyInt_Type))), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
+        __pyx_t_3 = __Pyx_PyInt_from_py_hid_t(__pyx_t_7); if (unlikely((__pyx_t_3 == (hid_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        __pyx_v_where_id = __pyx_t_3;
+      }
+      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+      goto __pyx_L11_try_end;
+      __pyx_L4_error:;
+      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+      /* "h5py/h5f.pyx":211
+ *         try:
+ *             where_id = int(where)
+ *         except TypeError:             # <<<<<<<<<<<<<<
+ *             raise TypeError("Location must be a FileID or OBJ_ALL.")
+ * 
+ */
+      __pyx_t_8 = PyErr_ExceptionMatches(__pyx_builtin_TypeError);
+      if (__pyx_t_8) {
+        __Pyx_AddTraceback("h5py.h5f.get_obj_ids", __pyx_clineno, __pyx_lineno, __pyx_filename);
+        if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_1, &__pyx_t_9) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 211; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __Pyx_GOTREF(__pyx_t_1);
+        __Pyx_GOTREF(__pyx_t_9);
+
+        /* "h5py/h5f.pyx":212
+ *             where_id = int(where)
+ *         except TypeError:
+ *             raise TypeError("Location must be a FileID or OBJ_ALL.")             # <<<<<<<<<<<<<<
+ * 
+ *     try:
+ */
+        __pyx_t_10 = PyObject_Call(__pyx_builtin_TypeError, ((PyObject *)__pyx_k_tuple_10), NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
+        __Pyx_GOTREF(__pyx_t_10);
+        __Pyx_Raise(__pyx_t_10, 0, 0, 0);
+        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+        goto __pyx_L5_exception_handled;
+      }
+      __pyx_L6_except_error:;
+      __Pyx_XGIVEREF(__pyx_t_4);
+      __Pyx_XGIVEREF(__pyx_t_5);
+      __Pyx_XGIVEREF(__pyx_t_6);
+      __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6);
+      goto __pyx_L1_error;
+      __pyx_L5_exception_handled:;
+      __Pyx_XGIVEREF(__pyx_t_4);
+      __Pyx_XGIVEREF(__pyx_t_5);
+      __Pyx_XGIVEREF(__pyx_t_6);
+      __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6);
+      __pyx_L11_try_end:;
+    }
+  }
+  __pyx_L3:;
+
+  /* "h5py/h5f.pyx":214
+ *             raise TypeError("Location must be a FileID or OBJ_ALL.")
+ * 
+ *     try:             # <<<<<<<<<<<<<<
+ *         count = H5Fget_obj_count(where_id, types)
+ *         obj_list = <hid_t*>emalloc(sizeof(hid_t)*count)
+ */
+  /*try:*/ {
+
+    /* "h5py/h5f.pyx":215
+ * 
+ *     try:
+ *         count = H5Fget_obj_count(where_id, types)             # <<<<<<<<<<<<<<
+ *         obj_list = <hid_t*>emalloc(sizeof(hid_t)*count)
+ * 
+ */
+    __pyx_t_8 = __pyx_f_4h5py_4defs_H5Fget_obj_count(__pyx_v_where_id, __pyx_v_types); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 215; __pyx_clineno = __LINE__; goto __pyx_L15;}
+    __pyx_v_count = __pyx_t_8;
+
+    /* "h5py/h5f.pyx":216
+ *     try:
+ *         count = H5Fget_obj_count(where_id, types)
+ *         obj_list = <hid_t*>emalloc(sizeof(hid_t)*count)             # <<<<<<<<<<<<<<
+ * 
+ *         H5Fget_obj_ids(where_id, types, count, obj_list)
+ */
+    __pyx_t_11 = __pyx_f_4h5py_5utils_emalloc(((sizeof(hid_t)) * __pyx_v_count)); if (unlikely(__pyx_t_11 == NULL && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 216; __pyx_clineno = __LINE__; goto __pyx_L15;}
+    __pyx_v_obj_list = ((hid_t *)__pyx_t_11);
+
+    /* "h5py/h5f.pyx":218
+ *         obj_list = <hid_t*>emalloc(sizeof(hid_t)*count)
+ * 
+ *         H5Fget_obj_ids(where_id, types, count, obj_list)             # <<<<<<<<<<<<<<
+ *         for i from 0<=i<count:
+ *             py_obj_list.append(wrap_identifier(obj_list[i]))
+ */
+    __pyx_t_8 = __pyx_f_4h5py_4defs_H5Fget_obj_ids(__pyx_v_where_id, __pyx_v_types, __pyx_v_count, __pyx_v_obj_list); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 218; __pyx_clineno = __LINE__; goto __pyx_L15;}
+
+    /* "h5py/h5f.pyx":219
+ * 
+ *         H5Fget_obj_ids(where_id, types, count, obj_list)
+ *         for i from 0<=i<count:             # <<<<<<<<<<<<<<
+ *             py_obj_list.append(wrap_identifier(obj_list[i]))
+ *             # The HDF5 function returns a borrowed reference for each hid_t.
+ */
+    __pyx_t_8 = __pyx_v_count;
+    for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_8; __pyx_v_i++) {
+
+      /* "h5py/h5f.pyx":220
+ *         H5Fget_obj_ids(where_id, types, count, obj_list)
+ *         for i from 0<=i<count:
+ *             py_obj_list.append(wrap_identifier(obj_list[i]))             # <<<<<<<<<<<<<<
+ *             # The HDF5 function returns a borrowed reference for each hid_t.
+ *             #H5Iinc_ref(obj_list[i])
+ */
+      __pyx_t_9 = ((PyObject *)__pyx_f_4h5py_3h5i_wrap_identifier((__pyx_v_obj_list[__pyx_v_i]), 0)); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 220; __pyx_clineno = __LINE__; goto __pyx_L15;}
+      __Pyx_GOTREF(__pyx_t_9);
+      __pyx_t_12 = PyList_Append(__pyx_v_py_obj_list, __pyx_t_9); if (unlikely(__pyx_t_12 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 220; __pyx_clineno = __LINE__; goto __pyx_L15;}
+      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+    }
+
+    /* "h5py/h5f.pyx":223
+ *             # The HDF5 function returns a borrowed reference for each hid_t.
+ *             #H5Iinc_ref(obj_list[i])
+ *         return py_obj_list             # <<<<<<<<<<<<<<
+ * 
+ *     finally:
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __Pyx_INCREF(((PyObject *)__pyx_v_py_obj_list));
+    __pyx_r = ((PyObject *)__pyx_v_py_obj_list);
+    goto __pyx_L14;
+  }
+
+  /* "h5py/h5f.pyx":226
+ * 
+ *     finally:
+ *         efree(obj_list)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  /*finally:*/ {
+    int __pyx_why;
+    PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb;
+    int __pyx_exc_lineno;
+    __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
+    __pyx_why = 0; goto __pyx_L16;
+    __pyx_L14: __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
+    __pyx_why = 3; goto __pyx_L16;
+    __pyx_L15: {
+      __pyx_why = 4;
+      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+      __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb);
+      __pyx_exc_lineno = __pyx_lineno;
+      goto __pyx_L16;
+    }
+    __pyx_L16:;
+    __pyx_f_4h5py_5utils_efree(__pyx_v_obj_list);
+    switch (__pyx_why) {
+      case 3: goto __pyx_L0;
+      case 4: {
+        __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb);
+        __pyx_lineno = __pyx_exc_lineno;
+        __pyx_exc_type = 0;
+        __pyx_exc_value = 0;
+        __pyx_exc_tb = 0;
+        goto __pyx_L1_error;
+      }
+    }
+  }
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_XDECREF(__pyx_t_9);
+  __Pyx_XDECREF(__pyx_t_10);
+  __Pyx_AddTraceback("h5py.h5f.get_obj_ids", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_py_obj_list);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5f_6FileID_4name_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4h5py_3h5f_6FileID_4name_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5f_6FileID_4name___get__(((struct __pyx_obj_4h5py_3h5f_FileID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5f.pyx":252
+ *     property name:
+ *         """ File name on disk (according to h5f.get_name()) """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return get_name(self)
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5f_6FileID_4name___get__(struct __pyx_obj_4h5py_3h5f_FileID *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "h5py/h5f.pyx":253
+ *         """ File name on disk (according to h5f.get_name()) """
+ *         def __get__(self):
+ *             return get_name(self)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__get_name); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 253; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 253; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_INCREF(((PyObject *)__pyx_v_self));
+  PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_v_self));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
+  __pyx_t_3 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 253; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
+  __pyx_r = __pyx_t_3;
+  __pyx_t_3 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("h5py.h5f.FileID.name.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static int __pyx_pw_4h5py_3h5f_6FileID_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_4h5py_3h5f_6FileID_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  CYTHON_UNUSED PyObject *__pyx_v_id = 0;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__id,0};
+    PyObject* values[1] = {0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__id)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 256; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+    }
+    __pyx_v_id = values[0];
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 256; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5f.FileID.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return -1;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_3h5f_6FileID___cinit__(((struct __pyx_obj_4h5py_3h5f_FileID *)__pyx_v_self), __pyx_v_id);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5f.pyx":256
+ * 
+ * 
+ *     def __cinit__(self, id):             # <<<<<<<<<<<<<<
+ *         # lock the id proxy for as long as the the identifier is open
+ *         self.locked = True
+ */
+
+static int __pyx_pf_4h5py_3h5f_6FileID___cinit__(struct __pyx_obj_4h5py_3h5f_FileID *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_id) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__cinit__", 0);
+
+  /* "h5py/h5f.pyx":258
+ *     def __cinit__(self, id):
+ *         # lock the id proxy for as long as the the identifier is open
+ *         self.locked = True             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_v_self->__pyx_base.__pyx_base.locked = 1;
+
+  __pyx_r = 0;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5f_6FileID_3close(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5f_6FileID_2close[] = "()\n\n        Terminate access through this identifier.  Note that depending on\n        what property list settings were used to open the file, the\n        physical file might not be closed until all remaining open\n        identifiers are freed.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5f_6FileID_3close(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("close (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5f_6FileID_2close(((struct __pyx_obj_4h5py_3h5f_FileID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5f.pyx":261
+ * 
+ * 
+ *     def close(self):             # <<<<<<<<<<<<<<
+ *         """()
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5f_6FileID_2close(struct __pyx_obj_4h5py_3h5f_FileID *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  PyObject *__pyx_t_9 = NULL;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  int __pyx_t_12;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("close", 0);
+
+  /* "h5py/h5f.pyx":269
+ *         identifiers are freed.
+ *         """
+ *         with _objects.registry.lock:             # <<<<<<<<<<<<<<
+ *             self.locked = False
+ *             H5Fclose(self.id)
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s___objects); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 269; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__registry); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 269; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __pyx_t_1 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__lock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 269; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 269; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 269; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_4 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 269; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/h5f.pyx":270
+ *         """
+ *         with _objects.registry.lock:
+ *             self.locked = False             # <<<<<<<<<<<<<<
+ *             H5Fclose(self.id)
+ *             _objects.registry.cleanup()
+ */
+          __pyx_v_self->__pyx_base.__pyx_base.locked = 0;
+
+          /* "h5py/h5f.pyx":271
+ *         with _objects.registry.lock:
+ *             self.locked = False
+ *             H5Fclose(self.id)             # <<<<<<<<<<<<<<
+ *             _objects.registry.cleanup()
+ * 
+ */
+          __pyx_t_8 = __pyx_f_4h5py_4defs_H5Fclose(__pyx_v_self->__pyx_base.__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 271; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+
+          /* "h5py/h5f.pyx":272
+ *             self.locked = False
+ *             H5Fclose(self.id)
+ *             _objects.registry.cleanup()             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+          __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s___objects); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 272; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __pyx_t_4 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__registry); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 272; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __pyx_t_1 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s__cleanup); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 272; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __pyx_t_4 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 272; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+        /* "h5py/h5f.pyx":269
+ *         identifiers are freed.
+ *         """
+ *         with _objects.registry.lock:             # <<<<<<<<<<<<<<
+ *             self.locked = False
+ *             H5Fclose(self.id)
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.h5f.FileID.close", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_1, &__pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 269; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_2);
+          __pyx_t_9 = PyTuple_New(3); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 269; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_9);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_2);
+          PyTuple_SET_ITEM(__pyx_t_9, 2, __pyx_t_2);
+          __Pyx_GIVEREF(__pyx_t_2);
+          __pyx_t_11 = PyObject_Call(__pyx_t_3, __pyx_t_9, NULL);
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 269; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_11);
+          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+          if (unlikely(__pyx_t_10 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 269; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_12 = (!__pyx_t_10);
+          if (__pyx_t_12) {
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_2);
+            __Pyx_ErrRestore(__pyx_t_4, __pyx_t_1, __pyx_t_2);
+            __pyx_t_4 = 0; __pyx_t_1 = 0; __pyx_t_2 = 0; 
+            {__pyx_filename = __pyx_f[0]; __pyx_lineno = 269; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L17;
+          }
+          __pyx_L17:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_9)); __pyx_t_9 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      if (__pyx_t_3) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_3, __pyx_k_tuple_11, NULL);
+        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 269; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 269; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+    }
+    goto __pyx_L18;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    goto __pyx_L1_error;
+    __pyx_L18:;
+  }
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_9);
+  __Pyx_AddTraceback("h5py.h5f.FileID.close", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5f_6FileID_5reopen(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5f_6FileID_4reopen[] = "() => FileID\n\n        Retrieve another identifier for a file (which must still be open).\n        The new identifier is guaranteed to neither be mounted nor contain\n        a mounted file.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5f_6FileID_5reopen(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("reopen (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5f_6FileID_4reopen(((struct __pyx_obj_4h5py_3h5f_FileID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5f.pyx":275
+ * 
+ * 
+ *     def reopen(self):             # <<<<<<<<<<<<<<
+ *         """() => FileID
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5f_6FileID_4reopen(struct __pyx_obj_4h5py_3h5f_FileID *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  hid_t __pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("reopen", 0);
+
+  /* "h5py/h5f.pyx":282
+ *         a mounted file.
+ *         """
+ *         return FileID.open(H5Freopen(self.id))             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyObject_GetAttr(((PyObject *)((PyObject*)__pyx_ptype_4h5py_3h5f_FileID)), __pyx_n_s__open); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 282; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __pyx_f_4h5py_4defs_H5Freopen(__pyx_v_self->__pyx_base.__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 282; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyInt_to_py_hid_t(__pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 282; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 282; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_3);
+  __pyx_t_3 = 0;
+  __pyx_t_3 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 282; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
+  __pyx_r = __pyx_t_3;
+  __pyx_t_3 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("h5py.h5f.FileID.reopen", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5f_6FileID_7get_filesize(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5f_6FileID_6get_filesize[] = "() => LONG size\n\n        Determine the total size (in bytes) of the HDF5 file,\n        including any user block.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5f_6FileID_7get_filesize(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_filesize (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5f_6FileID_6get_filesize(((struct __pyx_obj_4h5py_3h5f_FileID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5f.pyx":285
+ * 
+ * 
+ *     def get_filesize(self):             # <<<<<<<<<<<<<<
+ *         """() => LONG size
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5f_6FileID_6get_filesize(struct __pyx_obj_4h5py_3h5f_FileID *__pyx_v_self) {
+  hsize_t __pyx_v_size;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_filesize", 0);
+
+  /* "h5py/h5f.pyx":292
+ *         """
+ *         cdef hsize_t size
+ *         H5Fget_filesize(self.id, &size)             # <<<<<<<<<<<<<<
+ *         return size
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Fget_filesize(__pyx_v_self->__pyx_base.__pyx_base.id, (&__pyx_v_size)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 292; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5f.pyx":293
+ *         cdef hsize_t size
+ *         H5Fget_filesize(self.id, &size)
+ *         return size             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_2 = __Pyx_PyInt_to_py_hsize_t(__pyx_v_size); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 293; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5f.FileID.get_filesize", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5f_6FileID_9get_create_plist(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5f_6FileID_8get_create_plist[] = "() => PropFCID\n\n        Retrieve a copy of the file creation property list used to\n        create this file.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5f_6FileID_9get_create_plist(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_create_plist (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5f_6FileID_8get_create_plist(((struct __pyx_obj_4h5py_3h5f_FileID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5f.pyx":296
+ * 
+ * 
+ *     def get_create_plist(self):             # <<<<<<<<<<<<<<
+ *         """() => PropFCID
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5f_6FileID_8get_create_plist(struct __pyx_obj_4h5py_3h5f_FileID *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  hid_t __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_create_plist", 0);
+
+  /* "h5py/h5f.pyx":302
+ *         create this file.
+ *         """
+ *         return propwrap(H5Fget_create_plist(self.id))             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Fget_create_plist(__pyx_v_self->__pyx_base.__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 302; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __pyx_f_4h5py_3h5p_propwrap(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 302; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5f.FileID.get_create_plist", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5f_6FileID_11get_access_plist(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5f_6FileID_10get_access_plist[] = "() => PropFAID\n\n        Retrieve a copy of the file access property list which manages access\n        to this file.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5f_6FileID_11get_access_plist(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_access_plist (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5f_6FileID_10get_access_plist(((struct __pyx_obj_4h5py_3h5f_FileID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5f.pyx":305
+ * 
+ * 
+ *     def get_access_plist(self):             # <<<<<<<<<<<<<<
+ *         """() => PropFAID
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5f_6FileID_10get_access_plist(struct __pyx_obj_4h5py_3h5f_FileID *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  hid_t __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_access_plist", 0);
+
+  /* "h5py/h5f.pyx":311
+ *         to this file.
+ *         """
+ *         return propwrap(H5Fget_access_plist(self.id))             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Fget_access_plist(__pyx_v_self->__pyx_base.__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 311; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __pyx_f_4h5py_3h5p_propwrap(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 311; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5f.FileID.get_access_plist", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5f_6FileID_13get_freespace(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5f_6FileID_12get_freespace[] = "() => LONG freespace\n\n        Determine the amount of free space in this file.  Note that this\n        only tracks free space until the file is closed.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5f_6FileID_13get_freespace(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_freespace (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5f_6FileID_12get_freespace(((struct __pyx_obj_4h5py_3h5f_FileID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5f.pyx":314
+ * 
+ * 
+ *     def get_freespace(self):             # <<<<<<<<<<<<<<
+ *         """() => LONG freespace
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5f_6FileID_12get_freespace(struct __pyx_obj_4h5py_3h5f_FileID *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  hssize_t __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_freespace", 0);
+
+  /* "h5py/h5f.pyx":320
+ *         only tracks free space until the file is closed.
+ *         """
+ *         return H5Fget_freespace(self.id)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Fget_freespace(__pyx_v_self->__pyx_base.__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 320; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyInt_to_py_hssize_t(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 320; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5f.FileID.get_freespace", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5f_6FileID_15get_intent(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5f_6FileID_14get_intent[] = " () => INT\n\n        Determine the file's write intent, either of:\n        - H5F_ACC_RDONLY\n        - H5F_ACC_RDWR\n        ";
+static PyObject *__pyx_pw_4h5py_3h5f_6FileID_15get_intent(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_intent (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5f_6FileID_14get_intent(((struct __pyx_obj_4h5py_3h5f_FileID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5f.pyx":323
+ * 
+ * 
+ *     def get_intent(self):             # <<<<<<<<<<<<<<
+ *         """ () => INT
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5f_6FileID_14get_intent(struct __pyx_obj_4h5py_3h5f_FileID *__pyx_v_self) {
+  unsigned int __pyx_v_mode;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_intent", 0);
+
+  /* "h5py/h5f.pyx":331
+ *         """
+ *         cdef unsigned int mode
+ *         H5Fget_intent(self.id, &mode)             # <<<<<<<<<<<<<<
+ *         return mode
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Fget_intent(__pyx_v_self->__pyx_base.__pyx_base.id, (&__pyx_v_mode)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 331; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5f.pyx":332
+ *         cdef unsigned int mode
+ *         H5Fget_intent(self.id, &mode)
+ *         return mode             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_2 = PyLong_FromUnsignedLong(__pyx_v_mode); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 332; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5f.FileID.get_intent", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5f_6FileID_17get_vfd_handle(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5f_6FileID_16get_vfd_handle[] = " () => INT\n\n        Retrieve the file handle used by the virtual file driver.\n\n        This method is only functional when the the SEC2 driver is used.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5f_6FileID_17get_vfd_handle(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_vfd_handle (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5f_6FileID_16get_vfd_handle(((struct __pyx_obj_4h5py_3h5f_FileID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5f.pyx":335
+ * 
+ * 
+ *     def get_vfd_handle(self):             # <<<<<<<<<<<<<<
+ *         """ () => INT
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5f_6FileID_16get_vfd_handle(struct __pyx_obj_4h5py_3h5f_FileID *__pyx_v_self) {
+  int *__pyx_v_handle;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  hid_t __pyx_t_1;
+  hid_t __pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  int __pyx_t_6;
+  herr_t __pyx_t_7;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_vfd_handle", 0);
+
+  /* "h5py/h5f.pyx":342
+ *         This method is only functional when the the SEC2 driver is used.
+ *         """
+ *         if H5Pget_driver(H5Fget_access_plist(self.id)) != h5fd.SEC2:             # <<<<<<<<<<<<<<
+ *             raise NotImplementedError
+ *         cdef int *handle
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Fget_access_plist(__pyx_v_self->__pyx_base.__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 342; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __pyx_f_4h5py_4defs_H5Pget_driver(__pyx_t_1); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 342; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyInt_to_py_hid_t(__pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 342; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__h5fd); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 342; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s__SEC2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 342; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __pyx_t_4 = PyObject_RichCompare(__pyx_t_3, __pyx_t_5, Py_NE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 342; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 342; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (__pyx_t_6) {
+
+    /* "h5py/h5f.pyx":343
+ *         """
+ *         if H5Pget_driver(H5Fget_access_plist(self.id)) != h5fd.SEC2:
+ *             raise NotImplementedError             # <<<<<<<<<<<<<<
+ *         cdef int *handle
+ *         H5Fget_vfd_handle(self.id, H5Fget_access_plist(self.id), <void**>&handle)
+ */
+    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  /* "h5py/h5f.pyx":345
+ *             raise NotImplementedError
+ *         cdef int *handle
+ *         H5Fget_vfd_handle(self.id, H5Fget_access_plist(self.id), <void**>&handle)             # <<<<<<<<<<<<<<
+ *         return handle[0]
+ * 
+ */
+  __pyx_t_2 = __pyx_f_4h5py_4defs_H5Fget_access_plist(__pyx_v_self->__pyx_base.__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 345; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = __pyx_f_4h5py_4defs_H5Fget_vfd_handle(__pyx_v_self->__pyx_base.__pyx_base.id, __pyx_t_2, ((void **)(&__pyx_v_handle))); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 345; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5f.pyx":346
+ *         cdef int *handle
+ *         H5Fget_vfd_handle(self.id, H5Fget_access_plist(self.id), <void**>&handle)
+ *         return handle[0]             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_4 = PyInt_FromLong((__pyx_v_handle[0])); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 346; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_r = __pyx_t_4;
+  __pyx_t_4 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_AddTraceback("h5py.h5f.FileID.get_vfd_handle", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5f_6FileID_19get_mdc_hit_rate(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5f_6FileID_18get_mdc_hit_rate[] = "() => DOUBLE\n\n        Retrieve the cache hit rate\n\n        ";
+static PyObject *__pyx_pw_4h5py_3h5f_6FileID_19get_mdc_hit_rate(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_mdc_hit_rate (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5f_6FileID_18get_mdc_hit_rate(((struct __pyx_obj_4h5py_3h5f_FileID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5f.pyx":376
+ *             return <bint>atom
+ * 
+ *     def get_mdc_hit_rate(self):             # <<<<<<<<<<<<<<
+ *         """() => DOUBLE
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5f_6FileID_18get_mdc_hit_rate(struct __pyx_obj_4h5py_3h5f_FileID *__pyx_v_self) {
+  double __pyx_v_hit_rate;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_mdc_hit_rate", 0);
+
+  /* "h5py/h5f.pyx":383
+ *         """
+ *         cdef double hit_rate
+ *         H5Fget_mdc_hit_rate(self.id, &hit_rate)             # <<<<<<<<<<<<<<
+ *         return hit_rate
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Fget_mdc_hit_rate(__pyx_v_self->__pyx_base.__pyx_base.id, (&__pyx_v_hit_rate)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 383; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5f.pyx":384
+ *         cdef double hit_rate
+ *         H5Fget_mdc_hit_rate(self.id, &hit_rate)
+ *         return hit_rate             # <<<<<<<<<<<<<<
+ * 
+ *     def get_mdc_size(self):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_2 = PyFloat_FromDouble(__pyx_v_hit_rate); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5f.FileID.get_mdc_hit_rate", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5f_6FileID_21get_mdc_size(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5f_6FileID_20get_mdc_size[] = "() => (max_size, min_clean_size, cur_size, cur_num_entries) [SIZE_T, SIZE_T, SIZE_T, INT]\n\n        Obtain current metadata cache size data for specified file.\n\n        ";
+static PyObject *__pyx_pw_4h5py_3h5f_6FileID_21get_mdc_size(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_mdc_size (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5f_6FileID_20get_mdc_size(((struct __pyx_obj_4h5py_3h5f_FileID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5f.pyx":386
+ *         return hit_rate
+ * 
+ *     def get_mdc_size(self):             # <<<<<<<<<<<<<<
+ *         """() => (max_size, min_clean_size, cur_size, cur_num_entries) [SIZE_T, SIZE_T, SIZE_T, INT]
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5f_6FileID_20get_mdc_size(struct __pyx_obj_4h5py_3h5f_FileID *__pyx_v_self) {
+  size_t __pyx_v_max_size;
+  size_t __pyx_v_min_clean_size;
+  size_t __pyx_v_cur_size;
+  int __pyx_v_cur_num_entries;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_mdc_size", 0);
+
+  /* "h5py/h5f.pyx":398
+ * 
+ * 
+ *         H5Fget_mdc_size(self.id, &max_size, &min_clean_size, &cur_size, &cur_num_entries)             # <<<<<<<<<<<<<<
+ * 
+ *         return (max_size, min_clean_size, cur_size, cur_num_entries)
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Fget_mdc_size(__pyx_v_self->__pyx_base.__pyx_base.id, (&__pyx_v_max_size), (&__pyx_v_min_clean_size), (&__pyx_v_cur_size), (&__pyx_v_cur_num_entries)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 398; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5f.pyx":400
+ *         H5Fget_mdc_size(self.id, &max_size, &min_clean_size, &cur_size, &cur_num_entries)
+ * 
+ *         return (max_size, min_clean_size, cur_size, cur_num_entries)             # <<<<<<<<<<<<<<
+ * 
+ *     def reset_mdc_hit_rate_stats(self):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_2 = __Pyx_PyInt_FromSize_t(__pyx_v_max_size); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 400; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_min_clean_size); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 400; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_v_cur_size); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 400; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = PyInt_FromLong(__pyx_v_cur_num_entries); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 400; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_6 = PyTuple_New(4); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 400; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_6);
+  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_2);
+  __Pyx_GIVEREF(__pyx_t_2);
+  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_3);
+  PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_t_4);
+  __Pyx_GIVEREF(__pyx_t_4);
+  PyTuple_SET_ITEM(__pyx_t_6, 3, __pyx_t_5);
+  __Pyx_GIVEREF(__pyx_t_5);
+  __pyx_t_2 = 0;
+  __pyx_t_3 = 0;
+  __pyx_t_4 = 0;
+  __pyx_t_5 = 0;
+  __pyx_r = ((PyObject *)__pyx_t_6);
+  __pyx_t_6 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_AddTraceback("h5py.h5f.FileID.get_mdc_size", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5f_6FileID_23reset_mdc_hit_rate_stats(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5f_6FileID_22reset_mdc_hit_rate_stats[] = "no return\n\n        rests the hit-rate statistics\n\n        ";
+static PyObject *__pyx_pw_4h5py_3h5f_6FileID_23reset_mdc_hit_rate_stats(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("reset_mdc_hit_rate_stats (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5f_6FileID_22reset_mdc_hit_rate_stats(((struct __pyx_obj_4h5py_3h5f_FileID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5f.pyx":402
+ *         return (max_size, min_clean_size, cur_size, cur_num_entries)
+ * 
+ *     def reset_mdc_hit_rate_stats(self):             # <<<<<<<<<<<<<<
+ *         """no return
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5f_6FileID_22reset_mdc_hit_rate_stats(struct __pyx_obj_4h5py_3h5f_FileID *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("reset_mdc_hit_rate_stats", 0);
+
+  /* "h5py/h5f.pyx":408
+ * 
+ *         """
+ *         H5Freset_mdc_hit_rate_stats(self.id)             # <<<<<<<<<<<<<<
+ * 
+ *     def get_mdc_config(self):
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Freset_mdc_hit_rate_stats(__pyx_v_self->__pyx_base.__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 408; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py.h5f.FileID.reset_mdc_hit_rate_stats", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5f_6FileID_25get_mdc_config(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5f_6FileID_24get_mdc_config[] = "() => CacheConfig\n        Returns an object that stores all the information about the meta-data cache\n        configuration\n        ";
+static PyObject *__pyx_pw_4h5py_3h5f_6FileID_25get_mdc_config(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_mdc_config (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5f_6FileID_24get_mdc_config(((struct __pyx_obj_4h5py_3h5f_FileID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5f.pyx":410
+ *         H5Freset_mdc_hit_rate_stats(self.id)
+ * 
+ *     def get_mdc_config(self):             # <<<<<<<<<<<<<<
+ *         """() => CacheConfig
+ *         Returns an object that stores all the information about the meta-data cache
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5f_6FileID_24get_mdc_config(struct __pyx_obj_4h5py_3h5f_FileID *__pyx_v_self) {
+  struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_config = 0;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  herr_t __pyx_t_2;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_mdc_config", 0);
+
+  /* "h5py/h5f.pyx":416
+ *         """
+ * 
+ *         cdef CacheConfig config = CacheConfig()             # <<<<<<<<<<<<<<
+ * 
+ *         H5Fget_mdc_config(self.id, &config.cache_config)
+ */
+  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4h5py_4h5ac_CacheConfig)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 416; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_config = ((struct __pyx_obj_4h5py_4h5ac_CacheConfig *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "h5py/h5f.pyx":418
+ *         cdef CacheConfig config = CacheConfig()
+ * 
+ *         H5Fget_mdc_config(self.id, &config.cache_config)             # <<<<<<<<<<<<<<
+ * 
+ *         return config
+ */
+  __pyx_t_2 = __pyx_f_4h5py_4defs_H5Fget_mdc_config(__pyx_v_self->__pyx_base.__pyx_base.id, (&__pyx_v_config->cache_config)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 418; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5f.pyx":420
+ *         H5Fget_mdc_config(self.id, &config.cache_config)
+ * 
+ *         return config             # <<<<<<<<<<<<<<
+ * 
+ *     def set_mdc_config(self, CacheConfig config not None):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(((PyObject *)__pyx_v_config));
+  __pyx_r = ((PyObject *)__pyx_v_config);
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py.h5f.FileID.get_mdc_config", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_config);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5f_6FileID_27set_mdc_config(PyObject *__pyx_v_self, PyObject *__pyx_v_config); /*proto*/
+static char __pyx_doc_4h5py_3h5f_6FileID_26set_mdc_config[] = "(CacheConfig) => None\n        Returns an object that stores all the information about the meta-data cache\n        configuration\n        ";
+static PyObject *__pyx_pw_4h5py_3h5f_6FileID_27set_mdc_config(PyObject *__pyx_v_self, PyObject *__pyx_v_config) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("set_mdc_config (wrapper)", 0);
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_config), __pyx_ptype_4h5py_4h5ac_CacheConfig, 0, "config", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 422; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_pf_4h5py_3h5f_6FileID_26set_mdc_config(((struct __pyx_obj_4h5py_3h5f_FileID *)__pyx_v_self), ((struct __pyx_obj_4h5py_4h5ac_CacheConfig *)__pyx_v_config));
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5f.pyx":422
+ *         return config
+ * 
+ *     def set_mdc_config(self, CacheConfig config not None):             # <<<<<<<<<<<<<<
+ *         """(CacheConfig) => None
+ *         Returns an object that stores all the information about the meta-data cache
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5f_6FileID_26set_mdc_config(struct __pyx_obj_4h5py_3h5f_FileID *__pyx_v_self, struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_config) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("set_mdc_config", 0);
+
+  /* "h5py/h5f.pyx":428
+ *         """
+ *         # I feel this should have some sanity checking to make sure that
+ *         H5Fset_mdc_config(self.id, &config.cache_config)             # <<<<<<<<<<<<<<
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Fset_mdc_config(__pyx_v_self->__pyx_base.__pyx_base.id, (&__pyx_v_config->cache_config)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 428; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py.h5f.FileID.set_mdc_config", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_tp_new_4h5py_3h5f_FileID(PyTypeObject *t, PyObject *a, PyObject *k) {
+  PyObject *o = __pyx_ptype_4h5py_3h5g_GroupID->tp_new(t, a, k);
+  if (!o) return 0;
+  if (__pyx_pw_4h5py_3h5f_6FileID_1__cinit__(o, a, k) < 0) {
+    Py_DECREF(o); o = 0;
+  }
+  return o;
+}
+
+static void __pyx_tp_dealloc_4h5py_3h5f_FileID(PyObject *o) {
+  PyObject_GC_UnTrack(o);
+  PyObject_GC_Track(o);
+  if (likely(__pyx_ptype_4h5py_3h5g_GroupID)) __pyx_ptype_4h5py_3h5g_GroupID->tp_dealloc(o); else __Pyx_call_next_tp_dealloc(o, __pyx_tp_dealloc_4h5py_3h5f_FileID);
+}
+
+static int __pyx_tp_traverse_4h5py_3h5f_FileID(PyObject *o, visitproc v, void *a) {
+  int e;
+  e = ((likely(__pyx_ptype_4h5py_3h5g_GroupID)) ? ((__pyx_ptype_4h5py_3h5g_GroupID->tp_traverse) ? __pyx_ptype_4h5py_3h5g_GroupID->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_4h5py_3h5f_FileID)); if (e) return e;
+  return 0;
+}
+
+static int __pyx_tp_clear_4h5py_3h5f_FileID(PyObject *o) {
+  if (likely(__pyx_ptype_4h5py_3h5g_GroupID)) { if (__pyx_ptype_4h5py_3h5g_GroupID->tp_clear) __pyx_ptype_4h5py_3h5g_GroupID->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_4h5py_3h5f_FileID);
+  return 0;
+}
+
+static PyObject *__pyx_getprop_4h5py_3h5f_6FileID_name(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_4h5py_3h5f_6FileID_4name_1__get__(o);
+}
+
+static PyMethodDef __pyx_methods_4h5py_3h5f_FileID[] = {
+  {__Pyx_NAMESTR("close"), (PyCFunction)__pyx_pw_4h5py_3h5f_6FileID_3close, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5f_6FileID_2close)},
+  {__Pyx_NAMESTR("reopen"), (PyCFunction)__pyx_pw_4h5py_3h5f_6FileID_5reopen, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5f_6FileID_4reopen)},
+  {__Pyx_NAMESTR("get_filesize"), (PyCFunction)__pyx_pw_4h5py_3h5f_6FileID_7get_filesize, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5f_6FileID_6get_filesize)},
+  {__Pyx_NAMESTR("get_create_plist"), (PyCFunction)__pyx_pw_4h5py_3h5f_6FileID_9get_create_plist, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5f_6FileID_8get_create_plist)},
+  {__Pyx_NAMESTR("get_access_plist"), (PyCFunction)__pyx_pw_4h5py_3h5f_6FileID_11get_access_plist, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5f_6FileID_10get_access_plist)},
+  {__Pyx_NAMESTR("get_freespace"), (PyCFunction)__pyx_pw_4h5py_3h5f_6FileID_13get_freespace, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5f_6FileID_12get_freespace)},
+  {__Pyx_NAMESTR("get_intent"), (PyCFunction)__pyx_pw_4h5py_3h5f_6FileID_15get_intent, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5f_6FileID_14get_intent)},
+  {__Pyx_NAMESTR("get_vfd_handle"), (PyCFunction)__pyx_pw_4h5py_3h5f_6FileID_17get_vfd_handle, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5f_6FileID_16get_vfd_handle)},
+  {__Pyx_NAMESTR("get_mdc_hit_rate"), (PyCFunction)__pyx_pw_4h5py_3h5f_6FileID_19get_mdc_hit_rate, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5f_6FileID_18get_mdc_hit_rate)},
+  {__Pyx_NAMESTR("get_mdc_size"), (PyCFunction)__pyx_pw_4h5py_3h5f_6FileID_21get_mdc_size, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5f_6FileID_20get_mdc_size)},
+  {__Pyx_NAMESTR("reset_mdc_hit_rate_stats"), (PyCFunction)__pyx_pw_4h5py_3h5f_6FileID_23reset_mdc_hit_rate_stats, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5f_6FileID_22reset_mdc_hit_rate_stats)},
+  {__Pyx_NAMESTR("get_mdc_config"), (PyCFunction)__pyx_pw_4h5py_3h5f_6FileID_25get_mdc_config, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5f_6FileID_24get_mdc_config)},
+  {__Pyx_NAMESTR("set_mdc_config"), (PyCFunction)__pyx_pw_4h5py_3h5f_6FileID_27set_mdc_config, METH_O, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5f_6FileID_26set_mdc_config)},
+  {0, 0, 0, 0}
+};
+
+static struct PyGetSetDef __pyx_getsets_4h5py_3h5f_FileID[] = {
+  {(char *)"name", __pyx_getprop_4h5py_3h5f_6FileID_name, 0, __Pyx_DOCSTR(__pyx_k_12), 0},
+  {0, 0, 0, 0, 0}
+};
+
+static PyNumberMethods __pyx_tp_as_number_FileID = {
+  0, /*nb_add*/
+  0, /*nb_subtract*/
+  0, /*nb_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_divide*/
+  #endif
+  0, /*nb_remainder*/
+  0, /*nb_divmod*/
+  0, /*nb_power*/
+  0, /*nb_negative*/
+  0, /*nb_positive*/
+  0, /*nb_absolute*/
+  0, /*nb_nonzero*/
+  0, /*nb_invert*/
+  0, /*nb_lshift*/
+  0, /*nb_rshift*/
+  0, /*nb_and*/
+  0, /*nb_xor*/
+  0, /*nb_or*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_coerce*/
+  #endif
+  0, /*nb_int*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_long*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*nb_float*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_oct*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_hex*/
+  #endif
+  0, /*nb_inplace_add*/
+  0, /*nb_inplace_subtract*/
+  0, /*nb_inplace_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_inplace_divide*/
+  #endif
+  0, /*nb_inplace_remainder*/
+  0, /*nb_inplace_power*/
+  0, /*nb_inplace_lshift*/
+  0, /*nb_inplace_rshift*/
+  0, /*nb_inplace_and*/
+  0, /*nb_inplace_xor*/
+  0, /*nb_inplace_or*/
+  0, /*nb_floor_divide*/
+  0, /*nb_true_divide*/
+  0, /*nb_inplace_floor_divide*/
+  0, /*nb_inplace_true_divide*/
+  #if PY_VERSION_HEX >= 0x02050000
+  0, /*nb_index*/
+  #endif
+};
+
+static PySequenceMethods __pyx_tp_as_sequence_FileID = {
+  0, /*sq_length*/
+  0, /*sq_concat*/
+  0, /*sq_repeat*/
+  0, /*sq_item*/
+  0, /*sq_slice*/
+  0, /*sq_ass_item*/
+  0, /*sq_ass_slice*/
+  0, /*sq_contains*/
+  0, /*sq_inplace_concat*/
+  0, /*sq_inplace_repeat*/
+};
+
+static PyMappingMethods __pyx_tp_as_mapping_FileID = {
+  0, /*mp_length*/
+  0, /*mp_subscript*/
+  0, /*mp_ass_subscript*/
+};
+
+static PyBufferProcs __pyx_tp_as_buffer_FileID = {
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getreadbuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getwritebuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getsegcount*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getcharbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_getbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_releasebuffer*/
+  #endif
+};
+
+static PyTypeObject __pyx_type_4h5py_3h5f_FileID = {
+  PyVarObject_HEAD_INIT(0, 0)
+  __Pyx_NAMESTR("h5py.h5f.FileID"), /*tp_name*/
+  sizeof(struct __pyx_obj_4h5py_3h5f_FileID), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_4h5py_3h5f_FileID, /*tp_dealloc*/
+  0, /*tp_print*/
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*tp_repr*/
+  &__pyx_tp_as_number_FileID, /*tp_as_number*/
+  &__pyx_tp_as_sequence_FileID, /*tp_as_sequence*/
+  &__pyx_tp_as_mapping_FileID, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  &__pyx_tp_as_buffer_FileID, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+  __Pyx_DOCSTR("\n        Represents an HDF5 file identifier.\n\n        These objects wrap a small portion of the H5F interface; all the\n        H5F functions which can take arbitrary objects in addition to\n        file identifiers are provided as functions in the h5f module.\n\n        Properties:\n\n        * name:   File name on disk\n\n        Behavior:\n\n        * Hashable: Yes, unique to the file (but not the access mode)\n        * Equality: Hash comparison\n    "), /*tp_doc*/
+  __pyx_tp_traverse_4h5py_3h5f_FileID, /*tp_traverse*/
+  __pyx_tp_clear_4h5py_3h5f_FileID, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_4h5py_3h5f_FileID, /*tp_methods*/
+  0, /*tp_members*/
+  __pyx_getsets_4h5py_3h5f_FileID, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  0, /*tp_dictoffset*/
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_4h5py_3h5f_FileID, /*tp_new*/
+  0, /*tp_free*/
+  0, /*tp_is_gc*/
+  0, /*tp_bases*/
+  0, /*tp_mro*/
+  0, /*tp_cache*/
+  0, /*tp_subclasses*/
+  0, /*tp_weaklist*/
+  0, /*tp_del*/
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*tp_version_tag*/
+  #endif
+};
+
+static PyMethodDef __pyx_methods[] = {
+  {0, 0, 0, 0}
+};
+
+#if PY_MAJOR_VERSION >= 3
+static struct PyModuleDef __pyx_moduledef = {
+  #if PY_VERSION_HEX < 0x03020000
+    { PyObject_HEAD_INIT(NULL) NULL, 0, NULL },
+  #else
+    PyModuleDef_HEAD_INIT,
+  #endif
+    __Pyx_NAMESTR("h5f"),
+    __Pyx_DOCSTR(__pyx_k_13), /* m_doc */
+    -1, /* m_size */
+    __pyx_methods /* m_methods */,
+    NULL, /* m_reload */
+    NULL, /* m_traverse */
+    NULL, /* m_clear */
+    NULL /* m_free */
+};
+#endif
+
+static __Pyx_StringTabEntry __pyx_string_tab[] = {
+  {&__pyx_kp_s_16, __pyx_k_16, sizeof(__pyx_k_16), 0, 0, 1, 0},
+  {&__pyx_n_s_17, __pyx_k_17, sizeof(__pyx_k_17), 0, 0, 1, 1},
+  {&__pyx_kp_s_6, __pyx_k_6, sizeof(__pyx_k_6), 0, 0, 1, 0},
+  {&__pyx_n_s__ACC_EXCL, __pyx_k__ACC_EXCL, sizeof(__pyx_k__ACC_EXCL), 0, 0, 1, 1},
+  {&__pyx_n_s__ACC_RDONLY, __pyx_k__ACC_RDONLY, sizeof(__pyx_k__ACC_RDONLY), 0, 0, 1, 1},
+  {&__pyx_n_s__ACC_RDWR, __pyx_k__ACC_RDWR, sizeof(__pyx_k__ACC_RDWR), 0, 0, 1, 1},
+  {&__pyx_n_s__ACC_TRUNC, __pyx_k__ACC_TRUNC, sizeof(__pyx_k__ACC_TRUNC), 0, 0, 1, 1},
+  {&__pyx_n_s__CLOSE_DEFAULT, __pyx_k__CLOSE_DEFAULT, sizeof(__pyx_k__CLOSE_DEFAULT), 0, 0, 1, 1},
+  {&__pyx_n_s__CLOSE_SEMI, __pyx_k__CLOSE_SEMI, sizeof(__pyx_k__CLOSE_SEMI), 0, 0, 1, 1},
+  {&__pyx_n_s__CLOSE_STRONG, __pyx_k__CLOSE_STRONG, sizeof(__pyx_k__CLOSE_STRONG), 0, 0, 1, 1},
+  {&__pyx_n_s__CLOSE_WEAK, __pyx_k__CLOSE_WEAK, sizeof(__pyx_k__CLOSE_WEAK), 0, 0, 1, 1},
+  {&__pyx_n_s__LIBVER_EARLIEST, __pyx_k__LIBVER_EARLIEST, sizeof(__pyx_k__LIBVER_EARLIEST), 0, 0, 1, 1},
+  {&__pyx_n_s__LIBVER_LATEST, __pyx_k__LIBVER_LATEST, sizeof(__pyx_k__LIBVER_LATEST), 0, 0, 1, 1},
+  {&__pyx_n_s__NotImplementedError, __pyx_k__NotImplementedError, sizeof(__pyx_k__NotImplementedError), 0, 0, 1, 1},
+  {&__pyx_n_s__OBJ_ALL, __pyx_k__OBJ_ALL, sizeof(__pyx_k__OBJ_ALL), 0, 0, 1, 1},
+  {&__pyx_n_s__OBJ_ATTR, __pyx_k__OBJ_ATTR, sizeof(__pyx_k__OBJ_ATTR), 0, 0, 1, 1},
+  {&__pyx_n_s__OBJ_DATASET, __pyx_k__OBJ_DATASET, sizeof(__pyx_k__OBJ_DATASET), 0, 0, 1, 1},
+  {&__pyx_n_s__OBJ_DATATYPE, __pyx_k__OBJ_DATATYPE, sizeof(__pyx_k__OBJ_DATATYPE), 0, 0, 1, 1},
+  {&__pyx_n_s__OBJ_FILE, __pyx_k__OBJ_FILE, sizeof(__pyx_k__OBJ_FILE), 0, 0, 1, 1},
+  {&__pyx_n_s__OBJ_GROUP, __pyx_k__OBJ_GROUP, sizeof(__pyx_k__OBJ_GROUP), 0, 0, 1, 1},
+  {&__pyx_n_s__OBJ_LOCAL, __pyx_k__OBJ_LOCAL, sizeof(__pyx_k__OBJ_LOCAL), 0, 0, 1, 1},
+  {&__pyx_n_s__SCOPE_GLOBAL, __pyx_k__SCOPE_GLOBAL, sizeof(__pyx_k__SCOPE_GLOBAL), 0, 0, 1, 1},
+  {&__pyx_n_s__SCOPE_LOCAL, __pyx_k__SCOPE_LOCAL, sizeof(__pyx_k__SCOPE_LOCAL), 0, 0, 1, 1},
+  {&__pyx_n_s__SEC2, __pyx_k__SEC2, sizeof(__pyx_k__SEC2), 0, 0, 1, 1},
+  {&__pyx_n_s__TypeError, __pyx_k__TypeError, sizeof(__pyx_k__TypeError), 0, 0, 1, 1},
+  {&__pyx_n_s____enter__, __pyx_k____enter__, sizeof(__pyx_k____enter__), 0, 0, 1, 1},
+  {&__pyx_n_s____exit__, __pyx_k____exit__, sizeof(__pyx_k____exit__), 0, 0, 1, 1},
+  {&__pyx_n_s____main__, __pyx_k____main__, sizeof(__pyx_k____main__), 0, 0, 1, 1},
+  {&__pyx_n_s____test__, __pyx_k____test__, sizeof(__pyx_k____test__), 0, 0, 1, 1},
+  {&__pyx_n_s___objects, __pyx_k___objects, sizeof(__pyx_k___objects), 0, 0, 1, 1},
+  {&__pyx_n_s__cleanup, __pyx_k__cleanup, sizeof(__pyx_k__cleanup), 0, 0, 1, 1},
+  {&__pyx_n_s__count, __pyx_k__count, sizeof(__pyx_k__count), 0, 0, 1, 1},
+  {&__pyx_n_s__create, __pyx_k__create, sizeof(__pyx_k__create), 0, 0, 1, 1},
+  {&__pyx_n_s__fapl, __pyx_k__fapl, sizeof(__pyx_k__fapl), 0, 0, 1, 1},
+  {&__pyx_n_s__fcpl, __pyx_k__fcpl, sizeof(__pyx_k__fcpl), 0, 0, 1, 1},
+  {&__pyx_n_s__fid, __pyx_k__fid, sizeof(__pyx_k__fid), 0, 0, 1, 1},
+  {&__pyx_n_s__flags, __pyx_k__flags, sizeof(__pyx_k__flags), 0, 0, 1, 1},
+  {&__pyx_n_s__flush, __pyx_k__flush, sizeof(__pyx_k__flush), 0, 0, 1, 1},
+  {&__pyx_n_s__get_name, __pyx_k__get_name, sizeof(__pyx_k__get_name), 0, 0, 1, 1},
+  {&__pyx_n_s__get_obj_count, __pyx_k__get_obj_count, sizeof(__pyx_k__get_obj_count), 0, 0, 1, 1},
+  {&__pyx_n_s__get_obj_ids, __pyx_k__get_obj_ids, sizeof(__pyx_k__get_obj_ids), 0, 0, 1, 1},
+  {&__pyx_n_s__h5fd, __pyx_k__h5fd, sizeof(__pyx_k__h5fd), 0, 0, 1, 1},
+  {&__pyx_n_s__h5py, __pyx_k__h5py, sizeof(__pyx_k__h5py), 0, 0, 1, 1},
+  {&__pyx_n_s__i, __pyx_k__i, sizeof(__pyx_k__i), 0, 0, 1, 1},
+  {&__pyx_n_s__id, __pyx_k__id, sizeof(__pyx_k__id), 0, 0, 1, 1},
+  {&__pyx_n_s__is_hdf5, __pyx_k__is_hdf5, sizeof(__pyx_k__is_hdf5), 0, 0, 1, 1},
+  {&__pyx_n_s__loc, __pyx_k__loc, sizeof(__pyx_k__loc), 0, 0, 1, 1},
+  {&__pyx_n_s__lock, __pyx_k__lock, sizeof(__pyx_k__lock), 0, 0, 1, 1},
+  {&__pyx_n_s__mount, __pyx_k__mount, sizeof(__pyx_k__mount), 0, 0, 1, 1},
+  {&__pyx_n_s__name, __pyx_k__name, sizeof(__pyx_k__name), 0, 0, 1, 1},
+  {&__pyx_n_s__obj, __pyx_k__obj, sizeof(__pyx_k__obj), 0, 0, 1, 1},
+  {&__pyx_n_s__obj_list, __pyx_k__obj_list, sizeof(__pyx_k__obj_list), 0, 0, 1, 1},
+  {&__pyx_n_s__open, __pyx_k__open, sizeof(__pyx_k__open), 0, 0, 1, 1},
+  {&__pyx_n_s__pname, __pyx_k__pname, sizeof(__pyx_k__pname), 0, 0, 1, 1},
+  {&__pyx_n_s__py_obj_list, __pyx_k__py_obj_list, sizeof(__pyx_k__py_obj_list), 0, 0, 1, 1},
+  {&__pyx_n_s__registry, __pyx_k__registry, sizeof(__pyx_k__registry), 0, 0, 1, 1},
+  {&__pyx_n_s__scope, __pyx_k__scope, sizeof(__pyx_k__scope), 0, 0, 1, 1},
+  {&__pyx_n_s__size, __pyx_k__size, sizeof(__pyx_k__size), 0, 0, 1, 1},
+  {&__pyx_n_s__types, __pyx_k__types, sizeof(__pyx_k__types), 0, 0, 1, 1},
+  {&__pyx_n_s__unmount, __pyx_k__unmount, sizeof(__pyx_k__unmount), 0, 0, 1, 1},
+  {&__pyx_n_s__where, __pyx_k__where, sizeof(__pyx_k__where), 0, 0, 1, 1},
+  {&__pyx_n_s__where_id, __pyx_k__where_id, sizeof(__pyx_k__where_id), 0, 0, 1, 1},
+  {0, 0, 0, 0, 0, 0, 0}
+};
+static int __Pyx_InitCachedBuiltins(void) {
+  __pyx_builtin_TypeError = __Pyx_GetName(__pyx_b, __pyx_n_s__TypeError); if (!__pyx_builtin_TypeError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 178; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_builtin_NotImplementedError = __Pyx_GetName(__pyx_b, __pyx_n_s__NotImplementedError); if (!__pyx_builtin_NotImplementedError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  return 0;
+  __pyx_L1_error:;
+  return -1;
+}
+
+static int __Pyx_InitCachedConstants(void) {
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0);
+
+  /* "h5py/h5f.pyx":178
+ *         where_id = where
+ *     else:
+ *         raise TypeError("Location must be a FileID or OBJ_ALL.")             # <<<<<<<<<<<<<<
+ * 
+ *     return H5Fget_obj_count(where_id, types)
+ */
+  __pyx_k_tuple_7 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_6)); if (unlikely(!__pyx_k_tuple_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 178; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_7);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_7));
+
+  /* "h5py/h5f.pyx":212
+ *             where_id = int(where)
+ *         except TypeError:
+ *             raise TypeError("Location must be a FileID or OBJ_ALL.")             # <<<<<<<<<<<<<<
+ * 
+ *     try:
+ */
+  __pyx_k_tuple_10 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_6)); if (unlikely(!__pyx_k_tuple_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_10);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_10));
+
+  /* "h5py/h5f.pyx":269
+ *         identifiers are freed.
+ *         """
+ *         with _objects.registry.lock:             # <<<<<<<<<<<<<<
+ *             self.locked = False
+ *             H5Fclose(self.id)
+ */
+  __pyx_k_tuple_11 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 269; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_11);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_11));
+
+  /* "h5py/h5f.pyx":58
+ * 
+ * 
+ * def open(char* name, unsigned int flags=H5F_ACC_RDWR, PropFAID fapl=None):             # <<<<<<<<<<<<<<
+ *     """(STRING name, UINT flags=ACC_RDWR, PropFAID fapl=None) => FileID
+ * 
+ */
+  __pyx_k_tuple_14 = PyTuple_Pack(3, ((PyObject *)__pyx_n_s__name), ((PyObject *)__pyx_n_s__flags), ((PyObject *)__pyx_n_s__fapl)); if (unlikely(!__pyx_k_tuple_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_14);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_14));
+  __pyx_k_codeobj_15 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_14, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_16, __pyx_n_s__open, 58, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5f.pyx":74
+ * 
+ * 
+ * def create(char* name, int flags=H5F_ACC_TRUNC, PropFCID fcpl=None,             # <<<<<<<<<<<<<<
+ *                                                 PropFAID fapl=None):
+ *     """(STRING name, INT flags=ACC_TRUNC, PropFCID fcpl=None,
+ */
+  __pyx_k_tuple_18 = PyTuple_Pack(4, ((PyObject *)__pyx_n_s__name), ((PyObject *)__pyx_n_s__flags), ((PyObject *)__pyx_n_s__fcpl), ((PyObject *)__pyx_n_s__fapl)); if (unlikely(!__pyx_k_tuple_18)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_18);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_18));
+  __pyx_k_codeobj_19 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_16, __pyx_n_s__create, 74, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_19)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5f.pyx":93
+ * 
+ * 
+ * def flush(ObjectID obj not None, int scope=H5F_SCOPE_LOCAL):             # <<<<<<<<<<<<<<
+ *     """(ObjectID obj, INT scope=SCOPE_LOCAL)
+ * 
+ */
+  __pyx_k_tuple_20 = PyTuple_Pack(2, ((PyObject *)__pyx_n_s__obj), ((PyObject *)__pyx_n_s__scope)); if (unlikely(!__pyx_k_tuple_20)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_20);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_20));
+  __pyx_k_codeobj_21 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_20, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_16, __pyx_n_s__flush, 93, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_21)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5f.pyx":109
+ * 
+ * 
+ * def is_hdf5(char* name):             # <<<<<<<<<<<<<<
+ *     """(STRING name) => BOOL
+ * 
+ */
+  __pyx_k_tuple_22 = PyTuple_Pack(2, ((PyObject *)__pyx_n_s__name), ((PyObject *)__pyx_n_s__name)); if (unlikely(!__pyx_k_tuple_22)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_22);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_22));
+  __pyx_k_codeobj_23 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_22, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_16, __pyx_n_s__is_hdf5, 109, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_23)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5f.pyx":118
+ * 
+ * 
+ * def mount(ObjectID loc not None, char* name, FileID fid not None):             # <<<<<<<<<<<<<<
+ *     """(ObjectID loc, STRING name, FileID fid)
+ * 
+ */
+  __pyx_k_tuple_24 = PyTuple_Pack(3, ((PyObject *)__pyx_n_s__loc), ((PyObject *)__pyx_n_s__name), ((PyObject *)__pyx_n_s__fid)); if (unlikely(!__pyx_k_tuple_24)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_24);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_24));
+  __pyx_k_codeobj_25 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_24, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_16, __pyx_n_s__mount, 118, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_25)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5f.pyx":127
+ * 
+ * 
+ * def unmount(ObjectID loc not None, char* name):             # <<<<<<<<<<<<<<
+ *     """(ObjectID loc, STRING name)
+ * 
+ */
+  __pyx_k_tuple_26 = PyTuple_Pack(2, ((PyObject *)__pyx_n_s__loc), ((PyObject *)__pyx_n_s__name)); if (unlikely(!__pyx_k_tuple_26)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_26);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_26));
+  __pyx_k_codeobj_27 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_26, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_16, __pyx_n_s__unmount, 127, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_27)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5f.pyx":135
+ * 
+ * 
+ * def get_name(ObjectID obj not None):             # <<<<<<<<<<<<<<
+ *     """(ObjectID obj) => STRING
+ * 
+ */
+  __pyx_k_tuple_28 = PyTuple_Pack(4, ((PyObject *)__pyx_n_s__obj), ((PyObject *)__pyx_n_s__size), ((PyObject *)__pyx_n_s__name), ((PyObject *)__pyx_n_s__pname)); if (unlikely(!__pyx_k_tuple_28)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_28);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_28));
+  __pyx_k_codeobj_29 = (PyObject*)__Pyx_PyCode_New(1, 0, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_28, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_16, __pyx_n_s__get_name, 135, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_29)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5f.pyx":155
+ * 
+ * 
+ * def get_obj_count(object where=OBJ_ALL, int types=H5F_OBJ_ALL):             # <<<<<<<<<<<<<<
+ *     """(OBJECT where=OBJ_ALL, types=OBJ_ALL) => INT
+ * 
+ */
+  __pyx_k_tuple_30 = PyTuple_Pack(3, ((PyObject *)__pyx_n_s__where), ((PyObject *)__pyx_n_s__types), ((PyObject *)__pyx_n_s__where_id)); if (unlikely(!__pyx_k_tuple_30)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 155; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_30);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_30));
+  __pyx_k_codeobj_31 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_30, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_16, __pyx_n_s__get_obj_count, 155, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_31)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 155; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5f.pyx":183
+ * 
+ * 
+ * def get_obj_ids(object where=OBJ_ALL, int types=H5F_OBJ_ALL):             # <<<<<<<<<<<<<<
+ *     """(OBJECT where=OBJ_ALL, types=OBJ_ALL) => LIST
+ * 
+ */
+  __pyx_k_tuple_32 = PyTuple_Pack(7, ((PyObject *)__pyx_n_s__where), ((PyObject *)__pyx_n_s__types), ((PyObject *)__pyx_n_s__count), ((PyObject *)__pyx_n_s__i), ((PyObject *)__pyx_n_s__where_id), ((PyObject *)__pyx_n_s__obj_list), ((PyObject *)__pyx_n_s__py_obj_list)); if (unlikely(!__pyx_k_tuple_32)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 183; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_32);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_32));
+  __pyx_k_codeobj_33 = (PyObject*)__Pyx_PyCode_New(2, 0, 7, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_32, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_16, __pyx_n_s__get_obj_ids, 183, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_33)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 183; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_RefNannyFinishContext();
+  return 0;
+  __pyx_L1_error:;
+  __Pyx_RefNannyFinishContext();
+  return -1;
+}
+
+static int __Pyx_InitGlobals(void) {
+  if (__Pyx_InitStrings(__pyx_string_tab) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  return 0;
+  __pyx_L1_error:;
+  return -1;
+}
+
+#if PY_MAJOR_VERSION < 3
+PyMODINIT_FUNC inith5f(void); /*proto*/
+PyMODINIT_FUNC inith5f(void)
+#else
+PyMODINIT_FUNC PyInit_h5f(void); /*proto*/
+PyMODINIT_FUNC PyInit_h5f(void)
+#endif
+{
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  PyObject *__pyx_t_8 = NULL;
+  __Pyx_RefNannyDeclarations
+  #if CYTHON_REFNANNY
+  __Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny");
+  if (!__Pyx_RefNanny) {
+      PyErr_Clear();
+      __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny");
+      if (!__Pyx_RefNanny)
+          Py_FatalError("failed to import 'refnanny' module");
+  }
+  #endif
+  __Pyx_RefNannySetupContext("PyMODINIT_FUNC PyInit_h5f(void)", 0);
+  if ( __Pyx_check_binary_version() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #ifdef __Pyx_CyFunction_USED
+  if (__Pyx_CyFunction_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #endif
+  #ifdef __Pyx_FusedFunction_USED
+  if (__pyx_FusedFunction_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #endif
+  #ifdef __Pyx_Generator_USED
+  if (__pyx_Generator_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #endif
+  /*--- Library function declarations ---*/
+  /*--- Threads initialization code ---*/
+  #if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS
+  #ifdef WITH_THREAD /* Python build with threading support? */
+  PyEval_InitThreads();
+  #endif
+  #endif
+  /*--- Module creation code ---*/
+  #if PY_MAJOR_VERSION < 3
+  __pyx_m = Py_InitModule4(__Pyx_NAMESTR("h5f"), __pyx_methods, __Pyx_DOCSTR(__pyx_k_13), 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m);
+  #else
+  __pyx_m = PyModule_Create(&__pyx_moduledef);
+  #endif
+  if (unlikely(!__pyx_m)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #if PY_MAJOR_VERSION >= 3
+  {
+    PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (!PyDict_GetItemString(modules, "h5py.h5f")) {
+      if (unlikely(PyDict_SetItemString(modules, "h5py.h5f", __pyx_m) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    }
+  }
+  #endif
+  __pyx_b = PyImport_AddModule(__Pyx_NAMESTR(__Pyx_BUILTIN_MODULE_NAME)); if (unlikely(!__pyx_b)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #if CYTHON_COMPILING_IN_PYPY
+  Py_INCREF(__pyx_b);
+  #endif
+  if (__Pyx_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  /*--- Initialize various global constants etc. ---*/
+  if (unlikely(__Pyx_InitGlobals() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__pyx_module_is_main_h5py__h5f) {
+    if (__Pyx_SetAttrString(__pyx_m, "__name__", __pyx_n_s____main__) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  }
+  /*--- Builtin init code ---*/
+  if (unlikely(__Pyx_InitCachedBuiltins() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  /*--- Constants init code ---*/
+  if (unlikely(__Pyx_InitCachedConstants() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  /*--- Global init code ---*/
+  /*--- Variable export code ---*/
+  /*--- Function export code ---*/
+  /*--- Type init code ---*/
+  __pyx_ptype_4h5py_3h5g_GroupID = __Pyx_ImportType("h5py.h5g", "GroupID", sizeof(struct __pyx_obj_4h5py_3h5g_GroupID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5g_GroupID)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_type_4h5py_3h5f_FileID.tp_base = __pyx_ptype_4h5py_3h5g_GroupID;
+  if (PyType_Ready(&__pyx_type_4h5py_3h5f_FileID) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetAttrString(__pyx_m, "FileID", (PyObject *)&__pyx_type_4h5py_3h5f_FileID) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__pyx_type_4h5py_3h5f_FileID.tp_weaklistoffset == 0) __pyx_type_4h5py_3h5f_FileID.tp_weaklistoffset = offsetof(struct __pyx_obj_4h5py_3h5f_FileID, __pyx_base.__pyx_base.__weakref__);
+  __pyx_ptype_4h5py_3h5f_FileID = &__pyx_type_4h5py_3h5f_FileID;
+  /*--- Type import code ---*/
+  __pyx_ptype_4h5py_8_objects_ObjectID = __Pyx_ImportType("h5py._objects", "ObjectID", sizeof(struct __pyx_obj_4h5py_8_objects_ObjectID), 1); if (unlikely(!__pyx_ptype_4h5py_8_objects_ObjectID)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5p_PropID = __Pyx_ImportType("h5py.h5p", "PropID", sizeof(struct __pyx_obj_4h5py_3h5p_PropID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5p_PropID)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5p_PropClassID = __Pyx_ImportType("h5py.h5p", "PropClassID", sizeof(struct __pyx_obj_4h5py_3h5p_PropClassID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5p_PropClassID)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5p_PropInstanceID = __Pyx_ImportType("h5py.h5p", "PropInstanceID", sizeof(struct __pyx_obj_4h5py_3h5p_PropInstanceID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5p_PropInstanceID)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5p_PropCreateID = __Pyx_ImportType("h5py.h5p", "PropCreateID", sizeof(struct __pyx_obj_4h5py_3h5p_PropCreateID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5p_PropCreateID)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5p_PropCopyID = __Pyx_ImportType("h5py.h5p", "PropCopyID", sizeof(struct __pyx_obj_4h5py_3h5p_PropCopyID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5p_PropCopyID)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5p_PropOCID = __Pyx_ImportType("h5py.h5p", "PropOCID", sizeof(struct __pyx_obj_4h5py_3h5p_PropOCID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5p_PropOCID)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5p_PropDCID = __Pyx_ImportType("h5py.h5p", "PropDCID", sizeof(struct __pyx_obj_4h5py_3h5p_PropDCID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5p_PropDCID)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5p_PropFCID = __Pyx_ImportType("h5py.h5p", "PropFCID", sizeof(struct __pyx_obj_4h5py_3h5p_PropFCID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5p_PropFCID)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5p_PropFAID = __Pyx_ImportType("h5py.h5p", "PropFAID", sizeof(struct __pyx_obj_4h5py_3h5p_PropFAID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5p_PropFAID)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5p_PropDXID = __Pyx_ImportType("h5py.h5p", "PropDXID", sizeof(struct __pyx_obj_4h5py_3h5p_PropDXID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5p_PropDXID)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5p_PropLCID = __Pyx_ImportType("h5py.h5p", "PropLCID", sizeof(struct __pyx_obj_4h5py_3h5p_PropLCID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5p_PropLCID)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5p_PropLAID = __Pyx_ImportType("h5py.h5p", "PropLAID", sizeof(struct __pyx_obj_4h5py_3h5p_PropLAID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5p_PropLAID)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5p_PropGCID = __Pyx_ImportType("h5py.h5p", "PropGCID", sizeof(struct __pyx_obj_4h5py_3h5p_PropGCID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5p_PropGCID)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5t_TypeID = __Pyx_ImportType("h5py.h5t", "TypeID", sizeof(struct __pyx_obj_4h5py_3h5t_TypeID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5t_TypeID)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_vtabptr_4h5py_3h5t_TypeID = (struct __pyx_vtabstruct_4h5py_3h5t_TypeID*)__Pyx_GetVtable(__pyx_ptype_4h5py_3h5t_TypeID->tp_dict); if (unlikely(!__pyx_vtabptr_4h5py_3h5t_TypeID)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5t_TypeArrayID = __Pyx_ImportType("h5py.h5t", "TypeArrayID", sizeof(struct __pyx_obj_4h5py_3h5t_TypeArrayID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5t_TypeArrayID)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_vtabptr_4h5py_3h5t_TypeArrayID = (struct __pyx_vtabstruct_4h5py_3h5t_TypeArrayID*)__Pyx_GetVtable(__pyx_ptype_4h5py_3h5t_TypeArrayID->tp_dict); if (unlikely(!__pyx_vtabptr_4h5py_3h5t_TypeArrayID)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5t_TypeOpaqueID = __Pyx_ImportType("h5py.h5t", "TypeOpaqueID", sizeof(struct __pyx_obj_4h5py_3h5t_TypeOpaqueID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5t_TypeOpaqueID)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_vtabptr_4h5py_3h5t_TypeOpaqueID = (struct __pyx_vtabstruct_4h5py_3h5t_TypeOpaqueID*)__Pyx_GetVtable(__pyx_ptype_4h5py_3h5t_TypeOpaqueID->tp_dict); if (unlikely(!__pyx_vtabptr_4h5py_3h5t_TypeOpaqueID)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5t_TypeStringID = __Pyx_ImportType("h5py.h5t", "TypeStringID", sizeof(struct __pyx_obj_4h5py_3h5t_TypeStringID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5t_TypeStringID)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_vtabptr_4h5py_3h5t_TypeStringID = (struct __pyx_vtabstruct_4h5py_3h5t_TypeStringID*)__Pyx_GetVtable(__pyx_ptype_4h5py_3h5t_TypeStringID->tp_dict); if (unlikely(!__pyx_vtabptr_4h5py_3h5t_TypeStringID)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5t_TypeVlenID = __Pyx_ImportType("h5py.h5t", "TypeVlenID", sizeof(struct __pyx_obj_4h5py_3h5t_TypeVlenID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5t_TypeVlenID)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_vtabptr_4h5py_3h5t_TypeVlenID = (struct __pyx_vtabstruct_4h5py_3h5t_TypeVlenID*)__Pyx_GetVtable(__pyx_ptype_4h5py_3h5t_TypeVlenID->tp_dict); if (unlikely(!__pyx_vtabptr_4h5py_3h5t_TypeVlenID)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5t_TypeTimeID = __Pyx_ImportType("h5py.h5t", "TypeTimeID", sizeof(struct __pyx_obj_4h5py_3h5t_TypeTimeID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5t_TypeTimeID)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_vtabptr_4h5py_3h5t_TypeTimeID = (struct __pyx_vtabstruct_4h5py_3h5t_TypeTimeID*)__Pyx_GetVtable(__pyx_ptype_4h5py_3h5t_TypeTimeID->tp_dict); if (unlikely(!__pyx_vtabptr_4h5py_3h5t_TypeTimeID)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5t_TypeBitfieldID = __Pyx_ImportType("h5py.h5t", "TypeBitfieldID", sizeof(struct __pyx_obj_4h5py_3h5t_TypeBitfieldID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5t_TypeBitfieldID)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_vtabptr_4h5py_3h5t_TypeBitfieldID = (struct __pyx_vtabstruct_4h5py_3h5t_TypeBitfieldID*)__Pyx_GetVtable(__pyx_ptype_4h5py_3h5t_TypeBitfieldID->tp_dict); if (unlikely(!__pyx_vtabptr_4h5py_3h5t_TypeBitfieldID)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5t_TypeReferenceID = __Pyx_ImportType("h5py.h5t", "TypeReferenceID", sizeof(struct __pyx_obj_4h5py_3h5t_TypeReferenceID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5t_TypeReferenceID)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_vtabptr_4h5py_3h5t_TypeReferenceID = (struct __pyx_vtabstruct_4h5py_3h5t_TypeReferenceID*)__Pyx_GetVtable(__pyx_ptype_4h5py_3h5t_TypeReferenceID->tp_dict); if (unlikely(!__pyx_vtabptr_4h5py_3h5t_TypeReferenceID)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5t_TypeAtomicID = __Pyx_ImportType("h5py.h5t", "TypeAtomicID", sizeof(struct __pyx_obj_4h5py_3h5t_TypeAtomicID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5t_TypeAtomicID)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_vtabptr_4h5py_3h5t_TypeAtomicID = (struct __pyx_vtabstruct_4h5py_3h5t_TypeAtomicID*)__Pyx_GetVtable(__pyx_ptype_4h5py_3h5t_TypeAtomicID->tp_dict); if (unlikely(!__pyx_vtabptr_4h5py_3h5t_TypeAtomicID)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5t_TypeIntegerID = __Pyx_ImportType("h5py.h5t", "TypeIntegerID", sizeof(struct __pyx_obj_4h5py_3h5t_TypeIntegerID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5t_TypeIntegerID)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_vtabptr_4h5py_3h5t_TypeIntegerID = (struct __pyx_vtabstruct_4h5py_3h5t_TypeIntegerID*)__Pyx_GetVtable(__pyx_ptype_4h5py_3h5t_TypeIntegerID->tp_dict); if (unlikely(!__pyx_vtabptr_4h5py_3h5t_TypeIntegerID)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5t_TypeFloatID = __Pyx_ImportType("h5py.h5t", "TypeFloatID", sizeof(struct __pyx_obj_4h5py_3h5t_TypeFloatID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5t_TypeFloatID)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_vtabptr_4h5py_3h5t_TypeFloatID = (struct __pyx_vtabstruct_4h5py_3h5t_TypeFloatID*)__Pyx_GetVtable(__pyx_ptype_4h5py_3h5t_TypeFloatID->tp_dict); if (unlikely(!__pyx_vtabptr_4h5py_3h5t_TypeFloatID)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5t_TypeCompositeID = __Pyx_ImportType("h5py.h5t", "TypeCompositeID", sizeof(struct __pyx_obj_4h5py_3h5t_TypeCompositeID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5t_TypeCompositeID)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_vtabptr_4h5py_3h5t_TypeCompositeID = (struct __pyx_vtabstruct_4h5py_3h5t_TypeCompositeID*)__Pyx_GetVtable(__pyx_ptype_4h5py_3h5t_TypeCompositeID->tp_dict); if (unlikely(!__pyx_vtabptr_4h5py_3h5t_TypeCompositeID)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5t_TypeEnumID = __Pyx_ImportType("h5py.h5t", "TypeEnumID", sizeof(struct __pyx_obj_4h5py_3h5t_TypeEnumID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5t_TypeEnumID)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_vtabptr_4h5py_3h5t_TypeEnumID = (struct __pyx_vtabstruct_4h5py_3h5t_TypeEnumID*)__Pyx_GetVtable(__pyx_ptype_4h5py_3h5t_TypeEnumID->tp_dict); if (unlikely(!__pyx_vtabptr_4h5py_3h5t_TypeEnumID)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5t_TypeCompoundID = __Pyx_ImportType("h5py.h5t", "TypeCompoundID", sizeof(struct __pyx_obj_4h5py_3h5t_TypeCompoundID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5t_TypeCompoundID)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_vtabptr_4h5py_3h5t_TypeCompoundID = (struct __pyx_vtabstruct_4h5py_3h5t_TypeCompoundID*)__Pyx_GetVtable(__pyx_ptype_4h5py_3h5t_TypeCompoundID->tp_dict); if (unlikely(!__pyx_vtabptr_4h5py_3h5t_TypeCompoundID)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_4h5ac_CacheConfig = __Pyx_ImportType("h5py.h5ac", "CacheConfig", sizeof(struct __pyx_obj_4h5py_4h5ac_CacheConfig), 1); if (unlikely(!__pyx_ptype_4h5py_4h5ac_CacheConfig)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_5numpy_dtype = __Pyx_ImportType("numpy", "dtype", sizeof(PyArray_Descr), 0); if (unlikely(!__pyx_ptype_4h5py_5numpy_dtype)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_5numpy_ndarray = __Pyx_ImportType("numpy", "ndarray", sizeof(PyArrayObject), 0); if (unlikely(!__pyx_ptype_4h5py_5numpy_ndarray)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  /*--- Variable import code ---*/
+  /*--- Function import code ---*/
+  __pyx_t_1 = __Pyx_ImportModule("h5py.defs"); if (!__pyx_t_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Fcreate", (void (**)(void))&__pyx_f_4h5py_4defs_H5Fcreate, "hid_t (char *, unsigned int, hid_t, hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Fopen", (void (**)(void))&__pyx_f_4h5py_4defs_H5Fopen, "hid_t (char *, unsigned int, hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Fclose", (void (**)(void))&__pyx_f_4h5py_4defs_H5Fclose, "herr_t (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Fis_hdf5", (void (**)(void))&__pyx_f_4h5py_4defs_H5Fis_hdf5, "htri_t (char *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Fflush", (void (**)(void))&__pyx_f_4h5py_4defs_H5Fflush, "herr_t (hid_t, enum H5F_scope_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Freopen", (void (**)(void))&__pyx_f_4h5py_4defs_H5Freopen, "hid_t (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Fmount", (void (**)(void))&__pyx_f_4h5py_4defs_H5Fmount, "herr_t (hid_t, char *, hid_t, hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Funmount", (void (**)(void))&__pyx_f_4h5py_4defs_H5Funmount, "herr_t (hid_t, char *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Fget_filesize", (void (**)(void))&__pyx_f_4h5py_4defs_H5Fget_filesize, "herr_t (hid_t, hsize_t *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Fget_create_plist", (void (**)(void))&__pyx_f_4h5py_4defs_H5Fget_create_plist, "hid_t (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Fget_access_plist", (void (**)(void))&__pyx_f_4h5py_4defs_H5Fget_access_plist, "hid_t (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Fget_freespace", (void (**)(void))&__pyx_f_4h5py_4defs_H5Fget_freespace, "hssize_t (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Fget_name", (void (**)(void))&__pyx_f_4h5py_4defs_H5Fget_name, "Py_ssize_t (hid_t, char *, size_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Fget_obj_count", (void (**)(void))&__pyx_f_4h5py_4defs_H5Fget_obj_count, "int (hid_t, unsigned int)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Fget_obj_ids", (void (**)(void))&__pyx_f_4h5py_4defs_H5Fget_obj_ids, "int (hid_t, unsigned int, int, hid_t *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Fget_vfd_handle", (void (**)(void))&__pyx_f_4h5py_4defs_H5Fget_vfd_handle, "herr_t (hid_t, hid_t, void **)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Fget_intent", (void (**)(void))&__pyx_f_4h5py_4defs_H5Fget_intent, "herr_t (hid_t, unsigned int *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Fget_mdc_config", (void (**)(void))&__pyx_f_4h5py_4defs_H5Fget_mdc_config, "herr_t (hid_t, H5AC_cache_config_t *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Fget_mdc_hit_rate", (void (**)(void))&__pyx_f_4h5py_4defs_H5Fget_mdc_hit_rate, "herr_t (hid_t, double *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Fget_mdc_size", (void (**)(void))&__pyx_f_4h5py_4defs_H5Fget_mdc_size, "herr_t (hid_t, size_t *, size_t *, size_t *, int *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Freset_mdc_hit_rate_stats", (void (**)(void))&__pyx_f_4h5py_4defs_H5Freset_mdc_hit_rate_stats, "herr_t (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Fset_mdc_config", (void (**)(void))&__pyx_f_4h5py_4defs_H5Fset_mdc_config, "herr_t (hid_t, H5AC_cache_config_t *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Pget_driver", (void (**)(void))&__pyx_f_4h5py_4defs_H5Pget_driver, "hid_t (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  Py_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_2 = __Pyx_ImportModule("h5py._objects"); if (!__pyx_t_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_2, "pdefault", (void (**)(void))&__pyx_f_4h5py_8_objects_pdefault, "hid_t (struct __pyx_obj_4h5py_8_objects_ObjectID *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  Py_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_3 = __Pyx_ImportModule("h5py.h5p"); if (!__pyx_t_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_3, "propwrap", (void (**)(void))&__pyx_f_4h5py_3h5p_propwrap, "PyObject *(hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  Py_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_t_4 = __Pyx_ImportModule("h5py.h5t"); if (!__pyx_t_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_4, "typewrap", (void (**)(void))&__pyx_f_4h5py_3h5t_typewrap, "struct __pyx_obj_4h5py_3h5t_TypeID *(hid_t, int __pyx_skip_dispatch)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  Py_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __pyx_t_5 = __Pyx_ImportModule("h5py.h5i"); if (!__pyx_t_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_5, "wrap_identifier", (void (**)(void))&__pyx_f_4h5py_3h5i_wrap_identifier, "struct __pyx_obj_4h5py_8_objects_ObjectID *(hid_t, int __pyx_skip_dispatch)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  Py_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_6 = __Pyx_ImportModule("h5py.utils"); if (!__pyx_t_6) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_6, "emalloc", (void (**)(void))&__pyx_f_4h5py_5utils_emalloc, "void *(size_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_6, "efree", (void (**)(void))&__pyx_f_4h5py_5utils_efree, "void (void *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  Py_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+  /*--- Execution code ---*/
+
+  /* "h5py/h5f.pyx":24
+ * from utils cimport emalloc, efree
+ * 
+ * from h5py import _objects             # <<<<<<<<<<<<<<
+ * import h5fd
+ * 
+ */
+  __pyx_t_7 = PyList_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_7);
+  __Pyx_INCREF(((PyObject *)__pyx_n_s___objects));
+  PyList_SET_ITEM(__pyx_t_7, 0, ((PyObject *)__pyx_n_s___objects));
+  __Pyx_GIVEREF(((PyObject *)__pyx_n_s___objects));
+  __pyx_t_8 = __Pyx_Import(((PyObject *)__pyx_n_s__h5py), ((PyObject *)__pyx_t_7), -1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_8);
+  __Pyx_DECREF(((PyObject *)__pyx_t_7)); __pyx_t_7 = 0;
+  __pyx_t_7 = PyObject_GetAttr(__pyx_t_8, __pyx_n_s___objects);
+  if (__pyx_t_7 == NULL) {
+    if (PyErr_ExceptionMatches(PyExc_AttributeError)) __Pyx_RaiseImportError(__pyx_n_s___objects);
+    if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  }
+  __Pyx_GOTREF(__pyx_t_7);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s___objects, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+
+  /* "h5py/h5f.pyx":25
+ * 
+ * from h5py import _objects
+ * import h5fd             # <<<<<<<<<<<<<<
+ * 
+ * # Initialization
+ */
+  __pyx_t_8 = __Pyx_Import(((PyObject *)__pyx_n_s__h5fd), 0, -1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_8);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__h5fd, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+
+  /* "h5py/h5f.pyx":31
+ * # === Public constants and data structures ====================================
+ * 
+ * ACC_TRUNC   = H5F_ACC_TRUNC             # <<<<<<<<<<<<<<
+ * ACC_EXCL    = H5F_ACC_EXCL
+ * ACC_RDWR    = H5F_ACC_RDWR
+ */
+  __pyx_t_8 = PyInt_FromLong(H5F_ACC_TRUNC); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_8);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ACC_TRUNC, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+
+  /* "h5py/h5f.pyx":32
+ * 
+ * ACC_TRUNC   = H5F_ACC_TRUNC
+ * ACC_EXCL    = H5F_ACC_EXCL             # <<<<<<<<<<<<<<
+ * ACC_RDWR    = H5F_ACC_RDWR
+ * ACC_RDONLY  = H5F_ACC_RDONLY
+ */
+  __pyx_t_8 = PyInt_FromLong(H5F_ACC_EXCL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_8);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ACC_EXCL, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+
+  /* "h5py/h5f.pyx":33
+ * ACC_TRUNC   = H5F_ACC_TRUNC
+ * ACC_EXCL    = H5F_ACC_EXCL
+ * ACC_RDWR    = H5F_ACC_RDWR             # <<<<<<<<<<<<<<
+ * ACC_RDONLY  = H5F_ACC_RDONLY
+ * 
+ */
+  __pyx_t_8 = PyInt_FromLong(H5F_ACC_RDWR); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_8);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ACC_RDWR, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+
+  /* "h5py/h5f.pyx":34
+ * ACC_EXCL    = H5F_ACC_EXCL
+ * ACC_RDWR    = H5F_ACC_RDWR
+ * ACC_RDONLY  = H5F_ACC_RDONLY             # <<<<<<<<<<<<<<
+ * 
+ * SCOPE_LOCAL     = H5F_SCOPE_LOCAL
+ */
+  __pyx_t_8 = PyInt_FromLong(H5F_ACC_RDONLY); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_8);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ACC_RDONLY, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+
+  /* "h5py/h5f.pyx":36
+ * ACC_RDONLY  = H5F_ACC_RDONLY
+ * 
+ * SCOPE_LOCAL     = H5F_SCOPE_LOCAL             # <<<<<<<<<<<<<<
+ * SCOPE_GLOBAL    = H5F_SCOPE_GLOBAL
+ * 
+ */
+  __pyx_t_8 = PyInt_FromLong(H5F_SCOPE_LOCAL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_8);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__SCOPE_LOCAL, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+
+  /* "h5py/h5f.pyx":37
+ * 
+ * SCOPE_LOCAL     = H5F_SCOPE_LOCAL
+ * SCOPE_GLOBAL    = H5F_SCOPE_GLOBAL             # <<<<<<<<<<<<<<
+ * 
+ * CLOSE_WEAK  = H5F_CLOSE_WEAK
+ */
+  __pyx_t_8 = PyInt_FromLong(H5F_SCOPE_GLOBAL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_8);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__SCOPE_GLOBAL, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+
+  /* "h5py/h5f.pyx":39
+ * SCOPE_GLOBAL    = H5F_SCOPE_GLOBAL
+ * 
+ * CLOSE_WEAK  = H5F_CLOSE_WEAK             # <<<<<<<<<<<<<<
+ * CLOSE_SEMI  = H5F_CLOSE_SEMI
+ * CLOSE_STRONG = H5F_CLOSE_STRONG
+ */
+  __pyx_t_8 = PyInt_FromLong(H5F_CLOSE_WEAK); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_8);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__CLOSE_WEAK, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+
+  /* "h5py/h5f.pyx":40
+ * 
+ * CLOSE_WEAK  = H5F_CLOSE_WEAK
+ * CLOSE_SEMI  = H5F_CLOSE_SEMI             # <<<<<<<<<<<<<<
+ * CLOSE_STRONG = H5F_CLOSE_STRONG
+ * CLOSE_DEFAULT = H5F_CLOSE_DEFAULT
+ */
+  __pyx_t_8 = PyInt_FromLong(H5F_CLOSE_SEMI); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_8);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__CLOSE_SEMI, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+
+  /* "h5py/h5f.pyx":41
+ * CLOSE_WEAK  = H5F_CLOSE_WEAK
+ * CLOSE_SEMI  = H5F_CLOSE_SEMI
+ * CLOSE_STRONG = H5F_CLOSE_STRONG             # <<<<<<<<<<<<<<
+ * CLOSE_DEFAULT = H5F_CLOSE_DEFAULT
+ * 
+ */
+  __pyx_t_8 = PyInt_FromLong(H5F_CLOSE_STRONG); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_8);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__CLOSE_STRONG, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+
+  /* "h5py/h5f.pyx":42
+ * CLOSE_SEMI  = H5F_CLOSE_SEMI
+ * CLOSE_STRONG = H5F_CLOSE_STRONG
+ * CLOSE_DEFAULT = H5F_CLOSE_DEFAULT             # <<<<<<<<<<<<<<
+ * 
+ * OBJ_FILE    = H5F_OBJ_FILE
+ */
+  __pyx_t_8 = PyInt_FromLong(H5F_CLOSE_DEFAULT); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 42; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_8);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__CLOSE_DEFAULT, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 42; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+
+  /* "h5py/h5f.pyx":44
+ * CLOSE_DEFAULT = H5F_CLOSE_DEFAULT
+ * 
+ * OBJ_FILE    = H5F_OBJ_FILE             # <<<<<<<<<<<<<<
+ * OBJ_DATASET = H5F_OBJ_DATASET
+ * OBJ_GROUP   = H5F_OBJ_GROUP
+ */
+  __pyx_t_8 = PyInt_FromLong(H5F_OBJ_FILE); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_8);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__OBJ_FILE, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+
+  /* "h5py/h5f.pyx":45
+ * 
+ * OBJ_FILE    = H5F_OBJ_FILE
+ * OBJ_DATASET = H5F_OBJ_DATASET             # <<<<<<<<<<<<<<
+ * OBJ_GROUP   = H5F_OBJ_GROUP
+ * OBJ_DATATYPE = H5F_OBJ_DATATYPE
+ */
+  __pyx_t_8 = PyInt_FromLong(H5F_OBJ_DATASET); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_8);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__OBJ_DATASET, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+
+  /* "h5py/h5f.pyx":46
+ * OBJ_FILE    = H5F_OBJ_FILE
+ * OBJ_DATASET = H5F_OBJ_DATASET
+ * OBJ_GROUP   = H5F_OBJ_GROUP             # <<<<<<<<<<<<<<
+ * OBJ_DATATYPE = H5F_OBJ_DATATYPE
+ * OBJ_ATTR    = H5F_OBJ_ATTR
+ */
+  __pyx_t_8 = PyInt_FromLong(H5F_OBJ_GROUP); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_8);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__OBJ_GROUP, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+
+  /* "h5py/h5f.pyx":47
+ * OBJ_DATASET = H5F_OBJ_DATASET
+ * OBJ_GROUP   = H5F_OBJ_GROUP
+ * OBJ_DATATYPE = H5F_OBJ_DATATYPE             # <<<<<<<<<<<<<<
+ * OBJ_ATTR    = H5F_OBJ_ATTR
+ * OBJ_ALL     = H5F_OBJ_ALL
+ */
+  __pyx_t_8 = PyInt_FromLong(H5F_OBJ_DATATYPE); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_8);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__OBJ_DATATYPE, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+
+  /* "h5py/h5f.pyx":48
+ * OBJ_GROUP   = H5F_OBJ_GROUP
+ * OBJ_DATATYPE = H5F_OBJ_DATATYPE
+ * OBJ_ATTR    = H5F_OBJ_ATTR             # <<<<<<<<<<<<<<
+ * OBJ_ALL     = H5F_OBJ_ALL
+ * OBJ_LOCAL   = H5F_OBJ_LOCAL
+ */
+  __pyx_t_8 = PyInt_FromLong(H5F_OBJ_ATTR); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_8);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__OBJ_ATTR, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+
+  /* "h5py/h5f.pyx":49
+ * OBJ_DATATYPE = H5F_OBJ_DATATYPE
+ * OBJ_ATTR    = H5F_OBJ_ATTR
+ * OBJ_ALL     = H5F_OBJ_ALL             # <<<<<<<<<<<<<<
+ * OBJ_LOCAL   = H5F_OBJ_LOCAL
+ * 
+ */
+  __pyx_t_8 = PyInt_FromLong(H5F_OBJ_ALL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_8);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__OBJ_ALL, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+
+  /* "h5py/h5f.pyx":50
+ * OBJ_ATTR    = H5F_OBJ_ATTR
+ * OBJ_ALL     = H5F_OBJ_ALL
+ * OBJ_LOCAL   = H5F_OBJ_LOCAL             # <<<<<<<<<<<<<<
+ * 
+ * LIBVER_EARLIEST = H5F_LIBVER_EARLIEST
+ */
+  __pyx_t_8 = PyInt_FromLong(H5F_OBJ_LOCAL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_8);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__OBJ_LOCAL, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+
+  /* "h5py/h5f.pyx":52
+ * OBJ_LOCAL   = H5F_OBJ_LOCAL
+ * 
+ * LIBVER_EARLIEST = H5F_LIBVER_EARLIEST             # <<<<<<<<<<<<<<
+ * LIBVER_LATEST = H5F_LIBVER_LATEST
+ * 
+ */
+  __pyx_t_8 = PyInt_FromLong(H5F_LIBVER_EARLIEST); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_8);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__LIBVER_EARLIEST, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+
+  /* "h5py/h5f.pyx":53
+ * 
+ * LIBVER_EARLIEST = H5F_LIBVER_EARLIEST
+ * LIBVER_LATEST = H5F_LIBVER_LATEST             # <<<<<<<<<<<<<<
+ * 
+ * # === File operations =========================================================
+ */
+  __pyx_t_8 = PyInt_FromLong(H5F_LIBVER_LATEST); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_8);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__LIBVER_LATEST, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+
+  /* "h5py/h5f.pyx":58
+ * 
+ * 
+ * def open(char* name, unsigned int flags=H5F_ACC_RDWR, PropFAID fapl=None):             # <<<<<<<<<<<<<<
+ *     """(STRING name, UINT flags=ACC_RDWR, PropFAID fapl=None) => FileID
+ * 
+ */
+  __pyx_k_1 = H5F_ACC_RDWR;
+  __pyx_t_8 = PyCFunction_NewEx(&__pyx_mdef_4h5py_3h5f_1open, NULL, __pyx_n_s_17); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_8);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__open, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+
+  /* "h5py/h5f.pyx":74
+ * 
+ * 
+ * def create(char* name, int flags=H5F_ACC_TRUNC, PropFCID fcpl=None,             # <<<<<<<<<<<<<<
+ *                                                 PropFAID fapl=None):
+ *     """(STRING name, INT flags=ACC_TRUNC, PropFCID fcpl=None,
+ */
+  __pyx_k_2 = H5F_ACC_TRUNC;
+  __pyx_t_8 = PyCFunction_NewEx(&__pyx_mdef_4h5py_3h5f_3create, NULL, __pyx_n_s_17); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_8);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__create, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+
+  /* "h5py/h5f.pyx":93
+ * 
+ * 
+ * def flush(ObjectID obj not None, int scope=H5F_SCOPE_LOCAL):             # <<<<<<<<<<<<<<
+ *     """(ObjectID obj, INT scope=SCOPE_LOCAL)
+ * 
+ */
+  __pyx_k_3 = H5F_SCOPE_LOCAL;
+  __pyx_t_8 = PyCFunction_NewEx(&__pyx_mdef_4h5py_3h5f_5flush, NULL, __pyx_n_s_17); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_8);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__flush, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+
+  /* "h5py/h5f.pyx":109
+ * 
+ * 
+ * def is_hdf5(char* name):             # <<<<<<<<<<<<<<
+ *     """(STRING name) => BOOL
+ * 
+ */
+  __pyx_t_8 = PyCFunction_NewEx(&__pyx_mdef_4h5py_3h5f_7is_hdf5, NULL, __pyx_n_s_17); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_8);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__is_hdf5, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+
+  /* "h5py/h5f.pyx":118
+ * 
+ * 
+ * def mount(ObjectID loc not None, char* name, FileID fid not None):             # <<<<<<<<<<<<<<
+ *     """(ObjectID loc, STRING name, FileID fid)
+ * 
+ */
+  __pyx_t_8 = PyCFunction_NewEx(&__pyx_mdef_4h5py_3h5f_9mount, NULL, __pyx_n_s_17); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_8);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__mount, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+
+  /* "h5py/h5f.pyx":127
+ * 
+ * 
+ * def unmount(ObjectID loc not None, char* name):             # <<<<<<<<<<<<<<
+ *     """(ObjectID loc, STRING name)
+ * 
+ */
+  __pyx_t_8 = PyCFunction_NewEx(&__pyx_mdef_4h5py_3h5f_11unmount, NULL, __pyx_n_s_17); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_8);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__unmount, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+
+  /* "h5py/h5f.pyx":135
+ * 
+ * 
+ * def get_name(ObjectID obj not None):             # <<<<<<<<<<<<<<
+ *     """(ObjectID obj) => STRING
+ * 
+ */
+  __pyx_t_8 = PyCFunction_NewEx(&__pyx_mdef_4h5py_3h5f_13get_name, NULL, __pyx_n_s_17); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_8);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__get_name, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+
+  /* "h5py/h5f.pyx":155
+ * 
+ * 
+ * def get_obj_count(object where=OBJ_ALL, int types=H5F_OBJ_ALL):             # <<<<<<<<<<<<<<
+ *     """(OBJECT where=OBJ_ALL, types=OBJ_ALL) => INT
+ * 
+ */
+  __pyx_t_8 = __Pyx_GetName(__pyx_m, __pyx_n_s__OBJ_ALL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 155; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_8);
+  __pyx_k_4 = __pyx_t_8;
+  __Pyx_GIVEREF(__pyx_t_8);
+  __pyx_t_8 = 0;
+  __pyx_k_5 = H5F_OBJ_ALL;
+  __pyx_t_8 = PyCFunction_NewEx(&__pyx_mdef_4h5py_3h5f_15get_obj_count, NULL, __pyx_n_s_17); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 155; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_8);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__get_obj_count, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 155; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+
+  /* "h5py/h5f.pyx":183
+ * 
+ * 
+ * def get_obj_ids(object where=OBJ_ALL, int types=H5F_OBJ_ALL):             # <<<<<<<<<<<<<<
+ *     """(OBJECT where=OBJ_ALL, types=OBJ_ALL) => LIST
+ * 
+ */
+  __pyx_t_8 = __Pyx_GetName(__pyx_m, __pyx_n_s__OBJ_ALL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 183; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_8);
+  __pyx_k_8 = __pyx_t_8;
+  __Pyx_GIVEREF(__pyx_t_8);
+  __pyx_t_8 = 0;
+  __pyx_k_9 = H5F_OBJ_ALL;
+  __pyx_t_8 = PyCFunction_NewEx(&__pyx_mdef_4h5py_3h5f_17get_obj_ids, NULL, __pyx_n_s_17); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 183; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_8);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__get_obj_ids, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 183; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+
+  /* "h5py/h5f.pyx":1
+ * # This file is part of h5py, a Python interface to the HDF5 library.             # <<<<<<<<<<<<<<
+ * #
+ * # http://www.h5py.org
+ */
+  __pyx_t_8 = PyDict_New(); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(((PyObject *)__pyx_t_8));
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s____test__, ((PyObject *)__pyx_t_8)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_XDECREF(__pyx_t_8);
+  if (__pyx_m) {
+    __Pyx_AddTraceback("init h5py.h5f", __pyx_clineno, __pyx_lineno, __pyx_filename);
+    Py_DECREF(__pyx_m); __pyx_m = 0;
+  } else if (!PyErr_Occurred()) {
+    PyErr_SetString(PyExc_ImportError, "init h5py.h5f");
+  }
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  #if PY_MAJOR_VERSION < 3
+  return;
+  #else
+  return __pyx_m;
+  #endif
+}
+
+/* Runtime support code */
+#if CYTHON_REFNANNY
+static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) {
+    PyObject *m = NULL, *p = NULL;
+    void *r = NULL;
+    m = PyImport_ImportModule((char *)modname);
+    if (!m) goto end;
+    p = PyObject_GetAttrString(m, (char *)"RefNannyAPI");
+    if (!p) goto end;
+    r = PyLong_AsVoidPtr(p);
+end:
+    Py_XDECREF(p);
+    Py_XDECREF(m);
+    return (__Pyx_RefNannyAPIStruct *)r;
+}
+#endif /* CYTHON_REFNANNY */
+
+static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name) {
+    PyObject *result;
+    result = PyObject_GetAttr(dict, name);
+    if (!result) {
+        if (dict != __pyx_b) {
+            PyErr_Clear();
+            result = PyObject_GetAttr(__pyx_b, name);
+        }
+        if (!result) {
+            PyErr_SetObject(PyExc_NameError, name);
+        }
+    }
+    return result;
+}
+
+static void __Pyx_RaiseDoubleKeywordsError(
+    const char* func_name,
+    PyObject* kw_name)
+{
+    PyErr_Format(PyExc_TypeError,
+        #if PY_MAJOR_VERSION >= 3
+        "%s() got multiple values for keyword argument '%U'", func_name, kw_name);
+        #else
+        "%s() got multiple values for keyword argument '%s'", func_name,
+        PyString_AsString(kw_name));
+        #endif
+}
+
+static int __Pyx_ParseOptionalKeywords(
+    PyObject *kwds,
+    PyObject **argnames[],
+    PyObject *kwds2,
+    PyObject *values[],
+    Py_ssize_t num_pos_args,
+    const char* function_name)
+{
+    PyObject *key = 0, *value = 0;
+    Py_ssize_t pos = 0;
+    PyObject*** name;
+    PyObject*** first_kw_arg = argnames + num_pos_args;
+    while (PyDict_Next(kwds, &pos, &key, &value)) {
+        name = first_kw_arg;
+        while (*name && (**name != key)) name++;
+        if (*name) {
+            values[name-argnames] = value;
+            continue;
+        }
+        name = first_kw_arg;
+        #if PY_MAJOR_VERSION < 3
+        if (likely(PyString_CheckExact(key)) || likely(PyString_Check(key))) {
+            while (*name) {
+                if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key))
+                        && _PyString_Eq(**name, key)) {
+                    values[name-argnames] = value;
+                    break;
+                }
+                name++;
+            }
+            if (*name) continue;
+            else {
+                PyObject*** argname = argnames;
+                while (argname != first_kw_arg) {
+                    if ((**argname == key) || (
+                            (CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**argname) == PyString_GET_SIZE(key))
+                             && _PyString_Eq(**argname, key))) {
+                        goto arg_passed_twice;
+                    }
+                    argname++;
+                }
+            }
+        } else
+        #endif
+        if (likely(PyUnicode_Check(key))) {
+            while (*name) {
+                int cmp = (**name == key) ? 0 :
+                #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
+                    (PyUnicode_GET_SIZE(**name) != PyUnicode_GET_SIZE(key)) ? 1 :
+                #endif
+                    PyUnicode_Compare(**name, key);
+                if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
+                if (cmp == 0) {
+                    values[name-argnames] = value;
+                    break;
+                }
+                name++;
+            }
+            if (*name) continue;
+            else {
+                PyObject*** argname = argnames;
+                while (argname != first_kw_arg) {
+                    int cmp = (**argname == key) ? 0 :
+                    #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
+                        (PyUnicode_GET_SIZE(**argname) != PyUnicode_GET_SIZE(key)) ? 1 :
+                    #endif
+                        PyUnicode_Compare(**argname, key);
+                    if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
+                    if (cmp == 0) goto arg_passed_twice;
+                    argname++;
+                }
+            }
+        } else
+            goto invalid_keyword_type;
+        if (kwds2) {
+            if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad;
+        } else {
+            goto invalid_keyword;
+        }
+    }
+    return 0;
+arg_passed_twice:
+    __Pyx_RaiseDoubleKeywordsError(function_name, key);
+    goto bad;
+invalid_keyword_type:
+    PyErr_Format(PyExc_TypeError,
+        "%s() keywords must be strings", function_name);
+    goto bad;
+invalid_keyword:
+    PyErr_Format(PyExc_TypeError,
+    #if PY_MAJOR_VERSION < 3
+        "%s() got an unexpected keyword argument '%s'",
+        function_name, PyString_AsString(key));
+    #else
+        "%s() got an unexpected keyword argument '%U'",
+        function_name, key);
+    #endif
+bad:
+    return -1;
+}
+
+static void __Pyx_RaiseArgtupleInvalid(
+    const char* func_name,
+    int exact,
+    Py_ssize_t num_min,
+    Py_ssize_t num_max,
+    Py_ssize_t num_found)
+{
+    Py_ssize_t num_expected;
+    const char *more_or_less;
+    if (num_found < num_min) {
+        num_expected = num_min;
+        more_or_less = "at least";
+    } else {
+        num_expected = num_max;
+        more_or_less = "at most";
+    }
+    if (exact) {
+        more_or_less = "exactly";
+    }
+    PyErr_Format(PyExc_TypeError,
+                 "%s() takes %s %" CYTHON_FORMAT_SSIZE_T "d positional argument%s (%" CYTHON_FORMAT_SSIZE_T "d given)",
+                 func_name, more_or_less, num_expected,
+                 (num_expected == 1) ? "" : "s", num_found);
+}
+
+static int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, int none_allowed,
+    const char *name, int exact)
+{
+    if (!type) {
+        PyErr_Format(PyExc_SystemError, "Missing type object");
+        return 0;
+    }
+    if (none_allowed && obj == Py_None) return 1;
+    else if (exact) {
+        if (Py_TYPE(obj) == type) return 1;
+    }
+    else {
+        if (PyObject_TypeCheck(obj, type)) return 1;
+    }
+    PyErr_Format(PyExc_TypeError,
+        "Argument '%s' has incorrect type (expected %s, got %s)",
+        name, type->tp_name, Py_TYPE(obj)->tp_name);
+    return 0;
+}
+
+static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb) {
+#if CYTHON_COMPILING_IN_CPYTHON
+    PyObject *tmp_type, *tmp_value, *tmp_tb;
+    PyThreadState *tstate = PyThreadState_GET();
+    tmp_type = tstate->curexc_type;
+    tmp_value = tstate->curexc_value;
+    tmp_tb = tstate->curexc_traceback;
+    tstate->curexc_type = type;
+    tstate->curexc_value = value;
+    tstate->curexc_traceback = tb;
+    Py_XDECREF(tmp_type);
+    Py_XDECREF(tmp_value);
+    Py_XDECREF(tmp_tb);
+#else
+    PyErr_Restore(type, value, tb);
+#endif
+}
+static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb) {
+#if CYTHON_COMPILING_IN_CPYTHON
+    PyThreadState *tstate = PyThreadState_GET();
+    *type = tstate->curexc_type;
+    *value = tstate->curexc_value;
+    *tb = tstate->curexc_traceback;
+    tstate->curexc_type = 0;
+    tstate->curexc_value = 0;
+    tstate->curexc_traceback = 0;
+#else
+    PyErr_Fetch(type, value, tb);
+#endif
+}
+
+#if PY_MAJOR_VERSION < 3
+static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb,
+                        CYTHON_UNUSED PyObject *cause) {
+    Py_XINCREF(type);
+    if (!value || value == Py_None)
+        value = NULL;
+    else
+        Py_INCREF(value);
+    if (!tb || tb == Py_None)
+        tb = NULL;
+    else {
+        Py_INCREF(tb);
+        if (!PyTraceBack_Check(tb)) {
+            PyErr_SetString(PyExc_TypeError,
+                "raise: arg 3 must be a traceback or None");
+            goto raise_error;
+        }
+    }
+    #if PY_VERSION_HEX < 0x02050000
+    if (PyClass_Check(type)) {
+    #else
+    if (PyType_Check(type)) {
+    #endif
+#if CYTHON_COMPILING_IN_PYPY
+        if (!value) {
+            Py_INCREF(Py_None);
+            value = Py_None;
+        }
+#endif
+        PyErr_NormalizeException(&type, &value, &tb);
+    } else {
+        if (value) {
+            PyErr_SetString(PyExc_TypeError,
+                "instance exception may not have a separate value");
+            goto raise_error;
+        }
+        value = type;
+        #if PY_VERSION_HEX < 0x02050000
+            if (PyInstance_Check(type)) {
+                type = (PyObject*) ((PyInstanceObject*)type)->in_class;
+                Py_INCREF(type);
+            }
+            else {
+                type = 0;
+                PyErr_SetString(PyExc_TypeError,
+                    "raise: exception must be an old-style class or instance");
+                goto raise_error;
+            }
+        #else
+            type = (PyObject*) Py_TYPE(type);
+            Py_INCREF(type);
+            if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) {
+                PyErr_SetString(PyExc_TypeError,
+                    "raise: exception class must be a subclass of BaseException");
+                goto raise_error;
+            }
+        #endif
+    }
+    __Pyx_ErrRestore(type, value, tb);
+    return;
+raise_error:
+    Py_XDECREF(value);
+    Py_XDECREF(type);
+    Py_XDECREF(tb);
+    return;
+}
+#else /* Python 3+ */
+static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) {
+    PyObject* owned_instance = NULL;
+    if (tb == Py_None) {
+        tb = 0;
+    } else if (tb && !PyTraceBack_Check(tb)) {
+        PyErr_SetString(PyExc_TypeError,
+            "raise: arg 3 must be a traceback or None");
+        goto bad;
+    }
+    if (value == Py_None)
+        value = 0;
+    if (PyExceptionInstance_Check(type)) {
+        if (value) {
+            PyErr_SetString(PyExc_TypeError,
+                "instance exception may not have a separate value");
+            goto bad;
+        }
+        value = type;
+        type = (PyObject*) Py_TYPE(value);
+    } else if (PyExceptionClass_Check(type)) {
+        PyObject *args;
+        if (!value)
+            args = PyTuple_New(0);
+        else if (PyTuple_Check(value)) {
+            Py_INCREF(value);
+            args = value;
+        }
+        else
+            args = PyTuple_Pack(1, value);
+        if (!args)
+            goto bad;
+        owned_instance = PyEval_CallObject(type, args);
+        Py_DECREF(args);
+        if (!owned_instance)
+            goto bad;
+        value = owned_instance;
+        if (!PyExceptionInstance_Check(value)) {
+            PyErr_Format(PyExc_TypeError,
+                         "calling %R should have returned an instance of "
+                         "BaseException, not %R",
+                         type, Py_TYPE(value));
+            goto bad;
+        }
+    } else {
+        PyErr_SetString(PyExc_TypeError,
+            "raise: exception class must be a subclass of BaseException");
+        goto bad;
+    }
+    if (cause && cause != Py_None) {
+        PyObject *fixed_cause;
+        if (PyExceptionClass_Check(cause)) {
+            fixed_cause = PyObject_CallObject(cause, NULL);
+            if (fixed_cause == NULL)
+                goto bad;
+        }
+        else if (PyExceptionInstance_Check(cause)) {
+            fixed_cause = cause;
+            Py_INCREF(fixed_cause);
+        }
+        else {
+            PyErr_SetString(PyExc_TypeError,
+                            "exception causes must derive from "
+                            "BaseException");
+            goto bad;
+        }
+        PyException_SetCause(value, fixed_cause);
+    }
+    PyErr_SetObject(type, value);
+    if (tb) {
+        PyThreadState *tstate = PyThreadState_GET();
+        PyObject* tmp_tb = tstate->curexc_traceback;
+        if (tb != tmp_tb) {
+            Py_INCREF(tb);
+            tstate->curexc_traceback = tb;
+            Py_XDECREF(tmp_tb);
+        }
+    }
+bad:
+    Py_XDECREF(owned_instance);
+    return;
+}
+#endif
+
+static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) {
+    PyObject *local_type, *local_value, *local_tb;
+#if CYTHON_COMPILING_IN_CPYTHON
+    PyObject *tmp_type, *tmp_value, *tmp_tb;
+    PyThreadState *tstate = PyThreadState_GET();
+    local_type = tstate->curexc_type;
+    local_value = tstate->curexc_value;
+    local_tb = tstate->curexc_traceback;
+    tstate->curexc_type = 0;
+    tstate->curexc_value = 0;
+    tstate->curexc_traceback = 0;
+#else
+    PyErr_Fetch(&local_type, &local_value, &local_tb);
+#endif
+    PyErr_NormalizeException(&local_type, &local_value, &local_tb);
+#if CYTHON_COMPILING_IN_CPYTHON
+    if (unlikely(tstate->curexc_type))
+#else
+    if (unlikely(PyErr_Occurred()))
+#endif
+        goto bad;
+    #if PY_MAJOR_VERSION >= 3
+    if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0))
+        goto bad;
+    #endif
+    Py_INCREF(local_type);
+    Py_INCREF(local_value);
+    Py_INCREF(local_tb);
+    *type = local_type;
+    *value = local_value;
+    *tb = local_tb;
+#if CYTHON_COMPILING_IN_CPYTHON
+    tmp_type = tstate->exc_type;
+    tmp_value = tstate->exc_value;
+    tmp_tb = tstate->exc_traceback;
+    tstate->exc_type = local_type;
+    tstate->exc_value = local_value;
+    tstate->exc_traceback = local_tb;
+    /* Make sure tstate is in a consistent state when we XDECREF
+       these objects (DECREF may run arbitrary code). */
+    Py_XDECREF(tmp_type);
+    Py_XDECREF(tmp_value);
+    Py_XDECREF(tmp_tb);
+#else
+    PyErr_SetExcInfo(local_type, local_value, local_tb);
+#endif
+    return 0;
+bad:
+    *type = 0;
+    *value = 0;
+    *tb = 0;
+    Py_XDECREF(local_type);
+    Py_XDECREF(local_value);
+    Py_XDECREF(local_tb);
+    return -1;
+}
+
+static void __Pyx_call_next_tp_dealloc(PyObject* obj, destructor current_tp_dealloc) {
+    PyTypeObject* type = Py_TYPE(obj);
+    while (type && type->tp_dealloc != current_tp_dealloc)
+        type = type->tp_base;
+    while (type && type->tp_dealloc == current_tp_dealloc)
+        type = type->tp_base;
+    if (type)
+        type->tp_dealloc(obj);
+}
+
+static int __Pyx_call_next_tp_traverse(PyObject* obj, visitproc v, void *a, traverseproc current_tp_traverse) {
+    PyTypeObject* type = Py_TYPE(obj);
+    while (type && type->tp_traverse != current_tp_traverse)
+        type = type->tp_base;
+    while (type && type->tp_traverse == current_tp_traverse)
+        type = type->tp_base;
+    if (type && type->tp_traverse)
+        return type->tp_traverse(obj, v, a);
+    return 0;
+}
+
+static void __Pyx_call_next_tp_clear(PyObject* obj, inquiry current_tp_clear) {
+    PyTypeObject* type = Py_TYPE(obj);
+    while (type && type->tp_clear != current_tp_clear)
+        type = type->tp_base;
+    while (type && type->tp_clear == current_tp_clear)
+        type = type->tp_base;
+    if (type && type->tp_clear)
+        type->tp_clear(obj);
+}
+
+static CYTHON_INLINE void __Pyx_ExceptionSave(PyObject **type, PyObject **value, PyObject **tb) {
+#if CYTHON_COMPILING_IN_CPYTHON
+    PyThreadState *tstate = PyThreadState_GET();
+    *type = tstate->exc_type;
+    *value = tstate->exc_value;
+    *tb = tstate->exc_traceback;
+    Py_XINCREF(*type);
+    Py_XINCREF(*value);
+    Py_XINCREF(*tb);
+#else
+    PyErr_GetExcInfo(type, value, tb);
+#endif
+}
+static void __Pyx_ExceptionReset(PyObject *type, PyObject *value, PyObject *tb) {
+#if CYTHON_COMPILING_IN_CPYTHON
+    PyObject *tmp_type, *tmp_value, *tmp_tb;
+    PyThreadState *tstate = PyThreadState_GET();
+    tmp_type = tstate->exc_type;
+    tmp_value = tstate->exc_value;
+    tmp_tb = tstate->exc_traceback;
+    tstate->exc_type = type;
+    tstate->exc_value = value;
+    tstate->exc_traceback = tb;
+    Py_XDECREF(tmp_type);
+    Py_XDECREF(tmp_value);
+    Py_XDECREF(tmp_tb);
+#else
+    PyErr_SetExcInfo(type, value, tb);
+#endif
+}
+
+static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) {
+    PyObject *empty_list = 0;
+    PyObject *module = 0;
+    PyObject *global_dict = 0;
+    PyObject *empty_dict = 0;
+    PyObject *list;
+    #if PY_VERSION_HEX < 0x03030000
+    PyObject *py_import = 0;
+    py_import = __Pyx_GetAttrString(__pyx_b, "__import__");
+    if (!py_import)
+        goto bad;
+    #endif
+    if (from_list)
+        list = from_list;
+    else {
+        empty_list = PyList_New(0);
+        if (!empty_list)
+            goto bad;
+        list = empty_list;
+    }
+    global_dict = PyModule_GetDict(__pyx_m);
+    if (!global_dict)
+        goto bad;
+    empty_dict = PyDict_New();
+    if (!empty_dict)
+        goto bad;
+    #if PY_VERSION_HEX >= 0x02050000
+    {
+        #if PY_MAJOR_VERSION >= 3
+        if (level == -1) {
+            if (strchr(__Pyx_MODULE_NAME, '.')) {
+                #if PY_VERSION_HEX < 0x03030000
+                PyObject *py_level = PyInt_FromLong(1);
+                if (!py_level)
+                    goto bad;
+                module = PyObject_CallFunctionObjArgs(py_import,
+                    name, global_dict, empty_dict, list, py_level, NULL);
+                Py_DECREF(py_level);
+                #else
+                module = PyImport_ImportModuleLevelObject(
+                    name, global_dict, empty_dict, list, 1);
+                #endif
+                if (!module) {
+                    if (!PyErr_ExceptionMatches(PyExc_ImportError))
+                        goto bad;
+                    PyErr_Clear();
+                }
+            }
+            level = 0; /* try absolute import on failure */
+        }
+        #endif
+        if (!module) {
+            #if PY_VERSION_HEX < 0x03030000
+            PyObject *py_level = PyInt_FromLong(level);
+            if (!py_level)
+                goto bad;
+            module = PyObject_CallFunctionObjArgs(py_import,
+                name, global_dict, empty_dict, list, py_level, NULL);
+            Py_DECREF(py_level);
+            #else
+            module = PyImport_ImportModuleLevelObject(
+                name, global_dict, empty_dict, list, level);
+            #endif
+        }
+    }
+    #else
+    if (level>0) {
+        PyErr_SetString(PyExc_RuntimeError, "Relative import is not supported for Python <=2.4.");
+        goto bad;
+    }
+    module = PyObject_CallFunctionObjArgs(py_import,
+        name, global_dict, empty_dict, list, NULL);
+    #endif
+bad:
+    #if PY_VERSION_HEX < 0x03030000
+    Py_XDECREF(py_import);
+    #endif
+    Py_XDECREF(empty_list);
+    Py_XDECREF(empty_dict);
+    return module;
+}
+
+static CYTHON_INLINE void __Pyx_RaiseImportError(PyObject *name) {
+#if PY_MAJOR_VERSION < 3
+    PyErr_Format(PyExc_ImportError, "cannot import name %.230s",
+                 PyString_AsString(name));
+#else
+    PyErr_Format(PyExc_ImportError, "cannot import name %S", name);
+#endif
+}
+
+static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_hid_t(hid_t val) {
+    const hid_t neg_one = (hid_t)-1, const_zero = (hid_t)0;
+    const int is_unsigned = const_zero < neg_one;
+    if ((sizeof(hid_t) == sizeof(char))  ||
+        (sizeof(hid_t) == sizeof(short))) {
+        return PyInt_FromLong((long)val);
+    } else if ((sizeof(hid_t) == sizeof(int)) ||
+               (sizeof(hid_t) == sizeof(long))) {
+        if (is_unsigned)
+            return PyLong_FromUnsignedLong((unsigned long)val);
+        else
+            return PyInt_FromLong((long)val);
+    } else if (sizeof(hid_t) == sizeof(PY_LONG_LONG)) {
+        if (is_unsigned)
+            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG)val);
+        else
+            return PyLong_FromLongLong((PY_LONG_LONG)val);
+    } else {
+        int one = 1; int little = (int)*(unsigned char *)&one;
+        unsigned char *bytes = (unsigned char *)&val;
+        return _PyLong_FromByteArray(bytes, sizeof(hid_t),
+                                     little, !is_unsigned);
+    }
+}
+
+static CYTHON_INLINE hid_t __Pyx_PyInt_from_py_hid_t(PyObject* x) {
+    const hid_t neg_one = (hid_t)-1, const_zero = (hid_t)0;
+    const int is_unsigned = const_zero < neg_one;
+    if (sizeof(hid_t) == sizeof(char)) {
+        if (is_unsigned)
+            return (hid_t)__Pyx_PyInt_AsUnsignedChar(x);
+        else
+            return (hid_t)__Pyx_PyInt_AsSignedChar(x);
+    } else if (sizeof(hid_t) == sizeof(short)) {
+        if (is_unsigned)
+            return (hid_t)__Pyx_PyInt_AsUnsignedShort(x);
+        else
+            return (hid_t)__Pyx_PyInt_AsSignedShort(x);
+    } else if (sizeof(hid_t) == sizeof(int)) {
+        if (is_unsigned)
+            return (hid_t)__Pyx_PyInt_AsUnsignedInt(x);
+        else
+            return (hid_t)__Pyx_PyInt_AsSignedInt(x);
+    } else if (sizeof(hid_t) == sizeof(long)) {
+        if (is_unsigned)
+            return (hid_t)__Pyx_PyInt_AsUnsignedLong(x);
+        else
+            return (hid_t)__Pyx_PyInt_AsSignedLong(x);
+    } else if (sizeof(hid_t) == sizeof(PY_LONG_LONG)) {
+        if (is_unsigned)
+            return (hid_t)__Pyx_PyInt_AsUnsignedLongLong(x);
+        else
+            return (hid_t)__Pyx_PyInt_AsSignedLongLong(x);
+    }  else {
+        #if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
+        PyErr_SetString(PyExc_RuntimeError,
+                        "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
+        #else
+        hid_t val;
+        PyObject *v = __Pyx_PyNumber_Int(x);
+        #if PY_VERSION_HEX < 0x03000000
+        if (likely(v) && !PyLong_Check(v)) {
+            PyObject *tmp = v;
+            v = PyNumber_Long(tmp);
+            Py_DECREF(tmp);
+        }
+        #endif
+        if (likely(v)) {
+            int one = 1; int is_little = (int)*(unsigned char *)&one;
+            unsigned char *bytes = (unsigned char *)&val;
+            int ret = _PyLong_AsByteArray((PyLongObject *)v,
+                                          bytes, sizeof(val),
+                                          is_little, !is_unsigned);
+            Py_DECREF(v);
+            if (likely(!ret))
+                return val;
+        }
+        #endif
+        return (hid_t)-1;
+    }
+}
+
+static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_hsize_t(hsize_t val) {
+    const hsize_t neg_one = (hsize_t)-1, const_zero = (hsize_t)0;
+    const int is_unsigned = const_zero < neg_one;
+    if ((sizeof(hsize_t) == sizeof(char))  ||
+        (sizeof(hsize_t) == sizeof(short))) {
+        return PyInt_FromLong((long)val);
+    } else if ((sizeof(hsize_t) == sizeof(int)) ||
+               (sizeof(hsize_t) == sizeof(long))) {
+        if (is_unsigned)
+            return PyLong_FromUnsignedLong((unsigned long)val);
+        else
+            return PyInt_FromLong((long)val);
+    } else if (sizeof(hsize_t) == sizeof(PY_LONG_LONG)) {
+        if (is_unsigned)
+            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG)val);
+        else
+            return PyLong_FromLongLong((PY_LONG_LONG)val);
+    } else {
+        int one = 1; int little = (int)*(unsigned char *)&one;
+        unsigned char *bytes = (unsigned char *)&val;
+        return _PyLong_FromByteArray(bytes, sizeof(hsize_t),
+                                     little, !is_unsigned);
+    }
+}
+
+static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_hssize_t(hssize_t val) {
+    const hssize_t neg_one = (hssize_t)-1, const_zero = (hssize_t)0;
+    const int is_unsigned = const_zero < neg_one;
+    if ((sizeof(hssize_t) == sizeof(char))  ||
+        (sizeof(hssize_t) == sizeof(short))) {
+        return PyInt_FromLong((long)val);
+    } else if ((sizeof(hssize_t) == sizeof(int)) ||
+               (sizeof(hssize_t) == sizeof(long))) {
+        if (is_unsigned)
+            return PyLong_FromUnsignedLong((unsigned long)val);
+        else
+            return PyInt_FromLong((long)val);
+    } else if (sizeof(hssize_t) == sizeof(PY_LONG_LONG)) {
+        if (is_unsigned)
+            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG)val);
+        else
+            return PyLong_FromLongLong((PY_LONG_LONG)val);
+    } else {
+        int one = 1; int little = (int)*(unsigned char *)&one;
+        unsigned char *bytes = (unsigned char *)&val;
+        return _PyLong_FromByteArray(bytes, sizeof(hssize_t),
+                                     little, !is_unsigned);
+    }
+}
+
+static CYTHON_INLINE unsigned char __Pyx_PyInt_AsUnsignedChar(PyObject* x) {
+    const unsigned char neg_one = (unsigned char)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(unsigned char) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(unsigned char)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to unsigned char" :
+                    "value too large to convert to unsigned char");
+            }
+            return (unsigned char)-1;
+        }
+        return (unsigned char)val;
+    }
+    return (unsigned char)__Pyx_PyInt_AsUnsignedLong(x);
+}
+
+static CYTHON_INLINE unsigned short __Pyx_PyInt_AsUnsignedShort(PyObject* x) {
+    const unsigned short neg_one = (unsigned short)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(unsigned short) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(unsigned short)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to unsigned short" :
+                    "value too large to convert to unsigned short");
+            }
+            return (unsigned short)-1;
+        }
+        return (unsigned short)val;
+    }
+    return (unsigned short)__Pyx_PyInt_AsUnsignedLong(x);
+}
+
+static CYTHON_INLINE unsigned int __Pyx_PyInt_AsUnsignedInt(PyObject* x) {
+    const unsigned int neg_one = (unsigned int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(unsigned int) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(unsigned int)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to unsigned int" :
+                    "value too large to convert to unsigned int");
+            }
+            return (unsigned int)-1;
+        }
+        return (unsigned int)val;
+    }
+    return (unsigned int)__Pyx_PyInt_AsUnsignedLong(x);
+}
+
+static CYTHON_INLINE char __Pyx_PyInt_AsChar(PyObject* x) {
+    const char neg_one = (char)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(char) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(char)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to char" :
+                    "value too large to convert to char");
+            }
+            return (char)-1;
+        }
+        return (char)val;
+    }
+    return (char)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE short __Pyx_PyInt_AsShort(PyObject* x) {
+    const short neg_one = (short)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(short) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(short)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to short" :
+                    "value too large to convert to short");
+            }
+            return (short)-1;
+        }
+        return (short)val;
+    }
+    return (short)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE int __Pyx_PyInt_AsInt(PyObject* x) {
+    const int neg_one = (int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(int) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(int)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to int" :
+                    "value too large to convert to int");
+            }
+            return (int)-1;
+        }
+        return (int)val;
+    }
+    return (int)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE signed char __Pyx_PyInt_AsSignedChar(PyObject* x) {
+    const signed char neg_one = (signed char)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(signed char) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(signed char)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to signed char" :
+                    "value too large to convert to signed char");
+            }
+            return (signed char)-1;
+        }
+        return (signed char)val;
+    }
+    return (signed char)__Pyx_PyInt_AsSignedLong(x);
+}
+
+static CYTHON_INLINE signed short __Pyx_PyInt_AsSignedShort(PyObject* x) {
+    const signed short neg_one = (signed short)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(signed short) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(signed short)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to signed short" :
+                    "value too large to convert to signed short");
+            }
+            return (signed short)-1;
+        }
+        return (signed short)val;
+    }
+    return (signed short)__Pyx_PyInt_AsSignedLong(x);
+}
+
+static CYTHON_INLINE signed int __Pyx_PyInt_AsSignedInt(PyObject* x) {
+    const signed int neg_one = (signed int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(signed int) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(signed int)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to signed int" :
+                    "value too large to convert to signed int");
+            }
+            return (signed int)-1;
+        }
+        return (signed int)val;
+    }
+    return (signed int)__Pyx_PyInt_AsSignedLong(x);
+}
+
+static CYTHON_INLINE int __Pyx_PyInt_AsLongDouble(PyObject* x) {
+    const int neg_one = (int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(int) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(int)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to int" :
+                    "value too large to convert to int");
+            }
+            return (int)-1;
+        }
+        return (int)val;
+    }
+    return (int)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE unsigned long __Pyx_PyInt_AsUnsignedLong(PyObject* x) {
+    const unsigned long neg_one = (unsigned long)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to unsigned long");
+            return (unsigned long)-1;
+        }
+        return (unsigned long)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to unsigned long");
+                return (unsigned long)-1;
+            }
+            return (unsigned long)PyLong_AsUnsignedLong(x);
+        } else {
+            return (unsigned long)PyLong_AsLong(x);
+        }
+    } else {
+        unsigned long val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (unsigned long)-1;
+        val = __Pyx_PyInt_AsUnsignedLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE unsigned PY_LONG_LONG __Pyx_PyInt_AsUnsignedLongLong(PyObject* x) {
+    const unsigned PY_LONG_LONG neg_one = (unsigned PY_LONG_LONG)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to unsigned PY_LONG_LONG");
+            return (unsigned PY_LONG_LONG)-1;
+        }
+        return (unsigned PY_LONG_LONG)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to unsigned PY_LONG_LONG");
+                return (unsigned PY_LONG_LONG)-1;
+            }
+            return (unsigned PY_LONG_LONG)PyLong_AsUnsignedLongLong(x);
+        } else {
+            return (unsigned PY_LONG_LONG)PyLong_AsLongLong(x);
+        }
+    } else {
+        unsigned PY_LONG_LONG val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (unsigned PY_LONG_LONG)-1;
+        val = __Pyx_PyInt_AsUnsignedLongLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE long __Pyx_PyInt_AsLong(PyObject* x) {
+    const long neg_one = (long)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to long");
+            return (long)-1;
+        }
+        return (long)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to long");
+                return (long)-1;
+            }
+            return (long)PyLong_AsUnsignedLong(x);
+        } else {
+            return (long)PyLong_AsLong(x);
+        }
+    } else {
+        long val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (long)-1;
+        val = __Pyx_PyInt_AsLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE PY_LONG_LONG __Pyx_PyInt_AsLongLong(PyObject* x) {
+    const PY_LONG_LONG neg_one = (PY_LONG_LONG)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to PY_LONG_LONG");
+            return (PY_LONG_LONG)-1;
+        }
+        return (PY_LONG_LONG)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to PY_LONG_LONG");
+                return (PY_LONG_LONG)-1;
+            }
+            return (PY_LONG_LONG)PyLong_AsUnsignedLongLong(x);
+        } else {
+            return (PY_LONG_LONG)PyLong_AsLongLong(x);
+        }
+    } else {
+        PY_LONG_LONG val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (PY_LONG_LONG)-1;
+        val = __Pyx_PyInt_AsLongLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE signed long __Pyx_PyInt_AsSignedLong(PyObject* x) {
+    const signed long neg_one = (signed long)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to signed long");
+            return (signed long)-1;
+        }
+        return (signed long)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to signed long");
+                return (signed long)-1;
+            }
+            return (signed long)PyLong_AsUnsignedLong(x);
+        } else {
+            return (signed long)PyLong_AsLong(x);
+        }
+    } else {
+        signed long val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (signed long)-1;
+        val = __Pyx_PyInt_AsSignedLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE signed PY_LONG_LONG __Pyx_PyInt_AsSignedLongLong(PyObject* x) {
+    const signed PY_LONG_LONG neg_one = (signed PY_LONG_LONG)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to signed PY_LONG_LONG");
+            return (signed PY_LONG_LONG)-1;
+        }
+        return (signed PY_LONG_LONG)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to signed PY_LONG_LONG");
+                return (signed PY_LONG_LONG)-1;
+            }
+            return (signed PY_LONG_LONG)PyLong_AsUnsignedLongLong(x);
+        } else {
+            return (signed PY_LONG_LONG)PyLong_AsLongLong(x);
+        }
+    } else {
+        signed PY_LONG_LONG val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (signed PY_LONG_LONG)-1;
+        val = __Pyx_PyInt_AsSignedLongLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static int __Pyx_check_binary_version(void) {
+    char ctversion[4], rtversion[4];
+    PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION);
+    PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion());
+    if (ctversion[0] != rtversion[0] || ctversion[2] != rtversion[2]) {
+        char message[200];
+        PyOS_snprintf(message, sizeof(message),
+                      "compiletime version %s of module '%.100s' "
+                      "does not match runtime version %s",
+                      ctversion, __Pyx_MODULE_NAME, rtversion);
+        #if PY_VERSION_HEX < 0x02050000
+        return PyErr_Warn(NULL, message);
+        #else
+        return PyErr_WarnEx(NULL, message, 1);
+        #endif
+    }
+    return 0;
+}
+
+#ifndef __PYX_HAVE_RT_ImportModule
+#define __PYX_HAVE_RT_ImportModule
+static PyObject *__Pyx_ImportModule(const char *name) {
+    PyObject *py_name = 0;
+    PyObject *py_module = 0;
+    py_name = __Pyx_PyIdentifier_FromString(name);
+    if (!py_name)
+        goto bad;
+    py_module = PyImport_Import(py_name);
+    Py_DECREF(py_name);
+    return py_module;
+bad:
+    Py_XDECREF(py_name);
+    return 0;
+}
+#endif
+
+#ifndef __PYX_HAVE_RT_ImportType
+#define __PYX_HAVE_RT_ImportType
+static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name,
+    size_t size, int strict)
+{
+    PyObject *py_module = 0;
+    PyObject *result = 0;
+    PyObject *py_name = 0;
+    char warning[200];
+    Py_ssize_t basicsize;
+#ifdef Py_LIMITED_API
+    PyObject *py_basicsize;
+#endif
+    py_module = __Pyx_ImportModule(module_name);
+    if (!py_module)
+        goto bad;
+    py_name = __Pyx_PyIdentifier_FromString(class_name);
+    if (!py_name)
+        goto bad;
+    result = PyObject_GetAttr(py_module, py_name);
+    Py_DECREF(py_name);
+    py_name = 0;
+    Py_DECREF(py_module);
+    py_module = 0;
+    if (!result)
+        goto bad;
+    if (!PyType_Check(result)) {
+        PyErr_Format(PyExc_TypeError,
+            "%s.%s is not a type object",
+            module_name, class_name);
+        goto bad;
+    }
+#ifndef Py_LIMITED_API
+    basicsize = ((PyTypeObject *)result)->tp_basicsize;
+#else
+    py_basicsize = PyObject_GetAttrString(result, "__basicsize__");
+    if (!py_basicsize)
+        goto bad;
+    basicsize = PyLong_AsSsize_t(py_basicsize);
+    Py_DECREF(py_basicsize);
+    py_basicsize = 0;
+    if (basicsize == (Py_ssize_t)-1 && PyErr_Occurred())
+        goto bad;
+#endif
+    if (!strict && (size_t)basicsize > size) {
+        PyOS_snprintf(warning, sizeof(warning),
+            "%s.%s size changed, may indicate binary incompatibility",
+            module_name, class_name);
+        #if PY_VERSION_HEX < 0x02050000
+        if (PyErr_Warn(NULL, warning) < 0) goto bad;
+        #else
+        if (PyErr_WarnEx(NULL, warning, 0) < 0) goto bad;
+        #endif
+    }
+    else if ((size_t)basicsize != size) {
+        PyErr_Format(PyExc_ValueError,
+            "%s.%s has the wrong size, try recompiling",
+            module_name, class_name);
+        goto bad;
+    }
+    return (PyTypeObject *)result;
+bad:
+    Py_XDECREF(py_module);
+    Py_XDECREF(result);
+    return NULL;
+}
+#endif
+
+static void* __Pyx_GetVtable(PyObject *dict) {
+    void* ptr;
+    PyObject *ob = PyMapping_GetItemString(dict, (char *)"__pyx_vtable__");
+    if (!ob)
+        goto bad;
+#if PY_VERSION_HEX >= 0x02070000 && !(PY_MAJOR_VERSION==3&&PY_MINOR_VERSION==0)
+    ptr = PyCapsule_GetPointer(ob, 0);
+#else
+    ptr = PyCObject_AsVoidPtr(ob);
+#endif
+    if (!ptr && !PyErr_Occurred())
+        PyErr_SetString(PyExc_RuntimeError, "invalid vtable found for imported type");
+    Py_DECREF(ob);
+    return ptr;
+bad:
+    Py_XDECREF(ob);
+    return NULL;
+}
+
+#ifndef __PYX_HAVE_RT_ImportFunction
+#define __PYX_HAVE_RT_ImportFunction
+static int __Pyx_ImportFunction(PyObject *module, const char *funcname, void (**f)(void), const char *sig) {
+    PyObject *d = 0;
+    PyObject *cobj = 0;
+    union {
+        void (*fp)(void);
+        void *p;
+    } tmp;
+    d = PyObject_GetAttrString(module, (char *)"__pyx_capi__");
+    if (!d)
+        goto bad;
+    cobj = PyDict_GetItemString(d, funcname);
+    if (!cobj) {
+        PyErr_Format(PyExc_ImportError,
+            "%s does not export expected C function %s",
+                PyModule_GetName(module), funcname);
+        goto bad;
+    }
+#if PY_VERSION_HEX >= 0x02070000 && !(PY_MAJOR_VERSION==3 && PY_MINOR_VERSION==0)
+    if (!PyCapsule_IsValid(cobj, sig)) {
+        PyErr_Format(PyExc_TypeError,
+            "C function %s.%s has wrong signature (expected %s, got %s)",
+             PyModule_GetName(module), funcname, sig, PyCapsule_GetName(cobj));
+        goto bad;
+    }
+    tmp.p = PyCapsule_GetPointer(cobj, sig);
+#else
+    {const char *desc, *s1, *s2;
+    desc = (const char *)PyCObject_GetDesc(cobj);
+    if (!desc)
+        goto bad;
+    s1 = desc; s2 = sig;
+    while (*s1 != '\0' && *s1 == *s2) { s1++; s2++; }
+    if (*s1 != *s2) {
+        PyErr_Format(PyExc_TypeError,
+            "C function %s.%s has wrong signature (expected %s, got %s)",
+             PyModule_GetName(module), funcname, sig, desc);
+        goto bad;
+    }
+    tmp.p = PyCObject_AsVoidPtr(cobj);}
+#endif
+    *f = tmp.fp;
+    if (!(*f))
+        goto bad;
+    Py_DECREF(d);
+    return 0;
+bad:
+    Py_XDECREF(d);
+    return -1;
+}
+#endif
+
+static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) {
+    int start = 0, mid = 0, end = count - 1;
+    if (end >= 0 && code_line > entries[end].code_line) {
+        return count;
+    }
+    while (start < end) {
+        mid = (start + end) / 2;
+        if (code_line < entries[mid].code_line) {
+            end = mid;
+        } else if (code_line > entries[mid].code_line) {
+             start = mid + 1;
+        } else {
+            return mid;
+        }
+    }
+    if (code_line <= entries[mid].code_line) {
+        return mid;
+    } else {
+        return mid + 1;
+    }
+}
+static PyCodeObject *__pyx_find_code_object(int code_line) {
+    PyCodeObject* code_object;
+    int pos;
+    if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) {
+        return NULL;
+    }
+    pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
+    if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) {
+        return NULL;
+    }
+    code_object = __pyx_code_cache.entries[pos].code_object;
+    Py_INCREF(code_object);
+    return code_object;
+}
+static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) {
+    int pos, i;
+    __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries;
+    if (unlikely(!code_line)) {
+        return;
+    }
+    if (unlikely(!entries)) {
+        entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry));
+        if (likely(entries)) {
+            __pyx_code_cache.entries = entries;
+            __pyx_code_cache.max_count = 64;
+            __pyx_code_cache.count = 1;
+            entries[0].code_line = code_line;
+            entries[0].code_object = code_object;
+            Py_INCREF(code_object);
+        }
+        return;
+    }
+    pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
+    if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) {
+        PyCodeObject* tmp = entries[pos].code_object;
+        entries[pos].code_object = code_object;
+        Py_DECREF(tmp);
+        return;
+    }
+    if (__pyx_code_cache.count == __pyx_code_cache.max_count) {
+        int new_max = __pyx_code_cache.max_count + 64;
+        entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc(
+            __pyx_code_cache.entries, new_max*sizeof(__Pyx_CodeObjectCacheEntry));
+        if (unlikely(!entries)) {
+            return;
+        }
+        __pyx_code_cache.entries = entries;
+        __pyx_code_cache.max_count = new_max;
+    }
+    for (i=__pyx_code_cache.count; i>pos; i--) {
+        entries[i] = entries[i-1];
+    }
+    entries[pos].code_line = code_line;
+    entries[pos].code_object = code_object;
+    __pyx_code_cache.count++;
+    Py_INCREF(code_object);
+}
+
+#include "compile.h"
+#include "frameobject.h"
+#include "traceback.h"
+static PyCodeObject* __Pyx_CreateCodeObjectForTraceback(
+            const char *funcname, int c_line,
+            int py_line, const char *filename) {
+    PyCodeObject *py_code = 0;
+    PyObject *py_srcfile = 0;
+    PyObject *py_funcname = 0;
+    #if PY_MAJOR_VERSION < 3
+    py_srcfile = PyString_FromString(filename);
+    #else
+    py_srcfile = PyUnicode_FromString(filename);
+    #endif
+    if (!py_srcfile) goto bad;
+    if (c_line) {
+        #if PY_MAJOR_VERSION < 3
+        py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
+        #else
+        py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
+        #endif
+    }
+    else {
+        #if PY_MAJOR_VERSION < 3
+        py_funcname = PyString_FromString(funcname);
+        #else
+        py_funcname = PyUnicode_FromString(funcname);
+        #endif
+    }
+    if (!py_funcname) goto bad;
+    py_code = __Pyx_PyCode_New(
+        0,            /*int argcount,*/
+        0,            /*int kwonlyargcount,*/
+        0,            /*int nlocals,*/
+        0,            /*int stacksize,*/
+        0,            /*int flags,*/
+        __pyx_empty_bytes, /*PyObject *code,*/
+        __pyx_empty_tuple, /*PyObject *consts,*/
+        __pyx_empty_tuple, /*PyObject *names,*/
+        __pyx_empty_tuple, /*PyObject *varnames,*/
+        __pyx_empty_tuple, /*PyObject *freevars,*/
+        __pyx_empty_tuple, /*PyObject *cellvars,*/
+        py_srcfile,   /*PyObject *filename,*/
+        py_funcname,  /*PyObject *name,*/
+        py_line,      /*int firstlineno,*/
+        __pyx_empty_bytes  /*PyObject *lnotab*/
+    );
+    Py_DECREF(py_srcfile);
+    Py_DECREF(py_funcname);
+    return py_code;
+bad:
+    Py_XDECREF(py_srcfile);
+    Py_XDECREF(py_funcname);
+    return NULL;
+}
+static void __Pyx_AddTraceback(const char *funcname, int c_line,
+                               int py_line, const char *filename) {
+    PyCodeObject *py_code = 0;
+    PyObject *py_globals = 0;
+    PyFrameObject *py_frame = 0;
+    py_code = __pyx_find_code_object(c_line ? c_line : py_line);
+    if (!py_code) {
+        py_code = __Pyx_CreateCodeObjectForTraceback(
+            funcname, c_line, py_line, filename);
+        if (!py_code) goto bad;
+        __pyx_insert_code_object(c_line ? c_line : py_line, py_code);
+    }
+    py_globals = PyModule_GetDict(__pyx_m);
+    if (!py_globals) goto bad;
+    py_frame = PyFrame_New(
+        PyThreadState_GET(), /*PyThreadState *tstate,*/
+        py_code,             /*PyCodeObject *code,*/
+        py_globals,          /*PyObject *globals,*/
+        0                    /*PyObject *locals*/
+    );
+    if (!py_frame) goto bad;
+    py_frame->f_lineno = py_line;
+    PyTraceBack_Here(py_frame);
+bad:
+    Py_XDECREF(py_code);
+    Py_XDECREF(py_frame);
+}
+
+static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
+    while (t->p) {
+        #if PY_MAJOR_VERSION < 3
+        if (t->is_unicode) {
+            *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL);
+        } else if (t->intern) {
+            *t->p = PyString_InternFromString(t->s);
+        } else {
+            *t->p = PyString_FromStringAndSize(t->s, t->n - 1);
+        }
+        #else  /* Python 3+ has unicode identifiers */
+        if (t->is_unicode | t->is_str) {
+            if (t->intern) {
+                *t->p = PyUnicode_InternFromString(t->s);
+            } else if (t->encoding) {
+                *t->p = PyUnicode_Decode(t->s, t->n - 1, t->encoding, NULL);
+            } else {
+                *t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1);
+            }
+        } else {
+            *t->p = PyBytes_FromStringAndSize(t->s, t->n - 1);
+        }
+        #endif
+        if (!*t->p)
+            return -1;
+        ++t;
+    }
+    return 0;
+}
+
+static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) {
+   int is_true = x == Py_True;
+   if (is_true | (x == Py_False) | (x == Py_None)) return is_true;
+   else return PyObject_IsTrue(x);
+}
+static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x) {
+  PyNumberMethods *m;
+  const char *name = NULL;
+  PyObject *res = NULL;
+#if PY_VERSION_HEX < 0x03000000
+  if (PyInt_Check(x) || PyLong_Check(x))
+#else
+  if (PyLong_Check(x))
+#endif
+    return Py_INCREF(x), x;
+  m = Py_TYPE(x)->tp_as_number;
+#if PY_VERSION_HEX < 0x03000000
+  if (m && m->nb_int) {
+    name = "int";
+    res = PyNumber_Int(x);
+  }
+  else if (m && m->nb_long) {
+    name = "long";
+    res = PyNumber_Long(x);
+  }
+#else
+  if (m && m->nb_int) {
+    name = "int";
+    res = PyNumber_Long(x);
+  }
+#endif
+  if (res) {
+#if PY_VERSION_HEX < 0x03000000
+    if (!PyInt_Check(res) && !PyLong_Check(res)) {
+#else
+    if (!PyLong_Check(res)) {
+#endif
+      PyErr_Format(PyExc_TypeError,
+                   "__%s__ returned non-%s (type %.200s)",
+                   name, name, Py_TYPE(res)->tp_name);
+      Py_DECREF(res);
+      return NULL;
+    }
+  }
+  else if (!PyErr_Occurred()) {
+    PyErr_SetString(PyExc_TypeError,
+                    "an integer is required");
+  }
+  return res;
+}
+static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
+  Py_ssize_t ival;
+  PyObject* x = PyNumber_Index(b);
+  if (!x) return -1;
+  ival = PyInt_AsSsize_t(x);
+  Py_DECREF(x);
+  return ival;
+}
+static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) {
+#if PY_VERSION_HEX < 0x02050000
+   if (ival <= LONG_MAX)
+       return PyInt_FromLong((long)ival);
+   else {
+       unsigned char *bytes = (unsigned char *) &ival;
+       int one = 1; int little = (int)*(unsigned char*)&one;
+       return _PyLong_FromByteArray(bytes, sizeof(size_t), little, 0);
+   }
+#else
+   return PyInt_FromSize_t(ival);
+#endif
+}
+static CYTHON_INLINE size_t __Pyx_PyInt_AsSize_t(PyObject* x) {
+   unsigned PY_LONG_LONG val = __Pyx_PyInt_AsUnsignedLongLong(x);
+   if (unlikely(val == (unsigned PY_LONG_LONG)-1 && PyErr_Occurred())) {
+       return (size_t)-1;
+   } else if (unlikely(val != (unsigned PY_LONG_LONG)(size_t)val)) {
+       PyErr_SetString(PyExc_OverflowError,
+                       "value too large to convert to size_t");
+       return (size_t)-1;
+   }
+   return (size_t)val;
+}
+
+
+#endif /* Py_PYTHON_H */
diff --git a/h5py/h5f.pxd b/h5py/h5f.pxd
new file mode 100644
index 0000000..daa5cf7
--- /dev/null
+++ b/h5py/h5f.pxd
@@ -0,0 +1,18 @@
+# This file is part of h5py, a Python interface to the HDF5 library.
+#
+# http://www.h5py.org
+#
+# Copyright 2008-2013 Andrew Collette and contributors
+#
+# License:  Standard 3-clause BSD; see "license.txt" for full license terms
+#           and contributor agreement.
+
+from defs cimport *
+
+from _objects cimport ObjectID
+from h5g cimport GroupID
+
+cdef class FileID(GroupID):
+    pass
+
+
diff --git a/h5py/h5f.pyx b/h5py/h5f.pyx
new file mode 100644
index 0000000..5d23b64
--- /dev/null
+++ b/h5py/h5f.pyx
@@ -0,0 +1,429 @@
+# This file is part of h5py, a Python interface to the HDF5 library.
+#
+# http://www.h5py.org
+#
+# Copyright 2008-2013 Andrew Collette and contributors
+#
+# License:  Standard 3-clause BSD; see "license.txt" for full license terms
+#           and contributor agreement.
+
+"""
+    Low-level operations on HDF5 file objects.
+"""
+
+include "config.pxi"
+
+# Compile-time imports
+from _objects cimport pdefault
+from h5p cimport propwrap, PropFAID, PropFCID
+from h5t cimport typewrap
+from h5i cimport wrap_identifier
+from h5ac cimport CacheConfig
+from utils cimport emalloc, efree
+
+from h5py import _objects
+import h5fd
+
+# Initialization
+
+# === Public constants and data structures ====================================
+
+ACC_TRUNC   = H5F_ACC_TRUNC
+ACC_EXCL    = H5F_ACC_EXCL
+ACC_RDWR    = H5F_ACC_RDWR
+ACC_RDONLY  = H5F_ACC_RDONLY
+
+SCOPE_LOCAL     = H5F_SCOPE_LOCAL
+SCOPE_GLOBAL    = H5F_SCOPE_GLOBAL
+
+CLOSE_WEAK  = H5F_CLOSE_WEAK
+CLOSE_SEMI  = H5F_CLOSE_SEMI
+CLOSE_STRONG = H5F_CLOSE_STRONG
+CLOSE_DEFAULT = H5F_CLOSE_DEFAULT
+
+OBJ_FILE    = H5F_OBJ_FILE
+OBJ_DATASET = H5F_OBJ_DATASET
+OBJ_GROUP   = H5F_OBJ_GROUP
+OBJ_DATATYPE = H5F_OBJ_DATATYPE
+OBJ_ATTR    = H5F_OBJ_ATTR
+OBJ_ALL     = H5F_OBJ_ALL
+OBJ_LOCAL   = H5F_OBJ_LOCAL
+
+LIBVER_EARLIEST = H5F_LIBVER_EARLIEST
+LIBVER_LATEST = H5F_LIBVER_LATEST
+
+# === File operations =========================================================
+
+
+def open(char* name, unsigned int flags=H5F_ACC_RDWR, PropFAID fapl=None):
+    """(STRING name, UINT flags=ACC_RDWR, PropFAID fapl=None) => FileID
+
+    Open an existing HDF5 file.  Keyword "flags" may be:
+
+    ACC_RDWR
+        Open in read-write mode
+
+    ACC_RDONLY
+        Open in readonly mode
+
+    Keyword fapl may be a file access property list.
+    """
+    return FileID.open(H5Fopen(name, flags, pdefault(fapl)))
+
+
+def create(char* name, int flags=H5F_ACC_TRUNC, PropFCID fcpl=None,
+                                                PropFAID fapl=None):
+    """(STRING name, INT flags=ACC_TRUNC, PropFCID fcpl=None,
+    PropFAID fapl=None) => FileID
+
+    Create a new HDF5 file.  Keyword "flags" may be:
+
+    ACC_TRUNC
+        Truncate an existing file, discarding its data
+
+    ACC_EXCL
+        Fail if a conflicting file exists
+
+    To keep the behavior in line with that of Python's built-in functions,
+    the default is ACC_TRUNC.  Be careful!
+    """
+    return FileID.open(H5Fcreate(name, flags, pdefault(fcpl), pdefault(fapl)))
+
+
+def flush(ObjectID obj not None, int scope=H5F_SCOPE_LOCAL):
+    """(ObjectID obj, INT scope=SCOPE_LOCAL)
+
+    Tell the HDF5 library to flush file buffers to disk.  "obj" may
+    be the file identifier, or the identifier of any object residing in
+    the file.  Keyword "scope" may be:
+
+    SCOPE_LOCAL
+        Flush only the given file
+
+    SCOPE_GLOBAL
+        Flush the entire virtual file
+    """
+    H5Fflush(obj.id, <H5F_scope_t>scope)
+
+
+def is_hdf5(char* name):
+    """(STRING name) => BOOL
+
+    Determine if a given file is an HDF5 file.  Note this raises an
+    exception if the file doesn't exist.
+    """
+    return <bint>(H5Fis_hdf5(name))
+
+
+def mount(ObjectID loc not None, char* name, FileID fid not None):
+    """(ObjectID loc, STRING name, FileID fid)
+
+    Mount an open file on the group "name" under group loc_id.  Note that
+    "name" must already exist.
+    """
+    H5Fmount(loc.id, name, fid.id, H5P_DEFAULT)
+
+
+def unmount(ObjectID loc not None, char* name):
+    """(ObjectID loc, STRING name)
+
+    Unmount a file, mounted at "name" under group loc_id.
+    """
+    H5Funmount(loc.id, name)
+
+
+def get_name(ObjectID obj not None):
+    """(ObjectID obj) => STRING
+
+    Determine the name of the file in which the specified object resides.
+    """
+    cdef ssize_t size
+    cdef char* name
+    name = NULL
+
+    size = H5Fget_name(obj.id, NULL, 0)
+    assert size >= 0
+    name = <char*>emalloc(sizeof(char)*(size+1))
+    try:
+        H5Fget_name(obj.id, name, size+1)
+        pname = name
+        return pname
+    finally:
+        efree(name)
+
+
+def get_obj_count(object where=OBJ_ALL, int types=H5F_OBJ_ALL):
+    """(OBJECT where=OBJ_ALL, types=OBJ_ALL) => INT
+
+    Get the number of open objects.
+
+    where
+        Either a FileID instance representing an HDF5 file, or the
+        special constant OBJ_ALL, to count objects in all files.
+
+    type
+        Specify what kinds of object to include.  May be one of OBJ*,
+        or any bitwise combination (e.g. OBJ_FILE | OBJ_ATTR).
+
+        The special value OBJ_ALL matches all object types, and
+        OBJ_LOCAL will only match objects opened through a specific
+        identifier.
+    """
+    cdef hid_t where_id
+    if isinstance(where, FileID):
+        where_id = where.id
+    elif isinstance(where, int) or isinstance(where, long):
+        where_id = where
+    else:
+        raise TypeError("Location must be a FileID or OBJ_ALL.")
+
+    return H5Fget_obj_count(where_id, types)
+
+
+def get_obj_ids(object where=OBJ_ALL, int types=H5F_OBJ_ALL):
+    """(OBJECT where=OBJ_ALL, types=OBJ_ALL) => LIST
+
+    Get a list of identifier instances for open objects.
+
+    where
+        Either a FileID instance representing an HDF5 file, or the
+        special constant OBJ_ALL, to list objects in all files.
+
+    type
+        Specify what kinds of object to include.  May be one of OBJ*,
+        or any bitwise combination (e.g. OBJ_FILE | OBJ_ATTR).
+
+        The special value OBJ_ALL matches all object types, and
+        OBJ_LOCAL will only match objects opened through a specific
+        identifier.
+    """
+    cdef int count
+    cdef int i
+    cdef hid_t where_id
+    cdef hid_t *obj_list = NULL
+    cdef list py_obj_list = []
+
+    if isinstance(where, FileID):
+        where_id = where.id
+    else:
+        try:
+            where_id = int(where)
+        except TypeError:
+            raise TypeError("Location must be a FileID or OBJ_ALL.")
+
+    try:
+        count = H5Fget_obj_count(where_id, types)
+        obj_list = <hid_t*>emalloc(sizeof(hid_t)*count)
+
+        H5Fget_obj_ids(where_id, types, count, obj_list)
+        for i from 0<=i<count:
+            py_obj_list.append(wrap_identifier(obj_list[i]))
+            # The HDF5 function returns a borrowed reference for each hid_t.
+            #H5Iinc_ref(obj_list[i])
+        return py_obj_list
+
+    finally:
+        efree(obj_list)
+
+
+# === FileID implementation ===================================================
+
+cdef class FileID(GroupID):
+
+    """
+        Represents an HDF5 file identifier.
+
+        These objects wrap a small portion of the H5F interface; all the
+        H5F functions which can take arbitrary objects in addition to
+        file identifiers are provided as functions in the h5f module.
+
+        Properties:
+
+        * name:   File name on disk
+
+        Behavior:
+
+        * Hashable: Yes, unique to the file (but not the access mode)
+        * Equality: Hash comparison
+    """
+
+    property name:
+        """ File name on disk (according to h5f.get_name()) """
+        def __get__(self):
+            return get_name(self)
+
+
+    def __cinit__(self, id):
+        # lock the id proxy for as long as the the identifier is open
+        self.locked = True
+
+
+    def close(self):
+        """()
+
+        Terminate access through this identifier.  Note that depending on
+        what property list settings were used to open the file, the
+        physical file might not be closed until all remaining open
+        identifiers are freed.
+        """
+        with _objects.registry.lock:
+            self.locked = False
+            H5Fclose(self.id)
+            _objects.registry.cleanup()
+
+
+    def reopen(self):
+        """() => FileID
+
+        Retrieve another identifier for a file (which must still be open).
+        The new identifier is guaranteed to neither be mounted nor contain
+        a mounted file.
+        """
+        return FileID.open(H5Freopen(self.id))
+
+
+    def get_filesize(self):
+        """() => LONG size
+
+        Determine the total size (in bytes) of the HDF5 file,
+        including any user block.
+        """
+        cdef hsize_t size
+        H5Fget_filesize(self.id, &size)
+        return size
+
+
+    def get_create_plist(self):
+        """() => PropFCID
+
+        Retrieve a copy of the file creation property list used to
+        create this file.
+        """
+        return propwrap(H5Fget_create_plist(self.id))
+
+
+    def get_access_plist(self):
+        """() => PropFAID
+
+        Retrieve a copy of the file access property list which manages access
+        to this file.
+        """
+        return propwrap(H5Fget_access_plist(self.id))
+
+
+    def get_freespace(self):
+        """() => LONG freespace
+
+        Determine the amount of free space in this file.  Note that this
+        only tracks free space until the file is closed.
+        """
+        return H5Fget_freespace(self.id)
+
+
+    def get_intent(self):
+        """ () => INT
+
+        Determine the file's write intent, either of:
+        - H5F_ACC_RDONLY
+        - H5F_ACC_RDWR
+        """
+        cdef unsigned int mode
+        H5Fget_intent(self.id, &mode)
+        return mode
+
+
+    def get_vfd_handle(self):
+        """ () => INT
+
+        Retrieve the file handle used by the virtual file driver.
+
+        This method is only functional when the the SEC2 driver is used.
+        """
+        if H5Pget_driver(H5Fget_access_plist(self.id)) != h5fd.SEC2:
+            raise NotImplementedError
+        cdef int *handle
+        H5Fget_vfd_handle(self.id, H5Fget_access_plist(self.id), <void**>&handle)
+        return handle[0]
+
+
+    IF MPI and HDF5_VERSION >= (1, 8, 9):
+
+        def set_mpi_atomicity(self, bint atomicity):
+            """ (BOOL atomicity)
+
+            For MPI-IO driver, set to atomic (True), which guarantees sequential 
+            I/O semantics, or non-atomic (False), which improves  performance.
+
+            Default is False.
+
+            Feature requires: 1.8.9 and Parallel HDF5
+            """
+            H5Fset_mpi_atomicity(self.id, <hbool_t>atomicity)
+
+
+        def get_mpi_atomicity(self):
+            """ () => BOOL
+
+            Return atomicity setting for MPI-IO driver.
+
+            Feature requires: 1.8.9 and Parallel HDF5
+            """
+            cdef hbool_t atom
+
+            H5Fget_mpi_atomicity(self.id, &atom)
+            return <bint>atom
+
+    def get_mdc_hit_rate(self):
+        """() => DOUBLE
+
+        Retrieve the cache hit rate
+
+        """
+        cdef double hit_rate
+        H5Fget_mdc_hit_rate(self.id, &hit_rate)
+        return hit_rate
+
+    def get_mdc_size(self):
+        """() => (max_size, min_clean_size, cur_size, cur_num_entries) [SIZE_T, SIZE_T, SIZE_T, INT]
+
+        Obtain current metadata cache size data for specified file.
+
+        """
+        cdef size_t max_size
+        cdef size_t min_clean_size
+        cdef size_t cur_size
+        cdef int cur_num_entries
+
+
+        H5Fget_mdc_size(self.id, &max_size, &min_clean_size, &cur_size, &cur_num_entries)
+
+        return (max_size, min_clean_size, cur_size, cur_num_entries)
+
+    def reset_mdc_hit_rate_stats(self):
+        """no return
+
+        rests the hit-rate statistics
+
+        """
+        H5Freset_mdc_hit_rate_stats(self.id)
+
+    def get_mdc_config(self):
+        """() => CacheConfig
+        Returns an object that stores all the information about the meta-data cache
+        configuration
+        """
+
+        cdef CacheConfig config = CacheConfig()
+
+        H5Fget_mdc_config(self.id, &config.cache_config)
+
+        return config
+
+    def set_mdc_config(self, CacheConfig config not None):
+        """(CacheConfig) => None
+        Returns an object that stores all the information about the meta-data cache
+        configuration
+        """
+        # I feel this should have some sanity checking to make sure that
+        H5Fset_mdc_config(self.id, &config.cache_config)
+
diff --git a/h5py/h5fd.c b/h5py/h5fd.c
new file mode 100644
index 0000000..f0a1ff3
--- /dev/null
+++ b/h5py/h5fd.c
@@ -0,0 +1,1910 @@
+/* Generated by Cython 0.18 on Mon Dec  9 16:00:33 2013 */
+
+#define PY_SSIZE_T_CLEAN
+#include "Python.h"
+#ifndef Py_PYTHON_H
+    #error Python headers needed to compile C extensions, please install development version of Python.
+#elif PY_VERSION_HEX < 0x02040000
+    #error Cython requires Python 2.4+.
+#else
+#include <stddef.h> /* For offsetof */
+#ifndef offsetof
+#define offsetof(type, member) ( (size_t) & ((type*)0) -> member )
+#endif
+#if !defined(WIN32) && !defined(MS_WINDOWS)
+  #ifndef __stdcall
+    #define __stdcall
+  #endif
+  #ifndef __cdecl
+    #define __cdecl
+  #endif
+  #ifndef __fastcall
+    #define __fastcall
+  #endif
+#endif
+#ifndef DL_IMPORT
+  #define DL_IMPORT(t) t
+#endif
+#ifndef DL_EXPORT
+  #define DL_EXPORT(t) t
+#endif
+#ifndef PY_LONG_LONG
+  #define PY_LONG_LONG LONG_LONG
+#endif
+#ifndef Py_HUGE_VAL
+  #define Py_HUGE_VAL HUGE_VAL
+#endif
+#ifdef PYPY_VERSION
+#define CYTHON_COMPILING_IN_PYPY 1
+#define CYTHON_COMPILING_IN_CPYTHON 0
+#else
+#define CYTHON_COMPILING_IN_PYPY 0
+#define CYTHON_COMPILING_IN_CPYTHON 1
+#endif
+#if PY_VERSION_HEX < 0x02050000
+  typedef int Py_ssize_t;
+  #define PY_SSIZE_T_MAX INT_MAX
+  #define PY_SSIZE_T_MIN INT_MIN
+  #define PY_FORMAT_SIZE_T ""
+  #define CYTHON_FORMAT_SSIZE_T ""
+  #define PyInt_FromSsize_t(z) PyInt_FromLong(z)
+  #define PyInt_AsSsize_t(o)   __Pyx_PyInt_AsInt(o)
+  #define PyNumber_Index(o)    ((PyNumber_Check(o) && !PyFloat_Check(o)) ? PyNumber_Int(o) : \
+                                (PyErr_Format(PyExc_TypeError, \
+                                              "expected index value, got %.200s", Py_TYPE(o)->tp_name), \
+                                 (PyObject*)0))
+  #define __Pyx_PyIndex_Check(o) (PyNumber_Check(o) && !PyFloat_Check(o) && \
+                                  !PyComplex_Check(o))
+  #define PyIndex_Check __Pyx_PyIndex_Check
+  #define PyErr_WarnEx(category, message, stacklevel) PyErr_Warn(category, message)
+  #define __PYX_BUILD_PY_SSIZE_T "i"
+#else
+  #define __PYX_BUILD_PY_SSIZE_T "n"
+  #define CYTHON_FORMAT_SSIZE_T "z"
+  #define __Pyx_PyIndex_Check PyIndex_Check
+#endif
+#if PY_VERSION_HEX < 0x02060000
+  #define Py_REFCNT(ob) (((PyObject*)(ob))->ob_refcnt)
+  #define Py_TYPE(ob)   (((PyObject*)(ob))->ob_type)
+  #define Py_SIZE(ob)   (((PyVarObject*)(ob))->ob_size)
+  #define PyVarObject_HEAD_INIT(type, size) \
+          PyObject_HEAD_INIT(type) size,
+  #define PyType_Modified(t)
+  typedef struct {
+     void *buf;
+     PyObject *obj;
+     Py_ssize_t len;
+     Py_ssize_t itemsize;
+     int readonly;
+     int ndim;
+     char *format;
+     Py_ssize_t *shape;
+     Py_ssize_t *strides;
+     Py_ssize_t *suboffsets;
+     void *internal;
+  } Py_buffer;
+  #define PyBUF_SIMPLE 0
+  #define PyBUF_WRITABLE 0x0001
+  #define PyBUF_FORMAT 0x0004
+  #define PyBUF_ND 0x0008
+  #define PyBUF_STRIDES (0x0010 | PyBUF_ND)
+  #define PyBUF_C_CONTIGUOUS (0x0020 | PyBUF_STRIDES)
+  #define PyBUF_F_CONTIGUOUS (0x0040 | PyBUF_STRIDES)
+  #define PyBUF_ANY_CONTIGUOUS (0x0080 | PyBUF_STRIDES)
+  #define PyBUF_INDIRECT (0x0100 | PyBUF_STRIDES)
+  #define PyBUF_RECORDS (PyBUF_STRIDES | PyBUF_FORMAT | PyBUF_WRITABLE)
+  #define PyBUF_FULL (PyBUF_INDIRECT | PyBUF_FORMAT | PyBUF_WRITABLE)
+  typedef int (*getbufferproc)(PyObject *, Py_buffer *, int);
+  typedef void (*releasebufferproc)(PyObject *, Py_buffer *);
+#endif
+#if PY_MAJOR_VERSION < 3
+  #define __Pyx_BUILTIN_MODULE_NAME "__builtin__"
+  #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) \
+          PyCode_New(a, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
+#else
+  #define __Pyx_BUILTIN_MODULE_NAME "builtins"
+  #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) \
+          PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
+#endif
+#if PY_MAJOR_VERSION < 3 && PY_MINOR_VERSION < 6
+  #define PyUnicode_FromString(s) PyUnicode_Decode(s, strlen(s), "UTF-8", "strict")
+#endif
+#if PY_MAJOR_VERSION >= 3
+  #define Py_TPFLAGS_CHECKTYPES 0
+  #define Py_TPFLAGS_HAVE_INDEX 0
+#endif
+#if (PY_VERSION_HEX < 0x02060000) || (PY_MAJOR_VERSION >= 3)
+  #define Py_TPFLAGS_HAVE_NEWBUFFER 0
+#endif
+#if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND)
+  #define CYTHON_PEP393_ENABLED 1
+  #define __Pyx_PyUnicode_READY(op)       (likely(PyUnicode_IS_READY(op)) ? \
+                                              0 : _PyUnicode_Ready((PyObject *)(op)))
+  #define __Pyx_PyUnicode_GET_LENGTH(u)   PyUnicode_GET_LENGTH(u)
+  #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i)
+  #define __Pyx_PyUnicode_READ(k, d, i)   PyUnicode_READ(k, d, i)
+#else
+  #define CYTHON_PEP393_ENABLED 0
+  #define __Pyx_PyUnicode_READY(op)       (0)
+  #define __Pyx_PyUnicode_GET_LENGTH(u)   PyUnicode_GET_SIZE(u)
+  #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i]))
+  #define __Pyx_PyUnicode_READ(k, d, i)   ((k=k), (Py_UCS4)(((Py_UNICODE*)d)[i]))
+#endif
+#if PY_MAJOR_VERSION >= 3
+  #define PyBaseString_Type            PyUnicode_Type
+  #define PyStringObject               PyUnicodeObject
+  #define PyString_Type                PyUnicode_Type
+  #define PyString_Check               PyUnicode_Check
+  #define PyString_CheckExact          PyUnicode_CheckExact
+#endif
+#if PY_VERSION_HEX < 0x02060000
+  #define PyBytesObject                PyStringObject
+  #define PyBytes_Type                 PyString_Type
+  #define PyBytes_Check                PyString_Check
+  #define PyBytes_CheckExact           PyString_CheckExact
+  #define PyBytes_FromString           PyString_FromString
+  #define PyBytes_FromStringAndSize    PyString_FromStringAndSize
+  #define PyBytes_FromFormat           PyString_FromFormat
+  #define PyBytes_DecodeEscape         PyString_DecodeEscape
+  #define PyBytes_AsString             PyString_AsString
+  #define PyBytes_AsStringAndSize      PyString_AsStringAndSize
+  #define PyBytes_Size                 PyString_Size
+  #define PyBytes_AS_STRING            PyString_AS_STRING
+  #define PyBytes_GET_SIZE             PyString_GET_SIZE
+  #define PyBytes_Repr                 PyString_Repr
+  #define PyBytes_Concat               PyString_Concat
+  #define PyBytes_ConcatAndDel         PyString_ConcatAndDel
+#endif
+#if PY_VERSION_HEX < 0x02060000
+  #define PySet_Check(obj)             PyObject_TypeCheck(obj, &PySet_Type)
+  #define PyFrozenSet_Check(obj)       PyObject_TypeCheck(obj, &PyFrozenSet_Type)
+#endif
+#ifndef PySet_CheckExact
+  #define PySet_CheckExact(obj)        (Py_TYPE(obj) == &PySet_Type)
+#endif
+#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type)
+#if PY_MAJOR_VERSION >= 3
+  #define PyIntObject                  PyLongObject
+  #define PyInt_Type                   PyLong_Type
+  #define PyInt_Check(op)              PyLong_Check(op)
+  #define PyInt_CheckExact(op)         PyLong_CheckExact(op)
+  #define PyInt_FromString             PyLong_FromString
+  #define PyInt_FromUnicode            PyLong_FromUnicode
+  #define PyInt_FromLong               PyLong_FromLong
+  #define PyInt_FromSize_t             PyLong_FromSize_t
+  #define PyInt_FromSsize_t            PyLong_FromSsize_t
+  #define PyInt_AsLong                 PyLong_AsLong
+  #define PyInt_AS_LONG                PyLong_AS_LONG
+  #define PyInt_AsSsize_t              PyLong_AsSsize_t
+  #define PyInt_AsUnsignedLongMask     PyLong_AsUnsignedLongMask
+  #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask
+#endif
+#if PY_MAJOR_VERSION >= 3
+  #define PyBoolObject                 PyLongObject
+#endif
+#if PY_VERSION_HEX < 0x03020000
+  typedef long Py_hash_t;
+  #define __Pyx_PyInt_FromHash_t PyInt_FromLong
+  #define __Pyx_PyInt_AsHash_t   PyInt_AsLong
+#else
+  #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t
+  #define __Pyx_PyInt_AsHash_t   PyInt_AsSsize_t
+#endif
+#if (PY_MAJOR_VERSION < 3) || (PY_VERSION_HEX >= 0x03010300)
+  #define __Pyx_PySequence_GetSlice(obj, a, b) PySequence_GetSlice(obj, a, b)
+  #define __Pyx_PySequence_SetSlice(obj, a, b, value) PySequence_SetSlice(obj, a, b, value)
+  #define __Pyx_PySequence_DelSlice(obj, a, b) PySequence_DelSlice(obj, a, b)
+#else
+  #define __Pyx_PySequence_GetSlice(obj, a, b) (unlikely(!(obj)) ? \
+        (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), (PyObject*)0) : \
+        (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_GetSlice(obj, a, b)) : \
+            (PyErr_Format(PyExc_TypeError, "'%.200s' object is unsliceable", (obj)->ob_type->tp_name), (PyObject*)0)))
+  #define __Pyx_PySequence_SetSlice(obj, a, b, value) (unlikely(!(obj)) ? \
+        (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), -1) : \
+        (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_SetSlice(obj, a, b, value)) : \
+            (PyErr_Format(PyExc_TypeError, "'%.200s' object doesn't support slice assignment", (obj)->ob_type->tp_name), -1)))
+  #define __Pyx_PySequence_DelSlice(obj, a, b) (unlikely(!(obj)) ? \
+        (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), -1) : \
+        (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_DelSlice(obj, a, b)) : \
+            (PyErr_Format(PyExc_TypeError, "'%.200s' object doesn't support slice deletion", (obj)->ob_type->tp_name), -1)))
+#endif
+#if PY_MAJOR_VERSION >= 3
+  #define PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, self) : PyInstanceMethod_New(func))
+#endif
+#if PY_VERSION_HEX < 0x02050000
+  #define __Pyx_GetAttrString(o,n)   PyObject_GetAttrString((o),((char *)(n)))
+  #define __Pyx_SetAttrString(o,n,a) PyObject_SetAttrString((o),((char *)(n)),(a))
+  #define __Pyx_DelAttrString(o,n)   PyObject_DelAttrString((o),((char *)(n)))
+#else
+  #define __Pyx_GetAttrString(o,n)   PyObject_GetAttrString((o),(n))
+  #define __Pyx_SetAttrString(o,n,a) PyObject_SetAttrString((o),(n),(a))
+  #define __Pyx_DelAttrString(o,n)   PyObject_DelAttrString((o),(n))
+#endif
+#if PY_VERSION_HEX < 0x02050000
+  #define __Pyx_NAMESTR(n) ((char *)(n))
+  #define __Pyx_DOCSTR(n)  ((char *)(n))
+#else
+  #define __Pyx_NAMESTR(n) (n)
+  #define __Pyx_DOCSTR(n)  (n)
+#endif
+
+
+#if PY_MAJOR_VERSION >= 3
+  #define __Pyx_PyNumber_Divide(x,y)         PyNumber_TrueDivide(x,y)
+  #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceTrueDivide(x,y)
+#else
+  #define __Pyx_PyNumber_Divide(x,y)         PyNumber_Divide(x,y)
+  #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceDivide(x,y)
+#endif
+
+#ifndef __PYX_EXTERN_C
+  #ifdef __cplusplus
+    #define __PYX_EXTERN_C extern "C"
+  #else
+    #define __PYX_EXTERN_C extern
+  #endif
+#endif
+
+#if defined(WIN32) || defined(MS_WINDOWS)
+#define _USE_MATH_DEFINES
+#endif
+#include <math.h>
+#define __PYX_HAVE__h5py__h5fd
+#define __PYX_HAVE_API__h5py__h5fd
+#include "stdlib.h"
+#include "string.h"
+#include "time.h"
+#include "unistd.h"
+#include "stdint.h"
+#include "api_compat.h"
+#include "lzf_filter.h"
+#include "hdf5.h"
+#include "H5Cpublic.h"
+#include "hdf5_hl.h"
+#ifdef _OPENMP
+#include <omp.h>
+#endif /* _OPENMP */
+
+#ifdef PYREX_WITHOUT_ASSERTIONS
+#define CYTHON_WITHOUT_ASSERTIONS
+#endif
+
+#ifndef CYTHON_INLINE
+  #if defined(__GNUC__)
+    #define CYTHON_INLINE __inline__
+  #elif defined(_MSC_VER)
+    #define CYTHON_INLINE __inline
+  #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+    #define CYTHON_INLINE inline
+  #else
+    #define CYTHON_INLINE
+  #endif
+#endif
+#ifndef CYTHON_UNUSED
+# if defined(__GNUC__)
+#   if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
+#     define CYTHON_UNUSED __attribute__ ((__unused__))
+#   else
+#     define CYTHON_UNUSED
+#   endif
+# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER))
+#   define CYTHON_UNUSED __attribute__ ((__unused__))
+# else
+#   define CYTHON_UNUSED
+# endif
+#endif
+typedef struct {PyObject **p; char *s; const long n; const char* encoding; const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; /*proto*/
+
+#define __Pyx_PyBytes_FromUString(s) PyBytes_FromString((char*)s)
+#define __Pyx_PyBytes_AsUString(s)   ((unsigned char*) PyBytes_AsString(s))
+#define __Pyx_Owned_Py_None(b) (Py_INCREF(Py_None), Py_None)
+#define __Pyx_PyBool_FromLong(b) ((b) ? (Py_INCREF(Py_True), Py_True) : (Py_INCREF(Py_False), Py_False))
+static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*);
+static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x);
+static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*);
+static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t);
+static CYTHON_INLINE size_t __Pyx_PyInt_AsSize_t(PyObject*);
+#if CYTHON_COMPILING_IN_CPYTHON
+#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x))
+#else
+#define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x)
+#endif
+#define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x))
+
+
+#ifdef __GNUC__
+  /* Test for GCC > 2.95 */
+  #if __GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))
+    #define likely(x)   __builtin_expect(!!(x), 1)
+    #define unlikely(x) __builtin_expect(!!(x), 0)
+  #else /* __GNUC__ > 2 ... */
+    #define likely(x)   (x)
+    #define unlikely(x) (x)
+  #endif /* __GNUC__ > 2 ... */
+#else /* __GNUC__ */
+  #define likely(x)   (x)
+  #define unlikely(x) (x)
+#endif /* __GNUC__ */
+    
+static PyObject *__pyx_m;
+static PyObject *__pyx_b;
+static PyObject *__pyx_empty_tuple;
+static PyObject *__pyx_empty_bytes;
+static int __pyx_lineno;
+static int __pyx_clineno = 0;
+static const char * __pyx_cfilenm= __FILE__;
+static const char *__pyx_filename;
+
+
+static const char *__pyx_f[] = {
+  "h5fd.pyx",
+};
+
+/*--- Type declarations ---*/
+#ifndef CYTHON_REFNANNY
+  #define CYTHON_REFNANNY 0
+#endif
+#if CYTHON_REFNANNY
+  typedef struct {
+    void (*INCREF)(void*, PyObject*, int);
+    void (*DECREF)(void*, PyObject*, int);
+    void (*GOTREF)(void*, PyObject*, int);
+    void (*GIVEREF)(void*, PyObject*, int);
+    void* (*SetupContext)(const char*, int, const char*);
+    void (*FinishContext)(void**);
+  } __Pyx_RefNannyAPIStruct;
+  static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL;
+  static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); /*proto*/
+  #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL;
+#ifdef WITH_THREAD
+  #define __Pyx_RefNannySetupContext(name, acquire_gil) \
+          if (acquire_gil) { \
+              PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); \
+              __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__); \
+              PyGILState_Release(__pyx_gilstate_save); \
+          } else { \
+              __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__); \
+          }
+#else
+  #define __Pyx_RefNannySetupContext(name, acquire_gil) \
+          __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__)
+#endif
+  #define __Pyx_RefNannyFinishContext() \
+          __Pyx_RefNanny->FinishContext(&__pyx_refnanny)
+  #define __Pyx_INCREF(r)  __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_DECREF(r)  __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_GOTREF(r)  __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_XINCREF(r)  do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0)
+  #define __Pyx_XDECREF(r)  do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0)
+  #define __Pyx_XGOTREF(r)  do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0)
+  #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0)
+#else
+  #define __Pyx_RefNannyDeclarations
+  #define __Pyx_RefNannySetupContext(name, acquire_gil)
+  #define __Pyx_RefNannyFinishContext()
+  #define __Pyx_INCREF(r) Py_INCREF(r)
+  #define __Pyx_DECREF(r) Py_DECREF(r)
+  #define __Pyx_GOTREF(r)
+  #define __Pyx_GIVEREF(r)
+  #define __Pyx_XINCREF(r) Py_XINCREF(r)
+  #define __Pyx_XDECREF(r) Py_XDECREF(r)
+  #define __Pyx_XGOTREF(r)
+  #define __Pyx_XGIVEREF(r)
+#endif /* CYTHON_REFNANNY */
+#define __Pyx_CLEAR(r)    do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0)
+#define __Pyx_XCLEAR(r)   do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0)
+
+static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_hid_t(hid_t);
+
+static CYTHON_INLINE unsigned char __Pyx_PyInt_AsUnsignedChar(PyObject *);
+
+static CYTHON_INLINE unsigned short __Pyx_PyInt_AsUnsignedShort(PyObject *);
+
+static CYTHON_INLINE unsigned int __Pyx_PyInt_AsUnsignedInt(PyObject *);
+
+static CYTHON_INLINE char __Pyx_PyInt_AsChar(PyObject *);
+
+static CYTHON_INLINE short __Pyx_PyInt_AsShort(PyObject *);
+
+static CYTHON_INLINE int __Pyx_PyInt_AsInt(PyObject *);
+
+static CYTHON_INLINE signed char __Pyx_PyInt_AsSignedChar(PyObject *);
+
+static CYTHON_INLINE signed short __Pyx_PyInt_AsSignedShort(PyObject *);
+
+static CYTHON_INLINE signed int __Pyx_PyInt_AsSignedInt(PyObject *);
+
+static CYTHON_INLINE int __Pyx_PyInt_AsLongDouble(PyObject *);
+
+static CYTHON_INLINE unsigned long __Pyx_PyInt_AsUnsignedLong(PyObject *);
+
+static CYTHON_INLINE unsigned PY_LONG_LONG __Pyx_PyInt_AsUnsignedLongLong(PyObject *);
+
+static CYTHON_INLINE long __Pyx_PyInt_AsLong(PyObject *);
+
+static CYTHON_INLINE PY_LONG_LONG __Pyx_PyInt_AsLongLong(PyObject *);
+
+static CYTHON_INLINE signed long __Pyx_PyInt_AsSignedLong(PyObject *);
+
+static CYTHON_INLINE signed PY_LONG_LONG __Pyx_PyInt_AsSignedLongLong(PyObject *);
+
+static int __Pyx_check_binary_version(void);
+
+typedef struct {
+    int code_line;
+    PyCodeObject* code_object;
+} __Pyx_CodeObjectCacheEntry;
+struct __Pyx_CodeObjectCache {
+    int count;
+    int max_count;
+    __Pyx_CodeObjectCacheEntry* entries;
+};
+static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL};
+static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line);
+static PyCodeObject *__pyx_find_code_object(int code_line);
+static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object);
+
+static void __Pyx_AddTraceback(const char *funcname, int c_line,
+                               int py_line, const char *filename); /*proto*/
+
+static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); /*proto*/
+
+
+/* Module declarations from 'h5py.api_types_ext' */
+
+/* Module declarations from 'h5py.api_types_hdf5' */
+
+/* Module declarations from 'h5py.defs' */
+
+/* Module declarations from 'h5py.h5fd' */
+#define __Pyx_MODULE_NAME "h5py.h5fd"
+int __pyx_module_is_main_h5py__h5fd = 0;
+
+/* Implementation of 'h5py.h5fd' */
+static char __pyx_k_1[] = "\n    File driver constants (H5FD*).\n";
+static char __pyx_k__LOG[] = "LOG";
+static char __pyx_k__CORE[] = "CORE";
+static char __pyx_k__MPIO[] = "MPIO";
+static char __pyx_k__SEC2[] = "SEC2";
+static char __pyx_k__MULTI[] = "MULTI";
+static char __pyx_k__STDIO[] = "STDIO";
+static char __pyx_k__FAMILY[] = "FAMILY";
+static char __pyx_k__LOG_ALL[] = "LOG_ALL";
+static char __pyx_k__WINDOWS[] = "WINDOWS";
+static char __pyx_k__MEM_DRAW[] = "MEM_DRAW";
+static char __pyx_k__MEM_OHDR[] = "MEM_OHDR";
+static char __pyx_k__MPIPOSIX[] = "MPIPOSIX";
+static char __pyx_k____main__[] = "__main__";
+static char __pyx_k____test__[] = "__test__";
+static char __pyx_k__LOG_ALLOC[] = "LOG_ALLOC";
+static char __pyx_k__MEM_BTREE[] = "MEM_BTREE";
+static char __pyx_k__MEM_GHEAP[] = "MEM_GHEAP";
+static char __pyx_k__MEM_LHEAP[] = "MEM_LHEAP";
+static char __pyx_k__MEM_SUPER[] = "MEM_SUPER";
+static char __pyx_k__LOG_FLAVOR[] = "LOG_FLAVOR";
+static char __pyx_k__LOG_LOC_IO[] = "LOG_LOC_IO";
+static char __pyx_k__LOG_NUM_IO[] = "LOG_NUM_IO";
+static char __pyx_k__MEM_NTYPES[] = "MEM_NTYPES";
+static char __pyx_k__LOG_FILE_IO[] = "LOG_FILE_IO";
+static char __pyx_k__LOG_TIME_IO[] = "LOG_TIME_IO";
+static char __pyx_k__MEM_DEFAULT[] = "MEM_DEFAULT";
+static char __pyx_k__LOG_LOC_READ[] = "LOG_LOC_READ";
+static char __pyx_k__LOG_LOC_SEEK[] = "LOG_LOC_SEEK";
+static char __pyx_k__LOG_NUM_READ[] = "LOG_NUM_READ";
+static char __pyx_k__LOG_NUM_SEEK[] = "LOG_NUM_SEEK";
+static char __pyx_k__LOG_FILE_READ[] = "LOG_FILE_READ";
+static char __pyx_k__LOG_LOC_WRITE[] = "LOG_LOC_WRITE";
+static char __pyx_k__LOG_NUM_WRITE[] = "LOG_NUM_WRITE";
+static char __pyx_k__LOG_TIME_OPEN[] = "LOG_TIME_OPEN";
+static char __pyx_k__LOG_TIME_READ[] = "LOG_TIME_READ";
+static char __pyx_k__LOG_TIME_SEEK[] = "LOG_TIME_SEEK";
+static char __pyx_k__LOG_FILE_WRITE[] = "LOG_FILE_WRITE";
+static char __pyx_k__LOG_TIME_CLOSE[] = "LOG_TIME_CLOSE";
+static char __pyx_k__LOG_TIME_WRITE[] = "LOG_TIME_WRITE";
+static PyObject *__pyx_n_s__CORE;
+static PyObject *__pyx_n_s__FAMILY;
+static PyObject *__pyx_n_s__LOG;
+static PyObject *__pyx_n_s__LOG_ALL;
+static PyObject *__pyx_n_s__LOG_ALLOC;
+static PyObject *__pyx_n_s__LOG_FILE_IO;
+static PyObject *__pyx_n_s__LOG_FILE_READ;
+static PyObject *__pyx_n_s__LOG_FILE_WRITE;
+static PyObject *__pyx_n_s__LOG_FLAVOR;
+static PyObject *__pyx_n_s__LOG_LOC_IO;
+static PyObject *__pyx_n_s__LOG_LOC_READ;
+static PyObject *__pyx_n_s__LOG_LOC_SEEK;
+static PyObject *__pyx_n_s__LOG_LOC_WRITE;
+static PyObject *__pyx_n_s__LOG_NUM_IO;
+static PyObject *__pyx_n_s__LOG_NUM_READ;
+static PyObject *__pyx_n_s__LOG_NUM_SEEK;
+static PyObject *__pyx_n_s__LOG_NUM_WRITE;
+static PyObject *__pyx_n_s__LOG_TIME_CLOSE;
+static PyObject *__pyx_n_s__LOG_TIME_IO;
+static PyObject *__pyx_n_s__LOG_TIME_OPEN;
+static PyObject *__pyx_n_s__LOG_TIME_READ;
+static PyObject *__pyx_n_s__LOG_TIME_SEEK;
+static PyObject *__pyx_n_s__LOG_TIME_WRITE;
+static PyObject *__pyx_n_s__MEM_BTREE;
+static PyObject *__pyx_n_s__MEM_DEFAULT;
+static PyObject *__pyx_n_s__MEM_DRAW;
+static PyObject *__pyx_n_s__MEM_GHEAP;
+static PyObject *__pyx_n_s__MEM_LHEAP;
+static PyObject *__pyx_n_s__MEM_NTYPES;
+static PyObject *__pyx_n_s__MEM_OHDR;
+static PyObject *__pyx_n_s__MEM_SUPER;
+static PyObject *__pyx_n_s__MPIO;
+static PyObject *__pyx_n_s__MPIPOSIX;
+static PyObject *__pyx_n_s__MULTI;
+static PyObject *__pyx_n_s__SEC2;
+static PyObject *__pyx_n_s__STDIO;
+static PyObject *__pyx_n_s__WINDOWS;
+static PyObject *__pyx_n_s____main__;
+static PyObject *__pyx_n_s____test__;
+static PyObject *__pyx_int_neg_1;
+
+static PyMethodDef __pyx_methods[] = {
+  {0, 0, 0, 0}
+};
+
+#if PY_MAJOR_VERSION >= 3
+static struct PyModuleDef __pyx_moduledef = {
+  #if PY_VERSION_HEX < 0x03020000
+    { PyObject_HEAD_INIT(NULL) NULL, 0, NULL },
+  #else
+    PyModuleDef_HEAD_INIT,
+  #endif
+    __Pyx_NAMESTR("h5fd"),
+    __Pyx_DOCSTR(__pyx_k_1), /* m_doc */
+    -1, /* m_size */
+    __pyx_methods /* m_methods */,
+    NULL, /* m_reload */
+    NULL, /* m_traverse */
+    NULL, /* m_clear */
+    NULL /* m_free */
+};
+#endif
+
+static __Pyx_StringTabEntry __pyx_string_tab[] = {
+  {&__pyx_n_s__CORE, __pyx_k__CORE, sizeof(__pyx_k__CORE), 0, 0, 1, 1},
+  {&__pyx_n_s__FAMILY, __pyx_k__FAMILY, sizeof(__pyx_k__FAMILY), 0, 0, 1, 1},
+  {&__pyx_n_s__LOG, __pyx_k__LOG, sizeof(__pyx_k__LOG), 0, 0, 1, 1},
+  {&__pyx_n_s__LOG_ALL, __pyx_k__LOG_ALL, sizeof(__pyx_k__LOG_ALL), 0, 0, 1, 1},
+  {&__pyx_n_s__LOG_ALLOC, __pyx_k__LOG_ALLOC, sizeof(__pyx_k__LOG_ALLOC), 0, 0, 1, 1},
+  {&__pyx_n_s__LOG_FILE_IO, __pyx_k__LOG_FILE_IO, sizeof(__pyx_k__LOG_FILE_IO), 0, 0, 1, 1},
+  {&__pyx_n_s__LOG_FILE_READ, __pyx_k__LOG_FILE_READ, sizeof(__pyx_k__LOG_FILE_READ), 0, 0, 1, 1},
+  {&__pyx_n_s__LOG_FILE_WRITE, __pyx_k__LOG_FILE_WRITE, sizeof(__pyx_k__LOG_FILE_WRITE), 0, 0, 1, 1},
+  {&__pyx_n_s__LOG_FLAVOR, __pyx_k__LOG_FLAVOR, sizeof(__pyx_k__LOG_FLAVOR), 0, 0, 1, 1},
+  {&__pyx_n_s__LOG_LOC_IO, __pyx_k__LOG_LOC_IO, sizeof(__pyx_k__LOG_LOC_IO), 0, 0, 1, 1},
+  {&__pyx_n_s__LOG_LOC_READ, __pyx_k__LOG_LOC_READ, sizeof(__pyx_k__LOG_LOC_READ), 0, 0, 1, 1},
+  {&__pyx_n_s__LOG_LOC_SEEK, __pyx_k__LOG_LOC_SEEK, sizeof(__pyx_k__LOG_LOC_SEEK), 0, 0, 1, 1},
+  {&__pyx_n_s__LOG_LOC_WRITE, __pyx_k__LOG_LOC_WRITE, sizeof(__pyx_k__LOG_LOC_WRITE), 0, 0, 1, 1},
+  {&__pyx_n_s__LOG_NUM_IO, __pyx_k__LOG_NUM_IO, sizeof(__pyx_k__LOG_NUM_IO), 0, 0, 1, 1},
+  {&__pyx_n_s__LOG_NUM_READ, __pyx_k__LOG_NUM_READ, sizeof(__pyx_k__LOG_NUM_READ), 0, 0, 1, 1},
+  {&__pyx_n_s__LOG_NUM_SEEK, __pyx_k__LOG_NUM_SEEK, sizeof(__pyx_k__LOG_NUM_SEEK), 0, 0, 1, 1},
+  {&__pyx_n_s__LOG_NUM_WRITE, __pyx_k__LOG_NUM_WRITE, sizeof(__pyx_k__LOG_NUM_WRITE), 0, 0, 1, 1},
+  {&__pyx_n_s__LOG_TIME_CLOSE, __pyx_k__LOG_TIME_CLOSE, sizeof(__pyx_k__LOG_TIME_CLOSE), 0, 0, 1, 1},
+  {&__pyx_n_s__LOG_TIME_IO, __pyx_k__LOG_TIME_IO, sizeof(__pyx_k__LOG_TIME_IO), 0, 0, 1, 1},
+  {&__pyx_n_s__LOG_TIME_OPEN, __pyx_k__LOG_TIME_OPEN, sizeof(__pyx_k__LOG_TIME_OPEN), 0, 0, 1, 1},
+  {&__pyx_n_s__LOG_TIME_READ, __pyx_k__LOG_TIME_READ, sizeof(__pyx_k__LOG_TIME_READ), 0, 0, 1, 1},
+  {&__pyx_n_s__LOG_TIME_SEEK, __pyx_k__LOG_TIME_SEEK, sizeof(__pyx_k__LOG_TIME_SEEK), 0, 0, 1, 1},
+  {&__pyx_n_s__LOG_TIME_WRITE, __pyx_k__LOG_TIME_WRITE, sizeof(__pyx_k__LOG_TIME_WRITE), 0, 0, 1, 1},
+  {&__pyx_n_s__MEM_BTREE, __pyx_k__MEM_BTREE, sizeof(__pyx_k__MEM_BTREE), 0, 0, 1, 1},
+  {&__pyx_n_s__MEM_DEFAULT, __pyx_k__MEM_DEFAULT, sizeof(__pyx_k__MEM_DEFAULT), 0, 0, 1, 1},
+  {&__pyx_n_s__MEM_DRAW, __pyx_k__MEM_DRAW, sizeof(__pyx_k__MEM_DRAW), 0, 0, 1, 1},
+  {&__pyx_n_s__MEM_GHEAP, __pyx_k__MEM_GHEAP, sizeof(__pyx_k__MEM_GHEAP), 0, 0, 1, 1},
+  {&__pyx_n_s__MEM_LHEAP, __pyx_k__MEM_LHEAP, sizeof(__pyx_k__MEM_LHEAP), 0, 0, 1, 1},
+  {&__pyx_n_s__MEM_NTYPES, __pyx_k__MEM_NTYPES, sizeof(__pyx_k__MEM_NTYPES), 0, 0, 1, 1},
+  {&__pyx_n_s__MEM_OHDR, __pyx_k__MEM_OHDR, sizeof(__pyx_k__MEM_OHDR), 0, 0, 1, 1},
+  {&__pyx_n_s__MEM_SUPER, __pyx_k__MEM_SUPER, sizeof(__pyx_k__MEM_SUPER), 0, 0, 1, 1},
+  {&__pyx_n_s__MPIO, __pyx_k__MPIO, sizeof(__pyx_k__MPIO), 0, 0, 1, 1},
+  {&__pyx_n_s__MPIPOSIX, __pyx_k__MPIPOSIX, sizeof(__pyx_k__MPIPOSIX), 0, 0, 1, 1},
+  {&__pyx_n_s__MULTI, __pyx_k__MULTI, sizeof(__pyx_k__MULTI), 0, 0, 1, 1},
+  {&__pyx_n_s__SEC2, __pyx_k__SEC2, sizeof(__pyx_k__SEC2), 0, 0, 1, 1},
+  {&__pyx_n_s__STDIO, __pyx_k__STDIO, sizeof(__pyx_k__STDIO), 0, 0, 1, 1},
+  {&__pyx_n_s__WINDOWS, __pyx_k__WINDOWS, sizeof(__pyx_k__WINDOWS), 0, 0, 1, 1},
+  {&__pyx_n_s____main__, __pyx_k____main__, sizeof(__pyx_k____main__), 0, 0, 1, 1},
+  {&__pyx_n_s____test__, __pyx_k____test__, sizeof(__pyx_k____test__), 0, 0, 1, 1},
+  {0, 0, 0, 0, 0, 0, 0}
+};
+static int __Pyx_InitCachedBuiltins(void) {
+  return 0;
+}
+
+static int __Pyx_InitCachedConstants(void) {
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0);
+  __Pyx_RefNannyFinishContext();
+  return 0;
+}
+
+static int __Pyx_InitGlobals(void) {
+  if (__Pyx_InitStrings(__pyx_string_tab) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  __pyx_int_neg_1 = PyInt_FromLong(-1); if (unlikely(!__pyx_int_neg_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  return 0;
+  __pyx_L1_error:;
+  return -1;
+}
+
+#if PY_MAJOR_VERSION < 3
+PyMODINIT_FUNC inith5fd(void); /*proto*/
+PyMODINIT_FUNC inith5fd(void)
+#else
+PyMODINIT_FUNC PyInit_h5fd(void); /*proto*/
+PyMODINIT_FUNC PyInit_h5fd(void)
+#endif
+{
+  PyObject *__pyx_t_1 = NULL;
+  __Pyx_RefNannyDeclarations
+  #if CYTHON_REFNANNY
+  __Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny");
+  if (!__Pyx_RefNanny) {
+      PyErr_Clear();
+      __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny");
+      if (!__Pyx_RefNanny)
+          Py_FatalError("failed to import 'refnanny' module");
+  }
+  #endif
+  __Pyx_RefNannySetupContext("PyMODINIT_FUNC PyInit_h5fd(void)", 0);
+  if ( __Pyx_check_binary_version() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #ifdef __Pyx_CyFunction_USED
+  if (__Pyx_CyFunction_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #endif
+  #ifdef __Pyx_FusedFunction_USED
+  if (__pyx_FusedFunction_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #endif
+  #ifdef __Pyx_Generator_USED
+  if (__pyx_Generator_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #endif
+  /*--- Library function declarations ---*/
+  /*--- Threads initialization code ---*/
+  #if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS
+  #ifdef WITH_THREAD /* Python build with threading support? */
+  PyEval_InitThreads();
+  #endif
+  #endif
+  /*--- Module creation code ---*/
+  #if PY_MAJOR_VERSION < 3
+  __pyx_m = Py_InitModule4(__Pyx_NAMESTR("h5fd"), __pyx_methods, __Pyx_DOCSTR(__pyx_k_1), 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m);
+  #else
+  __pyx_m = PyModule_Create(&__pyx_moduledef);
+  #endif
+  if (unlikely(!__pyx_m)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #if PY_MAJOR_VERSION >= 3
+  {
+    PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (!PyDict_GetItemString(modules, "h5py.h5fd")) {
+      if (unlikely(PyDict_SetItemString(modules, "h5py.h5fd", __pyx_m) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    }
+  }
+  #endif
+  __pyx_b = PyImport_AddModule(__Pyx_NAMESTR(__Pyx_BUILTIN_MODULE_NAME)); if (unlikely(!__pyx_b)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #if CYTHON_COMPILING_IN_PYPY
+  Py_INCREF(__pyx_b);
+  #endif
+  if (__Pyx_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  /*--- Initialize various global constants etc. ---*/
+  if (unlikely(__Pyx_InitGlobals() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__pyx_module_is_main_h5py__h5fd) {
+    if (__Pyx_SetAttrString(__pyx_m, "__name__", __pyx_n_s____main__) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  }
+  /*--- Builtin init code ---*/
+  if (unlikely(__Pyx_InitCachedBuiltins() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  /*--- Constants init code ---*/
+  if (unlikely(__Pyx_InitCachedConstants() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  /*--- Global init code ---*/
+  /*--- Variable export code ---*/
+  /*--- Function export code ---*/
+  /*--- Type init code ---*/
+  /*--- Type import code ---*/
+  /*--- Variable import code ---*/
+  /*--- Function import code ---*/
+  /*--- Execution code ---*/
+
+  /* "h5py/h5fd.pyx":19
+ * # === Multi-file driver =======================================================
+ * 
+ * MEM_DEFAULT = H5FD_MEM_DEFAULT             # <<<<<<<<<<<<<<
+ * MEM_SUPER = H5FD_MEM_SUPER
+ * MEM_BTREE = H5FD_MEM_BTREE
+ */
+  __pyx_t_1 = PyInt_FromLong(H5FD_MEM_DEFAULT); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__MEM_DEFAULT, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "h5py/h5fd.pyx":20
+ * 
+ * MEM_DEFAULT = H5FD_MEM_DEFAULT
+ * MEM_SUPER = H5FD_MEM_SUPER             # <<<<<<<<<<<<<<
+ * MEM_BTREE = H5FD_MEM_BTREE
+ * MEM_DRAW = H5FD_MEM_DRAW
+ */
+  __pyx_t_1 = PyInt_FromLong(H5FD_MEM_SUPER); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__MEM_SUPER, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "h5py/h5fd.pyx":21
+ * MEM_DEFAULT = H5FD_MEM_DEFAULT
+ * MEM_SUPER = H5FD_MEM_SUPER
+ * MEM_BTREE = H5FD_MEM_BTREE             # <<<<<<<<<<<<<<
+ * MEM_DRAW = H5FD_MEM_DRAW
+ * MEM_GHEAP = H5FD_MEM_GHEAP
+ */
+  __pyx_t_1 = PyInt_FromLong(H5FD_MEM_BTREE); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__MEM_BTREE, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "h5py/h5fd.pyx":22
+ * MEM_SUPER = H5FD_MEM_SUPER
+ * MEM_BTREE = H5FD_MEM_BTREE
+ * MEM_DRAW = H5FD_MEM_DRAW             # <<<<<<<<<<<<<<
+ * MEM_GHEAP = H5FD_MEM_GHEAP
+ * MEM_LHEAP = H5FD_MEM_LHEAP
+ */
+  __pyx_t_1 = PyInt_FromLong(H5FD_MEM_DRAW); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__MEM_DRAW, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "h5py/h5fd.pyx":23
+ * MEM_BTREE = H5FD_MEM_BTREE
+ * MEM_DRAW = H5FD_MEM_DRAW
+ * MEM_GHEAP = H5FD_MEM_GHEAP             # <<<<<<<<<<<<<<
+ * MEM_LHEAP = H5FD_MEM_LHEAP
+ * MEM_OHDR = H5FD_MEM_OHDR
+ */
+  __pyx_t_1 = PyInt_FromLong(H5FD_MEM_GHEAP); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__MEM_GHEAP, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "h5py/h5fd.pyx":24
+ * MEM_DRAW = H5FD_MEM_DRAW
+ * MEM_GHEAP = H5FD_MEM_GHEAP
+ * MEM_LHEAP = H5FD_MEM_LHEAP             # <<<<<<<<<<<<<<
+ * MEM_OHDR = H5FD_MEM_OHDR
+ * MEM_NTYPES = H5FD_MEM_NTYPES
+ */
+  __pyx_t_1 = PyInt_FromLong(H5FD_MEM_LHEAP); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__MEM_LHEAP, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "h5py/h5fd.pyx":25
+ * MEM_GHEAP = H5FD_MEM_GHEAP
+ * MEM_LHEAP = H5FD_MEM_LHEAP
+ * MEM_OHDR = H5FD_MEM_OHDR             # <<<<<<<<<<<<<<
+ * MEM_NTYPES = H5FD_MEM_NTYPES
+ * 
+ */
+  __pyx_t_1 = PyInt_FromLong(H5FD_MEM_OHDR); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__MEM_OHDR, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "h5py/h5fd.pyx":26
+ * MEM_LHEAP = H5FD_MEM_LHEAP
+ * MEM_OHDR = H5FD_MEM_OHDR
+ * MEM_NTYPES = H5FD_MEM_NTYPES             # <<<<<<<<<<<<<<
+ * 
+ * # === Driver types ============================================================
+ */
+  __pyx_t_1 = PyInt_FromLong(H5FD_MEM_NTYPES); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__MEM_NTYPES, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "h5py/h5fd.pyx":30
+ * # === Driver types ============================================================
+ * 
+ * CORE = H5FD_CORE             # <<<<<<<<<<<<<<
+ * FAMILY = H5FD_FAMILY
+ * LOG = H5FD_LOG
+ */
+  __pyx_t_1 = __Pyx_PyInt_to_py_hid_t(H5FD_CORE); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__CORE, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "h5py/h5fd.pyx":31
+ * 
+ * CORE = H5FD_CORE
+ * FAMILY = H5FD_FAMILY             # <<<<<<<<<<<<<<
+ * LOG = H5FD_LOG
+ * MPIO = H5FD_MPIO
+ */
+  __pyx_t_1 = __Pyx_PyInt_to_py_hid_t(H5FD_FAMILY); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__FAMILY, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "h5py/h5fd.pyx":32
+ * CORE = H5FD_CORE
+ * FAMILY = H5FD_FAMILY
+ * LOG = H5FD_LOG             # <<<<<<<<<<<<<<
+ * MPIO = H5FD_MPIO
+ * MPIPOSIX = H5FD_MPIPOSIX
+ */
+  __pyx_t_1 = __Pyx_PyInt_to_py_hid_t(H5FD_LOG); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__LOG, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "h5py/h5fd.pyx":33
+ * FAMILY = H5FD_FAMILY
+ * LOG = H5FD_LOG
+ * MPIO = H5FD_MPIO             # <<<<<<<<<<<<<<
+ * MPIPOSIX = H5FD_MPIPOSIX
+ * MULTI = H5FD_MULTI
+ */
+  __pyx_t_1 = __Pyx_PyInt_to_py_hid_t(H5FD_MPIO); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__MPIO, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "h5py/h5fd.pyx":34
+ * LOG = H5FD_LOG
+ * MPIO = H5FD_MPIO
+ * MPIPOSIX = H5FD_MPIPOSIX             # <<<<<<<<<<<<<<
+ * MULTI = H5FD_MULTI
+ * SEC2 = H5FD_SEC2
+ */
+  __pyx_t_1 = __Pyx_PyInt_to_py_hid_t(H5FD_MPIPOSIX); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__MPIPOSIX, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "h5py/h5fd.pyx":35
+ * MPIO = H5FD_MPIO
+ * MPIPOSIX = H5FD_MPIPOSIX
+ * MULTI = H5FD_MULTI             # <<<<<<<<<<<<<<
+ * SEC2 = H5FD_SEC2
+ * STDIO = H5FD_STDIO
+ */
+  __pyx_t_1 = __Pyx_PyInt_to_py_hid_t(H5FD_MULTI); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__MULTI, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "h5py/h5fd.pyx":36
+ * MPIPOSIX = H5FD_MPIPOSIX
+ * MULTI = H5FD_MULTI
+ * SEC2 = H5FD_SEC2             # <<<<<<<<<<<<<<
+ * STDIO = H5FD_STDIO
+ * IF UNAME_SYSNAME == "Windows":
+ */
+  __pyx_t_1 = __Pyx_PyInt_to_py_hid_t(H5FD_SEC2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__SEC2, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "h5py/h5fd.pyx":37
+ * MULTI = H5FD_MULTI
+ * SEC2 = H5FD_SEC2
+ * STDIO = H5FD_STDIO             # <<<<<<<<<<<<<<
+ * IF UNAME_SYSNAME == "Windows":
+ *     WINDOWS = H5FD_WINDOWS
+ */
+  __pyx_t_1 = __Pyx_PyInt_to_py_hid_t(H5FD_STDIO); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__STDIO, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "h5py/h5fd.pyx":41
+ *     WINDOWS = H5FD_WINDOWS
+ * ELSE:
+ *     WINDOWS = -1             # <<<<<<<<<<<<<<
+ * 
+ * # === Logging driver ==========================================================
+ */
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__WINDOWS, __pyx_int_neg_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5fd.pyx":45
+ * # === Logging driver ==========================================================
+ * 
+ * LOG_LOC_READ  = H5FD_LOG_LOC_READ   # 0x0001             # <<<<<<<<<<<<<<
+ * LOG_LOC_WRITE = H5FD_LOG_LOC_WRITE  # 0x0002
+ * LOG_LOC_SEEK  = H5FD_LOG_LOC_SEEK   # 0x0004
+ */
+  __pyx_t_1 = PyInt_FromLong(H5FD_LOG_LOC_READ); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__LOG_LOC_READ, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "h5py/h5fd.pyx":46
+ * 
+ * LOG_LOC_READ  = H5FD_LOG_LOC_READ   # 0x0001
+ * LOG_LOC_WRITE = H5FD_LOG_LOC_WRITE  # 0x0002             # <<<<<<<<<<<<<<
+ * LOG_LOC_SEEK  = H5FD_LOG_LOC_SEEK   # 0x0004
+ * LOG_LOC_IO    = H5FD_LOG_LOC_IO     # (H5FD_LOG_LOC_READ|H5FD_LOG_LOC_WRITE|H5FD_LOG_LOC_SEEK)
+ */
+  __pyx_t_1 = PyInt_FromLong(H5FD_LOG_LOC_WRITE); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__LOG_LOC_WRITE, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "h5py/h5fd.pyx":47
+ * LOG_LOC_READ  = H5FD_LOG_LOC_READ   # 0x0001
+ * LOG_LOC_WRITE = H5FD_LOG_LOC_WRITE  # 0x0002
+ * LOG_LOC_SEEK  = H5FD_LOG_LOC_SEEK   # 0x0004             # <<<<<<<<<<<<<<
+ * LOG_LOC_IO    = H5FD_LOG_LOC_IO     # (H5FD_LOG_LOC_READ|H5FD_LOG_LOC_WRITE|H5FD_LOG_LOC_SEEK)
+ * 
+ */
+  __pyx_t_1 = PyInt_FromLong(H5FD_LOG_LOC_SEEK); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__LOG_LOC_SEEK, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "h5py/h5fd.pyx":48
+ * LOG_LOC_WRITE = H5FD_LOG_LOC_WRITE  # 0x0002
+ * LOG_LOC_SEEK  = H5FD_LOG_LOC_SEEK   # 0x0004
+ * LOG_LOC_IO    = H5FD_LOG_LOC_IO     # (H5FD_LOG_LOC_READ|H5FD_LOG_LOC_WRITE|H5FD_LOG_LOC_SEEK)             # <<<<<<<<<<<<<<
+ * 
+ * # Flags for tracking number of times each byte is read/written
+ */
+  __pyx_t_1 = PyInt_FromLong(H5FD_LOG_LOC_IO); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__LOG_LOC_IO, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "h5py/h5fd.pyx":51
+ * 
+ * # Flags for tracking number of times each byte is read/written
+ * LOG_FILE_READ = H5FD_LOG_FILE_READ  # 0x0008             # <<<<<<<<<<<<<<
+ * LOG_FILE_WRITE= H5FD_LOG_FILE_WRITE # 0x0010
+ * LOG_FILE_IO   = H5FD_LOG_FILE_IO    # (H5FD_LOG_FILE_READ|H5FD_LOG_FILE_WRITE)
+ */
+  __pyx_t_1 = PyInt_FromLong(H5FD_LOG_FILE_READ); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__LOG_FILE_READ, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "h5py/h5fd.pyx":52
+ * # Flags for tracking number of times each byte is read/written
+ * LOG_FILE_READ = H5FD_LOG_FILE_READ  # 0x0008
+ * LOG_FILE_WRITE= H5FD_LOG_FILE_WRITE # 0x0010             # <<<<<<<<<<<<<<
+ * LOG_FILE_IO   = H5FD_LOG_FILE_IO    # (H5FD_LOG_FILE_READ|H5FD_LOG_FILE_WRITE)
+ * 
+ */
+  __pyx_t_1 = PyInt_FromLong(H5FD_LOG_FILE_WRITE); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__LOG_FILE_WRITE, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "h5py/h5fd.pyx":53
+ * LOG_FILE_READ = H5FD_LOG_FILE_READ  # 0x0008
+ * LOG_FILE_WRITE= H5FD_LOG_FILE_WRITE # 0x0010
+ * LOG_FILE_IO   = H5FD_LOG_FILE_IO    # (H5FD_LOG_FILE_READ|H5FD_LOG_FILE_WRITE)             # <<<<<<<<<<<<<<
+ * 
+ * # Flag for tracking "flavor" (type) of information stored at each byte
+ */
+  __pyx_t_1 = PyInt_FromLong(H5FD_LOG_FILE_IO); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__LOG_FILE_IO, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "h5py/h5fd.pyx":56
+ * 
+ * # Flag for tracking "flavor" (type) of information stored at each byte
+ * LOG_FLAVOR    = H5FD_LOG_FLAVOR     # 0x0020             # <<<<<<<<<<<<<<
+ * 
+ * # Flags for tracking total number of reads/writes/seeks
+ */
+  __pyx_t_1 = PyInt_FromLong(H5FD_LOG_FLAVOR); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__LOG_FLAVOR, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "h5py/h5fd.pyx":59
+ * 
+ * # Flags for tracking total number of reads/writes/seeks
+ * LOG_NUM_READ  = H5FD_LOG_NUM_READ   # 0x0040             # <<<<<<<<<<<<<<
+ * LOG_NUM_WRITE = H5FD_LOG_NUM_WRITE  # 0x0080
+ * LOG_NUM_SEEK  = H5FD_LOG_NUM_SEEK   # 0x0100
+ */
+  __pyx_t_1 = PyInt_FromLong(H5FD_LOG_NUM_READ); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__LOG_NUM_READ, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "h5py/h5fd.pyx":60
+ * # Flags for tracking total number of reads/writes/seeks
+ * LOG_NUM_READ  = H5FD_LOG_NUM_READ   # 0x0040
+ * LOG_NUM_WRITE = H5FD_LOG_NUM_WRITE  # 0x0080             # <<<<<<<<<<<<<<
+ * LOG_NUM_SEEK  = H5FD_LOG_NUM_SEEK   # 0x0100
+ * LOG_NUM_IO    = H5FD_LOG_NUM_IO     # (H5FD_LOG_NUM_READ|H5FD_LOG_NUM_WRITE|H5FD_LOG_NUM_SEEK)
+ */
+  __pyx_t_1 = PyInt_FromLong(H5FD_LOG_NUM_WRITE); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__LOG_NUM_WRITE, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "h5py/h5fd.pyx":61
+ * LOG_NUM_READ  = H5FD_LOG_NUM_READ   # 0x0040
+ * LOG_NUM_WRITE = H5FD_LOG_NUM_WRITE  # 0x0080
+ * LOG_NUM_SEEK  = H5FD_LOG_NUM_SEEK   # 0x0100             # <<<<<<<<<<<<<<
+ * LOG_NUM_IO    = H5FD_LOG_NUM_IO     # (H5FD_LOG_NUM_READ|H5FD_LOG_NUM_WRITE|H5FD_LOG_NUM_SEEK)
+ * 
+ */
+  __pyx_t_1 = PyInt_FromLong(H5FD_LOG_NUM_SEEK); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__LOG_NUM_SEEK, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "h5py/h5fd.pyx":62
+ * LOG_NUM_WRITE = H5FD_LOG_NUM_WRITE  # 0x0080
+ * LOG_NUM_SEEK  = H5FD_LOG_NUM_SEEK   # 0x0100
+ * LOG_NUM_IO    = H5FD_LOG_NUM_IO     # (H5FD_LOG_NUM_READ|H5FD_LOG_NUM_WRITE|H5FD_LOG_NUM_SEEK)             # <<<<<<<<<<<<<<
+ * 
+ * # Flags for tracking time spent in open/read/write/seek/close
+ */
+  __pyx_t_1 = PyInt_FromLong(H5FD_LOG_NUM_IO); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__LOG_NUM_IO, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "h5py/h5fd.pyx":65
+ * 
+ * # Flags for tracking time spent in open/read/write/seek/close
+ * LOG_TIME_OPEN = H5FD_LOG_TIME_OPEN  # 0x0200        # Not implemented yet             # <<<<<<<<<<<<<<
+ * LOG_TIME_READ = H5FD_LOG_TIME_READ  # 0x0400        # Not implemented yet
+ * LOG_TIME_WRITE= H5FD_LOG_TIME_WRITE # 0x0800        # Partially implemented (need to track total time)
+ */
+  __pyx_t_1 = PyInt_FromLong(H5FD_LOG_TIME_OPEN); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__LOG_TIME_OPEN, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "h5py/h5fd.pyx":66
+ * # Flags for tracking time spent in open/read/write/seek/close
+ * LOG_TIME_OPEN = H5FD_LOG_TIME_OPEN  # 0x0200        # Not implemented yet
+ * LOG_TIME_READ = H5FD_LOG_TIME_READ  # 0x0400        # Not implemented yet             # <<<<<<<<<<<<<<
+ * LOG_TIME_WRITE= H5FD_LOG_TIME_WRITE # 0x0800        # Partially implemented (need to track total time)
+ * LOG_TIME_SEEK = H5FD_LOG_TIME_SEEK  # 0x1000        # Partially implemented (need to track total time & track time for seeks during reading)
+ */
+  __pyx_t_1 = PyInt_FromLong(H5FD_LOG_TIME_READ); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__LOG_TIME_READ, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "h5py/h5fd.pyx":67
+ * LOG_TIME_OPEN = H5FD_LOG_TIME_OPEN  # 0x0200        # Not implemented yet
+ * LOG_TIME_READ = H5FD_LOG_TIME_READ  # 0x0400        # Not implemented yet
+ * LOG_TIME_WRITE= H5FD_LOG_TIME_WRITE # 0x0800        # Partially implemented (need to track total time)             # <<<<<<<<<<<<<<
+ * LOG_TIME_SEEK = H5FD_LOG_TIME_SEEK  # 0x1000        # Partially implemented (need to track total time & track time for seeks during reading)
+ * LOG_TIME_CLOSE= H5FD_LOG_TIME_CLOSE # 0x2000        # Fully implemented
+ */
+  __pyx_t_1 = PyInt_FromLong(H5FD_LOG_TIME_WRITE); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__LOG_TIME_WRITE, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "h5py/h5fd.pyx":68
+ * LOG_TIME_READ = H5FD_LOG_TIME_READ  # 0x0400        # Not implemented yet
+ * LOG_TIME_WRITE= H5FD_LOG_TIME_WRITE # 0x0800        # Partially implemented (need to track total time)
+ * LOG_TIME_SEEK = H5FD_LOG_TIME_SEEK  # 0x1000        # Partially implemented (need to track total time & track time for seeks during reading)             # <<<<<<<<<<<<<<
+ * LOG_TIME_CLOSE= H5FD_LOG_TIME_CLOSE # 0x2000        # Fully implemented
+ * LOG_TIME_IO   = H5FD_LOG_TIME_IO    # (H5FD_LOG_TIME_OPEN|H5FD_LOG_TIME_READ|H5FD_LOG_TIME_WRITE|H5FD_LOG_TIME_SEEK|H5FD_LOG_TIME_CLOSE)
+ */
+  __pyx_t_1 = PyInt_FromLong(H5FD_LOG_TIME_SEEK); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__LOG_TIME_SEEK, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "h5py/h5fd.pyx":69
+ * LOG_TIME_WRITE= H5FD_LOG_TIME_WRITE # 0x0800        # Partially implemented (need to track total time)
+ * LOG_TIME_SEEK = H5FD_LOG_TIME_SEEK  # 0x1000        # Partially implemented (need to track total time & track time for seeks during reading)
+ * LOG_TIME_CLOSE= H5FD_LOG_TIME_CLOSE # 0x2000        # Fully implemented             # <<<<<<<<<<<<<<
+ * LOG_TIME_IO   = H5FD_LOG_TIME_IO    # (H5FD_LOG_TIME_OPEN|H5FD_LOG_TIME_READ|H5FD_LOG_TIME_WRITE|H5FD_LOG_TIME_SEEK|H5FD_LOG_TIME_CLOSE)
+ * 
+ */
+  __pyx_t_1 = PyInt_FromLong(H5FD_LOG_TIME_CLOSE); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__LOG_TIME_CLOSE, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "h5py/h5fd.pyx":70
+ * LOG_TIME_SEEK = H5FD_LOG_TIME_SEEK  # 0x1000        # Partially implemented (need to track total time & track time for seeks during reading)
+ * LOG_TIME_CLOSE= H5FD_LOG_TIME_CLOSE # 0x2000        # Fully implemented
+ * LOG_TIME_IO   = H5FD_LOG_TIME_IO    # (H5FD_LOG_TIME_OPEN|H5FD_LOG_TIME_READ|H5FD_LOG_TIME_WRITE|H5FD_LOG_TIME_SEEK|H5FD_LOG_TIME_CLOSE)             # <<<<<<<<<<<<<<
+ * 
+ * # Flag for tracking allocation of space in file
+ */
+  __pyx_t_1 = PyInt_FromLong(H5FD_LOG_TIME_IO); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__LOG_TIME_IO, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "h5py/h5fd.pyx":73
+ * 
+ * # Flag for tracking allocation of space in file
+ * LOG_ALLOC     = H5FD_LOG_ALLOC      # 0x4000             # <<<<<<<<<<<<<<
+ * LOG_ALL       = H5FD_LOG_ALL        # (H5FD_LOG_ALLOC|H5FD_LOG_TIME_IO|H5FD_LOG_NUM_IO|H5FD_LOG_FLAVOR|H5FD_LOG_FILE_IO|H5FD_LOG_LOC_IO)
+ * 
+ */
+  __pyx_t_1 = PyInt_FromLong(H5FD_LOG_ALLOC); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__LOG_ALLOC, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "h5py/h5fd.pyx":74
+ * # Flag for tracking allocation of space in file
+ * LOG_ALLOC     = H5FD_LOG_ALLOC      # 0x4000
+ * LOG_ALL       = H5FD_LOG_ALL        # (H5FD_LOG_ALLOC|H5FD_LOG_TIME_IO|H5FD_LOG_NUM_IO|H5FD_LOG_FLAVOR|H5FD_LOG_FILE_IO|H5FD_LOG_LOC_IO)             # <<<<<<<<<<<<<<
+ * 
+ */
+  __pyx_t_1 = PyInt_FromLong(H5FD_LOG_ALL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__LOG_ALL, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "h5py/h5fd.pyx":1
+ * # This file is part of h5py, a Python interface to the HDF5 library.             # <<<<<<<<<<<<<<
+ * #
+ * # http://www.h5py.org
+ */
+  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s____test__, ((PyObject *)__pyx_t_1)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  if (__pyx_m) {
+    __Pyx_AddTraceback("init h5py.h5fd", __pyx_clineno, __pyx_lineno, __pyx_filename);
+    Py_DECREF(__pyx_m); __pyx_m = 0;
+  } else if (!PyErr_Occurred()) {
+    PyErr_SetString(PyExc_ImportError, "init h5py.h5fd");
+  }
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  #if PY_MAJOR_VERSION < 3
+  return;
+  #else
+  return __pyx_m;
+  #endif
+}
+
+/* Runtime support code */
+#if CYTHON_REFNANNY
+static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) {
+    PyObject *m = NULL, *p = NULL;
+    void *r = NULL;
+    m = PyImport_ImportModule((char *)modname);
+    if (!m) goto end;
+    p = PyObject_GetAttrString(m, (char *)"RefNannyAPI");
+    if (!p) goto end;
+    r = PyLong_AsVoidPtr(p);
+end:
+    Py_XDECREF(p);
+    Py_XDECREF(m);
+    return (__Pyx_RefNannyAPIStruct *)r;
+}
+#endif /* CYTHON_REFNANNY */
+
+static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_hid_t(hid_t val) {
+    const hid_t neg_one = (hid_t)-1, const_zero = (hid_t)0;
+    const int is_unsigned = const_zero < neg_one;
+    if ((sizeof(hid_t) == sizeof(char))  ||
+        (sizeof(hid_t) == sizeof(short))) {
+        return PyInt_FromLong((long)val);
+    } else if ((sizeof(hid_t) == sizeof(int)) ||
+               (sizeof(hid_t) == sizeof(long))) {
+        if (is_unsigned)
+            return PyLong_FromUnsignedLong((unsigned long)val);
+        else
+            return PyInt_FromLong((long)val);
+    } else if (sizeof(hid_t) == sizeof(PY_LONG_LONG)) {
+        if (is_unsigned)
+            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG)val);
+        else
+            return PyLong_FromLongLong((PY_LONG_LONG)val);
+    } else {
+        int one = 1; int little = (int)*(unsigned char *)&one;
+        unsigned char *bytes = (unsigned char *)&val;
+        return _PyLong_FromByteArray(bytes, sizeof(hid_t),
+                                     little, !is_unsigned);
+    }
+}
+
+static CYTHON_INLINE unsigned char __Pyx_PyInt_AsUnsignedChar(PyObject* x) {
+    const unsigned char neg_one = (unsigned char)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(unsigned char) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(unsigned char)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to unsigned char" :
+                    "value too large to convert to unsigned char");
+            }
+            return (unsigned char)-1;
+        }
+        return (unsigned char)val;
+    }
+    return (unsigned char)__Pyx_PyInt_AsUnsignedLong(x);
+}
+
+static CYTHON_INLINE unsigned short __Pyx_PyInt_AsUnsignedShort(PyObject* x) {
+    const unsigned short neg_one = (unsigned short)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(unsigned short) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(unsigned short)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to unsigned short" :
+                    "value too large to convert to unsigned short");
+            }
+            return (unsigned short)-1;
+        }
+        return (unsigned short)val;
+    }
+    return (unsigned short)__Pyx_PyInt_AsUnsignedLong(x);
+}
+
+static CYTHON_INLINE unsigned int __Pyx_PyInt_AsUnsignedInt(PyObject* x) {
+    const unsigned int neg_one = (unsigned int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(unsigned int) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(unsigned int)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to unsigned int" :
+                    "value too large to convert to unsigned int");
+            }
+            return (unsigned int)-1;
+        }
+        return (unsigned int)val;
+    }
+    return (unsigned int)__Pyx_PyInt_AsUnsignedLong(x);
+}
+
+static CYTHON_INLINE char __Pyx_PyInt_AsChar(PyObject* x) {
+    const char neg_one = (char)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(char) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(char)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to char" :
+                    "value too large to convert to char");
+            }
+            return (char)-1;
+        }
+        return (char)val;
+    }
+    return (char)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE short __Pyx_PyInt_AsShort(PyObject* x) {
+    const short neg_one = (short)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(short) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(short)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to short" :
+                    "value too large to convert to short");
+            }
+            return (short)-1;
+        }
+        return (short)val;
+    }
+    return (short)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE int __Pyx_PyInt_AsInt(PyObject* x) {
+    const int neg_one = (int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(int) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(int)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to int" :
+                    "value too large to convert to int");
+            }
+            return (int)-1;
+        }
+        return (int)val;
+    }
+    return (int)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE signed char __Pyx_PyInt_AsSignedChar(PyObject* x) {
+    const signed char neg_one = (signed char)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(signed char) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(signed char)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to signed char" :
+                    "value too large to convert to signed char");
+            }
+            return (signed char)-1;
+        }
+        return (signed char)val;
+    }
+    return (signed char)__Pyx_PyInt_AsSignedLong(x);
+}
+
+static CYTHON_INLINE signed short __Pyx_PyInt_AsSignedShort(PyObject* x) {
+    const signed short neg_one = (signed short)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(signed short) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(signed short)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to signed short" :
+                    "value too large to convert to signed short");
+            }
+            return (signed short)-1;
+        }
+        return (signed short)val;
+    }
+    return (signed short)__Pyx_PyInt_AsSignedLong(x);
+}
+
+static CYTHON_INLINE signed int __Pyx_PyInt_AsSignedInt(PyObject* x) {
+    const signed int neg_one = (signed int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(signed int) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(signed int)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to signed int" :
+                    "value too large to convert to signed int");
+            }
+            return (signed int)-1;
+        }
+        return (signed int)val;
+    }
+    return (signed int)__Pyx_PyInt_AsSignedLong(x);
+}
+
+static CYTHON_INLINE int __Pyx_PyInt_AsLongDouble(PyObject* x) {
+    const int neg_one = (int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(int) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(int)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to int" :
+                    "value too large to convert to int");
+            }
+            return (int)-1;
+        }
+        return (int)val;
+    }
+    return (int)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE unsigned long __Pyx_PyInt_AsUnsignedLong(PyObject* x) {
+    const unsigned long neg_one = (unsigned long)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to unsigned long");
+            return (unsigned long)-1;
+        }
+        return (unsigned long)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to unsigned long");
+                return (unsigned long)-1;
+            }
+            return (unsigned long)PyLong_AsUnsignedLong(x);
+        } else {
+            return (unsigned long)PyLong_AsLong(x);
+        }
+    } else {
+        unsigned long val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (unsigned long)-1;
+        val = __Pyx_PyInt_AsUnsignedLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE unsigned PY_LONG_LONG __Pyx_PyInt_AsUnsignedLongLong(PyObject* x) {
+    const unsigned PY_LONG_LONG neg_one = (unsigned PY_LONG_LONG)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to unsigned PY_LONG_LONG");
+            return (unsigned PY_LONG_LONG)-1;
+        }
+        return (unsigned PY_LONG_LONG)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to unsigned PY_LONG_LONG");
+                return (unsigned PY_LONG_LONG)-1;
+            }
+            return (unsigned PY_LONG_LONG)PyLong_AsUnsignedLongLong(x);
+        } else {
+            return (unsigned PY_LONG_LONG)PyLong_AsLongLong(x);
+        }
+    } else {
+        unsigned PY_LONG_LONG val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (unsigned PY_LONG_LONG)-1;
+        val = __Pyx_PyInt_AsUnsignedLongLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE long __Pyx_PyInt_AsLong(PyObject* x) {
+    const long neg_one = (long)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to long");
+            return (long)-1;
+        }
+        return (long)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to long");
+                return (long)-1;
+            }
+            return (long)PyLong_AsUnsignedLong(x);
+        } else {
+            return (long)PyLong_AsLong(x);
+        }
+    } else {
+        long val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (long)-1;
+        val = __Pyx_PyInt_AsLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE PY_LONG_LONG __Pyx_PyInt_AsLongLong(PyObject* x) {
+    const PY_LONG_LONG neg_one = (PY_LONG_LONG)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to PY_LONG_LONG");
+            return (PY_LONG_LONG)-1;
+        }
+        return (PY_LONG_LONG)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to PY_LONG_LONG");
+                return (PY_LONG_LONG)-1;
+            }
+            return (PY_LONG_LONG)PyLong_AsUnsignedLongLong(x);
+        } else {
+            return (PY_LONG_LONG)PyLong_AsLongLong(x);
+        }
+    } else {
+        PY_LONG_LONG val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (PY_LONG_LONG)-1;
+        val = __Pyx_PyInt_AsLongLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE signed long __Pyx_PyInt_AsSignedLong(PyObject* x) {
+    const signed long neg_one = (signed long)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to signed long");
+            return (signed long)-1;
+        }
+        return (signed long)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to signed long");
+                return (signed long)-1;
+            }
+            return (signed long)PyLong_AsUnsignedLong(x);
+        } else {
+            return (signed long)PyLong_AsLong(x);
+        }
+    } else {
+        signed long val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (signed long)-1;
+        val = __Pyx_PyInt_AsSignedLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE signed PY_LONG_LONG __Pyx_PyInt_AsSignedLongLong(PyObject* x) {
+    const signed PY_LONG_LONG neg_one = (signed PY_LONG_LONG)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to signed PY_LONG_LONG");
+            return (signed PY_LONG_LONG)-1;
+        }
+        return (signed PY_LONG_LONG)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to signed PY_LONG_LONG");
+                return (signed PY_LONG_LONG)-1;
+            }
+            return (signed PY_LONG_LONG)PyLong_AsUnsignedLongLong(x);
+        } else {
+            return (signed PY_LONG_LONG)PyLong_AsLongLong(x);
+        }
+    } else {
+        signed PY_LONG_LONG val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (signed PY_LONG_LONG)-1;
+        val = __Pyx_PyInt_AsSignedLongLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static int __Pyx_check_binary_version(void) {
+    char ctversion[4], rtversion[4];
+    PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION);
+    PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion());
+    if (ctversion[0] != rtversion[0] || ctversion[2] != rtversion[2]) {
+        char message[200];
+        PyOS_snprintf(message, sizeof(message),
+                      "compiletime version %s of module '%.100s' "
+                      "does not match runtime version %s",
+                      ctversion, __Pyx_MODULE_NAME, rtversion);
+        #if PY_VERSION_HEX < 0x02050000
+        return PyErr_Warn(NULL, message);
+        #else
+        return PyErr_WarnEx(NULL, message, 1);
+        #endif
+    }
+    return 0;
+}
+
+static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) {
+    int start = 0, mid = 0, end = count - 1;
+    if (end >= 0 && code_line > entries[end].code_line) {
+        return count;
+    }
+    while (start < end) {
+        mid = (start + end) / 2;
+        if (code_line < entries[mid].code_line) {
+            end = mid;
+        } else if (code_line > entries[mid].code_line) {
+             start = mid + 1;
+        } else {
+            return mid;
+        }
+    }
+    if (code_line <= entries[mid].code_line) {
+        return mid;
+    } else {
+        return mid + 1;
+    }
+}
+static PyCodeObject *__pyx_find_code_object(int code_line) {
+    PyCodeObject* code_object;
+    int pos;
+    if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) {
+        return NULL;
+    }
+    pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
+    if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) {
+        return NULL;
+    }
+    code_object = __pyx_code_cache.entries[pos].code_object;
+    Py_INCREF(code_object);
+    return code_object;
+}
+static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) {
+    int pos, i;
+    __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries;
+    if (unlikely(!code_line)) {
+        return;
+    }
+    if (unlikely(!entries)) {
+        entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry));
+        if (likely(entries)) {
+            __pyx_code_cache.entries = entries;
+            __pyx_code_cache.max_count = 64;
+            __pyx_code_cache.count = 1;
+            entries[0].code_line = code_line;
+            entries[0].code_object = code_object;
+            Py_INCREF(code_object);
+        }
+        return;
+    }
+    pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
+    if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) {
+        PyCodeObject* tmp = entries[pos].code_object;
+        entries[pos].code_object = code_object;
+        Py_DECREF(tmp);
+        return;
+    }
+    if (__pyx_code_cache.count == __pyx_code_cache.max_count) {
+        int new_max = __pyx_code_cache.max_count + 64;
+        entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc(
+            __pyx_code_cache.entries, new_max*sizeof(__Pyx_CodeObjectCacheEntry));
+        if (unlikely(!entries)) {
+            return;
+        }
+        __pyx_code_cache.entries = entries;
+        __pyx_code_cache.max_count = new_max;
+    }
+    for (i=__pyx_code_cache.count; i>pos; i--) {
+        entries[i] = entries[i-1];
+    }
+    entries[pos].code_line = code_line;
+    entries[pos].code_object = code_object;
+    __pyx_code_cache.count++;
+    Py_INCREF(code_object);
+}
+
+#include "compile.h"
+#include "frameobject.h"
+#include "traceback.h"
+static PyCodeObject* __Pyx_CreateCodeObjectForTraceback(
+            const char *funcname, int c_line,
+            int py_line, const char *filename) {
+    PyCodeObject *py_code = 0;
+    PyObject *py_srcfile = 0;
+    PyObject *py_funcname = 0;
+    #if PY_MAJOR_VERSION < 3
+    py_srcfile = PyString_FromString(filename);
+    #else
+    py_srcfile = PyUnicode_FromString(filename);
+    #endif
+    if (!py_srcfile) goto bad;
+    if (c_line) {
+        #if PY_MAJOR_VERSION < 3
+        py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
+        #else
+        py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
+        #endif
+    }
+    else {
+        #if PY_MAJOR_VERSION < 3
+        py_funcname = PyString_FromString(funcname);
+        #else
+        py_funcname = PyUnicode_FromString(funcname);
+        #endif
+    }
+    if (!py_funcname) goto bad;
+    py_code = __Pyx_PyCode_New(
+        0,            /*int argcount,*/
+        0,            /*int kwonlyargcount,*/
+        0,            /*int nlocals,*/
+        0,            /*int stacksize,*/
+        0,            /*int flags,*/
+        __pyx_empty_bytes, /*PyObject *code,*/
+        __pyx_empty_tuple, /*PyObject *consts,*/
+        __pyx_empty_tuple, /*PyObject *names,*/
+        __pyx_empty_tuple, /*PyObject *varnames,*/
+        __pyx_empty_tuple, /*PyObject *freevars,*/
+        __pyx_empty_tuple, /*PyObject *cellvars,*/
+        py_srcfile,   /*PyObject *filename,*/
+        py_funcname,  /*PyObject *name,*/
+        py_line,      /*int firstlineno,*/
+        __pyx_empty_bytes  /*PyObject *lnotab*/
+    );
+    Py_DECREF(py_srcfile);
+    Py_DECREF(py_funcname);
+    return py_code;
+bad:
+    Py_XDECREF(py_srcfile);
+    Py_XDECREF(py_funcname);
+    return NULL;
+}
+static void __Pyx_AddTraceback(const char *funcname, int c_line,
+                               int py_line, const char *filename) {
+    PyCodeObject *py_code = 0;
+    PyObject *py_globals = 0;
+    PyFrameObject *py_frame = 0;
+    py_code = __pyx_find_code_object(c_line ? c_line : py_line);
+    if (!py_code) {
+        py_code = __Pyx_CreateCodeObjectForTraceback(
+            funcname, c_line, py_line, filename);
+        if (!py_code) goto bad;
+        __pyx_insert_code_object(c_line ? c_line : py_line, py_code);
+    }
+    py_globals = PyModule_GetDict(__pyx_m);
+    if (!py_globals) goto bad;
+    py_frame = PyFrame_New(
+        PyThreadState_GET(), /*PyThreadState *tstate,*/
+        py_code,             /*PyCodeObject *code,*/
+        py_globals,          /*PyObject *globals,*/
+        0                    /*PyObject *locals*/
+    );
+    if (!py_frame) goto bad;
+    py_frame->f_lineno = py_line;
+    PyTraceBack_Here(py_frame);
+bad:
+    Py_XDECREF(py_code);
+    Py_XDECREF(py_frame);
+}
+
+static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
+    while (t->p) {
+        #if PY_MAJOR_VERSION < 3
+        if (t->is_unicode) {
+            *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL);
+        } else if (t->intern) {
+            *t->p = PyString_InternFromString(t->s);
+        } else {
+            *t->p = PyString_FromStringAndSize(t->s, t->n - 1);
+        }
+        #else  /* Python 3+ has unicode identifiers */
+        if (t->is_unicode | t->is_str) {
+            if (t->intern) {
+                *t->p = PyUnicode_InternFromString(t->s);
+            } else if (t->encoding) {
+                *t->p = PyUnicode_Decode(t->s, t->n - 1, t->encoding, NULL);
+            } else {
+                *t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1);
+            }
+        } else {
+            *t->p = PyBytes_FromStringAndSize(t->s, t->n - 1);
+        }
+        #endif
+        if (!*t->p)
+            return -1;
+        ++t;
+    }
+    return 0;
+}
+
+static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) {
+   int is_true = x == Py_True;
+   if (is_true | (x == Py_False) | (x == Py_None)) return is_true;
+   else return PyObject_IsTrue(x);
+}
+static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x) {
+  PyNumberMethods *m;
+  const char *name = NULL;
+  PyObject *res = NULL;
+#if PY_VERSION_HEX < 0x03000000
+  if (PyInt_Check(x) || PyLong_Check(x))
+#else
+  if (PyLong_Check(x))
+#endif
+    return Py_INCREF(x), x;
+  m = Py_TYPE(x)->tp_as_number;
+#if PY_VERSION_HEX < 0x03000000
+  if (m && m->nb_int) {
+    name = "int";
+    res = PyNumber_Int(x);
+  }
+  else if (m && m->nb_long) {
+    name = "long";
+    res = PyNumber_Long(x);
+  }
+#else
+  if (m && m->nb_int) {
+    name = "int";
+    res = PyNumber_Long(x);
+  }
+#endif
+  if (res) {
+#if PY_VERSION_HEX < 0x03000000
+    if (!PyInt_Check(res) && !PyLong_Check(res)) {
+#else
+    if (!PyLong_Check(res)) {
+#endif
+      PyErr_Format(PyExc_TypeError,
+                   "__%s__ returned non-%s (type %.200s)",
+                   name, name, Py_TYPE(res)->tp_name);
+      Py_DECREF(res);
+      return NULL;
+    }
+  }
+  else if (!PyErr_Occurred()) {
+    PyErr_SetString(PyExc_TypeError,
+                    "an integer is required");
+  }
+  return res;
+}
+static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
+  Py_ssize_t ival;
+  PyObject* x = PyNumber_Index(b);
+  if (!x) return -1;
+  ival = PyInt_AsSsize_t(x);
+  Py_DECREF(x);
+  return ival;
+}
+static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) {
+#if PY_VERSION_HEX < 0x02050000
+   if (ival <= LONG_MAX)
+       return PyInt_FromLong((long)ival);
+   else {
+       unsigned char *bytes = (unsigned char *) &ival;
+       int one = 1; int little = (int)*(unsigned char*)&one;
+       return _PyLong_FromByteArray(bytes, sizeof(size_t), little, 0);
+   }
+#else
+   return PyInt_FromSize_t(ival);
+#endif
+}
+static CYTHON_INLINE size_t __Pyx_PyInt_AsSize_t(PyObject* x) {
+   unsigned PY_LONG_LONG val = __Pyx_PyInt_AsUnsignedLongLong(x);
+   if (unlikely(val == (unsigned PY_LONG_LONG)-1 && PyErr_Occurred())) {
+       return (size_t)-1;
+   } else if (unlikely(val != (unsigned PY_LONG_LONG)(size_t)val)) {
+       PyErr_SetString(PyExc_OverflowError,
+                       "value too large to convert to size_t");
+       return (size_t)-1;
+   }
+   return (size_t)val;
+}
+
+
+#endif /* Py_PYTHON_H */
diff --git a/h5py/h5fd.pxd b/h5py/h5fd.pxd
new file mode 100644
index 0000000..75a1668
--- /dev/null
+++ b/h5py/h5fd.pxd
@@ -0,0 +1,73 @@
+# This file is part of h5py, a Python interface to the HDF5 library.
+#
+# http://www.h5py.org
+#
+# Copyright 2008-2013 Andrew Collette and contributors
+#
+# License:  Standard 3-clause BSD; see "license.txt" for full license terms
+#           and contributor agreement.
+
+# This file contains code or comments from the HDF5 library.  See the file
+# licenses/hdf5.txt for the full HDF5 software license.
+
+from defs cimport *
+
+cdef extern from "hdf5.h":
+
+  ctypedef enum H5FD_mem_t:
+    H5FD_MEM_NOLIST	= -1,
+    H5FD_MEM_DEFAULT	= 0,
+    H5FD_MEM_SUPER      = 1,
+    H5FD_MEM_BTREE      = 2,
+    H5FD_MEM_DRAW       = 3,
+    H5FD_MEM_GHEAP      = 4,
+    H5FD_MEM_LHEAP      = 5,
+    H5FD_MEM_OHDR       = 6,
+    H5FD_MEM_NTYPES
+
+  # HDF5 uses a clever scheme wherein these are actually init() calls
+  # Hopefully Pyrex won't have a problem with this.
+  # Thankfully they are defined but -1 if unavailable
+  hid_t H5FD_CORE
+  hid_t H5FD_FAMILY
+# hid_t H5FD_GASS  not in 1.8.X
+  hid_t H5FD_LOG
+  hid_t H5FD_MPIO
+  hid_t H5FD_MPIPOSIX
+  hid_t H5FD_MULTI
+  hid_t H5FD_SEC2
+  hid_t H5FD_STDIO
+  IF UNAME_SYSNAME == "Windows":
+    hid_t H5FD_WINDOWS
+
+  int H5FD_LOG_LOC_READ   # 0x0001
+  int H5FD_LOG_LOC_WRITE  # 0x0002
+  int H5FD_LOG_LOC_SEEK   # 0x0004
+  int H5FD_LOG_LOC_IO     # (H5FD_LOG_LOC_READ|H5FD_LOG_LOC_WRITE|H5FD_LOG_LOC_SEEK)
+
+  # /* Flags for tracking number of times each byte is read/written */
+  int H5FD_LOG_FILE_READ  # 0x0008
+  int H5FD_LOG_FILE_WRITE # 0x0010
+  int H5FD_LOG_FILE_IO    # (H5FD_LOG_FILE_READ|H5FD_LOG_FILE_WRITE)
+
+  # /* Flag for tracking "flavor" (type) of information stored at each byte */
+  int H5FD_LOG_FLAVOR     # 0x0020
+
+  # /* Flags for tracking total number of reads/writes/seeks */
+  int H5FD_LOG_NUM_READ   # 0x0040
+  int H5FD_LOG_NUM_WRITE  # 0x0080
+  int H5FD_LOG_NUM_SEEK   # 0x0100
+  int H5FD_LOG_NUM_IO     # (H5FD_LOG_NUM_READ|H5FD_LOG_NUM_WRITE|H5FD_LOG_NUM_SEEK)
+
+  # /* Flags for tracking time spent in open/read/write/seek/close */
+  int H5FD_LOG_TIME_OPEN  # 0x0200        # /* Not implemented yet */
+  int H5FD_LOG_TIME_READ  # 0x0400        # /* Not implemented yet */
+  int H5FD_LOG_TIME_WRITE # 0x0800        # /* Partially implemented (need to track total time) */
+  int H5FD_LOG_TIME_SEEK  # 0x1000        # /* Partially implemented (need to track total time & track time for seeks during reading) */
+  int H5FD_LOG_TIME_CLOSE # 0x2000        # /* Fully implemented */
+  int H5FD_LOG_TIME_IO    # (H5FD_LOG_TIME_OPEN|H5FD_LOG_TIME_READ|H5FD_LOG_TIME_WRITE|H5FD_LOG_TIME_SEEK|H5FD_LOG_TIME_CLOSE)
+
+  # /* Flag for tracking allocation of space in file */
+  int H5FD_LOG_ALLOC      # 0x4000
+  int H5FD_LOG_ALL        # (H5FD_LOG_ALLOC|H5FD_LOG_TIME_IO|H5FD_LOG_NUM_IO|H5FD_LOG_FLAVOR|H5FD_LOG_FILE_IO|H5FD_LOG_LOC_IO)
+
diff --git a/h5py/h5fd.pyx b/h5py/h5fd.pyx
new file mode 100644
index 0000000..8e69af8
--- /dev/null
+++ b/h5py/h5fd.pyx
@@ -0,0 +1,75 @@
+# This file is part of h5py, a Python interface to the HDF5 library.
+#
+# http://www.h5py.org
+#
+# Copyright 2008-2013 Andrew Collette and contributors
+#
+# License:  Standard 3-clause BSD; see "license.txt" for full license terms
+#           and contributor agreement.
+
+# This file contains code or comments from the HDF5 library.  See the file
+# licenses/hdf5.txt for the full HDF5 software license.
+
+"""
+    File driver constants (H5FD*).
+"""
+
+# === Multi-file driver =======================================================
+
+MEM_DEFAULT = H5FD_MEM_DEFAULT
+MEM_SUPER = H5FD_MEM_SUPER
+MEM_BTREE = H5FD_MEM_BTREE
+MEM_DRAW = H5FD_MEM_DRAW
+MEM_GHEAP = H5FD_MEM_GHEAP
+MEM_LHEAP = H5FD_MEM_LHEAP
+MEM_OHDR = H5FD_MEM_OHDR
+MEM_NTYPES = H5FD_MEM_NTYPES
+
+# === Driver types ============================================================
+
+CORE = H5FD_CORE
+FAMILY = H5FD_FAMILY
+LOG = H5FD_LOG
+MPIO = H5FD_MPIO
+MPIPOSIX = H5FD_MPIPOSIX
+MULTI = H5FD_MULTI
+SEC2 = H5FD_SEC2
+STDIO = H5FD_STDIO
+IF UNAME_SYSNAME == "Windows":
+    WINDOWS = H5FD_WINDOWS
+ELSE:
+    WINDOWS = -1
+
+# === Logging driver ==========================================================
+
+LOG_LOC_READ  = H5FD_LOG_LOC_READ   # 0x0001
+LOG_LOC_WRITE = H5FD_LOG_LOC_WRITE  # 0x0002
+LOG_LOC_SEEK  = H5FD_LOG_LOC_SEEK   # 0x0004
+LOG_LOC_IO    = H5FD_LOG_LOC_IO     # (H5FD_LOG_LOC_READ|H5FD_LOG_LOC_WRITE|H5FD_LOG_LOC_SEEK)
+
+# Flags for tracking number of times each byte is read/written 
+LOG_FILE_READ = H5FD_LOG_FILE_READ  # 0x0008
+LOG_FILE_WRITE= H5FD_LOG_FILE_WRITE # 0x0010
+LOG_FILE_IO   = H5FD_LOG_FILE_IO    # (H5FD_LOG_FILE_READ|H5FD_LOG_FILE_WRITE)
+
+# Flag for tracking "flavor" (type) of information stored at each byte 
+LOG_FLAVOR    = H5FD_LOG_FLAVOR     # 0x0020
+
+# Flags for tracking total number of reads/writes/seeks 
+LOG_NUM_READ  = H5FD_LOG_NUM_READ   # 0x0040
+LOG_NUM_WRITE = H5FD_LOG_NUM_WRITE  # 0x0080
+LOG_NUM_SEEK  = H5FD_LOG_NUM_SEEK   # 0x0100
+LOG_NUM_IO    = H5FD_LOG_NUM_IO     # (H5FD_LOG_NUM_READ|H5FD_LOG_NUM_WRITE|H5FD_LOG_NUM_SEEK)
+
+# Flags for tracking time spent in open/read/write/seek/close 
+LOG_TIME_OPEN = H5FD_LOG_TIME_OPEN  # 0x0200        # Not implemented yet 
+LOG_TIME_READ = H5FD_LOG_TIME_READ  # 0x0400        # Not implemented yet 
+LOG_TIME_WRITE= H5FD_LOG_TIME_WRITE # 0x0800        # Partially implemented (need to track total time) 
+LOG_TIME_SEEK = H5FD_LOG_TIME_SEEK  # 0x1000        # Partially implemented (need to track total time & track time for seeks during reading) 
+LOG_TIME_CLOSE= H5FD_LOG_TIME_CLOSE # 0x2000        # Fully implemented 
+LOG_TIME_IO   = H5FD_LOG_TIME_IO    # (H5FD_LOG_TIME_OPEN|H5FD_LOG_TIME_READ|H5FD_LOG_TIME_WRITE|H5FD_LOG_TIME_SEEK|H5FD_LOG_TIME_CLOSE)
+
+# Flag for tracking allocation of space in file 
+LOG_ALLOC     = H5FD_LOG_ALLOC      # 0x4000
+LOG_ALL       = H5FD_LOG_ALL        # (H5FD_LOG_ALLOC|H5FD_LOG_TIME_IO|H5FD_LOG_NUM_IO|H5FD_LOG_FLAVOR|H5FD_LOG_FILE_IO|H5FD_LOG_LOC_IO)
+
diff --git a/h5py/h5g.c b/h5py/h5g.c
new file mode 100644
index 0000000..03d5fcc
--- /dev/null
+++ b/h5py/h5g.c
@@ -0,0 +1,7629 @@
+/* Generated by Cython 0.18 on Mon Dec  9 16:00:33 2013 */
+
+#define PY_SSIZE_T_CLEAN
+#include "Python.h"
+#ifndef Py_PYTHON_H
+    #error Python headers needed to compile C extensions, please install development version of Python.
+#elif PY_VERSION_HEX < 0x02040000
+    #error Cython requires Python 2.4+.
+#else
+#include <stddef.h> /* For offsetof */
+#ifndef offsetof
+#define offsetof(type, member) ( (size_t) & ((type*)0) -> member )
+#endif
+#if !defined(WIN32) && !defined(MS_WINDOWS)
+  #ifndef __stdcall
+    #define __stdcall
+  #endif
+  #ifndef __cdecl
+    #define __cdecl
+  #endif
+  #ifndef __fastcall
+    #define __fastcall
+  #endif
+#endif
+#ifndef DL_IMPORT
+  #define DL_IMPORT(t) t
+#endif
+#ifndef DL_EXPORT
+  #define DL_EXPORT(t) t
+#endif
+#ifndef PY_LONG_LONG
+  #define PY_LONG_LONG LONG_LONG
+#endif
+#ifndef Py_HUGE_VAL
+  #define Py_HUGE_VAL HUGE_VAL
+#endif
+#ifdef PYPY_VERSION
+#define CYTHON_COMPILING_IN_PYPY 1
+#define CYTHON_COMPILING_IN_CPYTHON 0
+#else
+#define CYTHON_COMPILING_IN_PYPY 0
+#define CYTHON_COMPILING_IN_CPYTHON 1
+#endif
+#if PY_VERSION_HEX < 0x02050000
+  typedef int Py_ssize_t;
+  #define PY_SSIZE_T_MAX INT_MAX
+  #define PY_SSIZE_T_MIN INT_MIN
+  #define PY_FORMAT_SIZE_T ""
+  #define CYTHON_FORMAT_SSIZE_T ""
+  #define PyInt_FromSsize_t(z) PyInt_FromLong(z)
+  #define PyInt_AsSsize_t(o)   __Pyx_PyInt_AsInt(o)
+  #define PyNumber_Index(o)    ((PyNumber_Check(o) && !PyFloat_Check(o)) ? PyNumber_Int(o) : \
+                                (PyErr_Format(PyExc_TypeError, \
+                                              "expected index value, got %.200s", Py_TYPE(o)->tp_name), \
+                                 (PyObject*)0))
+  #define __Pyx_PyIndex_Check(o) (PyNumber_Check(o) && !PyFloat_Check(o) && \
+                                  !PyComplex_Check(o))
+  #define PyIndex_Check __Pyx_PyIndex_Check
+  #define PyErr_WarnEx(category, message, stacklevel) PyErr_Warn(category, message)
+  #define __PYX_BUILD_PY_SSIZE_T "i"
+#else
+  #define __PYX_BUILD_PY_SSIZE_T "n"
+  #define CYTHON_FORMAT_SSIZE_T "z"
+  #define __Pyx_PyIndex_Check PyIndex_Check
+#endif
+#if PY_VERSION_HEX < 0x02060000
+  #define Py_REFCNT(ob) (((PyObject*)(ob))->ob_refcnt)
+  #define Py_TYPE(ob)   (((PyObject*)(ob))->ob_type)
+  #define Py_SIZE(ob)   (((PyVarObject*)(ob))->ob_size)
+  #define PyVarObject_HEAD_INIT(type, size) \
+          PyObject_HEAD_INIT(type) size,
+  #define PyType_Modified(t)
+  typedef struct {
+     void *buf;
+     PyObject *obj;
+     Py_ssize_t len;
+     Py_ssize_t itemsize;
+     int readonly;
+     int ndim;
+     char *format;
+     Py_ssize_t *shape;
+     Py_ssize_t *strides;
+     Py_ssize_t *suboffsets;
+     void *internal;
+  } Py_buffer;
+  #define PyBUF_SIMPLE 0
+  #define PyBUF_WRITABLE 0x0001
+  #define PyBUF_FORMAT 0x0004
+  #define PyBUF_ND 0x0008
+  #define PyBUF_STRIDES (0x0010 | PyBUF_ND)
+  #define PyBUF_C_CONTIGUOUS (0x0020 | PyBUF_STRIDES)
+  #define PyBUF_F_CONTIGUOUS (0x0040 | PyBUF_STRIDES)
+  #define PyBUF_ANY_CONTIGUOUS (0x0080 | PyBUF_STRIDES)
+  #define PyBUF_INDIRECT (0x0100 | PyBUF_STRIDES)
+  #define PyBUF_RECORDS (PyBUF_STRIDES | PyBUF_FORMAT | PyBUF_WRITABLE)
+  #define PyBUF_FULL (PyBUF_INDIRECT | PyBUF_FORMAT | PyBUF_WRITABLE)
+  typedef int (*getbufferproc)(PyObject *, Py_buffer *, int);
+  typedef void (*releasebufferproc)(PyObject *, Py_buffer *);
+#endif
+#if PY_MAJOR_VERSION < 3
+  #define __Pyx_BUILTIN_MODULE_NAME "__builtin__"
+  #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) \
+          PyCode_New(a, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
+#else
+  #define __Pyx_BUILTIN_MODULE_NAME "builtins"
+  #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) \
+          PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
+#endif
+#if PY_MAJOR_VERSION < 3 && PY_MINOR_VERSION < 6
+  #define PyUnicode_FromString(s) PyUnicode_Decode(s, strlen(s), "UTF-8", "strict")
+#endif
+#if PY_MAJOR_VERSION >= 3
+  #define Py_TPFLAGS_CHECKTYPES 0
+  #define Py_TPFLAGS_HAVE_INDEX 0
+#endif
+#if (PY_VERSION_HEX < 0x02060000) || (PY_MAJOR_VERSION >= 3)
+  #define Py_TPFLAGS_HAVE_NEWBUFFER 0
+#endif
+#if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND)
+  #define CYTHON_PEP393_ENABLED 1
+  #define __Pyx_PyUnicode_READY(op)       (likely(PyUnicode_IS_READY(op)) ? \
+                                              0 : _PyUnicode_Ready((PyObject *)(op)))
+  #define __Pyx_PyUnicode_GET_LENGTH(u)   PyUnicode_GET_LENGTH(u)
+  #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i)
+  #define __Pyx_PyUnicode_READ(k, d, i)   PyUnicode_READ(k, d, i)
+#else
+  #define CYTHON_PEP393_ENABLED 0
+  #define __Pyx_PyUnicode_READY(op)       (0)
+  #define __Pyx_PyUnicode_GET_LENGTH(u)   PyUnicode_GET_SIZE(u)
+  #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i]))
+  #define __Pyx_PyUnicode_READ(k, d, i)   ((k=k), (Py_UCS4)(((Py_UNICODE*)d)[i]))
+#endif
+#if PY_MAJOR_VERSION >= 3
+  #define PyBaseString_Type            PyUnicode_Type
+  #define PyStringObject               PyUnicodeObject
+  #define PyString_Type                PyUnicode_Type
+  #define PyString_Check               PyUnicode_Check
+  #define PyString_CheckExact          PyUnicode_CheckExact
+#endif
+#if PY_VERSION_HEX < 0x02060000
+  #define PyBytesObject                PyStringObject
+  #define PyBytes_Type                 PyString_Type
+  #define PyBytes_Check                PyString_Check
+  #define PyBytes_CheckExact           PyString_CheckExact
+  #define PyBytes_FromString           PyString_FromString
+  #define PyBytes_FromStringAndSize    PyString_FromStringAndSize
+  #define PyBytes_FromFormat           PyString_FromFormat
+  #define PyBytes_DecodeEscape         PyString_DecodeEscape
+  #define PyBytes_AsString             PyString_AsString
+  #define PyBytes_AsStringAndSize      PyString_AsStringAndSize
+  #define PyBytes_Size                 PyString_Size
+  #define PyBytes_AS_STRING            PyString_AS_STRING
+  #define PyBytes_GET_SIZE             PyString_GET_SIZE
+  #define PyBytes_Repr                 PyString_Repr
+  #define PyBytes_Concat               PyString_Concat
+  #define PyBytes_ConcatAndDel         PyString_ConcatAndDel
+#endif
+#if PY_VERSION_HEX < 0x02060000
+  #define PySet_Check(obj)             PyObject_TypeCheck(obj, &PySet_Type)
+  #define PyFrozenSet_Check(obj)       PyObject_TypeCheck(obj, &PyFrozenSet_Type)
+#endif
+#ifndef PySet_CheckExact
+  #define PySet_CheckExact(obj)        (Py_TYPE(obj) == &PySet_Type)
+#endif
+#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type)
+#if PY_MAJOR_VERSION >= 3
+  #define PyIntObject                  PyLongObject
+  #define PyInt_Type                   PyLong_Type
+  #define PyInt_Check(op)              PyLong_Check(op)
+  #define PyInt_CheckExact(op)         PyLong_CheckExact(op)
+  #define PyInt_FromString             PyLong_FromString
+  #define PyInt_FromUnicode            PyLong_FromUnicode
+  #define PyInt_FromLong               PyLong_FromLong
+  #define PyInt_FromSize_t             PyLong_FromSize_t
+  #define PyInt_FromSsize_t            PyLong_FromSsize_t
+  #define PyInt_AsLong                 PyLong_AsLong
+  #define PyInt_AS_LONG                PyLong_AS_LONG
+  #define PyInt_AsSsize_t              PyLong_AsSsize_t
+  #define PyInt_AsUnsignedLongMask     PyLong_AsUnsignedLongMask
+  #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask
+#endif
+#if PY_MAJOR_VERSION >= 3
+  #define PyBoolObject                 PyLongObject
+#endif
+#if PY_VERSION_HEX < 0x03020000
+  typedef long Py_hash_t;
+  #define __Pyx_PyInt_FromHash_t PyInt_FromLong
+  #define __Pyx_PyInt_AsHash_t   PyInt_AsLong
+#else
+  #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t
+  #define __Pyx_PyInt_AsHash_t   PyInt_AsSsize_t
+#endif
+#if (PY_MAJOR_VERSION < 3) || (PY_VERSION_HEX >= 0x03010300)
+  #define __Pyx_PySequence_GetSlice(obj, a, b) PySequence_GetSlice(obj, a, b)
+  #define __Pyx_PySequence_SetSlice(obj, a, b, value) PySequence_SetSlice(obj, a, b, value)
+  #define __Pyx_PySequence_DelSlice(obj, a, b) PySequence_DelSlice(obj, a, b)
+#else
+  #define __Pyx_PySequence_GetSlice(obj, a, b) (unlikely(!(obj)) ? \
+        (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), (PyObject*)0) : \
+        (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_GetSlice(obj, a, b)) : \
+            (PyErr_Format(PyExc_TypeError, "'%.200s' object is unsliceable", (obj)->ob_type->tp_name), (PyObject*)0)))
+  #define __Pyx_PySequence_SetSlice(obj, a, b, value) (unlikely(!(obj)) ? \
+        (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), -1) : \
+        (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_SetSlice(obj, a, b, value)) : \
+            (PyErr_Format(PyExc_TypeError, "'%.200s' object doesn't support slice assignment", (obj)->ob_type->tp_name), -1)))
+  #define __Pyx_PySequence_DelSlice(obj, a, b) (unlikely(!(obj)) ? \
+        (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), -1) : \
+        (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_DelSlice(obj, a, b)) : \
+            (PyErr_Format(PyExc_TypeError, "'%.200s' object doesn't support slice deletion", (obj)->ob_type->tp_name), -1)))
+#endif
+#if PY_MAJOR_VERSION >= 3
+  #define PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, self) : PyInstanceMethod_New(func))
+#endif
+#if PY_VERSION_HEX < 0x02050000
+  #define __Pyx_GetAttrString(o,n)   PyObject_GetAttrString((o),((char *)(n)))
+  #define __Pyx_SetAttrString(o,n,a) PyObject_SetAttrString((o),((char *)(n)),(a))
+  #define __Pyx_DelAttrString(o,n)   PyObject_DelAttrString((o),((char *)(n)))
+#else
+  #define __Pyx_GetAttrString(o,n)   PyObject_GetAttrString((o),(n))
+  #define __Pyx_SetAttrString(o,n,a) PyObject_SetAttrString((o),(n),(a))
+  #define __Pyx_DelAttrString(o,n)   PyObject_DelAttrString((o),(n))
+#endif
+#if PY_VERSION_HEX < 0x02050000
+  #define __Pyx_NAMESTR(n) ((char *)(n))
+  #define __Pyx_DOCSTR(n)  ((char *)(n))
+#else
+  #define __Pyx_NAMESTR(n) (n)
+  #define __Pyx_DOCSTR(n)  (n)
+#endif
+
+
+#if PY_MAJOR_VERSION >= 3
+  #define __Pyx_PyNumber_Divide(x,y)         PyNumber_TrueDivide(x,y)
+  #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceTrueDivide(x,y)
+#else
+  #define __Pyx_PyNumber_Divide(x,y)         PyNumber_Divide(x,y)
+  #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceDivide(x,y)
+#endif
+
+#ifndef __PYX_EXTERN_C
+  #ifdef __cplusplus
+    #define __PYX_EXTERN_C extern "C"
+  #else
+    #define __PYX_EXTERN_C extern
+  #endif
+#endif
+
+#if defined(WIN32) || defined(MS_WINDOWS)
+#define _USE_MATH_DEFINES
+#endif
+#include <math.h>
+#define __PYX_HAVE__h5py__h5g
+#define __PYX_HAVE_API__h5py__h5g
+#include "stdlib.h"
+#include "string.h"
+#include "time.h"
+#include "unistd.h"
+#include "stdint.h"
+#include "api_compat.h"
+#include "lzf_filter.h"
+#include "hdf5.h"
+#include "H5Cpublic.h"
+#include "hdf5_hl.h"
+#include "numpy/arrayobject.h"
+#ifdef _OPENMP
+#include <omp.h>
+#endif /* _OPENMP */
+
+#ifdef PYREX_WITHOUT_ASSERTIONS
+#define CYTHON_WITHOUT_ASSERTIONS
+#endif
+
+#ifndef CYTHON_INLINE
+  #if defined(__GNUC__)
+    #define CYTHON_INLINE __inline__
+  #elif defined(_MSC_VER)
+    #define CYTHON_INLINE __inline
+  #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+    #define CYTHON_INLINE inline
+  #else
+    #define CYTHON_INLINE
+  #endif
+#endif
+#ifndef CYTHON_UNUSED
+# if defined(__GNUC__)
+#   if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
+#     define CYTHON_UNUSED __attribute__ ((__unused__))
+#   else
+#     define CYTHON_UNUSED
+#   endif
+# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER))
+#   define CYTHON_UNUSED __attribute__ ((__unused__))
+# else
+#   define CYTHON_UNUSED
+# endif
+#endif
+typedef struct {PyObject **p; char *s; const long n; const char* encoding; const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; /*proto*/
+
+#define __Pyx_PyBytes_FromUString(s) PyBytes_FromString((char*)s)
+#define __Pyx_PyBytes_AsUString(s)   ((unsigned char*) PyBytes_AsString(s))
+#define __Pyx_Owned_Py_None(b) (Py_INCREF(Py_None), Py_None)
+#define __Pyx_PyBool_FromLong(b) ((b) ? (Py_INCREF(Py_True), Py_True) : (Py_INCREF(Py_False), Py_False))
+static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*);
+static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x);
+static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*);
+static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t);
+static CYTHON_INLINE size_t __Pyx_PyInt_AsSize_t(PyObject*);
+#if CYTHON_COMPILING_IN_CPYTHON
+#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x))
+#else
+#define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x)
+#endif
+#define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x))
+
+
+#ifdef __GNUC__
+  /* Test for GCC > 2.95 */
+  #if __GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))
+    #define likely(x)   __builtin_expect(!!(x), 1)
+    #define unlikely(x) __builtin_expect(!!(x), 0)
+  #else /* __GNUC__ > 2 ... */
+    #define likely(x)   (x)
+    #define unlikely(x) (x)
+  #endif /* __GNUC__ > 2 ... */
+#else /* __GNUC__ */
+  #define likely(x)   (x)
+  #define unlikely(x) (x)
+#endif /* __GNUC__ */
+    
+static PyObject *__pyx_m;
+static PyObject *__pyx_b;
+static PyObject *__pyx_empty_tuple;
+static PyObject *__pyx_empty_bytes;
+static int __pyx_lineno;
+static int __pyx_clineno = 0;
+static const char * __pyx_cfilenm= __FILE__;
+static const char *__pyx_filename;
+
+
+static const char *__pyx_f[] = {
+  "h5g.pyx",
+  "numpy.pxd",
+  "h5p.pxd",
+};
+
+/*--- Type declarations ---*/
+struct __pyx_obj_4h5py_3h5g_GroupIter;
+struct __pyx_obj_4h5py_8_objects_ObjectID;
+struct __pyx_obj_4h5py_3h5p_PropID;
+struct __pyx_obj_4h5py_3h5p_PropInstanceID;
+struct __pyx_obj_4h5py_3h5p_PropCreateID;
+struct __pyx_obj_4h5py_3h5p_PropOCID;
+struct __pyx_obj_4h5py_3h5g_GroupID;
+struct __pyx_obj_4h5py_3h5p_PropFAID;
+struct __pyx_obj_4h5py_3h5p_PropGCID;
+struct __pyx_obj_4h5py_3h5p_PropDXID;
+struct __pyx_obj_4h5py_3h5p_PropDCID;
+struct __pyx_obj_4h5py_3h5p_PropLAID;
+struct __pyx_obj_4h5py_3h5g__GroupVisitor;
+struct __pyx_obj_4h5py_3h5p_PropFCID;
+struct __pyx_obj_4h5py_3h5p_PropClassID;
+struct __pyx_obj_4h5py_3h5p_PropCopyID;
+struct __pyx_obj_4h5py_3h5p_PropLCID;
+struct __pyx_obj_4h5py_3h5g_GroupStat;
+struct __pyx_opt_args_4h5py_5utils_check_numpy_read;
+struct __pyx_opt_args_4h5py_5utils_check_numpy_write;
+
+/* "utils.pxd":17
+ * cdef void efree(void* ptr)
+ * 
+ * cpdef int check_numpy_read(ndarray arr, hid_t space_id=*) except -1             # <<<<<<<<<<<<<<
+ * cpdef int check_numpy_write(ndarray arr, hid_t space_id=*) except -1
+ * 
+ */
+struct __pyx_opt_args_4h5py_5utils_check_numpy_read {
+  int __pyx_n;
+  hid_t space_id;
+};
+
+/* "utils.pxd":18
+ * 
+ * cpdef int check_numpy_read(ndarray arr, hid_t space_id=*) except -1
+ * cpdef int check_numpy_write(ndarray arr, hid_t space_id=*) except -1             # <<<<<<<<<<<<<<
+ * 
+ * cdef int convert_tuple(object tuple, hsize_t *dims, hsize_t rank) except -1
+ */
+struct __pyx_opt_args_4h5py_5utils_check_numpy_write {
+  int __pyx_n;
+  hid_t space_id;
+};
+struct __pyx_t_4h5py_7_errors_err_cookie;
+typedef struct __pyx_t_4h5py_7_errors_err_cookie __pyx_t_4h5py_7_errors_err_cookie;
+
+/* "_errors.pxd":230
+ * # --- Functions for managing the HDF5 error callback mechanism ---
+ * 
+ * ctypedef struct err_cookie:             # <<<<<<<<<<<<<<
+ *     # Defines the error handler state (callback and callback data)
+ *     H5E_auto_t func
+ */
+struct __pyx_t_4h5py_7_errors_err_cookie {
+  H5E_auto_t func;
+  void *data;
+};
+
+/* "h5py/h5g.pyx":79
+ * 
+ * 
+ * cdef class GroupIter:             # <<<<<<<<<<<<<<
+ * 
+ *     """
+ */
+struct __pyx_obj_4h5py_3h5g_GroupIter {
+  PyObject_HEAD
+  unsigned long idx;
+  unsigned long nobjs;
+  struct __pyx_obj_4h5py_3h5g_GroupID *grp;
+  PyObject *names;
+};
+
+
+/* "_objects.pxd":12
+ * from defs cimport *
+ * 
+ * cdef class ObjectID:             # <<<<<<<<<<<<<<
+ * 
+ *     cdef object __weakref__
+ */
+struct __pyx_obj_4h5py_8_objects_ObjectID {
+  PyObject_HEAD
+  PyObject *__weakref__;
+  hid_t id;
+  int locked;
+  PyObject *_hash;
+};
+
+
+/* "h5p.pxd":16
+ * # --- Base classes ---
+ * 
+ * cdef class PropID(ObjectID):             # <<<<<<<<<<<<<<
+ *     """ Base class for all property lists """
+ *     pass
+ */
+struct __pyx_obj_4h5py_3h5p_PropID {
+  struct __pyx_obj_4h5py_8_objects_ObjectID __pyx_base;
+};
+
+
+/* "h5p.pxd":26
+ *     pass
+ * 
+ * cdef class PropInstanceID(PropID):             # <<<<<<<<<<<<<<
+ *     """ Represents an instance of a property list class (i.e. an actual list
+ *         which can be passed on to other API functions).
+ */
+struct __pyx_obj_4h5py_3h5p_PropInstanceID {
+  struct __pyx_obj_4h5py_3h5p_PropID __pyx_base;
+};
+
+
+/* "h5p.pxd":32
+ *     pass
+ * 
+ * cdef class PropCreateID(PropInstanceID):             # <<<<<<<<<<<<<<
+ *     """ Base class for all object creation lists.
+ * 
+ */
+struct __pyx_obj_4h5py_3h5p_PropCreateID {
+  struct __pyx_obj_4h5py_3h5p_PropInstanceID __pyx_base;
+};
+
+
+/* "h5p.pxd":44
+ * # --- Object creation ---
+ * 
+ * cdef class PropOCID(PropCreateID):             # <<<<<<<<<<<<<<
+ *     """ Object creation property list """
+ *     pass
+ */
+struct __pyx_obj_4h5py_3h5p_PropOCID {
+  struct __pyx_obj_4h5py_3h5p_PropCreateID __pyx_base;
+};
+
+
+/* "h5py/h5g.pxd":14
+ * from _objects cimport ObjectID
+ * 
+ * cdef class GroupID(ObjectID):             # <<<<<<<<<<<<<<
+ * 
+ *     cdef readonly object links
+ */
+struct __pyx_obj_4h5py_3h5g_GroupID {
+  struct __pyx_obj_4h5py_8_objects_ObjectID __pyx_base;
+  PyObject *links;
+};
+
+
+/* "h5p.pxd":59
+ * # --- Object access ---
+ * 
+ * cdef class PropFAID(PropInstanceID):             # <<<<<<<<<<<<<<
+ *     """ File access property list """
+ *     pass
+ */
+struct __pyx_obj_4h5py_3h5p_PropFAID {
+  struct __pyx_obj_4h5py_3h5p_PropInstanceID __pyx_base;
+};
+
+
+/* "h5p.pxd":78
+ *     cdef char* _buf
+ * 
+ * cdef class PropGCID(PropOCID):             # <<<<<<<<<<<<<<
+ *     """ Group creation property list """
+ *     pass
+ */
+struct __pyx_obj_4h5py_3h5p_PropGCID {
+  struct __pyx_obj_4h5py_3h5p_PropOCID __pyx_base;
+};
+
+
+/* "h5p.pxd":63
+ *     pass
+ * 
+ * cdef class PropDXID(PropInstanceID):             # <<<<<<<<<<<<<<
+ *     """ Dataset transfer property list """
+ *     pass
+ */
+struct __pyx_obj_4h5py_3h5p_PropDXID {
+  struct __pyx_obj_4h5py_3h5p_PropInstanceID __pyx_base;
+};
+
+
+/* "h5p.pxd":48
+ *     pass
+ * 
+ * cdef class PropDCID(PropOCID):             # <<<<<<<<<<<<<<
+ *     """ Dataset creation property list """
+ *     pass
+ */
+struct __pyx_obj_4h5py_3h5p_PropDCID {
+  struct __pyx_obj_4h5py_3h5p_PropOCID __pyx_base;
+};
+
+
+/* "h5p.pxd":74
+ *     pass
+ * 
+ * cdef class PropLAID(PropInstanceID):             # <<<<<<<<<<<<<<
+ *     """ Link access property list """
+ *     cdef char* _buf
+ */
+struct __pyx_obj_4h5py_3h5p_PropLAID {
+  struct __pyx_obj_4h5py_3h5p_PropInstanceID __pyx_base;
+  char *_buf;
+};
+
+
+/* "h5py/h5g.pyx":152
+ * 
+ * 
+ * cdef class _GroupVisitor:             # <<<<<<<<<<<<<<
+ * 
+ *     cdef object func
+ */
+struct __pyx_obj_4h5py_3h5g__GroupVisitor {
+  PyObject_HEAD
+  PyObject *func;
+  PyObject *retval;
+};
+
+
+/* "h5p.pxd":52
+ *     pass
+ * 
+ * cdef class PropFCID(PropCreateID):             # <<<<<<<<<<<<<<
+ *     """ File creation property list """
+ *     pass
+ */
+struct __pyx_obj_4h5py_3h5p_PropFCID {
+  struct __pyx_obj_4h5py_3h5p_PropCreateID __pyx_base;
+};
+
+
+/* "h5p.pxd":20
+ *     pass
+ * 
+ * cdef class PropClassID(PropID):             # <<<<<<<<<<<<<<
+ *     """ Represents an HDF5 property list class.  These can be either (locked)
+ *         library-defined classes or user-created classes.
+ */
+struct __pyx_obj_4h5py_3h5p_PropClassID {
+  struct __pyx_obj_4h5py_3h5p_PropID __pyx_base;
+};
+
+
+/* "h5p.pxd":39
+ *     pass
+ * 
+ * cdef class PropCopyID(PropInstanceID):             # <<<<<<<<<<<<<<
+ *     """ Property list for copying objects (as in h5o.copy) """
+ * 
+ */
+struct __pyx_obj_4h5py_3h5p_PropCopyID {
+  struct __pyx_obj_4h5py_3h5p_PropInstanceID __pyx_base;
+};
+
+
+/* "h5p.pxd":70
+ * # --- New in 1.8 ---
+ * 
+ * cdef class PropLCID(PropCreateID):             # <<<<<<<<<<<<<<
+ *     """ Link creation property list """
+ *     pass
+ */
+struct __pyx_obj_4h5py_3h5p_PropLCID {
+  struct __pyx_obj_4h5py_3h5p_PropCreateID __pyx_base;
+};
+
+
+/* "h5py/h5g.pyx":37
+ * LINK_SOFT  = H5G_LINK_SOFT
+ * 
+ * cdef class GroupStat:             # <<<<<<<<<<<<<<
+ *     """Represents the H5G_stat_t structure containing group member info.
+ * 
+ */
+struct __pyx_obj_4h5py_3h5g_GroupStat {
+  PyObject_HEAD
+  H5G_stat_t infostruct;
+};
+
+#ifndef CYTHON_REFNANNY
+  #define CYTHON_REFNANNY 0
+#endif
+#if CYTHON_REFNANNY
+  typedef struct {
+    void (*INCREF)(void*, PyObject*, int);
+    void (*DECREF)(void*, PyObject*, int);
+    void (*GOTREF)(void*, PyObject*, int);
+    void (*GIVEREF)(void*, PyObject*, int);
+    void* (*SetupContext)(const char*, int, const char*);
+    void (*FinishContext)(void**);
+  } __Pyx_RefNannyAPIStruct;
+  static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL;
+  static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); /*proto*/
+  #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL;
+#ifdef WITH_THREAD
+  #define __Pyx_RefNannySetupContext(name, acquire_gil) \
+          if (acquire_gil) { \
+              PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); \
+              __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__); \
+              PyGILState_Release(__pyx_gilstate_save); \
+          } else { \
+              __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__); \
+          }
+#else
+  #define __Pyx_RefNannySetupContext(name, acquire_gil) \
+          __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__)
+#endif
+  #define __Pyx_RefNannyFinishContext() \
+          __Pyx_RefNanny->FinishContext(&__pyx_refnanny)
+  #define __Pyx_INCREF(r)  __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_DECREF(r)  __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_GOTREF(r)  __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_XINCREF(r)  do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0)
+  #define __Pyx_XDECREF(r)  do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0)
+  #define __Pyx_XGOTREF(r)  do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0)
+  #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0)
+#else
+  #define __Pyx_RefNannyDeclarations
+  #define __Pyx_RefNannySetupContext(name, acquire_gil)
+  #define __Pyx_RefNannyFinishContext()
+  #define __Pyx_INCREF(r) Py_INCREF(r)
+  #define __Pyx_DECREF(r) Py_DECREF(r)
+  #define __Pyx_GOTREF(r)
+  #define __Pyx_GIVEREF(r)
+  #define __Pyx_XINCREF(r) Py_XINCREF(r)
+  #define __Pyx_XDECREF(r) Py_XDECREF(r)
+  #define __Pyx_XGOTREF(r)
+  #define __Pyx_XGIVEREF(r)
+#endif /* CYTHON_REFNANNY */
+#define __Pyx_CLEAR(r)    do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0)
+#define __Pyx_XCLEAR(r)   do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0)
+
+static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name); /*proto*/
+
+static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name); /*proto*/
+
+static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[], \
+    PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args, \
+    const char* function_name); /*proto*/
+
+static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact,
+    Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); /*proto*/
+
+static int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, int none_allowed,
+    const char *name, int exact); /*proto*/
+
+static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb); /*proto*/
+static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb); /*proto*/
+
+static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause); /*proto*/
+
+static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) {
+    PyObject *r;
+    if (!j) return NULL;
+    r = PyObject_GetItem(o, j);
+    Py_DECREF(j);
+    return r;
+}
+#define __Pyx_GetItemInt_List(o, i, size, to_py_func) (((size) <= sizeof(Py_ssize_t)) ? \
+                                                    __Pyx_GetItemInt_List_Fast(o, i) : \
+                                                    __Pyx_GetItemInt_Generic(o, to_py_func(i)))
+static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i) {
+#if CYTHON_COMPILING_IN_CPYTHON
+    if (likely((0 <= i) & (i < PyList_GET_SIZE(o)))) {
+        PyObject *r = PyList_GET_ITEM(o, i);
+        Py_INCREF(r);
+        return r;
+    }
+    else if ((-PyList_GET_SIZE(o) <= i) & (i < 0)) {
+        PyObject *r = PyList_GET_ITEM(o, PyList_GET_SIZE(o) + i);
+        Py_INCREF(r);
+        return r;
+    }
+    return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));
+#else
+    return PySequence_GetItem(o, i);
+#endif
+}
+#define __Pyx_GetItemInt_Tuple(o, i, size, to_py_func) (((size) <= sizeof(Py_ssize_t)) ? \
+                                                    __Pyx_GetItemInt_Tuple_Fast(o, i) : \
+                                                    __Pyx_GetItemInt_Generic(o, to_py_func(i)))
+static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i) {
+#if CYTHON_COMPILING_IN_CPYTHON
+    if (likely((0 <= i) & (i < PyTuple_GET_SIZE(o)))) {
+        PyObject *r = PyTuple_GET_ITEM(o, i);
+        Py_INCREF(r);
+        return r;
+    }
+    else if ((-PyTuple_GET_SIZE(o) <= i) & (i < 0)) {
+        PyObject *r = PyTuple_GET_ITEM(o, PyTuple_GET_SIZE(o) + i);
+        Py_INCREF(r);
+        return r;
+    }
+    return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));
+#else
+    return PySequence_GetItem(o, i);
+#endif
+}
+#define __Pyx_GetItemInt(o, i, size, to_py_func) (((size) <= sizeof(Py_ssize_t)) ? \
+                                                    __Pyx_GetItemInt_Fast(o, i) : \
+                                                    __Pyx_GetItemInt_Generic(o, to_py_func(i)))
+static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i) {
+#if CYTHON_COMPILING_IN_CPYTHON
+    if (PyList_CheckExact(o)) {
+        Py_ssize_t n = (likely(i >= 0)) ? i : i + PyList_GET_SIZE(o);
+        if (likely((n >= 0) & (n < PyList_GET_SIZE(o)))) {
+            PyObject *r = PyList_GET_ITEM(o, n);
+            Py_INCREF(r);
+            return r;
+        }
+    }
+    else if (PyTuple_CheckExact(o)) {
+        Py_ssize_t n = (likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o);
+        if (likely((n >= 0) & (n < PyTuple_GET_SIZE(o)))) {
+            PyObject *r = PyTuple_GET_ITEM(o, n);
+            Py_INCREF(r);
+            return r;
+        }
+    } else {  /* inlined PySequence_GetItem() */
+        PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence;
+        if (likely(m && m->sq_item)) {
+            if (unlikely(i < 0) && likely(m->sq_length)) {
+                Py_ssize_t l = m->sq_length(o);
+                if (unlikely(l < 0)) return NULL;
+                i += l;
+            }
+            return m->sq_item(o, i);
+        }
+    }
+#else
+    if (PySequence_Check(o)) {
+        return PySequence_GetItem(o, i);
+    }
+#endif
+    return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));
+}
+
+#define __Pyx_DelItemInt(o, i, size, to_py_func) (((size) <= sizeof(Py_ssize_t)) ? \
+                                                    __Pyx_DelItemInt_Fast(o, i) : \
+                                                    __Pyx_DelItem_Generic(o, to_py_func(i)))
+static CYTHON_INLINE int __Pyx_DelItem_Generic(PyObject *o, PyObject *j) {
+    int r;
+    if (!j) return -1;
+    r = PyObject_DelItem(o, j);
+    Py_DECREF(j);
+    return r;
+}
+static CYTHON_INLINE int __Pyx_DelItemInt_Fast(PyObject *o, Py_ssize_t i) {
+#if CYTHON_COMPILING_IN_PYPY
+    if (PySequence_Check(o)) {
+        return PySequence_DelItem(o, i);
+    }
+#else
+    PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence;
+    if (likely(m && m->sq_ass_item)) {
+        if (unlikely(i < 0) && likely(m->sq_length)) {
+            Py_ssize_t l = m->sq_length(o);
+            if (unlikely(l < 0)) return -1;
+            i += l;
+        }
+        return m->sq_ass_item(o, i, (PyObject *)NULL);
+    }
+#endif
+    return __Pyx_DelItem_Generic(o, PyInt_FromSsize_t(i));
+}
+
+static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb); /*proto*/
+
+static void __Pyx_call_next_tp_dealloc(PyObject* obj, destructor current_tp_dealloc);
+
+static int __Pyx_call_next_tp_traverse(PyObject* obj, visitproc v, void *a, traverseproc current_tp_traverse);
+
+static void __Pyx_call_next_tp_clear(PyObject* obj, inquiry current_tp_dealloc);
+
+static CYTHON_INLINE void __Pyx_ExceptionSave(PyObject **type, PyObject **value, PyObject **tb); /*proto*/
+static void __Pyx_ExceptionReset(PyObject *type, PyObject *value, PyObject *tb); /*proto*/
+
+static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level); /*proto*/
+
+static CYTHON_INLINE void __Pyx_RaiseImportError(PyObject *name);
+
+static CYTHON_INLINE hid_t __Pyx_PyInt_from_py_hid_t(PyObject *);
+
+static CYTHON_INLINE hsize_t __Pyx_PyInt_from_py_hsize_t(PyObject *);
+
+static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_time_t(time_t);
+
+static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_hid_t(hid_t);
+
+static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_hsize_t(hsize_t);
+
+static CYTHON_INLINE unsigned char __Pyx_PyInt_AsUnsignedChar(PyObject *);
+
+static CYTHON_INLINE unsigned short __Pyx_PyInt_AsUnsignedShort(PyObject *);
+
+static CYTHON_INLINE unsigned int __Pyx_PyInt_AsUnsignedInt(PyObject *);
+
+static CYTHON_INLINE char __Pyx_PyInt_AsChar(PyObject *);
+
+static CYTHON_INLINE short __Pyx_PyInt_AsShort(PyObject *);
+
+static CYTHON_INLINE int __Pyx_PyInt_AsInt(PyObject *);
+
+static CYTHON_INLINE signed char __Pyx_PyInt_AsSignedChar(PyObject *);
+
+static CYTHON_INLINE signed short __Pyx_PyInt_AsSignedShort(PyObject *);
+
+static CYTHON_INLINE signed int __Pyx_PyInt_AsSignedInt(PyObject *);
+
+static CYTHON_INLINE int __Pyx_PyInt_AsLongDouble(PyObject *);
+
+static CYTHON_INLINE unsigned long __Pyx_PyInt_AsUnsignedLong(PyObject *);
+
+static CYTHON_INLINE unsigned PY_LONG_LONG __Pyx_PyInt_AsUnsignedLongLong(PyObject *);
+
+static CYTHON_INLINE long __Pyx_PyInt_AsLong(PyObject *);
+
+static CYTHON_INLINE PY_LONG_LONG __Pyx_PyInt_AsLongLong(PyObject *);
+
+static CYTHON_INLINE signed long __Pyx_PyInt_AsSignedLong(PyObject *);
+
+static CYTHON_INLINE signed PY_LONG_LONG __Pyx_PyInt_AsSignedLongLong(PyObject *);
+
+static int __Pyx_check_binary_version(void);
+
+#if !defined(__Pyx_PyIdentifier_FromString)
+#if PY_MAJOR_VERSION < 3
+  #define __Pyx_PyIdentifier_FromString(s) PyString_FromString(s)
+#else
+  #define __Pyx_PyIdentifier_FromString(s) PyUnicode_FromString(s)
+#endif
+#endif
+
+static PyObject *__Pyx_ImportModule(const char *name); /*proto*/
+
+static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name, size_t size, int strict);  /*proto*/
+
+static int __Pyx_ImportFunction(PyObject *module, const char *funcname, void (**f)(void), const char *sig); /*proto*/
+
+typedef struct {
+    int code_line;
+    PyCodeObject* code_object;
+} __Pyx_CodeObjectCacheEntry;
+struct __Pyx_CodeObjectCache {
+    int count;
+    int max_count;
+    __Pyx_CodeObjectCacheEntry* entries;
+};
+static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL};
+static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line);
+static PyCodeObject *__pyx_find_code_object(int code_line);
+static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object);
+
+static void __Pyx_AddTraceback(const char *funcname, int c_line,
+                               int py_line, const char *filename); /*proto*/
+
+static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); /*proto*/
+
+
+/* Module declarations from 'h5py.api_types_ext' */
+
+/* Module declarations from 'h5py.api_types_hdf5' */
+
+/* Module declarations from 'h5py.defs' */
+static hid_t (*__pyx_f_4h5py_4defs_H5Gopen)(hid_t, char *); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Gclose)(hid_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Glink2)(hid_t, char *, H5G_link_t, hid_t, char *); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Gunlink)(hid_t, char *); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Gmove2)(hid_t, char *, hid_t, char *); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Gget_num_objs)(hid_t, hsize_t *); /*proto*/
+static int (*__pyx_f_4h5py_4defs_H5Gget_objname_by_idx)(hid_t, hsize_t, char *, size_t); /*proto*/
+static int (*__pyx_f_4h5py_4defs_H5Gget_objtype_by_idx)(hid_t, hsize_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Giterate)(hid_t, char *, int *, H5G_iterate_t, void *); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Gget_objinfo)(hid_t, char *, int, H5G_stat_t *); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Gget_linkval)(hid_t, char *, size_t, char *); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Gset_comment)(hid_t, char *, char *); /*proto*/
+static int (*__pyx_f_4h5py_4defs_H5Gget_comment)(hid_t, char *, size_t, char *); /*proto*/
+static hid_t (*__pyx_f_4h5py_4defs_H5Gcreate_anon)(hid_t, hid_t, hid_t); /*proto*/
+static hid_t (*__pyx_f_4h5py_4defs_H5Gcreate2)(hid_t, char *, hid_t, hid_t, hid_t); /*proto*/
+
+/* Module declarations from 'h5py._objects' */
+static PyTypeObject *__pyx_ptype_4h5py_8_objects_ObjectID = 0;
+static hid_t (*__pyx_f_4h5py_8_objects_pdefault)(struct __pyx_obj_4h5py_8_objects_ObjectID *); /*proto*/
+
+/* Module declarations from 'numpy' */
+
+/* Module declarations from 'h5py.numpy' */
+static PyTypeObject *__pyx_ptype_4h5py_5numpy_dtype = 0;
+static PyTypeObject *__pyx_ptype_4h5py_5numpy_ndarray = 0;
+
+/* Module declarations from 'h5py.utils' */
+static void *(*__pyx_f_4h5py_5utils_emalloc)(size_t); /*proto*/
+static void (*__pyx_f_4h5py_5utils_efree)(void *); /*proto*/
+
+/* Module declarations from 'h5py.h5p' */
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropClassID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropInstanceID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropCreateID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropCopyID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropOCID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropDCID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropFCID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropFAID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropDXID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropLCID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropLAID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropGCID = 0;
+
+/* Module declarations from 'h5py._hdf5' */
+
+/* Module declarations from 'h5py._errors' */
+static __pyx_t_4h5py_7_errors_err_cookie (*__pyx_f_4h5py_7_errors_set_error_handler)(__pyx_t_4h5py_7_errors_err_cookie); /*proto*/
+
+/* Module declarations from 'h5py.h5g' */
+static PyTypeObject *__pyx_ptype_4h5py_3h5g_GroupID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5g_GroupStat = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5g_GroupIter = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5g__GroupVisitor = 0;
+static herr_t __pyx_f_4h5py_3h5g_cb_group_iter(hid_t, char *, void *); /*proto*/
+#define __Pyx_MODULE_NAME "h5py.h5g"
+int __pyx_module_is_main_h5py__h5g = 0;
+
+/* Implementation of 'h5py.h5g' */
+static PyObject *__pyx_builtin_StopIteration;
+static PyObject *__pyx_builtin_ValueError;
+static PyObject *__pyx_pf_4h5py_3h5g_9GroupStat_6fileno___get__(struct __pyx_obj_4h5py_3h5g_GroupStat *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5g_9GroupStat_5objno___get__(struct __pyx_obj_4h5py_3h5g_GroupStat *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5g_9GroupStat_5nlink___get__(struct __pyx_obj_4h5py_3h5g_GroupStat *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5g_9GroupStat_4type___get__(struct __pyx_obj_4h5py_3h5g_GroupStat *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5g_9GroupStat_5mtime___get__(struct __pyx_obj_4h5py_3h5g_GroupStat *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5g_9GroupStat_7linklen___get__(struct __pyx_obj_4h5py_3h5g_GroupStat *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5g_9GroupStat__hash(struct __pyx_obj_4h5py_3h5g_GroupStat *__pyx_v_self); /* proto */
+static int __pyx_pf_4h5py_3h5g_9GroupIter___init__(struct __pyx_obj_4h5py_3h5g_GroupIter *__pyx_v_self, struct __pyx_obj_4h5py_3h5g_GroupID *__pyx_v_grp); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5g_9GroupIter_2__iter__(struct __pyx_obj_4h5py_3h5g_GroupIter *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5g_9GroupIter_4__next__(struct __pyx_obj_4h5py_3h5g_GroupIter *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5g_open(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_loc, char *__pyx_v_name); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5g_2create(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_loc, PyObject *__pyx_v_name, struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_lcpl, struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_gcpl); /* proto */
+static int __pyx_pf_4h5py_3h5g_13_GroupVisitor___init__(struct __pyx_obj_4h5py_3h5g__GroupVisitor *__pyx_v_self, PyObject *__pyx_v_func); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5g_4iterate(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_3h5g_GroupID *__pyx_v_loc, PyObject *__pyx_v_func, int __pyx_v_startidx, char *__pyx_v_obj_name); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5g_6get_objinfo(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_obj, PyObject *__pyx_v_name, int __pyx_v_follow_link); /* proto */
+static int __pyx_pf_4h5py_3h5g_7GroupID___init__(struct __pyx_obj_4h5py_3h5g_GroupID *__pyx_v_self, hid_t __pyx_v_id_); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5g_7GroupID_2_close(struct __pyx_obj_4h5py_3h5g_GroupID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5g_7GroupID_4link(struct __pyx_obj_4h5py_3h5g_GroupID *__pyx_v_self, char *__pyx_v_current_name, char *__pyx_v_new_name, int __pyx_v_link_type, struct __pyx_obj_4h5py_3h5g_GroupID *__pyx_v_remote); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5g_7GroupID_6unlink(struct __pyx_obj_4h5py_3h5g_GroupID *__pyx_v_self, char *__pyx_v_name); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5g_7GroupID_8move(struct __pyx_obj_4h5py_3h5g_GroupID *__pyx_v_self, char *__pyx_v_current_name, char *__pyx_v_new_name, struct __pyx_obj_4h5py_3h5g_GroupID *__pyx_v_remote); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5g_7GroupID_10get_num_objs(struct __pyx_obj_4h5py_3h5g_GroupID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5g_7GroupID_12get_objname_by_idx(struct __pyx_obj_4h5py_3h5g_GroupID *__pyx_v_self, hsize_t __pyx_v_idx); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5g_7GroupID_14get_objtype_by_idx(struct __pyx_obj_4h5py_3h5g_GroupID *__pyx_v_self, hsize_t __pyx_v_idx); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5g_7GroupID_16get_linkval(struct __pyx_obj_4h5py_3h5g_GroupID *__pyx_v_self, char *__pyx_v_name); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5g_7GroupID_18set_comment(struct __pyx_obj_4h5py_3h5g_GroupID *__pyx_v_self, char *__pyx_v_name, char *__pyx_v_comment); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5g_7GroupID_20get_comment(struct __pyx_obj_4h5py_3h5g_GroupID *__pyx_v_self, char *__pyx_v_name); /* proto */
+static int __pyx_pf_4h5py_3h5g_7GroupID_22__contains__(struct __pyx_obj_4h5py_3h5g_GroupID *__pyx_v_self, char *__pyx_v_name); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5g_7GroupID_24__iter__(struct __pyx_obj_4h5py_3h5g_GroupID *__pyx_v_self); /* proto */
+static Py_ssize_t __pyx_pf_4h5py_3h5g_7GroupID_26__len__(struct __pyx_obj_4h5py_3h5g_GroupID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5g_7GroupID_5links___get__(struct __pyx_obj_4h5py_3h5g_GroupID *__pyx_v_self); /* proto */
+static char __pyx_k_1[] = ".";
+static char __pyx_k_2[] = "Starting index must be non-negative";
+static char __pyx_k_6[] = "\"%s\" is not a symbolic link.";
+static char __pyx_k_7[] = "\n    Low-level HDF5 \"H5G\" group interface.\n";
+static char __pyx_k_10[] = "/home/computer/h5py/h5py/h5g.pyx";
+static char __pyx_k_11[] = "h5py.h5g";
+static char __pyx_k__i[] = "i";
+static char __pyx_k__gid[] = "gid";
+static char __pyx_k__grp[] = "grp";
+static char __pyx_k__h5l[] = "h5l";
+static char __pyx_k__id_[] = "id_";
+static char __pyx_k__loc[] = "loc";
+static char __pyx_k__obj[] = "obj";
+static char __pyx_k__vis[] = "vis";
+static char __pyx_k__LINK[] = "LINK";
+static char __pyx_k__TYPE[] = "TYPE";
+static char __pyx_k__func[] = "func";
+static char __pyx_k__gcpl[] = "gcpl";
+static char __pyx_k__h5py[] = "h5py";
+static char __pyx_k__lcpl[] = "lcpl";
+static char __pyx_k__lock[] = "lock";
+static char __pyx_k__name[] = "name";
+static char __pyx_k__open[] = "open";
+static char __pyx_k__type[] = "type";
+static char __pyx_k__GROUP[] = "GROUP";
+static char __pyx_k___name[] = "_name";
+static char __pyx_k__cname[] = "cname";
+static char __pyx_k__mtime[] = "mtime";
+static char __pyx_k__nlink[] = "nlink";
+static char __pyx_k__objno[] = "objno";
+static char __pyx_k__valid[] = "valid";
+static char __pyx_k__append[] = "append";
+static char __pyx_k__create[] = "create";
+static char __pyx_k__fileno[] = "fileno";
+static char __pyx_k__remote[] = "remote";
+static char __pyx_k__DATASET[] = "DATASET";
+static char __pyx_k__UNKNOWN[] = "UNKNOWN";
+static char __pyx_k__comment[] = "comment";
+static char __pyx_k__iterate[] = "iterate";
+static char __pyx_k__linklen[] = "linklen";
+static char __pyx_k__statobj[] = "statobj";
+static char __pyx_k____exit__[] = "__exit__";
+static char __pyx_k____main__[] = "__main__";
+static char __pyx_k____test__[] = "__test__";
+static char __pyx_k___objects[] = "_objects";
+static char __pyx_k__new_name[] = "new_name";
+static char __pyx_k__obj_name[] = "obj_name";
+static char __pyx_k__registry[] = "registry";
+static char __pyx_k__startidx[] = "startidx";
+static char __pyx_k__LINK_HARD[] = "LINK_HARD";
+static char __pyx_k__LINK_SOFT[] = "LINK_SOFT";
+static char __pyx_k__LinkProxy[] = "LinkProxy";
+static char __pyx_k____enter__[] = "__enter__";
+static char __pyx_k__link_type[] = "link_type";
+static char __pyx_k__LINK_ERROR[] = "LINK_ERROR";
+static char __pyx_k__ValueError[] = "ValueError";
+static char __pyx_k__follow_link[] = "follow_link";
+static char __pyx_k__get_objinfo[] = "get_objinfo";
+static char __pyx_k__current_name[] = "current_name";
+static char __pyx_k__get_num_objs[] = "get_num_objs";
+static char __pyx_k__StopIteration[] = "StopIteration";
+static PyObject *__pyx_kp_b_1;
+static PyObject *__pyx_kp_s_10;
+static PyObject *__pyx_n_s_11;
+static PyObject *__pyx_kp_s_2;
+static PyObject *__pyx_kp_s_6;
+static PyObject *__pyx_n_s__DATASET;
+static PyObject *__pyx_n_s__GROUP;
+static PyObject *__pyx_n_s__LINK;
+static PyObject *__pyx_n_s__LINK_ERROR;
+static PyObject *__pyx_n_s__LINK_HARD;
+static PyObject *__pyx_n_s__LINK_SOFT;
+static PyObject *__pyx_n_s__LinkProxy;
+static PyObject *__pyx_n_s__StopIteration;
+static PyObject *__pyx_n_s__TYPE;
+static PyObject *__pyx_n_s__UNKNOWN;
+static PyObject *__pyx_n_s__ValueError;
+static PyObject *__pyx_n_s____enter__;
+static PyObject *__pyx_n_s____exit__;
+static PyObject *__pyx_n_s____main__;
+static PyObject *__pyx_n_s____test__;
+static PyObject *__pyx_n_s___name;
+static PyObject *__pyx_n_s___objects;
+static PyObject *__pyx_n_s__append;
+static PyObject *__pyx_n_s__cname;
+static PyObject *__pyx_n_s__comment;
+static PyObject *__pyx_n_s__create;
+static PyObject *__pyx_n_s__current_name;
+static PyObject *__pyx_n_s__fileno;
+static PyObject *__pyx_n_s__follow_link;
+static PyObject *__pyx_n_s__func;
+static PyObject *__pyx_n_s__gcpl;
+static PyObject *__pyx_n_s__get_num_objs;
+static PyObject *__pyx_n_s__get_objinfo;
+static PyObject *__pyx_n_s__gid;
+static PyObject *__pyx_n_s__grp;
+static PyObject *__pyx_n_s__h5l;
+static PyObject *__pyx_n_s__h5py;
+static PyObject *__pyx_n_s__i;
+static PyObject *__pyx_n_s__id_;
+static PyObject *__pyx_n_s__iterate;
+static PyObject *__pyx_n_s__lcpl;
+static PyObject *__pyx_n_s__link_type;
+static PyObject *__pyx_n_s__linklen;
+static PyObject *__pyx_n_s__loc;
+static PyObject *__pyx_n_s__lock;
+static PyObject *__pyx_n_s__mtime;
+static PyObject *__pyx_n_s__name;
+static PyObject *__pyx_n_s__new_name;
+static PyObject *__pyx_n_s__nlink;
+static PyObject *__pyx_n_s__obj;
+static PyObject *__pyx_n_s__obj_name;
+static PyObject *__pyx_n_s__objno;
+static PyObject *__pyx_n_s__open;
+static PyObject *__pyx_n_s__registry;
+static PyObject *__pyx_n_s__remote;
+static PyObject *__pyx_n_s__startidx;
+static PyObject *__pyx_n_s__statobj;
+static PyObject *__pyx_n_s__type;
+static PyObject *__pyx_n_s__valid;
+static PyObject *__pyx_n_s__vis;
+static PyObject *__pyx_int_1;
+static int __pyx_k_5;
+static PyObject *__pyx_k_tuple_3;
+static PyObject *__pyx_k_tuple_4;
+static PyObject *__pyx_k_tuple_8;
+static PyObject *__pyx_k_tuple_12;
+static PyObject *__pyx_k_tuple_14;
+static PyObject *__pyx_k_tuple_16;
+static PyObject *__pyx_k_codeobj_9;
+static PyObject *__pyx_k_codeobj_13;
+static PyObject *__pyx_k_codeobj_15;
+static PyObject *__pyx_k_codeobj_17;
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5g_9GroupStat_6fileno_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4h5py_3h5g_9GroupStat_6fileno_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5g_9GroupStat_6fileno___get__(((struct __pyx_obj_4h5py_3h5g_GroupStat *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5g.pyx":57
+ * 
+ *     property fileno:
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return (self.infostruct.fileno[0], self.infostruct.fileno[1])
+ *     property objno:
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5g_9GroupStat_6fileno___get__(struct __pyx_obj_4h5py_3h5g_GroupStat *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "h5py/h5g.pyx":58
+ *     property fileno:
+ *         def __get__(self):
+ *             return (self.infostruct.fileno[0], self.infostruct.fileno[1])             # <<<<<<<<<<<<<<
+ *     property objno:
+ *         def __get__(self):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyLong_FromUnsignedLong((__pyx_v_self->infostruct.fileno[0])); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyLong_FromUnsignedLong((__pyx_v_self->infostruct.fileno[1])); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2);
+  __Pyx_GIVEREF(__pyx_t_2);
+  __pyx_t_1 = 0;
+  __pyx_t_2 = 0;
+  __pyx_r = ((PyObject *)__pyx_t_3);
+  __pyx_t_3 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("h5py.h5g.GroupStat.fileno.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5g_9GroupStat_5objno_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4h5py_3h5g_9GroupStat_5objno_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5g_9GroupStat_5objno___get__(((struct __pyx_obj_4h5py_3h5g_GroupStat *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5g.pyx":60
+ *             return (self.infostruct.fileno[0], self.infostruct.fileno[1])
+ *     property objno:
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return (self.infostruct.objno[0], self.infostruct.objno[1])
+ *     property nlink:
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5g_9GroupStat_5objno___get__(struct __pyx_obj_4h5py_3h5g_GroupStat *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "h5py/h5g.pyx":61
+ *     property objno:
+ *         def __get__(self):
+ *             return (self.infostruct.objno[0], self.infostruct.objno[1])             # <<<<<<<<<<<<<<
+ *     property nlink:
+ *         def __get__(self):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyLong_FromUnsignedLong((__pyx_v_self->infostruct.objno[0])); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyLong_FromUnsignedLong((__pyx_v_self->infostruct.objno[1])); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2);
+  __Pyx_GIVEREF(__pyx_t_2);
+  __pyx_t_1 = 0;
+  __pyx_t_2 = 0;
+  __pyx_r = ((PyObject *)__pyx_t_3);
+  __pyx_t_3 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("h5py.h5g.GroupStat.objno.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5g_9GroupStat_5nlink_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4h5py_3h5g_9GroupStat_5nlink_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5g_9GroupStat_5nlink___get__(((struct __pyx_obj_4h5py_3h5g_GroupStat *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5g.pyx":63
+ *             return (self.infostruct.objno[0], self.infostruct.objno[1])
+ *     property nlink:
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.infostruct.nlink
+ *     property type:
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5g_9GroupStat_5nlink___get__(struct __pyx_obj_4h5py_3h5g_GroupStat *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "h5py/h5g.pyx":64
+ *     property nlink:
+ *         def __get__(self):
+ *             return self.infostruct.nlink             # <<<<<<<<<<<<<<
+ *     property type:
+ *         def __get__(self):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyLong_FromUnsignedLong(__pyx_v_self->infostruct.nlink); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py.h5g.GroupStat.nlink.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5g_9GroupStat_4type_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4h5py_3h5g_9GroupStat_4type_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5g_9GroupStat_4type___get__(((struct __pyx_obj_4h5py_3h5g_GroupStat *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5g.pyx":66
+ *             return self.infostruct.nlink
+ *     property type:
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.infostruct.type
+ *     property mtime:
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5g_9GroupStat_4type___get__(struct __pyx_obj_4h5py_3h5g_GroupStat *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "h5py/h5g.pyx":67
+ *     property type:
+ *         def __get__(self):
+ *             return self.infostruct.type             # <<<<<<<<<<<<<<
+ *     property mtime:
+ *         def __get__(self):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyInt_FromLong(__pyx_v_self->infostruct.type); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py.h5g.GroupStat.type.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5g_9GroupStat_5mtime_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4h5py_3h5g_9GroupStat_5mtime_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5g_9GroupStat_5mtime___get__(((struct __pyx_obj_4h5py_3h5g_GroupStat *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5g.pyx":69
+ *             return self.infostruct.type
+ *     property mtime:
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.infostruct.mtime
+ *     property linklen:
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5g_9GroupStat_5mtime___get__(struct __pyx_obj_4h5py_3h5g_GroupStat *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "h5py/h5g.pyx":70
+ *     property mtime:
+ *         def __get__(self):
+ *             return self.infostruct.mtime             # <<<<<<<<<<<<<<
+ *     property linklen:
+ *         def __get__(self):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_to_py_time_t(__pyx_v_self->infostruct.mtime); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py.h5g.GroupStat.mtime.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5g_9GroupStat_7linklen_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4h5py_3h5g_9GroupStat_7linklen_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5g_9GroupStat_7linklen___get__(((struct __pyx_obj_4h5py_3h5g_GroupStat *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5g.pyx":72
+ *             return self.infostruct.mtime
+ *     property linklen:
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.infostruct.linklen
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5g_9GroupStat_7linklen___get__(struct __pyx_obj_4h5py_3h5g_GroupStat *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "h5py/h5g.pyx":73
+ *     property linklen:
+ *         def __get__(self):
+ *             return self.infostruct.linklen             # <<<<<<<<<<<<<<
+ * 
+ *     def _hash(self):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_self->infostruct.linklen); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py.h5g.GroupStat.linklen.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5g_9GroupStat_1_hash(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static PyObject *__pyx_pw_4h5py_3h5g_9GroupStat_1_hash(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("_hash (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5g_9GroupStat__hash(((struct __pyx_obj_4h5py_3h5g_GroupStat *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5g.pyx":75
+ *             return self.infostruct.linklen
+ * 
+ *     def _hash(self):             # <<<<<<<<<<<<<<
+ *         return hash((self.fileno, self.objno, self.nlink, self.type, self.mtime, self.linklen))
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5g_9GroupStat__hash(struct __pyx_obj_4h5py_3h5g_GroupStat *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  Py_hash_t __pyx_t_8;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_hash", 0);
+
+  /* "h5py/h5g.pyx":76
+ * 
+ *     def _hash(self):
+ *         return hash((self.fileno, self.objno, self.nlink, self.type, self.mtime, self.linklen))             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__fileno); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 76; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__objno); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 76; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__nlink); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 76; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_4 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__type); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 76; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__mtime); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 76; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_6 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__linklen); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 76; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_6);
+  __pyx_t_7 = PyTuple_New(6); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 76; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_7);
+  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_2);
+  __Pyx_GIVEREF(__pyx_t_2);
+  PyTuple_SET_ITEM(__pyx_t_7, 2, __pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_3);
+  PyTuple_SET_ITEM(__pyx_t_7, 3, __pyx_t_4);
+  __Pyx_GIVEREF(__pyx_t_4);
+  PyTuple_SET_ITEM(__pyx_t_7, 4, __pyx_t_5);
+  __Pyx_GIVEREF(__pyx_t_5);
+  PyTuple_SET_ITEM(__pyx_t_7, 5, __pyx_t_6);
+  __Pyx_GIVEREF(__pyx_t_6);
+  __pyx_t_1 = 0;
+  __pyx_t_2 = 0;
+  __pyx_t_3 = 0;
+  __pyx_t_4 = 0;
+  __pyx_t_5 = 0;
+  __pyx_t_6 = 0;
+  __pyx_t_8 = PyObject_Hash(((PyObject *)__pyx_t_7)); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 76; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(((PyObject *)__pyx_t_7)); __pyx_t_7 = 0;
+  __pyx_t_7 = __Pyx_PyInt_FromHash_t(__pyx_t_8); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 76; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_7);
+  __pyx_r = __pyx_t_7;
+  __pyx_t_7 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_AddTraceback("h5py.h5g.GroupStat._hash", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static int __pyx_pw_4h5py_3h5g_9GroupIter_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_4h5py_3h5g_9GroupIter_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  struct __pyx_obj_4h5py_3h5g_GroupID *__pyx_v_grp = 0;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__grp,0};
+    PyObject* values[1] = {0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__grp)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 92; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+    }
+    __pyx_v_grp = ((struct __pyx_obj_4h5py_3h5g_GroupID *)values[0]);
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 92; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5g.GroupIter.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return -1;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_grp), __pyx_ptype_4h5py_3h5g_GroupID, 0, "grp", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 92; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_pf_4h5py_3h5g_9GroupIter___init__(((struct __pyx_obj_4h5py_3h5g_GroupIter *)__pyx_v_self), __pyx_v_grp);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5g.pyx":92
+ * 
+ * 
+ *     def __init__(self, GroupID grp not None):             # <<<<<<<<<<<<<<
+ * 
+ *         self.idx = 0
+ */
+
+static int __pyx_pf_4h5py_3h5g_9GroupIter___init__(struct __pyx_obj_4h5py_3h5g_GroupIter *__pyx_v_self, struct __pyx_obj_4h5py_3h5g_GroupID *__pyx_v_grp) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  unsigned long __pyx_t_3;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__init__", 0);
+
+  /* "h5py/h5g.pyx":94
+ *     def __init__(self, GroupID grp not None):
+ * 
+ *         self.idx = 0             # <<<<<<<<<<<<<<
+ *         self.grp = grp
+ *         self.nobjs = grp.get_num_objs()
+ */
+  __pyx_v_self->idx = 0;
+
+  /* "h5py/h5g.pyx":95
+ * 
+ *         self.idx = 0
+ *         self.grp = grp             # <<<<<<<<<<<<<<
+ *         self.nobjs = grp.get_num_objs()
+ *         self.names = []
+ */
+  __Pyx_INCREF(((PyObject *)__pyx_v_grp));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_grp));
+  __Pyx_GOTREF(__pyx_v_self->grp);
+  __Pyx_DECREF(((PyObject *)__pyx_v_self->grp));
+  __pyx_v_self->grp = __pyx_v_grp;
+
+  /* "h5py/h5g.pyx":96
+ *         self.idx = 0
+ *         self.grp = grp
+ *         self.nobjs = grp.get_num_objs()             # <<<<<<<<<<<<<<
+ *         self.names = []
+ * 
+ */
+  __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_grp), __pyx_n_s__get_num_objs); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_3 = __Pyx_PyInt_AsUnsignedLong(__pyx_t_2); if (unlikely((__pyx_t_3 == (unsigned long)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_v_self->nobjs = __pyx_t_3;
+
+  /* "h5py/h5g.pyx":97
+ *         self.grp = grp
+ *         self.nobjs = grp.get_num_objs()
+ *         self.names = []             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_GIVEREF(((PyObject *)__pyx_t_2));
+  __Pyx_GOTREF(__pyx_v_self->names);
+  __Pyx_DECREF(((PyObject *)__pyx_v_self->names));
+  __pyx_v_self->names = ((PyObject*)__pyx_t_2);
+  __pyx_t_2 = 0;
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5g.GroupIter.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5g_9GroupIter_3__iter__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4h5py_3h5g_9GroupIter_3__iter__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__iter__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5g_9GroupIter_2__iter__(((struct __pyx_obj_4h5py_3h5g_GroupIter *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5g.pyx":100
+ * 
+ * 
+ *     def __iter__(self):             # <<<<<<<<<<<<<<
+ * 
+ *         return self
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5g_9GroupIter_2__iter__(struct __pyx_obj_4h5py_3h5g_GroupIter *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__iter__", 0);
+
+  /* "h5py/h5g.pyx":102
+ *     def __iter__(self):
+ * 
+ *         return self             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(((PyObject *)__pyx_v_self));
+  __pyx_r = ((PyObject *)__pyx_v_self);
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5g_9GroupIter_5__next__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4h5py_3h5g_9GroupIter_5__next__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__next__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5g_9GroupIter_4__next__(((struct __pyx_obj_4h5py_3h5g_GroupIter *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5g.pyx":105
+ * 
+ * 
+ *     def __next__(self):             # <<<<<<<<<<<<<<
+ * 
+ *         if self.idx == self.nobjs:
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5g_9GroupIter_4__next__(struct __pyx_obj_4h5py_3h5g_GroupIter *__pyx_v_self) {
+  PyObject *__pyx_v_retval = NULL;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__next__", 0);
+
+  /* "h5py/h5g.pyx":107
+ *     def __next__(self):
+ * 
+ *         if self.idx == self.nobjs:             # <<<<<<<<<<<<<<
+ *             self.grp = None
+ *             self.names = None
+ */
+  __pyx_t_1 = (__pyx_v_self->idx == __pyx_v_self->nobjs);
+  if (__pyx_t_1) {
+
+    /* "h5py/h5g.pyx":108
+ * 
+ *         if self.idx == self.nobjs:
+ *             self.grp = None             # <<<<<<<<<<<<<<
+ *             self.names = None
+ *             raise StopIteration
+ */
+    __Pyx_INCREF(Py_None);
+    __Pyx_GIVEREF(Py_None);
+    __Pyx_GOTREF(__pyx_v_self->grp);
+    __Pyx_DECREF(((PyObject *)__pyx_v_self->grp));
+    __pyx_v_self->grp = ((struct __pyx_obj_4h5py_3h5g_GroupID *)Py_None);
+
+    /* "h5py/h5g.pyx":109
+ *         if self.idx == self.nobjs:
+ *             self.grp = None
+ *             self.names = None             # <<<<<<<<<<<<<<
+ *             raise StopIteration
+ * 
+ */
+    __Pyx_INCREF(Py_None);
+    __Pyx_GIVEREF(Py_None);
+    __Pyx_GOTREF(__pyx_v_self->names);
+    __Pyx_DECREF(((PyObject *)__pyx_v_self->names));
+    __pyx_v_self->names = ((PyObject*)Py_None);
+
+    /* "h5py/h5g.pyx":110
+ *             self.grp = None
+ *             self.names = None
+ *             raise StopIteration             # <<<<<<<<<<<<<<
+ * 
+ *         if self.idx == 0:
+ */
+    __Pyx_Raise(__pyx_builtin_StopIteration, 0, 0, 0);
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  /* "h5py/h5g.pyx":112
+ *             raise StopIteration
+ * 
+ *         if self.idx == 0:             # <<<<<<<<<<<<<<
+ *             self.grp.links.iterate(self.names.append)
+ * 
+ */
+  __pyx_t_1 = (__pyx_v_self->idx == 0);
+  if (__pyx_t_1) {
+
+    /* "h5py/h5g.pyx":113
+ * 
+ *         if self.idx == 0:
+ *             self.grp.links.iterate(self.names.append)             # <<<<<<<<<<<<<<
+ * 
+ *         retval = self.names[self.idx]
+ */
+    __pyx_t_2 = PyObject_GetAttr(__pyx_v_self->grp->links, __pyx_n_s__iterate); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyObject_GetAttr(((PyObject *)__pyx_v_self->names), __pyx_n_s__append); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
+    __Pyx_GIVEREF(__pyx_t_3);
+    __pyx_t_3 = 0;
+    __pyx_t_3 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    goto __pyx_L4;
+  }
+  __pyx_L4:;
+
+  /* "h5py/h5g.pyx":115
+ *             self.grp.links.iterate(self.names.append)
+ * 
+ *         retval = self.names[self.idx]             # <<<<<<<<<<<<<<
+ *         self.idx += 1
+ * 
+ */
+  if (unlikely(((PyObject *)__pyx_v_self->names) == Py_None)) {
+    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  }
+  __pyx_t_3 = __Pyx_GetItemInt_List(((PyObject *)__pyx_v_self->names), __pyx_v_self->idx, sizeof(unsigned long)+1, PyLong_FromUnsignedLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_v_retval = __pyx_t_3;
+  __pyx_t_3 = 0;
+
+  /* "h5py/h5g.pyx":116
+ * 
+ *         retval = self.names[self.idx]
+ *         self.idx += 1             # <<<<<<<<<<<<<<
+ * 
+ *         return retval
+ */
+  __pyx_v_self->idx = (__pyx_v_self->idx + 1);
+
+  /* "h5py/h5g.pyx":118
+ *         self.idx += 1
+ * 
+ *         return retval             # <<<<<<<<<<<<<<
+ * 
+ * # === Basic group management ==================================================
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_retval);
+  __pyx_r = __pyx_v_retval;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("h5py.h5g.GroupIter.__next__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_retval);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5g_1open(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_4h5py_3h5g_open[] = "(ObjectID loc, STRING name) => GroupID\n\n    Open an existing HDF5 group, attached to some other group.\n    ";
+static PyMethodDef __pyx_mdef_4h5py_3h5g_1open = {__Pyx_NAMESTR("open"), (PyCFunction)__pyx_pw_4h5py_3h5g_1open, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5g_open)};
+static PyObject *__pyx_pw_4h5py_3h5g_1open(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_loc = 0;
+  char *__pyx_v_name;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("open (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__loc,&__pyx_n_s__name,0};
+    PyObject* values[2] = {0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__loc)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__name)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("open", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "open") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+    }
+    __pyx_v_loc = ((struct __pyx_obj_4h5py_8_objects_ObjectID *)values[0]);
+    __pyx_v_name = PyBytes_AsString(values[1]); if (unlikely((!__pyx_v_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("open", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5g.open", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_loc), __pyx_ptype_4h5py_8_objects_ObjectID, 0, "loc", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_pf_4h5py_3h5g_open(__pyx_self, __pyx_v_loc, __pyx_v_name);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5g.pyx":123
+ * 
+ * 
+ * def open(ObjectID loc not None, char* name):             # <<<<<<<<<<<<<<
+ *     """(ObjectID loc, STRING name) => GroupID
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5g_open(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_loc, char *__pyx_v_name) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  hid_t __pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("open", 0);
+
+  /* "h5py/h5g.pyx":128
+ *     Open an existing HDF5 group, attached to some other group.
+ *     """
+ *     return GroupID.open(H5Gopen(loc.id, name))             # <<<<<<<<<<<<<<
+ * 
+ * def create(ObjectID loc not None, object name, PropID lcpl=None,
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyObject_GetAttr(((PyObject *)((PyObject*)__pyx_ptype_4h5py_3h5g_GroupID)), __pyx_n_s__open); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __pyx_f_4h5py_4defs_H5Gopen(__pyx_v_loc->id, __pyx_v_name); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyInt_to_py_hid_t(__pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_3);
+  __pyx_t_3 = 0;
+  __pyx_t_3 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
+  __pyx_r = __pyx_t_3;
+  __pyx_t_3 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("h5py.h5g.open", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5g_3create(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_4h5py_3h5g_2create[] = "(ObjectID loc, STRING name or None, PropLCID lcpl=None,\n        PropGCID gcpl=None)\n    => GroupID\n\n    Create a new group, under a given parent group.  If name is None,\n    an anonymous group will be created in the file.\n    ";
+static PyMethodDef __pyx_mdef_4h5py_3h5g_3create = {__Pyx_NAMESTR("create"), (PyCFunction)__pyx_pw_4h5py_3h5g_3create, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5g_2create)};
+static PyObject *__pyx_pw_4h5py_3h5g_3create(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_loc = 0;
+  PyObject *__pyx_v_name = 0;
+  struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_lcpl = 0;
+  struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_gcpl = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("create (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__loc,&__pyx_n_s__name,&__pyx_n_s__lcpl,&__pyx_n_s__gcpl,0};
+    PyObject* values[4] = {0,0,0,0};
+
+    /* "h5py/h5g.pyx":130
+ *     return GroupID.open(H5Gopen(loc.id, name))
+ * 
+ * def create(ObjectID loc not None, object name, PropID lcpl=None,             # <<<<<<<<<<<<<<
+ *            PropID gcpl=None):
+ *     """(ObjectID loc, STRING name or None, PropLCID lcpl=None,
+ */
+    values[2] = (PyObject *)((struct __pyx_obj_4h5py_3h5p_PropID *)Py_None);
+
+    /* "h5py/h5g.pyx":131
+ * 
+ * def create(ObjectID loc not None, object name, PropID lcpl=None,
+ *            PropID gcpl=None):             # <<<<<<<<<<<<<<
+ *     """(ObjectID loc, STRING name or None, PropLCID lcpl=None,
+ *         PropGCID gcpl=None)
+ */
+    values[3] = (PyObject *)((struct __pyx_obj_4h5py_3h5p_PropID *)Py_None);
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__loc)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__name)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("create", 0, 2, 4, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+        case  2:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__lcpl);
+          if (value) { values[2] = value; kw_args--; }
+        }
+        case  3:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__gcpl);
+          if (value) { values[3] = value; kw_args--; }
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "create") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else {
+      switch (PyTuple_GET_SIZE(__pyx_args)) {
+        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+    }
+    __pyx_v_loc = ((struct __pyx_obj_4h5py_8_objects_ObjectID *)values[0]);
+    __pyx_v_name = values[1];
+    __pyx_v_lcpl = ((struct __pyx_obj_4h5py_3h5p_PropID *)values[2]);
+    __pyx_v_gcpl = ((struct __pyx_obj_4h5py_3h5p_PropID *)values[3]);
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("create", 0, 2, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5g.create", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_loc), __pyx_ptype_4h5py_8_objects_ObjectID, 0, "loc", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_lcpl), __pyx_ptype_4h5py_3h5p_PropID, 1, "lcpl", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_gcpl), __pyx_ptype_4h5py_3h5p_PropID, 1, "gcpl", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_pf_4h5py_3h5g_2create(__pyx_self, __pyx_v_loc, __pyx_v_name, __pyx_v_lcpl, __pyx_v_gcpl);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5g.pyx":130
+ *     return GroupID.open(H5Gopen(loc.id, name))
+ * 
+ * def create(ObjectID loc not None, object name, PropID lcpl=None,             # <<<<<<<<<<<<<<
+ *            PropID gcpl=None):
+ *     """(ObjectID loc, STRING name or None, PropLCID lcpl=None,
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5g_2create(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_loc, PyObject *__pyx_v_name, struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_lcpl, struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_gcpl) {
+  hid_t __pyx_v_gid;
+  char *__pyx_v_cname;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  char *__pyx_t_2;
+  hid_t __pyx_t_3;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("create", 0);
+
+  /* "h5py/h5g.pyx":140
+ *     """
+ *     cdef hid_t gid
+ *     cdef char* cname = NULL             # <<<<<<<<<<<<<<
+ *     if name is not None:
+ *         cname = name
+ */
+  __pyx_v_cname = NULL;
+
+  /* "h5py/h5g.pyx":141
+ *     cdef hid_t gid
+ *     cdef char* cname = NULL
+ *     if name is not None:             # <<<<<<<<<<<<<<
+ *         cname = name
+ * 
+ */
+  __pyx_t_1 = (__pyx_v_name != Py_None);
+  if (__pyx_t_1) {
+
+    /* "h5py/h5g.pyx":142
+ *     cdef char* cname = NULL
+ *     if name is not None:
+ *         cname = name             # <<<<<<<<<<<<<<
+ * 
+ *     if cname != NULL:
+ */
+    __pyx_t_2 = PyBytes_AsString(__pyx_v_name); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_v_cname = __pyx_t_2;
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  /* "h5py/h5g.pyx":144
+ *         cname = name
+ * 
+ *     if cname != NULL:             # <<<<<<<<<<<<<<
+ *         gid = H5Gcreate2(loc.id, cname, pdefault(lcpl), pdefault(gcpl), H5P_DEFAULT)
+ *     else:
+ */
+  __pyx_t_1 = (__pyx_v_cname != NULL);
+  if (__pyx_t_1) {
+
+    /* "h5py/h5g.pyx":145
+ * 
+ *     if cname != NULL:
+ *         gid = H5Gcreate2(loc.id, cname, pdefault(lcpl), pdefault(gcpl), H5P_DEFAULT)             # <<<<<<<<<<<<<<
+ *     else:
+ *         gid = H5Gcreate_anon(loc.id, pdefault(gcpl), H5P_DEFAULT)
+ */
+    __pyx_t_3 = __pyx_f_4h5py_4defs_H5Gcreate2(__pyx_v_loc->id, __pyx_v_cname, __pyx_f_4h5py_8_objects_pdefault(((struct __pyx_obj_4h5py_8_objects_ObjectID *)__pyx_v_lcpl)), __pyx_f_4h5py_8_objects_pdefault(((struct __pyx_obj_4h5py_8_objects_ObjectID *)__pyx_v_gcpl)), H5P_DEFAULT); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_v_gid = __pyx_t_3;
+    goto __pyx_L4;
+  }
+  /*else*/ {
+
+    /* "h5py/h5g.pyx":147
+ *         gid = H5Gcreate2(loc.id, cname, pdefault(lcpl), pdefault(gcpl), H5P_DEFAULT)
+ *     else:
+ *         gid = H5Gcreate_anon(loc.id, pdefault(gcpl), H5P_DEFAULT)             # <<<<<<<<<<<<<<
+ * 
+ *     return GroupID.open(gid)
+ */
+    __pyx_t_3 = __pyx_f_4h5py_4defs_H5Gcreate_anon(__pyx_v_loc->id, __pyx_f_4h5py_8_objects_pdefault(((struct __pyx_obj_4h5py_8_objects_ObjectID *)__pyx_v_gcpl)), H5P_DEFAULT); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 147; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_v_gid = __pyx_t_3;
+  }
+  __pyx_L4:;
+
+  /* "h5py/h5g.pyx":149
+ *         gid = H5Gcreate_anon(loc.id, pdefault(gcpl), H5P_DEFAULT)
+ * 
+ *     return GroupID.open(gid)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_4 = PyObject_GetAttr(((PyObject *)((PyObject*)__pyx_ptype_4h5py_3h5g_GroupID)), __pyx_n_s__open); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = __Pyx_PyInt_to_py_hid_t(__pyx_v_gid); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_6);
+  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5);
+  __Pyx_GIVEREF(__pyx_t_5);
+  __pyx_t_5 = 0;
+  __pyx_t_5 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
+  __pyx_r = __pyx_t_5;
+  __pyx_t_5 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_AddTraceback("h5py.h5g.create", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static int __pyx_pw_4h5py_3h5g_13_GroupVisitor_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_4h5py_3h5g_13_GroupVisitor_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_func = 0;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__func,0};
+    PyObject* values[1] = {0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__func)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 157; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+    }
+    __pyx_v_func = values[0];
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 157; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5g._GroupVisitor.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return -1;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_3h5g_13_GroupVisitor___init__(((struct __pyx_obj_4h5py_3h5g__GroupVisitor *)__pyx_v_self), __pyx_v_func);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5g.pyx":157
+ *     cdef object retval
+ * 
+ *     def __init__(self, func):             # <<<<<<<<<<<<<<
+ *         self.func = func
+ *         self.retval = None
+ */
+
+static int __pyx_pf_4h5py_3h5g_13_GroupVisitor___init__(struct __pyx_obj_4h5py_3h5g__GroupVisitor *__pyx_v_self, PyObject *__pyx_v_func) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__init__", 0);
+
+  /* "h5py/h5g.pyx":158
+ * 
+ *     def __init__(self, func):
+ *         self.func = func             # <<<<<<<<<<<<<<
+ *         self.retval = None
+ * 
+ */
+  __Pyx_INCREF(__pyx_v_func);
+  __Pyx_GIVEREF(__pyx_v_func);
+  __Pyx_GOTREF(__pyx_v_self->func);
+  __Pyx_DECREF(__pyx_v_self->func);
+  __pyx_v_self->func = __pyx_v_func;
+
+  /* "h5py/h5g.pyx":159
+ *     def __init__(self, func):
+ *         self.func = func
+ *         self.retval = None             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t cb_group_iter(hid_t gid, char *name, void* vis_in) except 2:
+ */
+  __Pyx_INCREF(Py_None);
+  __Pyx_GIVEREF(Py_None);
+  __Pyx_GOTREF(__pyx_v_self->retval);
+  __Pyx_DECREF(__pyx_v_self->retval);
+  __pyx_v_self->retval = Py_None;
+
+  __pyx_r = 0;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5g.pyx":161
+ *         self.retval = None
+ * 
+ * cdef herr_t cb_group_iter(hid_t gid, char *name, void* vis_in) except 2:             # <<<<<<<<<<<<<<
+ * 
+ *     cdef _GroupVisitor vis = <_GroupVisitor>vis_in
+ */
+
+static herr_t __pyx_f_4h5py_3h5g_cb_group_iter(CYTHON_UNUSED hid_t __pyx_v_gid, char *__pyx_v_name, void *__pyx_v_vis_in) {
+  struct __pyx_obj_4h5py_3h5g__GroupVisitor *__pyx_v_vis = 0;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_t_3;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("cb_group_iter", 0);
+
+  /* "h5py/h5g.pyx":163
+ * cdef herr_t cb_group_iter(hid_t gid, char *name, void* vis_in) except 2:
+ * 
+ *     cdef _GroupVisitor vis = <_GroupVisitor>vis_in             # <<<<<<<<<<<<<<
+ * 
+ *     vis.retval = vis.func(name)
+ */
+  __Pyx_INCREF(((PyObject *)((struct __pyx_obj_4h5py_3h5g__GroupVisitor *)__pyx_v_vis_in)));
+  __pyx_v_vis = ((struct __pyx_obj_4h5py_3h5g__GroupVisitor *)__pyx_v_vis_in);
+
+  /* "h5py/h5g.pyx":165
+ *     cdef _GroupVisitor vis = <_GroupVisitor>vis_in
+ * 
+ *     vis.retval = vis.func(name)             # <<<<<<<<<<<<<<
+ * 
+ *     if vis.retval is not None:
+ */
+  __pyx_t_1 = PyBytes_FromString(__pyx_v_name); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 165; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 165; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_t_1));
+  __Pyx_GIVEREF(((PyObject *)__pyx_t_1));
+  __pyx_t_1 = 0;
+  __pyx_t_1 = PyObject_Call(__pyx_v_vis->func, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 165; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
+  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_GOTREF(__pyx_v_vis->retval);
+  __Pyx_DECREF(__pyx_v_vis->retval);
+  __pyx_v_vis->retval = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+  /* "h5py/h5g.pyx":167
+ *     vis.retval = vis.func(name)
+ * 
+ *     if vis.retval is not None:             # <<<<<<<<<<<<<<
+ *         return 1
+ *     return 0
+ */
+  __pyx_t_3 = (__pyx_v_vis->retval != Py_None);
+  if (__pyx_t_3) {
+
+    /* "h5py/h5g.pyx":168
+ * 
+ *     if vis.retval is not None:
+ *         return 1             # <<<<<<<<<<<<<<
+ *     return 0
+ * 
+ */
+    __pyx_r = 1;
+    goto __pyx_L0;
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  /* "h5py/h5g.pyx":169
+ *     if vis.retval is not None:
+ *         return 1
+ *     return 0             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_r = 0;
+  goto __pyx_L0;
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5g.cb_group_iter", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 2;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_vis);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5g_5iterate(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_4h5py_3h5g_4iterate[] = " (GroupID loc, CALLABLE func, UINT startidx=0, **kwds)\n    => Return value from func\n\n    Iterate a callable (function, method or callable object) over the\n    members of a group.  Your callable should have the signature::\n\n        func(STRING name) => Result\n\n    Returning None continues iteration; returning anything else aborts\n    iteration and returns that value. Keywords:\n\n    STRING obj_name (\".\")\n        Iterate over thi [...]
+static PyMethodDef __pyx_mdef_4h5py_3h5g_5iterate = {__Pyx_NAMESTR("iterate"), (PyCFunction)__pyx_pw_4h5py_3h5g_5iterate, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5g_4iterate)};
+static PyObject *__pyx_pw_4h5py_3h5g_5iterate(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  struct __pyx_obj_4h5py_3h5g_GroupID *__pyx_v_loc = 0;
+  PyObject *__pyx_v_func = 0;
+  int __pyx_v_startidx;
+  char *__pyx_v_obj_name;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("iterate (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__loc,&__pyx_n_s__func,&__pyx_n_s__startidx,&__pyx_n_s__obj_name,0};
+    PyObject* values[4] = {0,0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__loc)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__func)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("iterate", 0, 2, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+        case  2:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__startidx);
+          if (value) { values[2] = value; kw_args--; }
+        }
+      }
+      if (kw_args == 1) {
+        const Py_ssize_t index = 3;
+        PyObject* value = PyDict_GetItem(__pyx_kwds, *__pyx_pyargnames[index]);
+        if (value) { values[index] = value; kw_args--; }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "iterate") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else {
+      switch (PyTuple_GET_SIZE(__pyx_args)) {
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+    }
+    __pyx_v_loc = ((struct __pyx_obj_4h5py_3h5g_GroupID *)values[0]);
+    __pyx_v_func = values[1];
+    if (values[2]) {
+      __pyx_v_startidx = __Pyx_PyInt_AsInt(values[2]); if (unlikely((__pyx_v_startidx == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    } else {
+      __pyx_v_startidx = ((int)0);
+    }
+    if (values[3]) {
+      __pyx_v_obj_name = PyBytes_AsString(values[3]); if (unlikely((!__pyx_v_obj_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    } else {
+      __pyx_v_obj_name = ((char *)__pyx_k_1);
+    }
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("iterate", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5g.iterate", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_loc), __pyx_ptype_4h5py_3h5g_GroupID, 0, "loc", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_pf_4h5py_3h5g_4iterate(__pyx_self, __pyx_v_loc, __pyx_v_func, __pyx_v_startidx, __pyx_v_obj_name);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5g.pyx":172
+ * 
+ * 
+ * def iterate(GroupID loc not None, object func, int startidx=0, *,             # <<<<<<<<<<<<<<
+ *             char* obj_name='.'):
+ *     """ (GroupID loc, CALLABLE func, UINT startidx=0, **kwds)
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5g_4iterate(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_3h5g_GroupID *__pyx_v_loc, PyObject *__pyx_v_func, int __pyx_v_startidx, char *__pyx_v_obj_name) {
+  int __pyx_v_i;
+  struct __pyx_obj_4h5py_3h5g__GroupVisitor *__pyx_v_vis = 0;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  herr_t __pyx_t_4;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("iterate", 0);
+
+  /* "h5py/h5g.pyx":188
+ *         Iterate over this subgroup instead
+ *     """
+ *     if startidx < 0:             # <<<<<<<<<<<<<<
+ *         raise ValueError("Starting index must be non-negative")
+ * 
+ */
+  __pyx_t_1 = (__pyx_v_startidx < 0);
+  if (__pyx_t_1) {
+
+    /* "h5py/h5g.pyx":189
+ *     """
+ *     if startidx < 0:
+ *         raise ValueError("Starting index must be non-negative")             # <<<<<<<<<<<<<<
+ * 
+ *     cdef int i = startidx
+ */
+    __pyx_t_2 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 189; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 189; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  /* "h5py/h5g.pyx":191
+ *         raise ValueError("Starting index must be non-negative")
+ * 
+ *     cdef int i = startidx             # <<<<<<<<<<<<<<
+ *     cdef _GroupVisitor vis = _GroupVisitor(func)
+ * 
+ */
+  __pyx_v_i = __pyx_v_startidx;
+
+  /* "h5py/h5g.pyx":192
+ * 
+ *     cdef int i = startidx
+ *     cdef _GroupVisitor vis = _GroupVisitor(func)             # <<<<<<<<<<<<<<
+ * 
+ *     H5Giterate(loc.id, obj_name, &i, <H5G_iterate_t>cb_group_iter, <void*>vis)
+ */
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_INCREF(__pyx_v_func);
+  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_func);
+  __Pyx_GIVEREF(__pyx_v_func);
+  __pyx_t_3 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4h5py_3h5g__GroupVisitor)), ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
+  __pyx_v_vis = ((struct __pyx_obj_4h5py_3h5g__GroupVisitor *)__pyx_t_3);
+  __pyx_t_3 = 0;
+
+  /* "h5py/h5g.pyx":194
+ *     cdef _GroupVisitor vis = _GroupVisitor(func)
+ * 
+ *     H5Giterate(loc.id, obj_name, &i, <H5G_iterate_t>cb_group_iter, <void*>vis)             # <<<<<<<<<<<<<<
+ * 
+ *     return vis.retval
+ */
+  __pyx_t_4 = __pyx_f_4h5py_4defs_H5Giterate(__pyx_v_loc->__pyx_base.id, __pyx_v_obj_name, (&__pyx_v_i), ((H5G_iterate_t)__pyx_f_4h5py_3h5g_cb_group_iter), ((void *)__pyx_v_vis)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 194; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5g.pyx":196
+ *     H5Giterate(loc.id, obj_name, &i, <H5G_iterate_t>cb_group_iter, <void*>vis)
+ * 
+ *     return vis.retval             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_vis->retval);
+  __pyx_r = __pyx_v_vis->retval;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("h5py.h5g.iterate", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_vis);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5g_7get_objinfo(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_4h5py_3h5g_6get_objinfo[] = "(ObjectID obj, STRING name='.', BOOL follow_link=True) => GroupStat object\n\n    Obtain information about a named object.  If \"name\" is provided,\n    \"obj\" is taken to be a GroupID object containing the target.\n    The return value is a GroupStat object; see that class's docstring\n    for a description of its attributes.\n\n    If follow_link is True (default) and the object is a symbolic link,\n    the information returned descr [...]
+static PyMethodDef __pyx_mdef_4h5py_3h5g_7get_objinfo = {__Pyx_NAMESTR("get_objinfo"), (PyCFunction)__pyx_pw_4h5py_3h5g_7get_objinfo, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5g_6get_objinfo)};
+static PyObject *__pyx_pw_4h5py_3h5g_7get_objinfo(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_obj = 0;
+  PyObject *__pyx_v_name = 0;
+  int __pyx_v_follow_link;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_objinfo (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__obj,&__pyx_n_s__name,&__pyx_n_s__follow_link,0};
+    PyObject* values[3] = {0,0,0};
+    values[1] = ((PyObject *)__pyx_kp_b_1);
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__obj)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__name);
+          if (value) { values[1] = value; kw_args--; }
+        }
+        case  2:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__follow_link);
+          if (value) { values[2] = value; kw_args--; }
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_objinfo") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 199; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else {
+      switch (PyTuple_GET_SIZE(__pyx_args)) {
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+    }
+    __pyx_v_obj = ((struct __pyx_obj_4h5py_8_objects_ObjectID *)values[0]);
+    __pyx_v_name = values[1];
+    if (values[2]) {
+      __pyx_v_follow_link = __Pyx_PyInt_AsInt(values[2]); if (unlikely((__pyx_v_follow_link == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 199; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    } else {
+      __pyx_v_follow_link = ((int)1);
+    }
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("get_objinfo", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 199; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5g.get_objinfo", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_obj), __pyx_ptype_4h5py_8_objects_ObjectID, 0, "obj", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 199; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_pf_4h5py_3h5g_6get_objinfo(__pyx_self, __pyx_v_obj, __pyx_v_name, __pyx_v_follow_link);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5g.pyx":199
+ * 
+ * 
+ * def get_objinfo(ObjectID obj not None, object name=b'.', int follow_link=1):             # <<<<<<<<<<<<<<
+ *     """(ObjectID obj, STRING name='.', BOOL follow_link=True) => GroupStat object
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5g_6get_objinfo(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_obj, PyObject *__pyx_v_name, int __pyx_v_follow_link) {
+  struct __pyx_obj_4h5py_3h5g_GroupStat *__pyx_v_statobj = 0;
+  char *__pyx_v__name;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  char *__pyx_t_2;
+  herr_t __pyx_t_3;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_objinfo", 0);
+
+  /* "h5py/h5g.pyx":212
+ *     """
+ *     cdef GroupStat statobj
+ *     statobj = GroupStat()             # <<<<<<<<<<<<<<
+ *     cdef char* _name
+ *     _name = name
+ */
+  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4h5py_3h5g_GroupStat)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_statobj = ((struct __pyx_obj_4h5py_3h5g_GroupStat *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "h5py/h5g.pyx":214
+ *     statobj = GroupStat()
+ *     cdef char* _name
+ *     _name = name             # <<<<<<<<<<<<<<
+ * 
+ *     H5Gget_objinfo(obj.id, _name, follow_link, &statobj.infostruct)
+ */
+  __pyx_t_2 = PyBytes_AsString(__pyx_v_name); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 214; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v__name = __pyx_t_2;
+
+  /* "h5py/h5g.pyx":216
+ *     _name = name
+ * 
+ *     H5Gget_objinfo(obj.id, _name, follow_link, &statobj.infostruct)             # <<<<<<<<<<<<<<
+ * 
+ *     return statobj
+ */
+  __pyx_t_3 = __pyx_f_4h5py_4defs_H5Gget_objinfo(__pyx_v_obj->id, __pyx_v__name, __pyx_v_follow_link, (&__pyx_v_statobj->infostruct)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 216; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5g.pyx":218
+ *     H5Gget_objinfo(obj.id, _name, follow_link, &statobj.infostruct)
+ * 
+ *     return statobj             # <<<<<<<<<<<<<<
+ * 
+ * # === Group member management =================================================
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(((PyObject *)__pyx_v_statobj));
+  __pyx_r = ((PyObject *)__pyx_v_statobj);
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py.h5g.get_objinfo", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_statobj);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static int __pyx_pw_4h5py_3h5g_7GroupID_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_4h5py_3h5g_7GroupID_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  hid_t __pyx_v_id_;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__id_,0};
+    PyObject* values[1] = {0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__id_)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 246; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+    }
+    __pyx_v_id_ = __Pyx_PyInt_from_py_hid_t(values[0]); if (unlikely((__pyx_v_id_ == (hid_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 246; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 246; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5g.GroupID.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return -1;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_3h5g_7GroupID___init__(((struct __pyx_obj_4h5py_3h5g_GroupID *)__pyx_v_self), __pyx_v_id_);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5g.pyx":246
+ *     """
+ * 
+ *     def __init__(self, hid_t id_):             # <<<<<<<<<<<<<<
+ *         import h5l
+ *         self.links = h5l.LinkProxy(id_)
+ */
+
+static int __pyx_pf_4h5py_3h5g_7GroupID___init__(struct __pyx_obj_4h5py_3h5g_GroupID *__pyx_v_self, hid_t __pyx_v_id_) {
+  PyObject *__pyx_v_h5l = NULL;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__init__", 0);
+
+  /* "h5py/h5g.pyx":247
+ * 
+ *     def __init__(self, hid_t id_):
+ *         import h5l             # <<<<<<<<<<<<<<
+ *         self.links = h5l.LinkProxy(id_)
+ * 
+ */
+  __pyx_t_1 = __Pyx_Import(((PyObject *)__pyx_n_s__h5l), 0, -1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 247; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_h5l = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+  /* "h5py/h5g.pyx":248
+ *     def __init__(self, hid_t id_):
+ *         import h5l
+ *         self.links = h5l.LinkProxy(id_)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_1 = PyObject_GetAttr(__pyx_v_h5l, __pyx_n_s__LinkProxy); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 248; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyInt_to_py_hid_t(__pyx_v_id_); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 248; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 248; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2);
+  __Pyx_GIVEREF(__pyx_t_2);
+  __pyx_t_2 = 0;
+  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 248; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
+  __Pyx_GIVEREF(__pyx_t_2);
+  __Pyx_GOTREF(__pyx_v_self->links);
+  __Pyx_DECREF(__pyx_v_self->links);
+  __pyx_v_self->links = __pyx_t_2;
+  __pyx_t_2 = 0;
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("h5py.h5g.GroupID.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_h5l);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5g_7GroupID_3_close(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5g_7GroupID_2_close[] = "()\n\n        Terminate access through this identifier.  You shouldn't have to\n        call this manually; group identifiers are automatically released\n        when their Python wrappers are freed.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5g_7GroupID_3_close(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("_close (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5g_7GroupID_2_close(((struct __pyx_obj_4h5py_3h5g_GroupID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5g.pyx":251
+ * 
+ * 
+ *     def _close(self):             # <<<<<<<<<<<<<<
+ *         """()
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5g_7GroupID_2_close(struct __pyx_obj_4h5py_3h5g_GroupID *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_close", 0);
+
+  /* "h5py/h5g.pyx":258
+ *         when their Python wrappers are freed.
+ *         """
+ *         with _objects.registry.lock:             # <<<<<<<<<<<<<<
+ *             H5Gclose(self.id)
+ *             if not self.valid:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s___objects); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 258; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__registry); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 258; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __pyx_t_1 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__lock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 258; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 258; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 258; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_4 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 258; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/h5g.pyx":259
+ *         """
+ *         with _objects.registry.lock:
+ *             H5Gclose(self.id)             # <<<<<<<<<<<<<<
+ *             if not self.valid:
+ *                 del _objects.registry[self.id]
+ */
+          __pyx_t_8 = __pyx_f_4h5py_4defs_H5Gclose(__pyx_v_self->__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 259; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+
+          /* "h5py/h5g.pyx":260
+ *         with _objects.registry.lock:
+ *             H5Gclose(self.id)
+ *             if not self.valid:             # <<<<<<<<<<<<<<
+ *                 del _objects.registry[self.id]
+ * 
+ */
+          __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__valid); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 260; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 260; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __pyx_t_10 = (!__pyx_t_9);
+          if (__pyx_t_10) {
+
+            /* "h5py/h5g.pyx":261
+ *             H5Gclose(self.id)
+ *             if not self.valid:
+ *                 del _objects.registry[self.id]             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+            __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s___objects); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 261; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            __Pyx_GOTREF(__pyx_t_1);
+            __pyx_t_4 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__registry); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 261; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            __Pyx_GOTREF(__pyx_t_4);
+            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+            if (__Pyx_DelItemInt(__pyx_t_4, __pyx_v_self->__pyx_base.id, sizeof(hid_t), __Pyx_PyInt_to_py_hid_t) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 261; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+        /* "h5py/h5g.pyx":258
+ *         when their Python wrappers are freed.
+ *         """
+ *         with _objects.registry.lock:             # <<<<<<<<<<<<<<
+ *             H5Gclose(self.id)
+ *             if not self.valid:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.h5g.GroupID._close", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_1, &__pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 258; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_2);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 258; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_2);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_2);
+          __Pyx_GIVEREF(__pyx_t_2);
+          __pyx_t_12 = PyObject_Call(__pyx_t_3, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 258; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_10 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 258; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_9 = (!__pyx_t_10);
+          if (__pyx_t_9) {
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_2);
+            __Pyx_ErrRestore(__pyx_t_4, __pyx_t_1, __pyx_t_2);
+            __pyx_t_4 = 0; __pyx_t_1 = 0; __pyx_t_2 = 0; 
+            {__pyx_filename = __pyx_f[0]; __pyx_lineno = 258; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L18;
+          }
+          __pyx_L18:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      if (__pyx_t_3) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_3, __pyx_k_tuple_4, NULL);
+        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 258; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 258; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+    }
+    goto __pyx_L19;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    goto __pyx_L1_error;
+    __pyx_L19:;
+  }
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.h5g.GroupID._close", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5g_7GroupID_5link(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_4h5py_3h5g_7GroupID_4link[] = "(STRING current_name, STRING new_name, INT link_type=LINK_HARD,\n        GroupID remote=None)\n\n        Create a new hard or soft link.  current_name identifies\n        the link target (object the link will point to).  The new link is\n        identified by new_name and (optionally) another group \"remote\".\n\n        Link types are:\n\n        LINK_HARD\n            Hard link to existing object (default)\n\n        LINK_SOFT\n      [...]
+static PyObject *__pyx_pw_4h5py_3h5g_7GroupID_5link(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  char *__pyx_v_current_name;
+  char *__pyx_v_new_name;
+  int __pyx_v_link_type;
+  struct __pyx_obj_4h5py_3h5g_GroupID *__pyx_v_remote = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("link (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__current_name,&__pyx_n_s__new_name,&__pyx_n_s__link_type,&__pyx_n_s__remote,0};
+    PyObject* values[4] = {0,0,0,0};
+
+    /* "h5py/h5g.pyx":265
+ * 
+ *     def link(self, char* current_name, char* new_name,
+ *              int link_type=H5G_LINK_HARD, GroupID remote=None):             # <<<<<<<<<<<<<<
+ *         """(STRING current_name, STRING new_name, INT link_type=LINK_HARD,
+ *         GroupID remote=None)
+ */
+    values[3] = (PyObject *)((struct __pyx_obj_4h5py_3h5g_GroupID *)Py_None);
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__current_name)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__new_name)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("link", 0, 2, 4, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 264; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+        case  2:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__link_type);
+          if (value) { values[2] = value; kw_args--; }
+        }
+        case  3:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__remote);
+          if (value) { values[3] = value; kw_args--; }
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "link") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 264; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else {
+      switch (PyTuple_GET_SIZE(__pyx_args)) {
+        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+    }
+    __pyx_v_current_name = PyBytes_AsString(values[0]); if (unlikely((!__pyx_v_current_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 264; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_new_name = PyBytes_AsString(values[1]); if (unlikely((!__pyx_v_new_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 264; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    if (values[2]) {
+      __pyx_v_link_type = __Pyx_PyInt_AsInt(values[2]); if (unlikely((__pyx_v_link_type == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 265; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    } else {
+      __pyx_v_link_type = __pyx_k_5;
+    }
+    __pyx_v_remote = ((struct __pyx_obj_4h5py_3h5g_GroupID *)values[3]);
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("link", 0, 2, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 264; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5g.GroupID.link", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_remote), __pyx_ptype_4h5py_3h5g_GroupID, 1, "remote", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 265; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_pf_4h5py_3h5g_7GroupID_4link(((struct __pyx_obj_4h5py_3h5g_GroupID *)__pyx_v_self), __pyx_v_current_name, __pyx_v_new_name, __pyx_v_link_type, __pyx_v_remote);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5g.pyx":264
+ * 
+ * 
+ *     def link(self, char* current_name, char* new_name,             # <<<<<<<<<<<<<<
+ *              int link_type=H5G_LINK_HARD, GroupID remote=None):
+ *         """(STRING current_name, STRING new_name, INT link_type=LINK_HARD,
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5g_7GroupID_4link(struct __pyx_obj_4h5py_3h5g_GroupID *__pyx_v_self, char *__pyx_v_current_name, char *__pyx_v_new_name, int __pyx_v_link_type, struct __pyx_obj_4h5py_3h5g_GroupID *__pyx_v_remote) {
+  hid_t __pyx_v_remote_id;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  hid_t __pyx_t_2;
+  herr_t __pyx_t_3;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("link", 0);
+
+  /* "h5py/h5g.pyx":282
+ *         """
+ *         cdef hid_t remote_id
+ *         if remote is None:             # <<<<<<<<<<<<<<
+ *             remote_id = self.id
+ *         else:
+ */
+  __pyx_t_1 = (((PyObject *)__pyx_v_remote) == Py_None);
+  if (__pyx_t_1) {
+
+    /* "h5py/h5g.pyx":283
+ *         cdef hid_t remote_id
+ *         if remote is None:
+ *             remote_id = self.id             # <<<<<<<<<<<<<<
+ *         else:
+ *             remote_id = remote.id
+ */
+    __pyx_t_2 = __pyx_v_self->__pyx_base.id;
+    __pyx_v_remote_id = __pyx_t_2;
+    goto __pyx_L3;
+  }
+  /*else*/ {
+
+    /* "h5py/h5g.pyx":285
+ *             remote_id = self.id
+ *         else:
+ *             remote_id = remote.id             # <<<<<<<<<<<<<<
+ * 
+ *         H5Glink2(self.id, current_name, <H5G_link_t>link_type, remote_id, new_name)
+ */
+    __pyx_t_2 = __pyx_v_remote->__pyx_base.id;
+    __pyx_v_remote_id = __pyx_t_2;
+  }
+  __pyx_L3:;
+
+  /* "h5py/h5g.pyx":287
+ *             remote_id = remote.id
+ * 
+ *         H5Glink2(self.id, current_name, <H5G_link_t>link_type, remote_id, new_name)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_3 = __pyx_f_4h5py_4defs_H5Glink2(__pyx_v_self->__pyx_base.id, __pyx_v_current_name, ((H5G_link_t)__pyx_v_link_type), __pyx_v_remote_id, __pyx_v_new_name); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 287; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py.h5g.GroupID.link", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5g_7GroupID_7unlink(PyObject *__pyx_v_self, PyObject *__pyx_arg_name); /*proto*/
+static char __pyx_doc_4h5py_3h5g_7GroupID_6unlink[] = "(STRING name)\n\n        Remove a link to an object from this group.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5g_7GroupID_7unlink(PyObject *__pyx_v_self, PyObject *__pyx_arg_name) {
+  char *__pyx_v_name;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("unlink (wrapper)", 0);
+  assert(__pyx_arg_name); {
+    __pyx_v_name = PyBytes_AsString(__pyx_arg_name); if (unlikely((!__pyx_v_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 290; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5g.GroupID.unlink", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_3h5g_7GroupID_6unlink(((struct __pyx_obj_4h5py_3h5g_GroupID *)__pyx_v_self), ((char *)__pyx_v_name));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5g.pyx":290
+ * 
+ * 
+ *     def unlink(self, char* name):             # <<<<<<<<<<<<<<
+ *         """(STRING name)
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5g_7GroupID_6unlink(struct __pyx_obj_4h5py_3h5g_GroupID *__pyx_v_self, char *__pyx_v_name) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("unlink", 0);
+
+  /* "h5py/h5g.pyx":295
+ *         Remove a link to an object from this group.
+ *         """
+ *         H5Gunlink(self.id, name)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Gunlink(__pyx_v_self->__pyx_base.id, __pyx_v_name); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 295; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py.h5g.GroupID.unlink", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5g_7GroupID_9move(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_4h5py_3h5g_7GroupID_8move[] = "(STRING current_name, STRING new_name, GroupID remote=None)\n\n        Relink an object.  current_name identifies the object.\n        new_name and (optionally) another group \"remote\" determine\n        where it should be moved.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5g_7GroupID_9move(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  char *__pyx_v_current_name;
+  char *__pyx_v_new_name;
+  struct __pyx_obj_4h5py_3h5g_GroupID *__pyx_v_remote = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("move (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__current_name,&__pyx_n_s__new_name,&__pyx_n_s__remote,0};
+    PyObject* values[3] = {0,0,0};
+
+    /* "h5py/h5g.pyx":298
+ * 
+ * 
+ *     def move(self, char* current_name, char* new_name, GroupID remote=None):             # <<<<<<<<<<<<<<
+ *         """(STRING current_name, STRING new_name, GroupID remote=None)
+ * 
+ */
+    values[2] = (PyObject *)((struct __pyx_obj_4h5py_3h5g_GroupID *)Py_None);
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__current_name)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__new_name)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("move", 0, 2, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 298; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+        case  2:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__remote);
+          if (value) { values[2] = value; kw_args--; }
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "move") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 298; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else {
+      switch (PyTuple_GET_SIZE(__pyx_args)) {
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+    }
+    __pyx_v_current_name = PyBytes_AsString(values[0]); if (unlikely((!__pyx_v_current_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 298; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_new_name = PyBytes_AsString(values[1]); if (unlikely((!__pyx_v_new_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 298; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_remote = ((struct __pyx_obj_4h5py_3h5g_GroupID *)values[2]);
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("move", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 298; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5g.GroupID.move", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_remote), __pyx_ptype_4h5py_3h5g_GroupID, 1, "remote", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 298; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_pf_4h5py_3h5g_7GroupID_8move(((struct __pyx_obj_4h5py_3h5g_GroupID *)__pyx_v_self), __pyx_v_current_name, __pyx_v_new_name, __pyx_v_remote);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_4h5py_3h5g_7GroupID_8move(struct __pyx_obj_4h5py_3h5g_GroupID *__pyx_v_self, char *__pyx_v_current_name, char *__pyx_v_new_name, struct __pyx_obj_4h5py_3h5g_GroupID *__pyx_v_remote) {
+  hid_t __pyx_v_remote_id;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  hid_t __pyx_t_2;
+  herr_t __pyx_t_3;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("move", 0);
+
+  /* "h5py/h5g.pyx":306
+ *         """
+ *         cdef hid_t remote_id
+ *         if remote is None:             # <<<<<<<<<<<<<<
+ *             remote_id = self.id
+ *         else:
+ */
+  __pyx_t_1 = (((PyObject *)__pyx_v_remote) == Py_None);
+  if (__pyx_t_1) {
+
+    /* "h5py/h5g.pyx":307
+ *         cdef hid_t remote_id
+ *         if remote is None:
+ *             remote_id = self.id             # <<<<<<<<<<<<<<
+ *         else:
+ *             remote_id = remote.id
+ */
+    __pyx_t_2 = __pyx_v_self->__pyx_base.id;
+    __pyx_v_remote_id = __pyx_t_2;
+    goto __pyx_L3;
+  }
+  /*else*/ {
+
+    /* "h5py/h5g.pyx":309
+ *             remote_id = self.id
+ *         else:
+ *             remote_id = remote.id             # <<<<<<<<<<<<<<
+ * 
+ *         H5Gmove2(self.id, current_name, remote_id, new_name)
+ */
+    __pyx_t_2 = __pyx_v_remote->__pyx_base.id;
+    __pyx_v_remote_id = __pyx_t_2;
+  }
+  __pyx_L3:;
+
+  /* "h5py/h5g.pyx":311
+ *             remote_id = remote.id
+ * 
+ *         H5Gmove2(self.id, current_name, remote_id, new_name)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_3 = __pyx_f_4h5py_4defs_H5Gmove2(__pyx_v_self->__pyx_base.id, __pyx_v_current_name, __pyx_v_remote_id, __pyx_v_new_name); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 311; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py.h5g.GroupID.move", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5g_7GroupID_11get_num_objs(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5g_7GroupID_10get_num_objs[] = "() => INT number_of_objects\n\n        Get the number of objects directly attached to a given group.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5g_7GroupID_11get_num_objs(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_num_objs (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5g_7GroupID_10get_num_objs(((struct __pyx_obj_4h5py_3h5g_GroupID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5g.pyx":314
+ * 
+ * 
+ *     def get_num_objs(self):             # <<<<<<<<<<<<<<
+ *         """() => INT number_of_objects
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5g_7GroupID_10get_num_objs(struct __pyx_obj_4h5py_3h5g_GroupID *__pyx_v_self) {
+  hsize_t __pyx_v_size;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_num_objs", 0);
+
+  /* "h5py/h5g.pyx":320
+ *         """
+ *         cdef hsize_t size
+ *         H5Gget_num_objs(self.id, &size)             # <<<<<<<<<<<<<<
+ *         return size
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Gget_num_objs(__pyx_v_self->__pyx_base.id, (&__pyx_v_size)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 320; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5g.pyx":321
+ *         cdef hsize_t size
+ *         H5Gget_num_objs(self.id, &size)
+ *         return size             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_2 = __Pyx_PyInt_to_py_hsize_t(__pyx_v_size); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 321; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5g.GroupID.get_num_objs", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5g_7GroupID_13get_objname_by_idx(PyObject *__pyx_v_self, PyObject *__pyx_arg_idx); /*proto*/
+static char __pyx_doc_4h5py_3h5g_7GroupID_12get_objname_by_idx[] = "(INT idx) => STRING\n\n        Get the name of a group member given its zero-based index.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5g_7GroupID_13get_objname_by_idx(PyObject *__pyx_v_self, PyObject *__pyx_arg_idx) {
+  hsize_t __pyx_v_idx;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_objname_by_idx (wrapper)", 0);
+  assert(__pyx_arg_idx); {
+    __pyx_v_idx = __Pyx_PyInt_from_py_hsize_t(__pyx_arg_idx); if (unlikely((__pyx_v_idx == (hsize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 324; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5g.GroupID.get_objname_by_idx", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_3h5g_7GroupID_12get_objname_by_idx(((struct __pyx_obj_4h5py_3h5g_GroupID *)__pyx_v_self), ((hsize_t)__pyx_v_idx));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5g.pyx":324
+ * 
+ * 
+ *     def get_objname_by_idx(self, hsize_t idx):             # <<<<<<<<<<<<<<
+ *         """(INT idx) => STRING
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5g_7GroupID_12get_objname_by_idx(struct __pyx_obj_4h5py_3h5g_GroupID *__pyx_v_self, hsize_t __pyx_v_idx) {
+  int __pyx_v_size;
+  char *__pyx_v_buf;
+  char *__pyx_v_pystring;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  void *__pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_objname_by_idx", 0);
+
+  /* "h5py/h5g.pyx":331
+ *         cdef int size
+ *         cdef char* buf
+ *         buf = NULL             # <<<<<<<<<<<<<<
+ * 
+ *         size = H5Gget_objname_by_idx(self.id, idx, NULL, 0)
+ */
+  __pyx_v_buf = NULL;
+
+  /* "h5py/h5g.pyx":333
+ *         buf = NULL
+ * 
+ *         size = H5Gget_objname_by_idx(self.id, idx, NULL, 0)             # <<<<<<<<<<<<<<
+ * 
+ *         buf = <char*>emalloc(sizeof(char)*(size+1))
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Gget_objname_by_idx(__pyx_v_self->__pyx_base.id, __pyx_v_idx, NULL, 0); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 333; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v_size = __pyx_t_1;
+
+  /* "h5py/h5g.pyx":335
+ *         size = H5Gget_objname_by_idx(self.id, idx, NULL, 0)
+ * 
+ *         buf = <char*>emalloc(sizeof(char)*(size+1))             # <<<<<<<<<<<<<<
+ *         try:
+ *             H5Gget_objname_by_idx(self.id, idx, buf, size+1)
+ */
+  __pyx_t_2 = __pyx_f_4h5py_5utils_emalloc(((sizeof(char)) * (__pyx_v_size + 1))); if (unlikely(__pyx_t_2 == NULL && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 335; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v_buf = ((char *)__pyx_t_2);
+
+  /* "h5py/h5g.pyx":336
+ * 
+ *         buf = <char*>emalloc(sizeof(char)*(size+1))
+ *         try:             # <<<<<<<<<<<<<<
+ *             H5Gget_objname_by_idx(self.id, idx, buf, size+1)
+ *             pystring = buf
+ */
+  /*try:*/ {
+
+    /* "h5py/h5g.pyx":337
+ *         buf = <char*>emalloc(sizeof(char)*(size+1))
+ *         try:
+ *             H5Gget_objname_by_idx(self.id, idx, buf, size+1)             # <<<<<<<<<<<<<<
+ *             pystring = buf
+ *             return pystring
+ */
+    __pyx_t_1 = __pyx_f_4h5py_4defs_H5Gget_objname_by_idx(__pyx_v_self->__pyx_base.id, __pyx_v_idx, __pyx_v_buf, (__pyx_v_size + 1)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 337; __pyx_clineno = __LINE__; goto __pyx_L4;}
+
+    /* "h5py/h5g.pyx":338
+ *         try:
+ *             H5Gget_objname_by_idx(self.id, idx, buf, size+1)
+ *             pystring = buf             # <<<<<<<<<<<<<<
+ *             return pystring
+ *         finally:
+ */
+    __pyx_v_pystring = __pyx_v_buf;
+
+    /* "h5py/h5g.pyx":339
+ *             H5Gget_objname_by_idx(self.id, idx, buf, size+1)
+ *             pystring = buf
+ *             return pystring             # <<<<<<<<<<<<<<
+ *         finally:
+ *             efree(buf)
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_3 = PyBytes_FromString(__pyx_v_pystring); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 339; __pyx_clineno = __LINE__; goto __pyx_L4;}
+    __Pyx_GOTREF(((PyObject *)__pyx_t_3));
+    __pyx_r = ((PyObject *)__pyx_t_3);
+    __pyx_t_3 = 0;
+    goto __pyx_L3;
+  }
+
+  /* "h5py/h5g.pyx":341
+ *             return pystring
+ *         finally:
+ *             efree(buf)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  /*finally:*/ {
+    int __pyx_why;
+    PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb;
+    int __pyx_exc_lineno;
+    __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
+    __pyx_why = 0; goto __pyx_L5;
+    __pyx_L3: __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
+    __pyx_why = 3; goto __pyx_L5;
+    __pyx_L4: {
+      __pyx_why = 4;
+      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb);
+      __pyx_exc_lineno = __pyx_lineno;
+      goto __pyx_L5;
+    }
+    __pyx_L5:;
+    __pyx_f_4h5py_5utils_efree(__pyx_v_buf);
+    switch (__pyx_why) {
+      case 3: goto __pyx_L0;
+      case 4: {
+        __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb);
+        __pyx_lineno = __pyx_exc_lineno;
+        __pyx_exc_type = 0;
+        __pyx_exc_value = 0;
+        __pyx_exc_tb = 0;
+        goto __pyx_L1_error;
+      }
+    }
+  }
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("h5py.h5g.GroupID.get_objname_by_idx", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5g_7GroupID_15get_objtype_by_idx(PyObject *__pyx_v_self, PyObject *__pyx_arg_idx); /*proto*/
+static char __pyx_doc_4h5py_3h5g_7GroupID_14get_objtype_by_idx[] = "(INT idx) => INT object_type_code\n\n        Get the type of an object attached to a group, given its zero-based\n        index.  Possible return values are:\n\n        - LINK\n        - GROUP\n        - DATASET\n        - TYPE\n        ";
+static PyObject *__pyx_pw_4h5py_3h5g_7GroupID_15get_objtype_by_idx(PyObject *__pyx_v_self, PyObject *__pyx_arg_idx) {
+  hsize_t __pyx_v_idx;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_objtype_by_idx (wrapper)", 0);
+  assert(__pyx_arg_idx); {
+    __pyx_v_idx = __Pyx_PyInt_from_py_hsize_t(__pyx_arg_idx); if (unlikely((__pyx_v_idx == (hsize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 344; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5g.GroupID.get_objtype_by_idx", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_3h5g_7GroupID_14get_objtype_by_idx(((struct __pyx_obj_4h5py_3h5g_GroupID *)__pyx_v_self), ((hsize_t)__pyx_v_idx));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5g.pyx":344
+ * 
+ * 
+ *     def get_objtype_by_idx(self, hsize_t idx):             # <<<<<<<<<<<<<<
+ *         """(INT idx) => INT object_type_code
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5g_7GroupID_14get_objtype_by_idx(struct __pyx_obj_4h5py_3h5g_GroupID *__pyx_v_self, hsize_t __pyx_v_idx) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_objtype_by_idx", 0);
+
+  /* "h5py/h5g.pyx":355
+ *         - TYPE
+ *         """
+ *         return <int>H5Gget_objtype_by_idx(self.id, idx)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Gget_objtype_by_idx(__pyx_v_self->__pyx_base.id, __pyx_v_idx); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 355; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyInt_FromLong(((int)__pyx_t_1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 355; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5g.GroupID.get_objtype_by_idx", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5g_7GroupID_17get_linkval(PyObject *__pyx_v_self, PyObject *__pyx_arg_name); /*proto*/
+static char __pyx_doc_4h5py_3h5g_7GroupID_16get_linkval[] = "(STRING name) => STRING link_value\n\n        Retrieve the value (target name) of a symbolic link.\n        Limited to 2048 characters on Windows.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5g_7GroupID_17get_linkval(PyObject *__pyx_v_self, PyObject *__pyx_arg_name) {
+  char *__pyx_v_name;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_linkval (wrapper)", 0);
+  assert(__pyx_arg_name); {
+    __pyx_v_name = PyBytes_AsString(__pyx_arg_name); if (unlikely((!__pyx_v_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 358; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5g.GroupID.get_linkval", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_3h5g_7GroupID_16get_linkval(((struct __pyx_obj_4h5py_3h5g_GroupID *)__pyx_v_self), ((char *)__pyx_v_name));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5g.pyx":358
+ * 
+ * 
+ *     def get_linkval(self, char* name):             # <<<<<<<<<<<<<<
+ *         """(STRING name) => STRING link_value
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5g_7GroupID_16get_linkval(struct __pyx_obj_4h5py_3h5g_GroupID *__pyx_v_self, char *__pyx_v_name) {
+  char *__pyx_v_value;
+  H5G_stat_t __pyx_v_statbuf;
+  PyObject *__pyx_v_linklen = NULL;
+  char *__pyx_v_pyvalue;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  int __pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  size_t __pyx_t_5;
+  void *__pyx_t_6;
+  Py_ssize_t __pyx_t_7;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_linkval", 0);
+
+  /* "h5py/h5g.pyx":366
+ *         cdef char* value
+ *         cdef H5G_stat_t statbuf
+ *         value = NULL             # <<<<<<<<<<<<<<
+ * 
+ *         H5Gget_objinfo(self.id, name, 0, &statbuf)
+ */
+  __pyx_v_value = NULL;
+
+  /* "h5py/h5g.pyx":368
+ *         value = NULL
+ * 
+ *         H5Gget_objinfo(self.id, name, 0, &statbuf)             # <<<<<<<<<<<<<<
+ * 
+ *         if statbuf.type != H5G_LINK:
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Gget_objinfo(__pyx_v_self->__pyx_base.id, __pyx_v_name, 0, (&__pyx_v_statbuf)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 368; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5g.pyx":370
+ *         H5Gget_objinfo(self.id, name, 0, &statbuf)
+ * 
+ *         if statbuf.type != H5G_LINK:             # <<<<<<<<<<<<<<
+ *             raise ValueError('"%s" is not a symbolic link.' % name)
+ * 
+ */
+  __pyx_t_2 = (__pyx_v_statbuf.type != H5G_LINK);
+  if (__pyx_t_2) {
+
+    /* "h5py/h5g.pyx":371
+ * 
+ *         if statbuf.type != H5G_LINK:
+ *             raise ValueError('"%s" is not a symbolic link.' % name)             # <<<<<<<<<<<<<<
+ * 
+ *         IF UNAME_SYSNAME == "Windows":
+ */
+    __pyx_t_3 = PyBytes_FromString(__pyx_v_name); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 371; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(((PyObject *)__pyx_t_3));
+    __pyx_t_4 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_6), ((PyObject *)__pyx_t_3)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 371; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(((PyObject *)__pyx_t_4));
+    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
+    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 371; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_t_4));
+    __Pyx_GIVEREF(((PyObject *)__pyx_t_4));
+    __pyx_t_4 = 0;
+    __pyx_t_4 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 371; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
+    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 371; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  /* "h5py/h5g.pyx":376
+ *             linklen = 2049  # Windows statbuf.linklen seems broken
+ *         ELSE:
+ *             linklen = statbuf.linklen+1             # <<<<<<<<<<<<<<
+ *         value = <char*>emalloc(sizeof(char)*linklen)
+ *         try:
+ */
+  __pyx_t_4 = __Pyx_PyInt_FromSize_t((__pyx_v_statbuf.linklen + 1)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 376; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_v_linklen = __pyx_t_4;
+  __pyx_t_4 = 0;
+
+  /* "h5py/h5g.pyx":377
+ *         ELSE:
+ *             linklen = statbuf.linklen+1
+ *         value = <char*>emalloc(sizeof(char)*linklen)             # <<<<<<<<<<<<<<
+ *         try:
+ *             H5Gget_linkval(self.id, name, linklen, value)
+ */
+  __pyx_t_4 = __Pyx_PyInt_FromSize_t((sizeof(char))); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 377; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_3 = PyNumber_Multiply(__pyx_t_4, __pyx_v_linklen); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 377; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __pyx_t_5 = __Pyx_PyInt_AsSize_t(__pyx_t_3); if (unlikely((__pyx_t_5 == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 377; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_t_6 = __pyx_f_4h5py_5utils_emalloc(__pyx_t_5); if (unlikely(__pyx_t_6 == NULL && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 377; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v_value = ((char *)__pyx_t_6);
+
+  /* "h5py/h5g.pyx":378
+ *             linklen = statbuf.linklen+1
+ *         value = <char*>emalloc(sizeof(char)*linklen)
+ *         try:             # <<<<<<<<<<<<<<
+ *             H5Gget_linkval(self.id, name, linklen, value)
+ *             value[linklen-1] = c'\0'  # in case HDF5 doesn't null terminate on Windows
+ */
+  /*try:*/ {
+
+    /* "h5py/h5g.pyx":379
+ *         value = <char*>emalloc(sizeof(char)*linklen)
+ *         try:
+ *             H5Gget_linkval(self.id, name, linklen, value)             # <<<<<<<<<<<<<<
+ *             value[linklen-1] = c'\0'  # in case HDF5 doesn't null terminate on Windows
+ *             pyvalue = value
+ */
+    __pyx_t_5 = __Pyx_PyInt_AsSize_t(__pyx_v_linklen); if (unlikely((__pyx_t_5 == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 379; __pyx_clineno = __LINE__; goto __pyx_L5;}
+    __pyx_t_1 = __pyx_f_4h5py_4defs_H5Gget_linkval(__pyx_v_self->__pyx_base.id, __pyx_v_name, __pyx_t_5, __pyx_v_value); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 379; __pyx_clineno = __LINE__; goto __pyx_L5;}
+
+    /* "h5py/h5g.pyx":380
+ *         try:
+ *             H5Gget_linkval(self.id, name, linklen, value)
+ *             value[linklen-1] = c'\0'  # in case HDF5 doesn't null terminate on Windows             # <<<<<<<<<<<<<<
+ *             pyvalue = value
+ *             return pyvalue
+ */
+    __pyx_t_3 = PyNumber_Subtract(__pyx_v_linklen, __pyx_int_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 380; __pyx_clineno = __LINE__; goto __pyx_L5;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_7 = __Pyx_PyIndex_AsSsize_t(__pyx_t_3); if (unlikely((__pyx_t_7 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 380; __pyx_clineno = __LINE__; goto __pyx_L5;}
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    (__pyx_v_value[__pyx_t_7]) = '\x00';
+
+    /* "h5py/h5g.pyx":381
+ *             H5Gget_linkval(self.id, name, linklen, value)
+ *             value[linklen-1] = c'\0'  # in case HDF5 doesn't null terminate on Windows
+ *             pyvalue = value             # <<<<<<<<<<<<<<
+ *             return pyvalue
+ *         finally:
+ */
+    __pyx_v_pyvalue = __pyx_v_value;
+
+    /* "h5py/h5g.pyx":382
+ *             value[linklen-1] = c'\0'  # in case HDF5 doesn't null terminate on Windows
+ *             pyvalue = value
+ *             return pyvalue             # <<<<<<<<<<<<<<
+ *         finally:
+ *             efree(value)
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_3 = PyBytes_FromString(__pyx_v_pyvalue); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 382; __pyx_clineno = __LINE__; goto __pyx_L5;}
+    __Pyx_GOTREF(((PyObject *)__pyx_t_3));
+    __pyx_r = ((PyObject *)__pyx_t_3);
+    __pyx_t_3 = 0;
+    goto __pyx_L4;
+  }
+
+  /* "h5py/h5g.pyx":384
+ *             return pyvalue
+ *         finally:
+ *             efree(value)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  /*finally:*/ {
+    int __pyx_why;
+    PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb;
+    int __pyx_exc_lineno;
+    __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
+    __pyx_why = 0; goto __pyx_L6;
+    __pyx_L4: __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
+    __pyx_why = 3; goto __pyx_L6;
+    __pyx_L5: {
+      __pyx_why = 4;
+      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb);
+      __pyx_exc_lineno = __pyx_lineno;
+      goto __pyx_L6;
+    }
+    __pyx_L6:;
+    __pyx_f_4h5py_5utils_efree(__pyx_v_value);
+    switch (__pyx_why) {
+      case 3: goto __pyx_L0;
+      case 4: {
+        __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb);
+        __pyx_lineno = __pyx_exc_lineno;
+        __pyx_exc_type = 0;
+        __pyx_exc_value = 0;
+        __pyx_exc_tb = 0;
+        goto __pyx_L1_error;
+      }
+    }
+  }
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("h5py.h5g.GroupID.get_linkval", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_linklen);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5g_7GroupID_19set_comment(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_4h5py_3h5g_7GroupID_18set_comment[] = "(STRING name, STRING comment)\n\n        Set the comment on a group member.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5g_7GroupID_19set_comment(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  char *__pyx_v_name;
+  char *__pyx_v_comment;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("set_comment (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__name,&__pyx_n_s__comment,0};
+    PyObject* values[2] = {0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__name)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__comment)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("set_comment", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 387; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_comment") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 387; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+    }
+    __pyx_v_name = PyBytes_AsString(values[0]); if (unlikely((!__pyx_v_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 387; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_comment = PyBytes_AsString(values[1]); if (unlikely((!__pyx_v_comment) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 387; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("set_comment", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 387; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5g.GroupID.set_comment", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_3h5g_7GroupID_18set_comment(((struct __pyx_obj_4h5py_3h5g_GroupID *)__pyx_v_self), __pyx_v_name, __pyx_v_comment);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5g.pyx":387
+ * 
+ * 
+ *     def set_comment(self, char* name, char* comment):             # <<<<<<<<<<<<<<
+ *         """(STRING name, STRING comment)
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5g_7GroupID_18set_comment(struct __pyx_obj_4h5py_3h5g_GroupID *__pyx_v_self, char *__pyx_v_name, char *__pyx_v_comment) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("set_comment", 0);
+
+  /* "h5py/h5g.pyx":392
+ *         Set the comment on a group member.
+ *         """
+ *         H5Gset_comment(self.id, name, comment)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Gset_comment(__pyx_v_self->__pyx_base.id, __pyx_v_name, __pyx_v_comment); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 392; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py.h5g.GroupID.set_comment", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5g_7GroupID_21get_comment(PyObject *__pyx_v_self, PyObject *__pyx_arg_name); /*proto*/
+static char __pyx_doc_4h5py_3h5g_7GroupID_20get_comment[] = "(STRING name) => STRING comment\n\n        Retrieve the comment for a group member.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5g_7GroupID_21get_comment(PyObject *__pyx_v_self, PyObject *__pyx_arg_name) {
+  char *__pyx_v_name;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_comment (wrapper)", 0);
+  assert(__pyx_arg_name); {
+    __pyx_v_name = PyBytes_AsString(__pyx_arg_name); if (unlikely((!__pyx_v_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 395; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5g.GroupID.get_comment", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_3h5g_7GroupID_20get_comment(((struct __pyx_obj_4h5py_3h5g_GroupID *)__pyx_v_self), ((char *)__pyx_v_name));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5g.pyx":395
+ * 
+ * 
+ *     def get_comment(self, char* name):             # <<<<<<<<<<<<<<
+ *         """(STRING name) => STRING comment
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5g_7GroupID_20get_comment(struct __pyx_obj_4h5py_3h5g_GroupID *__pyx_v_self, char *__pyx_v_name) {
+  int __pyx_v_cmnt_len;
+  char *__pyx_v_cmnt;
+  char *__pyx_v_py_cmnt;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  void *__pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_comment", 0);
+
+  /* "h5py/h5g.pyx":402
+ *         cdef int cmnt_len
+ *         cdef char* cmnt
+ *         cmnt = NULL             # <<<<<<<<<<<<<<
+ * 
+ *         cmnt_len = H5Gget_comment(self.id, name, 0, NULL)
+ */
+  __pyx_v_cmnt = NULL;
+
+  /* "h5py/h5g.pyx":404
+ *         cmnt = NULL
+ * 
+ *         cmnt_len = H5Gget_comment(self.id, name, 0, NULL)             # <<<<<<<<<<<<<<
+ *         assert cmnt_len >= 0
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Gget_comment(__pyx_v_self->__pyx_base.id, __pyx_v_name, 0, NULL); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v_cmnt_len = __pyx_t_1;
+
+  /* "h5py/h5g.pyx":405
+ * 
+ *         cmnt_len = H5Gget_comment(self.id, name, 0, NULL)
+ *         assert cmnt_len >= 0             # <<<<<<<<<<<<<<
+ * 
+ *         cmnt = <char*>emalloc(sizeof(char)*(cmnt_len+1))
+ */
+  #ifndef CYTHON_WITHOUT_ASSERTIONS
+  if (unlikely(!(__pyx_v_cmnt_len >= 0))) {
+    PyErr_SetNone(PyExc_AssertionError);
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 405; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  }
+  #endif
+
+  /* "h5py/h5g.pyx":407
+ *         assert cmnt_len >= 0
+ * 
+ *         cmnt = <char*>emalloc(sizeof(char)*(cmnt_len+1))             # <<<<<<<<<<<<<<
+ *         try:
+ *             H5Gget_comment(self.id, name, cmnt_len+1, cmnt)
+ */
+  __pyx_t_2 = __pyx_f_4h5py_5utils_emalloc(((sizeof(char)) * (__pyx_v_cmnt_len + 1))); if (unlikely(__pyx_t_2 == NULL && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 407; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v_cmnt = ((char *)__pyx_t_2);
+
+  /* "h5py/h5g.pyx":408
+ * 
+ *         cmnt = <char*>emalloc(sizeof(char)*(cmnt_len+1))
+ *         try:             # <<<<<<<<<<<<<<
+ *             H5Gget_comment(self.id, name, cmnt_len+1, cmnt)
+ *             py_cmnt = cmnt
+ */
+  /*try:*/ {
+
+    /* "h5py/h5g.pyx":409
+ *         cmnt = <char*>emalloc(sizeof(char)*(cmnt_len+1))
+ *         try:
+ *             H5Gget_comment(self.id, name, cmnt_len+1, cmnt)             # <<<<<<<<<<<<<<
+ *             py_cmnt = cmnt
+ *             return py_cmnt
+ */
+    __pyx_t_1 = __pyx_f_4h5py_4defs_H5Gget_comment(__pyx_v_self->__pyx_base.id, __pyx_v_name, (__pyx_v_cmnt_len + 1), __pyx_v_cmnt); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 409; __pyx_clineno = __LINE__; goto __pyx_L4;}
+
+    /* "h5py/h5g.pyx":410
+ *         try:
+ *             H5Gget_comment(self.id, name, cmnt_len+1, cmnt)
+ *             py_cmnt = cmnt             # <<<<<<<<<<<<<<
+ *             return py_cmnt
+ *         finally:
+ */
+    __pyx_v_py_cmnt = __pyx_v_cmnt;
+
+    /* "h5py/h5g.pyx":411
+ *             H5Gget_comment(self.id, name, cmnt_len+1, cmnt)
+ *             py_cmnt = cmnt
+ *             return py_cmnt             # <<<<<<<<<<<<<<
+ *         finally:
+ *             efree(cmnt)
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_3 = PyBytes_FromString(__pyx_v_py_cmnt); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 411; __pyx_clineno = __LINE__; goto __pyx_L4;}
+    __Pyx_GOTREF(((PyObject *)__pyx_t_3));
+    __pyx_r = ((PyObject *)__pyx_t_3);
+    __pyx_t_3 = 0;
+    goto __pyx_L3;
+  }
+
+  /* "h5py/h5g.pyx":413
+ *             return py_cmnt
+ *         finally:
+ *             efree(cmnt)             # <<<<<<<<<<<<<<
+ * 
+ *     # === Special methods =====================================================
+ */
+  /*finally:*/ {
+    int __pyx_why;
+    PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb;
+    int __pyx_exc_lineno;
+    __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
+    __pyx_why = 0; goto __pyx_L5;
+    __pyx_L3: __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
+    __pyx_why = 3; goto __pyx_L5;
+    __pyx_L4: {
+      __pyx_why = 4;
+      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb);
+      __pyx_exc_lineno = __pyx_lineno;
+      goto __pyx_L5;
+    }
+    __pyx_L5:;
+    __pyx_f_4h5py_5utils_efree(__pyx_v_cmnt);
+    switch (__pyx_why) {
+      case 3: goto __pyx_L0;
+      case 4: {
+        __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb);
+        __pyx_lineno = __pyx_exc_lineno;
+        __pyx_exc_type = 0;
+        __pyx_exc_value = 0;
+        __pyx_exc_tb = 0;
+        goto __pyx_L1_error;
+      }
+    }
+  }
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("h5py.h5g.GroupID.get_comment", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static int __pyx_pw_4h5py_3h5g_7GroupID_23__contains__(PyObject *__pyx_v_self, PyObject *__pyx_arg_name); /*proto*/
+static char __pyx_doc_4h5py_3h5g_7GroupID_22__contains__[] = "(STRING name)\n\n        Determine if a group member of the given name is present\n        ";
+#if CYTHON_COMPILING_IN_CPYTHON
+struct wrapperbase __pyx_wrapperbase_4h5py_3h5g_7GroupID_22__contains__;
+#endif
+static int __pyx_pw_4h5py_3h5g_7GroupID_23__contains__(PyObject *__pyx_v_self, PyObject *__pyx_arg_name) {
+  char *__pyx_v_name;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__contains__ (wrapper)", 0);
+  assert(__pyx_arg_name); {
+    __pyx_v_name = PyBytes_AsString(__pyx_arg_name); if (unlikely((!__pyx_v_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 418; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5g.GroupID.__contains__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return -1;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_3h5g_7GroupID_22__contains__(((struct __pyx_obj_4h5py_3h5g_GroupID *)__pyx_v_self), ((char *)__pyx_v_name));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5g.pyx":418
+ * 
+ * 
+ *     def __contains__(self, char* name):             # <<<<<<<<<<<<<<
+ *         """(STRING name)
+ * 
+ */
+
+static int __pyx_pf_4h5py_3h5g_7GroupID_22__contains__(struct __pyx_obj_4h5py_3h5g_GroupID *__pyx_v_self, char *__pyx_v_name) {
+  __pyx_t_4h5py_7_errors_err_cookie __pyx_v_old_handler;
+  __pyx_t_4h5py_7_errors_err_cookie __pyx_v_new_handler;
+  herr_t __pyx_v_retval;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  int __pyx_t_2;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__contains__", 0);
+
+  /* "h5py/h5g.pyx":427
+ *         cdef herr_t retval
+ * 
+ *         new_handler.func = NULL             # <<<<<<<<<<<<<<
+ *         new_handler.data = NULL
+ * 
+ */
+  __pyx_v_new_handler.func = NULL;
+
+  /* "h5py/h5g.pyx":428
+ * 
+ *         new_handler.func = NULL
+ *         new_handler.data = NULL             # <<<<<<<<<<<<<<
+ * 
+ *         old_handler = set_error_handler(new_handler)
+ */
+  __pyx_v_new_handler.data = NULL;
+
+  /* "h5py/h5g.pyx":430
+ *         new_handler.data = NULL
+ * 
+ *         old_handler = set_error_handler(new_handler)             # <<<<<<<<<<<<<<
+ *         retval = _hdf5.H5Gget_objinfo(self.id, name, 0, NULL)
+ *         set_error_handler(old_handler)
+ */
+  __pyx_v_old_handler = __pyx_f_4h5py_7_errors_set_error_handler(__pyx_v_new_handler);
+
+  /* "h5py/h5g.pyx":431
+ * 
+ *         old_handler = set_error_handler(new_handler)
+ *         retval = _hdf5.H5Gget_objinfo(self.id, name, 0, NULL)             # <<<<<<<<<<<<<<
+ *         set_error_handler(old_handler)
+ * 
+ */
+  __pyx_t_1 = H5Gget_objinfo(__pyx_v_self->__pyx_base.id, __pyx_v_name, 0, NULL); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 431; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v_retval = __pyx_t_1;
+
+  /* "h5py/h5g.pyx":432
+ *         old_handler = set_error_handler(new_handler)
+ *         retval = _hdf5.H5Gget_objinfo(self.id, name, 0, NULL)
+ *         set_error_handler(old_handler)             # <<<<<<<<<<<<<<
+ * 
+ *         return bool(retval >= 0)
+ */
+  __pyx_f_4h5py_7_errors_set_error_handler(__pyx_v_old_handler);
+
+  /* "h5py/h5g.pyx":434
+ *         set_error_handler(old_handler)
+ * 
+ *         return bool(retval >= 0)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_2 = (__pyx_v_retval >= 0);
+  __pyx_r = (!(!__pyx_t_2));
+  goto __pyx_L0;
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py.h5g.GroupID.__contains__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5g_7GroupID_25__iter__(PyObject *__pyx_v_self); /*proto*/
+static char __pyx_doc_4h5py_3h5g_7GroupID_24__iter__[] = " Return an iterator over the names of group members. ";
+#if CYTHON_COMPILING_IN_CPYTHON
+struct wrapperbase __pyx_wrapperbase_4h5py_3h5g_7GroupID_24__iter__;
+#endif
+static PyObject *__pyx_pw_4h5py_3h5g_7GroupID_25__iter__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__iter__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5g_7GroupID_24__iter__(((struct __pyx_obj_4h5py_3h5g_GroupID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5g.pyx":437
+ * 
+ * 
+ *     def __iter__(self):             # <<<<<<<<<<<<<<
+ *         """ Return an iterator over the names of group members. """
+ *         return GroupIter(self)
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5g_7GroupID_24__iter__(struct __pyx_obj_4h5py_3h5g_GroupID *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__iter__", 0);
+
+  /* "h5py/h5g.pyx":439
+ *     def __iter__(self):
+ *         """ Return an iterator over the names of group members. """
+ *         return GroupIter(self)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 439; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(((PyObject *)__pyx_v_self));
+  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_self));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
+  __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4h5py_3h5g_GroupIter)), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 439; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5g.GroupID.__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static Py_ssize_t __pyx_pw_4h5py_3h5g_7GroupID_27__len__(PyObject *__pyx_v_self); /*proto*/
+static char __pyx_doc_4h5py_3h5g_7GroupID_26__len__[] = " Number of group members ";
+#if CYTHON_COMPILING_IN_CPYTHON
+struct wrapperbase __pyx_wrapperbase_4h5py_3h5g_7GroupID_26__len__;
+#endif
+static Py_ssize_t __pyx_pw_4h5py_3h5g_7GroupID_27__len__(PyObject *__pyx_v_self) {
+  Py_ssize_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__len__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5g_7GroupID_26__len__(((struct __pyx_obj_4h5py_3h5g_GroupID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5g.pyx":442
+ * 
+ * 
+ *     def __len__(self):             # <<<<<<<<<<<<<<
+ *         """ Number of group members """
+ *         cdef hsize_t size
+ */
+
+static Py_ssize_t __pyx_pf_4h5py_3h5g_7GroupID_26__len__(struct __pyx_obj_4h5py_3h5g_GroupID *__pyx_v_self) {
+  hsize_t __pyx_v_size;
+  Py_ssize_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__len__", 0);
+
+  /* "h5py/h5g.pyx":445
+ *         """ Number of group members """
+ *         cdef hsize_t size
+ *         H5Gget_num_objs(self.id, &size)             # <<<<<<<<<<<<<<
+ *         return size
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Gget_num_objs(__pyx_v_self->__pyx_base.id, (&__pyx_v_size)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5g.pyx":446
+ *         cdef hsize_t size
+ *         H5Gget_num_objs(self.id, &size)
+ *         return size             # <<<<<<<<<<<<<<
+ */
+  __pyx_r = __pyx_v_size;
+  goto __pyx_L0;
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py.h5g.GroupID.__len__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5g_7GroupID_5links_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4h5py_3h5g_7GroupID_5links_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5g_7GroupID_5links___get__(((struct __pyx_obj_4h5py_3h5g_GroupID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5g.pxd":16
+ * cdef class GroupID(ObjectID):
+ * 
+ *     cdef readonly object links             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5g_7GroupID_5links___get__(struct __pyx_obj_4h5py_3h5g_GroupID *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_self->links);
+  __pyx_r = __pyx_v_self->links;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_tp_new_4h5py_3h5g_GroupID(PyTypeObject *t, PyObject *a, PyObject *k) {
+  struct __pyx_obj_4h5py_3h5g_GroupID *p;
+  PyObject *o = __pyx_ptype_4h5py_8_objects_ObjectID->tp_new(t, a, k);
+  if (!o) return 0;
+  p = ((struct __pyx_obj_4h5py_3h5g_GroupID *)o);
+  p->links = Py_None; Py_INCREF(Py_None);
+  return o;
+}
+
+static void __pyx_tp_dealloc_4h5py_3h5g_GroupID(PyObject *o) {
+  struct __pyx_obj_4h5py_3h5g_GroupID *p = (struct __pyx_obj_4h5py_3h5g_GroupID *)o;
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->links);
+  PyObject_GC_Track(o);
+  if (likely(__pyx_ptype_4h5py_8_objects_ObjectID)) __pyx_ptype_4h5py_8_objects_ObjectID->tp_dealloc(o); else __Pyx_call_next_tp_dealloc(o, __pyx_tp_dealloc_4h5py_3h5g_GroupID);
+}
+
+static int __pyx_tp_traverse_4h5py_3h5g_GroupID(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_4h5py_3h5g_GroupID *p = (struct __pyx_obj_4h5py_3h5g_GroupID *)o;
+  e = ((likely(__pyx_ptype_4h5py_8_objects_ObjectID)) ? ((__pyx_ptype_4h5py_8_objects_ObjectID->tp_traverse) ? __pyx_ptype_4h5py_8_objects_ObjectID->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_4h5py_3h5g_GroupID)); if (e) return e;
+  if (p->links) {
+    e = (*v)(p->links, a); if (e) return e;
+  }
+  return 0;
+}
+
+static int __pyx_tp_clear_4h5py_3h5g_GroupID(PyObject *o) {
+  struct __pyx_obj_4h5py_3h5g_GroupID *p = (struct __pyx_obj_4h5py_3h5g_GroupID *)o;
+  PyObject* tmp;
+  if (likely(__pyx_ptype_4h5py_8_objects_ObjectID)) { if (__pyx_ptype_4h5py_8_objects_ObjectID->tp_clear) __pyx_ptype_4h5py_8_objects_ObjectID->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_4h5py_3h5g_GroupID);
+  tmp = ((PyObject*)p->links);
+  p->links = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  return 0;
+}
+
+static PyObject *__pyx_getprop_4h5py_3h5g_7GroupID_links(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_4h5py_3h5g_7GroupID_5links_1__get__(o);
+}
+
+static PyMethodDef __pyx_methods_4h5py_3h5g_GroupID[] = {
+  {__Pyx_NAMESTR("_close"), (PyCFunction)__pyx_pw_4h5py_3h5g_7GroupID_3_close, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5g_7GroupID_2_close)},
+  {__Pyx_NAMESTR("link"), (PyCFunction)__pyx_pw_4h5py_3h5g_7GroupID_5link, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5g_7GroupID_4link)},
+  {__Pyx_NAMESTR("unlink"), (PyCFunction)__pyx_pw_4h5py_3h5g_7GroupID_7unlink, METH_O, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5g_7GroupID_6unlink)},
+  {__Pyx_NAMESTR("move"), (PyCFunction)__pyx_pw_4h5py_3h5g_7GroupID_9move, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5g_7GroupID_8move)},
+  {__Pyx_NAMESTR("get_num_objs"), (PyCFunction)__pyx_pw_4h5py_3h5g_7GroupID_11get_num_objs, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5g_7GroupID_10get_num_objs)},
+  {__Pyx_NAMESTR("get_objname_by_idx"), (PyCFunction)__pyx_pw_4h5py_3h5g_7GroupID_13get_objname_by_idx, METH_O, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5g_7GroupID_12get_objname_by_idx)},
+  {__Pyx_NAMESTR("get_objtype_by_idx"), (PyCFunction)__pyx_pw_4h5py_3h5g_7GroupID_15get_objtype_by_idx, METH_O, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5g_7GroupID_14get_objtype_by_idx)},
+  {__Pyx_NAMESTR("get_linkval"), (PyCFunction)__pyx_pw_4h5py_3h5g_7GroupID_17get_linkval, METH_O, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5g_7GroupID_16get_linkval)},
+  {__Pyx_NAMESTR("set_comment"), (PyCFunction)__pyx_pw_4h5py_3h5g_7GroupID_19set_comment, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5g_7GroupID_18set_comment)},
+  {__Pyx_NAMESTR("get_comment"), (PyCFunction)__pyx_pw_4h5py_3h5g_7GroupID_21get_comment, METH_O, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5g_7GroupID_20get_comment)},
+  {0, 0, 0, 0}
+};
+
+static struct PyGetSetDef __pyx_getsets_4h5py_3h5g_GroupID[] = {
+  {(char *)"links", __pyx_getprop_4h5py_3h5g_7GroupID_links, 0, 0, 0},
+  {0, 0, 0, 0, 0}
+};
+
+static PyNumberMethods __pyx_tp_as_number_GroupID = {
+  0, /*nb_add*/
+  0, /*nb_subtract*/
+  0, /*nb_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_divide*/
+  #endif
+  0, /*nb_remainder*/
+  0, /*nb_divmod*/
+  0, /*nb_power*/
+  0, /*nb_negative*/
+  0, /*nb_positive*/
+  0, /*nb_absolute*/
+  0, /*nb_nonzero*/
+  0, /*nb_invert*/
+  0, /*nb_lshift*/
+  0, /*nb_rshift*/
+  0, /*nb_and*/
+  0, /*nb_xor*/
+  0, /*nb_or*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_coerce*/
+  #endif
+  0, /*nb_int*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_long*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*nb_float*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_oct*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_hex*/
+  #endif
+  0, /*nb_inplace_add*/
+  0, /*nb_inplace_subtract*/
+  0, /*nb_inplace_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_inplace_divide*/
+  #endif
+  0, /*nb_inplace_remainder*/
+  0, /*nb_inplace_power*/
+  0, /*nb_inplace_lshift*/
+  0, /*nb_inplace_rshift*/
+  0, /*nb_inplace_and*/
+  0, /*nb_inplace_xor*/
+  0, /*nb_inplace_or*/
+  0, /*nb_floor_divide*/
+  0, /*nb_true_divide*/
+  0, /*nb_inplace_floor_divide*/
+  0, /*nb_inplace_true_divide*/
+  #if PY_VERSION_HEX >= 0x02050000
+  0, /*nb_index*/
+  #endif
+};
+
+static PySequenceMethods __pyx_tp_as_sequence_GroupID = {
+  __pyx_pw_4h5py_3h5g_7GroupID_27__len__, /*sq_length*/
+  0, /*sq_concat*/
+  0, /*sq_repeat*/
+  0, /*sq_item*/
+  0, /*sq_slice*/
+  0, /*sq_ass_item*/
+  0, /*sq_ass_slice*/
+  __pyx_pw_4h5py_3h5g_7GroupID_23__contains__, /*sq_contains*/
+  0, /*sq_inplace_concat*/
+  0, /*sq_inplace_repeat*/
+};
+
+static PyMappingMethods __pyx_tp_as_mapping_GroupID = {
+  __pyx_pw_4h5py_3h5g_7GroupID_27__len__, /*mp_length*/
+  0, /*mp_subscript*/
+  0, /*mp_ass_subscript*/
+};
+
+static PyBufferProcs __pyx_tp_as_buffer_GroupID = {
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getreadbuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getwritebuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getsegcount*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getcharbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_getbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_releasebuffer*/
+  #endif
+};
+
+static PyTypeObject __pyx_type_4h5py_3h5g_GroupID = {
+  PyVarObject_HEAD_INIT(0, 0)
+  __Pyx_NAMESTR("h5py.h5g.GroupID"), /*tp_name*/
+  sizeof(struct __pyx_obj_4h5py_3h5g_GroupID), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_4h5py_3h5g_GroupID, /*tp_dealloc*/
+  0, /*tp_print*/
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*tp_repr*/
+  &__pyx_tp_as_number_GroupID, /*tp_as_number*/
+  &__pyx_tp_as_sequence_GroupID, /*tp_as_sequence*/
+  &__pyx_tp_as_mapping_GroupID, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  &__pyx_tp_as_buffer_GroupID, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+  __Pyx_DOCSTR("\n        Represents an HDF5 group identifier\n\n        Python extensions:\n\n        __contains__\n            Test for group member (\"if name in grpid\")\n\n        __iter__\n            Get an iterator over member names\n\n        __len__\n            Number of members in this group; len(grpid) = N\n\n        If HDF5 1.8.X is used, the attribute \"links\" contains a proxy object\n        providing access to the H5L family of routines.  See the docs\n        for h5py. [...]
+  __pyx_tp_traverse_4h5py_3h5g_GroupID, /*tp_traverse*/
+  __pyx_tp_clear_4h5py_3h5g_GroupID, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  __pyx_pw_4h5py_3h5g_7GroupID_25__iter__, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_4h5py_3h5g_GroupID, /*tp_methods*/
+  0, /*tp_members*/
+  __pyx_getsets_4h5py_3h5g_GroupID, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  0, /*tp_dictoffset*/
+  __pyx_pw_4h5py_3h5g_7GroupID_1__init__, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_4h5py_3h5g_GroupID, /*tp_new*/
+  0, /*tp_free*/
+  0, /*tp_is_gc*/
+  0, /*tp_bases*/
+  0, /*tp_mro*/
+  0, /*tp_cache*/
+  0, /*tp_subclasses*/
+  0, /*tp_weaklist*/
+  0, /*tp_del*/
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*tp_version_tag*/
+  #endif
+};
+
+static PyObject *__pyx_tp_new_4h5py_3h5g_GroupStat(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
+  PyObject *o = (*t->tp_alloc)(t, 0);
+  if (!o) return 0;
+  return o;
+}
+
+static void __pyx_tp_dealloc_4h5py_3h5g_GroupStat(PyObject *o) {
+  (*Py_TYPE(o)->tp_free)(o);
+}
+
+static PyObject *__pyx_getprop_4h5py_3h5g_9GroupStat_fileno(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_4h5py_3h5g_9GroupStat_6fileno_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_4h5py_3h5g_9GroupStat_objno(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_4h5py_3h5g_9GroupStat_5objno_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_4h5py_3h5g_9GroupStat_nlink(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_4h5py_3h5g_9GroupStat_5nlink_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_4h5py_3h5g_9GroupStat_type(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_4h5py_3h5g_9GroupStat_4type_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_4h5py_3h5g_9GroupStat_mtime(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_4h5py_3h5g_9GroupStat_5mtime_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_4h5py_3h5g_9GroupStat_linklen(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_4h5py_3h5g_9GroupStat_7linklen_1__get__(o);
+}
+
+static PyMethodDef __pyx_methods_4h5py_3h5g_GroupStat[] = {
+  {__Pyx_NAMESTR("_hash"), (PyCFunction)__pyx_pw_4h5py_3h5g_9GroupStat_1_hash, METH_NOARGS, __Pyx_DOCSTR(0)},
+  {0, 0, 0, 0}
+};
+
+static struct PyGetSetDef __pyx_getsets_4h5py_3h5g_GroupStat[] = {
+  {(char *)"fileno", __pyx_getprop_4h5py_3h5g_9GroupStat_fileno, 0, 0, 0},
+  {(char *)"objno", __pyx_getprop_4h5py_3h5g_9GroupStat_objno, 0, 0, 0},
+  {(char *)"nlink", __pyx_getprop_4h5py_3h5g_9GroupStat_nlink, 0, 0, 0},
+  {(char *)"type", __pyx_getprop_4h5py_3h5g_9GroupStat_type, 0, 0, 0},
+  {(char *)"mtime", __pyx_getprop_4h5py_3h5g_9GroupStat_mtime, 0, 0, 0},
+  {(char *)"linklen", __pyx_getprop_4h5py_3h5g_9GroupStat_linklen, 0, 0, 0},
+  {0, 0, 0, 0, 0}
+};
+
+static PyNumberMethods __pyx_tp_as_number_GroupStat = {
+  0, /*nb_add*/
+  0, /*nb_subtract*/
+  0, /*nb_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_divide*/
+  #endif
+  0, /*nb_remainder*/
+  0, /*nb_divmod*/
+  0, /*nb_power*/
+  0, /*nb_negative*/
+  0, /*nb_positive*/
+  0, /*nb_absolute*/
+  0, /*nb_nonzero*/
+  0, /*nb_invert*/
+  0, /*nb_lshift*/
+  0, /*nb_rshift*/
+  0, /*nb_and*/
+  0, /*nb_xor*/
+  0, /*nb_or*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_coerce*/
+  #endif
+  0, /*nb_int*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_long*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*nb_float*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_oct*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_hex*/
+  #endif
+  0, /*nb_inplace_add*/
+  0, /*nb_inplace_subtract*/
+  0, /*nb_inplace_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_inplace_divide*/
+  #endif
+  0, /*nb_inplace_remainder*/
+  0, /*nb_inplace_power*/
+  0, /*nb_inplace_lshift*/
+  0, /*nb_inplace_rshift*/
+  0, /*nb_inplace_and*/
+  0, /*nb_inplace_xor*/
+  0, /*nb_inplace_or*/
+  0, /*nb_floor_divide*/
+  0, /*nb_true_divide*/
+  0, /*nb_inplace_floor_divide*/
+  0, /*nb_inplace_true_divide*/
+  #if PY_VERSION_HEX >= 0x02050000
+  0, /*nb_index*/
+  #endif
+};
+
+static PySequenceMethods __pyx_tp_as_sequence_GroupStat = {
+  0, /*sq_length*/
+  0, /*sq_concat*/
+  0, /*sq_repeat*/
+  0, /*sq_item*/
+  0, /*sq_slice*/
+  0, /*sq_ass_item*/
+  0, /*sq_ass_slice*/
+  0, /*sq_contains*/
+  0, /*sq_inplace_concat*/
+  0, /*sq_inplace_repeat*/
+};
+
+static PyMappingMethods __pyx_tp_as_mapping_GroupStat = {
+  0, /*mp_length*/
+  0, /*mp_subscript*/
+  0, /*mp_ass_subscript*/
+};
+
+static PyBufferProcs __pyx_tp_as_buffer_GroupStat = {
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getreadbuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getwritebuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getsegcount*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getcharbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_getbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_releasebuffer*/
+  #endif
+};
+
+static PyTypeObject __pyx_type_4h5py_3h5g_GroupStat = {
+  PyVarObject_HEAD_INIT(0, 0)
+  __Pyx_NAMESTR("h5py.h5g.GroupStat"), /*tp_name*/
+  sizeof(struct __pyx_obj_4h5py_3h5g_GroupStat), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_4h5py_3h5g_GroupStat, /*tp_dealloc*/
+  0, /*tp_print*/
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*tp_repr*/
+  &__pyx_tp_as_number_GroupStat, /*tp_as_number*/
+  &__pyx_tp_as_sequence_GroupStat, /*tp_as_sequence*/
+  &__pyx_tp_as_mapping_GroupStat, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  &__pyx_tp_as_buffer_GroupStat, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
+  __Pyx_DOCSTR("Represents the H5G_stat_t structure containing group member info.\n\n    Fields (read-only):\n\n    * fileno:   2-tuple uniquely identifying the current file\n    * objno:    2-tuple uniquely identifying this object\n    * nlink:    Number of hard links to this object\n    * mtime:    Modification time of this object\n    * linklen:  Length of the symbolic link name, or 0 if not a link.\n\n    \"Uniquely identifying\" means unique among currently open files,\n    not univ [...]
+  0, /*tp_traverse*/
+  0, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_4h5py_3h5g_GroupStat, /*tp_methods*/
+  0, /*tp_members*/
+  __pyx_getsets_4h5py_3h5g_GroupStat, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  0, /*tp_dictoffset*/
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_4h5py_3h5g_GroupStat, /*tp_new*/
+  0, /*tp_free*/
+  0, /*tp_is_gc*/
+  0, /*tp_bases*/
+  0, /*tp_mro*/
+  0, /*tp_cache*/
+  0, /*tp_subclasses*/
+  0, /*tp_weaklist*/
+  0, /*tp_del*/
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*tp_version_tag*/
+  #endif
+};
+
+static PyObject *__pyx_tp_new_4h5py_3h5g_GroupIter(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
+  struct __pyx_obj_4h5py_3h5g_GroupIter *p;
+  PyObject *o = (*t->tp_alloc)(t, 0);
+  if (!o) return 0;
+  p = ((struct __pyx_obj_4h5py_3h5g_GroupIter *)o);
+  p->grp = ((struct __pyx_obj_4h5py_3h5g_GroupID *)Py_None); Py_INCREF(Py_None);
+  p->names = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  return o;
+}
+
+static void __pyx_tp_dealloc_4h5py_3h5g_GroupIter(PyObject *o) {
+  struct __pyx_obj_4h5py_3h5g_GroupIter *p = (struct __pyx_obj_4h5py_3h5g_GroupIter *)o;
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->grp);
+  Py_CLEAR(p->names);
+  PyObject_GC_Track(o);
+  (*Py_TYPE(o)->tp_free)(o);
+}
+
+static int __pyx_tp_traverse_4h5py_3h5g_GroupIter(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_4h5py_3h5g_GroupIter *p = (struct __pyx_obj_4h5py_3h5g_GroupIter *)o;
+  if (p->grp) {
+    e = (*v)(((PyObject*)p->grp), a); if (e) return e;
+  }
+  if (p->names) {
+    e = (*v)(p->names, a); if (e) return e;
+  }
+  return 0;
+}
+
+static int __pyx_tp_clear_4h5py_3h5g_GroupIter(PyObject *o) {
+  struct __pyx_obj_4h5py_3h5g_GroupIter *p = (struct __pyx_obj_4h5py_3h5g_GroupIter *)o;
+  PyObject* tmp;
+  tmp = ((PyObject*)p->grp);
+  p->grp = ((struct __pyx_obj_4h5py_3h5g_GroupID *)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->names);
+  p->names = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  return 0;
+}
+
+static PyMethodDef __pyx_methods_4h5py_3h5g_GroupIter[] = {
+  {__Pyx_NAMESTR("__next__"), (PyCFunction)__pyx_pw_4h5py_3h5g_9GroupIter_5__next__, METH_NOARGS|METH_COEXIST, __Pyx_DOCSTR(0)},
+  {0, 0, 0, 0}
+};
+
+static PyNumberMethods __pyx_tp_as_number_GroupIter = {
+  0, /*nb_add*/
+  0, /*nb_subtract*/
+  0, /*nb_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_divide*/
+  #endif
+  0, /*nb_remainder*/
+  0, /*nb_divmod*/
+  0, /*nb_power*/
+  0, /*nb_negative*/
+  0, /*nb_positive*/
+  0, /*nb_absolute*/
+  0, /*nb_nonzero*/
+  0, /*nb_invert*/
+  0, /*nb_lshift*/
+  0, /*nb_rshift*/
+  0, /*nb_and*/
+  0, /*nb_xor*/
+  0, /*nb_or*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_coerce*/
+  #endif
+  0, /*nb_int*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_long*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*nb_float*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_oct*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_hex*/
+  #endif
+  0, /*nb_inplace_add*/
+  0, /*nb_inplace_subtract*/
+  0, /*nb_inplace_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_inplace_divide*/
+  #endif
+  0, /*nb_inplace_remainder*/
+  0, /*nb_inplace_power*/
+  0, /*nb_inplace_lshift*/
+  0, /*nb_inplace_rshift*/
+  0, /*nb_inplace_and*/
+  0, /*nb_inplace_xor*/
+  0, /*nb_inplace_or*/
+  0, /*nb_floor_divide*/
+  0, /*nb_true_divide*/
+  0, /*nb_inplace_floor_divide*/
+  0, /*nb_inplace_true_divide*/
+  #if PY_VERSION_HEX >= 0x02050000
+  0, /*nb_index*/
+  #endif
+};
+
+static PySequenceMethods __pyx_tp_as_sequence_GroupIter = {
+  0, /*sq_length*/
+  0, /*sq_concat*/
+  0, /*sq_repeat*/
+  0, /*sq_item*/
+  0, /*sq_slice*/
+  0, /*sq_ass_item*/
+  0, /*sq_ass_slice*/
+  0, /*sq_contains*/
+  0, /*sq_inplace_concat*/
+  0, /*sq_inplace_repeat*/
+};
+
+static PyMappingMethods __pyx_tp_as_mapping_GroupIter = {
+  0, /*mp_length*/
+  0, /*mp_subscript*/
+  0, /*mp_ass_subscript*/
+};
+
+static PyBufferProcs __pyx_tp_as_buffer_GroupIter = {
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getreadbuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getwritebuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getsegcount*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getcharbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_getbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_releasebuffer*/
+  #endif
+};
+
+static PyTypeObject __pyx_type_4h5py_3h5g_GroupIter = {
+  PyVarObject_HEAD_INIT(0, 0)
+  __Pyx_NAMESTR("h5py.h5g.GroupIter"), /*tp_name*/
+  sizeof(struct __pyx_obj_4h5py_3h5g_GroupIter), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_4h5py_3h5g_GroupIter, /*tp_dealloc*/
+  0, /*tp_print*/
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*tp_repr*/
+  &__pyx_tp_as_number_GroupIter, /*tp_as_number*/
+  &__pyx_tp_as_sequence_GroupIter, /*tp_as_sequence*/
+  &__pyx_tp_as_mapping_GroupIter, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  &__pyx_tp_as_buffer_GroupIter, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+  __Pyx_DOCSTR("\n        Iterator over the names of group members.  After this iterator is\n        exhausted, it releases its reference to the group ID.\n    "), /*tp_doc*/
+  __pyx_tp_traverse_4h5py_3h5g_GroupIter, /*tp_traverse*/
+  __pyx_tp_clear_4h5py_3h5g_GroupIter, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  __pyx_pw_4h5py_3h5g_9GroupIter_3__iter__, /*tp_iter*/
+  __pyx_pw_4h5py_3h5g_9GroupIter_5__next__, /*tp_iternext*/
+  __pyx_methods_4h5py_3h5g_GroupIter, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  0, /*tp_dictoffset*/
+  __pyx_pw_4h5py_3h5g_9GroupIter_1__init__, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_4h5py_3h5g_GroupIter, /*tp_new*/
+  0, /*tp_free*/
+  0, /*tp_is_gc*/
+  0, /*tp_bases*/
+  0, /*tp_mro*/
+  0, /*tp_cache*/
+  0, /*tp_subclasses*/
+  0, /*tp_weaklist*/
+  0, /*tp_del*/
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*tp_version_tag*/
+  #endif
+};
+
+static PyObject *__pyx_tp_new_4h5py_3h5g__GroupVisitor(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
+  struct __pyx_obj_4h5py_3h5g__GroupVisitor *p;
+  PyObject *o = (*t->tp_alloc)(t, 0);
+  if (!o) return 0;
+  p = ((struct __pyx_obj_4h5py_3h5g__GroupVisitor *)o);
+  p->func = Py_None; Py_INCREF(Py_None);
+  p->retval = Py_None; Py_INCREF(Py_None);
+  return o;
+}
+
+static void __pyx_tp_dealloc_4h5py_3h5g__GroupVisitor(PyObject *o) {
+  struct __pyx_obj_4h5py_3h5g__GroupVisitor *p = (struct __pyx_obj_4h5py_3h5g__GroupVisitor *)o;
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->func);
+  Py_CLEAR(p->retval);
+  PyObject_GC_Track(o);
+  (*Py_TYPE(o)->tp_free)(o);
+}
+
+static int __pyx_tp_traverse_4h5py_3h5g__GroupVisitor(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_4h5py_3h5g__GroupVisitor *p = (struct __pyx_obj_4h5py_3h5g__GroupVisitor *)o;
+  if (p->func) {
+    e = (*v)(p->func, a); if (e) return e;
+  }
+  if (p->retval) {
+    e = (*v)(p->retval, a); if (e) return e;
+  }
+  return 0;
+}
+
+static int __pyx_tp_clear_4h5py_3h5g__GroupVisitor(PyObject *o) {
+  struct __pyx_obj_4h5py_3h5g__GroupVisitor *p = (struct __pyx_obj_4h5py_3h5g__GroupVisitor *)o;
+  PyObject* tmp;
+  tmp = ((PyObject*)p->func);
+  p->func = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->retval);
+  p->retval = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  return 0;
+}
+
+static PyMethodDef __pyx_methods_4h5py_3h5g__GroupVisitor[] = {
+  {0, 0, 0, 0}
+};
+
+static PyNumberMethods __pyx_tp_as_number__GroupVisitor = {
+  0, /*nb_add*/
+  0, /*nb_subtract*/
+  0, /*nb_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_divide*/
+  #endif
+  0, /*nb_remainder*/
+  0, /*nb_divmod*/
+  0, /*nb_power*/
+  0, /*nb_negative*/
+  0, /*nb_positive*/
+  0, /*nb_absolute*/
+  0, /*nb_nonzero*/
+  0, /*nb_invert*/
+  0, /*nb_lshift*/
+  0, /*nb_rshift*/
+  0, /*nb_and*/
+  0, /*nb_xor*/
+  0, /*nb_or*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_coerce*/
+  #endif
+  0, /*nb_int*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_long*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*nb_float*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_oct*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_hex*/
+  #endif
+  0, /*nb_inplace_add*/
+  0, /*nb_inplace_subtract*/
+  0, /*nb_inplace_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_inplace_divide*/
+  #endif
+  0, /*nb_inplace_remainder*/
+  0, /*nb_inplace_power*/
+  0, /*nb_inplace_lshift*/
+  0, /*nb_inplace_rshift*/
+  0, /*nb_inplace_and*/
+  0, /*nb_inplace_xor*/
+  0, /*nb_inplace_or*/
+  0, /*nb_floor_divide*/
+  0, /*nb_true_divide*/
+  0, /*nb_inplace_floor_divide*/
+  0, /*nb_inplace_true_divide*/
+  #if PY_VERSION_HEX >= 0x02050000
+  0, /*nb_index*/
+  #endif
+};
+
+static PySequenceMethods __pyx_tp_as_sequence__GroupVisitor = {
+  0, /*sq_length*/
+  0, /*sq_concat*/
+  0, /*sq_repeat*/
+  0, /*sq_item*/
+  0, /*sq_slice*/
+  0, /*sq_ass_item*/
+  0, /*sq_ass_slice*/
+  0, /*sq_contains*/
+  0, /*sq_inplace_concat*/
+  0, /*sq_inplace_repeat*/
+};
+
+static PyMappingMethods __pyx_tp_as_mapping__GroupVisitor = {
+  0, /*mp_length*/
+  0, /*mp_subscript*/
+  0, /*mp_ass_subscript*/
+};
+
+static PyBufferProcs __pyx_tp_as_buffer__GroupVisitor = {
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getreadbuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getwritebuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getsegcount*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getcharbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_getbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_releasebuffer*/
+  #endif
+};
+
+static PyTypeObject __pyx_type_4h5py_3h5g__GroupVisitor = {
+  PyVarObject_HEAD_INIT(0, 0)
+  __Pyx_NAMESTR("h5py.h5g._GroupVisitor"), /*tp_name*/
+  sizeof(struct __pyx_obj_4h5py_3h5g__GroupVisitor), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_4h5py_3h5g__GroupVisitor, /*tp_dealloc*/
+  0, /*tp_print*/
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*tp_repr*/
+  &__pyx_tp_as_number__GroupVisitor, /*tp_as_number*/
+  &__pyx_tp_as_sequence__GroupVisitor, /*tp_as_sequence*/
+  &__pyx_tp_as_mapping__GroupVisitor, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  &__pyx_tp_as_buffer__GroupVisitor, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_4h5py_3h5g__GroupVisitor, /*tp_traverse*/
+  __pyx_tp_clear_4h5py_3h5g__GroupVisitor, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_4h5py_3h5g__GroupVisitor, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  0, /*tp_dictoffset*/
+  __pyx_pw_4h5py_3h5g_13_GroupVisitor_1__init__, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_4h5py_3h5g__GroupVisitor, /*tp_new*/
+  0, /*tp_free*/
+  0, /*tp_is_gc*/
+  0, /*tp_bases*/
+  0, /*tp_mro*/
+  0, /*tp_cache*/
+  0, /*tp_subclasses*/
+  0, /*tp_weaklist*/
+  0, /*tp_del*/
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*tp_version_tag*/
+  #endif
+};
+
+static PyMethodDef __pyx_methods[] = {
+  {0, 0, 0, 0}
+};
+
+#if PY_MAJOR_VERSION >= 3
+static struct PyModuleDef __pyx_moduledef = {
+  #if PY_VERSION_HEX < 0x03020000
+    { PyObject_HEAD_INIT(NULL) NULL, 0, NULL },
+  #else
+    PyModuleDef_HEAD_INIT,
+  #endif
+    __Pyx_NAMESTR("h5g"),
+    __Pyx_DOCSTR(__pyx_k_7), /* m_doc */
+    -1, /* m_size */
+    __pyx_methods /* m_methods */,
+    NULL, /* m_reload */
+    NULL, /* m_traverse */
+    NULL, /* m_clear */
+    NULL /* m_free */
+};
+#endif
+
+static __Pyx_StringTabEntry __pyx_string_tab[] = {
+  {&__pyx_kp_b_1, __pyx_k_1, sizeof(__pyx_k_1), 0, 0, 0, 0},
+  {&__pyx_kp_s_10, __pyx_k_10, sizeof(__pyx_k_10), 0, 0, 1, 0},
+  {&__pyx_n_s_11, __pyx_k_11, sizeof(__pyx_k_11), 0, 0, 1, 1},
+  {&__pyx_kp_s_2, __pyx_k_2, sizeof(__pyx_k_2), 0, 0, 1, 0},
+  {&__pyx_kp_s_6, __pyx_k_6, sizeof(__pyx_k_6), 0, 0, 1, 0},
+  {&__pyx_n_s__DATASET, __pyx_k__DATASET, sizeof(__pyx_k__DATASET), 0, 0, 1, 1},
+  {&__pyx_n_s__GROUP, __pyx_k__GROUP, sizeof(__pyx_k__GROUP), 0, 0, 1, 1},
+  {&__pyx_n_s__LINK, __pyx_k__LINK, sizeof(__pyx_k__LINK), 0, 0, 1, 1},
+  {&__pyx_n_s__LINK_ERROR, __pyx_k__LINK_ERROR, sizeof(__pyx_k__LINK_ERROR), 0, 0, 1, 1},
+  {&__pyx_n_s__LINK_HARD, __pyx_k__LINK_HARD, sizeof(__pyx_k__LINK_HARD), 0, 0, 1, 1},
+  {&__pyx_n_s__LINK_SOFT, __pyx_k__LINK_SOFT, sizeof(__pyx_k__LINK_SOFT), 0, 0, 1, 1},
+  {&__pyx_n_s__LinkProxy, __pyx_k__LinkProxy, sizeof(__pyx_k__LinkProxy), 0, 0, 1, 1},
+  {&__pyx_n_s__StopIteration, __pyx_k__StopIteration, sizeof(__pyx_k__StopIteration), 0, 0, 1, 1},
+  {&__pyx_n_s__TYPE, __pyx_k__TYPE, sizeof(__pyx_k__TYPE), 0, 0, 1, 1},
+  {&__pyx_n_s__UNKNOWN, __pyx_k__UNKNOWN, sizeof(__pyx_k__UNKNOWN), 0, 0, 1, 1},
+  {&__pyx_n_s__ValueError, __pyx_k__ValueError, sizeof(__pyx_k__ValueError), 0, 0, 1, 1},
+  {&__pyx_n_s____enter__, __pyx_k____enter__, sizeof(__pyx_k____enter__), 0, 0, 1, 1},
+  {&__pyx_n_s____exit__, __pyx_k____exit__, sizeof(__pyx_k____exit__), 0, 0, 1, 1},
+  {&__pyx_n_s____main__, __pyx_k____main__, sizeof(__pyx_k____main__), 0, 0, 1, 1},
+  {&__pyx_n_s____test__, __pyx_k____test__, sizeof(__pyx_k____test__), 0, 0, 1, 1},
+  {&__pyx_n_s___name, __pyx_k___name, sizeof(__pyx_k___name), 0, 0, 1, 1},
+  {&__pyx_n_s___objects, __pyx_k___objects, sizeof(__pyx_k___objects), 0, 0, 1, 1},
+  {&__pyx_n_s__append, __pyx_k__append, sizeof(__pyx_k__append), 0, 0, 1, 1},
+  {&__pyx_n_s__cname, __pyx_k__cname, sizeof(__pyx_k__cname), 0, 0, 1, 1},
+  {&__pyx_n_s__comment, __pyx_k__comment, sizeof(__pyx_k__comment), 0, 0, 1, 1},
+  {&__pyx_n_s__create, __pyx_k__create, sizeof(__pyx_k__create), 0, 0, 1, 1},
+  {&__pyx_n_s__current_name, __pyx_k__current_name, sizeof(__pyx_k__current_name), 0, 0, 1, 1},
+  {&__pyx_n_s__fileno, __pyx_k__fileno, sizeof(__pyx_k__fileno), 0, 0, 1, 1},
+  {&__pyx_n_s__follow_link, __pyx_k__follow_link, sizeof(__pyx_k__follow_link), 0, 0, 1, 1},
+  {&__pyx_n_s__func, __pyx_k__func, sizeof(__pyx_k__func), 0, 0, 1, 1},
+  {&__pyx_n_s__gcpl, __pyx_k__gcpl, sizeof(__pyx_k__gcpl), 0, 0, 1, 1},
+  {&__pyx_n_s__get_num_objs, __pyx_k__get_num_objs, sizeof(__pyx_k__get_num_objs), 0, 0, 1, 1},
+  {&__pyx_n_s__get_objinfo, __pyx_k__get_objinfo, sizeof(__pyx_k__get_objinfo), 0, 0, 1, 1},
+  {&__pyx_n_s__gid, __pyx_k__gid, sizeof(__pyx_k__gid), 0, 0, 1, 1},
+  {&__pyx_n_s__grp, __pyx_k__grp, sizeof(__pyx_k__grp), 0, 0, 1, 1},
+  {&__pyx_n_s__h5l, __pyx_k__h5l, sizeof(__pyx_k__h5l), 0, 0, 1, 1},
+  {&__pyx_n_s__h5py, __pyx_k__h5py, sizeof(__pyx_k__h5py), 0, 0, 1, 1},
+  {&__pyx_n_s__i, __pyx_k__i, sizeof(__pyx_k__i), 0, 0, 1, 1},
+  {&__pyx_n_s__id_, __pyx_k__id_, sizeof(__pyx_k__id_), 0, 0, 1, 1},
+  {&__pyx_n_s__iterate, __pyx_k__iterate, sizeof(__pyx_k__iterate), 0, 0, 1, 1},
+  {&__pyx_n_s__lcpl, __pyx_k__lcpl, sizeof(__pyx_k__lcpl), 0, 0, 1, 1},
+  {&__pyx_n_s__link_type, __pyx_k__link_type, sizeof(__pyx_k__link_type), 0, 0, 1, 1},
+  {&__pyx_n_s__linklen, __pyx_k__linklen, sizeof(__pyx_k__linklen), 0, 0, 1, 1},
+  {&__pyx_n_s__loc, __pyx_k__loc, sizeof(__pyx_k__loc), 0, 0, 1, 1},
+  {&__pyx_n_s__lock, __pyx_k__lock, sizeof(__pyx_k__lock), 0, 0, 1, 1},
+  {&__pyx_n_s__mtime, __pyx_k__mtime, sizeof(__pyx_k__mtime), 0, 0, 1, 1},
+  {&__pyx_n_s__name, __pyx_k__name, sizeof(__pyx_k__name), 0, 0, 1, 1},
+  {&__pyx_n_s__new_name, __pyx_k__new_name, sizeof(__pyx_k__new_name), 0, 0, 1, 1},
+  {&__pyx_n_s__nlink, __pyx_k__nlink, sizeof(__pyx_k__nlink), 0, 0, 1, 1},
+  {&__pyx_n_s__obj, __pyx_k__obj, sizeof(__pyx_k__obj), 0, 0, 1, 1},
+  {&__pyx_n_s__obj_name, __pyx_k__obj_name, sizeof(__pyx_k__obj_name), 0, 0, 1, 1},
+  {&__pyx_n_s__objno, __pyx_k__objno, sizeof(__pyx_k__objno), 0, 0, 1, 1},
+  {&__pyx_n_s__open, __pyx_k__open, sizeof(__pyx_k__open), 0, 0, 1, 1},
+  {&__pyx_n_s__registry, __pyx_k__registry, sizeof(__pyx_k__registry), 0, 0, 1, 1},
+  {&__pyx_n_s__remote, __pyx_k__remote, sizeof(__pyx_k__remote), 0, 0, 1, 1},
+  {&__pyx_n_s__startidx, __pyx_k__startidx, sizeof(__pyx_k__startidx), 0, 0, 1, 1},
+  {&__pyx_n_s__statobj, __pyx_k__statobj, sizeof(__pyx_k__statobj), 0, 0, 1, 1},
+  {&__pyx_n_s__type, __pyx_k__type, sizeof(__pyx_k__type), 0, 0, 1, 1},
+  {&__pyx_n_s__valid, __pyx_k__valid, sizeof(__pyx_k__valid), 0, 0, 1, 1},
+  {&__pyx_n_s__vis, __pyx_k__vis, sizeof(__pyx_k__vis), 0, 0, 1, 1},
+  {0, 0, 0, 0, 0, 0, 0}
+};
+static int __Pyx_InitCachedBuiltins(void) {
+  __pyx_builtin_StopIteration = __Pyx_GetName(__pyx_b, __pyx_n_s__StopIteration); if (!__pyx_builtin_StopIteration) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_builtin_ValueError = __Pyx_GetName(__pyx_b, __pyx_n_s__ValueError); if (!__pyx_builtin_ValueError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 189; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  return 0;
+  __pyx_L1_error:;
+  return -1;
+}
+
+static int __Pyx_InitCachedConstants(void) {
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0);
+
+  /* "h5py/h5g.pyx":189
+ *     """
+ *     if startidx < 0:
+ *         raise ValueError("Starting index must be non-negative")             # <<<<<<<<<<<<<<
+ * 
+ *     cdef int i = startidx
+ */
+  __pyx_k_tuple_3 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_2)); if (unlikely(!__pyx_k_tuple_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 189; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_3);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_3));
+
+  /* "h5py/h5g.pyx":258
+ *         when their Python wrappers are freed.
+ *         """
+ *         with _objects.registry.lock:             # <<<<<<<<<<<<<<
+ *             H5Gclose(self.id)
+ *             if not self.valid:
+ */
+  __pyx_k_tuple_4 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 258; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_4);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_4));
+
+  /* "h5py/h5g.pyx":123
+ * 
+ * 
+ * def open(ObjectID loc not None, char* name):             # <<<<<<<<<<<<<<
+ *     """(ObjectID loc, STRING name) => GroupID
+ * 
+ */
+  __pyx_k_tuple_8 = PyTuple_Pack(2, ((PyObject *)__pyx_n_s__loc), ((PyObject *)__pyx_n_s__name)); if (unlikely(!__pyx_k_tuple_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_8);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_8));
+  __pyx_k_codeobj_9 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_8, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_10, __pyx_n_s__open, 123, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5g.pyx":130
+ *     return GroupID.open(H5Gopen(loc.id, name))
+ * 
+ * def create(ObjectID loc not None, object name, PropID lcpl=None,             # <<<<<<<<<<<<<<
+ *            PropID gcpl=None):
+ *     """(ObjectID loc, STRING name or None, PropLCID lcpl=None,
+ */
+  __pyx_k_tuple_12 = PyTuple_Pack(6, ((PyObject *)__pyx_n_s__loc), ((PyObject *)__pyx_n_s__name), ((PyObject *)__pyx_n_s__lcpl), ((PyObject *)__pyx_n_s__gcpl), ((PyObject *)__pyx_n_s__gid), ((PyObject *)__pyx_n_s__cname)); if (unlikely(!__pyx_k_tuple_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_12);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_12));
+  __pyx_k_codeobj_13 = (PyObject*)__Pyx_PyCode_New(4, 0, 6, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_12, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_10, __pyx_n_s__create, 130, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5g.pyx":172
+ * 
+ * 
+ * def iterate(GroupID loc not None, object func, int startidx=0, *,             # <<<<<<<<<<<<<<
+ *             char* obj_name='.'):
+ *     """ (GroupID loc, CALLABLE func, UINT startidx=0, **kwds)
+ */
+  __pyx_k_tuple_14 = PyTuple_Pack(6, ((PyObject *)__pyx_n_s__loc), ((PyObject *)__pyx_n_s__func), ((PyObject *)__pyx_n_s__startidx), ((PyObject *)__pyx_n_s__obj_name), ((PyObject *)__pyx_n_s__i), ((PyObject *)__pyx_n_s__vis)); if (unlikely(!__pyx_k_tuple_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_14);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_14));
+  __pyx_k_codeobj_15 = (PyObject*)__Pyx_PyCode_New(4, 1, 6, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_14, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_10, __pyx_n_s__iterate, 172, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5g.pyx":199
+ * 
+ * 
+ * def get_objinfo(ObjectID obj not None, object name=b'.', int follow_link=1):             # <<<<<<<<<<<<<<
+ *     """(ObjectID obj, STRING name='.', BOOL follow_link=True) => GroupStat object
+ * 
+ */
+  __pyx_k_tuple_16 = PyTuple_Pack(5, ((PyObject *)__pyx_n_s__obj), ((PyObject *)__pyx_n_s__name), ((PyObject *)__pyx_n_s__follow_link), ((PyObject *)__pyx_n_s__statobj), ((PyObject *)__pyx_n_s___name)); if (unlikely(!__pyx_k_tuple_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 199; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_16);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_16));
+  __pyx_k_codeobj_17 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_16, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_10, __pyx_n_s__get_objinfo, 199, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 199; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_RefNannyFinishContext();
+  return 0;
+  __pyx_L1_error:;
+  __Pyx_RefNannyFinishContext();
+  return -1;
+}
+
+static int __Pyx_InitGlobals(void) {
+  if (__Pyx_InitStrings(__pyx_string_tab) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  __pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  return 0;
+  __pyx_L1_error:;
+  return -1;
+}
+
+#if PY_MAJOR_VERSION < 3
+PyMODINIT_FUNC inith5g(void); /*proto*/
+PyMODINIT_FUNC inith5g(void)
+#else
+PyMODINIT_FUNC PyInit_h5g(void); /*proto*/
+PyMODINIT_FUNC PyInit_h5g(void)
+#endif
+{
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  __Pyx_RefNannyDeclarations
+  #if CYTHON_REFNANNY
+  __Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny");
+  if (!__Pyx_RefNanny) {
+      PyErr_Clear();
+      __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny");
+      if (!__Pyx_RefNanny)
+          Py_FatalError("failed to import 'refnanny' module");
+  }
+  #endif
+  __Pyx_RefNannySetupContext("PyMODINIT_FUNC PyInit_h5g(void)", 0);
+  if ( __Pyx_check_binary_version() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #ifdef __Pyx_CyFunction_USED
+  if (__Pyx_CyFunction_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #endif
+  #ifdef __Pyx_FusedFunction_USED
+  if (__pyx_FusedFunction_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #endif
+  #ifdef __Pyx_Generator_USED
+  if (__pyx_Generator_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #endif
+  /*--- Library function declarations ---*/
+  /*--- Threads initialization code ---*/
+  #if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS
+  #ifdef WITH_THREAD /* Python build with threading support? */
+  PyEval_InitThreads();
+  #endif
+  #endif
+  /*--- Module creation code ---*/
+  #if PY_MAJOR_VERSION < 3
+  __pyx_m = Py_InitModule4(__Pyx_NAMESTR("h5g"), __pyx_methods, __Pyx_DOCSTR(__pyx_k_7), 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m);
+  #else
+  __pyx_m = PyModule_Create(&__pyx_moduledef);
+  #endif
+  if (unlikely(!__pyx_m)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #if PY_MAJOR_VERSION >= 3
+  {
+    PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (!PyDict_GetItemString(modules, "h5py.h5g")) {
+      if (unlikely(PyDict_SetItemString(modules, "h5py.h5g", __pyx_m) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    }
+  }
+  #endif
+  __pyx_b = PyImport_AddModule(__Pyx_NAMESTR(__Pyx_BUILTIN_MODULE_NAME)); if (unlikely(!__pyx_b)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #if CYTHON_COMPILING_IN_PYPY
+  Py_INCREF(__pyx_b);
+  #endif
+  if (__Pyx_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  /*--- Initialize various global constants etc. ---*/
+  if (unlikely(__Pyx_InitGlobals() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__pyx_module_is_main_h5py__h5g) {
+    if (__Pyx_SetAttrString(__pyx_m, "__name__", __pyx_n_s____main__) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  }
+  /*--- Builtin init code ---*/
+  if (unlikely(__Pyx_InitCachedBuiltins() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  /*--- Constants init code ---*/
+  if (unlikely(__Pyx_InitCachedConstants() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  /*--- Global init code ---*/
+  /*--- Variable export code ---*/
+  /*--- Function export code ---*/
+  /*--- Type init code ---*/
+  __pyx_ptype_4h5py_8_objects_ObjectID = __Pyx_ImportType("h5py._objects", "ObjectID", sizeof(struct __pyx_obj_4h5py_8_objects_ObjectID), 1); if (unlikely(!__pyx_ptype_4h5py_8_objects_ObjectID)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_type_4h5py_3h5g_GroupID.tp_base = __pyx_ptype_4h5py_8_objects_ObjectID;
+  if (PyType_Ready(&__pyx_type_4h5py_3h5g_GroupID) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 222; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #if CYTHON_COMPILING_IN_CPYTHON
+  {
+    PyObject *wrapper = __Pyx_GetAttrString((PyObject *)&__pyx_type_4h5py_3h5g_GroupID, "__contains__"); if (unlikely(!wrapper)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 222; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
+      __pyx_wrapperbase_4h5py_3h5g_7GroupID_22__contains__ = *((PyWrapperDescrObject *)wrapper)->d_base;
+      __pyx_wrapperbase_4h5py_3h5g_7GroupID_22__contains__.doc = __pyx_doc_4h5py_3h5g_7GroupID_22__contains__;
+      ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_4h5py_3h5g_7GroupID_22__contains__;
+    }
+  }
+  #endif
+  #if CYTHON_COMPILING_IN_CPYTHON
+  {
+    PyObject *wrapper = __Pyx_GetAttrString((PyObject *)&__pyx_type_4h5py_3h5g_GroupID, "__iter__"); if (unlikely(!wrapper)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 222; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
+      __pyx_wrapperbase_4h5py_3h5g_7GroupID_24__iter__ = *((PyWrapperDescrObject *)wrapper)->d_base;
+      __pyx_wrapperbase_4h5py_3h5g_7GroupID_24__iter__.doc = __pyx_doc_4h5py_3h5g_7GroupID_24__iter__;
+      ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_4h5py_3h5g_7GroupID_24__iter__;
+    }
+  }
+  #endif
+  #if CYTHON_COMPILING_IN_CPYTHON
+  {
+    PyObject *wrapper = __Pyx_GetAttrString((PyObject *)&__pyx_type_4h5py_3h5g_GroupID, "__len__"); if (unlikely(!wrapper)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 222; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
+      __pyx_wrapperbase_4h5py_3h5g_7GroupID_26__len__ = *((PyWrapperDescrObject *)wrapper)->d_base;
+      __pyx_wrapperbase_4h5py_3h5g_7GroupID_26__len__.doc = __pyx_doc_4h5py_3h5g_7GroupID_26__len__;
+      ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_4h5py_3h5g_7GroupID_26__len__;
+    }
+  }
+  #endif
+  if (__Pyx_SetAttrString(__pyx_m, "GroupID", (PyObject *)&__pyx_type_4h5py_3h5g_GroupID) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 222; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__pyx_type_4h5py_3h5g_GroupID.tp_weaklistoffset == 0) __pyx_type_4h5py_3h5g_GroupID.tp_weaklistoffset = offsetof(struct __pyx_obj_4h5py_3h5g_GroupID, __pyx_base.__weakref__);
+  __pyx_ptype_4h5py_3h5g_GroupID = &__pyx_type_4h5py_3h5g_GroupID;
+  if (PyType_Ready(&__pyx_type_4h5py_3h5g_GroupStat) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetAttrString(__pyx_m, "GroupStat", (PyObject *)&__pyx_type_4h5py_3h5g_GroupStat) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5g_GroupStat = &__pyx_type_4h5py_3h5g_GroupStat;
+  if (PyType_Ready(&__pyx_type_4h5py_3h5g_GroupIter) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetAttrString(__pyx_m, "GroupIter", (PyObject *)&__pyx_type_4h5py_3h5g_GroupIter) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5g_GroupIter = &__pyx_type_4h5py_3h5g_GroupIter;
+  if (PyType_Ready(&__pyx_type_4h5py_3h5g__GroupVisitor) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 152; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetAttrString(__pyx_m, "_GroupVisitor", (PyObject *)&__pyx_type_4h5py_3h5g__GroupVisitor) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 152; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5g__GroupVisitor = &__pyx_type_4h5py_3h5g__GroupVisitor;
+  /*--- Type import code ---*/
+  __pyx_ptype_4h5py_5numpy_dtype = __Pyx_ImportType("numpy", "dtype", sizeof(PyArray_Descr), 0); if (unlikely(!__pyx_ptype_4h5py_5numpy_dtype)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_5numpy_ndarray = __Pyx_ImportType("numpy", "ndarray", sizeof(PyArrayObject), 0); if (unlikely(!__pyx_ptype_4h5py_5numpy_ndarray)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5p_PropID = __Pyx_ImportType("h5py.h5p", "PropID", sizeof(struct __pyx_obj_4h5py_3h5p_PropID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5p_PropID)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5p_PropClassID = __Pyx_ImportType("h5py.h5p", "PropClassID", sizeof(struct __pyx_obj_4h5py_3h5p_PropClassID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5p_PropClassID)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5p_PropInstanceID = __Pyx_ImportType("h5py.h5p", "PropInstanceID", sizeof(struct __pyx_obj_4h5py_3h5p_PropInstanceID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5p_PropInstanceID)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5p_PropCreateID = __Pyx_ImportType("h5py.h5p", "PropCreateID", sizeof(struct __pyx_obj_4h5py_3h5p_PropCreateID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5p_PropCreateID)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5p_PropCopyID = __Pyx_ImportType("h5py.h5p", "PropCopyID", sizeof(struct __pyx_obj_4h5py_3h5p_PropCopyID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5p_PropCopyID)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5p_PropOCID = __Pyx_ImportType("h5py.h5p", "PropOCID", sizeof(struct __pyx_obj_4h5py_3h5p_PropOCID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5p_PropOCID)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5p_PropDCID = __Pyx_ImportType("h5py.h5p", "PropDCID", sizeof(struct __pyx_obj_4h5py_3h5p_PropDCID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5p_PropDCID)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5p_PropFCID = __Pyx_ImportType("h5py.h5p", "PropFCID", sizeof(struct __pyx_obj_4h5py_3h5p_PropFCID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5p_PropFCID)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5p_PropFAID = __Pyx_ImportType("h5py.h5p", "PropFAID", sizeof(struct __pyx_obj_4h5py_3h5p_PropFAID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5p_PropFAID)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5p_PropDXID = __Pyx_ImportType("h5py.h5p", "PropDXID", sizeof(struct __pyx_obj_4h5py_3h5p_PropDXID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5p_PropDXID)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5p_PropLCID = __Pyx_ImportType("h5py.h5p", "PropLCID", sizeof(struct __pyx_obj_4h5py_3h5p_PropLCID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5p_PropLCID)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5p_PropLAID = __Pyx_ImportType("h5py.h5p", "PropLAID", sizeof(struct __pyx_obj_4h5py_3h5p_PropLAID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5p_PropLAID)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5p_PropGCID = __Pyx_ImportType("h5py.h5p", "PropGCID", sizeof(struct __pyx_obj_4h5py_3h5p_PropGCID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5p_PropGCID)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  /*--- Variable import code ---*/
+  /*--- Function import code ---*/
+  __pyx_t_1 = __Pyx_ImportModule("h5py.defs"); if (!__pyx_t_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Gopen", (void (**)(void))&__pyx_f_4h5py_4defs_H5Gopen, "hid_t (hid_t, char *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Gclose", (void (**)(void))&__pyx_f_4h5py_4defs_H5Gclose, "herr_t (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Glink2", (void (**)(void))&__pyx_f_4h5py_4defs_H5Glink2, "herr_t (hid_t, char *, H5G_link_t, hid_t, char *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Gunlink", (void (**)(void))&__pyx_f_4h5py_4defs_H5Gunlink, "herr_t (hid_t, char *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Gmove2", (void (**)(void))&__pyx_f_4h5py_4defs_H5Gmove2, "herr_t (hid_t, char *, hid_t, char *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Gget_num_objs", (void (**)(void))&__pyx_f_4h5py_4defs_H5Gget_num_objs, "herr_t (hid_t, hsize_t *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Gget_objname_by_idx", (void (**)(void))&__pyx_f_4h5py_4defs_H5Gget_objname_by_idx, "int (hid_t, hsize_t, char *, size_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Gget_objtype_by_idx", (void (**)(void))&__pyx_f_4h5py_4defs_H5Gget_objtype_by_idx, "int (hid_t, hsize_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Giterate", (void (**)(void))&__pyx_f_4h5py_4defs_H5Giterate, "herr_t (hid_t, char *, int *, H5G_iterate_t, void *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Gget_objinfo", (void (**)(void))&__pyx_f_4h5py_4defs_H5Gget_objinfo, "herr_t (hid_t, char *, int, H5G_stat_t *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Gget_linkval", (void (**)(void))&__pyx_f_4h5py_4defs_H5Gget_linkval, "herr_t (hid_t, char *, size_t, char *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Gset_comment", (void (**)(void))&__pyx_f_4h5py_4defs_H5Gset_comment, "herr_t (hid_t, char *, char *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Gget_comment", (void (**)(void))&__pyx_f_4h5py_4defs_H5Gget_comment, "int (hid_t, char *, size_t, char *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Gcreate_anon", (void (**)(void))&__pyx_f_4h5py_4defs_H5Gcreate_anon, "hid_t (hid_t, hid_t, hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Gcreate2", (void (**)(void))&__pyx_f_4h5py_4defs_H5Gcreate2, "hid_t (hid_t, char *, hid_t, hid_t, hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  Py_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_2 = __Pyx_ImportModule("h5py._objects"); if (!__pyx_t_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_2, "pdefault", (void (**)(void))&__pyx_f_4h5py_8_objects_pdefault, "hid_t (struct __pyx_obj_4h5py_8_objects_ObjectID *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  Py_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_3 = __Pyx_ImportModule("h5py.utils"); if (!__pyx_t_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_3, "emalloc", (void (**)(void))&__pyx_f_4h5py_5utils_emalloc, "void *(size_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_3, "efree", (void (**)(void))&__pyx_f_4h5py_5utils_efree, "void (void *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  Py_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_t_4 = __Pyx_ImportModule("h5py._errors"); if (!__pyx_t_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_4, "set_error_handler", (void (**)(void))&__pyx_f_4h5py_7_errors_set_error_handler, "__pyx_t_4h5py_7_errors_err_cookie (__pyx_t_4h5py_7_errors_err_cookie)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  Py_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  /*--- Execution code ---*/
+
+  /* "h5py/h5g.pyx":21
+ * from _errors cimport set_error_handler, err_cookie
+ * 
+ * from h5py import _objects             # <<<<<<<<<<<<<<
+ * 
+ * # === Public constants and data structures ====================================
+ */
+  __pyx_t_5 = PyList_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_INCREF(((PyObject *)__pyx_n_s___objects));
+  PyList_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_n_s___objects));
+  __Pyx_GIVEREF(((PyObject *)__pyx_n_s___objects));
+  __pyx_t_6 = __Pyx_Import(((PyObject *)__pyx_n_s__h5py), ((PyObject *)__pyx_t_5), -1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_6);
+  __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
+  __pyx_t_5 = PyObject_GetAttr(__pyx_t_6, __pyx_n_s___objects);
+  if (__pyx_t_5 == NULL) {
+    if (PyErr_ExceptionMatches(PyExc_AttributeError)) __Pyx_RaiseImportError(__pyx_n_s___objects);
+    if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  }
+  __Pyx_GOTREF(__pyx_t_5);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s___objects, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+
+  /* "h5py/h5g.pyx":26
+ * 
+ * # Enumerated object types for groups "H5G_obj_t"
+ * UNKNOWN  = H5G_UNKNOWN             # <<<<<<<<<<<<<<
+ * LINK     = H5G_LINK
+ * GROUP    = H5G_GROUP
+ */
+  __pyx_t_6 = PyInt_FromLong(H5G_UNKNOWN); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_6);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__UNKNOWN, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+
+  /* "h5py/h5g.pyx":27
+ * # Enumerated object types for groups "H5G_obj_t"
+ * UNKNOWN  = H5G_UNKNOWN
+ * LINK     = H5G_LINK             # <<<<<<<<<<<<<<
+ * GROUP    = H5G_GROUP
+ * DATASET  = H5G_DATASET
+ */
+  __pyx_t_6 = PyInt_FromLong(H5G_LINK); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_6);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__LINK, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+
+  /* "h5py/h5g.pyx":28
+ * UNKNOWN  = H5G_UNKNOWN
+ * LINK     = H5G_LINK
+ * GROUP    = H5G_GROUP             # <<<<<<<<<<<<<<
+ * DATASET  = H5G_DATASET
+ * TYPE = H5G_TYPE
+ */
+  __pyx_t_6 = PyInt_FromLong(H5G_GROUP); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_6);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__GROUP, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+
+  /* "h5py/h5g.pyx":29
+ * LINK     = H5G_LINK
+ * GROUP    = H5G_GROUP
+ * DATASET  = H5G_DATASET             # <<<<<<<<<<<<<<
+ * TYPE = H5G_TYPE
+ * 
+ */
+  __pyx_t_6 = PyInt_FromLong(H5G_DATASET); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_6);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__DATASET, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+
+  /* "h5py/h5g.pyx":30
+ * GROUP    = H5G_GROUP
+ * DATASET  = H5G_DATASET
+ * TYPE = H5G_TYPE             # <<<<<<<<<<<<<<
+ * 
+ * # Enumerated link types "H5G_link_t"
+ */
+  __pyx_t_6 = PyInt_FromLong(H5G_TYPE); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_6);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__TYPE, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+
+  /* "h5py/h5g.pyx":33
+ * 
+ * # Enumerated link types "H5G_link_t"
+ * LINK_ERROR = H5G_LINK_ERROR             # <<<<<<<<<<<<<<
+ * LINK_HARD  = H5G_LINK_HARD
+ * LINK_SOFT  = H5G_LINK_SOFT
+ */
+  __pyx_t_6 = PyInt_FromLong(H5G_LINK_ERROR); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_6);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__LINK_ERROR, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+
+  /* "h5py/h5g.pyx":34
+ * # Enumerated link types "H5G_link_t"
+ * LINK_ERROR = H5G_LINK_ERROR
+ * LINK_HARD  = H5G_LINK_HARD             # <<<<<<<<<<<<<<
+ * LINK_SOFT  = H5G_LINK_SOFT
+ * 
+ */
+  __pyx_t_6 = PyInt_FromLong(H5G_LINK_HARD); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_6);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__LINK_HARD, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+
+  /* "h5py/h5g.pyx":35
+ * LINK_ERROR = H5G_LINK_ERROR
+ * LINK_HARD  = H5G_LINK_HARD
+ * LINK_SOFT  = H5G_LINK_SOFT             # <<<<<<<<<<<<<<
+ * 
+ * cdef class GroupStat:
+ */
+  __pyx_t_6 = PyInt_FromLong(H5G_LINK_SOFT); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_6);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__LINK_SOFT, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+
+  /* "h5py/h5g.pyx":123
+ * 
+ * 
+ * def open(ObjectID loc not None, char* name):             # <<<<<<<<<<<<<<
+ *     """(ObjectID loc, STRING name) => GroupID
+ * 
+ */
+  __pyx_t_6 = PyCFunction_NewEx(&__pyx_mdef_4h5py_3h5g_1open, NULL, __pyx_n_s_11); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_6);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__open, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+
+  /* "h5py/h5g.pyx":130
+ *     return GroupID.open(H5Gopen(loc.id, name))
+ * 
+ * def create(ObjectID loc not None, object name, PropID lcpl=None,             # <<<<<<<<<<<<<<
+ *            PropID gcpl=None):
+ *     """(ObjectID loc, STRING name or None, PropLCID lcpl=None,
+ */
+  __pyx_t_6 = PyCFunction_NewEx(&__pyx_mdef_4h5py_3h5g_3create, NULL, __pyx_n_s_11); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_6);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__create, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+
+  /* "h5py/h5g.pyx":172
+ * 
+ * 
+ * def iterate(GroupID loc not None, object func, int startidx=0, *,             # <<<<<<<<<<<<<<
+ *             char* obj_name='.'):
+ *     """ (GroupID loc, CALLABLE func, UINT startidx=0, **kwds)
+ */
+  __pyx_t_6 = PyCFunction_NewEx(&__pyx_mdef_4h5py_3h5g_5iterate, NULL, __pyx_n_s_11); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_6);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__iterate, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+
+  /* "h5py/h5g.pyx":199
+ * 
+ * 
+ * def get_objinfo(ObjectID obj not None, object name=b'.', int follow_link=1):             # <<<<<<<<<<<<<<
+ *     """(ObjectID obj, STRING name='.', BOOL follow_link=True) => GroupStat object
+ * 
+ */
+  __pyx_t_6 = PyCFunction_NewEx(&__pyx_mdef_4h5py_3h5g_7get_objinfo, NULL, __pyx_n_s_11); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 199; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_6);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__get_objinfo, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 199; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+
+  /* "h5py/h5g.pyx":265
+ * 
+ *     def link(self, char* current_name, char* new_name,
+ *              int link_type=H5G_LINK_HARD, GroupID remote=None):             # <<<<<<<<<<<<<<
+ *         """(STRING current_name, STRING new_name, INT link_type=LINK_HARD,
+ *         GroupID remote=None)
+ */
+  __pyx_k_5 = H5G_LINK_HARD;
+
+  /* "h5py/h5g.pyx":1
+ * # This file is part of h5py, a Python interface to the HDF5 library.             # <<<<<<<<<<<<<<
+ * #
+ * # http://www.h5py.org
+ */
+  __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(((PyObject *)__pyx_t_6));
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s____test__, ((PyObject *)__pyx_t_6)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  if (__pyx_m) {
+    __Pyx_AddTraceback("init h5py.h5g", __pyx_clineno, __pyx_lineno, __pyx_filename);
+    Py_DECREF(__pyx_m); __pyx_m = 0;
+  } else if (!PyErr_Occurred()) {
+    PyErr_SetString(PyExc_ImportError, "init h5py.h5g");
+  }
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  #if PY_MAJOR_VERSION < 3
+  return;
+  #else
+  return __pyx_m;
+  #endif
+}
+
+/* Runtime support code */
+#if CYTHON_REFNANNY
+static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) {
+    PyObject *m = NULL, *p = NULL;
+    void *r = NULL;
+    m = PyImport_ImportModule((char *)modname);
+    if (!m) goto end;
+    p = PyObject_GetAttrString(m, (char *)"RefNannyAPI");
+    if (!p) goto end;
+    r = PyLong_AsVoidPtr(p);
+end:
+    Py_XDECREF(p);
+    Py_XDECREF(m);
+    return (__Pyx_RefNannyAPIStruct *)r;
+}
+#endif /* CYTHON_REFNANNY */
+
+static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name) {
+    PyObject *result;
+    result = PyObject_GetAttr(dict, name);
+    if (!result) {
+        if (dict != __pyx_b) {
+            PyErr_Clear();
+            result = PyObject_GetAttr(__pyx_b, name);
+        }
+        if (!result) {
+            PyErr_SetObject(PyExc_NameError, name);
+        }
+    }
+    return result;
+}
+
+static void __Pyx_RaiseDoubleKeywordsError(
+    const char* func_name,
+    PyObject* kw_name)
+{
+    PyErr_Format(PyExc_TypeError,
+        #if PY_MAJOR_VERSION >= 3
+        "%s() got multiple values for keyword argument '%U'", func_name, kw_name);
+        #else
+        "%s() got multiple values for keyword argument '%s'", func_name,
+        PyString_AsString(kw_name));
+        #endif
+}
+
+static int __Pyx_ParseOptionalKeywords(
+    PyObject *kwds,
+    PyObject **argnames[],
+    PyObject *kwds2,
+    PyObject *values[],
+    Py_ssize_t num_pos_args,
+    const char* function_name)
+{
+    PyObject *key = 0, *value = 0;
+    Py_ssize_t pos = 0;
+    PyObject*** name;
+    PyObject*** first_kw_arg = argnames + num_pos_args;
+    while (PyDict_Next(kwds, &pos, &key, &value)) {
+        name = first_kw_arg;
+        while (*name && (**name != key)) name++;
+        if (*name) {
+            values[name-argnames] = value;
+            continue;
+        }
+        name = first_kw_arg;
+        #if PY_MAJOR_VERSION < 3
+        if (likely(PyString_CheckExact(key)) || likely(PyString_Check(key))) {
+            while (*name) {
+                if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key))
+                        && _PyString_Eq(**name, key)) {
+                    values[name-argnames] = value;
+                    break;
+                }
+                name++;
+            }
+            if (*name) continue;
+            else {
+                PyObject*** argname = argnames;
+                while (argname != first_kw_arg) {
+                    if ((**argname == key) || (
+                            (CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**argname) == PyString_GET_SIZE(key))
+                             && _PyString_Eq(**argname, key))) {
+                        goto arg_passed_twice;
+                    }
+                    argname++;
+                }
+            }
+        } else
+        #endif
+        if (likely(PyUnicode_Check(key))) {
+            while (*name) {
+                int cmp = (**name == key) ? 0 :
+                #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
+                    (PyUnicode_GET_SIZE(**name) != PyUnicode_GET_SIZE(key)) ? 1 :
+                #endif
+                    PyUnicode_Compare(**name, key);
+                if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
+                if (cmp == 0) {
+                    values[name-argnames] = value;
+                    break;
+                }
+                name++;
+            }
+            if (*name) continue;
+            else {
+                PyObject*** argname = argnames;
+                while (argname != first_kw_arg) {
+                    int cmp = (**argname == key) ? 0 :
+                    #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
+                        (PyUnicode_GET_SIZE(**argname) != PyUnicode_GET_SIZE(key)) ? 1 :
+                    #endif
+                        PyUnicode_Compare(**argname, key);
+                    if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
+                    if (cmp == 0) goto arg_passed_twice;
+                    argname++;
+                }
+            }
+        } else
+            goto invalid_keyword_type;
+        if (kwds2) {
+            if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad;
+        } else {
+            goto invalid_keyword;
+        }
+    }
+    return 0;
+arg_passed_twice:
+    __Pyx_RaiseDoubleKeywordsError(function_name, key);
+    goto bad;
+invalid_keyword_type:
+    PyErr_Format(PyExc_TypeError,
+        "%s() keywords must be strings", function_name);
+    goto bad;
+invalid_keyword:
+    PyErr_Format(PyExc_TypeError,
+    #if PY_MAJOR_VERSION < 3
+        "%s() got an unexpected keyword argument '%s'",
+        function_name, PyString_AsString(key));
+    #else
+        "%s() got an unexpected keyword argument '%U'",
+        function_name, key);
+    #endif
+bad:
+    return -1;
+}
+
+static void __Pyx_RaiseArgtupleInvalid(
+    const char* func_name,
+    int exact,
+    Py_ssize_t num_min,
+    Py_ssize_t num_max,
+    Py_ssize_t num_found)
+{
+    Py_ssize_t num_expected;
+    const char *more_or_less;
+    if (num_found < num_min) {
+        num_expected = num_min;
+        more_or_less = "at least";
+    } else {
+        num_expected = num_max;
+        more_or_less = "at most";
+    }
+    if (exact) {
+        more_or_less = "exactly";
+    }
+    PyErr_Format(PyExc_TypeError,
+                 "%s() takes %s %" CYTHON_FORMAT_SSIZE_T "d positional argument%s (%" CYTHON_FORMAT_SSIZE_T "d given)",
+                 func_name, more_or_less, num_expected,
+                 (num_expected == 1) ? "" : "s", num_found);
+}
+
+static int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, int none_allowed,
+    const char *name, int exact)
+{
+    if (!type) {
+        PyErr_Format(PyExc_SystemError, "Missing type object");
+        return 0;
+    }
+    if (none_allowed && obj == Py_None) return 1;
+    else if (exact) {
+        if (Py_TYPE(obj) == type) return 1;
+    }
+    else {
+        if (PyObject_TypeCheck(obj, type)) return 1;
+    }
+    PyErr_Format(PyExc_TypeError,
+        "Argument '%s' has incorrect type (expected %s, got %s)",
+        name, type->tp_name, Py_TYPE(obj)->tp_name);
+    return 0;
+}
+
+static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb) {
+#if CYTHON_COMPILING_IN_CPYTHON
+    PyObject *tmp_type, *tmp_value, *tmp_tb;
+    PyThreadState *tstate = PyThreadState_GET();
+    tmp_type = tstate->curexc_type;
+    tmp_value = tstate->curexc_value;
+    tmp_tb = tstate->curexc_traceback;
+    tstate->curexc_type = type;
+    tstate->curexc_value = value;
+    tstate->curexc_traceback = tb;
+    Py_XDECREF(tmp_type);
+    Py_XDECREF(tmp_value);
+    Py_XDECREF(tmp_tb);
+#else
+    PyErr_Restore(type, value, tb);
+#endif
+}
+static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb) {
+#if CYTHON_COMPILING_IN_CPYTHON
+    PyThreadState *tstate = PyThreadState_GET();
+    *type = tstate->curexc_type;
+    *value = tstate->curexc_value;
+    *tb = tstate->curexc_traceback;
+    tstate->curexc_type = 0;
+    tstate->curexc_value = 0;
+    tstate->curexc_traceback = 0;
+#else
+    PyErr_Fetch(type, value, tb);
+#endif
+}
+
+#if PY_MAJOR_VERSION < 3
+static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb,
+                        CYTHON_UNUSED PyObject *cause) {
+    Py_XINCREF(type);
+    if (!value || value == Py_None)
+        value = NULL;
+    else
+        Py_INCREF(value);
+    if (!tb || tb == Py_None)
+        tb = NULL;
+    else {
+        Py_INCREF(tb);
+        if (!PyTraceBack_Check(tb)) {
+            PyErr_SetString(PyExc_TypeError,
+                "raise: arg 3 must be a traceback or None");
+            goto raise_error;
+        }
+    }
+    #if PY_VERSION_HEX < 0x02050000
+    if (PyClass_Check(type)) {
+    #else
+    if (PyType_Check(type)) {
+    #endif
+#if CYTHON_COMPILING_IN_PYPY
+        if (!value) {
+            Py_INCREF(Py_None);
+            value = Py_None;
+        }
+#endif
+        PyErr_NormalizeException(&type, &value, &tb);
+    } else {
+        if (value) {
+            PyErr_SetString(PyExc_TypeError,
+                "instance exception may not have a separate value");
+            goto raise_error;
+        }
+        value = type;
+        #if PY_VERSION_HEX < 0x02050000
+            if (PyInstance_Check(type)) {
+                type = (PyObject*) ((PyInstanceObject*)type)->in_class;
+                Py_INCREF(type);
+            }
+            else {
+                type = 0;
+                PyErr_SetString(PyExc_TypeError,
+                    "raise: exception must be an old-style class or instance");
+                goto raise_error;
+            }
+        #else
+            type = (PyObject*) Py_TYPE(type);
+            Py_INCREF(type);
+            if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) {
+                PyErr_SetString(PyExc_TypeError,
+                    "raise: exception class must be a subclass of BaseException");
+                goto raise_error;
+            }
+        #endif
+    }
+    __Pyx_ErrRestore(type, value, tb);
+    return;
+raise_error:
+    Py_XDECREF(value);
+    Py_XDECREF(type);
+    Py_XDECREF(tb);
+    return;
+}
+#else /* Python 3+ */
+static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) {
+    PyObject* owned_instance = NULL;
+    if (tb == Py_None) {
+        tb = 0;
+    } else if (tb && !PyTraceBack_Check(tb)) {
+        PyErr_SetString(PyExc_TypeError,
+            "raise: arg 3 must be a traceback or None");
+        goto bad;
+    }
+    if (value == Py_None)
+        value = 0;
+    if (PyExceptionInstance_Check(type)) {
+        if (value) {
+            PyErr_SetString(PyExc_TypeError,
+                "instance exception may not have a separate value");
+            goto bad;
+        }
+        value = type;
+        type = (PyObject*) Py_TYPE(value);
+    } else if (PyExceptionClass_Check(type)) {
+        PyObject *args;
+        if (!value)
+            args = PyTuple_New(0);
+        else if (PyTuple_Check(value)) {
+            Py_INCREF(value);
+            args = value;
+        }
+        else
+            args = PyTuple_Pack(1, value);
+        if (!args)
+            goto bad;
+        owned_instance = PyEval_CallObject(type, args);
+        Py_DECREF(args);
+        if (!owned_instance)
+            goto bad;
+        value = owned_instance;
+        if (!PyExceptionInstance_Check(value)) {
+            PyErr_Format(PyExc_TypeError,
+                         "calling %R should have returned an instance of "
+                         "BaseException, not %R",
+                         type, Py_TYPE(value));
+            goto bad;
+        }
+    } else {
+        PyErr_SetString(PyExc_TypeError,
+            "raise: exception class must be a subclass of BaseException");
+        goto bad;
+    }
+    if (cause && cause != Py_None) {
+        PyObject *fixed_cause;
+        if (PyExceptionClass_Check(cause)) {
+            fixed_cause = PyObject_CallObject(cause, NULL);
+            if (fixed_cause == NULL)
+                goto bad;
+        }
+        else if (PyExceptionInstance_Check(cause)) {
+            fixed_cause = cause;
+            Py_INCREF(fixed_cause);
+        }
+        else {
+            PyErr_SetString(PyExc_TypeError,
+                            "exception causes must derive from "
+                            "BaseException");
+            goto bad;
+        }
+        PyException_SetCause(value, fixed_cause);
+    }
+    PyErr_SetObject(type, value);
+    if (tb) {
+        PyThreadState *tstate = PyThreadState_GET();
+        PyObject* tmp_tb = tstate->curexc_traceback;
+        if (tb != tmp_tb) {
+            Py_INCREF(tb);
+            tstate->curexc_traceback = tb;
+            Py_XDECREF(tmp_tb);
+        }
+    }
+bad:
+    Py_XDECREF(owned_instance);
+    return;
+}
+#endif
+
+static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) {
+    PyObject *local_type, *local_value, *local_tb;
+#if CYTHON_COMPILING_IN_CPYTHON
+    PyObject *tmp_type, *tmp_value, *tmp_tb;
+    PyThreadState *tstate = PyThreadState_GET();
+    local_type = tstate->curexc_type;
+    local_value = tstate->curexc_value;
+    local_tb = tstate->curexc_traceback;
+    tstate->curexc_type = 0;
+    tstate->curexc_value = 0;
+    tstate->curexc_traceback = 0;
+#else
+    PyErr_Fetch(&local_type, &local_value, &local_tb);
+#endif
+    PyErr_NormalizeException(&local_type, &local_value, &local_tb);
+#if CYTHON_COMPILING_IN_CPYTHON
+    if (unlikely(tstate->curexc_type))
+#else
+    if (unlikely(PyErr_Occurred()))
+#endif
+        goto bad;
+    #if PY_MAJOR_VERSION >= 3
+    if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0))
+        goto bad;
+    #endif
+    Py_INCREF(local_type);
+    Py_INCREF(local_value);
+    Py_INCREF(local_tb);
+    *type = local_type;
+    *value = local_value;
+    *tb = local_tb;
+#if CYTHON_COMPILING_IN_CPYTHON
+    tmp_type = tstate->exc_type;
+    tmp_value = tstate->exc_value;
+    tmp_tb = tstate->exc_traceback;
+    tstate->exc_type = local_type;
+    tstate->exc_value = local_value;
+    tstate->exc_traceback = local_tb;
+    /* Make sure tstate is in a consistent state when we XDECREF
+       these objects (DECREF may run arbitrary code). */
+    Py_XDECREF(tmp_type);
+    Py_XDECREF(tmp_value);
+    Py_XDECREF(tmp_tb);
+#else
+    PyErr_SetExcInfo(local_type, local_value, local_tb);
+#endif
+    return 0;
+bad:
+    *type = 0;
+    *value = 0;
+    *tb = 0;
+    Py_XDECREF(local_type);
+    Py_XDECREF(local_value);
+    Py_XDECREF(local_tb);
+    return -1;
+}
+
+static void __Pyx_call_next_tp_dealloc(PyObject* obj, destructor current_tp_dealloc) {
+    PyTypeObject* type = Py_TYPE(obj);
+    while (type && type->tp_dealloc != current_tp_dealloc)
+        type = type->tp_base;
+    while (type && type->tp_dealloc == current_tp_dealloc)
+        type = type->tp_base;
+    if (type)
+        type->tp_dealloc(obj);
+}
+
+static int __Pyx_call_next_tp_traverse(PyObject* obj, visitproc v, void *a, traverseproc current_tp_traverse) {
+    PyTypeObject* type = Py_TYPE(obj);
+    while (type && type->tp_traverse != current_tp_traverse)
+        type = type->tp_base;
+    while (type && type->tp_traverse == current_tp_traverse)
+        type = type->tp_base;
+    if (type && type->tp_traverse)
+        return type->tp_traverse(obj, v, a);
+    return 0;
+}
+
+static void __Pyx_call_next_tp_clear(PyObject* obj, inquiry current_tp_clear) {
+    PyTypeObject* type = Py_TYPE(obj);
+    while (type && type->tp_clear != current_tp_clear)
+        type = type->tp_base;
+    while (type && type->tp_clear == current_tp_clear)
+        type = type->tp_base;
+    if (type && type->tp_clear)
+        type->tp_clear(obj);
+}
+
+static CYTHON_INLINE void __Pyx_ExceptionSave(PyObject **type, PyObject **value, PyObject **tb) {
+#if CYTHON_COMPILING_IN_CPYTHON
+    PyThreadState *tstate = PyThreadState_GET();
+    *type = tstate->exc_type;
+    *value = tstate->exc_value;
+    *tb = tstate->exc_traceback;
+    Py_XINCREF(*type);
+    Py_XINCREF(*value);
+    Py_XINCREF(*tb);
+#else
+    PyErr_GetExcInfo(type, value, tb);
+#endif
+}
+static void __Pyx_ExceptionReset(PyObject *type, PyObject *value, PyObject *tb) {
+#if CYTHON_COMPILING_IN_CPYTHON
+    PyObject *tmp_type, *tmp_value, *tmp_tb;
+    PyThreadState *tstate = PyThreadState_GET();
+    tmp_type = tstate->exc_type;
+    tmp_value = tstate->exc_value;
+    tmp_tb = tstate->exc_traceback;
+    tstate->exc_type = type;
+    tstate->exc_value = value;
+    tstate->exc_traceback = tb;
+    Py_XDECREF(tmp_type);
+    Py_XDECREF(tmp_value);
+    Py_XDECREF(tmp_tb);
+#else
+    PyErr_SetExcInfo(type, value, tb);
+#endif
+}
+
+static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) {
+    PyObject *empty_list = 0;
+    PyObject *module = 0;
+    PyObject *global_dict = 0;
+    PyObject *empty_dict = 0;
+    PyObject *list;
+    #if PY_VERSION_HEX < 0x03030000
+    PyObject *py_import = 0;
+    py_import = __Pyx_GetAttrString(__pyx_b, "__import__");
+    if (!py_import)
+        goto bad;
+    #endif
+    if (from_list)
+        list = from_list;
+    else {
+        empty_list = PyList_New(0);
+        if (!empty_list)
+            goto bad;
+        list = empty_list;
+    }
+    global_dict = PyModule_GetDict(__pyx_m);
+    if (!global_dict)
+        goto bad;
+    empty_dict = PyDict_New();
+    if (!empty_dict)
+        goto bad;
+    #if PY_VERSION_HEX >= 0x02050000
+    {
+        #if PY_MAJOR_VERSION >= 3
+        if (level == -1) {
+            if (strchr(__Pyx_MODULE_NAME, '.')) {
+                #if PY_VERSION_HEX < 0x03030000
+                PyObject *py_level = PyInt_FromLong(1);
+                if (!py_level)
+                    goto bad;
+                module = PyObject_CallFunctionObjArgs(py_import,
+                    name, global_dict, empty_dict, list, py_level, NULL);
+                Py_DECREF(py_level);
+                #else
+                module = PyImport_ImportModuleLevelObject(
+                    name, global_dict, empty_dict, list, 1);
+                #endif
+                if (!module) {
+                    if (!PyErr_ExceptionMatches(PyExc_ImportError))
+                        goto bad;
+                    PyErr_Clear();
+                }
+            }
+            level = 0; /* try absolute import on failure */
+        }
+        #endif
+        if (!module) {
+            #if PY_VERSION_HEX < 0x03030000
+            PyObject *py_level = PyInt_FromLong(level);
+            if (!py_level)
+                goto bad;
+            module = PyObject_CallFunctionObjArgs(py_import,
+                name, global_dict, empty_dict, list, py_level, NULL);
+            Py_DECREF(py_level);
+            #else
+            module = PyImport_ImportModuleLevelObject(
+                name, global_dict, empty_dict, list, level);
+            #endif
+        }
+    }
+    #else
+    if (level>0) {
+        PyErr_SetString(PyExc_RuntimeError, "Relative import is not supported for Python <=2.4.");
+        goto bad;
+    }
+    module = PyObject_CallFunctionObjArgs(py_import,
+        name, global_dict, empty_dict, list, NULL);
+    #endif
+bad:
+    #if PY_VERSION_HEX < 0x03030000
+    Py_XDECREF(py_import);
+    #endif
+    Py_XDECREF(empty_list);
+    Py_XDECREF(empty_dict);
+    return module;
+}
+
+static CYTHON_INLINE void __Pyx_RaiseImportError(PyObject *name) {
+#if PY_MAJOR_VERSION < 3
+    PyErr_Format(PyExc_ImportError, "cannot import name %.230s",
+                 PyString_AsString(name));
+#else
+    PyErr_Format(PyExc_ImportError, "cannot import name %S", name);
+#endif
+}
+
+static CYTHON_INLINE hid_t __Pyx_PyInt_from_py_hid_t(PyObject* x) {
+    const hid_t neg_one = (hid_t)-1, const_zero = (hid_t)0;
+    const int is_unsigned = const_zero < neg_one;
+    if (sizeof(hid_t) == sizeof(char)) {
+        if (is_unsigned)
+            return (hid_t)__Pyx_PyInt_AsUnsignedChar(x);
+        else
+            return (hid_t)__Pyx_PyInt_AsSignedChar(x);
+    } else if (sizeof(hid_t) == sizeof(short)) {
+        if (is_unsigned)
+            return (hid_t)__Pyx_PyInt_AsUnsignedShort(x);
+        else
+            return (hid_t)__Pyx_PyInt_AsSignedShort(x);
+    } else if (sizeof(hid_t) == sizeof(int)) {
+        if (is_unsigned)
+            return (hid_t)__Pyx_PyInt_AsUnsignedInt(x);
+        else
+            return (hid_t)__Pyx_PyInt_AsSignedInt(x);
+    } else if (sizeof(hid_t) == sizeof(long)) {
+        if (is_unsigned)
+            return (hid_t)__Pyx_PyInt_AsUnsignedLong(x);
+        else
+            return (hid_t)__Pyx_PyInt_AsSignedLong(x);
+    } else if (sizeof(hid_t) == sizeof(PY_LONG_LONG)) {
+        if (is_unsigned)
+            return (hid_t)__Pyx_PyInt_AsUnsignedLongLong(x);
+        else
+            return (hid_t)__Pyx_PyInt_AsSignedLongLong(x);
+    }  else {
+        #if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
+        PyErr_SetString(PyExc_RuntimeError,
+                        "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
+        #else
+        hid_t val;
+        PyObject *v = __Pyx_PyNumber_Int(x);
+        #if PY_VERSION_HEX < 0x03000000
+        if (likely(v) && !PyLong_Check(v)) {
+            PyObject *tmp = v;
+            v = PyNumber_Long(tmp);
+            Py_DECREF(tmp);
+        }
+        #endif
+        if (likely(v)) {
+            int one = 1; int is_little = (int)*(unsigned char *)&one;
+            unsigned char *bytes = (unsigned char *)&val;
+            int ret = _PyLong_AsByteArray((PyLongObject *)v,
+                                          bytes, sizeof(val),
+                                          is_little, !is_unsigned);
+            Py_DECREF(v);
+            if (likely(!ret))
+                return val;
+        }
+        #endif
+        return (hid_t)-1;
+    }
+}
+
+static CYTHON_INLINE hsize_t __Pyx_PyInt_from_py_hsize_t(PyObject* x) {
+    const hsize_t neg_one = (hsize_t)-1, const_zero = (hsize_t)0;
+    const int is_unsigned = const_zero < neg_one;
+    if (sizeof(hsize_t) == sizeof(char)) {
+        if (is_unsigned)
+            return (hsize_t)__Pyx_PyInt_AsUnsignedChar(x);
+        else
+            return (hsize_t)__Pyx_PyInt_AsSignedChar(x);
+    } else if (sizeof(hsize_t) == sizeof(short)) {
+        if (is_unsigned)
+            return (hsize_t)__Pyx_PyInt_AsUnsignedShort(x);
+        else
+            return (hsize_t)__Pyx_PyInt_AsSignedShort(x);
+    } else if (sizeof(hsize_t) == sizeof(int)) {
+        if (is_unsigned)
+            return (hsize_t)__Pyx_PyInt_AsUnsignedInt(x);
+        else
+            return (hsize_t)__Pyx_PyInt_AsSignedInt(x);
+    } else if (sizeof(hsize_t) == sizeof(long)) {
+        if (is_unsigned)
+            return (hsize_t)__Pyx_PyInt_AsUnsignedLong(x);
+        else
+            return (hsize_t)__Pyx_PyInt_AsSignedLong(x);
+    } else if (sizeof(hsize_t) == sizeof(PY_LONG_LONG)) {
+        if (is_unsigned)
+            return (hsize_t)__Pyx_PyInt_AsUnsignedLongLong(x);
+        else
+            return (hsize_t)__Pyx_PyInt_AsSignedLongLong(x);
+    }  else {
+        #if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
+        PyErr_SetString(PyExc_RuntimeError,
+                        "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
+        #else
+        hsize_t val;
+        PyObject *v = __Pyx_PyNumber_Int(x);
+        #if PY_VERSION_HEX < 0x03000000
+        if (likely(v) && !PyLong_Check(v)) {
+            PyObject *tmp = v;
+            v = PyNumber_Long(tmp);
+            Py_DECREF(tmp);
+        }
+        #endif
+        if (likely(v)) {
+            int one = 1; int is_little = (int)*(unsigned char *)&one;
+            unsigned char *bytes = (unsigned char *)&val;
+            int ret = _PyLong_AsByteArray((PyLongObject *)v,
+                                          bytes, sizeof(val),
+                                          is_little, !is_unsigned);
+            Py_DECREF(v);
+            if (likely(!ret))
+                return val;
+        }
+        #endif
+        return (hsize_t)-1;
+    }
+}
+
+static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_time_t(time_t val) {
+    const time_t neg_one = (time_t)-1, const_zero = (time_t)0;
+    const int is_unsigned = const_zero < neg_one;
+    if ((sizeof(time_t) == sizeof(char))  ||
+        (sizeof(time_t) == sizeof(short))) {
+        return PyInt_FromLong((long)val);
+    } else if ((sizeof(time_t) == sizeof(int)) ||
+               (sizeof(time_t) == sizeof(long))) {
+        if (is_unsigned)
+            return PyLong_FromUnsignedLong((unsigned long)val);
+        else
+            return PyInt_FromLong((long)val);
+    } else if (sizeof(time_t) == sizeof(PY_LONG_LONG)) {
+        if (is_unsigned)
+            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG)val);
+        else
+            return PyLong_FromLongLong((PY_LONG_LONG)val);
+    } else {
+        int one = 1; int little = (int)*(unsigned char *)&one;
+        unsigned char *bytes = (unsigned char *)&val;
+        return _PyLong_FromByteArray(bytes, sizeof(time_t),
+                                     little, !is_unsigned);
+    }
+}
+
+static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_hid_t(hid_t val) {
+    const hid_t neg_one = (hid_t)-1, const_zero = (hid_t)0;
+    const int is_unsigned = const_zero < neg_one;
+    if ((sizeof(hid_t) == sizeof(char))  ||
+        (sizeof(hid_t) == sizeof(short))) {
+        return PyInt_FromLong((long)val);
+    } else if ((sizeof(hid_t) == sizeof(int)) ||
+               (sizeof(hid_t) == sizeof(long))) {
+        if (is_unsigned)
+            return PyLong_FromUnsignedLong((unsigned long)val);
+        else
+            return PyInt_FromLong((long)val);
+    } else if (sizeof(hid_t) == sizeof(PY_LONG_LONG)) {
+        if (is_unsigned)
+            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG)val);
+        else
+            return PyLong_FromLongLong((PY_LONG_LONG)val);
+    } else {
+        int one = 1; int little = (int)*(unsigned char *)&one;
+        unsigned char *bytes = (unsigned char *)&val;
+        return _PyLong_FromByteArray(bytes, sizeof(hid_t),
+                                     little, !is_unsigned);
+    }
+}
+
+static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_hsize_t(hsize_t val) {
+    const hsize_t neg_one = (hsize_t)-1, const_zero = (hsize_t)0;
+    const int is_unsigned = const_zero < neg_one;
+    if ((sizeof(hsize_t) == sizeof(char))  ||
+        (sizeof(hsize_t) == sizeof(short))) {
+        return PyInt_FromLong((long)val);
+    } else if ((sizeof(hsize_t) == sizeof(int)) ||
+               (sizeof(hsize_t) == sizeof(long))) {
+        if (is_unsigned)
+            return PyLong_FromUnsignedLong((unsigned long)val);
+        else
+            return PyInt_FromLong((long)val);
+    } else if (sizeof(hsize_t) == sizeof(PY_LONG_LONG)) {
+        if (is_unsigned)
+            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG)val);
+        else
+            return PyLong_FromLongLong((PY_LONG_LONG)val);
+    } else {
+        int one = 1; int little = (int)*(unsigned char *)&one;
+        unsigned char *bytes = (unsigned char *)&val;
+        return _PyLong_FromByteArray(bytes, sizeof(hsize_t),
+                                     little, !is_unsigned);
+    }
+}
+
+static CYTHON_INLINE unsigned char __Pyx_PyInt_AsUnsignedChar(PyObject* x) {
+    const unsigned char neg_one = (unsigned char)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(unsigned char) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(unsigned char)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to unsigned char" :
+                    "value too large to convert to unsigned char");
+            }
+            return (unsigned char)-1;
+        }
+        return (unsigned char)val;
+    }
+    return (unsigned char)__Pyx_PyInt_AsUnsignedLong(x);
+}
+
+static CYTHON_INLINE unsigned short __Pyx_PyInt_AsUnsignedShort(PyObject* x) {
+    const unsigned short neg_one = (unsigned short)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(unsigned short) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(unsigned short)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to unsigned short" :
+                    "value too large to convert to unsigned short");
+            }
+            return (unsigned short)-1;
+        }
+        return (unsigned short)val;
+    }
+    return (unsigned short)__Pyx_PyInt_AsUnsignedLong(x);
+}
+
+static CYTHON_INLINE unsigned int __Pyx_PyInt_AsUnsignedInt(PyObject* x) {
+    const unsigned int neg_one = (unsigned int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(unsigned int) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(unsigned int)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to unsigned int" :
+                    "value too large to convert to unsigned int");
+            }
+            return (unsigned int)-1;
+        }
+        return (unsigned int)val;
+    }
+    return (unsigned int)__Pyx_PyInt_AsUnsignedLong(x);
+}
+
+static CYTHON_INLINE char __Pyx_PyInt_AsChar(PyObject* x) {
+    const char neg_one = (char)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(char) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(char)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to char" :
+                    "value too large to convert to char");
+            }
+            return (char)-1;
+        }
+        return (char)val;
+    }
+    return (char)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE short __Pyx_PyInt_AsShort(PyObject* x) {
+    const short neg_one = (short)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(short) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(short)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to short" :
+                    "value too large to convert to short");
+            }
+            return (short)-1;
+        }
+        return (short)val;
+    }
+    return (short)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE int __Pyx_PyInt_AsInt(PyObject* x) {
+    const int neg_one = (int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(int) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(int)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to int" :
+                    "value too large to convert to int");
+            }
+            return (int)-1;
+        }
+        return (int)val;
+    }
+    return (int)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE signed char __Pyx_PyInt_AsSignedChar(PyObject* x) {
+    const signed char neg_one = (signed char)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(signed char) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(signed char)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to signed char" :
+                    "value too large to convert to signed char");
+            }
+            return (signed char)-1;
+        }
+        return (signed char)val;
+    }
+    return (signed char)__Pyx_PyInt_AsSignedLong(x);
+}
+
+static CYTHON_INLINE signed short __Pyx_PyInt_AsSignedShort(PyObject* x) {
+    const signed short neg_one = (signed short)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(signed short) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(signed short)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to signed short" :
+                    "value too large to convert to signed short");
+            }
+            return (signed short)-1;
+        }
+        return (signed short)val;
+    }
+    return (signed short)__Pyx_PyInt_AsSignedLong(x);
+}
+
+static CYTHON_INLINE signed int __Pyx_PyInt_AsSignedInt(PyObject* x) {
+    const signed int neg_one = (signed int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(signed int) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(signed int)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to signed int" :
+                    "value too large to convert to signed int");
+            }
+            return (signed int)-1;
+        }
+        return (signed int)val;
+    }
+    return (signed int)__Pyx_PyInt_AsSignedLong(x);
+}
+
+static CYTHON_INLINE int __Pyx_PyInt_AsLongDouble(PyObject* x) {
+    const int neg_one = (int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(int) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(int)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to int" :
+                    "value too large to convert to int");
+            }
+            return (int)-1;
+        }
+        return (int)val;
+    }
+    return (int)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE unsigned long __Pyx_PyInt_AsUnsignedLong(PyObject* x) {
+    const unsigned long neg_one = (unsigned long)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to unsigned long");
+            return (unsigned long)-1;
+        }
+        return (unsigned long)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to unsigned long");
+                return (unsigned long)-1;
+            }
+            return (unsigned long)PyLong_AsUnsignedLong(x);
+        } else {
+            return (unsigned long)PyLong_AsLong(x);
+        }
+    } else {
+        unsigned long val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (unsigned long)-1;
+        val = __Pyx_PyInt_AsUnsignedLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE unsigned PY_LONG_LONG __Pyx_PyInt_AsUnsignedLongLong(PyObject* x) {
+    const unsigned PY_LONG_LONG neg_one = (unsigned PY_LONG_LONG)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to unsigned PY_LONG_LONG");
+            return (unsigned PY_LONG_LONG)-1;
+        }
+        return (unsigned PY_LONG_LONG)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to unsigned PY_LONG_LONG");
+                return (unsigned PY_LONG_LONG)-1;
+            }
+            return (unsigned PY_LONG_LONG)PyLong_AsUnsignedLongLong(x);
+        } else {
+            return (unsigned PY_LONG_LONG)PyLong_AsLongLong(x);
+        }
+    } else {
+        unsigned PY_LONG_LONG val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (unsigned PY_LONG_LONG)-1;
+        val = __Pyx_PyInt_AsUnsignedLongLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE long __Pyx_PyInt_AsLong(PyObject* x) {
+    const long neg_one = (long)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to long");
+            return (long)-1;
+        }
+        return (long)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to long");
+                return (long)-1;
+            }
+            return (long)PyLong_AsUnsignedLong(x);
+        } else {
+            return (long)PyLong_AsLong(x);
+        }
+    } else {
+        long val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (long)-1;
+        val = __Pyx_PyInt_AsLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE PY_LONG_LONG __Pyx_PyInt_AsLongLong(PyObject* x) {
+    const PY_LONG_LONG neg_one = (PY_LONG_LONG)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to PY_LONG_LONG");
+            return (PY_LONG_LONG)-1;
+        }
+        return (PY_LONG_LONG)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to PY_LONG_LONG");
+                return (PY_LONG_LONG)-1;
+            }
+            return (PY_LONG_LONG)PyLong_AsUnsignedLongLong(x);
+        } else {
+            return (PY_LONG_LONG)PyLong_AsLongLong(x);
+        }
+    } else {
+        PY_LONG_LONG val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (PY_LONG_LONG)-1;
+        val = __Pyx_PyInt_AsLongLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE signed long __Pyx_PyInt_AsSignedLong(PyObject* x) {
+    const signed long neg_one = (signed long)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to signed long");
+            return (signed long)-1;
+        }
+        return (signed long)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to signed long");
+                return (signed long)-1;
+            }
+            return (signed long)PyLong_AsUnsignedLong(x);
+        } else {
+            return (signed long)PyLong_AsLong(x);
+        }
+    } else {
+        signed long val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (signed long)-1;
+        val = __Pyx_PyInt_AsSignedLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE signed PY_LONG_LONG __Pyx_PyInt_AsSignedLongLong(PyObject* x) {
+    const signed PY_LONG_LONG neg_one = (signed PY_LONG_LONG)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to signed PY_LONG_LONG");
+            return (signed PY_LONG_LONG)-1;
+        }
+        return (signed PY_LONG_LONG)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to signed PY_LONG_LONG");
+                return (signed PY_LONG_LONG)-1;
+            }
+            return (signed PY_LONG_LONG)PyLong_AsUnsignedLongLong(x);
+        } else {
+            return (signed PY_LONG_LONG)PyLong_AsLongLong(x);
+        }
+    } else {
+        signed PY_LONG_LONG val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (signed PY_LONG_LONG)-1;
+        val = __Pyx_PyInt_AsSignedLongLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static int __Pyx_check_binary_version(void) {
+    char ctversion[4], rtversion[4];
+    PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION);
+    PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion());
+    if (ctversion[0] != rtversion[0] || ctversion[2] != rtversion[2]) {
+        char message[200];
+        PyOS_snprintf(message, sizeof(message),
+                      "compiletime version %s of module '%.100s' "
+                      "does not match runtime version %s",
+                      ctversion, __Pyx_MODULE_NAME, rtversion);
+        #if PY_VERSION_HEX < 0x02050000
+        return PyErr_Warn(NULL, message);
+        #else
+        return PyErr_WarnEx(NULL, message, 1);
+        #endif
+    }
+    return 0;
+}
+
+#ifndef __PYX_HAVE_RT_ImportModule
+#define __PYX_HAVE_RT_ImportModule
+static PyObject *__Pyx_ImportModule(const char *name) {
+    PyObject *py_name = 0;
+    PyObject *py_module = 0;
+    py_name = __Pyx_PyIdentifier_FromString(name);
+    if (!py_name)
+        goto bad;
+    py_module = PyImport_Import(py_name);
+    Py_DECREF(py_name);
+    return py_module;
+bad:
+    Py_XDECREF(py_name);
+    return 0;
+}
+#endif
+
+#ifndef __PYX_HAVE_RT_ImportType
+#define __PYX_HAVE_RT_ImportType
+static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name,
+    size_t size, int strict)
+{
+    PyObject *py_module = 0;
+    PyObject *result = 0;
+    PyObject *py_name = 0;
+    char warning[200];
+    Py_ssize_t basicsize;
+#ifdef Py_LIMITED_API
+    PyObject *py_basicsize;
+#endif
+    py_module = __Pyx_ImportModule(module_name);
+    if (!py_module)
+        goto bad;
+    py_name = __Pyx_PyIdentifier_FromString(class_name);
+    if (!py_name)
+        goto bad;
+    result = PyObject_GetAttr(py_module, py_name);
+    Py_DECREF(py_name);
+    py_name = 0;
+    Py_DECREF(py_module);
+    py_module = 0;
+    if (!result)
+        goto bad;
+    if (!PyType_Check(result)) {
+        PyErr_Format(PyExc_TypeError,
+            "%s.%s is not a type object",
+            module_name, class_name);
+        goto bad;
+    }
+#ifndef Py_LIMITED_API
+    basicsize = ((PyTypeObject *)result)->tp_basicsize;
+#else
+    py_basicsize = PyObject_GetAttrString(result, "__basicsize__");
+    if (!py_basicsize)
+        goto bad;
+    basicsize = PyLong_AsSsize_t(py_basicsize);
+    Py_DECREF(py_basicsize);
+    py_basicsize = 0;
+    if (basicsize == (Py_ssize_t)-1 && PyErr_Occurred())
+        goto bad;
+#endif
+    if (!strict && (size_t)basicsize > size) {
+        PyOS_snprintf(warning, sizeof(warning),
+            "%s.%s size changed, may indicate binary incompatibility",
+            module_name, class_name);
+        #if PY_VERSION_HEX < 0x02050000
+        if (PyErr_Warn(NULL, warning) < 0) goto bad;
+        #else
+        if (PyErr_WarnEx(NULL, warning, 0) < 0) goto bad;
+        #endif
+    }
+    else if ((size_t)basicsize != size) {
+        PyErr_Format(PyExc_ValueError,
+            "%s.%s has the wrong size, try recompiling",
+            module_name, class_name);
+        goto bad;
+    }
+    return (PyTypeObject *)result;
+bad:
+    Py_XDECREF(py_module);
+    Py_XDECREF(result);
+    return NULL;
+}
+#endif
+
+#ifndef __PYX_HAVE_RT_ImportFunction
+#define __PYX_HAVE_RT_ImportFunction
+static int __Pyx_ImportFunction(PyObject *module, const char *funcname, void (**f)(void), const char *sig) {
+    PyObject *d = 0;
+    PyObject *cobj = 0;
+    union {
+        void (*fp)(void);
+        void *p;
+    } tmp;
+    d = PyObject_GetAttrString(module, (char *)"__pyx_capi__");
+    if (!d)
+        goto bad;
+    cobj = PyDict_GetItemString(d, funcname);
+    if (!cobj) {
+        PyErr_Format(PyExc_ImportError,
+            "%s does not export expected C function %s",
+                PyModule_GetName(module), funcname);
+        goto bad;
+    }
+#if PY_VERSION_HEX >= 0x02070000 && !(PY_MAJOR_VERSION==3 && PY_MINOR_VERSION==0)
+    if (!PyCapsule_IsValid(cobj, sig)) {
+        PyErr_Format(PyExc_TypeError,
+            "C function %s.%s has wrong signature (expected %s, got %s)",
+             PyModule_GetName(module), funcname, sig, PyCapsule_GetName(cobj));
+        goto bad;
+    }
+    tmp.p = PyCapsule_GetPointer(cobj, sig);
+#else
+    {const char *desc, *s1, *s2;
+    desc = (const char *)PyCObject_GetDesc(cobj);
+    if (!desc)
+        goto bad;
+    s1 = desc; s2 = sig;
+    while (*s1 != '\0' && *s1 == *s2) { s1++; s2++; }
+    if (*s1 != *s2) {
+        PyErr_Format(PyExc_TypeError,
+            "C function %s.%s has wrong signature (expected %s, got %s)",
+             PyModule_GetName(module), funcname, sig, desc);
+        goto bad;
+    }
+    tmp.p = PyCObject_AsVoidPtr(cobj);}
+#endif
+    *f = tmp.fp;
+    if (!(*f))
+        goto bad;
+    Py_DECREF(d);
+    return 0;
+bad:
+    Py_XDECREF(d);
+    return -1;
+}
+#endif
+
+static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) {
+    int start = 0, mid = 0, end = count - 1;
+    if (end >= 0 && code_line > entries[end].code_line) {
+        return count;
+    }
+    while (start < end) {
+        mid = (start + end) / 2;
+        if (code_line < entries[mid].code_line) {
+            end = mid;
+        } else if (code_line > entries[mid].code_line) {
+             start = mid + 1;
+        } else {
+            return mid;
+        }
+    }
+    if (code_line <= entries[mid].code_line) {
+        return mid;
+    } else {
+        return mid + 1;
+    }
+}
+static PyCodeObject *__pyx_find_code_object(int code_line) {
+    PyCodeObject* code_object;
+    int pos;
+    if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) {
+        return NULL;
+    }
+    pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
+    if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) {
+        return NULL;
+    }
+    code_object = __pyx_code_cache.entries[pos].code_object;
+    Py_INCREF(code_object);
+    return code_object;
+}
+static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) {
+    int pos, i;
+    __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries;
+    if (unlikely(!code_line)) {
+        return;
+    }
+    if (unlikely(!entries)) {
+        entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry));
+        if (likely(entries)) {
+            __pyx_code_cache.entries = entries;
+            __pyx_code_cache.max_count = 64;
+            __pyx_code_cache.count = 1;
+            entries[0].code_line = code_line;
+            entries[0].code_object = code_object;
+            Py_INCREF(code_object);
+        }
+        return;
+    }
+    pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
+    if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) {
+        PyCodeObject* tmp = entries[pos].code_object;
+        entries[pos].code_object = code_object;
+        Py_DECREF(tmp);
+        return;
+    }
+    if (__pyx_code_cache.count == __pyx_code_cache.max_count) {
+        int new_max = __pyx_code_cache.max_count + 64;
+        entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc(
+            __pyx_code_cache.entries, new_max*sizeof(__Pyx_CodeObjectCacheEntry));
+        if (unlikely(!entries)) {
+            return;
+        }
+        __pyx_code_cache.entries = entries;
+        __pyx_code_cache.max_count = new_max;
+    }
+    for (i=__pyx_code_cache.count; i>pos; i--) {
+        entries[i] = entries[i-1];
+    }
+    entries[pos].code_line = code_line;
+    entries[pos].code_object = code_object;
+    __pyx_code_cache.count++;
+    Py_INCREF(code_object);
+}
+
+#include "compile.h"
+#include "frameobject.h"
+#include "traceback.h"
+static PyCodeObject* __Pyx_CreateCodeObjectForTraceback(
+            const char *funcname, int c_line,
+            int py_line, const char *filename) {
+    PyCodeObject *py_code = 0;
+    PyObject *py_srcfile = 0;
+    PyObject *py_funcname = 0;
+    #if PY_MAJOR_VERSION < 3
+    py_srcfile = PyString_FromString(filename);
+    #else
+    py_srcfile = PyUnicode_FromString(filename);
+    #endif
+    if (!py_srcfile) goto bad;
+    if (c_line) {
+        #if PY_MAJOR_VERSION < 3
+        py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
+        #else
+        py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
+        #endif
+    }
+    else {
+        #if PY_MAJOR_VERSION < 3
+        py_funcname = PyString_FromString(funcname);
+        #else
+        py_funcname = PyUnicode_FromString(funcname);
+        #endif
+    }
+    if (!py_funcname) goto bad;
+    py_code = __Pyx_PyCode_New(
+        0,            /*int argcount,*/
+        0,            /*int kwonlyargcount,*/
+        0,            /*int nlocals,*/
+        0,            /*int stacksize,*/
+        0,            /*int flags,*/
+        __pyx_empty_bytes, /*PyObject *code,*/
+        __pyx_empty_tuple, /*PyObject *consts,*/
+        __pyx_empty_tuple, /*PyObject *names,*/
+        __pyx_empty_tuple, /*PyObject *varnames,*/
+        __pyx_empty_tuple, /*PyObject *freevars,*/
+        __pyx_empty_tuple, /*PyObject *cellvars,*/
+        py_srcfile,   /*PyObject *filename,*/
+        py_funcname,  /*PyObject *name,*/
+        py_line,      /*int firstlineno,*/
+        __pyx_empty_bytes  /*PyObject *lnotab*/
+    );
+    Py_DECREF(py_srcfile);
+    Py_DECREF(py_funcname);
+    return py_code;
+bad:
+    Py_XDECREF(py_srcfile);
+    Py_XDECREF(py_funcname);
+    return NULL;
+}
+static void __Pyx_AddTraceback(const char *funcname, int c_line,
+                               int py_line, const char *filename) {
+    PyCodeObject *py_code = 0;
+    PyObject *py_globals = 0;
+    PyFrameObject *py_frame = 0;
+    py_code = __pyx_find_code_object(c_line ? c_line : py_line);
+    if (!py_code) {
+        py_code = __Pyx_CreateCodeObjectForTraceback(
+            funcname, c_line, py_line, filename);
+        if (!py_code) goto bad;
+        __pyx_insert_code_object(c_line ? c_line : py_line, py_code);
+    }
+    py_globals = PyModule_GetDict(__pyx_m);
+    if (!py_globals) goto bad;
+    py_frame = PyFrame_New(
+        PyThreadState_GET(), /*PyThreadState *tstate,*/
+        py_code,             /*PyCodeObject *code,*/
+        py_globals,          /*PyObject *globals,*/
+        0                    /*PyObject *locals*/
+    );
+    if (!py_frame) goto bad;
+    py_frame->f_lineno = py_line;
+    PyTraceBack_Here(py_frame);
+bad:
+    Py_XDECREF(py_code);
+    Py_XDECREF(py_frame);
+}
+
+static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
+    while (t->p) {
+        #if PY_MAJOR_VERSION < 3
+        if (t->is_unicode) {
+            *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL);
+        } else if (t->intern) {
+            *t->p = PyString_InternFromString(t->s);
+        } else {
+            *t->p = PyString_FromStringAndSize(t->s, t->n - 1);
+        }
+        #else  /* Python 3+ has unicode identifiers */
+        if (t->is_unicode | t->is_str) {
+            if (t->intern) {
+                *t->p = PyUnicode_InternFromString(t->s);
+            } else if (t->encoding) {
+                *t->p = PyUnicode_Decode(t->s, t->n - 1, t->encoding, NULL);
+            } else {
+                *t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1);
+            }
+        } else {
+            *t->p = PyBytes_FromStringAndSize(t->s, t->n - 1);
+        }
+        #endif
+        if (!*t->p)
+            return -1;
+        ++t;
+    }
+    return 0;
+}
+
+static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) {
+   int is_true = x == Py_True;
+   if (is_true | (x == Py_False) | (x == Py_None)) return is_true;
+   else return PyObject_IsTrue(x);
+}
+static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x) {
+  PyNumberMethods *m;
+  const char *name = NULL;
+  PyObject *res = NULL;
+#if PY_VERSION_HEX < 0x03000000
+  if (PyInt_Check(x) || PyLong_Check(x))
+#else
+  if (PyLong_Check(x))
+#endif
+    return Py_INCREF(x), x;
+  m = Py_TYPE(x)->tp_as_number;
+#if PY_VERSION_HEX < 0x03000000
+  if (m && m->nb_int) {
+    name = "int";
+    res = PyNumber_Int(x);
+  }
+  else if (m && m->nb_long) {
+    name = "long";
+    res = PyNumber_Long(x);
+  }
+#else
+  if (m && m->nb_int) {
+    name = "int";
+    res = PyNumber_Long(x);
+  }
+#endif
+  if (res) {
+#if PY_VERSION_HEX < 0x03000000
+    if (!PyInt_Check(res) && !PyLong_Check(res)) {
+#else
+    if (!PyLong_Check(res)) {
+#endif
+      PyErr_Format(PyExc_TypeError,
+                   "__%s__ returned non-%s (type %.200s)",
+                   name, name, Py_TYPE(res)->tp_name);
+      Py_DECREF(res);
+      return NULL;
+    }
+  }
+  else if (!PyErr_Occurred()) {
+    PyErr_SetString(PyExc_TypeError,
+                    "an integer is required");
+  }
+  return res;
+}
+static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
+  Py_ssize_t ival;
+  PyObject* x = PyNumber_Index(b);
+  if (!x) return -1;
+  ival = PyInt_AsSsize_t(x);
+  Py_DECREF(x);
+  return ival;
+}
+static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) {
+#if PY_VERSION_HEX < 0x02050000
+   if (ival <= LONG_MAX)
+       return PyInt_FromLong((long)ival);
+   else {
+       unsigned char *bytes = (unsigned char *) &ival;
+       int one = 1; int little = (int)*(unsigned char*)&one;
+       return _PyLong_FromByteArray(bytes, sizeof(size_t), little, 0);
+   }
+#else
+   return PyInt_FromSize_t(ival);
+#endif
+}
+static CYTHON_INLINE size_t __Pyx_PyInt_AsSize_t(PyObject* x) {
+   unsigned PY_LONG_LONG val = __Pyx_PyInt_AsUnsignedLongLong(x);
+   if (unlikely(val == (unsigned PY_LONG_LONG)-1 && PyErr_Occurred())) {
+       return (size_t)-1;
+   } else if (unlikely(val != (unsigned PY_LONG_LONG)(size_t)val)) {
+       PyErr_SetString(PyExc_OverflowError,
+                       "value too large to convert to size_t");
+       return (size_t)-1;
+   }
+   return (size_t)val;
+}
+
+
+#endif /* Py_PYTHON_H */
diff --git a/h5py/h5g.pxd b/h5py/h5g.pxd
new file mode 100644
index 0000000..18a02a5
--- /dev/null
+++ b/h5py/h5g.pxd
@@ -0,0 +1,19 @@
+# This file is part of h5py, a Python interface to the HDF5 library.
+#
+# http://www.h5py.org
+#
+# Copyright 2008-2013 Andrew Collette and contributors
+#
+# License:  Standard 3-clause BSD; see "license.txt" for full license terms
+#           and contributor agreement.
+
+from defs cimport *
+
+from _objects cimport ObjectID
+
+cdef class GroupID(ObjectID):
+
+    cdef readonly object links
+
+
+
diff --git a/h5py/h5g.pyx b/h5py/h5g.pyx
new file mode 100644
index 0000000..293dfe8
--- /dev/null
+++ b/h5py/h5g.pyx
@@ -0,0 +1,446 @@
+# This file is part of h5py, a Python interface to the HDF5 library.
+#
+# http://www.h5py.org
+#
+# Copyright 2008-2013 Andrew Collette and contributors
+#
+# License:  Standard 3-clause BSD; see "license.txt" for full license terms
+#           and contributor agreement.
+
+"""
+    Low-level HDF5 "H5G" group interface.
+"""
+
+# Compile-time imports
+from _objects cimport pdefault
+from utils cimport emalloc, efree
+from h5p cimport PropID
+cimport _hdf5 # to implement container testing for 1.6
+from _errors cimport set_error_handler, err_cookie
+
+from h5py import _objects
+
+# === Public constants and data structures ====================================
+
+# Enumerated object types for groups "H5G_obj_t"
+UNKNOWN  = H5G_UNKNOWN
+LINK     = H5G_LINK
+GROUP    = H5G_GROUP
+DATASET  = H5G_DATASET
+TYPE = H5G_TYPE
+
+# Enumerated link types "H5G_link_t"
+LINK_ERROR = H5G_LINK_ERROR
+LINK_HARD  = H5G_LINK_HARD
+LINK_SOFT  = H5G_LINK_SOFT
+
+cdef class GroupStat:
+    """Represents the H5G_stat_t structure containing group member info.
+
+    Fields (read-only):
+
+    * fileno:   2-tuple uniquely identifying the current file
+    * objno:    2-tuple uniquely identifying this object
+    * nlink:    Number of hard links to this object
+    * mtime:    Modification time of this object
+    * linklen:  Length of the symbolic link name, or 0 if not a link.
+
+    "Uniquely identifying" means unique among currently open files,
+    not universally unique.
+
+    * Hashable: Yes
+    * Equality: Yes
+    """
+    cdef H5G_stat_t infostruct
+
+    property fileno:
+        def __get__(self):
+            return (self.infostruct.fileno[0], self.infostruct.fileno[1])
+    property objno:
+        def __get__(self):
+            return (self.infostruct.objno[0], self.infostruct.objno[1])
+    property nlink:
+        def __get__(self):
+            return self.infostruct.nlink
+    property type:
+        def __get__(self):
+            return self.infostruct.type
+    property mtime:
+        def __get__(self):
+            return self.infostruct.mtime
+    property linklen:
+        def __get__(self):
+            return self.infostruct.linklen
+
+    def _hash(self):
+        return hash((self.fileno, self.objno, self.nlink, self.type, self.mtime, self.linklen))
+
+
+cdef class GroupIter:
+
+    """
+        Iterator over the names of group members.  After this iterator is
+        exhausted, it releases its reference to the group ID.
+    """
+
+    cdef unsigned long idx
+    cdef unsigned long nobjs
+    cdef GroupID grp
+    cdef list names
+
+
+    def __init__(self, GroupID grp not None):
+
+        self.idx = 0
+        self.grp = grp
+        self.nobjs = grp.get_num_objs()
+        self.names = []
+
+
+    def __iter__(self):
+
+        return self
+
+
+    def __next__(self):
+
+        if self.idx == self.nobjs:
+            self.grp = None
+            self.names = None
+            raise StopIteration
+
+        if self.idx == 0:
+            self.grp.links.iterate(self.names.append)
+
+        retval = self.names[self.idx]
+        self.idx += 1
+
+        return retval
+
+# === Basic group management ==================================================
+
+
+def open(ObjectID loc not None, char* name):
+    """(ObjectID loc, STRING name) => GroupID
+
+    Open an existing HDF5 group, attached to some other group.
+    """
+    return GroupID.open(H5Gopen(loc.id, name))
+
+def create(ObjectID loc not None, object name, PropID lcpl=None,
+           PropID gcpl=None):
+    """(ObjectID loc, STRING name or None, PropLCID lcpl=None,
+        PropGCID gcpl=None)
+    => GroupID
+
+    Create a new group, under a given parent group.  If name is None,
+    an anonymous group will be created in the file.
+    """
+    cdef hid_t gid
+    cdef char* cname = NULL
+    if name is not None:
+        cname = name
+
+    if cname != NULL:
+        gid = H5Gcreate2(loc.id, cname, pdefault(lcpl), pdefault(gcpl), H5P_DEFAULT)
+    else:
+        gid = H5Gcreate_anon(loc.id, pdefault(gcpl), H5P_DEFAULT)
+
+    return GroupID.open(gid)
+
+
+cdef class _GroupVisitor:
+
+    cdef object func
+    cdef object retval
+
+    def __init__(self, func):
+        self.func = func
+        self.retval = None
+
+cdef herr_t cb_group_iter(hid_t gid, char *name, void* vis_in) except 2:
+
+    cdef _GroupVisitor vis = <_GroupVisitor>vis_in
+
+    vis.retval = vis.func(name)
+
+    if vis.retval is not None:
+        return 1
+    return 0
+
+
+def iterate(GroupID loc not None, object func, int startidx=0, *,
+            char* obj_name='.'):
+    """ (GroupID loc, CALLABLE func, UINT startidx=0, **kwds)
+    => Return value from func
+
+    Iterate a callable (function, method or callable object) over the
+    members of a group.  Your callable should have the signature::
+
+        func(STRING name) => Result
+
+    Returning None continues iteration; returning anything else aborts
+    iteration and returns that value. Keywords:
+
+    STRING obj_name (".")
+        Iterate over this subgroup instead
+    """
+    if startidx < 0:
+        raise ValueError("Starting index must be non-negative")
+
+    cdef int i = startidx
+    cdef _GroupVisitor vis = _GroupVisitor(func)
+
+    H5Giterate(loc.id, obj_name, &i, <H5G_iterate_t>cb_group_iter, <void*>vis)
+
+    return vis.retval
+
+
+def get_objinfo(ObjectID obj not None, object name=b'.', int follow_link=1):
+    """(ObjectID obj, STRING name='.', BOOL follow_link=True) => GroupStat object
+
+    Obtain information about a named object.  If "name" is provided,
+    "obj" is taken to be a GroupID object containing the target.
+    The return value is a GroupStat object; see that class's docstring
+    for a description of its attributes.
+
+    If follow_link is True (default) and the object is a symbolic link,
+    the information returned describes its target.  Otherwise the
+    information describes the link itself.
+    """
+    cdef GroupStat statobj
+    statobj = GroupStat()
+    cdef char* _name
+    _name = name
+
+    H5Gget_objinfo(obj.id, _name, follow_link, &statobj.infostruct)
+
+    return statobj
+
+# === Group member management =================================================
+
+cdef class GroupID(ObjectID):
+
+    """
+        Represents an HDF5 group identifier
+
+        Python extensions:
+
+        __contains__
+            Test for group member ("if name in grpid")
+
+        __iter__
+            Get an iterator over member names
+
+        __len__
+            Number of members in this group; len(grpid) = N
+
+        If HDF5 1.8.X is used, the attribute "links" contains a proxy object
+        providing access to the H5L family of routines.  See the docs
+        for h5py.h5l.LinkProxy for more information.
+
+        * Hashable: Yes, unless anonymous
+        * Equality: True HDF5 identity unless anonymous
+    """
+
+    def __init__(self, hid_t id_):
+        import h5l
+        self.links = h5l.LinkProxy(id_)
+
+
+    def _close(self):
+        """()
+
+        Terminate access through this identifier.  You shouldn't have to
+        call this manually; group identifiers are automatically released
+        when their Python wrappers are freed.
+        """
+        with _objects.registry.lock:
+            H5Gclose(self.id)
+            if not self.valid:
+                del _objects.registry[self.id]
+
+
+    def link(self, char* current_name, char* new_name,
+             int link_type=H5G_LINK_HARD, GroupID remote=None):
+        """(STRING current_name, STRING new_name, INT link_type=LINK_HARD,
+        GroupID remote=None)
+
+        Create a new hard or soft link.  current_name identifies
+        the link target (object the link will point to).  The new link is
+        identified by new_name and (optionally) another group "remote".
+
+        Link types are:
+
+        LINK_HARD
+            Hard link to existing object (default)
+
+        LINK_SOFT
+            Symbolic link; link target need not exist.
+        """
+        cdef hid_t remote_id
+        if remote is None:
+            remote_id = self.id
+        else:
+            remote_id = remote.id
+
+        H5Glink2(self.id, current_name, <H5G_link_t>link_type, remote_id, new_name)
+
+
+    def unlink(self, char* name):
+        """(STRING name)
+
+        Remove a link to an object from this group.
+        """
+        H5Gunlink(self.id, name)
+
+
+    def move(self, char* current_name, char* new_name, GroupID remote=None):
+        """(STRING current_name, STRING new_name, GroupID remote=None)
+
+        Relink an object.  current_name identifies the object.
+        new_name and (optionally) another group "remote" determine
+        where it should be moved.
+        """
+        cdef hid_t remote_id
+        if remote is None:
+            remote_id = self.id
+        else:
+            remote_id = remote.id
+
+        H5Gmove2(self.id, current_name, remote_id, new_name)
+
+
+    def get_num_objs(self):
+        """() => INT number_of_objects
+
+        Get the number of objects directly attached to a given group.
+        """
+        cdef hsize_t size
+        H5Gget_num_objs(self.id, &size)
+        return size
+
+
+    def get_objname_by_idx(self, hsize_t idx):
+        """(INT idx) => STRING
+
+        Get the name of a group member given its zero-based index.
+        """
+        cdef int size
+        cdef char* buf
+        buf = NULL
+
+        size = H5Gget_objname_by_idx(self.id, idx, NULL, 0)
+
+        buf = <char*>emalloc(sizeof(char)*(size+1))
+        try:
+            H5Gget_objname_by_idx(self.id, idx, buf, size+1)
+            pystring = buf
+            return pystring
+        finally:
+            efree(buf)
+
+
+    def get_objtype_by_idx(self, hsize_t idx):
+        """(INT idx) => INT object_type_code
+
+        Get the type of an object attached to a group, given its zero-based
+        index.  Possible return values are:
+
+        - LINK
+        - GROUP
+        - DATASET
+        - TYPE
+        """
+        return <int>H5Gget_objtype_by_idx(self.id, idx)
+
+
+    def get_linkval(self, char* name):
+        """(STRING name) => STRING link_value
+
+        Retrieve the value (target name) of a symbolic link.
+        Limited to 2048 characters on Windows.
+        """
+        cdef char* value
+        cdef H5G_stat_t statbuf
+        value = NULL
+
+        H5Gget_objinfo(self.id, name, 0, &statbuf)
+
+        if statbuf.type != H5G_LINK:
+            raise ValueError('"%s" is not a symbolic link.' % name)
+
+        IF UNAME_SYSNAME == "Windows":
+            linklen = 2049  # Windows statbuf.linklen seems broken
+        ELSE:
+            linklen = statbuf.linklen+1
+        value = <char*>emalloc(sizeof(char)*linklen)
+        try:
+            H5Gget_linkval(self.id, name, linklen, value)
+            value[linklen-1] = c'\0'  # in case HDF5 doesn't null terminate on Windows
+            pyvalue = value
+            return pyvalue
+        finally:
+            efree(value)
+
+
+    def set_comment(self, char* name, char* comment):
+        """(STRING name, STRING comment)
+
+        Set the comment on a group member.
+        """
+        H5Gset_comment(self.id, name, comment)
+
+
+    def get_comment(self, char* name):
+        """(STRING name) => STRING comment
+
+        Retrieve the comment for a group member.
+        """
+        cdef int cmnt_len
+        cdef char* cmnt
+        cmnt = NULL
+
+        cmnt_len = H5Gget_comment(self.id, name, 0, NULL)
+        assert cmnt_len >= 0
+
+        cmnt = <char*>emalloc(sizeof(char)*(cmnt_len+1))
+        try:
+            H5Gget_comment(self.id, name, cmnt_len+1, cmnt)
+            py_cmnt = cmnt
+            return py_cmnt
+        finally:
+            efree(cmnt)
+
+    # === Special methods =====================================================
+
+
+    def __contains__(self, char* name):
+        """(STRING name)
+
+        Determine if a group member of the given name is present
+        """
+        cdef err_cookie old_handler
+        cdef err_cookie new_handler
+        cdef herr_t retval
+        
+        new_handler.func = NULL
+        new_handler.data = NULL
+
+        old_handler = set_error_handler(new_handler)
+        retval = _hdf5.H5Gget_objinfo(self.id, name, 0, NULL)
+        set_error_handler(old_handler)
+
+        return bool(retval >= 0)
+
+
+    def __iter__(self):
+        """ Return an iterator over the names of group members. """
+        return GroupIter(self)
+
+
+    def __len__(self):
+        """ Number of group members """
+        cdef hsize_t size
+        H5Gget_num_objs(self.id, &size)
+        return size
diff --git a/h5py/h5i.c b/h5py/h5i.c
new file mode 100644
index 0000000..f1d9fad
--- /dev/null
+++ b/h5py/h5i.c
@@ -0,0 +1,3566 @@
+/* Generated by Cython 0.18 on Mon Dec  9 16:00:33 2013 */
+
+#define PY_SSIZE_T_CLEAN
+#include "Python.h"
+#ifndef Py_PYTHON_H
+    #error Python headers needed to compile C extensions, please install development version of Python.
+#elif PY_VERSION_HEX < 0x02040000
+    #error Cython requires Python 2.4+.
+#else
+#include <stddef.h> /* For offsetof */
+#ifndef offsetof
+#define offsetof(type, member) ( (size_t) & ((type*)0) -> member )
+#endif
+#if !defined(WIN32) && !defined(MS_WINDOWS)
+  #ifndef __stdcall
+    #define __stdcall
+  #endif
+  #ifndef __cdecl
+    #define __cdecl
+  #endif
+  #ifndef __fastcall
+    #define __fastcall
+  #endif
+#endif
+#ifndef DL_IMPORT
+  #define DL_IMPORT(t) t
+#endif
+#ifndef DL_EXPORT
+  #define DL_EXPORT(t) t
+#endif
+#ifndef PY_LONG_LONG
+  #define PY_LONG_LONG LONG_LONG
+#endif
+#ifndef Py_HUGE_VAL
+  #define Py_HUGE_VAL HUGE_VAL
+#endif
+#ifdef PYPY_VERSION
+#define CYTHON_COMPILING_IN_PYPY 1
+#define CYTHON_COMPILING_IN_CPYTHON 0
+#else
+#define CYTHON_COMPILING_IN_PYPY 0
+#define CYTHON_COMPILING_IN_CPYTHON 1
+#endif
+#if PY_VERSION_HEX < 0x02050000
+  typedef int Py_ssize_t;
+  #define PY_SSIZE_T_MAX INT_MAX
+  #define PY_SSIZE_T_MIN INT_MIN
+  #define PY_FORMAT_SIZE_T ""
+  #define CYTHON_FORMAT_SSIZE_T ""
+  #define PyInt_FromSsize_t(z) PyInt_FromLong(z)
+  #define PyInt_AsSsize_t(o)   __Pyx_PyInt_AsInt(o)
+  #define PyNumber_Index(o)    ((PyNumber_Check(o) && !PyFloat_Check(o)) ? PyNumber_Int(o) : \
+                                (PyErr_Format(PyExc_TypeError, \
+                                              "expected index value, got %.200s", Py_TYPE(o)->tp_name), \
+                                 (PyObject*)0))
+  #define __Pyx_PyIndex_Check(o) (PyNumber_Check(o) && !PyFloat_Check(o) && \
+                                  !PyComplex_Check(o))
+  #define PyIndex_Check __Pyx_PyIndex_Check
+  #define PyErr_WarnEx(category, message, stacklevel) PyErr_Warn(category, message)
+  #define __PYX_BUILD_PY_SSIZE_T "i"
+#else
+  #define __PYX_BUILD_PY_SSIZE_T "n"
+  #define CYTHON_FORMAT_SSIZE_T "z"
+  #define __Pyx_PyIndex_Check PyIndex_Check
+#endif
+#if PY_VERSION_HEX < 0x02060000
+  #define Py_REFCNT(ob) (((PyObject*)(ob))->ob_refcnt)
+  #define Py_TYPE(ob)   (((PyObject*)(ob))->ob_type)
+  #define Py_SIZE(ob)   (((PyVarObject*)(ob))->ob_size)
+  #define PyVarObject_HEAD_INIT(type, size) \
+          PyObject_HEAD_INIT(type) size,
+  #define PyType_Modified(t)
+  typedef struct {
+     void *buf;
+     PyObject *obj;
+     Py_ssize_t len;
+     Py_ssize_t itemsize;
+     int readonly;
+     int ndim;
+     char *format;
+     Py_ssize_t *shape;
+     Py_ssize_t *strides;
+     Py_ssize_t *suboffsets;
+     void *internal;
+  } Py_buffer;
+  #define PyBUF_SIMPLE 0
+  #define PyBUF_WRITABLE 0x0001
+  #define PyBUF_FORMAT 0x0004
+  #define PyBUF_ND 0x0008
+  #define PyBUF_STRIDES (0x0010 | PyBUF_ND)
+  #define PyBUF_C_CONTIGUOUS (0x0020 | PyBUF_STRIDES)
+  #define PyBUF_F_CONTIGUOUS (0x0040 | PyBUF_STRIDES)
+  #define PyBUF_ANY_CONTIGUOUS (0x0080 | PyBUF_STRIDES)
+  #define PyBUF_INDIRECT (0x0100 | PyBUF_STRIDES)
+  #define PyBUF_RECORDS (PyBUF_STRIDES | PyBUF_FORMAT | PyBUF_WRITABLE)
+  #define PyBUF_FULL (PyBUF_INDIRECT | PyBUF_FORMAT | PyBUF_WRITABLE)
+  typedef int (*getbufferproc)(PyObject *, Py_buffer *, int);
+  typedef void (*releasebufferproc)(PyObject *, Py_buffer *);
+#endif
+#if PY_MAJOR_VERSION < 3
+  #define __Pyx_BUILTIN_MODULE_NAME "__builtin__"
+  #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) \
+          PyCode_New(a, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
+#else
+  #define __Pyx_BUILTIN_MODULE_NAME "builtins"
+  #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) \
+          PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
+#endif
+#if PY_MAJOR_VERSION < 3 && PY_MINOR_VERSION < 6
+  #define PyUnicode_FromString(s) PyUnicode_Decode(s, strlen(s), "UTF-8", "strict")
+#endif
+#if PY_MAJOR_VERSION >= 3
+  #define Py_TPFLAGS_CHECKTYPES 0
+  #define Py_TPFLAGS_HAVE_INDEX 0
+#endif
+#if (PY_VERSION_HEX < 0x02060000) || (PY_MAJOR_VERSION >= 3)
+  #define Py_TPFLAGS_HAVE_NEWBUFFER 0
+#endif
+#if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND)
+  #define CYTHON_PEP393_ENABLED 1
+  #define __Pyx_PyUnicode_READY(op)       (likely(PyUnicode_IS_READY(op)) ? \
+                                              0 : _PyUnicode_Ready((PyObject *)(op)))
+  #define __Pyx_PyUnicode_GET_LENGTH(u)   PyUnicode_GET_LENGTH(u)
+  #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i)
+  #define __Pyx_PyUnicode_READ(k, d, i)   PyUnicode_READ(k, d, i)
+#else
+  #define CYTHON_PEP393_ENABLED 0
+  #define __Pyx_PyUnicode_READY(op)       (0)
+  #define __Pyx_PyUnicode_GET_LENGTH(u)   PyUnicode_GET_SIZE(u)
+  #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i]))
+  #define __Pyx_PyUnicode_READ(k, d, i)   ((k=k), (Py_UCS4)(((Py_UNICODE*)d)[i]))
+#endif
+#if PY_MAJOR_VERSION >= 3
+  #define PyBaseString_Type            PyUnicode_Type
+  #define PyStringObject               PyUnicodeObject
+  #define PyString_Type                PyUnicode_Type
+  #define PyString_Check               PyUnicode_Check
+  #define PyString_CheckExact          PyUnicode_CheckExact
+#endif
+#if PY_VERSION_HEX < 0x02060000
+  #define PyBytesObject                PyStringObject
+  #define PyBytes_Type                 PyString_Type
+  #define PyBytes_Check                PyString_Check
+  #define PyBytes_CheckExact           PyString_CheckExact
+  #define PyBytes_FromString           PyString_FromString
+  #define PyBytes_FromStringAndSize    PyString_FromStringAndSize
+  #define PyBytes_FromFormat           PyString_FromFormat
+  #define PyBytes_DecodeEscape         PyString_DecodeEscape
+  #define PyBytes_AsString             PyString_AsString
+  #define PyBytes_AsStringAndSize      PyString_AsStringAndSize
+  #define PyBytes_Size                 PyString_Size
+  #define PyBytes_AS_STRING            PyString_AS_STRING
+  #define PyBytes_GET_SIZE             PyString_GET_SIZE
+  #define PyBytes_Repr                 PyString_Repr
+  #define PyBytes_Concat               PyString_Concat
+  #define PyBytes_ConcatAndDel         PyString_ConcatAndDel
+#endif
+#if PY_VERSION_HEX < 0x02060000
+  #define PySet_Check(obj)             PyObject_TypeCheck(obj, &PySet_Type)
+  #define PyFrozenSet_Check(obj)       PyObject_TypeCheck(obj, &PyFrozenSet_Type)
+#endif
+#ifndef PySet_CheckExact
+  #define PySet_CheckExact(obj)        (Py_TYPE(obj) == &PySet_Type)
+#endif
+#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type)
+#if PY_MAJOR_VERSION >= 3
+  #define PyIntObject                  PyLongObject
+  #define PyInt_Type                   PyLong_Type
+  #define PyInt_Check(op)              PyLong_Check(op)
+  #define PyInt_CheckExact(op)         PyLong_CheckExact(op)
+  #define PyInt_FromString             PyLong_FromString
+  #define PyInt_FromUnicode            PyLong_FromUnicode
+  #define PyInt_FromLong               PyLong_FromLong
+  #define PyInt_FromSize_t             PyLong_FromSize_t
+  #define PyInt_FromSsize_t            PyLong_FromSsize_t
+  #define PyInt_AsLong                 PyLong_AsLong
+  #define PyInt_AS_LONG                PyLong_AS_LONG
+  #define PyInt_AsSsize_t              PyLong_AsSsize_t
+  #define PyInt_AsUnsignedLongMask     PyLong_AsUnsignedLongMask
+  #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask
+#endif
+#if PY_MAJOR_VERSION >= 3
+  #define PyBoolObject                 PyLongObject
+#endif
+#if PY_VERSION_HEX < 0x03020000
+  typedef long Py_hash_t;
+  #define __Pyx_PyInt_FromHash_t PyInt_FromLong
+  #define __Pyx_PyInt_AsHash_t   PyInt_AsLong
+#else
+  #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t
+  #define __Pyx_PyInt_AsHash_t   PyInt_AsSsize_t
+#endif
+#if (PY_MAJOR_VERSION < 3) || (PY_VERSION_HEX >= 0x03010300)
+  #define __Pyx_PySequence_GetSlice(obj, a, b) PySequence_GetSlice(obj, a, b)
+  #define __Pyx_PySequence_SetSlice(obj, a, b, value) PySequence_SetSlice(obj, a, b, value)
+  #define __Pyx_PySequence_DelSlice(obj, a, b) PySequence_DelSlice(obj, a, b)
+#else
+  #define __Pyx_PySequence_GetSlice(obj, a, b) (unlikely(!(obj)) ? \
+        (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), (PyObject*)0) : \
+        (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_GetSlice(obj, a, b)) : \
+            (PyErr_Format(PyExc_TypeError, "'%.200s' object is unsliceable", (obj)->ob_type->tp_name), (PyObject*)0)))
+  #define __Pyx_PySequence_SetSlice(obj, a, b, value) (unlikely(!(obj)) ? \
+        (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), -1) : \
+        (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_SetSlice(obj, a, b, value)) : \
+            (PyErr_Format(PyExc_TypeError, "'%.200s' object doesn't support slice assignment", (obj)->ob_type->tp_name), -1)))
+  #define __Pyx_PySequence_DelSlice(obj, a, b) (unlikely(!(obj)) ? \
+        (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), -1) : \
+        (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_DelSlice(obj, a, b)) : \
+            (PyErr_Format(PyExc_TypeError, "'%.200s' object doesn't support slice deletion", (obj)->ob_type->tp_name), -1)))
+#endif
+#if PY_MAJOR_VERSION >= 3
+  #define PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, self) : PyInstanceMethod_New(func))
+#endif
+#if PY_VERSION_HEX < 0x02050000
+  #define __Pyx_GetAttrString(o,n)   PyObject_GetAttrString((o),((char *)(n)))
+  #define __Pyx_SetAttrString(o,n,a) PyObject_SetAttrString((o),((char *)(n)),(a))
+  #define __Pyx_DelAttrString(o,n)   PyObject_DelAttrString((o),((char *)(n)))
+#else
+  #define __Pyx_GetAttrString(o,n)   PyObject_GetAttrString((o),(n))
+  #define __Pyx_SetAttrString(o,n,a) PyObject_SetAttrString((o),(n),(a))
+  #define __Pyx_DelAttrString(o,n)   PyObject_DelAttrString((o),(n))
+#endif
+#if PY_VERSION_HEX < 0x02050000
+  #define __Pyx_NAMESTR(n) ((char *)(n))
+  #define __Pyx_DOCSTR(n)  ((char *)(n))
+#else
+  #define __Pyx_NAMESTR(n) (n)
+  #define __Pyx_DOCSTR(n)  (n)
+#endif
+
+
+#if PY_MAJOR_VERSION >= 3
+  #define __Pyx_PyNumber_Divide(x,y)         PyNumber_TrueDivide(x,y)
+  #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceTrueDivide(x,y)
+#else
+  #define __Pyx_PyNumber_Divide(x,y)         PyNumber_Divide(x,y)
+  #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceDivide(x,y)
+#endif
+
+#ifndef __PYX_EXTERN_C
+  #ifdef __cplusplus
+    #define __PYX_EXTERN_C extern "C"
+  #else
+    #define __PYX_EXTERN_C extern
+  #endif
+#endif
+
+#if defined(WIN32) || defined(MS_WINDOWS)
+#define _USE_MATH_DEFINES
+#endif
+#include <math.h>
+#define __PYX_HAVE__h5py__h5i
+#define __PYX_HAVE_API__h5py__h5i
+#include "stdlib.h"
+#include "string.h"
+#include "time.h"
+#include "unistd.h"
+#include "stdint.h"
+#include "api_compat.h"
+#include "lzf_filter.h"
+#include "hdf5.h"
+#include "H5Cpublic.h"
+#include "hdf5_hl.h"
+#ifdef _OPENMP
+#include <omp.h>
+#endif /* _OPENMP */
+
+#ifdef PYREX_WITHOUT_ASSERTIONS
+#define CYTHON_WITHOUT_ASSERTIONS
+#endif
+
+#ifndef CYTHON_INLINE
+  #if defined(__GNUC__)
+    #define CYTHON_INLINE __inline__
+  #elif defined(_MSC_VER)
+    #define CYTHON_INLINE __inline
+  #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+    #define CYTHON_INLINE inline
+  #else
+    #define CYTHON_INLINE
+  #endif
+#endif
+#ifndef CYTHON_UNUSED
+# if defined(__GNUC__)
+#   if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
+#     define CYTHON_UNUSED __attribute__ ((__unused__))
+#   else
+#     define CYTHON_UNUSED
+#   endif
+# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER))
+#   define CYTHON_UNUSED __attribute__ ((__unused__))
+# else
+#   define CYTHON_UNUSED
+# endif
+#endif
+typedef struct {PyObject **p; char *s; const long n; const char* encoding; const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; /*proto*/
+
+#define __Pyx_PyBytes_FromUString(s) PyBytes_FromString((char*)s)
+#define __Pyx_PyBytes_AsUString(s)   ((unsigned char*) PyBytes_AsString(s))
+#define __Pyx_Owned_Py_None(b) (Py_INCREF(Py_None), Py_None)
+#define __Pyx_PyBool_FromLong(b) ((b) ? (Py_INCREF(Py_True), Py_True) : (Py_INCREF(Py_False), Py_False))
+static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*);
+static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x);
+static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*);
+static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t);
+static CYTHON_INLINE size_t __Pyx_PyInt_AsSize_t(PyObject*);
+#if CYTHON_COMPILING_IN_CPYTHON
+#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x))
+#else
+#define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x)
+#endif
+#define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x))
+
+
+#ifdef __GNUC__
+  /* Test for GCC > 2.95 */
+  #if __GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))
+    #define likely(x)   __builtin_expect(!!(x), 1)
+    #define unlikely(x) __builtin_expect(!!(x), 0)
+  #else /* __GNUC__ > 2 ... */
+    #define likely(x)   (x)
+    #define unlikely(x) (x)
+  #endif /* __GNUC__ > 2 ... */
+#else /* __GNUC__ */
+  #define likely(x)   (x)
+  #define unlikely(x) (x)
+#endif /* __GNUC__ */
+    
+static PyObject *__pyx_m;
+static PyObject *__pyx_b;
+static PyObject *__pyx_empty_tuple;
+static PyObject *__pyx_empty_bytes;
+static int __pyx_lineno;
+static int __pyx_clineno = 0;
+static const char * __pyx_cfilenm= __FILE__;
+static const char *__pyx_filename;
+
+
+static const char *__pyx_f[] = {
+  "h5i.pyx",
+  "_objects.pxd",
+};
+
+/*--- Type declarations ---*/
+struct __pyx_obj_4h5py_8_objects_ObjectID;
+
+/* "_objects.pxd":12
+ * from defs cimport *
+ * 
+ * cdef class ObjectID:             # <<<<<<<<<<<<<<
+ * 
+ *     cdef object __weakref__
+ */
+struct __pyx_obj_4h5py_8_objects_ObjectID {
+  PyObject_HEAD
+  PyObject *__weakref__;
+  hid_t id;
+  int locked;
+  PyObject *_hash;
+};
+
+#ifndef CYTHON_REFNANNY
+  #define CYTHON_REFNANNY 0
+#endif
+#if CYTHON_REFNANNY
+  typedef struct {
+    void (*INCREF)(void*, PyObject*, int);
+    void (*DECREF)(void*, PyObject*, int);
+    void (*GOTREF)(void*, PyObject*, int);
+    void (*GIVEREF)(void*, PyObject*, int);
+    void* (*SetupContext)(const char*, int, const char*);
+    void (*FinishContext)(void**);
+  } __Pyx_RefNannyAPIStruct;
+  static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL;
+  static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); /*proto*/
+  #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL;
+#ifdef WITH_THREAD
+  #define __Pyx_RefNannySetupContext(name, acquire_gil) \
+          if (acquire_gil) { \
+              PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); \
+              __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__); \
+              PyGILState_Release(__pyx_gilstate_save); \
+          } else { \
+              __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__); \
+          }
+#else
+  #define __Pyx_RefNannySetupContext(name, acquire_gil) \
+          __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__)
+#endif
+  #define __Pyx_RefNannyFinishContext() \
+          __Pyx_RefNanny->FinishContext(&__pyx_refnanny)
+  #define __Pyx_INCREF(r)  __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_DECREF(r)  __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_GOTREF(r)  __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_XINCREF(r)  do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0)
+  #define __Pyx_XDECREF(r)  do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0)
+  #define __Pyx_XGOTREF(r)  do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0)
+  #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0)
+#else
+  #define __Pyx_RefNannyDeclarations
+  #define __Pyx_RefNannySetupContext(name, acquire_gil)
+  #define __Pyx_RefNannyFinishContext()
+  #define __Pyx_INCREF(r) Py_INCREF(r)
+  #define __Pyx_DECREF(r) Py_DECREF(r)
+  #define __Pyx_GOTREF(r)
+  #define __Pyx_GIVEREF(r)
+  #define __Pyx_XINCREF(r) Py_XINCREF(r)
+  #define __Pyx_XDECREF(r) Py_XDECREF(r)
+  #define __Pyx_XGOTREF(r)
+  #define __Pyx_XGIVEREF(r)
+#endif /* CYTHON_REFNANNY */
+#define __Pyx_CLEAR(r)    do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0)
+#define __Pyx_XCLEAR(r)   do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0)
+
+static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name); /*proto*/
+
+static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type); /*proto*/
+
+static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb); /*proto*/
+static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb); /*proto*/
+
+static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause); /*proto*/
+
+static int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, int none_allowed,
+    const char *name, int exact); /*proto*/
+
+static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb); /*proto*/
+
+static CYTHON_INLINE void __Pyx_ExceptionSave(PyObject **type, PyObject **value, PyObject **tb); /*proto*/
+static void __Pyx_ExceptionReset(PyObject *type, PyObject *value, PyObject *tb); /*proto*/
+
+static CYTHON_INLINE hid_t __Pyx_PyInt_from_py_hid_t(PyObject *);
+
+static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level); /*proto*/
+
+static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_hid_t(hid_t);
+
+static CYTHON_INLINE unsigned char __Pyx_PyInt_AsUnsignedChar(PyObject *);
+
+static CYTHON_INLINE unsigned short __Pyx_PyInt_AsUnsignedShort(PyObject *);
+
+static CYTHON_INLINE unsigned int __Pyx_PyInt_AsUnsignedInt(PyObject *);
+
+static CYTHON_INLINE char __Pyx_PyInt_AsChar(PyObject *);
+
+static CYTHON_INLINE short __Pyx_PyInt_AsShort(PyObject *);
+
+static CYTHON_INLINE int __Pyx_PyInt_AsInt(PyObject *);
+
+static CYTHON_INLINE signed char __Pyx_PyInt_AsSignedChar(PyObject *);
+
+static CYTHON_INLINE signed short __Pyx_PyInt_AsSignedShort(PyObject *);
+
+static CYTHON_INLINE signed int __Pyx_PyInt_AsSignedInt(PyObject *);
+
+static CYTHON_INLINE int __Pyx_PyInt_AsLongDouble(PyObject *);
+
+static CYTHON_INLINE unsigned long __Pyx_PyInt_AsUnsignedLong(PyObject *);
+
+static CYTHON_INLINE unsigned PY_LONG_LONG __Pyx_PyInt_AsUnsignedLongLong(PyObject *);
+
+static CYTHON_INLINE long __Pyx_PyInt_AsLong(PyObject *);
+
+static CYTHON_INLINE PY_LONG_LONG __Pyx_PyInt_AsLongLong(PyObject *);
+
+static CYTHON_INLINE signed long __Pyx_PyInt_AsSignedLong(PyObject *);
+
+static CYTHON_INLINE signed PY_LONG_LONG __Pyx_PyInt_AsSignedLongLong(PyObject *);
+
+static int __Pyx_check_binary_version(void);
+
+static int __Pyx_ExportFunction(const char *name, void (*f)(void), const char *sig); /*proto*/
+
+#if !defined(__Pyx_PyIdentifier_FromString)
+#if PY_MAJOR_VERSION < 3
+  #define __Pyx_PyIdentifier_FromString(s) PyString_FromString(s)
+#else
+  #define __Pyx_PyIdentifier_FromString(s) PyUnicode_FromString(s)
+#endif
+#endif
+
+static PyObject *__Pyx_ImportModule(const char *name); /*proto*/
+
+static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name, size_t size, int strict);  /*proto*/
+
+static int __Pyx_ImportFunction(PyObject *module, const char *funcname, void (**f)(void), const char *sig); /*proto*/
+
+typedef struct {
+    int code_line;
+    PyCodeObject* code_object;
+} __Pyx_CodeObjectCacheEntry;
+struct __Pyx_CodeObjectCache {
+    int count;
+    int max_count;
+    __Pyx_CodeObjectCacheEntry* entries;
+};
+static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL};
+static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line);
+static PyCodeObject *__pyx_find_code_object(int code_line);
+static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object);
+
+static void __Pyx_AddTraceback(const char *funcname, int c_line,
+                               int py_line, const char *filename); /*proto*/
+
+static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); /*proto*/
+
+
+/* Module declarations from 'h5py.api_types_ext' */
+
+/* Module declarations from 'h5py.api_types_hdf5' */
+
+/* Module declarations from 'h5py.defs' */
+static H5I_type_t (*__pyx_f_4h5py_4defs_H5Iget_type)(hid_t); /*proto*/
+static Py_ssize_t (*__pyx_f_4h5py_4defs_H5Iget_name)(hid_t, char *, size_t); /*proto*/
+static hid_t (*__pyx_f_4h5py_4defs_H5Iget_file_id)(hid_t); /*proto*/
+static int (*__pyx_f_4h5py_4defs_H5Idec_ref)(hid_t); /*proto*/
+static int (*__pyx_f_4h5py_4defs_H5Iget_ref)(hid_t); /*proto*/
+static int (*__pyx_f_4h5py_4defs_H5Iinc_ref)(hid_t); /*proto*/
+
+/* Module declarations from 'h5py._objects' */
+static PyTypeObject *__pyx_ptype_4h5py_8_objects_ObjectID = 0;
+
+/* Module declarations from 'h5py.h5i' */
+static struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_f_4h5py_3h5i_wrap_identifier(hid_t, int __pyx_skip_dispatch); /*proto*/
+#define __Pyx_MODULE_NAME "h5py.h5i"
+int __pyx_module_is_main_h5py__h5i = 0;
+
+/* Implementation of 'h5py.h5i' */
+static PyObject *__pyx_builtin_ValueError;
+static PyObject *__pyx_builtin_Exception;
+static PyObject *__pyx_pf_4h5py_3h5i_wrap_identifier(CYTHON_UNUSED PyObject *__pyx_self, hid_t __pyx_v_ident); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5i_2get_type(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_obj); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5i_4get_name(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_obj); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5i_6get_file_id(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_obj); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5i_8inc_ref(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_obj); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5i_10get_ref(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_obj); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5i_12dec_ref(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_obj); /* proto */
+static char __pyx_k_1[] = "Unrecognized type code %d";
+static char __pyx_k_2[] = "\n    Identifier interface for object inspection.\n";
+static char __pyx_k_5[] = "/home/computer/h5py/h5py/h5i.pyx";
+static char __pyx_k_6[] = "h5py.h5i";
+static char __pyx_k__fid[] = "fid";
+static char __pyx_k__h5a[] = "h5a";
+static char __pyx_k__h5d[] = "h5d";
+static char __pyx_k__h5f[] = "h5f";
+static char __pyx_k__h5g[] = "h5g";
+static char __pyx_k__h5p[] = "h5p";
+static char __pyx_k__h5t[] = "h5t";
+static char __pyx_k__obj[] = "obj";
+static char __pyx_k__ATTR[] = "ATTR";
+static char __pyx_k__FILE[] = "FILE";
+static char __pyx_k__name[] = "name";
+static char __pyx_k__open[] = "open";
+static char __pyx_k__BADID[] = "BADID";
+static char __pyx_k__GROUP[] = "GROUP";
+static char __pyx_k__AttrID[] = "AttrID";
+static char __pyx_k__FileID[] = "FileID";
+static char __pyx_k__DATASET[] = "DATASET";
+static char __pyx_k__GroupID[] = "GroupID";
+static char __pyx_k__dec_ref[] = "dec_ref";
+static char __pyx_k__get_ref[] = "get_ref";
+static char __pyx_k__inc_ref[] = "inc_ref";
+static char __pyx_k__namelen[] = "namelen";
+static char __pyx_k__DATATYPE[] = "DATATYPE";
+static char __pyx_k____main__[] = "__main__";
+static char __pyx_k____test__[] = "__test__";
+static char __pyx_k__get_name[] = "get_name";
+static char __pyx_k__get_type[] = "get_type";
+static char __pyx_k__propwrap[] = "propwrap";
+static char __pyx_k__pystring[] = "pystring";
+static char __pyx_k__typewrap[] = "typewrap";
+static char __pyx_k__DATASPACE[] = "DATASPACE";
+static char __pyx_k__DatasetID[] = "DatasetID";
+static char __pyx_k__Exception[] = "Exception";
+static char __pyx_k__REFERENCE[] = "REFERENCE";
+static char __pyx_k__ValueError[] = "ValueError";
+static char __pyx_k__GENPROP_CLS[] = "GENPROP_CLS";
+static char __pyx_k__GENPROP_LST[] = "GENPROP_LST";
+static char __pyx_k__get_file_id[] = "get_file_id";
+static PyObject *__pyx_kp_s_1;
+static PyObject *__pyx_kp_s_5;
+static PyObject *__pyx_n_s_6;
+static PyObject *__pyx_n_s__ATTR;
+static PyObject *__pyx_n_s__AttrID;
+static PyObject *__pyx_n_s__BADID;
+static PyObject *__pyx_n_s__DATASET;
+static PyObject *__pyx_n_s__DATASPACE;
+static PyObject *__pyx_n_s__DATATYPE;
+static PyObject *__pyx_n_s__DatasetID;
+static PyObject *__pyx_n_s__Exception;
+static PyObject *__pyx_n_s__FILE;
+static PyObject *__pyx_n_s__FileID;
+static PyObject *__pyx_n_s__GENPROP_CLS;
+static PyObject *__pyx_n_s__GENPROP_LST;
+static PyObject *__pyx_n_s__GROUP;
+static PyObject *__pyx_n_s__GroupID;
+static PyObject *__pyx_n_s__REFERENCE;
+static PyObject *__pyx_n_s__ValueError;
+static PyObject *__pyx_n_s____main__;
+static PyObject *__pyx_n_s____test__;
+static PyObject *__pyx_n_s__dec_ref;
+static PyObject *__pyx_n_s__fid;
+static PyObject *__pyx_n_s__get_file_id;
+static PyObject *__pyx_n_s__get_name;
+static PyObject *__pyx_n_s__get_ref;
+static PyObject *__pyx_n_s__get_type;
+static PyObject *__pyx_n_s__h5a;
+static PyObject *__pyx_n_s__h5d;
+static PyObject *__pyx_n_s__h5f;
+static PyObject *__pyx_n_s__h5g;
+static PyObject *__pyx_n_s__h5p;
+static PyObject *__pyx_n_s__h5t;
+static PyObject *__pyx_n_s__inc_ref;
+static PyObject *__pyx_n_s__name;
+static PyObject *__pyx_n_s__namelen;
+static PyObject *__pyx_n_s__obj;
+static PyObject *__pyx_n_s__open;
+static PyObject *__pyx_n_s__propwrap;
+static PyObject *__pyx_n_s__pystring;
+static PyObject *__pyx_n_s__typewrap;
+static PyObject *__pyx_k_tuple_3;
+static PyObject *__pyx_k_tuple_7;
+static PyObject *__pyx_k_tuple_9;
+static PyObject *__pyx_k_tuple_11;
+static PyObject *__pyx_k_tuple_13;
+static PyObject *__pyx_k_tuple_15;
+static PyObject *__pyx_k_codeobj_4;
+static PyObject *__pyx_k_codeobj_8;
+static PyObject *__pyx_k_codeobj_10;
+static PyObject *__pyx_k_codeobj_12;
+static PyObject *__pyx_k_codeobj_14;
+static PyObject *__pyx_k_codeobj_16;
+
+/* "h5py/h5i.pyx":27
+ * DATATYPE    = H5I_DATATYPE
+ * 
+ * cpdef ObjectID wrap_identifier(hid_t ident):             # <<<<<<<<<<<<<<
+ * 
+ *     cdef H5I_type_t typecode
+ */
+
+static PyObject *__pyx_pw_4h5py_3h5i_1wrap_identifier(PyObject *__pyx_self, PyObject *__pyx_arg_ident); /*proto*/
+static struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_f_4h5py_3h5i_wrap_identifier(hid_t __pyx_v_ident, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  H5I_type_t __pyx_v_typecode;
+  struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_obj = 0;
+  PyObject *__pyx_v_h5f = NULL;
+  PyObject *__pyx_v_h5d = NULL;
+  PyObject *__pyx_v_h5g = NULL;
+  PyObject *__pyx_v_h5a = NULL;
+  PyObject *__pyx_v_h5t = NULL;
+  PyObject *__pyx_v_h5p = NULL;
+  struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  H5I_type_t __pyx_t_1;
+  int __pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("wrap_identifier", 0);
+
+  /* "h5py/h5i.pyx":32
+ *     cdef ObjectID obj
+ * 
+ *     typecode = H5Iget_type(ident)             # <<<<<<<<<<<<<<
+ *     if typecode == H5I_FILE:
+ *         import h5f
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Iget_type(__pyx_v_ident); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v_typecode = __pyx_t_1;
+
+  /* "h5py/h5i.pyx":33
+ * 
+ *     typecode = H5Iget_type(ident)
+ *     if typecode == H5I_FILE:             # <<<<<<<<<<<<<<
+ *         import h5f
+ *         obj = h5f.FileID.open(ident)
+ */
+  __pyx_t_2 = (__pyx_v_typecode == H5I_FILE);
+  if (__pyx_t_2) {
+
+    /* "h5py/h5i.pyx":34
+ *     typecode = H5Iget_type(ident)
+ *     if typecode == H5I_FILE:
+ *         import h5f             # <<<<<<<<<<<<<<
+ *         obj = h5f.FileID.open(ident)
+ *     elif typecode == H5I_DATASET:
+ */
+    __pyx_t_3 = __Pyx_Import(((PyObject *)__pyx_n_s__h5f), 0, -1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_v_h5f = __pyx_t_3;
+    __pyx_t_3 = 0;
+
+    /* "h5py/h5i.pyx":35
+ *     if typecode == H5I_FILE:
+ *         import h5f
+ *         obj = h5f.FileID.open(ident)             # <<<<<<<<<<<<<<
+ *     elif typecode == H5I_DATASET:
+ *         import h5d
+ */
+    __pyx_t_3 = PyObject_GetAttr(__pyx_v_h5f, __pyx_n_s__FileID); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__open); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __pyx_t_3 = __Pyx_PyInt_to_py_hid_t(__pyx_v_ident); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_5);
+    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3);
+    __Pyx_GIVEREF(__pyx_t_3);
+    __pyx_t_3 = 0;
+    __pyx_t_3 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
+    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_4h5py_8_objects_ObjectID))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_v_obj = ((struct __pyx_obj_4h5py_8_objects_ObjectID *)__pyx_t_3);
+    __pyx_t_3 = 0;
+    goto __pyx_L3;
+  }
+
+  /* "h5py/h5i.pyx":36
+ *         import h5f
+ *         obj = h5f.FileID.open(ident)
+ *     elif typecode == H5I_DATASET:             # <<<<<<<<<<<<<<
+ *         import h5d
+ *         obj = h5d.DatasetID.open(ident)
+ */
+  __pyx_t_2 = (__pyx_v_typecode == H5I_DATASET);
+  if (__pyx_t_2) {
+
+    /* "h5py/h5i.pyx":37
+ *         obj = h5f.FileID.open(ident)
+ *     elif typecode == H5I_DATASET:
+ *         import h5d             # <<<<<<<<<<<<<<
+ *         obj = h5d.DatasetID.open(ident)
+ *     elif typecode == H5I_GROUP:
+ */
+    __pyx_t_3 = __Pyx_Import(((PyObject *)__pyx_n_s__h5d), 0, -1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_v_h5d = __pyx_t_3;
+    __pyx_t_3 = 0;
+
+    /* "h5py/h5i.pyx":38
+ *     elif typecode == H5I_DATASET:
+ *         import h5d
+ *         obj = h5d.DatasetID.open(ident)             # <<<<<<<<<<<<<<
+ *     elif typecode == H5I_GROUP:
+ *         import h5g
+ */
+    __pyx_t_3 = PyObject_GetAttr(__pyx_v_h5d, __pyx_n_s__DatasetID); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_5 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__open); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __pyx_t_3 = __Pyx_PyInt_to_py_hid_t(__pyx_v_ident); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
+    __Pyx_GIVEREF(__pyx_t_3);
+    __pyx_t_3 = 0;
+    __pyx_t_3 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
+    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_4h5py_8_objects_ObjectID))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_v_obj = ((struct __pyx_obj_4h5py_8_objects_ObjectID *)__pyx_t_3);
+    __pyx_t_3 = 0;
+    goto __pyx_L3;
+  }
+
+  /* "h5py/h5i.pyx":39
+ *         import h5d
+ *         obj = h5d.DatasetID.open(ident)
+ *     elif typecode == H5I_GROUP:             # <<<<<<<<<<<<<<
+ *         import h5g
+ *         obj = h5g.GroupID.open(ident)
+ */
+  __pyx_t_2 = (__pyx_v_typecode == H5I_GROUP);
+  if (__pyx_t_2) {
+
+    /* "h5py/h5i.pyx":40
+ *         obj = h5d.DatasetID.open(ident)
+ *     elif typecode == H5I_GROUP:
+ *         import h5g             # <<<<<<<<<<<<<<
+ *         obj = h5g.GroupID.open(ident)
+ *     elif typecode == H5I_ATTR:
+ */
+    __pyx_t_3 = __Pyx_Import(((PyObject *)__pyx_n_s__h5g), 0, -1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_v_h5g = __pyx_t_3;
+    __pyx_t_3 = 0;
+
+    /* "h5py/h5i.pyx":41
+ *     elif typecode == H5I_GROUP:
+ *         import h5g
+ *         obj = h5g.GroupID.open(ident)             # <<<<<<<<<<<<<<
+ *     elif typecode == H5I_ATTR:
+ *         import h5a
+ */
+    __pyx_t_3 = PyObject_GetAttr(__pyx_v_h5g, __pyx_n_s__GroupID); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__open); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __pyx_t_3 = __Pyx_PyInt_to_py_hid_t(__pyx_v_ident); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_5);
+    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3);
+    __Pyx_GIVEREF(__pyx_t_3);
+    __pyx_t_3 = 0;
+    __pyx_t_3 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
+    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_4h5py_8_objects_ObjectID))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_v_obj = ((struct __pyx_obj_4h5py_8_objects_ObjectID *)__pyx_t_3);
+    __pyx_t_3 = 0;
+    goto __pyx_L3;
+  }
+
+  /* "h5py/h5i.pyx":42
+ *         import h5g
+ *         obj = h5g.GroupID.open(ident)
+ *     elif typecode == H5I_ATTR:             # <<<<<<<<<<<<<<
+ *         import h5a
+ *         obj = h5a.AttrID.open(ident)
+ */
+  __pyx_t_2 = (__pyx_v_typecode == H5I_ATTR);
+  if (__pyx_t_2) {
+
+    /* "h5py/h5i.pyx":43
+ *         obj = h5g.GroupID.open(ident)
+ *     elif typecode == H5I_ATTR:
+ *         import h5a             # <<<<<<<<<<<<<<
+ *         obj = h5a.AttrID.open(ident)
+ *     elif typecode == H5I_DATATYPE:
+ */
+    __pyx_t_3 = __Pyx_Import(((PyObject *)__pyx_n_s__h5a), 0, -1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_v_h5a = __pyx_t_3;
+    __pyx_t_3 = 0;
+
+    /* "h5py/h5i.pyx":44
+ *     elif typecode == H5I_ATTR:
+ *         import h5a
+ *         obj = h5a.AttrID.open(ident)             # <<<<<<<<<<<<<<
+ *     elif typecode == H5I_DATATYPE:
+ *         import h5t
+ */
+    __pyx_t_3 = PyObject_GetAttr(__pyx_v_h5a, __pyx_n_s__AttrID); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_5 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__open); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __pyx_t_3 = __Pyx_PyInt_to_py_hid_t(__pyx_v_ident); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
+    __Pyx_GIVEREF(__pyx_t_3);
+    __pyx_t_3 = 0;
+    __pyx_t_3 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
+    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_4h5py_8_objects_ObjectID))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_v_obj = ((struct __pyx_obj_4h5py_8_objects_ObjectID *)__pyx_t_3);
+    __pyx_t_3 = 0;
+    goto __pyx_L3;
+  }
+
+  /* "h5py/h5i.pyx":45
+ *         import h5a
+ *         obj = h5a.AttrID.open(ident)
+ *     elif typecode == H5I_DATATYPE:             # <<<<<<<<<<<<<<
+ *         import h5t
+ *         obj = h5t.typewrap(ident)
+ */
+  __pyx_t_2 = (__pyx_v_typecode == H5I_DATATYPE);
+  if (__pyx_t_2) {
+
+    /* "h5py/h5i.pyx":46
+ *         obj = h5a.AttrID.open(ident)
+ *     elif typecode == H5I_DATATYPE:
+ *         import h5t             # <<<<<<<<<<<<<<
+ *         obj = h5t.typewrap(ident)
+ *     elif typecode == H5I_GENPROP_LST:
+ */
+    __pyx_t_3 = __Pyx_Import(((PyObject *)__pyx_n_s__h5t), 0, -1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_v_h5t = __pyx_t_3;
+    __pyx_t_3 = 0;
+
+    /* "h5py/h5i.pyx":47
+ *     elif typecode == H5I_DATATYPE:
+ *         import h5t
+ *         obj = h5t.typewrap(ident)             # <<<<<<<<<<<<<<
+ *     elif typecode == H5I_GENPROP_LST:
+ *         import h5p
+ */
+    __pyx_t_3 = PyObject_GetAttr(__pyx_v_h5t, __pyx_n_s__typewrap); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = __Pyx_PyInt_to_py_hid_t(__pyx_v_ident); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_5);
+    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4);
+    __Pyx_GIVEREF(__pyx_t_4);
+    __pyx_t_4 = 0;
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
+    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_4h5py_8_objects_ObjectID))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_v_obj = ((struct __pyx_obj_4h5py_8_objects_ObjectID *)__pyx_t_4);
+    __pyx_t_4 = 0;
+    goto __pyx_L3;
+  }
+
+  /* "h5py/h5i.pyx":48
+ *         import h5t
+ *         obj = h5t.typewrap(ident)
+ *     elif typecode == H5I_GENPROP_LST:             # <<<<<<<<<<<<<<
+ *         import h5p
+ *         obj = h5p.propwrap(ident)
+ */
+  __pyx_t_2 = (__pyx_v_typecode == H5I_GENPROP_LST);
+  if (__pyx_t_2) {
+
+    /* "h5py/h5i.pyx":49
+ *         obj = h5t.typewrap(ident)
+ *     elif typecode == H5I_GENPROP_LST:
+ *         import h5p             # <<<<<<<<<<<<<<
+ *         obj = h5p.propwrap(ident)
+ *     else:
+ */
+    __pyx_t_4 = __Pyx_Import(((PyObject *)__pyx_n_s__h5p), 0, -1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_v_h5p = __pyx_t_4;
+    __pyx_t_4 = 0;
+
+    /* "h5py/h5i.pyx":50
+ *     elif typecode == H5I_GENPROP_LST:
+ *         import h5p
+ *         obj = h5p.propwrap(ident)             # <<<<<<<<<<<<<<
+ *     else:
+ *         raise ValueError("Unrecognized type code %d" % typecode)
+ */
+    __pyx_t_4 = PyObject_GetAttr(__pyx_v_h5p, __pyx_n_s__propwrap); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_5 = __Pyx_PyInt_to_py_hid_t(__pyx_v_ident); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_5);
+    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_5);
+    __Pyx_GIVEREF(__pyx_t_5);
+    __pyx_t_5 = 0;
+    __pyx_t_5 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
+    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_4h5py_8_objects_ObjectID))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_v_obj = ((struct __pyx_obj_4h5py_8_objects_ObjectID *)__pyx_t_5);
+    __pyx_t_5 = 0;
+    goto __pyx_L3;
+  }
+  /*else*/ {
+
+    /* "h5py/h5i.pyx":52
+ *         obj = h5p.propwrap(ident)
+ *     else:
+ *         raise ValueError("Unrecognized type code %d" % typecode)             # <<<<<<<<<<<<<<
+ * 
+ *     return obj
+ */
+    __pyx_t_5 = PyInt_FromLong(__pyx_v_typecode); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_5);
+    __pyx_t_3 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_1), __pyx_t_5); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(((PyObject *)__pyx_t_3));
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_5);
+    PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_t_3));
+    __Pyx_GIVEREF(((PyObject *)__pyx_t_3));
+    __pyx_t_3 = 0;
+    __pyx_t_3 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
+    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  }
+  __pyx_L3:;
+
+  /* "h5py/h5i.pyx":54
+ *         raise ValueError("Unrecognized type code %d" % typecode)
+ * 
+ *     return obj             # <<<<<<<<<<<<<<
+ * 
+ * # === Identifier API ==========================================================
+ */
+  __Pyx_XDECREF(((PyObject *)__pyx_r));
+  __Pyx_INCREF(((PyObject *)__pyx_v_obj));
+  __pyx_r = __pyx_v_obj;
+  goto __pyx_L0;
+
+  __pyx_r = ((struct __pyx_obj_4h5py_8_objects_ObjectID *)Py_None); __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_AddTraceback("h5py.h5i.wrap_identifier", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_obj);
+  __Pyx_XDECREF(__pyx_v_h5f);
+  __Pyx_XDECREF(__pyx_v_h5d);
+  __Pyx_XDECREF(__pyx_v_h5g);
+  __Pyx_XDECREF(__pyx_v_h5a);
+  __Pyx_XDECREF(__pyx_v_h5t);
+  __Pyx_XDECREF(__pyx_v_h5p);
+  __Pyx_XGIVEREF((PyObject *)__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5i_1wrap_identifier(PyObject *__pyx_self, PyObject *__pyx_arg_ident); /*proto*/
+static PyObject *__pyx_pw_4h5py_3h5i_1wrap_identifier(PyObject *__pyx_self, PyObject *__pyx_arg_ident) {
+  hid_t __pyx_v_ident;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("wrap_identifier (wrapper)", 0);
+  assert(__pyx_arg_ident); {
+    __pyx_v_ident = __Pyx_PyInt_from_py_hid_t(__pyx_arg_ident); if (unlikely((__pyx_v_ident == (hid_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5i.wrap_identifier", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_3h5i_wrap_identifier(__pyx_self, ((hid_t)__pyx_v_ident));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5i.pyx":27
+ * DATATYPE    = H5I_DATATYPE
+ * 
+ * cpdef ObjectID wrap_identifier(hid_t ident):             # <<<<<<<<<<<<<<
+ * 
+ *     cdef H5I_type_t typecode
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5i_wrap_identifier(CYTHON_UNUSED PyObject *__pyx_self, hid_t __pyx_v_ident) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("wrap_identifier", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = ((PyObject *)__pyx_f_4h5py_3h5i_wrap_identifier(__pyx_v_ident, 0)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py.h5i.wrap_identifier", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5i_3get_type(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/
+static char __pyx_doc_4h5py_3h5i_2get_type[] = " (ObjectID obj) => INT type_code\n\n        Determine the HDF5 typecode of an arbitrary HDF5 object.  The return\n        value is always one of the type constants defined in this module; if\n        the ID is invalid, BADID is returned.\n    ";
+static PyMethodDef __pyx_mdef_4h5py_3h5i_3get_type = {__Pyx_NAMESTR("get_type"), (PyCFunction)__pyx_pw_4h5py_3h5i_3get_type, METH_O, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5i_2get_type)};
+static PyObject *__pyx_pw_4h5py_3h5i_3get_type(PyObject *__pyx_self, PyObject *__pyx_v_obj) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_type (wrapper)", 0);
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_obj), __pyx_ptype_4h5py_8_objects_ObjectID, 0, "obj", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_pf_4h5py_3h5i_2get_type(__pyx_self, ((struct __pyx_obj_4h5py_8_objects_ObjectID *)__pyx_v_obj));
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5i.pyx":59
+ * 
+ * 
+ * def get_type(ObjectID obj not None):             # <<<<<<<<<<<<<<
+ *     """ (ObjectID obj) => INT type_code
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5i_2get_type(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_obj) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  H5I_type_t __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_type", 0);
+
+  /* "h5py/h5i.pyx":66
+ *         the ID is invalid, BADID is returned.
+ *     """
+ *     return <int>H5Iget_type(obj.id)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Iget_type(__pyx_v_obj->id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyInt_FromLong(((int)__pyx_t_1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5i.get_type", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5i_5get_name(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/
+static char __pyx_doc_4h5py_3h5i_4get_name[] = " (ObjectID obj) => STRING name, or None\n\n        Determine (a) name of an HDF5 object.  Because an object has as many\n        names as there are hard links to it, this may not be unique.\n\n        If the identifier is invalid or is not associated with a name\n        (in the case of transient datatypes, dataspaces, etc), returns None.\n\n        For some reason, this does not work on dereferenced objects.\n    ";
+static PyMethodDef __pyx_mdef_4h5py_3h5i_5get_name = {__Pyx_NAMESTR("get_name"), (PyCFunction)__pyx_pw_4h5py_3h5i_5get_name, METH_O, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5i_4get_name)};
+static PyObject *__pyx_pw_4h5py_3h5i_5get_name(PyObject *__pyx_self, PyObject *__pyx_v_obj) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_name (wrapper)", 0);
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_obj), __pyx_ptype_4h5py_8_objects_ObjectID, 0, "obj", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_pf_4h5py_3h5i_4get_name(__pyx_self, ((struct __pyx_obj_4h5py_8_objects_ObjectID *)__pyx_v_obj));
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5i.pyx":69
+ * 
+ * 
+ * def get_name(ObjectID obj not None):             # <<<<<<<<<<<<<<
+ *     """ (ObjectID obj) => STRING name, or None
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5i_4get_name(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_obj) {
+  int __pyx_v_namelen;
+  char *__pyx_v_name;
+  char *__pyx_v_pystring;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  Py_ssize_t __pyx_t_4;
+  int __pyx_t_5;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  PyObject *__pyx_t_8 = NULL;
+  int __pyx_t_9;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_name", 0);
+
+  /* "h5py/h5i.pyx":83
+ *     cdef char* name
+ * 
+ *     try:             # <<<<<<<<<<<<<<
+ *         namelen = <int>H5Iget_name(obj.id, NULL, 0)
+ *     except Exception:
+ */
+  {
+    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
+    __Pyx_XGOTREF(__pyx_t_1);
+    __Pyx_XGOTREF(__pyx_t_2);
+    __Pyx_XGOTREF(__pyx_t_3);
+    /*try:*/ {
+
+      /* "h5py/h5i.pyx":84
+ * 
+ *     try:
+ *         namelen = <int>H5Iget_name(obj.id, NULL, 0)             # <<<<<<<<<<<<<<
+ *     except Exception:
+ *         return None
+ */
+      __pyx_t_4 = __pyx_f_4h5py_4defs_H5Iget_name(__pyx_v_obj->id, NULL, 0); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      __pyx_v_namelen = ((int)__pyx_t_4);
+    }
+    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+    goto __pyx_L10_try_end;
+    __pyx_L3_error:;
+
+    /* "h5py/h5i.pyx":85
+ *     try:
+ *         namelen = <int>H5Iget_name(obj.id, NULL, 0)
+ *     except Exception:             # <<<<<<<<<<<<<<
+ *         return None
+ * 
+ */
+    __pyx_t_5 = PyErr_ExceptionMatches(__pyx_builtin_Exception);
+    if (__pyx_t_5) {
+      __Pyx_AddTraceback("h5py.h5i.get_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
+      if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
+      __Pyx_GOTREF(__pyx_t_6);
+      __Pyx_GOTREF(__pyx_t_7);
+      __Pyx_GOTREF(__pyx_t_8);
+
+      /* "h5py/h5i.pyx":86
+ *         namelen = <int>H5Iget_name(obj.id, NULL, 0)
+ *     except Exception:
+ *         return None             # <<<<<<<<<<<<<<
+ * 
+ *     if namelen == 0:    # 1.6.5 doesn't raise an exception
+ */
+      __Pyx_XDECREF(__pyx_r);
+      __Pyx_INCREF(Py_None);
+      __pyx_r = Py_None;
+      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+      goto __pyx_L6_except_return;
+      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+      goto __pyx_L4_exception_handled;
+    }
+    __pyx_L5_except_error:;
+    __Pyx_XGIVEREF(__pyx_t_1);
+    __Pyx_XGIVEREF(__pyx_t_2);
+    __Pyx_XGIVEREF(__pyx_t_3);
+    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
+    goto __pyx_L1_error;
+    __pyx_L6_except_return:;
+    __Pyx_XGIVEREF(__pyx_t_1);
+    __Pyx_XGIVEREF(__pyx_t_2);
+    __Pyx_XGIVEREF(__pyx_t_3);
+    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
+    goto __pyx_L0;
+    __pyx_L4_exception_handled:;
+    __Pyx_XGIVEREF(__pyx_t_1);
+    __Pyx_XGIVEREF(__pyx_t_2);
+    __Pyx_XGIVEREF(__pyx_t_3);
+    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
+    __pyx_L10_try_end:;
+  }
+
+  /* "h5py/h5i.pyx":88
+ *         return None
+ * 
+ *     if namelen == 0:    # 1.6.5 doesn't raise an exception             # <<<<<<<<<<<<<<
+ *         return None
+ * 
+ */
+  __pyx_t_9 = (__pyx_v_namelen == 0);
+  if (__pyx_t_9) {
+
+    /* "h5py/h5i.pyx":89
+ * 
+ *     if namelen == 0:    # 1.6.5 doesn't raise an exception
+ *         return None             # <<<<<<<<<<<<<<
+ * 
+ *     assert namelen > 0
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __Pyx_INCREF(Py_None);
+    __pyx_r = Py_None;
+    goto __pyx_L0;
+    goto __pyx_L13;
+  }
+  __pyx_L13:;
+
+  /* "h5py/h5i.pyx":91
+ *         return None
+ * 
+ *     assert namelen > 0             # <<<<<<<<<<<<<<
+ *     name = <char*>malloc(sizeof(char)*(namelen+1))
+ *     try:
+ */
+  #ifndef CYTHON_WITHOUT_ASSERTIONS
+  if (unlikely(!(__pyx_v_namelen > 0))) {
+    PyErr_SetNone(PyExc_AssertionError);
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  }
+  #endif
+
+  /* "h5py/h5i.pyx":92
+ * 
+ *     assert namelen > 0
+ *     name = <char*>malloc(sizeof(char)*(namelen+1))             # <<<<<<<<<<<<<<
+ *     try:
+ *         H5Iget_name(obj.id, name, namelen+1)
+ */
+  __pyx_v_name = ((char *)malloc(((sizeof(char)) * (__pyx_v_namelen + 1))));
+
+  /* "h5py/h5i.pyx":93
+ *     assert namelen > 0
+ *     name = <char*>malloc(sizeof(char)*(namelen+1))
+ *     try:             # <<<<<<<<<<<<<<
+ *         H5Iget_name(obj.id, name, namelen+1)
+ *         pystring = name
+ */
+  /*try:*/ {
+
+    /* "h5py/h5i.pyx":94
+ *     name = <char*>malloc(sizeof(char)*(namelen+1))
+ *     try:
+ *         H5Iget_name(obj.id, name, namelen+1)             # <<<<<<<<<<<<<<
+ *         pystring = name
+ *         return pystring
+ */
+    __pyx_t_4 = __pyx_f_4h5py_4defs_H5Iget_name(__pyx_v_obj->id, __pyx_v_name, (__pyx_v_namelen + 1)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 94; __pyx_clineno = __LINE__; goto __pyx_L15;}
+
+    /* "h5py/h5i.pyx":95
+ *     try:
+ *         H5Iget_name(obj.id, name, namelen+1)
+ *         pystring = name             # <<<<<<<<<<<<<<
+ *         return pystring
+ *     finally:
+ */
+    __pyx_v_pystring = __pyx_v_name;
+
+    /* "h5py/h5i.pyx":96
+ *         H5Iget_name(obj.id, name, namelen+1)
+ *         pystring = name
+ *         return pystring             # <<<<<<<<<<<<<<
+ *     finally:
+ *         free(name)
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_8 = PyBytes_FromString(__pyx_v_pystring); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L15;}
+    __Pyx_GOTREF(((PyObject *)__pyx_t_8));
+    __pyx_r = ((PyObject *)__pyx_t_8);
+    __pyx_t_8 = 0;
+    goto __pyx_L14;
+  }
+
+  /* "h5py/h5i.pyx":98
+ *         return pystring
+ *     finally:
+ *         free(name)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  /*finally:*/ {
+    int __pyx_why;
+    PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb;
+    int __pyx_exc_lineno;
+    __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
+    __pyx_why = 0; goto __pyx_L16;
+    __pyx_L14: __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
+    __pyx_why = 3; goto __pyx_L16;
+    __pyx_L15: {
+      __pyx_why = 4;
+      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+      __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb);
+      __pyx_exc_lineno = __pyx_lineno;
+      goto __pyx_L16;
+    }
+    __pyx_L16:;
+    free(__pyx_v_name);
+    switch (__pyx_why) {
+      case 3: goto __pyx_L0;
+      case 4: {
+        __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb);
+        __pyx_lineno = __pyx_exc_lineno;
+        __pyx_exc_type = 0;
+        __pyx_exc_value = 0;
+        __pyx_exc_tb = 0;
+        goto __pyx_L1_error;
+      }
+    }
+  }
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_XDECREF(__pyx_t_8);
+  __Pyx_AddTraceback("h5py.h5i.get_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5i_7get_file_id(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/
+static char __pyx_doc_4h5py_3h5i_6get_file_id[] = " (ObjectID obj) => FileID\n\n        Obtain an identifier for the file in which this object resides.\n    ";
+static PyMethodDef __pyx_mdef_4h5py_3h5i_7get_file_id = {__Pyx_NAMESTR("get_file_id"), (PyCFunction)__pyx_pw_4h5py_3h5i_7get_file_id, METH_O, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5i_6get_file_id)};
+static PyObject *__pyx_pw_4h5py_3h5i_7get_file_id(PyObject *__pyx_self, PyObject *__pyx_v_obj) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_file_id (wrapper)", 0);
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_obj), __pyx_ptype_4h5py_8_objects_ObjectID, 0, "obj", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_pf_4h5py_3h5i_6get_file_id(__pyx_self, ((struct __pyx_obj_4h5py_8_objects_ObjectID *)__pyx_v_obj));
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5i.pyx":101
+ * 
+ * 
+ * def get_file_id(ObjectID obj not None):             # <<<<<<<<<<<<<<
+ *     """ (ObjectID obj) => FileID
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5i_6get_file_id(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_obj) {
+  PyObject *__pyx_v_h5f = NULL;
+  hid_t __pyx_v_fid;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  hid_t __pyx_t_2;
+  int __pyx_t_3;
+  int __pyx_t_4;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_file_id", 0);
+
+  /* "h5py/h5i.pyx":106
+ *         Obtain an identifier for the file in which this object resides.
+ *     """
+ *     import h5f             # <<<<<<<<<<<<<<
+ *     cdef hid_t fid
+ *     fid = H5Iget_file_id(obj.id)
+ */
+  __pyx_t_1 = __Pyx_Import(((PyObject *)__pyx_n_s__h5f), 0, -1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_h5f = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+  /* "h5py/h5i.pyx":108
+ *     import h5f
+ *     cdef hid_t fid
+ *     fid = H5Iget_file_id(obj.id)             # <<<<<<<<<<<<<<
+ *     if H5Iget_ref(fid) > 1:
+ *         H5Idec_ref(fid)
+ */
+  __pyx_t_2 = __pyx_f_4h5py_4defs_H5Iget_file_id(__pyx_v_obj->id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 108; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v_fid = __pyx_t_2;
+
+  /* "h5py/h5i.pyx":109
+ *     cdef hid_t fid
+ *     fid = H5Iget_file_id(obj.id)
+ *     if H5Iget_ref(fid) > 1:             # <<<<<<<<<<<<<<
+ *         H5Idec_ref(fid)
+ *     return h5f.FileID.open(fid)
+ */
+  __pyx_t_3 = __pyx_f_4h5py_4defs_H5Iget_ref(__pyx_v_fid); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = (__pyx_t_3 > 1);
+  if (__pyx_t_4) {
+
+    /* "h5py/h5i.pyx":110
+ *     fid = H5Iget_file_id(obj.id)
+ *     if H5Iget_ref(fid) > 1:
+ *         H5Idec_ref(fid)             # <<<<<<<<<<<<<<
+ *     return h5f.FileID.open(fid)
+ * 
+ */
+    __pyx_t_3 = __pyx_f_4h5py_4defs_H5Idec_ref(__pyx_v_fid); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  /* "h5py/h5i.pyx":111
+ *     if H5Iget_ref(fid) > 1:
+ *         H5Idec_ref(fid)
+ *     return h5f.FileID.open(fid)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyObject_GetAttr(__pyx_v_h5f, __pyx_n_s__FileID); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_5 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__open); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyInt_to_py_hid_t(__pyx_v_fid); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_6);
+  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_AddTraceback("h5py.h5i.get_file_id", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_h5f);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5i_9inc_ref(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/
+static char __pyx_doc_4h5py_3h5i_8inc_ref[] = " (ObjectID obj)\n\n        Increment the reference count for the given object.\n\n        This function is provided for debugging only.  Reference counting\n        is automatically synchronized with Python, and you can easily break\n        ObjectID instances by abusing this function.\n    ";
+static PyMethodDef __pyx_mdef_4h5py_3h5i_9inc_ref = {__Pyx_NAMESTR("inc_ref"), (PyCFunction)__pyx_pw_4h5py_3h5i_9inc_ref, METH_O, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5i_8inc_ref)};
+static PyObject *__pyx_pw_4h5py_3h5i_9inc_ref(PyObject *__pyx_self, PyObject *__pyx_v_obj) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("inc_ref (wrapper)", 0);
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_obj), __pyx_ptype_4h5py_8_objects_ObjectID, 0, "obj", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_pf_4h5py_3h5i_8inc_ref(__pyx_self, ((struct __pyx_obj_4h5py_8_objects_ObjectID *)__pyx_v_obj));
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5i.pyx":114
+ * 
+ * 
+ * def inc_ref(ObjectID obj not None):             # <<<<<<<<<<<<<<
+ *     """ (ObjectID obj)
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5i_8inc_ref(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_obj) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("inc_ref", 0);
+
+  /* "h5py/h5i.pyx":123
+ *         ObjectID instances by abusing this function.
+ *     """
+ *     H5Iinc_ref(obj.id)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Iinc_ref(__pyx_v_obj->id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py.h5i.inc_ref", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5i_11get_ref(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/
+static char __pyx_doc_4h5py_3h5i_10get_ref[] = " (ObjectID obj) => INT\n\n        Retrieve the reference count for the given object.\n    ";
+static PyMethodDef __pyx_mdef_4h5py_3h5i_11get_ref = {__Pyx_NAMESTR("get_ref"), (PyCFunction)__pyx_pw_4h5py_3h5i_11get_ref, METH_O, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5i_10get_ref)};
+static PyObject *__pyx_pw_4h5py_3h5i_11get_ref(PyObject *__pyx_self, PyObject *__pyx_v_obj) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_ref (wrapper)", 0);
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_obj), __pyx_ptype_4h5py_8_objects_ObjectID, 0, "obj", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_pf_4h5py_3h5i_10get_ref(__pyx_self, ((struct __pyx_obj_4h5py_8_objects_ObjectID *)__pyx_v_obj));
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5i.pyx":126
+ * 
+ * 
+ * def get_ref(ObjectID obj not None):             # <<<<<<<<<<<<<<
+ *     """ (ObjectID obj) => INT
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5i_10get_ref(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_obj) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_ref", 0);
+
+  /* "h5py/h5i.pyx":131
+ *         Retrieve the reference count for the given object.
+ *     """
+ *     return H5Iget_ref(obj.id)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Iget_ref(__pyx_v_obj->id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyInt_FromLong(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5i.get_ref", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5i_13dec_ref(PyObject *__pyx_self, PyObject *__pyx_v_obj); /*proto*/
+static char __pyx_doc_4h5py_3h5i_12dec_ref[] = " (ObjectID obj)\n\n        Decrement the reference count for the given object.\n\n        This function is provided for debugging only.  Reference counting\n        is automatically synchronized with Python, and you can easily break\n        ObjectID instances by abusing this function.\n    ";
+static PyMethodDef __pyx_mdef_4h5py_3h5i_13dec_ref = {__Pyx_NAMESTR("dec_ref"), (PyCFunction)__pyx_pw_4h5py_3h5i_13dec_ref, METH_O, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5i_12dec_ref)};
+static PyObject *__pyx_pw_4h5py_3h5i_13dec_ref(PyObject *__pyx_self, PyObject *__pyx_v_obj) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("dec_ref (wrapper)", 0);
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_obj), __pyx_ptype_4h5py_8_objects_ObjectID, 0, "obj", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 134; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_pf_4h5py_3h5i_12dec_ref(__pyx_self, ((struct __pyx_obj_4h5py_8_objects_ObjectID *)__pyx_v_obj));
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5i.pyx":134
+ * 
+ * 
+ * def dec_ref(ObjectID obj not None):             # <<<<<<<<<<<<<<
+ *     """ (ObjectID obj)
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5i_12dec_ref(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_obj) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("dec_ref", 0);
+
+  /* "h5py/h5i.pyx":143
+ *         ObjectID instances by abusing this function.
+ *     """
+ *     H5Idec_ref(obj.id)             # <<<<<<<<<<<<<<
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Idec_ref(__pyx_v_obj->id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py.h5i.dec_ref", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyMethodDef __pyx_methods[] = {
+  {__Pyx_NAMESTR("wrap_identifier"), (PyCFunction)__pyx_pw_4h5py_3h5i_1wrap_identifier, METH_O, __Pyx_DOCSTR(0)},
+  {0, 0, 0, 0}
+};
+
+#if PY_MAJOR_VERSION >= 3
+static struct PyModuleDef __pyx_moduledef = {
+  #if PY_VERSION_HEX < 0x03020000
+    { PyObject_HEAD_INIT(NULL) NULL, 0, NULL },
+  #else
+    PyModuleDef_HEAD_INIT,
+  #endif
+    __Pyx_NAMESTR("h5i"),
+    __Pyx_DOCSTR(__pyx_k_2), /* m_doc */
+    -1, /* m_size */
+    __pyx_methods /* m_methods */,
+    NULL, /* m_reload */
+    NULL, /* m_traverse */
+    NULL, /* m_clear */
+    NULL /* m_free */
+};
+#endif
+
+static __Pyx_StringTabEntry __pyx_string_tab[] = {
+  {&__pyx_kp_s_1, __pyx_k_1, sizeof(__pyx_k_1), 0, 0, 1, 0},
+  {&__pyx_kp_s_5, __pyx_k_5, sizeof(__pyx_k_5), 0, 0, 1, 0},
+  {&__pyx_n_s_6, __pyx_k_6, sizeof(__pyx_k_6), 0, 0, 1, 1},
+  {&__pyx_n_s__ATTR, __pyx_k__ATTR, sizeof(__pyx_k__ATTR), 0, 0, 1, 1},
+  {&__pyx_n_s__AttrID, __pyx_k__AttrID, sizeof(__pyx_k__AttrID), 0, 0, 1, 1},
+  {&__pyx_n_s__BADID, __pyx_k__BADID, sizeof(__pyx_k__BADID), 0, 0, 1, 1},
+  {&__pyx_n_s__DATASET, __pyx_k__DATASET, sizeof(__pyx_k__DATASET), 0, 0, 1, 1},
+  {&__pyx_n_s__DATASPACE, __pyx_k__DATASPACE, sizeof(__pyx_k__DATASPACE), 0, 0, 1, 1},
+  {&__pyx_n_s__DATATYPE, __pyx_k__DATATYPE, sizeof(__pyx_k__DATATYPE), 0, 0, 1, 1},
+  {&__pyx_n_s__DatasetID, __pyx_k__DatasetID, sizeof(__pyx_k__DatasetID), 0, 0, 1, 1},
+  {&__pyx_n_s__Exception, __pyx_k__Exception, sizeof(__pyx_k__Exception), 0, 0, 1, 1},
+  {&__pyx_n_s__FILE, __pyx_k__FILE, sizeof(__pyx_k__FILE), 0, 0, 1, 1},
+  {&__pyx_n_s__FileID, __pyx_k__FileID, sizeof(__pyx_k__FileID), 0, 0, 1, 1},
+  {&__pyx_n_s__GENPROP_CLS, __pyx_k__GENPROP_CLS, sizeof(__pyx_k__GENPROP_CLS), 0, 0, 1, 1},
+  {&__pyx_n_s__GENPROP_LST, __pyx_k__GENPROP_LST, sizeof(__pyx_k__GENPROP_LST), 0, 0, 1, 1},
+  {&__pyx_n_s__GROUP, __pyx_k__GROUP, sizeof(__pyx_k__GROUP), 0, 0, 1, 1},
+  {&__pyx_n_s__GroupID, __pyx_k__GroupID, sizeof(__pyx_k__GroupID), 0, 0, 1, 1},
+  {&__pyx_n_s__REFERENCE, __pyx_k__REFERENCE, sizeof(__pyx_k__REFERENCE), 0, 0, 1, 1},
+  {&__pyx_n_s__ValueError, __pyx_k__ValueError, sizeof(__pyx_k__ValueError), 0, 0, 1, 1},
+  {&__pyx_n_s____main__, __pyx_k____main__, sizeof(__pyx_k____main__), 0, 0, 1, 1},
+  {&__pyx_n_s____test__, __pyx_k____test__, sizeof(__pyx_k____test__), 0, 0, 1, 1},
+  {&__pyx_n_s__dec_ref, __pyx_k__dec_ref, sizeof(__pyx_k__dec_ref), 0, 0, 1, 1},
+  {&__pyx_n_s__fid, __pyx_k__fid, sizeof(__pyx_k__fid), 0, 0, 1, 1},
+  {&__pyx_n_s__get_file_id, __pyx_k__get_file_id, sizeof(__pyx_k__get_file_id), 0, 0, 1, 1},
+  {&__pyx_n_s__get_name, __pyx_k__get_name, sizeof(__pyx_k__get_name), 0, 0, 1, 1},
+  {&__pyx_n_s__get_ref, __pyx_k__get_ref, sizeof(__pyx_k__get_ref), 0, 0, 1, 1},
+  {&__pyx_n_s__get_type, __pyx_k__get_type, sizeof(__pyx_k__get_type), 0, 0, 1, 1},
+  {&__pyx_n_s__h5a, __pyx_k__h5a, sizeof(__pyx_k__h5a), 0, 0, 1, 1},
+  {&__pyx_n_s__h5d, __pyx_k__h5d, sizeof(__pyx_k__h5d), 0, 0, 1, 1},
+  {&__pyx_n_s__h5f, __pyx_k__h5f, sizeof(__pyx_k__h5f), 0, 0, 1, 1},
+  {&__pyx_n_s__h5g, __pyx_k__h5g, sizeof(__pyx_k__h5g), 0, 0, 1, 1},
+  {&__pyx_n_s__h5p, __pyx_k__h5p, sizeof(__pyx_k__h5p), 0, 0, 1, 1},
+  {&__pyx_n_s__h5t, __pyx_k__h5t, sizeof(__pyx_k__h5t), 0, 0, 1, 1},
+  {&__pyx_n_s__inc_ref, __pyx_k__inc_ref, sizeof(__pyx_k__inc_ref), 0, 0, 1, 1},
+  {&__pyx_n_s__name, __pyx_k__name, sizeof(__pyx_k__name), 0, 0, 1, 1},
+  {&__pyx_n_s__namelen, __pyx_k__namelen, sizeof(__pyx_k__namelen), 0, 0, 1, 1},
+  {&__pyx_n_s__obj, __pyx_k__obj, sizeof(__pyx_k__obj), 0, 0, 1, 1},
+  {&__pyx_n_s__open, __pyx_k__open, sizeof(__pyx_k__open), 0, 0, 1, 1},
+  {&__pyx_n_s__propwrap, __pyx_k__propwrap, sizeof(__pyx_k__propwrap), 0, 0, 1, 1},
+  {&__pyx_n_s__pystring, __pyx_k__pystring, sizeof(__pyx_k__pystring), 0, 0, 1, 1},
+  {&__pyx_n_s__typewrap, __pyx_k__typewrap, sizeof(__pyx_k__typewrap), 0, 0, 1, 1},
+  {0, 0, 0, 0, 0, 0, 0}
+};
+static int __Pyx_InitCachedBuiltins(void) {
+  __pyx_builtin_ValueError = __Pyx_GetName(__pyx_b, __pyx_n_s__ValueError); if (!__pyx_builtin_ValueError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_builtin_Exception = __Pyx_GetName(__pyx_b, __pyx_n_s__Exception); if (!__pyx_builtin_Exception) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  return 0;
+  __pyx_L1_error:;
+  return -1;
+}
+
+static int __Pyx_InitCachedConstants(void) {
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0);
+
+  /* "h5py/h5i.pyx":59
+ * 
+ * 
+ * def get_type(ObjectID obj not None):             # <<<<<<<<<<<<<<
+ *     """ (ObjectID obj) => INT type_code
+ * 
+ */
+  __pyx_k_tuple_3 = PyTuple_Pack(1, ((PyObject *)__pyx_n_s__obj)); if (unlikely(!__pyx_k_tuple_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_3);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_3));
+  __pyx_k_codeobj_4 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_3, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_5, __pyx_n_s__get_type, 59, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5i.pyx":69
+ * 
+ * 
+ * def get_name(ObjectID obj not None):             # <<<<<<<<<<<<<<
+ *     """ (ObjectID obj) => STRING name, or None
+ * 
+ */
+  __pyx_k_tuple_7 = PyTuple_Pack(4, ((PyObject *)__pyx_n_s__obj), ((PyObject *)__pyx_n_s__namelen), ((PyObject *)__pyx_n_s__name), ((PyObject *)__pyx_n_s__pystring)); if (unlikely(!__pyx_k_tuple_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_7);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_7));
+  __pyx_k_codeobj_8 = (PyObject*)__Pyx_PyCode_New(1, 0, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_7, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_5, __pyx_n_s__get_name, 69, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5i.pyx":101
+ * 
+ * 
+ * def get_file_id(ObjectID obj not None):             # <<<<<<<<<<<<<<
+ *     """ (ObjectID obj) => FileID
+ * 
+ */
+  __pyx_k_tuple_9 = PyTuple_Pack(3, ((PyObject *)__pyx_n_s__obj), ((PyObject *)__pyx_n_s__h5f), ((PyObject *)__pyx_n_s__fid)); if (unlikely(!__pyx_k_tuple_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_9);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_9));
+  __pyx_k_codeobj_10 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_9, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_5, __pyx_n_s__get_file_id, 101, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5i.pyx":114
+ * 
+ * 
+ * def inc_ref(ObjectID obj not None):             # <<<<<<<<<<<<<<
+ *     """ (ObjectID obj)
+ * 
+ */
+  __pyx_k_tuple_11 = PyTuple_Pack(1, ((PyObject *)__pyx_n_s__obj)); if (unlikely(!__pyx_k_tuple_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_11);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_11));
+  __pyx_k_codeobj_12 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_11, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_5, __pyx_n_s__inc_ref, 114, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5i.pyx":126
+ * 
+ * 
+ * def get_ref(ObjectID obj not None):             # <<<<<<<<<<<<<<
+ *     """ (ObjectID obj) => INT
+ * 
+ */
+  __pyx_k_tuple_13 = PyTuple_Pack(1, ((PyObject *)__pyx_n_s__obj)); if (unlikely(!__pyx_k_tuple_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_13);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_13));
+  __pyx_k_codeobj_14 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_5, __pyx_n_s__get_ref, 126, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5i.pyx":134
+ * 
+ * 
+ * def dec_ref(ObjectID obj not None):             # <<<<<<<<<<<<<<
+ *     """ (ObjectID obj)
+ * 
+ */
+  __pyx_k_tuple_15 = PyTuple_Pack(1, ((PyObject *)__pyx_n_s__obj)); if (unlikely(!__pyx_k_tuple_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 134; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_15);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_15));
+  __pyx_k_codeobj_16 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_15, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_5, __pyx_n_s__dec_ref, 134, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 134; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_RefNannyFinishContext();
+  return 0;
+  __pyx_L1_error:;
+  __Pyx_RefNannyFinishContext();
+  return -1;
+}
+
+static int __Pyx_InitGlobals(void) {
+  if (__Pyx_InitStrings(__pyx_string_tab) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  return 0;
+  __pyx_L1_error:;
+  return -1;
+}
+
+#if PY_MAJOR_VERSION < 3
+PyMODINIT_FUNC inith5i(void); /*proto*/
+PyMODINIT_FUNC inith5i(void)
+#else
+PyMODINIT_FUNC PyInit_h5i(void); /*proto*/
+PyMODINIT_FUNC PyInit_h5i(void)
+#endif
+{
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  __Pyx_RefNannyDeclarations
+  #if CYTHON_REFNANNY
+  __Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny");
+  if (!__Pyx_RefNanny) {
+      PyErr_Clear();
+      __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny");
+      if (!__Pyx_RefNanny)
+          Py_FatalError("failed to import 'refnanny' module");
+  }
+  #endif
+  __Pyx_RefNannySetupContext("PyMODINIT_FUNC PyInit_h5i(void)", 0);
+  if ( __Pyx_check_binary_version() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #ifdef __Pyx_CyFunction_USED
+  if (__Pyx_CyFunction_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #endif
+  #ifdef __Pyx_FusedFunction_USED
+  if (__pyx_FusedFunction_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #endif
+  #ifdef __Pyx_Generator_USED
+  if (__pyx_Generator_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #endif
+  /*--- Library function declarations ---*/
+  /*--- Threads initialization code ---*/
+  #if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS
+  #ifdef WITH_THREAD /* Python build with threading support? */
+  PyEval_InitThreads();
+  #endif
+  #endif
+  /*--- Module creation code ---*/
+  #if PY_MAJOR_VERSION < 3
+  __pyx_m = Py_InitModule4(__Pyx_NAMESTR("h5i"), __pyx_methods, __Pyx_DOCSTR(__pyx_k_2), 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m);
+  #else
+  __pyx_m = PyModule_Create(&__pyx_moduledef);
+  #endif
+  if (unlikely(!__pyx_m)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #if PY_MAJOR_VERSION >= 3
+  {
+    PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (!PyDict_GetItemString(modules, "h5py.h5i")) {
+      if (unlikely(PyDict_SetItemString(modules, "h5py.h5i", __pyx_m) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    }
+  }
+  #endif
+  __pyx_b = PyImport_AddModule(__Pyx_NAMESTR(__Pyx_BUILTIN_MODULE_NAME)); if (unlikely(!__pyx_b)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #if CYTHON_COMPILING_IN_PYPY
+  Py_INCREF(__pyx_b);
+  #endif
+  if (__Pyx_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  /*--- Initialize various global constants etc. ---*/
+  if (unlikely(__Pyx_InitGlobals() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__pyx_module_is_main_h5py__h5i) {
+    if (__Pyx_SetAttrString(__pyx_m, "__name__", __pyx_n_s____main__) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  }
+  /*--- Builtin init code ---*/
+  if (unlikely(__Pyx_InitCachedBuiltins() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  /*--- Constants init code ---*/
+  if (unlikely(__Pyx_InitCachedConstants() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  /*--- Global init code ---*/
+  /*--- Variable export code ---*/
+  /*--- Function export code ---*/
+  if (__Pyx_ExportFunction("wrap_identifier", (void (*)(void))__pyx_f_4h5py_3h5i_wrap_identifier, "struct __pyx_obj_4h5py_8_objects_ObjectID *(hid_t, int __pyx_skip_dispatch)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  /*--- Type init code ---*/
+  /*--- Type import code ---*/
+  __pyx_ptype_4h5py_8_objects_ObjectID = __Pyx_ImportType("h5py._objects", "ObjectID", sizeof(struct __pyx_obj_4h5py_8_objects_ObjectID), 1); if (unlikely(!__pyx_ptype_4h5py_8_objects_ObjectID)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  /*--- Variable import code ---*/
+  /*--- Function import code ---*/
+  __pyx_t_1 = __Pyx_ImportModule("h5py.defs"); if (!__pyx_t_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Iget_type", (void (**)(void))&__pyx_f_4h5py_4defs_H5Iget_type, "H5I_type_t (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Iget_name", (void (**)(void))&__pyx_f_4h5py_4defs_H5Iget_name, "Py_ssize_t (hid_t, char *, size_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Iget_file_id", (void (**)(void))&__pyx_f_4h5py_4defs_H5Iget_file_id, "hid_t (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Idec_ref", (void (**)(void))&__pyx_f_4h5py_4defs_H5Idec_ref, "int (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Iget_ref", (void (**)(void))&__pyx_f_4h5py_4defs_H5Iget_ref, "int (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Iinc_ref", (void (**)(void))&__pyx_f_4h5py_4defs_H5Iinc_ref, "int (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  Py_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  /*--- Execution code ---*/
+
+  /* "h5py/h5i.pyx":16
+ * # === Public constants and data structures ====================================
+ * 
+ * BADID       = H5I_BADID             # <<<<<<<<<<<<<<
+ * FILE        = H5I_FILE
+ * GROUP       = H5I_GROUP
+ */
+  __pyx_t_2 = PyInt_FromLong(H5I_BADID); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__BADID, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/h5i.pyx":17
+ * 
+ * BADID       = H5I_BADID
+ * FILE        = H5I_FILE             # <<<<<<<<<<<<<<
+ * GROUP       = H5I_GROUP
+ * DATASPACE   = H5I_DATASPACE
+ */
+  __pyx_t_2 = PyInt_FromLong(H5I_FILE); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__FILE, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/h5i.pyx":18
+ * BADID       = H5I_BADID
+ * FILE        = H5I_FILE
+ * GROUP       = H5I_GROUP             # <<<<<<<<<<<<<<
+ * DATASPACE   = H5I_DATASPACE
+ * DATASET     = H5I_DATASET
+ */
+  __pyx_t_2 = PyInt_FromLong(H5I_GROUP); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__GROUP, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/h5i.pyx":19
+ * FILE        = H5I_FILE
+ * GROUP       = H5I_GROUP
+ * DATASPACE   = H5I_DATASPACE             # <<<<<<<<<<<<<<
+ * DATASET     = H5I_DATASET
+ * ATTR        = H5I_ATTR
+ */
+  __pyx_t_2 = PyInt_FromLong(H5I_DATASPACE); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__DATASPACE, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/h5i.pyx":20
+ * GROUP       = H5I_GROUP
+ * DATASPACE   = H5I_DATASPACE
+ * DATASET     = H5I_DATASET             # <<<<<<<<<<<<<<
+ * ATTR        = H5I_ATTR
+ * REFERENCE   = H5I_REFERENCE
+ */
+  __pyx_t_2 = PyInt_FromLong(H5I_DATASET); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__DATASET, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/h5i.pyx":21
+ * DATASPACE   = H5I_DATASPACE
+ * DATASET     = H5I_DATASET
+ * ATTR        = H5I_ATTR             # <<<<<<<<<<<<<<
+ * REFERENCE   = H5I_REFERENCE
+ * GENPROP_CLS = H5I_GENPROP_CLS
+ */
+  __pyx_t_2 = PyInt_FromLong(H5I_ATTR); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ATTR, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/h5i.pyx":22
+ * DATASET     = H5I_DATASET
+ * ATTR        = H5I_ATTR
+ * REFERENCE   = H5I_REFERENCE             # <<<<<<<<<<<<<<
+ * GENPROP_CLS = H5I_GENPROP_CLS
+ * GENPROP_LST = H5I_GENPROP_LST
+ */
+  __pyx_t_2 = PyInt_FromLong(H5I_REFERENCE); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__REFERENCE, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/h5i.pyx":23
+ * ATTR        = H5I_ATTR
+ * REFERENCE   = H5I_REFERENCE
+ * GENPROP_CLS = H5I_GENPROP_CLS             # <<<<<<<<<<<<<<
+ * GENPROP_LST = H5I_GENPROP_LST
+ * DATATYPE    = H5I_DATATYPE
+ */
+  __pyx_t_2 = PyInt_FromLong(H5I_GENPROP_CLS); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__GENPROP_CLS, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/h5i.pyx":24
+ * REFERENCE   = H5I_REFERENCE
+ * GENPROP_CLS = H5I_GENPROP_CLS
+ * GENPROP_LST = H5I_GENPROP_LST             # <<<<<<<<<<<<<<
+ * DATATYPE    = H5I_DATATYPE
+ * 
+ */
+  __pyx_t_2 = PyInt_FromLong(H5I_GENPROP_LST); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__GENPROP_LST, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/h5i.pyx":25
+ * GENPROP_CLS = H5I_GENPROP_CLS
+ * GENPROP_LST = H5I_GENPROP_LST
+ * DATATYPE    = H5I_DATATYPE             # <<<<<<<<<<<<<<
+ * 
+ * cpdef ObjectID wrap_identifier(hid_t ident):
+ */
+  __pyx_t_2 = PyInt_FromLong(H5I_DATATYPE); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__DATATYPE, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/h5i.pyx":59
+ * 
+ * 
+ * def get_type(ObjectID obj not None):             # <<<<<<<<<<<<<<
+ *     """ (ObjectID obj) => INT type_code
+ * 
+ */
+  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_4h5py_3h5i_3get_type, NULL, __pyx_n_s_6); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__get_type, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/h5i.pyx":69
+ * 
+ * 
+ * def get_name(ObjectID obj not None):             # <<<<<<<<<<<<<<
+ *     """ (ObjectID obj) => STRING name, or None
+ * 
+ */
+  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_4h5py_3h5i_5get_name, NULL, __pyx_n_s_6); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__get_name, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/h5i.pyx":101
+ * 
+ * 
+ * def get_file_id(ObjectID obj not None):             # <<<<<<<<<<<<<<
+ *     """ (ObjectID obj) => FileID
+ * 
+ */
+  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_4h5py_3h5i_7get_file_id, NULL, __pyx_n_s_6); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__get_file_id, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/h5i.pyx":114
+ * 
+ * 
+ * def inc_ref(ObjectID obj not None):             # <<<<<<<<<<<<<<
+ *     """ (ObjectID obj)
+ * 
+ */
+  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_4h5py_3h5i_9inc_ref, NULL, __pyx_n_s_6); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__inc_ref, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/h5i.pyx":126
+ * 
+ * 
+ * def get_ref(ObjectID obj not None):             # <<<<<<<<<<<<<<
+ *     """ (ObjectID obj) => INT
+ * 
+ */
+  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_4h5py_3h5i_11get_ref, NULL, __pyx_n_s_6); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__get_ref, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/h5i.pyx":134
+ * 
+ * 
+ * def dec_ref(ObjectID obj not None):             # <<<<<<<<<<<<<<
+ *     """ (ObjectID obj)
+ * 
+ */
+  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_4h5py_3h5i_13dec_ref, NULL, __pyx_n_s_6); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 134; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__dec_ref, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 134; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/h5i.pyx":1
+ * # This file is part of h5py, a Python interface to the HDF5 library.             # <<<<<<<<<<<<<<
+ * #
+ * # http://www.h5py.org
+ */
+  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s____test__, ((PyObject *)__pyx_t_2)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  if (__pyx_m) {
+    __Pyx_AddTraceback("init h5py.h5i", __pyx_clineno, __pyx_lineno, __pyx_filename);
+    Py_DECREF(__pyx_m); __pyx_m = 0;
+  } else if (!PyErr_Occurred()) {
+    PyErr_SetString(PyExc_ImportError, "init h5py.h5i");
+  }
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  #if PY_MAJOR_VERSION < 3
+  return;
+  #else
+  return __pyx_m;
+  #endif
+}
+
+/* Runtime support code */
+#if CYTHON_REFNANNY
+static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) {
+    PyObject *m = NULL, *p = NULL;
+    void *r = NULL;
+    m = PyImport_ImportModule((char *)modname);
+    if (!m) goto end;
+    p = PyObject_GetAttrString(m, (char *)"RefNannyAPI");
+    if (!p) goto end;
+    r = PyLong_AsVoidPtr(p);
+end:
+    Py_XDECREF(p);
+    Py_XDECREF(m);
+    return (__Pyx_RefNannyAPIStruct *)r;
+}
+#endif /* CYTHON_REFNANNY */
+
+static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name) {
+    PyObject *result;
+    result = PyObject_GetAttr(dict, name);
+    if (!result) {
+        if (dict != __pyx_b) {
+            PyErr_Clear();
+            result = PyObject_GetAttr(__pyx_b, name);
+        }
+        if (!result) {
+            PyErr_SetObject(PyExc_NameError, name);
+        }
+    }
+    return result;
+}
+
+static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) {
+    if (unlikely(!type)) {
+        PyErr_Format(PyExc_SystemError, "Missing type object");
+        return 0;
+    }
+    if (likely(PyObject_TypeCheck(obj, type)))
+        return 1;
+    PyErr_Format(PyExc_TypeError, "Cannot convert %.200s to %.200s",
+                 Py_TYPE(obj)->tp_name, type->tp_name);
+    return 0;
+}
+
+static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb) {
+#if CYTHON_COMPILING_IN_CPYTHON
+    PyObject *tmp_type, *tmp_value, *tmp_tb;
+    PyThreadState *tstate = PyThreadState_GET();
+    tmp_type = tstate->curexc_type;
+    tmp_value = tstate->curexc_value;
+    tmp_tb = tstate->curexc_traceback;
+    tstate->curexc_type = type;
+    tstate->curexc_value = value;
+    tstate->curexc_traceback = tb;
+    Py_XDECREF(tmp_type);
+    Py_XDECREF(tmp_value);
+    Py_XDECREF(tmp_tb);
+#else
+    PyErr_Restore(type, value, tb);
+#endif
+}
+static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb) {
+#if CYTHON_COMPILING_IN_CPYTHON
+    PyThreadState *tstate = PyThreadState_GET();
+    *type = tstate->curexc_type;
+    *value = tstate->curexc_value;
+    *tb = tstate->curexc_traceback;
+    tstate->curexc_type = 0;
+    tstate->curexc_value = 0;
+    tstate->curexc_traceback = 0;
+#else
+    PyErr_Fetch(type, value, tb);
+#endif
+}
+
+#if PY_MAJOR_VERSION < 3
+static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb,
+                        CYTHON_UNUSED PyObject *cause) {
+    Py_XINCREF(type);
+    if (!value || value == Py_None)
+        value = NULL;
+    else
+        Py_INCREF(value);
+    if (!tb || tb == Py_None)
+        tb = NULL;
+    else {
+        Py_INCREF(tb);
+        if (!PyTraceBack_Check(tb)) {
+            PyErr_SetString(PyExc_TypeError,
+                "raise: arg 3 must be a traceback or None");
+            goto raise_error;
+        }
+    }
+    #if PY_VERSION_HEX < 0x02050000
+    if (PyClass_Check(type)) {
+    #else
+    if (PyType_Check(type)) {
+    #endif
+#if CYTHON_COMPILING_IN_PYPY
+        if (!value) {
+            Py_INCREF(Py_None);
+            value = Py_None;
+        }
+#endif
+        PyErr_NormalizeException(&type, &value, &tb);
+    } else {
+        if (value) {
+            PyErr_SetString(PyExc_TypeError,
+                "instance exception may not have a separate value");
+            goto raise_error;
+        }
+        value = type;
+        #if PY_VERSION_HEX < 0x02050000
+            if (PyInstance_Check(type)) {
+                type = (PyObject*) ((PyInstanceObject*)type)->in_class;
+                Py_INCREF(type);
+            }
+            else {
+                type = 0;
+                PyErr_SetString(PyExc_TypeError,
+                    "raise: exception must be an old-style class or instance");
+                goto raise_error;
+            }
+        #else
+            type = (PyObject*) Py_TYPE(type);
+            Py_INCREF(type);
+            if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) {
+                PyErr_SetString(PyExc_TypeError,
+                    "raise: exception class must be a subclass of BaseException");
+                goto raise_error;
+            }
+        #endif
+    }
+    __Pyx_ErrRestore(type, value, tb);
+    return;
+raise_error:
+    Py_XDECREF(value);
+    Py_XDECREF(type);
+    Py_XDECREF(tb);
+    return;
+}
+#else /* Python 3+ */
+static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) {
+    PyObject* owned_instance = NULL;
+    if (tb == Py_None) {
+        tb = 0;
+    } else if (tb && !PyTraceBack_Check(tb)) {
+        PyErr_SetString(PyExc_TypeError,
+            "raise: arg 3 must be a traceback or None");
+        goto bad;
+    }
+    if (value == Py_None)
+        value = 0;
+    if (PyExceptionInstance_Check(type)) {
+        if (value) {
+            PyErr_SetString(PyExc_TypeError,
+                "instance exception may not have a separate value");
+            goto bad;
+        }
+        value = type;
+        type = (PyObject*) Py_TYPE(value);
+    } else if (PyExceptionClass_Check(type)) {
+        PyObject *args;
+        if (!value)
+            args = PyTuple_New(0);
+        else if (PyTuple_Check(value)) {
+            Py_INCREF(value);
+            args = value;
+        }
+        else
+            args = PyTuple_Pack(1, value);
+        if (!args)
+            goto bad;
+        owned_instance = PyEval_CallObject(type, args);
+        Py_DECREF(args);
+        if (!owned_instance)
+            goto bad;
+        value = owned_instance;
+        if (!PyExceptionInstance_Check(value)) {
+            PyErr_Format(PyExc_TypeError,
+                         "calling %R should have returned an instance of "
+                         "BaseException, not %R",
+                         type, Py_TYPE(value));
+            goto bad;
+        }
+    } else {
+        PyErr_SetString(PyExc_TypeError,
+            "raise: exception class must be a subclass of BaseException");
+        goto bad;
+    }
+    if (cause && cause != Py_None) {
+        PyObject *fixed_cause;
+        if (PyExceptionClass_Check(cause)) {
+            fixed_cause = PyObject_CallObject(cause, NULL);
+            if (fixed_cause == NULL)
+                goto bad;
+        }
+        else if (PyExceptionInstance_Check(cause)) {
+            fixed_cause = cause;
+            Py_INCREF(fixed_cause);
+        }
+        else {
+            PyErr_SetString(PyExc_TypeError,
+                            "exception causes must derive from "
+                            "BaseException");
+            goto bad;
+        }
+        PyException_SetCause(value, fixed_cause);
+    }
+    PyErr_SetObject(type, value);
+    if (tb) {
+        PyThreadState *tstate = PyThreadState_GET();
+        PyObject* tmp_tb = tstate->curexc_traceback;
+        if (tb != tmp_tb) {
+            Py_INCREF(tb);
+            tstate->curexc_traceback = tb;
+            Py_XDECREF(tmp_tb);
+        }
+    }
+bad:
+    Py_XDECREF(owned_instance);
+    return;
+}
+#endif
+
+static int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, int none_allowed,
+    const char *name, int exact)
+{
+    if (!type) {
+        PyErr_Format(PyExc_SystemError, "Missing type object");
+        return 0;
+    }
+    if (none_allowed && obj == Py_None) return 1;
+    else if (exact) {
+        if (Py_TYPE(obj) == type) return 1;
+    }
+    else {
+        if (PyObject_TypeCheck(obj, type)) return 1;
+    }
+    PyErr_Format(PyExc_TypeError,
+        "Argument '%s' has incorrect type (expected %s, got %s)",
+        name, type->tp_name, Py_TYPE(obj)->tp_name);
+    return 0;
+}
+
+static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) {
+    PyObject *local_type, *local_value, *local_tb;
+#if CYTHON_COMPILING_IN_CPYTHON
+    PyObject *tmp_type, *tmp_value, *tmp_tb;
+    PyThreadState *tstate = PyThreadState_GET();
+    local_type = tstate->curexc_type;
+    local_value = tstate->curexc_value;
+    local_tb = tstate->curexc_traceback;
+    tstate->curexc_type = 0;
+    tstate->curexc_value = 0;
+    tstate->curexc_traceback = 0;
+#else
+    PyErr_Fetch(&local_type, &local_value, &local_tb);
+#endif
+    PyErr_NormalizeException(&local_type, &local_value, &local_tb);
+#if CYTHON_COMPILING_IN_CPYTHON
+    if (unlikely(tstate->curexc_type))
+#else
+    if (unlikely(PyErr_Occurred()))
+#endif
+        goto bad;
+    #if PY_MAJOR_VERSION >= 3
+    if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0))
+        goto bad;
+    #endif
+    Py_INCREF(local_type);
+    Py_INCREF(local_value);
+    Py_INCREF(local_tb);
+    *type = local_type;
+    *value = local_value;
+    *tb = local_tb;
+#if CYTHON_COMPILING_IN_CPYTHON
+    tmp_type = tstate->exc_type;
+    tmp_value = tstate->exc_value;
+    tmp_tb = tstate->exc_traceback;
+    tstate->exc_type = local_type;
+    tstate->exc_value = local_value;
+    tstate->exc_traceback = local_tb;
+    /* Make sure tstate is in a consistent state when we XDECREF
+       these objects (DECREF may run arbitrary code). */
+    Py_XDECREF(tmp_type);
+    Py_XDECREF(tmp_value);
+    Py_XDECREF(tmp_tb);
+#else
+    PyErr_SetExcInfo(local_type, local_value, local_tb);
+#endif
+    return 0;
+bad:
+    *type = 0;
+    *value = 0;
+    *tb = 0;
+    Py_XDECREF(local_type);
+    Py_XDECREF(local_value);
+    Py_XDECREF(local_tb);
+    return -1;
+}
+
+static CYTHON_INLINE void __Pyx_ExceptionSave(PyObject **type, PyObject **value, PyObject **tb) {
+#if CYTHON_COMPILING_IN_CPYTHON
+    PyThreadState *tstate = PyThreadState_GET();
+    *type = tstate->exc_type;
+    *value = tstate->exc_value;
+    *tb = tstate->exc_traceback;
+    Py_XINCREF(*type);
+    Py_XINCREF(*value);
+    Py_XINCREF(*tb);
+#else
+    PyErr_GetExcInfo(type, value, tb);
+#endif
+}
+static void __Pyx_ExceptionReset(PyObject *type, PyObject *value, PyObject *tb) {
+#if CYTHON_COMPILING_IN_CPYTHON
+    PyObject *tmp_type, *tmp_value, *tmp_tb;
+    PyThreadState *tstate = PyThreadState_GET();
+    tmp_type = tstate->exc_type;
+    tmp_value = tstate->exc_value;
+    tmp_tb = tstate->exc_traceback;
+    tstate->exc_type = type;
+    tstate->exc_value = value;
+    tstate->exc_traceback = tb;
+    Py_XDECREF(tmp_type);
+    Py_XDECREF(tmp_value);
+    Py_XDECREF(tmp_tb);
+#else
+    PyErr_SetExcInfo(type, value, tb);
+#endif
+}
+
+static CYTHON_INLINE hid_t __Pyx_PyInt_from_py_hid_t(PyObject* x) {
+    const hid_t neg_one = (hid_t)-1, const_zero = (hid_t)0;
+    const int is_unsigned = const_zero < neg_one;
+    if (sizeof(hid_t) == sizeof(char)) {
+        if (is_unsigned)
+            return (hid_t)__Pyx_PyInt_AsUnsignedChar(x);
+        else
+            return (hid_t)__Pyx_PyInt_AsSignedChar(x);
+    } else if (sizeof(hid_t) == sizeof(short)) {
+        if (is_unsigned)
+            return (hid_t)__Pyx_PyInt_AsUnsignedShort(x);
+        else
+            return (hid_t)__Pyx_PyInt_AsSignedShort(x);
+    } else if (sizeof(hid_t) == sizeof(int)) {
+        if (is_unsigned)
+            return (hid_t)__Pyx_PyInt_AsUnsignedInt(x);
+        else
+            return (hid_t)__Pyx_PyInt_AsSignedInt(x);
+    } else if (sizeof(hid_t) == sizeof(long)) {
+        if (is_unsigned)
+            return (hid_t)__Pyx_PyInt_AsUnsignedLong(x);
+        else
+            return (hid_t)__Pyx_PyInt_AsSignedLong(x);
+    } else if (sizeof(hid_t) == sizeof(PY_LONG_LONG)) {
+        if (is_unsigned)
+            return (hid_t)__Pyx_PyInt_AsUnsignedLongLong(x);
+        else
+            return (hid_t)__Pyx_PyInt_AsSignedLongLong(x);
+    }  else {
+        #if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
+        PyErr_SetString(PyExc_RuntimeError,
+                        "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
+        #else
+        hid_t val;
+        PyObject *v = __Pyx_PyNumber_Int(x);
+        #if PY_VERSION_HEX < 0x03000000
+        if (likely(v) && !PyLong_Check(v)) {
+            PyObject *tmp = v;
+            v = PyNumber_Long(tmp);
+            Py_DECREF(tmp);
+        }
+        #endif
+        if (likely(v)) {
+            int one = 1; int is_little = (int)*(unsigned char *)&one;
+            unsigned char *bytes = (unsigned char *)&val;
+            int ret = _PyLong_AsByteArray((PyLongObject *)v,
+                                          bytes, sizeof(val),
+                                          is_little, !is_unsigned);
+            Py_DECREF(v);
+            if (likely(!ret))
+                return val;
+        }
+        #endif
+        return (hid_t)-1;
+    }
+}
+
+static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) {
+    PyObject *empty_list = 0;
+    PyObject *module = 0;
+    PyObject *global_dict = 0;
+    PyObject *empty_dict = 0;
+    PyObject *list;
+    #if PY_VERSION_HEX < 0x03030000
+    PyObject *py_import = 0;
+    py_import = __Pyx_GetAttrString(__pyx_b, "__import__");
+    if (!py_import)
+        goto bad;
+    #endif
+    if (from_list)
+        list = from_list;
+    else {
+        empty_list = PyList_New(0);
+        if (!empty_list)
+            goto bad;
+        list = empty_list;
+    }
+    global_dict = PyModule_GetDict(__pyx_m);
+    if (!global_dict)
+        goto bad;
+    empty_dict = PyDict_New();
+    if (!empty_dict)
+        goto bad;
+    #if PY_VERSION_HEX >= 0x02050000
+    {
+        #if PY_MAJOR_VERSION >= 3
+        if (level == -1) {
+            if (strchr(__Pyx_MODULE_NAME, '.')) {
+                #if PY_VERSION_HEX < 0x03030000
+                PyObject *py_level = PyInt_FromLong(1);
+                if (!py_level)
+                    goto bad;
+                module = PyObject_CallFunctionObjArgs(py_import,
+                    name, global_dict, empty_dict, list, py_level, NULL);
+                Py_DECREF(py_level);
+                #else
+                module = PyImport_ImportModuleLevelObject(
+                    name, global_dict, empty_dict, list, 1);
+                #endif
+                if (!module) {
+                    if (!PyErr_ExceptionMatches(PyExc_ImportError))
+                        goto bad;
+                    PyErr_Clear();
+                }
+            }
+            level = 0; /* try absolute import on failure */
+        }
+        #endif
+        if (!module) {
+            #if PY_VERSION_HEX < 0x03030000
+            PyObject *py_level = PyInt_FromLong(level);
+            if (!py_level)
+                goto bad;
+            module = PyObject_CallFunctionObjArgs(py_import,
+                name, global_dict, empty_dict, list, py_level, NULL);
+            Py_DECREF(py_level);
+            #else
+            module = PyImport_ImportModuleLevelObject(
+                name, global_dict, empty_dict, list, level);
+            #endif
+        }
+    }
+    #else
+    if (level>0) {
+        PyErr_SetString(PyExc_RuntimeError, "Relative import is not supported for Python <=2.4.");
+        goto bad;
+    }
+    module = PyObject_CallFunctionObjArgs(py_import,
+        name, global_dict, empty_dict, list, NULL);
+    #endif
+bad:
+    #if PY_VERSION_HEX < 0x03030000
+    Py_XDECREF(py_import);
+    #endif
+    Py_XDECREF(empty_list);
+    Py_XDECREF(empty_dict);
+    return module;
+}
+
+static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_hid_t(hid_t val) {
+    const hid_t neg_one = (hid_t)-1, const_zero = (hid_t)0;
+    const int is_unsigned = const_zero < neg_one;
+    if ((sizeof(hid_t) == sizeof(char))  ||
+        (sizeof(hid_t) == sizeof(short))) {
+        return PyInt_FromLong((long)val);
+    } else if ((sizeof(hid_t) == sizeof(int)) ||
+               (sizeof(hid_t) == sizeof(long))) {
+        if (is_unsigned)
+            return PyLong_FromUnsignedLong((unsigned long)val);
+        else
+            return PyInt_FromLong((long)val);
+    } else if (sizeof(hid_t) == sizeof(PY_LONG_LONG)) {
+        if (is_unsigned)
+            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG)val);
+        else
+            return PyLong_FromLongLong((PY_LONG_LONG)val);
+    } else {
+        int one = 1; int little = (int)*(unsigned char *)&one;
+        unsigned char *bytes = (unsigned char *)&val;
+        return _PyLong_FromByteArray(bytes, sizeof(hid_t),
+                                     little, !is_unsigned);
+    }
+}
+
+static CYTHON_INLINE unsigned char __Pyx_PyInt_AsUnsignedChar(PyObject* x) {
+    const unsigned char neg_one = (unsigned char)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(unsigned char) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(unsigned char)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to unsigned char" :
+                    "value too large to convert to unsigned char");
+            }
+            return (unsigned char)-1;
+        }
+        return (unsigned char)val;
+    }
+    return (unsigned char)__Pyx_PyInt_AsUnsignedLong(x);
+}
+
+static CYTHON_INLINE unsigned short __Pyx_PyInt_AsUnsignedShort(PyObject* x) {
+    const unsigned short neg_one = (unsigned short)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(unsigned short) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(unsigned short)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to unsigned short" :
+                    "value too large to convert to unsigned short");
+            }
+            return (unsigned short)-1;
+        }
+        return (unsigned short)val;
+    }
+    return (unsigned short)__Pyx_PyInt_AsUnsignedLong(x);
+}
+
+static CYTHON_INLINE unsigned int __Pyx_PyInt_AsUnsignedInt(PyObject* x) {
+    const unsigned int neg_one = (unsigned int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(unsigned int) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(unsigned int)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to unsigned int" :
+                    "value too large to convert to unsigned int");
+            }
+            return (unsigned int)-1;
+        }
+        return (unsigned int)val;
+    }
+    return (unsigned int)__Pyx_PyInt_AsUnsignedLong(x);
+}
+
+static CYTHON_INLINE char __Pyx_PyInt_AsChar(PyObject* x) {
+    const char neg_one = (char)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(char) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(char)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to char" :
+                    "value too large to convert to char");
+            }
+            return (char)-1;
+        }
+        return (char)val;
+    }
+    return (char)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE short __Pyx_PyInt_AsShort(PyObject* x) {
+    const short neg_one = (short)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(short) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(short)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to short" :
+                    "value too large to convert to short");
+            }
+            return (short)-1;
+        }
+        return (short)val;
+    }
+    return (short)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE int __Pyx_PyInt_AsInt(PyObject* x) {
+    const int neg_one = (int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(int) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(int)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to int" :
+                    "value too large to convert to int");
+            }
+            return (int)-1;
+        }
+        return (int)val;
+    }
+    return (int)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE signed char __Pyx_PyInt_AsSignedChar(PyObject* x) {
+    const signed char neg_one = (signed char)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(signed char) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(signed char)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to signed char" :
+                    "value too large to convert to signed char");
+            }
+            return (signed char)-1;
+        }
+        return (signed char)val;
+    }
+    return (signed char)__Pyx_PyInt_AsSignedLong(x);
+}
+
+static CYTHON_INLINE signed short __Pyx_PyInt_AsSignedShort(PyObject* x) {
+    const signed short neg_one = (signed short)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(signed short) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(signed short)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to signed short" :
+                    "value too large to convert to signed short");
+            }
+            return (signed short)-1;
+        }
+        return (signed short)val;
+    }
+    return (signed short)__Pyx_PyInt_AsSignedLong(x);
+}
+
+static CYTHON_INLINE signed int __Pyx_PyInt_AsSignedInt(PyObject* x) {
+    const signed int neg_one = (signed int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(signed int) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(signed int)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to signed int" :
+                    "value too large to convert to signed int");
+            }
+            return (signed int)-1;
+        }
+        return (signed int)val;
+    }
+    return (signed int)__Pyx_PyInt_AsSignedLong(x);
+}
+
+static CYTHON_INLINE int __Pyx_PyInt_AsLongDouble(PyObject* x) {
+    const int neg_one = (int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(int) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(int)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to int" :
+                    "value too large to convert to int");
+            }
+            return (int)-1;
+        }
+        return (int)val;
+    }
+    return (int)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE unsigned long __Pyx_PyInt_AsUnsignedLong(PyObject* x) {
+    const unsigned long neg_one = (unsigned long)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to unsigned long");
+            return (unsigned long)-1;
+        }
+        return (unsigned long)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to unsigned long");
+                return (unsigned long)-1;
+            }
+            return (unsigned long)PyLong_AsUnsignedLong(x);
+        } else {
+            return (unsigned long)PyLong_AsLong(x);
+        }
+    } else {
+        unsigned long val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (unsigned long)-1;
+        val = __Pyx_PyInt_AsUnsignedLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE unsigned PY_LONG_LONG __Pyx_PyInt_AsUnsignedLongLong(PyObject* x) {
+    const unsigned PY_LONG_LONG neg_one = (unsigned PY_LONG_LONG)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to unsigned PY_LONG_LONG");
+            return (unsigned PY_LONG_LONG)-1;
+        }
+        return (unsigned PY_LONG_LONG)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to unsigned PY_LONG_LONG");
+                return (unsigned PY_LONG_LONG)-1;
+            }
+            return (unsigned PY_LONG_LONG)PyLong_AsUnsignedLongLong(x);
+        } else {
+            return (unsigned PY_LONG_LONG)PyLong_AsLongLong(x);
+        }
+    } else {
+        unsigned PY_LONG_LONG val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (unsigned PY_LONG_LONG)-1;
+        val = __Pyx_PyInt_AsUnsignedLongLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE long __Pyx_PyInt_AsLong(PyObject* x) {
+    const long neg_one = (long)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to long");
+            return (long)-1;
+        }
+        return (long)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to long");
+                return (long)-1;
+            }
+            return (long)PyLong_AsUnsignedLong(x);
+        } else {
+            return (long)PyLong_AsLong(x);
+        }
+    } else {
+        long val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (long)-1;
+        val = __Pyx_PyInt_AsLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE PY_LONG_LONG __Pyx_PyInt_AsLongLong(PyObject* x) {
+    const PY_LONG_LONG neg_one = (PY_LONG_LONG)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to PY_LONG_LONG");
+            return (PY_LONG_LONG)-1;
+        }
+        return (PY_LONG_LONG)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to PY_LONG_LONG");
+                return (PY_LONG_LONG)-1;
+            }
+            return (PY_LONG_LONG)PyLong_AsUnsignedLongLong(x);
+        } else {
+            return (PY_LONG_LONG)PyLong_AsLongLong(x);
+        }
+    } else {
+        PY_LONG_LONG val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (PY_LONG_LONG)-1;
+        val = __Pyx_PyInt_AsLongLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE signed long __Pyx_PyInt_AsSignedLong(PyObject* x) {
+    const signed long neg_one = (signed long)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to signed long");
+            return (signed long)-1;
+        }
+        return (signed long)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to signed long");
+                return (signed long)-1;
+            }
+            return (signed long)PyLong_AsUnsignedLong(x);
+        } else {
+            return (signed long)PyLong_AsLong(x);
+        }
+    } else {
+        signed long val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (signed long)-1;
+        val = __Pyx_PyInt_AsSignedLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE signed PY_LONG_LONG __Pyx_PyInt_AsSignedLongLong(PyObject* x) {
+    const signed PY_LONG_LONG neg_one = (signed PY_LONG_LONG)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to signed PY_LONG_LONG");
+            return (signed PY_LONG_LONG)-1;
+        }
+        return (signed PY_LONG_LONG)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to signed PY_LONG_LONG");
+                return (signed PY_LONG_LONG)-1;
+            }
+            return (signed PY_LONG_LONG)PyLong_AsUnsignedLongLong(x);
+        } else {
+            return (signed PY_LONG_LONG)PyLong_AsLongLong(x);
+        }
+    } else {
+        signed PY_LONG_LONG val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (signed PY_LONG_LONG)-1;
+        val = __Pyx_PyInt_AsSignedLongLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static int __Pyx_check_binary_version(void) {
+    char ctversion[4], rtversion[4];
+    PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION);
+    PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion());
+    if (ctversion[0] != rtversion[0] || ctversion[2] != rtversion[2]) {
+        char message[200];
+        PyOS_snprintf(message, sizeof(message),
+                      "compiletime version %s of module '%.100s' "
+                      "does not match runtime version %s",
+                      ctversion, __Pyx_MODULE_NAME, rtversion);
+        #if PY_VERSION_HEX < 0x02050000
+        return PyErr_Warn(NULL, message);
+        #else
+        return PyErr_WarnEx(NULL, message, 1);
+        #endif
+    }
+    return 0;
+}
+
+static int __Pyx_ExportFunction(const char *name, void (*f)(void), const char *sig) {
+    PyObject *d = 0;
+    PyObject *cobj = 0;
+    union {
+        void (*fp)(void);
+        void *p;
+    } tmp;
+    d = PyObject_GetAttrString(__pyx_m, (char *)"__pyx_capi__");
+    if (!d) {
+        PyErr_Clear();
+        d = PyDict_New();
+        if (!d)
+            goto bad;
+        Py_INCREF(d);
+        if (PyModule_AddObject(__pyx_m, (char *)"__pyx_capi__", d) < 0)
+            goto bad;
+    }
+    tmp.fp = f;
+#if PY_VERSION_HEX >= 0x02070000 && !(PY_MAJOR_VERSION==3&&PY_MINOR_VERSION==0)
+    cobj = PyCapsule_New(tmp.p, sig, 0);
+#else
+    cobj = PyCObject_FromVoidPtrAndDesc(tmp.p, (void *)sig, 0);
+#endif
+    if (!cobj)
+        goto bad;
+    if (PyDict_SetItemString(d, name, cobj) < 0)
+        goto bad;
+    Py_DECREF(cobj);
+    Py_DECREF(d);
+    return 0;
+bad:
+    Py_XDECREF(cobj);
+    Py_XDECREF(d);
+    return -1;
+}
+
+#ifndef __PYX_HAVE_RT_ImportModule
+#define __PYX_HAVE_RT_ImportModule
+static PyObject *__Pyx_ImportModule(const char *name) {
+    PyObject *py_name = 0;
+    PyObject *py_module = 0;
+    py_name = __Pyx_PyIdentifier_FromString(name);
+    if (!py_name)
+        goto bad;
+    py_module = PyImport_Import(py_name);
+    Py_DECREF(py_name);
+    return py_module;
+bad:
+    Py_XDECREF(py_name);
+    return 0;
+}
+#endif
+
+#ifndef __PYX_HAVE_RT_ImportType
+#define __PYX_HAVE_RT_ImportType
+static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name,
+    size_t size, int strict)
+{
+    PyObject *py_module = 0;
+    PyObject *result = 0;
+    PyObject *py_name = 0;
+    char warning[200];
+    Py_ssize_t basicsize;
+#ifdef Py_LIMITED_API
+    PyObject *py_basicsize;
+#endif
+    py_module = __Pyx_ImportModule(module_name);
+    if (!py_module)
+        goto bad;
+    py_name = __Pyx_PyIdentifier_FromString(class_name);
+    if (!py_name)
+        goto bad;
+    result = PyObject_GetAttr(py_module, py_name);
+    Py_DECREF(py_name);
+    py_name = 0;
+    Py_DECREF(py_module);
+    py_module = 0;
+    if (!result)
+        goto bad;
+    if (!PyType_Check(result)) {
+        PyErr_Format(PyExc_TypeError,
+            "%s.%s is not a type object",
+            module_name, class_name);
+        goto bad;
+    }
+#ifndef Py_LIMITED_API
+    basicsize = ((PyTypeObject *)result)->tp_basicsize;
+#else
+    py_basicsize = PyObject_GetAttrString(result, "__basicsize__");
+    if (!py_basicsize)
+        goto bad;
+    basicsize = PyLong_AsSsize_t(py_basicsize);
+    Py_DECREF(py_basicsize);
+    py_basicsize = 0;
+    if (basicsize == (Py_ssize_t)-1 && PyErr_Occurred())
+        goto bad;
+#endif
+    if (!strict && (size_t)basicsize > size) {
+        PyOS_snprintf(warning, sizeof(warning),
+            "%s.%s size changed, may indicate binary incompatibility",
+            module_name, class_name);
+        #if PY_VERSION_HEX < 0x02050000
+        if (PyErr_Warn(NULL, warning) < 0) goto bad;
+        #else
+        if (PyErr_WarnEx(NULL, warning, 0) < 0) goto bad;
+        #endif
+    }
+    else if ((size_t)basicsize != size) {
+        PyErr_Format(PyExc_ValueError,
+            "%s.%s has the wrong size, try recompiling",
+            module_name, class_name);
+        goto bad;
+    }
+    return (PyTypeObject *)result;
+bad:
+    Py_XDECREF(py_module);
+    Py_XDECREF(result);
+    return NULL;
+}
+#endif
+
+#ifndef __PYX_HAVE_RT_ImportFunction
+#define __PYX_HAVE_RT_ImportFunction
+static int __Pyx_ImportFunction(PyObject *module, const char *funcname, void (**f)(void), const char *sig) {
+    PyObject *d = 0;
+    PyObject *cobj = 0;
+    union {
+        void (*fp)(void);
+        void *p;
+    } tmp;
+    d = PyObject_GetAttrString(module, (char *)"__pyx_capi__");
+    if (!d)
+        goto bad;
+    cobj = PyDict_GetItemString(d, funcname);
+    if (!cobj) {
+        PyErr_Format(PyExc_ImportError,
+            "%s does not export expected C function %s",
+                PyModule_GetName(module), funcname);
+        goto bad;
+    }
+#if PY_VERSION_HEX >= 0x02070000 && !(PY_MAJOR_VERSION==3 && PY_MINOR_VERSION==0)
+    if (!PyCapsule_IsValid(cobj, sig)) {
+        PyErr_Format(PyExc_TypeError,
+            "C function %s.%s has wrong signature (expected %s, got %s)",
+             PyModule_GetName(module), funcname, sig, PyCapsule_GetName(cobj));
+        goto bad;
+    }
+    tmp.p = PyCapsule_GetPointer(cobj, sig);
+#else
+    {const char *desc, *s1, *s2;
+    desc = (const char *)PyCObject_GetDesc(cobj);
+    if (!desc)
+        goto bad;
+    s1 = desc; s2 = sig;
+    while (*s1 != '\0' && *s1 == *s2) { s1++; s2++; }
+    if (*s1 != *s2) {
+        PyErr_Format(PyExc_TypeError,
+            "C function %s.%s has wrong signature (expected %s, got %s)",
+             PyModule_GetName(module), funcname, sig, desc);
+        goto bad;
+    }
+    tmp.p = PyCObject_AsVoidPtr(cobj);}
+#endif
+    *f = tmp.fp;
+    if (!(*f))
+        goto bad;
+    Py_DECREF(d);
+    return 0;
+bad:
+    Py_XDECREF(d);
+    return -1;
+}
+#endif
+
+static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) {
+    int start = 0, mid = 0, end = count - 1;
+    if (end >= 0 && code_line > entries[end].code_line) {
+        return count;
+    }
+    while (start < end) {
+        mid = (start + end) / 2;
+        if (code_line < entries[mid].code_line) {
+            end = mid;
+        } else if (code_line > entries[mid].code_line) {
+             start = mid + 1;
+        } else {
+            return mid;
+        }
+    }
+    if (code_line <= entries[mid].code_line) {
+        return mid;
+    } else {
+        return mid + 1;
+    }
+}
+static PyCodeObject *__pyx_find_code_object(int code_line) {
+    PyCodeObject* code_object;
+    int pos;
+    if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) {
+        return NULL;
+    }
+    pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
+    if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) {
+        return NULL;
+    }
+    code_object = __pyx_code_cache.entries[pos].code_object;
+    Py_INCREF(code_object);
+    return code_object;
+}
+static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) {
+    int pos, i;
+    __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries;
+    if (unlikely(!code_line)) {
+        return;
+    }
+    if (unlikely(!entries)) {
+        entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry));
+        if (likely(entries)) {
+            __pyx_code_cache.entries = entries;
+            __pyx_code_cache.max_count = 64;
+            __pyx_code_cache.count = 1;
+            entries[0].code_line = code_line;
+            entries[0].code_object = code_object;
+            Py_INCREF(code_object);
+        }
+        return;
+    }
+    pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
+    if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) {
+        PyCodeObject* tmp = entries[pos].code_object;
+        entries[pos].code_object = code_object;
+        Py_DECREF(tmp);
+        return;
+    }
+    if (__pyx_code_cache.count == __pyx_code_cache.max_count) {
+        int new_max = __pyx_code_cache.max_count + 64;
+        entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc(
+            __pyx_code_cache.entries, new_max*sizeof(__Pyx_CodeObjectCacheEntry));
+        if (unlikely(!entries)) {
+            return;
+        }
+        __pyx_code_cache.entries = entries;
+        __pyx_code_cache.max_count = new_max;
+    }
+    for (i=__pyx_code_cache.count; i>pos; i--) {
+        entries[i] = entries[i-1];
+    }
+    entries[pos].code_line = code_line;
+    entries[pos].code_object = code_object;
+    __pyx_code_cache.count++;
+    Py_INCREF(code_object);
+}
+
+#include "compile.h"
+#include "frameobject.h"
+#include "traceback.h"
+static PyCodeObject* __Pyx_CreateCodeObjectForTraceback(
+            const char *funcname, int c_line,
+            int py_line, const char *filename) {
+    PyCodeObject *py_code = 0;
+    PyObject *py_srcfile = 0;
+    PyObject *py_funcname = 0;
+    #if PY_MAJOR_VERSION < 3
+    py_srcfile = PyString_FromString(filename);
+    #else
+    py_srcfile = PyUnicode_FromString(filename);
+    #endif
+    if (!py_srcfile) goto bad;
+    if (c_line) {
+        #if PY_MAJOR_VERSION < 3
+        py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
+        #else
+        py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
+        #endif
+    }
+    else {
+        #if PY_MAJOR_VERSION < 3
+        py_funcname = PyString_FromString(funcname);
+        #else
+        py_funcname = PyUnicode_FromString(funcname);
+        #endif
+    }
+    if (!py_funcname) goto bad;
+    py_code = __Pyx_PyCode_New(
+        0,            /*int argcount,*/
+        0,            /*int kwonlyargcount,*/
+        0,            /*int nlocals,*/
+        0,            /*int stacksize,*/
+        0,            /*int flags,*/
+        __pyx_empty_bytes, /*PyObject *code,*/
+        __pyx_empty_tuple, /*PyObject *consts,*/
+        __pyx_empty_tuple, /*PyObject *names,*/
+        __pyx_empty_tuple, /*PyObject *varnames,*/
+        __pyx_empty_tuple, /*PyObject *freevars,*/
+        __pyx_empty_tuple, /*PyObject *cellvars,*/
+        py_srcfile,   /*PyObject *filename,*/
+        py_funcname,  /*PyObject *name,*/
+        py_line,      /*int firstlineno,*/
+        __pyx_empty_bytes  /*PyObject *lnotab*/
+    );
+    Py_DECREF(py_srcfile);
+    Py_DECREF(py_funcname);
+    return py_code;
+bad:
+    Py_XDECREF(py_srcfile);
+    Py_XDECREF(py_funcname);
+    return NULL;
+}
+static void __Pyx_AddTraceback(const char *funcname, int c_line,
+                               int py_line, const char *filename) {
+    PyCodeObject *py_code = 0;
+    PyObject *py_globals = 0;
+    PyFrameObject *py_frame = 0;
+    py_code = __pyx_find_code_object(c_line ? c_line : py_line);
+    if (!py_code) {
+        py_code = __Pyx_CreateCodeObjectForTraceback(
+            funcname, c_line, py_line, filename);
+        if (!py_code) goto bad;
+        __pyx_insert_code_object(c_line ? c_line : py_line, py_code);
+    }
+    py_globals = PyModule_GetDict(__pyx_m);
+    if (!py_globals) goto bad;
+    py_frame = PyFrame_New(
+        PyThreadState_GET(), /*PyThreadState *tstate,*/
+        py_code,             /*PyCodeObject *code,*/
+        py_globals,          /*PyObject *globals,*/
+        0                    /*PyObject *locals*/
+    );
+    if (!py_frame) goto bad;
+    py_frame->f_lineno = py_line;
+    PyTraceBack_Here(py_frame);
+bad:
+    Py_XDECREF(py_code);
+    Py_XDECREF(py_frame);
+}
+
+static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
+    while (t->p) {
+        #if PY_MAJOR_VERSION < 3
+        if (t->is_unicode) {
+            *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL);
+        } else if (t->intern) {
+            *t->p = PyString_InternFromString(t->s);
+        } else {
+            *t->p = PyString_FromStringAndSize(t->s, t->n - 1);
+        }
+        #else  /* Python 3+ has unicode identifiers */
+        if (t->is_unicode | t->is_str) {
+            if (t->intern) {
+                *t->p = PyUnicode_InternFromString(t->s);
+            } else if (t->encoding) {
+                *t->p = PyUnicode_Decode(t->s, t->n - 1, t->encoding, NULL);
+            } else {
+                *t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1);
+            }
+        } else {
+            *t->p = PyBytes_FromStringAndSize(t->s, t->n - 1);
+        }
+        #endif
+        if (!*t->p)
+            return -1;
+        ++t;
+    }
+    return 0;
+}
+
+static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) {
+   int is_true = x == Py_True;
+   if (is_true | (x == Py_False) | (x == Py_None)) return is_true;
+   else return PyObject_IsTrue(x);
+}
+static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x) {
+  PyNumberMethods *m;
+  const char *name = NULL;
+  PyObject *res = NULL;
+#if PY_VERSION_HEX < 0x03000000
+  if (PyInt_Check(x) || PyLong_Check(x))
+#else
+  if (PyLong_Check(x))
+#endif
+    return Py_INCREF(x), x;
+  m = Py_TYPE(x)->tp_as_number;
+#if PY_VERSION_HEX < 0x03000000
+  if (m && m->nb_int) {
+    name = "int";
+    res = PyNumber_Int(x);
+  }
+  else if (m && m->nb_long) {
+    name = "long";
+    res = PyNumber_Long(x);
+  }
+#else
+  if (m && m->nb_int) {
+    name = "int";
+    res = PyNumber_Long(x);
+  }
+#endif
+  if (res) {
+#if PY_VERSION_HEX < 0x03000000
+    if (!PyInt_Check(res) && !PyLong_Check(res)) {
+#else
+    if (!PyLong_Check(res)) {
+#endif
+      PyErr_Format(PyExc_TypeError,
+                   "__%s__ returned non-%s (type %.200s)",
+                   name, name, Py_TYPE(res)->tp_name);
+      Py_DECREF(res);
+      return NULL;
+    }
+  }
+  else if (!PyErr_Occurred()) {
+    PyErr_SetString(PyExc_TypeError,
+                    "an integer is required");
+  }
+  return res;
+}
+static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
+  Py_ssize_t ival;
+  PyObject* x = PyNumber_Index(b);
+  if (!x) return -1;
+  ival = PyInt_AsSsize_t(x);
+  Py_DECREF(x);
+  return ival;
+}
+static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) {
+#if PY_VERSION_HEX < 0x02050000
+   if (ival <= LONG_MAX)
+       return PyInt_FromLong((long)ival);
+   else {
+       unsigned char *bytes = (unsigned char *) &ival;
+       int one = 1; int little = (int)*(unsigned char*)&one;
+       return _PyLong_FromByteArray(bytes, sizeof(size_t), little, 0);
+   }
+#else
+   return PyInt_FromSize_t(ival);
+#endif
+}
+static CYTHON_INLINE size_t __Pyx_PyInt_AsSize_t(PyObject* x) {
+   unsigned PY_LONG_LONG val = __Pyx_PyInt_AsUnsignedLongLong(x);
+   if (unlikely(val == (unsigned PY_LONG_LONG)-1 && PyErr_Occurred())) {
+       return (size_t)-1;
+   } else if (unlikely(val != (unsigned PY_LONG_LONG)(size_t)val)) {
+       PyErr_SetString(PyExc_OverflowError,
+                       "value too large to convert to size_t");
+       return (size_t)-1;
+   }
+   return (size_t)val;
+}
+
+
+#endif /* Py_PYTHON_H */
diff --git a/h5py/h5i.pxd b/h5py/h5i.pxd
new file mode 100644
index 0000000..b27cf0d
--- /dev/null
+++ b/h5py/h5i.pxd
@@ -0,0 +1,14 @@
+# This file is part of h5py, a Python interface to the HDF5 library.
+#
+# http://www.h5py.org
+#
+# Copyright 2008-2013 Andrew Collette and contributors
+#
+# License:  Standard 3-clause BSD; see "license.txt" for full license terms
+#           and contributor agreement.
+
+from defs cimport *
+
+from _objects cimport ObjectID
+
+cpdef ObjectID wrap_identifier(hid_t ident)
diff --git a/h5py/h5i.pyx b/h5py/h5i.pyx
new file mode 100644
index 0000000..528a86c
--- /dev/null
+++ b/h5py/h5i.pyx
@@ -0,0 +1,143 @@
+# This file is part of h5py, a Python interface to the HDF5 library.
+#
+# http://www.h5py.org
+#
+# Copyright 2008-2013 Andrew Collette and contributors
+#
+# License:  Standard 3-clause BSD; see "license.txt" for full license terms
+#           and contributor agreement.
+
+"""
+    Identifier interface for object inspection.
+"""
+
+# === Public constants and data structures ====================================
+
+BADID       = H5I_BADID
+FILE        = H5I_FILE
+GROUP       = H5I_GROUP
+DATASPACE   = H5I_DATASPACE
+DATASET     = H5I_DATASET
+ATTR        = H5I_ATTR
+REFERENCE   = H5I_REFERENCE
+GENPROP_CLS = H5I_GENPROP_CLS
+GENPROP_LST = H5I_GENPROP_LST
+DATATYPE    = H5I_DATATYPE
+
+cpdef ObjectID wrap_identifier(hid_t ident):
+
+    cdef H5I_type_t typecode
+    cdef ObjectID obj
+
+    typecode = H5Iget_type(ident)
+    if typecode == H5I_FILE:
+        import h5f
+        obj = h5f.FileID.open(ident)
+    elif typecode == H5I_DATASET:
+        import h5d
+        obj = h5d.DatasetID.open(ident)
+    elif typecode == H5I_GROUP:
+        import h5g
+        obj = h5g.GroupID.open(ident)
+    elif typecode == H5I_ATTR:
+        import h5a
+        obj = h5a.AttrID.open(ident)
+    elif typecode == H5I_DATATYPE:
+        import h5t
+        obj = h5t.typewrap(ident)
+    elif typecode == H5I_GENPROP_LST:
+        import h5p
+        obj = h5p.propwrap(ident)
+    else:
+        raise ValueError("Unrecognized type code %d" % typecode)
+
+    return obj
+
+# === Identifier API ==========================================================
+
+
+def get_type(ObjectID obj not None):
+    """ (ObjectID obj) => INT type_code
+
+        Determine the HDF5 typecode of an arbitrary HDF5 object.  The return
+        value is always one of the type constants defined in this module; if
+        the ID is invalid, BADID is returned.
+    """
+    return <int>H5Iget_type(obj.id)
+
+
+def get_name(ObjectID obj not None):
+    """ (ObjectID obj) => STRING name, or None
+
+        Determine (a) name of an HDF5 object.  Because an object has as many
+        names as there are hard links to it, this may not be unique.
+
+        If the identifier is invalid or is not associated with a name
+        (in the case of transient datatypes, dataspaces, etc), returns None.
+
+        For some reason, this does not work on dereferenced objects.
+    """
+    cdef int namelen
+    cdef char* name
+
+    try:
+        namelen = <int>H5Iget_name(obj.id, NULL, 0)
+    except Exception:
+        return None
+
+    if namelen == 0:    # 1.6.5 doesn't raise an exception
+        return None
+
+    assert namelen > 0
+    name = <char*>malloc(sizeof(char)*(namelen+1))
+    try:
+        H5Iget_name(obj.id, name, namelen+1)
+        pystring = name
+        return pystring
+    finally:
+        free(name)
+
+
+def get_file_id(ObjectID obj not None):
+    """ (ObjectID obj) => FileID
+
+        Obtain an identifier for the file in which this object resides.
+    """
+    import h5f
+    cdef hid_t fid
+    fid = H5Iget_file_id(obj.id)
+    if H5Iget_ref(fid) > 1:
+        H5Idec_ref(fid)
+    return h5f.FileID.open(fid)
+
+
+def inc_ref(ObjectID obj not None):
+    """ (ObjectID obj)
+
+        Increment the reference count for the given object.
+
+        This function is provided for debugging only.  Reference counting
+        is automatically synchronized with Python, and you can easily break
+        ObjectID instances by abusing this function.
+    """
+    H5Iinc_ref(obj.id)
+
+
+def get_ref(ObjectID obj not None):
+    """ (ObjectID obj) => INT
+
+        Retrieve the reference count for the given object.
+    """
+    return H5Iget_ref(obj.id)
+
+
+def dec_ref(ObjectID obj not None):
+    """ (ObjectID obj)
+
+        Decrement the reference count for the given object.
+
+        This function is provided for debugging only.  Reference counting
+        is automatically synchronized with Python, and you can easily break
+        ObjectID instances by abusing this function.
+    """
+    H5Idec_ref(obj.id)
diff --git a/h5py/h5l.c b/h5py/h5l.c
new file mode 100644
index 0000000..0962b0e
--- /dev/null
+++ b/h5py/h5l.c
@@ -0,0 +1,5584 @@
+/* Generated by Cython 0.18 on Mon Dec  9 16:00:33 2013 */
+
+#define PY_SSIZE_T_CLEAN
+#include "Python.h"
+#ifndef Py_PYTHON_H
+    #error Python headers needed to compile C extensions, please install development version of Python.
+#elif PY_VERSION_HEX < 0x02040000
+    #error Cython requires Python 2.4+.
+#else
+#include <stddef.h> /* For offsetof */
+#ifndef offsetof
+#define offsetof(type, member) ( (size_t) & ((type*)0) -> member )
+#endif
+#if !defined(WIN32) && !defined(MS_WINDOWS)
+  #ifndef __stdcall
+    #define __stdcall
+  #endif
+  #ifndef __cdecl
+    #define __cdecl
+  #endif
+  #ifndef __fastcall
+    #define __fastcall
+  #endif
+#endif
+#ifndef DL_IMPORT
+  #define DL_IMPORT(t) t
+#endif
+#ifndef DL_EXPORT
+  #define DL_EXPORT(t) t
+#endif
+#ifndef PY_LONG_LONG
+  #define PY_LONG_LONG LONG_LONG
+#endif
+#ifndef Py_HUGE_VAL
+  #define Py_HUGE_VAL HUGE_VAL
+#endif
+#ifdef PYPY_VERSION
+#define CYTHON_COMPILING_IN_PYPY 1
+#define CYTHON_COMPILING_IN_CPYTHON 0
+#else
+#define CYTHON_COMPILING_IN_PYPY 0
+#define CYTHON_COMPILING_IN_CPYTHON 1
+#endif
+#if PY_VERSION_HEX < 0x02050000
+  typedef int Py_ssize_t;
+  #define PY_SSIZE_T_MAX INT_MAX
+  #define PY_SSIZE_T_MIN INT_MIN
+  #define PY_FORMAT_SIZE_T ""
+  #define CYTHON_FORMAT_SSIZE_T ""
+  #define PyInt_FromSsize_t(z) PyInt_FromLong(z)
+  #define PyInt_AsSsize_t(o)   __Pyx_PyInt_AsInt(o)
+  #define PyNumber_Index(o)    ((PyNumber_Check(o) && !PyFloat_Check(o)) ? PyNumber_Int(o) : \
+                                (PyErr_Format(PyExc_TypeError, \
+                                              "expected index value, got %.200s", Py_TYPE(o)->tp_name), \
+                                 (PyObject*)0))
+  #define __Pyx_PyIndex_Check(o) (PyNumber_Check(o) && !PyFloat_Check(o) && \
+                                  !PyComplex_Check(o))
+  #define PyIndex_Check __Pyx_PyIndex_Check
+  #define PyErr_WarnEx(category, message, stacklevel) PyErr_Warn(category, message)
+  #define __PYX_BUILD_PY_SSIZE_T "i"
+#else
+  #define __PYX_BUILD_PY_SSIZE_T "n"
+  #define CYTHON_FORMAT_SSIZE_T "z"
+  #define __Pyx_PyIndex_Check PyIndex_Check
+#endif
+#if PY_VERSION_HEX < 0x02060000
+  #define Py_REFCNT(ob) (((PyObject*)(ob))->ob_refcnt)
+  #define Py_TYPE(ob)   (((PyObject*)(ob))->ob_type)
+  #define Py_SIZE(ob)   (((PyVarObject*)(ob))->ob_size)
+  #define PyVarObject_HEAD_INIT(type, size) \
+          PyObject_HEAD_INIT(type) size,
+  #define PyType_Modified(t)
+  typedef struct {
+     void *buf;
+     PyObject *obj;
+     Py_ssize_t len;
+     Py_ssize_t itemsize;
+     int readonly;
+     int ndim;
+     char *format;
+     Py_ssize_t *shape;
+     Py_ssize_t *strides;
+     Py_ssize_t *suboffsets;
+     void *internal;
+  } Py_buffer;
+  #define PyBUF_SIMPLE 0
+  #define PyBUF_WRITABLE 0x0001
+  #define PyBUF_FORMAT 0x0004
+  #define PyBUF_ND 0x0008
+  #define PyBUF_STRIDES (0x0010 | PyBUF_ND)
+  #define PyBUF_C_CONTIGUOUS (0x0020 | PyBUF_STRIDES)
+  #define PyBUF_F_CONTIGUOUS (0x0040 | PyBUF_STRIDES)
+  #define PyBUF_ANY_CONTIGUOUS (0x0080 | PyBUF_STRIDES)
+  #define PyBUF_INDIRECT (0x0100 | PyBUF_STRIDES)
+  #define PyBUF_RECORDS (PyBUF_STRIDES | PyBUF_FORMAT | PyBUF_WRITABLE)
+  #define PyBUF_FULL (PyBUF_INDIRECT | PyBUF_FORMAT | PyBUF_WRITABLE)
+  typedef int (*getbufferproc)(PyObject *, Py_buffer *, int);
+  typedef void (*releasebufferproc)(PyObject *, Py_buffer *);
+#endif
+#if PY_MAJOR_VERSION < 3
+  #define __Pyx_BUILTIN_MODULE_NAME "__builtin__"
+  #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) \
+          PyCode_New(a, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
+#else
+  #define __Pyx_BUILTIN_MODULE_NAME "builtins"
+  #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) \
+          PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
+#endif
+#if PY_MAJOR_VERSION < 3 && PY_MINOR_VERSION < 6
+  #define PyUnicode_FromString(s) PyUnicode_Decode(s, strlen(s), "UTF-8", "strict")
+#endif
+#if PY_MAJOR_VERSION >= 3
+  #define Py_TPFLAGS_CHECKTYPES 0
+  #define Py_TPFLAGS_HAVE_INDEX 0
+#endif
+#if (PY_VERSION_HEX < 0x02060000) || (PY_MAJOR_VERSION >= 3)
+  #define Py_TPFLAGS_HAVE_NEWBUFFER 0
+#endif
+#if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND)
+  #define CYTHON_PEP393_ENABLED 1
+  #define __Pyx_PyUnicode_READY(op)       (likely(PyUnicode_IS_READY(op)) ? \
+                                              0 : _PyUnicode_Ready((PyObject *)(op)))
+  #define __Pyx_PyUnicode_GET_LENGTH(u)   PyUnicode_GET_LENGTH(u)
+  #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i)
+  #define __Pyx_PyUnicode_READ(k, d, i)   PyUnicode_READ(k, d, i)
+#else
+  #define CYTHON_PEP393_ENABLED 0
+  #define __Pyx_PyUnicode_READY(op)       (0)
+  #define __Pyx_PyUnicode_GET_LENGTH(u)   PyUnicode_GET_SIZE(u)
+  #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i]))
+  #define __Pyx_PyUnicode_READ(k, d, i)   ((k=k), (Py_UCS4)(((Py_UNICODE*)d)[i]))
+#endif
+#if PY_MAJOR_VERSION >= 3
+  #define PyBaseString_Type            PyUnicode_Type
+  #define PyStringObject               PyUnicodeObject
+  #define PyString_Type                PyUnicode_Type
+  #define PyString_Check               PyUnicode_Check
+  #define PyString_CheckExact          PyUnicode_CheckExact
+#endif
+#if PY_VERSION_HEX < 0x02060000
+  #define PyBytesObject                PyStringObject
+  #define PyBytes_Type                 PyString_Type
+  #define PyBytes_Check                PyString_Check
+  #define PyBytes_CheckExact           PyString_CheckExact
+  #define PyBytes_FromString           PyString_FromString
+  #define PyBytes_FromStringAndSize    PyString_FromStringAndSize
+  #define PyBytes_FromFormat           PyString_FromFormat
+  #define PyBytes_DecodeEscape         PyString_DecodeEscape
+  #define PyBytes_AsString             PyString_AsString
+  #define PyBytes_AsStringAndSize      PyString_AsStringAndSize
+  #define PyBytes_Size                 PyString_Size
+  #define PyBytes_AS_STRING            PyString_AS_STRING
+  #define PyBytes_GET_SIZE             PyString_GET_SIZE
+  #define PyBytes_Repr                 PyString_Repr
+  #define PyBytes_Concat               PyString_Concat
+  #define PyBytes_ConcatAndDel         PyString_ConcatAndDel
+#endif
+#if PY_VERSION_HEX < 0x02060000
+  #define PySet_Check(obj)             PyObject_TypeCheck(obj, &PySet_Type)
+  #define PyFrozenSet_Check(obj)       PyObject_TypeCheck(obj, &PyFrozenSet_Type)
+#endif
+#ifndef PySet_CheckExact
+  #define PySet_CheckExact(obj)        (Py_TYPE(obj) == &PySet_Type)
+#endif
+#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type)
+#if PY_MAJOR_VERSION >= 3
+  #define PyIntObject                  PyLongObject
+  #define PyInt_Type                   PyLong_Type
+  #define PyInt_Check(op)              PyLong_Check(op)
+  #define PyInt_CheckExact(op)         PyLong_CheckExact(op)
+  #define PyInt_FromString             PyLong_FromString
+  #define PyInt_FromUnicode            PyLong_FromUnicode
+  #define PyInt_FromLong               PyLong_FromLong
+  #define PyInt_FromSize_t             PyLong_FromSize_t
+  #define PyInt_FromSsize_t            PyLong_FromSsize_t
+  #define PyInt_AsLong                 PyLong_AsLong
+  #define PyInt_AS_LONG                PyLong_AS_LONG
+  #define PyInt_AsSsize_t              PyLong_AsSsize_t
+  #define PyInt_AsUnsignedLongMask     PyLong_AsUnsignedLongMask
+  #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask
+#endif
+#if PY_MAJOR_VERSION >= 3
+  #define PyBoolObject                 PyLongObject
+#endif
+#if PY_VERSION_HEX < 0x03020000
+  typedef long Py_hash_t;
+  #define __Pyx_PyInt_FromHash_t PyInt_FromLong
+  #define __Pyx_PyInt_AsHash_t   PyInt_AsLong
+#else
+  #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t
+  #define __Pyx_PyInt_AsHash_t   PyInt_AsSsize_t
+#endif
+#if (PY_MAJOR_VERSION < 3) || (PY_VERSION_HEX >= 0x03010300)
+  #define __Pyx_PySequence_GetSlice(obj, a, b) PySequence_GetSlice(obj, a, b)
+  #define __Pyx_PySequence_SetSlice(obj, a, b, value) PySequence_SetSlice(obj, a, b, value)
+  #define __Pyx_PySequence_DelSlice(obj, a, b) PySequence_DelSlice(obj, a, b)
+#else
+  #define __Pyx_PySequence_GetSlice(obj, a, b) (unlikely(!(obj)) ? \
+        (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), (PyObject*)0) : \
+        (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_GetSlice(obj, a, b)) : \
+            (PyErr_Format(PyExc_TypeError, "'%.200s' object is unsliceable", (obj)->ob_type->tp_name), (PyObject*)0)))
+  #define __Pyx_PySequence_SetSlice(obj, a, b, value) (unlikely(!(obj)) ? \
+        (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), -1) : \
+        (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_SetSlice(obj, a, b, value)) : \
+            (PyErr_Format(PyExc_TypeError, "'%.200s' object doesn't support slice assignment", (obj)->ob_type->tp_name), -1)))
+  #define __Pyx_PySequence_DelSlice(obj, a, b) (unlikely(!(obj)) ? \
+        (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), -1) : \
+        (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_DelSlice(obj, a, b)) : \
+            (PyErr_Format(PyExc_TypeError, "'%.200s' object doesn't support slice deletion", (obj)->ob_type->tp_name), -1)))
+#endif
+#if PY_MAJOR_VERSION >= 3
+  #define PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, self) : PyInstanceMethod_New(func))
+#endif
+#if PY_VERSION_HEX < 0x02050000
+  #define __Pyx_GetAttrString(o,n)   PyObject_GetAttrString((o),((char *)(n)))
+  #define __Pyx_SetAttrString(o,n,a) PyObject_SetAttrString((o),((char *)(n)),(a))
+  #define __Pyx_DelAttrString(o,n)   PyObject_DelAttrString((o),((char *)(n)))
+#else
+  #define __Pyx_GetAttrString(o,n)   PyObject_GetAttrString((o),(n))
+  #define __Pyx_SetAttrString(o,n,a) PyObject_SetAttrString((o),(n),(a))
+  #define __Pyx_DelAttrString(o,n)   PyObject_DelAttrString((o),(n))
+#endif
+#if PY_VERSION_HEX < 0x02050000
+  #define __Pyx_NAMESTR(n) ((char *)(n))
+  #define __Pyx_DOCSTR(n)  ((char *)(n))
+#else
+  #define __Pyx_NAMESTR(n) (n)
+  #define __Pyx_DOCSTR(n)  (n)
+#endif
+
+
+#if PY_MAJOR_VERSION >= 3
+  #define __Pyx_PyNumber_Divide(x,y)         PyNumber_TrueDivide(x,y)
+  #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceTrueDivide(x,y)
+#else
+  #define __Pyx_PyNumber_Divide(x,y)         PyNumber_Divide(x,y)
+  #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceDivide(x,y)
+#endif
+
+#ifndef __PYX_EXTERN_C
+  #ifdef __cplusplus
+    #define __PYX_EXTERN_C extern "C"
+  #else
+    #define __PYX_EXTERN_C extern
+  #endif
+#endif
+
+#if defined(WIN32) || defined(MS_WINDOWS)
+#define _USE_MATH_DEFINES
+#endif
+#include <math.h>
+#define __PYX_HAVE__h5py__h5l
+#define __PYX_HAVE_API__h5py__h5l
+#include "stdlib.h"
+#include "string.h"
+#include "time.h"
+#include "unistd.h"
+#include "stdint.h"
+#include "api_compat.h"
+#include "lzf_filter.h"
+#include "hdf5.h"
+#include "H5Cpublic.h"
+#include "hdf5_hl.h"
+#include "numpy/arrayobject.h"
+#ifdef _OPENMP
+#include <omp.h>
+#endif /* _OPENMP */
+
+#ifdef PYREX_WITHOUT_ASSERTIONS
+#define CYTHON_WITHOUT_ASSERTIONS
+#endif
+
+#ifndef CYTHON_INLINE
+  #if defined(__GNUC__)
+    #define CYTHON_INLINE __inline__
+  #elif defined(_MSC_VER)
+    #define CYTHON_INLINE __inline
+  #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+    #define CYTHON_INLINE inline
+  #else
+    #define CYTHON_INLINE
+  #endif
+#endif
+#ifndef CYTHON_UNUSED
+# if defined(__GNUC__)
+#   if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
+#     define CYTHON_UNUSED __attribute__ ((__unused__))
+#   else
+#     define CYTHON_UNUSED
+#   endif
+# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER))
+#   define CYTHON_UNUSED __attribute__ ((__unused__))
+# else
+#   define CYTHON_UNUSED
+# endif
+#endif
+typedef struct {PyObject **p; char *s; const long n; const char* encoding; const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; /*proto*/
+
+#define __Pyx_PyBytes_FromUString(s) PyBytes_FromString((char*)s)
+#define __Pyx_PyBytes_AsUString(s)   ((unsigned char*) PyBytes_AsString(s))
+#define __Pyx_Owned_Py_None(b) (Py_INCREF(Py_None), Py_None)
+#define __Pyx_PyBool_FromLong(b) ((b) ? (Py_INCREF(Py_True), Py_True) : (Py_INCREF(Py_False), Py_False))
+static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*);
+static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x);
+static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*);
+static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t);
+static CYTHON_INLINE size_t __Pyx_PyInt_AsSize_t(PyObject*);
+#if CYTHON_COMPILING_IN_CPYTHON
+#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x))
+#else
+#define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x)
+#endif
+#define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x))
+
+
+#ifdef __GNUC__
+  /* Test for GCC > 2.95 */
+  #if __GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))
+    #define likely(x)   __builtin_expect(!!(x), 1)
+    #define unlikely(x) __builtin_expect(!!(x), 0)
+  #else /* __GNUC__ > 2 ... */
+    #define likely(x)   (x)
+    #define unlikely(x) (x)
+  #endif /* __GNUC__ > 2 ... */
+#else /* __GNUC__ */
+  #define likely(x)   (x)
+  #define unlikely(x) (x)
+#endif /* __GNUC__ */
+    
+static PyObject *__pyx_m;
+static PyObject *__pyx_b;
+static PyObject *__pyx_empty_tuple;
+static PyObject *__pyx_empty_bytes;
+static int __pyx_lineno;
+static int __pyx_clineno = 0;
+static const char * __pyx_cfilenm= __FILE__;
+static const char *__pyx_filename;
+
+
+static const char *__pyx_f[] = {
+  "h5l.pyx",
+  "_objects.pxd",
+  "h5p.pxd",
+  "h5g.pxd",
+  "numpy.pxd",
+};
+
+/*--- Type declarations ---*/
+struct __pyx_obj_4h5py_8_objects_ObjectID;
+struct __pyx_obj_4h5py_3h5p_PropID;
+struct __pyx_obj_4h5py_3h5p_PropInstanceID;
+struct __pyx_obj_4h5py_3h5p_PropCreateID;
+struct __pyx_obj_4h5py_3h5p_PropOCID;
+struct __pyx_obj_4h5py_3h5l_LinkInfo;
+struct __pyx_obj_4h5py_3h5g_GroupID;
+struct __pyx_obj_4h5py_3h5p_PropFAID;
+struct __pyx_obj_4h5py_3h5p_PropGCID;
+struct __pyx_obj_4h5py_3h5p_PropDXID;
+struct __pyx_obj_4h5py_3h5p_PropDCID;
+struct __pyx_obj_4h5py_3h5p_PropLAID;
+struct __pyx_obj_4h5py_3h5p_PropFCID;
+struct __pyx_obj_4h5py_3h5p_PropClassID;
+struct __pyx_obj_4h5py_3h5p_PropCopyID;
+struct __pyx_obj_4h5py_3h5l__LinkVisitor;
+struct __pyx_obj_4h5py_3h5p_PropLCID;
+struct __pyx_obj_4h5py_3h5l_LinkProxy;
+struct __pyx_opt_args_4h5py_5utils_check_numpy_read;
+struct __pyx_opt_args_4h5py_5utils_check_numpy_write;
+
+/* "utils.pxd":17
+ * cdef void efree(void* ptr)
+ * 
+ * cpdef int check_numpy_read(ndarray arr, hid_t space_id=*) except -1             # <<<<<<<<<<<<<<
+ * cpdef int check_numpy_write(ndarray arr, hid_t space_id=*) except -1
+ * 
+ */
+struct __pyx_opt_args_4h5py_5utils_check_numpy_read {
+  int __pyx_n;
+  hid_t space_id;
+};
+
+/* "utils.pxd":18
+ * 
+ * cpdef int check_numpy_read(ndarray arr, hid_t space_id=*) except -1
+ * cpdef int check_numpy_write(ndarray arr, hid_t space_id=*) except -1             # <<<<<<<<<<<<<<
+ * 
+ * cdef int convert_tuple(object tuple, hsize_t *dims, hsize_t rank) except -1
+ */
+struct __pyx_opt_args_4h5py_5utils_check_numpy_write {
+  int __pyx_n;
+  hid_t space_id;
+};
+
+/* "_objects.pxd":12
+ * from defs cimport *
+ * 
+ * cdef class ObjectID:             # <<<<<<<<<<<<<<
+ * 
+ *     cdef object __weakref__
+ */
+struct __pyx_obj_4h5py_8_objects_ObjectID {
+  PyObject_HEAD
+  PyObject *__weakref__;
+  hid_t id;
+  int locked;
+  PyObject *_hash;
+};
+
+
+/* "h5p.pxd":16
+ * # --- Base classes ---
+ * 
+ * cdef class PropID(ObjectID):             # <<<<<<<<<<<<<<
+ *     """ Base class for all property lists """
+ *     pass
+ */
+struct __pyx_obj_4h5py_3h5p_PropID {
+  struct __pyx_obj_4h5py_8_objects_ObjectID __pyx_base;
+};
+
+
+/* "h5p.pxd":26
+ *     pass
+ * 
+ * cdef class PropInstanceID(PropID):             # <<<<<<<<<<<<<<
+ *     """ Represents an instance of a property list class (i.e. an actual list
+ *         which can be passed on to other API functions).
+ */
+struct __pyx_obj_4h5py_3h5p_PropInstanceID {
+  struct __pyx_obj_4h5py_3h5p_PropID __pyx_base;
+};
+
+
+/* "h5p.pxd":32
+ *     pass
+ * 
+ * cdef class PropCreateID(PropInstanceID):             # <<<<<<<<<<<<<<
+ *     """ Base class for all object creation lists.
+ * 
+ */
+struct __pyx_obj_4h5py_3h5p_PropCreateID {
+  struct __pyx_obj_4h5py_3h5p_PropInstanceID __pyx_base;
+};
+
+
+/* "h5p.pxd":44
+ * # --- Object creation ---
+ * 
+ * cdef class PropOCID(PropCreateID):             # <<<<<<<<<<<<<<
+ *     """ Object creation property list """
+ *     pass
+ */
+struct __pyx_obj_4h5py_3h5p_PropOCID {
+  struct __pyx_obj_4h5py_3h5p_PropCreateID __pyx_base;
+};
+
+
+/* "h5py/h5l.pyx":26
+ * TYPE_EXTERNAL = H5L_TYPE_EXTERNAL
+ * 
+ * cdef class LinkInfo:             # <<<<<<<<<<<<<<
+ * 
+ *     cdef H5L_info_t infostruct
+ */
+struct __pyx_obj_4h5py_3h5l_LinkInfo {
+  PyObject_HEAD
+  H5L_info_t infostruct;
+};
+
+
+/* "h5g.pxd":14
+ * from _objects cimport ObjectID
+ * 
+ * cdef class GroupID(ObjectID):             # <<<<<<<<<<<<<<
+ * 
+ *     cdef readonly object links
+ */
+struct __pyx_obj_4h5py_3h5g_GroupID {
+  struct __pyx_obj_4h5py_8_objects_ObjectID __pyx_base;
+  PyObject *links;
+};
+
+
+/* "h5p.pxd":59
+ * # --- Object access ---
+ * 
+ * cdef class PropFAID(PropInstanceID):             # <<<<<<<<<<<<<<
+ *     """ File access property list """
+ *     pass
+ */
+struct __pyx_obj_4h5py_3h5p_PropFAID {
+  struct __pyx_obj_4h5py_3h5p_PropInstanceID __pyx_base;
+};
+
+
+/* "h5p.pxd":78
+ *     cdef char* _buf
+ * 
+ * cdef class PropGCID(PropOCID):             # <<<<<<<<<<<<<<
+ *     """ Group creation property list """
+ *     pass
+ */
+struct __pyx_obj_4h5py_3h5p_PropGCID {
+  struct __pyx_obj_4h5py_3h5p_PropOCID __pyx_base;
+};
+
+
+/* "h5p.pxd":63
+ *     pass
+ * 
+ * cdef class PropDXID(PropInstanceID):             # <<<<<<<<<<<<<<
+ *     """ Dataset transfer property list """
+ *     pass
+ */
+struct __pyx_obj_4h5py_3h5p_PropDXID {
+  struct __pyx_obj_4h5py_3h5p_PropInstanceID __pyx_base;
+};
+
+
+/* "h5p.pxd":48
+ *     pass
+ * 
+ * cdef class PropDCID(PropOCID):             # <<<<<<<<<<<<<<
+ *     """ Dataset creation property list """
+ *     pass
+ */
+struct __pyx_obj_4h5py_3h5p_PropDCID {
+  struct __pyx_obj_4h5py_3h5p_PropOCID __pyx_base;
+};
+
+
+/* "h5p.pxd":74
+ *     pass
+ * 
+ * cdef class PropLAID(PropInstanceID):             # <<<<<<<<<<<<<<
+ *     """ Link access property list """
+ *     cdef char* _buf
+ */
+struct __pyx_obj_4h5py_3h5p_PropLAID {
+  struct __pyx_obj_4h5py_3h5p_PropInstanceID __pyx_base;
+  char *_buf;
+};
+
+
+/* "h5p.pxd":52
+ *     pass
+ * 
+ * cdef class PropFCID(PropCreateID):             # <<<<<<<<<<<<<<
+ *     """ File creation property list """
+ *     pass
+ */
+struct __pyx_obj_4h5py_3h5p_PropFCID {
+  struct __pyx_obj_4h5py_3h5p_PropCreateID __pyx_base;
+};
+
+
+/* "h5p.pxd":20
+ *     pass
+ * 
+ * cdef class PropClassID(PropID):             # <<<<<<<<<<<<<<
+ *     """ Represents an HDF5 property list class.  These can be either (locked)
+ *         library-defined classes or user-created classes.
+ */
+struct __pyx_obj_4h5py_3h5p_PropClassID {
+  struct __pyx_obj_4h5py_3h5p_PropID __pyx_base;
+};
+
+
+/* "h5p.pxd":39
+ *     pass
+ * 
+ * cdef class PropCopyID(PropInstanceID):             # <<<<<<<<<<<<<<
+ *     """ Property list for copying objects (as in h5o.copy) """
+ * 
+ */
+struct __pyx_obj_4h5py_3h5p_PropCopyID {
+  struct __pyx_obj_4h5py_3h5p_PropInstanceID __pyx_base;
+};
+
+
+/* "h5py/h5l.pyx":54
+ *                 return self.infostruct.u.val_size
+ * 
+ * cdef class _LinkVisitor:             # <<<<<<<<<<<<<<
+ * 
+ *     """ Helper class for iteration callback """
+ */
+struct __pyx_obj_4h5py_3h5l__LinkVisitor {
+  PyObject_HEAD
+  PyObject *func;
+  PyObject *retval;
+  struct __pyx_obj_4h5py_3h5l_LinkInfo *info;
+};
+
+
+/* "h5p.pxd":70
+ * # --- New in 1.8 ---
+ * 
+ * cdef class PropLCID(PropCreateID):             # <<<<<<<<<<<<<<
+ *     """ Link creation property list """
+ *     pass
+ */
+struct __pyx_obj_4h5py_3h5p_PropLCID {
+  struct __pyx_obj_4h5py_3h5p_PropCreateID __pyx_base;
+};
+
+
+/* "h5py/h5l.pxd":12
+ * from defs cimport *
+ * 
+ * cdef class LinkProxy:             # <<<<<<<<<<<<<<
+ * 
+ *     cdef hid_t id
+ */
+struct __pyx_obj_4h5py_3h5l_LinkProxy {
+  PyObject_HEAD
+  hid_t id;
+};
+
+#ifndef CYTHON_REFNANNY
+  #define CYTHON_REFNANNY 0
+#endif
+#if CYTHON_REFNANNY
+  typedef struct {
+    void (*INCREF)(void*, PyObject*, int);
+    void (*DECREF)(void*, PyObject*, int);
+    void (*GOTREF)(void*, PyObject*, int);
+    void (*GIVEREF)(void*, PyObject*, int);
+    void* (*SetupContext)(const char*, int, const char*);
+    void (*FinishContext)(void**);
+  } __Pyx_RefNannyAPIStruct;
+  static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL;
+  static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); /*proto*/
+  #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL;
+#ifdef WITH_THREAD
+  #define __Pyx_RefNannySetupContext(name, acquire_gil) \
+          if (acquire_gil) { \
+              PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); \
+              __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__); \
+              PyGILState_Release(__pyx_gilstate_save); \
+          } else { \
+              __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__); \
+          }
+#else
+  #define __Pyx_RefNannySetupContext(name, acquire_gil) \
+          __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__)
+#endif
+  #define __Pyx_RefNannyFinishContext() \
+          __Pyx_RefNanny->FinishContext(&__pyx_refnanny)
+  #define __Pyx_INCREF(r)  __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_DECREF(r)  __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_GOTREF(r)  __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_XINCREF(r)  do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0)
+  #define __Pyx_XDECREF(r)  do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0)
+  #define __Pyx_XGOTREF(r)  do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0)
+  #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0)
+#else
+  #define __Pyx_RefNannyDeclarations
+  #define __Pyx_RefNannySetupContext(name, acquire_gil)
+  #define __Pyx_RefNannyFinishContext()
+  #define __Pyx_INCREF(r) Py_INCREF(r)
+  #define __Pyx_DECREF(r) Py_DECREF(r)
+  #define __Pyx_GOTREF(r)
+  #define __Pyx_GIVEREF(r)
+  #define __Pyx_XINCREF(r) Py_XINCREF(r)
+  #define __Pyx_XDECREF(r) Py_XDECREF(r)
+  #define __Pyx_XGOTREF(r)
+  #define __Pyx_XGIVEREF(r)
+#endif /* CYTHON_REFNANNY */
+#define __Pyx_CLEAR(r)    do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0)
+#define __Pyx_XCLEAR(r)   do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0)
+
+static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name); /*proto*/
+
+static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name); /*proto*/
+
+static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[], \
+    PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args, \
+    const char* function_name); /*proto*/
+
+static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact,
+    Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); /*proto*/
+
+static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb); /*proto*/
+static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb); /*proto*/
+
+static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause); /*proto*/
+
+static int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, int none_allowed,
+    const char *name, int exact); /*proto*/
+
+static CYTHON_INLINE hid_t __Pyx_PyInt_from_py_hid_t(PyObject *);
+
+static CYTHON_INLINE hsize_t __Pyx_PyInt_from_py_hsize_t(PyObject *);
+
+static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_int64_t(int64_t);
+
+static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_haddr_t(haddr_t);
+
+static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_hsize_t(hsize_t);
+
+static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_hid_t(hid_t);
+
+static CYTHON_INLINE unsigned char __Pyx_PyInt_AsUnsignedChar(PyObject *);
+
+static CYTHON_INLINE unsigned short __Pyx_PyInt_AsUnsignedShort(PyObject *);
+
+static CYTHON_INLINE unsigned int __Pyx_PyInt_AsUnsignedInt(PyObject *);
+
+static CYTHON_INLINE char __Pyx_PyInt_AsChar(PyObject *);
+
+static CYTHON_INLINE short __Pyx_PyInt_AsShort(PyObject *);
+
+static CYTHON_INLINE int __Pyx_PyInt_AsInt(PyObject *);
+
+static CYTHON_INLINE signed char __Pyx_PyInt_AsSignedChar(PyObject *);
+
+static CYTHON_INLINE signed short __Pyx_PyInt_AsSignedShort(PyObject *);
+
+static CYTHON_INLINE signed int __Pyx_PyInt_AsSignedInt(PyObject *);
+
+static CYTHON_INLINE int __Pyx_PyInt_AsLongDouble(PyObject *);
+
+static CYTHON_INLINE unsigned long __Pyx_PyInt_AsUnsignedLong(PyObject *);
+
+static CYTHON_INLINE unsigned PY_LONG_LONG __Pyx_PyInt_AsUnsignedLongLong(PyObject *);
+
+static CYTHON_INLINE long __Pyx_PyInt_AsLong(PyObject *);
+
+static CYTHON_INLINE PY_LONG_LONG __Pyx_PyInt_AsLongLong(PyObject *);
+
+static CYTHON_INLINE signed long __Pyx_PyInt_AsSignedLong(PyObject *);
+
+static CYTHON_INLINE signed PY_LONG_LONG __Pyx_PyInt_AsSignedLongLong(PyObject *);
+
+static int __Pyx_check_binary_version(void);
+
+#if !defined(__Pyx_PyIdentifier_FromString)
+#if PY_MAJOR_VERSION < 3
+  #define __Pyx_PyIdentifier_FromString(s) PyString_FromString(s)
+#else
+  #define __Pyx_PyIdentifier_FromString(s) PyUnicode_FromString(s)
+#endif
+#endif
+
+static PyObject *__Pyx_ImportModule(const char *name); /*proto*/
+
+static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name, size_t size, int strict);  /*proto*/
+
+static int __Pyx_ImportFunction(PyObject *module, const char *funcname, void (**f)(void), const char *sig); /*proto*/
+
+typedef struct {
+    int code_line;
+    PyCodeObject* code_object;
+} __Pyx_CodeObjectCacheEntry;
+struct __Pyx_CodeObjectCache {
+    int count;
+    int max_count;
+    __Pyx_CodeObjectCacheEntry* entries;
+};
+static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL};
+static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line);
+static PyCodeObject *__pyx_find_code_object(int code_line);
+static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object);
+
+static void __Pyx_AddTraceback(const char *funcname, int c_line,
+                               int py_line, const char *filename); /*proto*/
+
+static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); /*proto*/
+
+
+/* Module declarations from 'h5py.api_types_ext' */
+
+/* Module declarations from 'h5py.api_types_hdf5' */
+
+/* Module declarations from 'h5py.defs' */
+static herr_t (*__pyx_f_4h5py_4defs_H5Lmove)(hid_t, char *, hid_t, char *, hid_t, hid_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Lcreate_hard)(hid_t, char *, hid_t, char *, hid_t, hid_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Lcreate_soft)(char *, hid_t, char *, hid_t, hid_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Lget_val)(hid_t, char *, void *, size_t, hid_t); /*proto*/
+static htri_t (*__pyx_f_4h5py_4defs_H5Lexists)(hid_t, char *, hid_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Lget_info)(hid_t, char *, H5L_info_t *, hid_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Literate_by_name)(hid_t, char *, H5_index_t, H5_iter_order_t, hsize_t *, H5L_iterate_t, void *, hid_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Lvisit_by_name)(hid_t, char *, H5_index_t, H5_iter_order_t, H5L_iterate_t, void *, hid_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Lunpack_elink_val)(void *, size_t, unsigned int *, char **, char **); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Lcreate_external)(char *, char *, hid_t, char *, hid_t, hid_t); /*proto*/
+
+/* Module declarations from 'h5py._objects' */
+static PyTypeObject *__pyx_ptype_4h5py_8_objects_ObjectID = 0;
+static hid_t (*__pyx_f_4h5py_8_objects_pdefault)(struct __pyx_obj_4h5py_8_objects_ObjectID *); /*proto*/
+
+/* Module declarations from 'h5py.h5p' */
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropClassID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropInstanceID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropCreateID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropCopyID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropOCID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropDCID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropFCID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropFAID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropDXID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropLCID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropLAID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropGCID = 0;
+
+/* Module declarations from 'h5py.h5g' */
+static PyTypeObject *__pyx_ptype_4h5py_3h5g_GroupID = 0;
+
+/* Module declarations from 'numpy' */
+
+/* Module declarations from 'h5py.numpy' */
+static PyTypeObject *__pyx_ptype_4h5py_5numpy_dtype = 0;
+static PyTypeObject *__pyx_ptype_4h5py_5numpy_ndarray = 0;
+
+/* Module declarations from 'h5py.utils' */
+static void *(*__pyx_f_4h5py_5utils_emalloc)(size_t); /*proto*/
+static void (*__pyx_f_4h5py_5utils_efree)(void *); /*proto*/
+
+/* Module declarations from 'h5py.h5l' */
+static PyTypeObject *__pyx_ptype_4h5py_3h5l_LinkProxy = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5l_LinkInfo = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5l__LinkVisitor = 0;
+static herr_t __pyx_f_4h5py_3h5l_cb_link_iterate(hid_t, char *, H5L_info_t *, void *); /*proto*/
+static herr_t __pyx_f_4h5py_3h5l_cb_link_simple(hid_t, char *, H5L_info_t *, void *); /*proto*/
+#define __Pyx_MODULE_NAME "h5py.h5l"
+int __pyx_module_is_main_h5py__h5l = 0;
+
+/* Implementation of 'h5py.h5l' */
+static PyObject *__pyx_builtin_NotImplemented;
+static PyObject *__pyx_builtin_TypeError;
+static PyObject *__pyx_pf_4h5py_3h5l_8LinkInfo_4type___get__(struct __pyx_obj_4h5py_3h5l_LinkInfo *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5l_8LinkInfo_12corder_valid___get__(struct __pyx_obj_4h5py_3h5l_LinkInfo *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5l_8LinkInfo_6corder___get__(struct __pyx_obj_4h5py_3h5l_LinkInfo *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5l_8LinkInfo_4cset___get__(struct __pyx_obj_4h5py_3h5l_LinkInfo *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5l_8LinkInfo_1u___get__(struct __pyx_obj_4h5py_3h5l_LinkInfo *__pyx_v_self); /* proto */
+static int __pyx_pf_4h5py_3h5l_12_LinkVisitor___init__(struct __pyx_obj_4h5py_3h5l__LinkVisitor *__pyx_v_self, PyObject *__pyx_v_func); /* proto */
+static int __pyx_pf_4h5py_3h5l_9LinkProxy___init__(struct __pyx_obj_4h5py_3h5l_LinkProxy *__pyx_v_self, hid_t __pyx_v_id_); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5l_9LinkProxy_2__richcmp__(CYTHON_UNUSED PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_other, CYTHON_UNUSED int __pyx_v_how); /* proto */
+static Py_hash_t __pyx_pf_4h5py_3h5l_9LinkProxy_4__hash__(CYTHON_UNUSED struct __pyx_obj_4h5py_3h5l_LinkProxy *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5l_9LinkProxy_6create_hard(struct __pyx_obj_4h5py_3h5l_LinkProxy *__pyx_v_self, char *__pyx_v_new_name, struct __pyx_obj_4h5py_3h5g_GroupID *__pyx_v_cur_loc, char *__pyx_v_cur_name, struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_lcpl, struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_lapl); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5l_9LinkProxy_8create_soft(struct __pyx_obj_4h5py_3h5l_LinkProxy *__pyx_v_self, char *__pyx_v_new_name, char *__pyx_v_target, struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_lcpl, struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_lapl); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5l_9LinkProxy_10create_external(struct __pyx_obj_4h5py_3h5l_LinkProxy *__pyx_v_self, char *__pyx_v_link_name, char *__pyx_v_file_name, char *__pyx_v_obj_name, struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_lcpl, struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_lapl); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5l_9LinkProxy_12get_val(struct __pyx_obj_4h5py_3h5l_LinkProxy *__pyx_v_self, char *__pyx_v_name, struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_lapl); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5l_9LinkProxy_14move(struct __pyx_obj_4h5py_3h5l_LinkProxy *__pyx_v_self, char *__pyx_v_src_name, struct __pyx_obj_4h5py_3h5g_GroupID *__pyx_v_dst_loc, char *__pyx_v_dst_name, struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_lcpl, struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_lapl); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5l_9LinkProxy_16exists(struct __pyx_obj_4h5py_3h5l_LinkProxy *__pyx_v_self, char *__pyx_v_name); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5l_9LinkProxy_18get_info(struct __pyx_obj_4h5py_3h5l_LinkProxy *__pyx_v_self, char *__pyx_v_name, CYTHON_UNUSED int __pyx_v_index, struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_lapl); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5l_9LinkProxy_20visit(struct __pyx_obj_4h5py_3h5l_LinkProxy *__pyx_v_self, PyObject *__pyx_v_func, int __pyx_v_idx_type, int __pyx_v_order, char *__pyx_v_obj_name, struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_lapl, int __pyx_v_info); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5l_9LinkProxy_22iterate(struct __pyx_obj_4h5py_3h5l_LinkProxy *__pyx_v_self, PyObject *__pyx_v_func, int __pyx_v_idx_type, int __pyx_v_order, char *__pyx_v_obj_name, struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_lapl, int __pyx_v_info, hsize_t __pyx_v_idx); /* proto */
+static char __pyx_k_1[] = "Link proxies are unhashable; use the parent group instead.";
+static char __pyx_k_3[] = "Link must be either a soft or external link";
+static char __pyx_k_7[] = ".";
+static char __pyx_k_10[] = " Integer type code for link (h5l.TYPE_*) ";
+static char __pyx_k_11[] = " Indicates if the creation order is valid ";
+static char __pyx_k_12[] = " Creation order ";
+static char __pyx_k_13[] = " Integer type code for character set (h5t.CSET_*) ";
+static char __pyx_k_14[] = " Either the address of a hard link or the size of a soft/UD link ";
+static char __pyx_k_15[] = "\n    API for the \"H5L\" family of link-related operations.  Defines the class\n    LinkProxy, which comes attached to GroupID objects as <obj>.links.\n";
+static char __pyx_k__id_[] = "id_";
+static char __pyx_k__idx[] = "idx";
+static char __pyx_k__func[] = "func";
+static char __pyx_k__info[] = "info";
+static char __pyx_k__lapl[] = "lapl";
+static char __pyx_k__lcpl[] = "lcpl";
+static char __pyx_k__name[] = "name";
+static char __pyx_k__index[] = "index";
+static char __pyx_k__order[] = "order";
+static char __pyx_k__target[] = "target";
+static char __pyx_k__cur_loc[] = "cur_loc";
+static char __pyx_k__dst_loc[] = "dst_loc";
+static char __pyx_k____main__[] = "__main__";
+static char __pyx_k____test__[] = "__test__";
+static char __pyx_k__cur_name[] = "cur_name";
+static char __pyx_k__dst_name[] = "dst_name";
+static char __pyx_k__idx_type[] = "idx_type";
+static char __pyx_k__new_name[] = "new_name";
+static char __pyx_k__obj_name[] = "obj_name";
+static char __pyx_k__src_name[] = "src_name";
+static char __pyx_k__TYPE_HARD[] = "TYPE_HARD";
+static char __pyx_k__TYPE_SOFT[] = "TYPE_SOFT";
+static char __pyx_k__TypeError[] = "TypeError";
+static char __pyx_k__file_name[] = "file_name";
+static char __pyx_k__link_name[] = "link_name";
+static char __pyx_k__TYPE_EXTERNAL[] = "TYPE_EXTERNAL";
+static char __pyx_k__NotImplemented[] = "NotImplemented";
+static PyObject *__pyx_kp_s_1;
+static PyObject *__pyx_kp_s_3;
+static PyObject *__pyx_n_s__NotImplemented;
+static PyObject *__pyx_n_s__TYPE_EXTERNAL;
+static PyObject *__pyx_n_s__TYPE_HARD;
+static PyObject *__pyx_n_s__TYPE_SOFT;
+static PyObject *__pyx_n_s__TypeError;
+static PyObject *__pyx_n_s____main__;
+static PyObject *__pyx_n_s____test__;
+static PyObject *__pyx_n_s__cur_loc;
+static PyObject *__pyx_n_s__cur_name;
+static PyObject *__pyx_n_s__dst_loc;
+static PyObject *__pyx_n_s__dst_name;
+static PyObject *__pyx_n_s__file_name;
+static PyObject *__pyx_n_s__func;
+static PyObject *__pyx_n_s__id_;
+static PyObject *__pyx_n_s__idx;
+static PyObject *__pyx_n_s__idx_type;
+static PyObject *__pyx_n_s__index;
+static PyObject *__pyx_n_s__info;
+static PyObject *__pyx_n_s__lapl;
+static PyObject *__pyx_n_s__lcpl;
+static PyObject *__pyx_n_s__link_name;
+static PyObject *__pyx_n_s__name;
+static PyObject *__pyx_n_s__new_name;
+static PyObject *__pyx_n_s__obj_name;
+static PyObject *__pyx_n_s__order;
+static PyObject *__pyx_n_s__src_name;
+static PyObject *__pyx_n_s__target;
+static int __pyx_k_5;
+static int __pyx_k_6;
+static int __pyx_k_8;
+static int __pyx_k_9;
+static PyObject *__pyx_k_tuple_2;
+static PyObject *__pyx_k_tuple_4;
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5l_8LinkInfo_4type_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4h5py_3h5l_8LinkInfo_4type_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5l_8LinkInfo_4type___get__(((struct __pyx_obj_4h5py_3h5l_LinkInfo *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5l.pyx":32
+ *     property type:
+ *         """ Integer type code for link (h5l.TYPE_*) """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return <int>self.infostruct.type
+ *     property corder_valid:
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5l_8LinkInfo_4type___get__(struct __pyx_obj_4h5py_3h5l_LinkInfo *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "h5py/h5l.pyx":33
+ *         """ Integer type code for link (h5l.TYPE_*) """
+ *         def __get__(self):
+ *             return <int>self.infostruct.type             # <<<<<<<<<<<<<<
+ *     property corder_valid:
+ *         """ Indicates if the creation order is valid """
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyInt_FromLong(((int)__pyx_v_self->infostruct.type)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py.h5l.LinkInfo.type.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5l_8LinkInfo_12corder_valid_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4h5py_3h5l_8LinkInfo_12corder_valid_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5l_8LinkInfo_12corder_valid___get__(((struct __pyx_obj_4h5py_3h5l_LinkInfo *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5l.pyx":36
+ *     property corder_valid:
+ *         """ Indicates if the creation order is valid """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return <bint>self.infostruct.corder_valid
+ *     property corder:
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5l_8LinkInfo_12corder_valid___get__(struct __pyx_obj_4h5py_3h5l_LinkInfo *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "h5py/h5l.pyx":37
+ *         """ Indicates if the creation order is valid """
+ *         def __get__(self):
+ *             return <bint>self.infostruct.corder_valid             # <<<<<<<<<<<<<<
+ *     property corder:
+ *         """ Creation order """
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyBool_FromLong(((int)__pyx_v_self->infostruct.corder_valid)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py.h5l.LinkInfo.corder_valid.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5l_8LinkInfo_6corder_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4h5py_3h5l_8LinkInfo_6corder_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5l_8LinkInfo_6corder___get__(((struct __pyx_obj_4h5py_3h5l_LinkInfo *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5l.pyx":40
+ *     property corder:
+ *         """ Creation order """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.infostruct.corder
+ *     property cset:
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5l_8LinkInfo_6corder___get__(struct __pyx_obj_4h5py_3h5l_LinkInfo *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "h5py/h5l.pyx":41
+ *         """ Creation order """
+ *         def __get__(self):
+ *             return self.infostruct.corder             # <<<<<<<<<<<<<<
+ *     property cset:
+ *         """ Integer type code for character set (h5t.CSET_*) """
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_to_py_int64_t(__pyx_v_self->infostruct.corder); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py.h5l.LinkInfo.corder.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5l_8LinkInfo_4cset_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4h5py_3h5l_8LinkInfo_4cset_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5l_8LinkInfo_4cset___get__(((struct __pyx_obj_4h5py_3h5l_LinkInfo *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5l.pyx":44
+ *     property cset:
+ *         """ Integer type code for character set (h5t.CSET_*) """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.infostruct.cset
+ *     property u:
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5l_8LinkInfo_4cset___get__(struct __pyx_obj_4h5py_3h5l_LinkInfo *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "h5py/h5l.pyx":45
+ *         """ Integer type code for character set (h5t.CSET_*) """
+ *         def __get__(self):
+ *             return self.infostruct.cset             # <<<<<<<<<<<<<<
+ *     property u:
+ *         """ Either the address of a hard link or the size of a soft/UD link """
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyInt_FromLong(__pyx_v_self->infostruct.cset); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py.h5l.LinkInfo.cset.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5l_8LinkInfo_1u_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4h5py_3h5l_8LinkInfo_1u_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5l_8LinkInfo_1u___get__(((struct __pyx_obj_4h5py_3h5l_LinkInfo *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5l.pyx":48
+ *     property u:
+ *         """ Either the address of a hard link or the size of a soft/UD link """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             if self.infostruct.type == H5L_TYPE_HARD:
+ *                 return self.infostruct.u.address
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5l_8LinkInfo_1u___get__(struct __pyx_obj_4h5py_3h5l_LinkInfo *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "h5py/h5l.pyx":49
+ *         """ Either the address of a hard link or the size of a soft/UD link """
+ *         def __get__(self):
+ *             if self.infostruct.type == H5L_TYPE_HARD:             # <<<<<<<<<<<<<<
+ *                 return self.infostruct.u.address
+ *             else:
+ */
+  __pyx_t_1 = (__pyx_v_self->infostruct.type == H5L_TYPE_HARD);
+  if (__pyx_t_1) {
+
+    /* "h5py/h5l.pyx":50
+ *         def __get__(self):
+ *             if self.infostruct.type == H5L_TYPE_HARD:
+ *                 return self.infostruct.u.address             # <<<<<<<<<<<<<<
+ *             else:
+ *                 return self.infostruct.u.val_size
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_2 = __Pyx_PyInt_to_py_haddr_t(__pyx_v_self->infostruct.u.address); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_r = __pyx_t_2;
+    __pyx_t_2 = 0;
+    goto __pyx_L0;
+    goto __pyx_L3;
+  }
+  /*else*/ {
+
+    /* "h5py/h5l.pyx":52
+ *                 return self.infostruct.u.address
+ *             else:
+ *                 return self.infostruct.u.val_size             # <<<<<<<<<<<<<<
+ * 
+ * cdef class _LinkVisitor:
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_2 = __Pyx_PyInt_FromSize_t(__pyx_v_self->infostruct.u.val_size); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_r = __pyx_t_2;
+    __pyx_t_2 = 0;
+    goto __pyx_L0;
+  }
+  __pyx_L3:;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5l.LinkInfo.u.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static int __pyx_pw_4h5py_3h5l_12_LinkVisitor_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_4h5py_3h5l_12_LinkVisitor_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_func = 0;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__func,0};
+    PyObject* values[1] = {0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__func)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+    }
+    __pyx_v_func = values[0];
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5l._LinkVisitor.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return -1;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_3h5l_12_LinkVisitor___init__(((struct __pyx_obj_4h5py_3h5l__LinkVisitor *)__pyx_v_self), __pyx_v_func);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5l.pyx":62
+ *     cdef LinkInfo info
+ * 
+ *     def __init__(self, func):             # <<<<<<<<<<<<<<
+ *         self.func = func
+ *         self.retval = None
+ */
+
+static int __pyx_pf_4h5py_3h5l_12_LinkVisitor___init__(struct __pyx_obj_4h5py_3h5l__LinkVisitor *__pyx_v_self, PyObject *__pyx_v_func) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__init__", 0);
+
+  /* "h5py/h5l.pyx":63
+ * 
+ *     def __init__(self, func):
+ *         self.func = func             # <<<<<<<<<<<<<<
+ *         self.retval = None
+ *         self.info = LinkInfo()
+ */
+  __Pyx_INCREF(__pyx_v_func);
+  __Pyx_GIVEREF(__pyx_v_func);
+  __Pyx_GOTREF(__pyx_v_self->func);
+  __Pyx_DECREF(__pyx_v_self->func);
+  __pyx_v_self->func = __pyx_v_func;
+
+  /* "h5py/h5l.pyx":64
+ *     def __init__(self, func):
+ *         self.func = func
+ *         self.retval = None             # <<<<<<<<<<<<<<
+ *         self.info = LinkInfo()
+ * 
+ */
+  __Pyx_INCREF(Py_None);
+  __Pyx_GIVEREF(Py_None);
+  __Pyx_GOTREF(__pyx_v_self->retval);
+  __Pyx_DECREF(__pyx_v_self->retval);
+  __pyx_v_self->retval = Py_None;
+
+  /* "h5py/h5l.pyx":65
+ *         self.func = func
+ *         self.retval = None
+ *         self.info = LinkInfo()             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t cb_link_iterate(hid_t grp, char* name, H5L_info_t *istruct, void* data) except 2:
+ */
+  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4h5py_3h5l_LinkInfo)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_GOTREF(__pyx_v_self->info);
+  __Pyx_DECREF(((PyObject *)__pyx_v_self->info));
+  __pyx_v_self->info = ((struct __pyx_obj_4h5py_3h5l_LinkInfo *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py.h5l._LinkVisitor.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5l.pyx":67
+ *         self.info = LinkInfo()
+ * 
+ * cdef herr_t cb_link_iterate(hid_t grp, char* name, H5L_info_t *istruct, void* data) except 2:             # <<<<<<<<<<<<<<
+ *     # Standard iteration callback for iterate/visit routines
+ * 
+ */
+
+static herr_t __pyx_f_4h5py_3h5l_cb_link_iterate(CYTHON_UNUSED hid_t __pyx_v_grp, char *__pyx_v_name, H5L_info_t *__pyx_v_istruct, void *__pyx_v_data) {
+  struct __pyx_obj_4h5py_3h5l__LinkVisitor *__pyx_v_it = 0;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_t_3;
+  int __pyx_t_4;
+  int __pyx_t_5;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("cb_link_iterate", 0);
+
+  /* "h5py/h5l.pyx":70
+ *     # Standard iteration callback for iterate/visit routines
+ * 
+ *     cdef _LinkVisitor it = <_LinkVisitor?>data             # <<<<<<<<<<<<<<
+ *     it.info.infostruct = istruct[0]
+ *     it.retval = it.func(name, it.info)
+ */
+  __Pyx_INCREF(((PyObject *)((struct __pyx_obj_4h5py_3h5l__LinkVisitor *)__pyx_v_data)));
+  __pyx_v_it = ((struct __pyx_obj_4h5py_3h5l__LinkVisitor *)__pyx_v_data);
+
+  /* "h5py/h5l.pyx":71
+ * 
+ *     cdef _LinkVisitor it = <_LinkVisitor?>data
+ *     it.info.infostruct = istruct[0]             # <<<<<<<<<<<<<<
+ *     it.retval = it.func(name, it.info)
+ *     if (it.retval is None) or (not it.retval):
+ */
+  __pyx_v_it->info->infostruct = (__pyx_v_istruct[0]);
+
+  /* "h5py/h5l.pyx":72
+ *     cdef _LinkVisitor it = <_LinkVisitor?>data
+ *     it.info.infostruct = istruct[0]
+ *     it.retval = it.func(name, it.info)             # <<<<<<<<<<<<<<
+ *     if (it.retval is None) or (not it.retval):
+ *         return 0
+ */
+  __pyx_t_1 = PyBytes_FromString(__pyx_v_name); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_t_1));
+  __Pyx_GIVEREF(((PyObject *)__pyx_t_1));
+  __Pyx_INCREF(((PyObject *)__pyx_v_it->info));
+  PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_it->info));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_it->info));
+  __pyx_t_1 = 0;
+  __pyx_t_1 = PyObject_Call(__pyx_v_it->func, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
+  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_GOTREF(__pyx_v_it->retval);
+  __Pyx_DECREF(__pyx_v_it->retval);
+  __pyx_v_it->retval = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+  /* "h5py/h5l.pyx":73
+ *     it.info.infostruct = istruct[0]
+ *     it.retval = it.func(name, it.info)
+ *     if (it.retval is None) or (not it.retval):             # <<<<<<<<<<<<<<
+ *         return 0
+ *     return 1
+ */
+  __pyx_t_3 = (__pyx_v_it->retval == Py_None);
+  if (!__pyx_t_3) {
+    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_it->retval); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = (!__pyx_t_4);
+    __pyx_t_4 = __pyx_t_5;
+  } else {
+    __pyx_t_4 = __pyx_t_3;
+  }
+  if (__pyx_t_4) {
+
+    /* "h5py/h5l.pyx":74
+ *     it.retval = it.func(name, it.info)
+ *     if (it.retval is None) or (not it.retval):
+ *         return 0             # <<<<<<<<<<<<<<
+ *     return 1
+ * 
+ */
+    __pyx_r = 0;
+    goto __pyx_L0;
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  /* "h5py/h5l.pyx":75
+ *     if (it.retval is None) or (not it.retval):
+ *         return 0
+ *     return 1             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t cb_link_simple(hid_t grp, char* name, H5L_info_t *istruct, void* data) except 2:
+ */
+  __pyx_r = 1;
+  goto __pyx_L0;
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5l.cb_link_iterate", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 2;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_it);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5l.pyx":77
+ *     return 1
+ * 
+ * cdef herr_t cb_link_simple(hid_t grp, char* name, H5L_info_t *istruct, void* data) except 2:             # <<<<<<<<<<<<<<
+ *     # Simplified iteration callback which only provides the name
+ * 
+ */
+
+static herr_t __pyx_f_4h5py_3h5l_cb_link_simple(CYTHON_UNUSED hid_t __pyx_v_grp, char *__pyx_v_name, CYTHON_UNUSED H5L_info_t *__pyx_v_istruct, void *__pyx_v_data) {
+  struct __pyx_obj_4h5py_3h5l__LinkVisitor *__pyx_v_it = 0;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_t_3;
+  int __pyx_t_4;
+  int __pyx_t_5;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("cb_link_simple", 0);
+
+  /* "h5py/h5l.pyx":80
+ *     # Simplified iteration callback which only provides the name
+ * 
+ *     cdef _LinkVisitor it = <_LinkVisitor?>data             # <<<<<<<<<<<<<<
+ *     it.retval = it.func(name)
+ *     if (it.retval is None) or (not it.retval):
+ */
+  __Pyx_INCREF(((PyObject *)((struct __pyx_obj_4h5py_3h5l__LinkVisitor *)__pyx_v_data)));
+  __pyx_v_it = ((struct __pyx_obj_4h5py_3h5l__LinkVisitor *)__pyx_v_data);
+
+  /* "h5py/h5l.pyx":81
+ * 
+ *     cdef _LinkVisitor it = <_LinkVisitor?>data
+ *     it.retval = it.func(name)             # <<<<<<<<<<<<<<
+ *     if (it.retval is None) or (not it.retval):
+ *         return 0
+ */
+  __pyx_t_1 = PyBytes_FromString(__pyx_v_name); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_t_1));
+  __Pyx_GIVEREF(((PyObject *)__pyx_t_1));
+  __pyx_t_1 = 0;
+  __pyx_t_1 = PyObject_Call(__pyx_v_it->func, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
+  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_GOTREF(__pyx_v_it->retval);
+  __Pyx_DECREF(__pyx_v_it->retval);
+  __pyx_v_it->retval = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+  /* "h5py/h5l.pyx":82
+ *     cdef _LinkVisitor it = <_LinkVisitor?>data
+ *     it.retval = it.func(name)
+ *     if (it.retval is None) or (not it.retval):             # <<<<<<<<<<<<<<
+ *         return 0
+ *     return 1
+ */
+  __pyx_t_3 = (__pyx_v_it->retval == Py_None);
+  if (!__pyx_t_3) {
+    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_it->retval); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 82; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = (!__pyx_t_4);
+    __pyx_t_4 = __pyx_t_5;
+  } else {
+    __pyx_t_4 = __pyx_t_3;
+  }
+  if (__pyx_t_4) {
+
+    /* "h5py/h5l.pyx":83
+ *     it.retval = it.func(name)
+ *     if (it.retval is None) or (not it.retval):
+ *         return 0             # <<<<<<<<<<<<<<
+ *     return 1
+ * 
+ */
+    __pyx_r = 0;
+    goto __pyx_L0;
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  /* "h5py/h5l.pyx":84
+ *     if (it.retval is None) or (not it.retval):
+ *         return 0
+ *     return 1             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_r = 1;
+  goto __pyx_L0;
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5l.cb_link_simple", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 2;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_it);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static int __pyx_pw_4h5py_3h5l_9LinkProxy_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_4h5py_3h5l_9LinkProxy_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  hid_t __pyx_v_id_;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__id_,0};
+    PyObject* values[1] = {0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__id_)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+    }
+    __pyx_v_id_ = __Pyx_PyInt_from_py_hid_t(values[0]); if (unlikely((__pyx_v_id_ == (hid_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5l.LinkProxy.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return -1;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_3h5l_9LinkProxy___init__(((struct __pyx_obj_4h5py_3h5l_LinkProxy *)__pyx_v_self), __pyx_v_id_);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5l.pyx":106
+ *     """
+ * 
+ *     def __init__(self, hid_t id_):             # <<<<<<<<<<<<<<
+ * 
+ *         # The identifier in question is the hid_t for the parent GroupID.
+ */
+
+static int __pyx_pf_4h5py_3h5l_9LinkProxy___init__(struct __pyx_obj_4h5py_3h5l_LinkProxy *__pyx_v_self, hid_t __pyx_v_id_) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__init__", 0);
+
+  /* "h5py/h5l.pyx":110
+ *         # The identifier in question is the hid_t for the parent GroupID.
+ *         # We "borrow" this reference.
+ *         self.id = id_             # <<<<<<<<<<<<<<
+ * 
+ *     def __richcmp__(self, object other, int how):
+ */
+  __pyx_v_self->id = __pyx_v_id_;
+
+  __pyx_r = 0;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5l_9LinkProxy_3__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_how); /*proto*/
+static PyObject *__pyx_pw_4h5py_3h5l_9LinkProxy_3__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_how) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__richcmp__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5l_9LinkProxy_2__richcmp__(((PyObject *)__pyx_v_self), ((PyObject *)__pyx_v_other), ((int)__pyx_v_how));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5l.pyx":112
+ *         self.id = id_
+ * 
+ *     def __richcmp__(self, object other, int how):             # <<<<<<<<<<<<<<
+ *         return NotImplemented
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5l_9LinkProxy_2__richcmp__(CYTHON_UNUSED PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_other, CYTHON_UNUSED int __pyx_v_how) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__richcmp__", 0);
+
+  /* "h5py/h5l.pyx":113
+ * 
+ *     def __richcmp__(self, object other, int how):
+ *         return NotImplemented             # <<<<<<<<<<<<<<
+ * 
+ *     def __hash__(self):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_builtin_NotImplemented);
+  __pyx_r = __pyx_builtin_NotImplemented;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static Py_hash_t __pyx_pw_4h5py_3h5l_9LinkProxy_5__hash__(PyObject *__pyx_v_self); /*proto*/
+static Py_hash_t __pyx_pw_4h5py_3h5l_9LinkProxy_5__hash__(PyObject *__pyx_v_self) {
+  Py_hash_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__hash__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5l_9LinkProxy_4__hash__(((struct __pyx_obj_4h5py_3h5l_LinkProxy *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5l.pyx":115
+ *         return NotImplemented
+ * 
+ *     def __hash__(self):             # <<<<<<<<<<<<<<
+ *         raise TypeError("Link proxies are unhashable; use the parent group instead.")
+ * 
+ */
+
+static Py_hash_t __pyx_pf_4h5py_3h5l_9LinkProxy_4__hash__(CYTHON_UNUSED struct __pyx_obj_4h5py_3h5l_LinkProxy *__pyx_v_self) {
+  Py_hash_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__hash__", 0);
+
+  /* "h5py/h5l.pyx":116
+ * 
+ *     def __hash__(self):
+ *         raise TypeError("Link proxies are unhashable; use the parent group instead.")             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_1 = PyObject_Call(__pyx_builtin_TypeError, ((PyObject *)__pyx_k_tuple_2), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  {__pyx_filename = __pyx_f[0]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py.h5l.LinkProxy.__hash__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  if (unlikely(__pyx_r == -1) && !PyErr_Occurred()) __pyx_r = -2;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5l_9LinkProxy_7create_hard(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_4h5py_3h5l_9LinkProxy_6create_hard[] = " (STRING new_name, GroupID cur_loc, STRING cur_name,\n        PropID lcpl=None, PropID lapl=None)\n\n        Create a new hard link in this group pointing to an existing link\n        in another group.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5l_9LinkProxy_7create_hard(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  char *__pyx_v_new_name;
+  struct __pyx_obj_4h5py_3h5g_GroupID *__pyx_v_cur_loc = 0;
+  char *__pyx_v_cur_name;
+  struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_lcpl = 0;
+  struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_lapl = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("create_hard (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__new_name,&__pyx_n_s__cur_loc,&__pyx_n_s__cur_name,&__pyx_n_s__lcpl,&__pyx_n_s__lapl,0};
+    PyObject* values[5] = {0,0,0,0,0};
+
+    /* "h5py/h5l.pyx":120
+ * 
+ *     def create_hard(self, char* new_name, GroupID cur_loc not None,
+ *         char* cur_name, PropID lcpl=None, PropID lapl=None):             # <<<<<<<<<<<<<<
+ *         """ (STRING new_name, GroupID cur_loc, STRING cur_name,
+ *         PropID lcpl=None, PropID lapl=None)
+ */
+    values[3] = (PyObject *)((struct __pyx_obj_4h5py_3h5p_PropID *)Py_None);
+    values[4] = (PyObject *)((struct __pyx_obj_4h5py_3h5p_PropID *)Py_None);
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__new_name)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__cur_loc)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("create_hard", 0, 3, 5, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+        case  2:
+        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__cur_name)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("create_hard", 0, 3, 5, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+        case  3:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__lcpl);
+          if (value) { values[3] = value; kw_args--; }
+        }
+        case  4:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__lapl);
+          if (value) { values[4] = value; kw_args--; }
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "create_hard") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else {
+      switch (PyTuple_GET_SIZE(__pyx_args)) {
+        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+    }
+    __pyx_v_new_name = PyBytes_AsString(values[0]); if (unlikely((!__pyx_v_new_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_cur_loc = ((struct __pyx_obj_4h5py_3h5g_GroupID *)values[1]);
+    __pyx_v_cur_name = PyBytes_AsString(values[2]); if (unlikely((!__pyx_v_cur_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 120; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_lcpl = ((struct __pyx_obj_4h5py_3h5p_PropID *)values[3]);
+    __pyx_v_lapl = ((struct __pyx_obj_4h5py_3h5p_PropID *)values[4]);
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("create_hard", 0, 3, 5, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5l.LinkProxy.create_hard", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_cur_loc), __pyx_ptype_4h5py_3h5g_GroupID, 0, "cur_loc", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_lcpl), __pyx_ptype_4h5py_3h5p_PropID, 1, "lcpl", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 120; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_lapl), __pyx_ptype_4h5py_3h5p_PropID, 1, "lapl", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 120; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_pf_4h5py_3h5l_9LinkProxy_6create_hard(((struct __pyx_obj_4h5py_3h5l_LinkProxy *)__pyx_v_self), __pyx_v_new_name, __pyx_v_cur_loc, __pyx_v_cur_name, __pyx_v_lcpl, __pyx_v_lapl);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5l.pyx":119
+ * 
+ * 
+ *     def create_hard(self, char* new_name, GroupID cur_loc not None,             # <<<<<<<<<<<<<<
+ *         char* cur_name, PropID lcpl=None, PropID lapl=None):
+ *         """ (STRING new_name, GroupID cur_loc, STRING cur_name,
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5l_9LinkProxy_6create_hard(struct __pyx_obj_4h5py_3h5l_LinkProxy *__pyx_v_self, char *__pyx_v_new_name, struct __pyx_obj_4h5py_3h5g_GroupID *__pyx_v_cur_loc, char *__pyx_v_cur_name, struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_lcpl, struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_lapl) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("create_hard", 0);
+
+  /* "h5py/h5l.pyx":128
+ *         """
+ *         H5Lcreate_hard(cur_loc.id, cur_name, self.id, new_name,
+ *             pdefault(lcpl), pdefault(lapl))             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Lcreate_hard(__pyx_v_cur_loc->__pyx_base.id, __pyx_v_cur_name, __pyx_v_self->id, __pyx_v_new_name, __pyx_f_4h5py_8_objects_pdefault(((struct __pyx_obj_4h5py_8_objects_ObjectID *)__pyx_v_lcpl)), __pyx_f_4h5py_8_objects_pdefault(((struct __pyx_obj_4h5py_8_objects_ObjectID *)__pyx_v_lapl))); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py.h5l.LinkProxy.create_hard", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5l_9LinkProxy_9create_soft(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_4h5py_3h5l_9LinkProxy_8create_soft[] = "(STRING new_name, STRING target, PropID lcpl=None, PropID lapl=None)\n\n        Create a new soft link in this group, with the given string value.\n        The link target does not need to exist.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5l_9LinkProxy_9create_soft(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  char *__pyx_v_new_name;
+  char *__pyx_v_target;
+  struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_lcpl = 0;
+  struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_lapl = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("create_soft (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__new_name,&__pyx_n_s__target,&__pyx_n_s__lcpl,&__pyx_n_s__lapl,0};
+    PyObject* values[4] = {0,0,0,0};
+
+    /* "h5py/h5l.pyx":132
+ * 
+ *     def create_soft(self, char* new_name, char* target,
+ *         PropID lcpl=None, PropID lapl=None):             # <<<<<<<<<<<<<<
+ *         """(STRING new_name, STRING target, PropID lcpl=None, PropID lapl=None)
+ * 
+ */
+    values[2] = (PyObject *)((struct __pyx_obj_4h5py_3h5p_PropID *)Py_None);
+    values[3] = (PyObject *)((struct __pyx_obj_4h5py_3h5p_PropID *)Py_None);
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__new_name)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__target)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("create_soft", 0, 2, 4, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+        case  2:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__lcpl);
+          if (value) { values[2] = value; kw_args--; }
+        }
+        case  3:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__lapl);
+          if (value) { values[3] = value; kw_args--; }
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "create_soft") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else {
+      switch (PyTuple_GET_SIZE(__pyx_args)) {
+        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+    }
+    __pyx_v_new_name = PyBytes_AsString(values[0]); if (unlikely((!__pyx_v_new_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_target = PyBytes_AsString(values[1]); if (unlikely((!__pyx_v_target) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_lcpl = ((struct __pyx_obj_4h5py_3h5p_PropID *)values[2]);
+    __pyx_v_lapl = ((struct __pyx_obj_4h5py_3h5p_PropID *)values[3]);
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("create_soft", 0, 2, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5l.LinkProxy.create_soft", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_lcpl), __pyx_ptype_4h5py_3h5p_PropID, 1, "lcpl", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_lapl), __pyx_ptype_4h5py_3h5p_PropID, 1, "lapl", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_pf_4h5py_3h5l_9LinkProxy_8create_soft(((struct __pyx_obj_4h5py_3h5l_LinkProxy *)__pyx_v_self), __pyx_v_new_name, __pyx_v_target, __pyx_v_lcpl, __pyx_v_lapl);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5l.pyx":131
+ * 
+ * 
+ *     def create_soft(self, char* new_name, char* target,             # <<<<<<<<<<<<<<
+ *         PropID lcpl=None, PropID lapl=None):
+ *         """(STRING new_name, STRING target, PropID lcpl=None, PropID lapl=None)
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5l_9LinkProxy_8create_soft(struct __pyx_obj_4h5py_3h5l_LinkProxy *__pyx_v_self, char *__pyx_v_new_name, char *__pyx_v_target, struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_lcpl, struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_lapl) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("create_soft", 0);
+
+  /* "h5py/h5l.pyx":139
+ *         """
+ *         H5Lcreate_soft(target, self.id, new_name,
+ *             pdefault(lcpl), pdefault(lapl))             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Lcreate_soft(__pyx_v_target, __pyx_v_self->id, __pyx_v_new_name, __pyx_f_4h5py_8_objects_pdefault(((struct __pyx_obj_4h5py_8_objects_ObjectID *)__pyx_v_lcpl)), __pyx_f_4h5py_8_objects_pdefault(((struct __pyx_obj_4h5py_8_objects_ObjectID *)__pyx_v_lapl))); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py.h5l.LinkProxy.create_soft", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5l_9LinkProxy_11create_external(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_4h5py_3h5l_9LinkProxy_10create_external[] = "(STRING link_name, STRING file_name, STRING obj_name,\n        PropLCID lcpl=None, PropLAID lapl=None)\n\n        Create a new external link, pointing to an object in another file.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5l_9LinkProxy_11create_external(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  char *__pyx_v_link_name;
+  char *__pyx_v_file_name;
+  char *__pyx_v_obj_name;
+  struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_lcpl = 0;
+  struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_lapl = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("create_external (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__link_name,&__pyx_n_s__file_name,&__pyx_n_s__obj_name,&__pyx_n_s__lcpl,&__pyx_n_s__lapl,0};
+    PyObject* values[5] = {0,0,0,0,0};
+
+    /* "h5py/h5l.pyx":143
+ * 
+ *     def create_external(self, char* link_name, char* file_name, char* obj_name,
+ *         PropID lcpl=None, PropID lapl=None):             # <<<<<<<<<<<<<<
+ *         """(STRING link_name, STRING file_name, STRING obj_name,
+ *         PropLCID lcpl=None, PropLAID lapl=None)
+ */
+    values[3] = (PyObject *)((struct __pyx_obj_4h5py_3h5p_PropID *)Py_None);
+    values[4] = (PyObject *)((struct __pyx_obj_4h5py_3h5p_PropID *)Py_None);
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__link_name)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__file_name)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("create_external", 0, 3, 5, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+        case  2:
+        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__obj_name)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("create_external", 0, 3, 5, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+        case  3:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__lcpl);
+          if (value) { values[3] = value; kw_args--; }
+        }
+        case  4:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__lapl);
+          if (value) { values[4] = value; kw_args--; }
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "create_external") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else {
+      switch (PyTuple_GET_SIZE(__pyx_args)) {
+        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+    }
+    __pyx_v_link_name = PyBytes_AsString(values[0]); if (unlikely((!__pyx_v_link_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_file_name = PyBytes_AsString(values[1]); if (unlikely((!__pyx_v_file_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_obj_name = PyBytes_AsString(values[2]); if (unlikely((!__pyx_v_obj_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_lcpl = ((struct __pyx_obj_4h5py_3h5p_PropID *)values[3]);
+    __pyx_v_lapl = ((struct __pyx_obj_4h5py_3h5p_PropID *)values[4]);
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("create_external", 0, 3, 5, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5l.LinkProxy.create_external", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_lcpl), __pyx_ptype_4h5py_3h5p_PropID, 1, "lcpl", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_lapl), __pyx_ptype_4h5py_3h5p_PropID, 1, "lapl", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_pf_4h5py_3h5l_9LinkProxy_10create_external(((struct __pyx_obj_4h5py_3h5l_LinkProxy *)__pyx_v_self), __pyx_v_link_name, __pyx_v_file_name, __pyx_v_obj_name, __pyx_v_lcpl, __pyx_v_lapl);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5l.pyx":142
+ * 
+ * 
+ *     def create_external(self, char* link_name, char* file_name, char* obj_name,             # <<<<<<<<<<<<<<
+ *         PropID lcpl=None, PropID lapl=None):
+ *         """(STRING link_name, STRING file_name, STRING obj_name,
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5l_9LinkProxy_10create_external(struct __pyx_obj_4h5py_3h5l_LinkProxy *__pyx_v_self, char *__pyx_v_link_name, char *__pyx_v_file_name, char *__pyx_v_obj_name, struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_lcpl, struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_lapl) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("create_external", 0);
+
+  /* "h5py/h5l.pyx":150
+ *         """
+ *         H5Lcreate_external(file_name, obj_name, self.id, link_name,
+ *             pdefault(lcpl), pdefault(lapl))             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Lcreate_external(__pyx_v_file_name, __pyx_v_obj_name, __pyx_v_self->id, __pyx_v_link_name, __pyx_f_4h5py_8_objects_pdefault(((struct __pyx_obj_4h5py_8_objects_ObjectID *)__pyx_v_lcpl)), __pyx_f_4h5py_8_objects_pdefault(((struct __pyx_obj_4h5py_8_objects_ObjectID *)__pyx_v_lapl))); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py.h5l.LinkProxy.create_external", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5l_9LinkProxy_13get_val(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_4h5py_3h5l_9LinkProxy_12get_val[] = "(STRING name, PropLAID lapl=None) => STRING or TUPLE(file, obj)\n\n        Get the string value of a soft link, or a 2-tuple representing\n        the contents of an external link.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5l_9LinkProxy_13get_val(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  char *__pyx_v_name;
+  struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_lapl = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_val (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__name,&__pyx_n_s__lapl,0};
+    PyObject* values[2] = {0,0};
+
+    /* "h5py/h5l.pyx":153
+ * 
+ * 
+ *     def get_val(self, char* name, PropID lapl=None):             # <<<<<<<<<<<<<<
+ *         """(STRING name, PropLAID lapl=None) => STRING or TUPLE(file, obj)
+ * 
+ */
+    values[1] = (PyObject *)((struct __pyx_obj_4h5py_3h5p_PropID *)Py_None);
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__name)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__lapl);
+          if (value) { values[1] = value; kw_args--; }
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_val") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 153; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else {
+      switch (PyTuple_GET_SIZE(__pyx_args)) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+    }
+    __pyx_v_name = PyBytes_AsString(values[0]); if (unlikely((!__pyx_v_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 153; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_lapl = ((struct __pyx_obj_4h5py_3h5p_PropID *)values[1]);
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("get_val", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 153; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5l.LinkProxy.get_val", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_lapl), __pyx_ptype_4h5py_3h5p_PropID, 1, "lapl", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 153; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_pf_4h5py_3h5l_9LinkProxy_12get_val(((struct __pyx_obj_4h5py_3h5l_LinkProxy *)__pyx_v_self), __pyx_v_name, __pyx_v_lapl);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_4h5py_3h5l_9LinkProxy_12get_val(struct __pyx_obj_4h5py_3h5l_LinkProxy *__pyx_v_self, char *__pyx_v_name, struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_lapl) {
+  hid_t __pyx_v_plist;
+  H5L_info_t __pyx_v_info;
+  size_t __pyx_v_buf_size;
+  char *__pyx_v_buf;
+  char *__pyx_v_ext_file_name;
+  char *__pyx_v_ext_obj_name;
+  unsigned int __pyx_v_wtf;
+  PyObject *__pyx_v_py_retval = NULL;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  int __pyx_t_2;
+  int __pyx_t_3;
+  int __pyx_t_4;
+  PyObject *__pyx_t_5 = NULL;
+  size_t __pyx_t_6;
+  void *__pyx_t_7;
+  PyObject *__pyx_t_8 = NULL;
+  PyObject *__pyx_t_9 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_val", 0);
+
+  /* "h5py/h5l.pyx":159
+ *         the contents of an external link.
+ *         """
+ *         cdef hid_t plist = pdefault(lapl)             # <<<<<<<<<<<<<<
+ *         cdef H5L_info_t info
+ *         cdef size_t buf_size
+ */
+  __pyx_v_plist = __pyx_f_4h5py_8_objects_pdefault(((struct __pyx_obj_4h5py_8_objects_ObjectID *)__pyx_v_lapl));
+
+  /* "h5py/h5l.pyx":162
+ *         cdef H5L_info_t info
+ *         cdef size_t buf_size
+ *         cdef char* buf = NULL             # <<<<<<<<<<<<<<
+ *         cdef char* ext_file_name = NULL
+ *         cdef char* ext_obj_name = NULL
+ */
+  __pyx_v_buf = NULL;
+
+  /* "h5py/h5l.pyx":163
+ *         cdef size_t buf_size
+ *         cdef char* buf = NULL
+ *         cdef char* ext_file_name = NULL             # <<<<<<<<<<<<<<
+ *         cdef char* ext_obj_name = NULL
+ *         cdef unsigned int wtf = 0
+ */
+  __pyx_v_ext_file_name = NULL;
+
+  /* "h5py/h5l.pyx":164
+ *         cdef char* buf = NULL
+ *         cdef char* ext_file_name = NULL
+ *         cdef char* ext_obj_name = NULL             # <<<<<<<<<<<<<<
+ *         cdef unsigned int wtf = 0
+ * 
+ */
+  __pyx_v_ext_obj_name = NULL;
+
+  /* "h5py/h5l.pyx":165
+ *         cdef char* ext_file_name = NULL
+ *         cdef char* ext_obj_name = NULL
+ *         cdef unsigned int wtf = 0             # <<<<<<<<<<<<<<
+ * 
+ *         H5Lget_info(self.id, name, &info, plist)
+ */
+  __pyx_v_wtf = 0;
+
+  /* "h5py/h5l.pyx":167
+ *         cdef unsigned int wtf = 0
+ * 
+ *         H5Lget_info(self.id, name, &info, plist)             # <<<<<<<<<<<<<<
+ *         if info.type != H5L_TYPE_SOFT and info.type != H5L_TYPE_EXTERNAL:
+ *             raise TypeError("Link must be either a soft or external link")
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Lget_info(__pyx_v_self->id, __pyx_v_name, (&__pyx_v_info), __pyx_v_plist); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5l.pyx":168
+ * 
+ *         H5Lget_info(self.id, name, &info, plist)
+ *         if info.type != H5L_TYPE_SOFT and info.type != H5L_TYPE_EXTERNAL:             # <<<<<<<<<<<<<<
+ *             raise TypeError("Link must be either a soft or external link")
+ * 
+ */
+  __pyx_t_2 = (__pyx_v_info.type != H5L_TYPE_SOFT);
+  if (__pyx_t_2) {
+    __pyx_t_3 = (__pyx_v_info.type != H5L_TYPE_EXTERNAL);
+    __pyx_t_4 = __pyx_t_3;
+  } else {
+    __pyx_t_4 = __pyx_t_2;
+  }
+  if (__pyx_t_4) {
+
+    /* "h5py/h5l.pyx":169
+ *         H5Lget_info(self.id, name, &info, plist)
+ *         if info.type != H5L_TYPE_SOFT and info.type != H5L_TYPE_EXTERNAL:
+ *             raise TypeError("Link must be either a soft or external link")             # <<<<<<<<<<<<<<
+ * 
+ *         buf_size = info.u.val_size
+ */
+    __pyx_t_5 = PyObject_Call(__pyx_builtin_TypeError, ((PyObject *)__pyx_k_tuple_4), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 169; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_Raise(__pyx_t_5, 0, 0, 0);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 169; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  /* "h5py/h5l.pyx":171
+ *             raise TypeError("Link must be either a soft or external link")
+ * 
+ *         buf_size = info.u.val_size             # <<<<<<<<<<<<<<
+ *         buf = <char*>emalloc(buf_size)
+ *         try:
+ */
+  __pyx_t_6 = __pyx_v_info.u.val_size;
+  __pyx_v_buf_size = __pyx_t_6;
+
+  /* "h5py/h5l.pyx":172
+ * 
+ *         buf_size = info.u.val_size
+ *         buf = <char*>emalloc(buf_size)             # <<<<<<<<<<<<<<
+ *         try:
+ *             H5Lget_val(self.id, name, buf, buf_size, plist)
+ */
+  __pyx_t_7 = __pyx_f_4h5py_5utils_emalloc(__pyx_v_buf_size); if (unlikely(__pyx_t_7 == NULL && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v_buf = ((char *)__pyx_t_7);
+
+  /* "h5py/h5l.pyx":173
+ *         buf_size = info.u.val_size
+ *         buf = <char*>emalloc(buf_size)
+ *         try:             # <<<<<<<<<<<<<<
+ *             H5Lget_val(self.id, name, buf, buf_size, plist)
+ *             if info.type == H5L_TYPE_SOFT:
+ */
+  /*try:*/ {
+
+    /* "h5py/h5l.pyx":174
+ *         buf = <char*>emalloc(buf_size)
+ *         try:
+ *             H5Lget_val(self.id, name, buf, buf_size, plist)             # <<<<<<<<<<<<<<
+ *             if info.type == H5L_TYPE_SOFT:
+ *                 py_retval = buf
+ */
+    __pyx_t_1 = __pyx_f_4h5py_4defs_H5Lget_val(__pyx_v_self->id, __pyx_v_name, __pyx_v_buf, __pyx_v_buf_size, __pyx_v_plist); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 174; __pyx_clineno = __LINE__; goto __pyx_L5;}
+
+    /* "h5py/h5l.pyx":175
+ *         try:
+ *             H5Lget_val(self.id, name, buf, buf_size, plist)
+ *             if info.type == H5L_TYPE_SOFT:             # <<<<<<<<<<<<<<
+ *                 py_retval = buf
+ *             else:
+ */
+    __pyx_t_4 = (__pyx_v_info.type == H5L_TYPE_SOFT);
+    if (__pyx_t_4) {
+
+      /* "h5py/h5l.pyx":176
+ *             H5Lget_val(self.id, name, buf, buf_size, plist)
+ *             if info.type == H5L_TYPE_SOFT:
+ *                 py_retval = buf             # <<<<<<<<<<<<<<
+ *             else:
+ *                 H5Lunpack_elink_val(buf, buf_size, &wtf, &ext_file_name, &ext_obj_name)
+ */
+      __pyx_t_5 = PyBytes_FromString(__pyx_v_buf); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 176; __pyx_clineno = __LINE__; goto __pyx_L5;}
+      __Pyx_GOTREF(((PyObject *)__pyx_t_5));
+      __pyx_v_py_retval = ((PyObject *)__pyx_t_5);
+      __pyx_t_5 = 0;
+      goto __pyx_L7;
+    }
+    /*else*/ {
+
+      /* "h5py/h5l.pyx":178
+ *                 py_retval = buf
+ *             else:
+ *                 H5Lunpack_elink_val(buf, buf_size, &wtf, &ext_file_name, &ext_obj_name)             # <<<<<<<<<<<<<<
+ *                 py_retval = (bytes(ext_file_name), bytes(ext_obj_name))
+ *         finally:
+ */
+      __pyx_t_1 = __pyx_f_4h5py_4defs_H5Lunpack_elink_val(__pyx_v_buf, __pyx_v_buf_size, (&__pyx_v_wtf), (&__pyx_v_ext_file_name), (&__pyx_v_ext_obj_name)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 178; __pyx_clineno = __LINE__; goto __pyx_L5;}
+
+      /* "h5py/h5l.pyx":179
+ *             else:
+ *                 H5Lunpack_elink_val(buf, buf_size, &wtf, &ext_file_name, &ext_obj_name)
+ *                 py_retval = (bytes(ext_file_name), bytes(ext_obj_name))             # <<<<<<<<<<<<<<
+ *         finally:
+ *             efree(buf)
+ */
+      __pyx_t_5 = PyBytes_FromString(__pyx_v_ext_file_name); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 179; __pyx_clineno = __LINE__; goto __pyx_L5;}
+      __Pyx_GOTREF(((PyObject *)__pyx_t_5));
+      __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 179; __pyx_clineno = __LINE__; goto __pyx_L5;}
+      __Pyx_GOTREF(__pyx_t_8);
+      PyTuple_SET_ITEM(__pyx_t_8, 0, ((PyObject *)__pyx_t_5));
+      __Pyx_GIVEREF(((PyObject *)__pyx_t_5));
+      __pyx_t_5 = 0;
+      __pyx_t_5 = PyObject_Call(((PyObject *)((PyObject*)(&PyBytes_Type))), ((PyObject *)__pyx_t_8), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 179; __pyx_clineno = __LINE__; goto __pyx_L5;}
+      __Pyx_GOTREF(__pyx_t_5);
+      __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0;
+      __pyx_t_8 = PyBytes_FromString(__pyx_v_ext_obj_name); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 179; __pyx_clineno = __LINE__; goto __pyx_L5;}
+      __Pyx_GOTREF(((PyObject *)__pyx_t_8));
+      __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 179; __pyx_clineno = __LINE__; goto __pyx_L5;}
+      __Pyx_GOTREF(__pyx_t_9);
+      PyTuple_SET_ITEM(__pyx_t_9, 0, ((PyObject *)__pyx_t_8));
+      __Pyx_GIVEREF(((PyObject *)__pyx_t_8));
+      __pyx_t_8 = 0;
+      __pyx_t_8 = PyObject_Call(((PyObject *)((PyObject*)(&PyBytes_Type))), ((PyObject *)__pyx_t_9), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 179; __pyx_clineno = __LINE__; goto __pyx_L5;}
+      __Pyx_GOTREF(__pyx_t_8);
+      __Pyx_DECREF(((PyObject *)__pyx_t_9)); __pyx_t_9 = 0;
+      __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 179; __pyx_clineno = __LINE__; goto __pyx_L5;}
+      __Pyx_GOTREF(__pyx_t_9);
+      PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_5);
+      __Pyx_GIVEREF(__pyx_t_5);
+      PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_8);
+      __Pyx_GIVEREF(__pyx_t_8);
+      __pyx_t_5 = 0;
+      __pyx_t_8 = 0;
+      __pyx_v_py_retval = ((PyObject *)__pyx_t_9);
+      __pyx_t_9 = 0;
+    }
+    __pyx_L7:;
+  }
+
+  /* "h5py/h5l.pyx":181
+ *                 py_retval = (bytes(ext_file_name), bytes(ext_obj_name))
+ *         finally:
+ *             efree(buf)             # <<<<<<<<<<<<<<
+ * 
+ *         return py_retval
+ */
+  /*finally:*/ {
+    int __pyx_why;
+    PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb;
+    int __pyx_exc_lineno;
+    __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
+    __pyx_why = 0; goto __pyx_L6;
+    __pyx_L5: {
+      __pyx_why = 4;
+      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+      __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb);
+      __pyx_exc_lineno = __pyx_lineno;
+      goto __pyx_L6;
+    }
+    __pyx_L6:;
+    __pyx_f_4h5py_5utils_efree(__pyx_v_buf);
+    switch (__pyx_why) {
+      case 4: {
+        __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb);
+        __pyx_lineno = __pyx_exc_lineno;
+        __pyx_exc_type = 0;
+        __pyx_exc_value = 0;
+        __pyx_exc_tb = 0;
+        goto __pyx_L1_error;
+      }
+    }
+  }
+
+  /* "h5py/h5l.pyx":183
+ *             efree(buf)
+ * 
+ *         return py_retval             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_py_retval);
+  __pyx_r = __pyx_v_py_retval;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_8);
+  __Pyx_XDECREF(__pyx_t_9);
+  __Pyx_AddTraceback("h5py.h5l.LinkProxy.get_val", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_py_retval);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5l_9LinkProxy_15move(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_4h5py_3h5l_9LinkProxy_14move[] = " (STRING src_name, GroupID dst_loc, STRING dst_name)\n\n        Move a link to a new location in the file.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5l_9LinkProxy_15move(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  char *__pyx_v_src_name;
+  struct __pyx_obj_4h5py_3h5g_GroupID *__pyx_v_dst_loc = 0;
+  char *__pyx_v_dst_name;
+  struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_lcpl = 0;
+  struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_lapl = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("move (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__src_name,&__pyx_n_s__dst_loc,&__pyx_n_s__dst_name,&__pyx_n_s__lcpl,&__pyx_n_s__lapl,0};
+    PyObject* values[5] = {0,0,0,0,0};
+
+    /* "h5py/h5l.pyx":187
+ * 
+ *     def move(self, char* src_name, GroupID dst_loc not None, char* dst_name,
+ *         PropID lcpl=None, PropID lapl=None):             # <<<<<<<<<<<<<<
+ *         """ (STRING src_name, GroupID dst_loc, STRING dst_name)
+ * 
+ */
+    values[3] = (PyObject *)((struct __pyx_obj_4h5py_3h5p_PropID *)Py_None);
+    values[4] = (PyObject *)((struct __pyx_obj_4h5py_3h5p_PropID *)Py_None);
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__src_name)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__dst_loc)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("move", 0, 3, 5, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+        case  2:
+        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__dst_name)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("move", 0, 3, 5, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+        case  3:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__lcpl);
+          if (value) { values[3] = value; kw_args--; }
+        }
+        case  4:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__lapl);
+          if (value) { values[4] = value; kw_args--; }
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "move") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else {
+      switch (PyTuple_GET_SIZE(__pyx_args)) {
+        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+    }
+    __pyx_v_src_name = PyBytes_AsString(values[0]); if (unlikely((!__pyx_v_src_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_dst_loc = ((struct __pyx_obj_4h5py_3h5g_GroupID *)values[1]);
+    __pyx_v_dst_name = PyBytes_AsString(values[2]); if (unlikely((!__pyx_v_dst_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_lcpl = ((struct __pyx_obj_4h5py_3h5p_PropID *)values[3]);
+    __pyx_v_lapl = ((struct __pyx_obj_4h5py_3h5p_PropID *)values[4]);
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("move", 0, 3, 5, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5l.LinkProxy.move", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_dst_loc), __pyx_ptype_4h5py_3h5g_GroupID, 0, "dst_loc", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_lcpl), __pyx_ptype_4h5py_3h5p_PropID, 1, "lcpl", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_lapl), __pyx_ptype_4h5py_3h5p_PropID, 1, "lapl", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_pf_4h5py_3h5l_9LinkProxy_14move(((struct __pyx_obj_4h5py_3h5l_LinkProxy *)__pyx_v_self), __pyx_v_src_name, __pyx_v_dst_loc, __pyx_v_dst_name, __pyx_v_lcpl, __pyx_v_lapl);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5l.pyx":186
+ * 
+ * 
+ *     def move(self, char* src_name, GroupID dst_loc not None, char* dst_name,             # <<<<<<<<<<<<<<
+ *         PropID lcpl=None, PropID lapl=None):
+ *         """ (STRING src_name, GroupID dst_loc, STRING dst_name)
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5l_9LinkProxy_14move(struct __pyx_obj_4h5py_3h5l_LinkProxy *__pyx_v_self, char *__pyx_v_src_name, struct __pyx_obj_4h5py_3h5g_GroupID *__pyx_v_dst_loc, char *__pyx_v_dst_name, struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_lcpl, struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_lapl) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("move", 0);
+
+  /* "h5py/h5l.pyx":193
+ *         """
+ *         H5Lmove(self.id, src_name, dst_loc.id, dst_name, pdefault(lcpl),
+ *                 pdefault(lapl))             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Lmove(__pyx_v_self->id, __pyx_v_src_name, __pyx_v_dst_loc->__pyx_base.id, __pyx_v_dst_name, __pyx_f_4h5py_8_objects_pdefault(((struct __pyx_obj_4h5py_8_objects_ObjectID *)__pyx_v_lcpl)), __pyx_f_4h5py_8_objects_pdefault(((struct __pyx_obj_4h5py_8_objects_ObjectID *)__pyx_v_lapl))); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py.h5l.LinkProxy.move", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5l_9LinkProxy_17exists(PyObject *__pyx_v_self, PyObject *__pyx_arg_name); /*proto*/
+static char __pyx_doc_4h5py_3h5l_9LinkProxy_16exists[] = " (STRING name) => BOOL\n\n            Check if a link of the specified name exists in this group.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5l_9LinkProxy_17exists(PyObject *__pyx_v_self, PyObject *__pyx_arg_name) {
+  char *__pyx_v_name;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("exists (wrapper)", 0);
+  assert(__pyx_arg_name); {
+    __pyx_v_name = PyBytes_AsString(__pyx_arg_name); if (unlikely((!__pyx_v_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 196; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5l.LinkProxy.exists", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_3h5l_9LinkProxy_16exists(((struct __pyx_obj_4h5py_3h5l_LinkProxy *)__pyx_v_self), ((char *)__pyx_v_name));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5l.pyx":196
+ * 
+ * 
+ *     def exists(self, char* name):             # <<<<<<<<<<<<<<
+ *         """ (STRING name) => BOOL
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5l_9LinkProxy_16exists(struct __pyx_obj_4h5py_3h5l_LinkProxy *__pyx_v_self, char *__pyx_v_name) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  htri_t __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("exists", 0);
+
+  /* "h5py/h5l.pyx":201
+ *             Check if a link of the specified name exists in this group.
+ *         """
+ *         return <bint>(H5Lexists(self.id, name, H5P_DEFAULT))             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Lexists(__pyx_v_self->id, __pyx_v_name, H5P_DEFAULT); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyBool_FromLong(((int)__pyx_t_1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5l.LinkProxy.exists", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5l_9LinkProxy_19get_info(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_4h5py_3h5l_9LinkProxy_18get_info[] = "(STRING name=, INT index=, **kwds) => LinkInfo instance\n\n        Get information about a link, either by name or its index.\n\n        Keywords:\n        ";
+static PyObject *__pyx_pw_4h5py_3h5l_9LinkProxy_19get_info(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  char *__pyx_v_name;
+  CYTHON_UNUSED int __pyx_v_index;
+  struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_lapl = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_info (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__name,&__pyx_n_s__index,&__pyx_n_s__lapl,0};
+    PyObject* values[3] = {0,0,0};
+
+    /* "h5py/h5l.pyx":204
+ * 
+ * 
+ *     def get_info(self, char* name, int index=-1, *, PropID lapl=None):             # <<<<<<<<<<<<<<
+ *         """(STRING name=, INT index=, **kwds) => LinkInfo instance
+ * 
+ */
+    values[2] = (PyObject *)((struct __pyx_obj_4h5py_3h5p_PropID *)Py_None);
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__name)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__index);
+          if (value) { values[1] = value; kw_args--; }
+        }
+      }
+      if (kw_args == 1) {
+        const Py_ssize_t index = 2;
+        PyObject* value = PyDict_GetItem(__pyx_kwds, *__pyx_pyargnames[index]);
+        if (value) { values[index] = value; kw_args--; }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_info") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 204; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else {
+      switch (PyTuple_GET_SIZE(__pyx_args)) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+    }
+    __pyx_v_name = PyBytes_AsString(values[0]); if (unlikely((!__pyx_v_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 204; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    if (values[1]) {
+      __pyx_v_index = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_index == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 204; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    } else {
+      __pyx_v_index = ((int)-1);
+    }
+    __pyx_v_lapl = ((struct __pyx_obj_4h5py_3h5p_PropID *)values[2]);
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("get_info", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 204; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5l.LinkProxy.get_info", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_lapl), __pyx_ptype_4h5py_3h5p_PropID, 1, "lapl", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 204; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_pf_4h5py_3h5l_9LinkProxy_18get_info(((struct __pyx_obj_4h5py_3h5l_LinkProxy *)__pyx_v_self), __pyx_v_name, __pyx_v_index, __pyx_v_lapl);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_4h5py_3h5l_9LinkProxy_18get_info(struct __pyx_obj_4h5py_3h5l_LinkProxy *__pyx_v_self, char *__pyx_v_name, CYTHON_UNUSED int __pyx_v_index, struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_lapl) {
+  struct __pyx_obj_4h5py_3h5l_LinkInfo *__pyx_v_info = 0;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  herr_t __pyx_t_2;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_info", 0);
+
+  /* "h5py/h5l.pyx":211
+ *         Keywords:
+ *         """
+ *         cdef LinkInfo info = LinkInfo()             # <<<<<<<<<<<<<<
+ *         H5Lget_info(self.id, name, &info.infostruct, pdefault(lapl))
+ *         return info
+ */
+  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4h5py_3h5l_LinkInfo)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 211; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_info = ((struct __pyx_obj_4h5py_3h5l_LinkInfo *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "h5py/h5l.pyx":212
+ *         """
+ *         cdef LinkInfo info = LinkInfo()
+ *         H5Lget_info(self.id, name, &info.infostruct, pdefault(lapl))             # <<<<<<<<<<<<<<
+ *         return info
+ * 
+ */
+  __pyx_t_2 = __pyx_f_4h5py_4defs_H5Lget_info(__pyx_v_self->id, __pyx_v_name, (&__pyx_v_info->infostruct), __pyx_f_4h5py_8_objects_pdefault(((struct __pyx_obj_4h5py_8_objects_ObjectID *)__pyx_v_lapl))); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5l.pyx":213
+ *         cdef LinkInfo info = LinkInfo()
+ *         H5Lget_info(self.id, name, &info.infostruct, pdefault(lapl))
+ *         return info             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(((PyObject *)__pyx_v_info));
+  __pyx_r = ((PyObject *)__pyx_v_info);
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py.h5l.LinkProxy.get_info", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_info);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5l_9LinkProxy_21visit(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_4h5py_3h5l_9LinkProxy_20visit[] = "(CALLABLE func, **kwds) => <Return value from func>\n\n        Iterate a function or callable object over all groups below this\n        one.  Your callable should conform to the signature::\n\n            func(STRING name) => Result\n\n        or if the keyword argument \"info\" is True::\n\n            func(STRING name, LinkInfo info) => Result\n\n        Returning None or a logical False continues iteration; returning\n        a [...]
+static PyObject *__pyx_pw_4h5py_3h5l_9LinkProxy_21visit(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_func = 0;
+  int __pyx_v_idx_type;
+  int __pyx_v_order;
+  char *__pyx_v_obj_name;
+  struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_lapl = 0;
+  int __pyx_v_info;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("visit (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__func,&__pyx_n_s__idx_type,&__pyx_n_s__order,&__pyx_n_s__obj_name,&__pyx_n_s__lapl,&__pyx_n_s__info,0};
+    PyObject* values[6] = {0,0,0,0,0,0};
+
+    /* "h5py/h5l.pyx":218
+ *     def visit(self, object func, *,
+ *               int idx_type=H5_INDEX_NAME, int order=H5_ITER_NATIVE,
+ *               char* obj_name='.', PropID lapl=None, bint info=0):             # <<<<<<<<<<<<<<
+ *         """(CALLABLE func, **kwds) => <Return value from func>
+ * 
+ */
+    values[4] = (PyObject *)((struct __pyx_obj_4h5py_3h5p_PropID *)Py_None);
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__func)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+      }
+      if (kw_args > 0 && likely(kw_args <= 5)) {
+        Py_ssize_t index;
+        for (index = 1; index < 6 && kw_args > 0; index++) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, *__pyx_pyargnames[index]);
+          if (value) { values[index] = value; kw_args--; }
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "visit") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 216; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+    }
+    __pyx_v_func = values[0];
+    if (values[1]) {
+      __pyx_v_idx_type = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_idx_type == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 217; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    } else {
+      __pyx_v_idx_type = __pyx_k_5;
+    }
+    if (values[2]) {
+      __pyx_v_order = __Pyx_PyInt_AsInt(values[2]); if (unlikely((__pyx_v_order == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 217; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    } else {
+      __pyx_v_order = __pyx_k_6;
+    }
+    if (values[3]) {
+      __pyx_v_obj_name = PyBytes_AsString(values[3]); if (unlikely((!__pyx_v_obj_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 218; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    } else {
+      __pyx_v_obj_name = ((char *)__pyx_k_7);
+    }
+    __pyx_v_lapl = ((struct __pyx_obj_4h5py_3h5p_PropID *)values[4]);
+    if (values[5]) {
+      __pyx_v_info = __Pyx_PyObject_IsTrue(values[5]); if (unlikely((__pyx_v_info == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 218; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    } else {
+      __pyx_v_info = ((int)0);
+    }
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("visit", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 216; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5l.LinkProxy.visit", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_lapl), __pyx_ptype_4h5py_3h5p_PropID, 1, "lapl", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 218; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_pf_4h5py_3h5l_9LinkProxy_20visit(((struct __pyx_obj_4h5py_3h5l_LinkProxy *)__pyx_v_self), __pyx_v_func, __pyx_v_idx_type, __pyx_v_order, __pyx_v_obj_name, __pyx_v_lapl, __pyx_v_info);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5l.pyx":216
+ * 
+ * 
+ *     def visit(self, object func, *,             # <<<<<<<<<<<<<<
+ *               int idx_type=H5_INDEX_NAME, int order=H5_ITER_NATIVE,
+ *               char* obj_name='.', PropID lapl=None, bint info=0):
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5l_9LinkProxy_20visit(struct __pyx_obj_4h5py_3h5l_LinkProxy *__pyx_v_self, PyObject *__pyx_v_func, int __pyx_v_idx_type, int __pyx_v_order, char *__pyx_v_obj_name, struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_lapl, int __pyx_v_info) {
+  struct __pyx_obj_4h5py_3h5l__LinkVisitor *__pyx_v_it = 0;
+  H5L_iterate_t __pyx_v_cfunc;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  herr_t __pyx_t_3;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("visit", 0);
+
+  /* "h5py/h5l.pyx":246
+ *         INT order (h5.ITER_NATIVE)
+ *         """
+ *         cdef _LinkVisitor it = _LinkVisitor(func)             # <<<<<<<<<<<<<<
+ *         cdef H5L_iterate_t cfunc
+ * 
+ */
+  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 246; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(__pyx_v_func);
+  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_func);
+  __Pyx_GIVEREF(__pyx_v_func);
+  __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4h5py_3h5l__LinkVisitor)), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 246; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
+  __pyx_v_it = ((struct __pyx_obj_4h5py_3h5l__LinkVisitor *)__pyx_t_2);
+  __pyx_t_2 = 0;
+
+  /* "h5py/h5l.pyx":249
+ *         cdef H5L_iterate_t cfunc
+ * 
+ *         if info:             # <<<<<<<<<<<<<<
+ *             cfunc = cb_link_iterate
+ *         else:
+ */
+  if (__pyx_v_info) {
+
+    /* "h5py/h5l.pyx":250
+ * 
+ *         if info:
+ *             cfunc = cb_link_iterate             # <<<<<<<<<<<<<<
+ *         else:
+ *             cfunc = cb_link_simple
+ */
+    __pyx_v_cfunc = __pyx_f_4h5py_3h5l_cb_link_iterate;
+    goto __pyx_L3;
+  }
+  /*else*/ {
+
+    /* "h5py/h5l.pyx":252
+ *             cfunc = cb_link_iterate
+ *         else:
+ *             cfunc = cb_link_simple             # <<<<<<<<<<<<<<
+ * 
+ *         H5Lvisit_by_name(self.id, obj_name, <H5_index_t>idx_type,
+ */
+    __pyx_v_cfunc = __pyx_f_4h5py_3h5l_cb_link_simple;
+  }
+  __pyx_L3:;
+
+  /* "h5py/h5l.pyx":255
+ * 
+ *         H5Lvisit_by_name(self.id, obj_name, <H5_index_t>idx_type,
+ *             <H5_iter_order_t>order, cfunc, <void*>it, pdefault(lapl))             # <<<<<<<<<<<<<<
+ * 
+ *         return it.retval
+ */
+  __pyx_t_3 = __pyx_f_4h5py_4defs_H5Lvisit_by_name(__pyx_v_self->id, __pyx_v_obj_name, ((H5_index_t)__pyx_v_idx_type), ((H5_iter_order_t)__pyx_v_order), __pyx_v_cfunc, ((void *)__pyx_v_it), __pyx_f_4h5py_8_objects_pdefault(((struct __pyx_obj_4h5py_8_objects_ObjectID *)__pyx_v_lapl))); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 254; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5l.pyx":257
+ *             <H5_iter_order_t>order, cfunc, <void*>it, pdefault(lapl))
+ * 
+ *         return it.retval             # <<<<<<<<<<<<<<
+ * 
+ *     def iterate(self, object func, *,
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_it->retval);
+  __pyx_r = __pyx_v_it->retval;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5l.LinkProxy.visit", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_it);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5l_9LinkProxy_23iterate(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_4h5py_3h5l_9LinkProxy_22iterate[] = "(CALLABLE func, **kwds) => <Return value from func>, <index to restart at>\n\n        Iterate a function or callable object over all groups in this\n        one.  Your callable should conform to the signature::\n\n            func(STRING name) => Result\n\n        or if the keyword argument \"info\" is True::\n\n            func(STRING name, LinkInfo info) => Result\n\n        Returning None or a logical False continues iteration [...]
+static PyObject *__pyx_pw_4h5py_3h5l_9LinkProxy_23iterate(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_func = 0;
+  int __pyx_v_idx_type;
+  int __pyx_v_order;
+  char *__pyx_v_obj_name;
+  struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_lapl = 0;
+  int __pyx_v_info;
+  hsize_t __pyx_v_idx;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("iterate (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__func,&__pyx_n_s__idx_type,&__pyx_n_s__order,&__pyx_n_s__obj_name,&__pyx_n_s__lapl,&__pyx_n_s__info,&__pyx_n_s__idx,0};
+    PyObject* values[7] = {0,0,0,0,0,0,0};
+
+    /* "h5py/h5l.pyx":261
+ *     def iterate(self, object func, *,
+ *               int idx_type=H5_INDEX_NAME, int order=H5_ITER_NATIVE,
+ *               char* obj_name='.', PropID lapl=None, bint info=0,             # <<<<<<<<<<<<<<
+ *               hsize_t idx=0):
+ *         """(CALLABLE func, **kwds) => <Return value from func>, <index to restart at>
+ */
+    values[4] = (PyObject *)((struct __pyx_obj_4h5py_3h5p_PropID *)Py_None);
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__func)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+      }
+      if (kw_args > 0 && likely(kw_args <= 6)) {
+        Py_ssize_t index;
+        for (index = 1; index < 7 && kw_args > 0; index++) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, *__pyx_pyargnames[index]);
+          if (value) { values[index] = value; kw_args--; }
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "iterate") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 259; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+    }
+    __pyx_v_func = values[0];
+    if (values[1]) {
+      __pyx_v_idx_type = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_idx_type == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 260; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    } else {
+      __pyx_v_idx_type = __pyx_k_8;
+    }
+    if (values[2]) {
+      __pyx_v_order = __Pyx_PyInt_AsInt(values[2]); if (unlikely((__pyx_v_order == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 260; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    } else {
+      __pyx_v_order = __pyx_k_9;
+    }
+    if (values[3]) {
+      __pyx_v_obj_name = PyBytes_AsString(values[3]); if (unlikely((!__pyx_v_obj_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 261; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    } else {
+      __pyx_v_obj_name = ((char *)__pyx_k_7);
+    }
+    __pyx_v_lapl = ((struct __pyx_obj_4h5py_3h5p_PropID *)values[4]);
+    if (values[5]) {
+      __pyx_v_info = __Pyx_PyObject_IsTrue(values[5]); if (unlikely((__pyx_v_info == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 261; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    } else {
+      __pyx_v_info = ((int)0);
+    }
+    if (values[6]) {
+      __pyx_v_idx = __Pyx_PyInt_from_py_hsize_t(values[6]); if (unlikely((__pyx_v_idx == (hsize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 262; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    } else {
+      __pyx_v_idx = ((hsize_t)0);
+    }
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("iterate", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 259; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5l.LinkProxy.iterate", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_lapl), __pyx_ptype_4h5py_3h5p_PropID, 1, "lapl", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 261; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_pf_4h5py_3h5l_9LinkProxy_22iterate(((struct __pyx_obj_4h5py_3h5l_LinkProxy *)__pyx_v_self), __pyx_v_func, __pyx_v_idx_type, __pyx_v_order, __pyx_v_obj_name, __pyx_v_lapl, __pyx_v_info, __pyx_v_idx);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5l.pyx":259
+ *         return it.retval
+ * 
+ *     def iterate(self, object func, *,             # <<<<<<<<<<<<<<
+ *               int idx_type=H5_INDEX_NAME, int order=H5_ITER_NATIVE,
+ *               char* obj_name='.', PropID lapl=None, bint info=0,
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5l_9LinkProxy_22iterate(struct __pyx_obj_4h5py_3h5l_LinkProxy *__pyx_v_self, PyObject *__pyx_v_func, int __pyx_v_idx_type, int __pyx_v_order, char *__pyx_v_obj_name, struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_lapl, int __pyx_v_info, hsize_t __pyx_v_idx) {
+  struct __pyx_obj_4h5py_3h5l__LinkVisitor *__pyx_v_it = 0;
+  H5L_iterate_t __pyx_v_cfunc;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  herr_t __pyx_t_3;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("iterate", 0);
+
+  /* "h5py/h5l.pyx":293
+ *             The index to start iterating at
+ *         """
+ *         cdef _LinkVisitor it = _LinkVisitor(func)             # <<<<<<<<<<<<<<
+ *         cdef H5L_iterate_t cfunc
+ * 
+ */
+  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 293; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(__pyx_v_func);
+  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_func);
+  __Pyx_GIVEREF(__pyx_v_func);
+  __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4h5py_3h5l__LinkVisitor)), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 293; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
+  __pyx_v_it = ((struct __pyx_obj_4h5py_3h5l__LinkVisitor *)__pyx_t_2);
+  __pyx_t_2 = 0;
+
+  /* "h5py/h5l.pyx":296
+ *         cdef H5L_iterate_t cfunc
+ * 
+ *         if info:             # <<<<<<<<<<<<<<
+ *             cfunc = cb_link_iterate
+ *         else:
+ */
+  if (__pyx_v_info) {
+
+    /* "h5py/h5l.pyx":297
+ * 
+ *         if info:
+ *             cfunc = cb_link_iterate             # <<<<<<<<<<<<<<
+ *         else:
+ *             cfunc = cb_link_simple
+ */
+    __pyx_v_cfunc = __pyx_f_4h5py_3h5l_cb_link_iterate;
+    goto __pyx_L3;
+  }
+  /*else*/ {
+
+    /* "h5py/h5l.pyx":299
+ *             cfunc = cb_link_iterate
+ *         else:
+ *             cfunc = cb_link_simple             # <<<<<<<<<<<<<<
+ * 
+ *         H5Literate_by_name(self.id, obj_name, <H5_index_t>idx_type,
+ */
+    __pyx_v_cfunc = __pyx_f_4h5py_3h5l_cb_link_simple;
+  }
+  __pyx_L3:;
+
+  /* "h5py/h5l.pyx":303
+ *         H5Literate_by_name(self.id, obj_name, <H5_index_t>idx_type,
+ *             <H5_iter_order_t>order, &idx,
+ *             cfunc, <void*>it, pdefault(lapl))             # <<<<<<<<<<<<<<
+ * 
+ *         return it.retval, idx
+ */
+  __pyx_t_3 = __pyx_f_4h5py_4defs_H5Literate_by_name(__pyx_v_self->id, __pyx_v_obj_name, ((H5_index_t)__pyx_v_idx_type), ((H5_iter_order_t)__pyx_v_order), (&__pyx_v_idx), __pyx_v_cfunc, ((void *)__pyx_v_it), __pyx_f_4h5py_8_objects_pdefault(((struct __pyx_obj_4h5py_8_objects_ObjectID *)__pyx_v_lapl))); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 301; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5l.pyx":305
+ *             cfunc, <void*>it, pdefault(lapl))
+ * 
+ *         return it.retval, idx             # <<<<<<<<<<<<<<
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_2 = __Pyx_PyInt_to_py_hsize_t(__pyx_v_idx); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(__pyx_v_it->retval);
+  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_it->retval);
+  __Pyx_GIVEREF(__pyx_v_it->retval);
+  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2);
+  __Pyx_GIVEREF(__pyx_t_2);
+  __pyx_t_2 = 0;
+  __pyx_r = ((PyObject *)__pyx_t_1);
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5l.LinkProxy.iterate", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_it);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_tp_new_4h5py_3h5l_LinkProxy(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
+  PyObject *o = (*t->tp_alloc)(t, 0);
+  if (!o) return 0;
+  return o;
+}
+
+static void __pyx_tp_dealloc_4h5py_3h5l_LinkProxy(PyObject *o) {
+  (*Py_TYPE(o)->tp_free)(o);
+}
+
+static PyMethodDef __pyx_methods_4h5py_3h5l_LinkProxy[] = {
+  {__Pyx_NAMESTR("create_hard"), (PyCFunction)__pyx_pw_4h5py_3h5l_9LinkProxy_7create_hard, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5l_9LinkProxy_6create_hard)},
+  {__Pyx_NAMESTR("create_soft"), (PyCFunction)__pyx_pw_4h5py_3h5l_9LinkProxy_9create_soft, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5l_9LinkProxy_8create_soft)},
+  {__Pyx_NAMESTR("create_external"), (PyCFunction)__pyx_pw_4h5py_3h5l_9LinkProxy_11create_external, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5l_9LinkProxy_10create_external)},
+  {__Pyx_NAMESTR("get_val"), (PyCFunction)__pyx_pw_4h5py_3h5l_9LinkProxy_13get_val, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5l_9LinkProxy_12get_val)},
+  {__Pyx_NAMESTR("move"), (PyCFunction)__pyx_pw_4h5py_3h5l_9LinkProxy_15move, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5l_9LinkProxy_14move)},
+  {__Pyx_NAMESTR("exists"), (PyCFunction)__pyx_pw_4h5py_3h5l_9LinkProxy_17exists, METH_O, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5l_9LinkProxy_16exists)},
+  {__Pyx_NAMESTR("get_info"), (PyCFunction)__pyx_pw_4h5py_3h5l_9LinkProxy_19get_info, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5l_9LinkProxy_18get_info)},
+  {__Pyx_NAMESTR("visit"), (PyCFunction)__pyx_pw_4h5py_3h5l_9LinkProxy_21visit, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5l_9LinkProxy_20visit)},
+  {__Pyx_NAMESTR("iterate"), (PyCFunction)__pyx_pw_4h5py_3h5l_9LinkProxy_23iterate, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5l_9LinkProxy_22iterate)},
+  {0, 0, 0, 0}
+};
+
+static PyNumberMethods __pyx_tp_as_number_LinkProxy = {
+  0, /*nb_add*/
+  0, /*nb_subtract*/
+  0, /*nb_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_divide*/
+  #endif
+  0, /*nb_remainder*/
+  0, /*nb_divmod*/
+  0, /*nb_power*/
+  0, /*nb_negative*/
+  0, /*nb_positive*/
+  0, /*nb_absolute*/
+  0, /*nb_nonzero*/
+  0, /*nb_invert*/
+  0, /*nb_lshift*/
+  0, /*nb_rshift*/
+  0, /*nb_and*/
+  0, /*nb_xor*/
+  0, /*nb_or*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_coerce*/
+  #endif
+  0, /*nb_int*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_long*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*nb_float*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_oct*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_hex*/
+  #endif
+  0, /*nb_inplace_add*/
+  0, /*nb_inplace_subtract*/
+  0, /*nb_inplace_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_inplace_divide*/
+  #endif
+  0, /*nb_inplace_remainder*/
+  0, /*nb_inplace_power*/
+  0, /*nb_inplace_lshift*/
+  0, /*nb_inplace_rshift*/
+  0, /*nb_inplace_and*/
+  0, /*nb_inplace_xor*/
+  0, /*nb_inplace_or*/
+  0, /*nb_floor_divide*/
+  0, /*nb_true_divide*/
+  0, /*nb_inplace_floor_divide*/
+  0, /*nb_inplace_true_divide*/
+  #if PY_VERSION_HEX >= 0x02050000
+  0, /*nb_index*/
+  #endif
+};
+
+static PySequenceMethods __pyx_tp_as_sequence_LinkProxy = {
+  0, /*sq_length*/
+  0, /*sq_concat*/
+  0, /*sq_repeat*/
+  0, /*sq_item*/
+  0, /*sq_slice*/
+  0, /*sq_ass_item*/
+  0, /*sq_ass_slice*/
+  0, /*sq_contains*/
+  0, /*sq_inplace_concat*/
+  0, /*sq_inplace_repeat*/
+};
+
+static PyMappingMethods __pyx_tp_as_mapping_LinkProxy = {
+  0, /*mp_length*/
+  0, /*mp_subscript*/
+  0, /*mp_ass_subscript*/
+};
+
+static PyBufferProcs __pyx_tp_as_buffer_LinkProxy = {
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getreadbuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getwritebuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getsegcount*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getcharbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_getbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_releasebuffer*/
+  #endif
+};
+
+static PyTypeObject __pyx_type_4h5py_3h5l_LinkProxy = {
+  PyVarObject_HEAD_INIT(0, 0)
+  __Pyx_NAMESTR("h5py.h5l.LinkProxy"), /*tp_name*/
+  sizeof(struct __pyx_obj_4h5py_3h5l_LinkProxy), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_4h5py_3h5l_LinkProxy, /*tp_dealloc*/
+  0, /*tp_print*/
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*tp_repr*/
+  &__pyx_tp_as_number_LinkProxy, /*tp_as_number*/
+  &__pyx_tp_as_sequence_LinkProxy, /*tp_as_sequence*/
+  &__pyx_tp_as_mapping_LinkProxy, /*tp_as_mapping*/
+  __pyx_pw_4h5py_3h5l_9LinkProxy_5__hash__, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  &__pyx_tp_as_buffer_LinkProxy, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
+  __Pyx_DOCSTR("\n        Proxy class which provides access to the HDF5 \"H5L\" API.\n\n        These come attached to GroupID objects as \"obj.links\".  Since every\n        H5L function operates on at least one group, the methods provided\n        operate on their parent group identifier.  For example::\n\n            >>> g = h5g.open(fid, '/')\n            >>> g.links.exists(\"MyGroup\")\n            True\n            >>> g.links.exists(\"FooBar\")\n            False\n\n        * Hash [...]
+  0, /*tp_traverse*/
+  0, /*tp_clear*/
+  __pyx_pw_4h5py_3h5l_9LinkProxy_3__richcmp__, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_4h5py_3h5l_LinkProxy, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  0, /*tp_dictoffset*/
+  __pyx_pw_4h5py_3h5l_9LinkProxy_1__init__, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_4h5py_3h5l_LinkProxy, /*tp_new*/
+  0, /*tp_free*/
+  0, /*tp_is_gc*/
+  0, /*tp_bases*/
+  0, /*tp_mro*/
+  0, /*tp_cache*/
+  0, /*tp_subclasses*/
+  0, /*tp_weaklist*/
+  0, /*tp_del*/
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*tp_version_tag*/
+  #endif
+};
+
+static PyObject *__pyx_tp_new_4h5py_3h5l_LinkInfo(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
+  PyObject *o = (*t->tp_alloc)(t, 0);
+  if (!o) return 0;
+  return o;
+}
+
+static void __pyx_tp_dealloc_4h5py_3h5l_LinkInfo(PyObject *o) {
+  (*Py_TYPE(o)->tp_free)(o);
+}
+
+static PyObject *__pyx_getprop_4h5py_3h5l_8LinkInfo_type(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_4h5py_3h5l_8LinkInfo_4type_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_4h5py_3h5l_8LinkInfo_corder_valid(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_4h5py_3h5l_8LinkInfo_12corder_valid_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_4h5py_3h5l_8LinkInfo_corder(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_4h5py_3h5l_8LinkInfo_6corder_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_4h5py_3h5l_8LinkInfo_cset(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_4h5py_3h5l_8LinkInfo_4cset_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_4h5py_3h5l_8LinkInfo_u(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_4h5py_3h5l_8LinkInfo_1u_1__get__(o);
+}
+
+static PyMethodDef __pyx_methods_4h5py_3h5l_LinkInfo[] = {
+  {0, 0, 0, 0}
+};
+
+static struct PyGetSetDef __pyx_getsets_4h5py_3h5l_LinkInfo[] = {
+  {(char *)"type", __pyx_getprop_4h5py_3h5l_8LinkInfo_type, 0, __Pyx_DOCSTR(__pyx_k_10), 0},
+  {(char *)"corder_valid", __pyx_getprop_4h5py_3h5l_8LinkInfo_corder_valid, 0, __Pyx_DOCSTR(__pyx_k_11), 0},
+  {(char *)"corder", __pyx_getprop_4h5py_3h5l_8LinkInfo_corder, 0, __Pyx_DOCSTR(__pyx_k_12), 0},
+  {(char *)"cset", __pyx_getprop_4h5py_3h5l_8LinkInfo_cset, 0, __Pyx_DOCSTR(__pyx_k_13), 0},
+  {(char *)"u", __pyx_getprop_4h5py_3h5l_8LinkInfo_u, 0, __Pyx_DOCSTR(__pyx_k_14), 0},
+  {0, 0, 0, 0, 0}
+};
+
+static PyNumberMethods __pyx_tp_as_number_LinkInfo = {
+  0, /*nb_add*/
+  0, /*nb_subtract*/
+  0, /*nb_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_divide*/
+  #endif
+  0, /*nb_remainder*/
+  0, /*nb_divmod*/
+  0, /*nb_power*/
+  0, /*nb_negative*/
+  0, /*nb_positive*/
+  0, /*nb_absolute*/
+  0, /*nb_nonzero*/
+  0, /*nb_invert*/
+  0, /*nb_lshift*/
+  0, /*nb_rshift*/
+  0, /*nb_and*/
+  0, /*nb_xor*/
+  0, /*nb_or*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_coerce*/
+  #endif
+  0, /*nb_int*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_long*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*nb_float*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_oct*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_hex*/
+  #endif
+  0, /*nb_inplace_add*/
+  0, /*nb_inplace_subtract*/
+  0, /*nb_inplace_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_inplace_divide*/
+  #endif
+  0, /*nb_inplace_remainder*/
+  0, /*nb_inplace_power*/
+  0, /*nb_inplace_lshift*/
+  0, /*nb_inplace_rshift*/
+  0, /*nb_inplace_and*/
+  0, /*nb_inplace_xor*/
+  0, /*nb_inplace_or*/
+  0, /*nb_floor_divide*/
+  0, /*nb_true_divide*/
+  0, /*nb_inplace_floor_divide*/
+  0, /*nb_inplace_true_divide*/
+  #if PY_VERSION_HEX >= 0x02050000
+  0, /*nb_index*/
+  #endif
+};
+
+static PySequenceMethods __pyx_tp_as_sequence_LinkInfo = {
+  0, /*sq_length*/
+  0, /*sq_concat*/
+  0, /*sq_repeat*/
+  0, /*sq_item*/
+  0, /*sq_slice*/
+  0, /*sq_ass_item*/
+  0, /*sq_ass_slice*/
+  0, /*sq_contains*/
+  0, /*sq_inplace_concat*/
+  0, /*sq_inplace_repeat*/
+};
+
+static PyMappingMethods __pyx_tp_as_mapping_LinkInfo = {
+  0, /*mp_length*/
+  0, /*mp_subscript*/
+  0, /*mp_ass_subscript*/
+};
+
+static PyBufferProcs __pyx_tp_as_buffer_LinkInfo = {
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getreadbuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getwritebuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getsegcount*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getcharbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_getbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_releasebuffer*/
+  #endif
+};
+
+static PyTypeObject __pyx_type_4h5py_3h5l_LinkInfo = {
+  PyVarObject_HEAD_INIT(0, 0)
+  __Pyx_NAMESTR("h5py.h5l.LinkInfo"), /*tp_name*/
+  sizeof(struct __pyx_obj_4h5py_3h5l_LinkInfo), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_4h5py_3h5l_LinkInfo, /*tp_dealloc*/
+  0, /*tp_print*/
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*tp_repr*/
+  &__pyx_tp_as_number_LinkInfo, /*tp_as_number*/
+  &__pyx_tp_as_sequence_LinkInfo, /*tp_as_sequence*/
+  &__pyx_tp_as_mapping_LinkInfo, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  &__pyx_tp_as_buffer_LinkInfo, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
+  0, /*tp_doc*/
+  0, /*tp_traverse*/
+  0, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_4h5py_3h5l_LinkInfo, /*tp_methods*/
+  0, /*tp_members*/
+  __pyx_getsets_4h5py_3h5l_LinkInfo, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  0, /*tp_dictoffset*/
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_4h5py_3h5l_LinkInfo, /*tp_new*/
+  0, /*tp_free*/
+  0, /*tp_is_gc*/
+  0, /*tp_bases*/
+  0, /*tp_mro*/
+  0, /*tp_cache*/
+  0, /*tp_subclasses*/
+  0, /*tp_weaklist*/
+  0, /*tp_del*/
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*tp_version_tag*/
+  #endif
+};
+
+static PyObject *__pyx_tp_new_4h5py_3h5l__LinkVisitor(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
+  struct __pyx_obj_4h5py_3h5l__LinkVisitor *p;
+  PyObject *o = (*t->tp_alloc)(t, 0);
+  if (!o) return 0;
+  p = ((struct __pyx_obj_4h5py_3h5l__LinkVisitor *)o);
+  p->func = Py_None; Py_INCREF(Py_None);
+  p->retval = Py_None; Py_INCREF(Py_None);
+  p->info = ((struct __pyx_obj_4h5py_3h5l_LinkInfo *)Py_None); Py_INCREF(Py_None);
+  return o;
+}
+
+static void __pyx_tp_dealloc_4h5py_3h5l__LinkVisitor(PyObject *o) {
+  struct __pyx_obj_4h5py_3h5l__LinkVisitor *p = (struct __pyx_obj_4h5py_3h5l__LinkVisitor *)o;
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->func);
+  Py_CLEAR(p->retval);
+  Py_CLEAR(p->info);
+  PyObject_GC_Track(o);
+  (*Py_TYPE(o)->tp_free)(o);
+}
+
+static int __pyx_tp_traverse_4h5py_3h5l__LinkVisitor(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_4h5py_3h5l__LinkVisitor *p = (struct __pyx_obj_4h5py_3h5l__LinkVisitor *)o;
+  if (p->func) {
+    e = (*v)(p->func, a); if (e) return e;
+  }
+  if (p->retval) {
+    e = (*v)(p->retval, a); if (e) return e;
+  }
+  if (p->info) {
+    e = (*v)(((PyObject*)p->info), a); if (e) return e;
+  }
+  return 0;
+}
+
+static int __pyx_tp_clear_4h5py_3h5l__LinkVisitor(PyObject *o) {
+  struct __pyx_obj_4h5py_3h5l__LinkVisitor *p = (struct __pyx_obj_4h5py_3h5l__LinkVisitor *)o;
+  PyObject* tmp;
+  tmp = ((PyObject*)p->func);
+  p->func = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->retval);
+  p->retval = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->info);
+  p->info = ((struct __pyx_obj_4h5py_3h5l_LinkInfo *)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  return 0;
+}
+
+static PyMethodDef __pyx_methods_4h5py_3h5l__LinkVisitor[] = {
+  {0, 0, 0, 0}
+};
+
+static PyNumberMethods __pyx_tp_as_number__LinkVisitor = {
+  0, /*nb_add*/
+  0, /*nb_subtract*/
+  0, /*nb_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_divide*/
+  #endif
+  0, /*nb_remainder*/
+  0, /*nb_divmod*/
+  0, /*nb_power*/
+  0, /*nb_negative*/
+  0, /*nb_positive*/
+  0, /*nb_absolute*/
+  0, /*nb_nonzero*/
+  0, /*nb_invert*/
+  0, /*nb_lshift*/
+  0, /*nb_rshift*/
+  0, /*nb_and*/
+  0, /*nb_xor*/
+  0, /*nb_or*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_coerce*/
+  #endif
+  0, /*nb_int*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_long*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*nb_float*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_oct*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_hex*/
+  #endif
+  0, /*nb_inplace_add*/
+  0, /*nb_inplace_subtract*/
+  0, /*nb_inplace_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_inplace_divide*/
+  #endif
+  0, /*nb_inplace_remainder*/
+  0, /*nb_inplace_power*/
+  0, /*nb_inplace_lshift*/
+  0, /*nb_inplace_rshift*/
+  0, /*nb_inplace_and*/
+  0, /*nb_inplace_xor*/
+  0, /*nb_inplace_or*/
+  0, /*nb_floor_divide*/
+  0, /*nb_true_divide*/
+  0, /*nb_inplace_floor_divide*/
+  0, /*nb_inplace_true_divide*/
+  #if PY_VERSION_HEX >= 0x02050000
+  0, /*nb_index*/
+  #endif
+};
+
+static PySequenceMethods __pyx_tp_as_sequence__LinkVisitor = {
+  0, /*sq_length*/
+  0, /*sq_concat*/
+  0, /*sq_repeat*/
+  0, /*sq_item*/
+  0, /*sq_slice*/
+  0, /*sq_ass_item*/
+  0, /*sq_ass_slice*/
+  0, /*sq_contains*/
+  0, /*sq_inplace_concat*/
+  0, /*sq_inplace_repeat*/
+};
+
+static PyMappingMethods __pyx_tp_as_mapping__LinkVisitor = {
+  0, /*mp_length*/
+  0, /*mp_subscript*/
+  0, /*mp_ass_subscript*/
+};
+
+static PyBufferProcs __pyx_tp_as_buffer__LinkVisitor = {
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getreadbuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getwritebuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getsegcount*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getcharbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_getbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_releasebuffer*/
+  #endif
+};
+
+static PyTypeObject __pyx_type_4h5py_3h5l__LinkVisitor = {
+  PyVarObject_HEAD_INIT(0, 0)
+  __Pyx_NAMESTR("h5py.h5l._LinkVisitor"), /*tp_name*/
+  sizeof(struct __pyx_obj_4h5py_3h5l__LinkVisitor), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_4h5py_3h5l__LinkVisitor, /*tp_dealloc*/
+  0, /*tp_print*/
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*tp_repr*/
+  &__pyx_tp_as_number__LinkVisitor, /*tp_as_number*/
+  &__pyx_tp_as_sequence__LinkVisitor, /*tp_as_sequence*/
+  &__pyx_tp_as_mapping__LinkVisitor, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  &__pyx_tp_as_buffer__LinkVisitor, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+  __Pyx_DOCSTR(" Helper class for iteration callback "), /*tp_doc*/
+  __pyx_tp_traverse_4h5py_3h5l__LinkVisitor, /*tp_traverse*/
+  __pyx_tp_clear_4h5py_3h5l__LinkVisitor, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_4h5py_3h5l__LinkVisitor, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  0, /*tp_dictoffset*/
+  __pyx_pw_4h5py_3h5l_12_LinkVisitor_1__init__, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_4h5py_3h5l__LinkVisitor, /*tp_new*/
+  0, /*tp_free*/
+  0, /*tp_is_gc*/
+  0, /*tp_bases*/
+  0, /*tp_mro*/
+  0, /*tp_cache*/
+  0, /*tp_subclasses*/
+  0, /*tp_weaklist*/
+  0, /*tp_del*/
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*tp_version_tag*/
+  #endif
+};
+
+static PyMethodDef __pyx_methods[] = {
+  {0, 0, 0, 0}
+};
+
+#if PY_MAJOR_VERSION >= 3
+static struct PyModuleDef __pyx_moduledef = {
+  #if PY_VERSION_HEX < 0x03020000
+    { PyObject_HEAD_INIT(NULL) NULL, 0, NULL },
+  #else
+    PyModuleDef_HEAD_INIT,
+  #endif
+    __Pyx_NAMESTR("h5l"),
+    __Pyx_DOCSTR(__pyx_k_15), /* m_doc */
+    -1, /* m_size */
+    __pyx_methods /* m_methods */,
+    NULL, /* m_reload */
+    NULL, /* m_traverse */
+    NULL, /* m_clear */
+    NULL /* m_free */
+};
+#endif
+
+static __Pyx_StringTabEntry __pyx_string_tab[] = {
+  {&__pyx_kp_s_1, __pyx_k_1, sizeof(__pyx_k_1), 0, 0, 1, 0},
+  {&__pyx_kp_s_3, __pyx_k_3, sizeof(__pyx_k_3), 0, 0, 1, 0},
+  {&__pyx_n_s__NotImplemented, __pyx_k__NotImplemented, sizeof(__pyx_k__NotImplemented), 0, 0, 1, 1},
+  {&__pyx_n_s__TYPE_EXTERNAL, __pyx_k__TYPE_EXTERNAL, sizeof(__pyx_k__TYPE_EXTERNAL), 0, 0, 1, 1},
+  {&__pyx_n_s__TYPE_HARD, __pyx_k__TYPE_HARD, sizeof(__pyx_k__TYPE_HARD), 0, 0, 1, 1},
+  {&__pyx_n_s__TYPE_SOFT, __pyx_k__TYPE_SOFT, sizeof(__pyx_k__TYPE_SOFT), 0, 0, 1, 1},
+  {&__pyx_n_s__TypeError, __pyx_k__TypeError, sizeof(__pyx_k__TypeError), 0, 0, 1, 1},
+  {&__pyx_n_s____main__, __pyx_k____main__, sizeof(__pyx_k____main__), 0, 0, 1, 1},
+  {&__pyx_n_s____test__, __pyx_k____test__, sizeof(__pyx_k____test__), 0, 0, 1, 1},
+  {&__pyx_n_s__cur_loc, __pyx_k__cur_loc, sizeof(__pyx_k__cur_loc), 0, 0, 1, 1},
+  {&__pyx_n_s__cur_name, __pyx_k__cur_name, sizeof(__pyx_k__cur_name), 0, 0, 1, 1},
+  {&__pyx_n_s__dst_loc, __pyx_k__dst_loc, sizeof(__pyx_k__dst_loc), 0, 0, 1, 1},
+  {&__pyx_n_s__dst_name, __pyx_k__dst_name, sizeof(__pyx_k__dst_name), 0, 0, 1, 1},
+  {&__pyx_n_s__file_name, __pyx_k__file_name, sizeof(__pyx_k__file_name), 0, 0, 1, 1},
+  {&__pyx_n_s__func, __pyx_k__func, sizeof(__pyx_k__func), 0, 0, 1, 1},
+  {&__pyx_n_s__id_, __pyx_k__id_, sizeof(__pyx_k__id_), 0, 0, 1, 1},
+  {&__pyx_n_s__idx, __pyx_k__idx, sizeof(__pyx_k__idx), 0, 0, 1, 1},
+  {&__pyx_n_s__idx_type, __pyx_k__idx_type, sizeof(__pyx_k__idx_type), 0, 0, 1, 1},
+  {&__pyx_n_s__index, __pyx_k__index, sizeof(__pyx_k__index), 0, 0, 1, 1},
+  {&__pyx_n_s__info, __pyx_k__info, sizeof(__pyx_k__info), 0, 0, 1, 1},
+  {&__pyx_n_s__lapl, __pyx_k__lapl, sizeof(__pyx_k__lapl), 0, 0, 1, 1},
+  {&__pyx_n_s__lcpl, __pyx_k__lcpl, sizeof(__pyx_k__lcpl), 0, 0, 1, 1},
+  {&__pyx_n_s__link_name, __pyx_k__link_name, sizeof(__pyx_k__link_name), 0, 0, 1, 1},
+  {&__pyx_n_s__name, __pyx_k__name, sizeof(__pyx_k__name), 0, 0, 1, 1},
+  {&__pyx_n_s__new_name, __pyx_k__new_name, sizeof(__pyx_k__new_name), 0, 0, 1, 1},
+  {&__pyx_n_s__obj_name, __pyx_k__obj_name, sizeof(__pyx_k__obj_name), 0, 0, 1, 1},
+  {&__pyx_n_s__order, __pyx_k__order, sizeof(__pyx_k__order), 0, 0, 1, 1},
+  {&__pyx_n_s__src_name, __pyx_k__src_name, sizeof(__pyx_k__src_name), 0, 0, 1, 1},
+  {&__pyx_n_s__target, __pyx_k__target, sizeof(__pyx_k__target), 0, 0, 1, 1},
+  {0, 0, 0, 0, 0, 0, 0}
+};
+static int __Pyx_InitCachedBuiltins(void) {
+  __pyx_builtin_NotImplemented = __Pyx_GetName(__pyx_b, __pyx_n_s__NotImplemented); if (!__pyx_builtin_NotImplemented) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_builtin_TypeError = __Pyx_GetName(__pyx_b, __pyx_n_s__TypeError); if (!__pyx_builtin_TypeError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  return 0;
+  __pyx_L1_error:;
+  return -1;
+}
+
+static int __Pyx_InitCachedConstants(void) {
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0);
+
+  /* "h5py/h5l.pyx":116
+ * 
+ *     def __hash__(self):
+ *         raise TypeError("Link proxies are unhashable; use the parent group instead.")             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_k_tuple_2 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_1)); if (unlikely(!__pyx_k_tuple_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_2);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_2));
+
+  /* "h5py/h5l.pyx":169
+ *         H5Lget_info(self.id, name, &info, plist)
+ *         if info.type != H5L_TYPE_SOFT and info.type != H5L_TYPE_EXTERNAL:
+ *             raise TypeError("Link must be either a soft or external link")             # <<<<<<<<<<<<<<
+ * 
+ *         buf_size = info.u.val_size
+ */
+  __pyx_k_tuple_4 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_3)); if (unlikely(!__pyx_k_tuple_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 169; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_4);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_4));
+  __Pyx_RefNannyFinishContext();
+  return 0;
+  __pyx_L1_error:;
+  __Pyx_RefNannyFinishContext();
+  return -1;
+}
+
+static int __Pyx_InitGlobals(void) {
+  if (__Pyx_InitStrings(__pyx_string_tab) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  return 0;
+  __pyx_L1_error:;
+  return -1;
+}
+
+#if PY_MAJOR_VERSION < 3
+PyMODINIT_FUNC inith5l(void); /*proto*/
+PyMODINIT_FUNC inith5l(void)
+#else
+PyMODINIT_FUNC PyInit_h5l(void); /*proto*/
+PyMODINIT_FUNC PyInit_h5l(void)
+#endif
+{
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  __Pyx_RefNannyDeclarations
+  #if CYTHON_REFNANNY
+  __Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny");
+  if (!__Pyx_RefNanny) {
+      PyErr_Clear();
+      __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny");
+      if (!__Pyx_RefNanny)
+          Py_FatalError("failed to import 'refnanny' module");
+  }
+  #endif
+  __Pyx_RefNannySetupContext("PyMODINIT_FUNC PyInit_h5l(void)", 0);
+  if ( __Pyx_check_binary_version() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #ifdef __Pyx_CyFunction_USED
+  if (__Pyx_CyFunction_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #endif
+  #ifdef __Pyx_FusedFunction_USED
+  if (__pyx_FusedFunction_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #endif
+  #ifdef __Pyx_Generator_USED
+  if (__pyx_Generator_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #endif
+  /*--- Library function declarations ---*/
+  /*--- Threads initialization code ---*/
+  #if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS
+  #ifdef WITH_THREAD /* Python build with threading support? */
+  PyEval_InitThreads();
+  #endif
+  #endif
+  /*--- Module creation code ---*/
+  #if PY_MAJOR_VERSION < 3
+  __pyx_m = Py_InitModule4(__Pyx_NAMESTR("h5l"), __pyx_methods, __Pyx_DOCSTR(__pyx_k_15), 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m);
+  #else
+  __pyx_m = PyModule_Create(&__pyx_moduledef);
+  #endif
+  if (unlikely(!__pyx_m)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #if PY_MAJOR_VERSION >= 3
+  {
+    PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (!PyDict_GetItemString(modules, "h5py.h5l")) {
+      if (unlikely(PyDict_SetItemString(modules, "h5py.h5l", __pyx_m) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    }
+  }
+  #endif
+  __pyx_b = PyImport_AddModule(__Pyx_NAMESTR(__Pyx_BUILTIN_MODULE_NAME)); if (unlikely(!__pyx_b)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #if CYTHON_COMPILING_IN_PYPY
+  Py_INCREF(__pyx_b);
+  #endif
+  if (__Pyx_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  /*--- Initialize various global constants etc. ---*/
+  if (unlikely(__Pyx_InitGlobals() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__pyx_module_is_main_h5py__h5l) {
+    if (__Pyx_SetAttrString(__pyx_m, "__name__", __pyx_n_s____main__) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  }
+  /*--- Builtin init code ---*/
+  if (unlikely(__Pyx_InitCachedBuiltins() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  /*--- Constants init code ---*/
+  if (unlikely(__Pyx_InitCachedConstants() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  /*--- Global init code ---*/
+  /*--- Variable export code ---*/
+  /*--- Function export code ---*/
+  /*--- Type init code ---*/
+  if (PyType_Ready(&__pyx_type_4h5py_3h5l_LinkProxy) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetAttrString(__pyx_m, "LinkProxy", (PyObject *)&__pyx_type_4h5py_3h5l_LinkProxy) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5l_LinkProxy = &__pyx_type_4h5py_3h5l_LinkProxy;
+  if (PyType_Ready(&__pyx_type_4h5py_3h5l_LinkInfo) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetAttrString(__pyx_m, "LinkInfo", (PyObject *)&__pyx_type_4h5py_3h5l_LinkInfo) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5l_LinkInfo = &__pyx_type_4h5py_3h5l_LinkInfo;
+  if (PyType_Ready(&__pyx_type_4h5py_3h5l__LinkVisitor) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetAttrString(__pyx_m, "_LinkVisitor", (PyObject *)&__pyx_type_4h5py_3h5l__LinkVisitor) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5l__LinkVisitor = &__pyx_type_4h5py_3h5l__LinkVisitor;
+  /*--- Type import code ---*/
+  __pyx_ptype_4h5py_8_objects_ObjectID = __Pyx_ImportType("h5py._objects", "ObjectID", sizeof(struct __pyx_obj_4h5py_8_objects_ObjectID), 1); if (unlikely(!__pyx_ptype_4h5py_8_objects_ObjectID)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5p_PropID = __Pyx_ImportType("h5py.h5p", "PropID", sizeof(struct __pyx_obj_4h5py_3h5p_PropID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5p_PropID)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5p_PropClassID = __Pyx_ImportType("h5py.h5p", "PropClassID", sizeof(struct __pyx_obj_4h5py_3h5p_PropClassID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5p_PropClassID)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5p_PropInstanceID = __Pyx_ImportType("h5py.h5p", "PropInstanceID", sizeof(struct __pyx_obj_4h5py_3h5p_PropInstanceID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5p_PropInstanceID)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5p_PropCreateID = __Pyx_ImportType("h5py.h5p", "PropCreateID", sizeof(struct __pyx_obj_4h5py_3h5p_PropCreateID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5p_PropCreateID)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5p_PropCopyID = __Pyx_ImportType("h5py.h5p", "PropCopyID", sizeof(struct __pyx_obj_4h5py_3h5p_PropCopyID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5p_PropCopyID)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5p_PropOCID = __Pyx_ImportType("h5py.h5p", "PropOCID", sizeof(struct __pyx_obj_4h5py_3h5p_PropOCID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5p_PropOCID)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5p_PropDCID = __Pyx_ImportType("h5py.h5p", "PropDCID", sizeof(struct __pyx_obj_4h5py_3h5p_PropDCID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5p_PropDCID)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5p_PropFCID = __Pyx_ImportType("h5py.h5p", "PropFCID", sizeof(struct __pyx_obj_4h5py_3h5p_PropFCID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5p_PropFCID)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5p_PropFAID = __Pyx_ImportType("h5py.h5p", "PropFAID", sizeof(struct __pyx_obj_4h5py_3h5p_PropFAID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5p_PropFAID)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5p_PropDXID = __Pyx_ImportType("h5py.h5p", "PropDXID", sizeof(struct __pyx_obj_4h5py_3h5p_PropDXID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5p_PropDXID)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5p_PropLCID = __Pyx_ImportType("h5py.h5p", "PropLCID", sizeof(struct __pyx_obj_4h5py_3h5p_PropLCID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5p_PropLCID)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5p_PropLAID = __Pyx_ImportType("h5py.h5p", "PropLAID", sizeof(struct __pyx_obj_4h5py_3h5p_PropLAID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5p_PropLAID)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5p_PropGCID = __Pyx_ImportType("h5py.h5p", "PropGCID", sizeof(struct __pyx_obj_4h5py_3h5p_PropGCID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5p_PropGCID)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5g_GroupID = __Pyx_ImportType("h5py.h5g", "GroupID", sizeof(struct __pyx_obj_4h5py_3h5g_GroupID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5g_GroupID)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_5numpy_dtype = __Pyx_ImportType("numpy", "dtype", sizeof(PyArray_Descr), 0); if (unlikely(!__pyx_ptype_4h5py_5numpy_dtype)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_5numpy_ndarray = __Pyx_ImportType("numpy", "ndarray", sizeof(PyArrayObject), 0); if (unlikely(!__pyx_ptype_4h5py_5numpy_ndarray)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  /*--- Variable import code ---*/
+  /*--- Function import code ---*/
+  __pyx_t_1 = __Pyx_ImportModule("h5py.defs"); if (!__pyx_t_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Lmove", (void (**)(void))&__pyx_f_4h5py_4defs_H5Lmove, "herr_t (hid_t, char *, hid_t, char *, hid_t, hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Lcreate_hard", (void (**)(void))&__pyx_f_4h5py_4defs_H5Lcreate_hard, "herr_t (hid_t, char *, hid_t, char *, hid_t, hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Lcreate_soft", (void (**)(void))&__pyx_f_4h5py_4defs_H5Lcreate_soft, "herr_t (char *, hid_t, char *, hid_t, hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Lget_val", (void (**)(void))&__pyx_f_4h5py_4defs_H5Lget_val, "herr_t (hid_t, char *, void *, size_t, hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Lexists", (void (**)(void))&__pyx_f_4h5py_4defs_H5Lexists, "htri_t (hid_t, char *, hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Lget_info", (void (**)(void))&__pyx_f_4h5py_4defs_H5Lget_info, "herr_t (hid_t, char *, H5L_info_t *, hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Literate_by_name", (void (**)(void))&__pyx_f_4h5py_4defs_H5Literate_by_name, "herr_t (hid_t, char *, H5_index_t, H5_iter_order_t, hsize_t *, H5L_iterate_t, void *, hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Lvisit_by_name", (void (**)(void))&__pyx_f_4h5py_4defs_H5Lvisit_by_name, "herr_t (hid_t, char *, H5_index_t, H5_iter_order_t, H5L_iterate_t, void *, hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Lunpack_elink_val", (void (**)(void))&__pyx_f_4h5py_4defs_H5Lunpack_elink_val, "herr_t (void *, size_t, unsigned int *, char **, char **)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Lcreate_external", (void (**)(void))&__pyx_f_4h5py_4defs_H5Lcreate_external, "herr_t (char *, char *, hid_t, char *, hid_t, hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  Py_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_2 = __Pyx_ImportModule("h5py._objects"); if (!__pyx_t_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_2, "pdefault", (void (**)(void))&__pyx_f_4h5py_8_objects_pdefault, "hid_t (struct __pyx_obj_4h5py_8_objects_ObjectID *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  Py_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_3 = __Pyx_ImportModule("h5py.utils"); if (!__pyx_t_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_3, "emalloc", (void (**)(void))&__pyx_f_4h5py_5utils_emalloc, "void *(size_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_3, "efree", (void (**)(void))&__pyx_f_4h5py_5utils_efree, "void (void *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  Py_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  /*--- Execution code ---*/
+
+  /* "h5py/h5l.pyx":22
+ * # === Public constants ========================================================
+ * 
+ * TYPE_HARD = H5L_TYPE_HARD             # <<<<<<<<<<<<<<
+ * TYPE_SOFT = H5L_TYPE_SOFT
+ * TYPE_EXTERNAL = H5L_TYPE_EXTERNAL
+ */
+  __pyx_t_4 = PyInt_FromLong(H5L_TYPE_HARD); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__TYPE_HARD, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5l.pyx":23
+ * 
+ * TYPE_HARD = H5L_TYPE_HARD
+ * TYPE_SOFT = H5L_TYPE_SOFT             # <<<<<<<<<<<<<<
+ * TYPE_EXTERNAL = H5L_TYPE_EXTERNAL
+ * 
+ */
+  __pyx_t_4 = PyInt_FromLong(H5L_TYPE_SOFT); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__TYPE_SOFT, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5l.pyx":24
+ * TYPE_HARD = H5L_TYPE_HARD
+ * TYPE_SOFT = H5L_TYPE_SOFT
+ * TYPE_EXTERNAL = H5L_TYPE_EXTERNAL             # <<<<<<<<<<<<<<
+ * 
+ * cdef class LinkInfo:
+ */
+  __pyx_t_4 = PyInt_FromLong(H5L_TYPE_EXTERNAL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__TYPE_EXTERNAL, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5l.pyx":217
+ * 
+ *     def visit(self, object func, *,
+ *               int idx_type=H5_INDEX_NAME, int order=H5_ITER_NATIVE,             # <<<<<<<<<<<<<<
+ *               char* obj_name='.', PropID lapl=None, bint info=0):
+ *         """(CALLABLE func, **kwds) => <Return value from func>
+ */
+  __pyx_k_5 = H5_INDEX_NAME;
+  __pyx_k_6 = H5_ITER_NATIVE;
+
+  /* "h5py/h5l.pyx":260
+ * 
+ *     def iterate(self, object func, *,
+ *               int idx_type=H5_INDEX_NAME, int order=H5_ITER_NATIVE,             # <<<<<<<<<<<<<<
+ *               char* obj_name='.', PropID lapl=None, bint info=0,
+ *               hsize_t idx=0):
+ */
+  __pyx_k_8 = H5_INDEX_NAME;
+  __pyx_k_9 = H5_ITER_NATIVE;
+
+  /* "h5py/h5l.pyx":1
+ * # This file is part of h5py, a Python interface to the HDF5 library.             # <<<<<<<<<<<<<<
+ * #
+ * # http://www.h5py.org
+ */
+  __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(((PyObject *)__pyx_t_4));
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s____test__, ((PyObject *)__pyx_t_4)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  if (__pyx_m) {
+    __Pyx_AddTraceback("init h5py.h5l", __pyx_clineno, __pyx_lineno, __pyx_filename);
+    Py_DECREF(__pyx_m); __pyx_m = 0;
+  } else if (!PyErr_Occurred()) {
+    PyErr_SetString(PyExc_ImportError, "init h5py.h5l");
+  }
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  #if PY_MAJOR_VERSION < 3
+  return;
+  #else
+  return __pyx_m;
+  #endif
+}
+
+/* Runtime support code */
+#if CYTHON_REFNANNY
+static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) {
+    PyObject *m = NULL, *p = NULL;
+    void *r = NULL;
+    m = PyImport_ImportModule((char *)modname);
+    if (!m) goto end;
+    p = PyObject_GetAttrString(m, (char *)"RefNannyAPI");
+    if (!p) goto end;
+    r = PyLong_AsVoidPtr(p);
+end:
+    Py_XDECREF(p);
+    Py_XDECREF(m);
+    return (__Pyx_RefNannyAPIStruct *)r;
+}
+#endif /* CYTHON_REFNANNY */
+
+static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name) {
+    PyObject *result;
+    result = PyObject_GetAttr(dict, name);
+    if (!result) {
+        if (dict != __pyx_b) {
+            PyErr_Clear();
+            result = PyObject_GetAttr(__pyx_b, name);
+        }
+        if (!result) {
+            PyErr_SetObject(PyExc_NameError, name);
+        }
+    }
+    return result;
+}
+
+static void __Pyx_RaiseDoubleKeywordsError(
+    const char* func_name,
+    PyObject* kw_name)
+{
+    PyErr_Format(PyExc_TypeError,
+        #if PY_MAJOR_VERSION >= 3
+        "%s() got multiple values for keyword argument '%U'", func_name, kw_name);
+        #else
+        "%s() got multiple values for keyword argument '%s'", func_name,
+        PyString_AsString(kw_name));
+        #endif
+}
+
+static int __Pyx_ParseOptionalKeywords(
+    PyObject *kwds,
+    PyObject **argnames[],
+    PyObject *kwds2,
+    PyObject *values[],
+    Py_ssize_t num_pos_args,
+    const char* function_name)
+{
+    PyObject *key = 0, *value = 0;
+    Py_ssize_t pos = 0;
+    PyObject*** name;
+    PyObject*** first_kw_arg = argnames + num_pos_args;
+    while (PyDict_Next(kwds, &pos, &key, &value)) {
+        name = first_kw_arg;
+        while (*name && (**name != key)) name++;
+        if (*name) {
+            values[name-argnames] = value;
+            continue;
+        }
+        name = first_kw_arg;
+        #if PY_MAJOR_VERSION < 3
+        if (likely(PyString_CheckExact(key)) || likely(PyString_Check(key))) {
+            while (*name) {
+                if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key))
+                        && _PyString_Eq(**name, key)) {
+                    values[name-argnames] = value;
+                    break;
+                }
+                name++;
+            }
+            if (*name) continue;
+            else {
+                PyObject*** argname = argnames;
+                while (argname != first_kw_arg) {
+                    if ((**argname == key) || (
+                            (CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**argname) == PyString_GET_SIZE(key))
+                             && _PyString_Eq(**argname, key))) {
+                        goto arg_passed_twice;
+                    }
+                    argname++;
+                }
+            }
+        } else
+        #endif
+        if (likely(PyUnicode_Check(key))) {
+            while (*name) {
+                int cmp = (**name == key) ? 0 :
+                #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
+                    (PyUnicode_GET_SIZE(**name) != PyUnicode_GET_SIZE(key)) ? 1 :
+                #endif
+                    PyUnicode_Compare(**name, key);
+                if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
+                if (cmp == 0) {
+                    values[name-argnames] = value;
+                    break;
+                }
+                name++;
+            }
+            if (*name) continue;
+            else {
+                PyObject*** argname = argnames;
+                while (argname != first_kw_arg) {
+                    int cmp = (**argname == key) ? 0 :
+                    #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
+                        (PyUnicode_GET_SIZE(**argname) != PyUnicode_GET_SIZE(key)) ? 1 :
+                    #endif
+                        PyUnicode_Compare(**argname, key);
+                    if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
+                    if (cmp == 0) goto arg_passed_twice;
+                    argname++;
+                }
+            }
+        } else
+            goto invalid_keyword_type;
+        if (kwds2) {
+            if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad;
+        } else {
+            goto invalid_keyword;
+        }
+    }
+    return 0;
+arg_passed_twice:
+    __Pyx_RaiseDoubleKeywordsError(function_name, key);
+    goto bad;
+invalid_keyword_type:
+    PyErr_Format(PyExc_TypeError,
+        "%s() keywords must be strings", function_name);
+    goto bad;
+invalid_keyword:
+    PyErr_Format(PyExc_TypeError,
+    #if PY_MAJOR_VERSION < 3
+        "%s() got an unexpected keyword argument '%s'",
+        function_name, PyString_AsString(key));
+    #else
+        "%s() got an unexpected keyword argument '%U'",
+        function_name, key);
+    #endif
+bad:
+    return -1;
+}
+
+static void __Pyx_RaiseArgtupleInvalid(
+    const char* func_name,
+    int exact,
+    Py_ssize_t num_min,
+    Py_ssize_t num_max,
+    Py_ssize_t num_found)
+{
+    Py_ssize_t num_expected;
+    const char *more_or_less;
+    if (num_found < num_min) {
+        num_expected = num_min;
+        more_or_less = "at least";
+    } else {
+        num_expected = num_max;
+        more_or_less = "at most";
+    }
+    if (exact) {
+        more_or_less = "exactly";
+    }
+    PyErr_Format(PyExc_TypeError,
+                 "%s() takes %s %" CYTHON_FORMAT_SSIZE_T "d positional argument%s (%" CYTHON_FORMAT_SSIZE_T "d given)",
+                 func_name, more_or_less, num_expected,
+                 (num_expected == 1) ? "" : "s", num_found);
+}
+
+static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb) {
+#if CYTHON_COMPILING_IN_CPYTHON
+    PyObject *tmp_type, *tmp_value, *tmp_tb;
+    PyThreadState *tstate = PyThreadState_GET();
+    tmp_type = tstate->curexc_type;
+    tmp_value = tstate->curexc_value;
+    tmp_tb = tstate->curexc_traceback;
+    tstate->curexc_type = type;
+    tstate->curexc_value = value;
+    tstate->curexc_traceback = tb;
+    Py_XDECREF(tmp_type);
+    Py_XDECREF(tmp_value);
+    Py_XDECREF(tmp_tb);
+#else
+    PyErr_Restore(type, value, tb);
+#endif
+}
+static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb) {
+#if CYTHON_COMPILING_IN_CPYTHON
+    PyThreadState *tstate = PyThreadState_GET();
+    *type = tstate->curexc_type;
+    *value = tstate->curexc_value;
+    *tb = tstate->curexc_traceback;
+    tstate->curexc_type = 0;
+    tstate->curexc_value = 0;
+    tstate->curexc_traceback = 0;
+#else
+    PyErr_Fetch(type, value, tb);
+#endif
+}
+
+#if PY_MAJOR_VERSION < 3
+static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb,
+                        CYTHON_UNUSED PyObject *cause) {
+    Py_XINCREF(type);
+    if (!value || value == Py_None)
+        value = NULL;
+    else
+        Py_INCREF(value);
+    if (!tb || tb == Py_None)
+        tb = NULL;
+    else {
+        Py_INCREF(tb);
+        if (!PyTraceBack_Check(tb)) {
+            PyErr_SetString(PyExc_TypeError,
+                "raise: arg 3 must be a traceback or None");
+            goto raise_error;
+        }
+    }
+    #if PY_VERSION_HEX < 0x02050000
+    if (PyClass_Check(type)) {
+    #else
+    if (PyType_Check(type)) {
+    #endif
+#if CYTHON_COMPILING_IN_PYPY
+        if (!value) {
+            Py_INCREF(Py_None);
+            value = Py_None;
+        }
+#endif
+        PyErr_NormalizeException(&type, &value, &tb);
+    } else {
+        if (value) {
+            PyErr_SetString(PyExc_TypeError,
+                "instance exception may not have a separate value");
+            goto raise_error;
+        }
+        value = type;
+        #if PY_VERSION_HEX < 0x02050000
+            if (PyInstance_Check(type)) {
+                type = (PyObject*) ((PyInstanceObject*)type)->in_class;
+                Py_INCREF(type);
+            }
+            else {
+                type = 0;
+                PyErr_SetString(PyExc_TypeError,
+                    "raise: exception must be an old-style class or instance");
+                goto raise_error;
+            }
+        #else
+            type = (PyObject*) Py_TYPE(type);
+            Py_INCREF(type);
+            if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) {
+                PyErr_SetString(PyExc_TypeError,
+                    "raise: exception class must be a subclass of BaseException");
+                goto raise_error;
+            }
+        #endif
+    }
+    __Pyx_ErrRestore(type, value, tb);
+    return;
+raise_error:
+    Py_XDECREF(value);
+    Py_XDECREF(type);
+    Py_XDECREF(tb);
+    return;
+}
+#else /* Python 3+ */
+static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) {
+    PyObject* owned_instance = NULL;
+    if (tb == Py_None) {
+        tb = 0;
+    } else if (tb && !PyTraceBack_Check(tb)) {
+        PyErr_SetString(PyExc_TypeError,
+            "raise: arg 3 must be a traceback or None");
+        goto bad;
+    }
+    if (value == Py_None)
+        value = 0;
+    if (PyExceptionInstance_Check(type)) {
+        if (value) {
+            PyErr_SetString(PyExc_TypeError,
+                "instance exception may not have a separate value");
+            goto bad;
+        }
+        value = type;
+        type = (PyObject*) Py_TYPE(value);
+    } else if (PyExceptionClass_Check(type)) {
+        PyObject *args;
+        if (!value)
+            args = PyTuple_New(0);
+        else if (PyTuple_Check(value)) {
+            Py_INCREF(value);
+            args = value;
+        }
+        else
+            args = PyTuple_Pack(1, value);
+        if (!args)
+            goto bad;
+        owned_instance = PyEval_CallObject(type, args);
+        Py_DECREF(args);
+        if (!owned_instance)
+            goto bad;
+        value = owned_instance;
+        if (!PyExceptionInstance_Check(value)) {
+            PyErr_Format(PyExc_TypeError,
+                         "calling %R should have returned an instance of "
+                         "BaseException, not %R",
+                         type, Py_TYPE(value));
+            goto bad;
+        }
+    } else {
+        PyErr_SetString(PyExc_TypeError,
+            "raise: exception class must be a subclass of BaseException");
+        goto bad;
+    }
+    if (cause && cause != Py_None) {
+        PyObject *fixed_cause;
+        if (PyExceptionClass_Check(cause)) {
+            fixed_cause = PyObject_CallObject(cause, NULL);
+            if (fixed_cause == NULL)
+                goto bad;
+        }
+        else if (PyExceptionInstance_Check(cause)) {
+            fixed_cause = cause;
+            Py_INCREF(fixed_cause);
+        }
+        else {
+            PyErr_SetString(PyExc_TypeError,
+                            "exception causes must derive from "
+                            "BaseException");
+            goto bad;
+        }
+        PyException_SetCause(value, fixed_cause);
+    }
+    PyErr_SetObject(type, value);
+    if (tb) {
+        PyThreadState *tstate = PyThreadState_GET();
+        PyObject* tmp_tb = tstate->curexc_traceback;
+        if (tb != tmp_tb) {
+            Py_INCREF(tb);
+            tstate->curexc_traceback = tb;
+            Py_XDECREF(tmp_tb);
+        }
+    }
+bad:
+    Py_XDECREF(owned_instance);
+    return;
+}
+#endif
+
+static int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, int none_allowed,
+    const char *name, int exact)
+{
+    if (!type) {
+        PyErr_Format(PyExc_SystemError, "Missing type object");
+        return 0;
+    }
+    if (none_allowed && obj == Py_None) return 1;
+    else if (exact) {
+        if (Py_TYPE(obj) == type) return 1;
+    }
+    else {
+        if (PyObject_TypeCheck(obj, type)) return 1;
+    }
+    PyErr_Format(PyExc_TypeError,
+        "Argument '%s' has incorrect type (expected %s, got %s)",
+        name, type->tp_name, Py_TYPE(obj)->tp_name);
+    return 0;
+}
+
+static CYTHON_INLINE hid_t __Pyx_PyInt_from_py_hid_t(PyObject* x) {
+    const hid_t neg_one = (hid_t)-1, const_zero = (hid_t)0;
+    const int is_unsigned = const_zero < neg_one;
+    if (sizeof(hid_t) == sizeof(char)) {
+        if (is_unsigned)
+            return (hid_t)__Pyx_PyInt_AsUnsignedChar(x);
+        else
+            return (hid_t)__Pyx_PyInt_AsSignedChar(x);
+    } else if (sizeof(hid_t) == sizeof(short)) {
+        if (is_unsigned)
+            return (hid_t)__Pyx_PyInt_AsUnsignedShort(x);
+        else
+            return (hid_t)__Pyx_PyInt_AsSignedShort(x);
+    } else if (sizeof(hid_t) == sizeof(int)) {
+        if (is_unsigned)
+            return (hid_t)__Pyx_PyInt_AsUnsignedInt(x);
+        else
+            return (hid_t)__Pyx_PyInt_AsSignedInt(x);
+    } else if (sizeof(hid_t) == sizeof(long)) {
+        if (is_unsigned)
+            return (hid_t)__Pyx_PyInt_AsUnsignedLong(x);
+        else
+            return (hid_t)__Pyx_PyInt_AsSignedLong(x);
+    } else if (sizeof(hid_t) == sizeof(PY_LONG_LONG)) {
+        if (is_unsigned)
+            return (hid_t)__Pyx_PyInt_AsUnsignedLongLong(x);
+        else
+            return (hid_t)__Pyx_PyInt_AsSignedLongLong(x);
+    }  else {
+        #if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
+        PyErr_SetString(PyExc_RuntimeError,
+                        "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
+        #else
+        hid_t val;
+        PyObject *v = __Pyx_PyNumber_Int(x);
+        #if PY_VERSION_HEX < 0x03000000
+        if (likely(v) && !PyLong_Check(v)) {
+            PyObject *tmp = v;
+            v = PyNumber_Long(tmp);
+            Py_DECREF(tmp);
+        }
+        #endif
+        if (likely(v)) {
+            int one = 1; int is_little = (int)*(unsigned char *)&one;
+            unsigned char *bytes = (unsigned char *)&val;
+            int ret = _PyLong_AsByteArray((PyLongObject *)v,
+                                          bytes, sizeof(val),
+                                          is_little, !is_unsigned);
+            Py_DECREF(v);
+            if (likely(!ret))
+                return val;
+        }
+        #endif
+        return (hid_t)-1;
+    }
+}
+
+static CYTHON_INLINE hsize_t __Pyx_PyInt_from_py_hsize_t(PyObject* x) {
+    const hsize_t neg_one = (hsize_t)-1, const_zero = (hsize_t)0;
+    const int is_unsigned = const_zero < neg_one;
+    if (sizeof(hsize_t) == sizeof(char)) {
+        if (is_unsigned)
+            return (hsize_t)__Pyx_PyInt_AsUnsignedChar(x);
+        else
+            return (hsize_t)__Pyx_PyInt_AsSignedChar(x);
+    } else if (sizeof(hsize_t) == sizeof(short)) {
+        if (is_unsigned)
+            return (hsize_t)__Pyx_PyInt_AsUnsignedShort(x);
+        else
+            return (hsize_t)__Pyx_PyInt_AsSignedShort(x);
+    } else if (sizeof(hsize_t) == sizeof(int)) {
+        if (is_unsigned)
+            return (hsize_t)__Pyx_PyInt_AsUnsignedInt(x);
+        else
+            return (hsize_t)__Pyx_PyInt_AsSignedInt(x);
+    } else if (sizeof(hsize_t) == sizeof(long)) {
+        if (is_unsigned)
+            return (hsize_t)__Pyx_PyInt_AsUnsignedLong(x);
+        else
+            return (hsize_t)__Pyx_PyInt_AsSignedLong(x);
+    } else if (sizeof(hsize_t) == sizeof(PY_LONG_LONG)) {
+        if (is_unsigned)
+            return (hsize_t)__Pyx_PyInt_AsUnsignedLongLong(x);
+        else
+            return (hsize_t)__Pyx_PyInt_AsSignedLongLong(x);
+    }  else {
+        #if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
+        PyErr_SetString(PyExc_RuntimeError,
+                        "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
+        #else
+        hsize_t val;
+        PyObject *v = __Pyx_PyNumber_Int(x);
+        #if PY_VERSION_HEX < 0x03000000
+        if (likely(v) && !PyLong_Check(v)) {
+            PyObject *tmp = v;
+            v = PyNumber_Long(tmp);
+            Py_DECREF(tmp);
+        }
+        #endif
+        if (likely(v)) {
+            int one = 1; int is_little = (int)*(unsigned char *)&one;
+            unsigned char *bytes = (unsigned char *)&val;
+            int ret = _PyLong_AsByteArray((PyLongObject *)v,
+                                          bytes, sizeof(val),
+                                          is_little, !is_unsigned);
+            Py_DECREF(v);
+            if (likely(!ret))
+                return val;
+        }
+        #endif
+        return (hsize_t)-1;
+    }
+}
+
+static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_int64_t(int64_t val) {
+    const int64_t neg_one = (int64_t)-1, const_zero = (int64_t)0;
+    const int is_unsigned = const_zero < neg_one;
+    if ((sizeof(int64_t) == sizeof(char))  ||
+        (sizeof(int64_t) == sizeof(short))) {
+        return PyInt_FromLong((long)val);
+    } else if ((sizeof(int64_t) == sizeof(int)) ||
+               (sizeof(int64_t) == sizeof(long))) {
+        if (is_unsigned)
+            return PyLong_FromUnsignedLong((unsigned long)val);
+        else
+            return PyInt_FromLong((long)val);
+    } else if (sizeof(int64_t) == sizeof(PY_LONG_LONG)) {
+        if (is_unsigned)
+            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG)val);
+        else
+            return PyLong_FromLongLong((PY_LONG_LONG)val);
+    } else {
+        int one = 1; int little = (int)*(unsigned char *)&one;
+        unsigned char *bytes = (unsigned char *)&val;
+        return _PyLong_FromByteArray(bytes, sizeof(int64_t),
+                                     little, !is_unsigned);
+    }
+}
+
+static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_haddr_t(haddr_t val) {
+    const haddr_t neg_one = (haddr_t)-1, const_zero = (haddr_t)0;
+    const int is_unsigned = const_zero < neg_one;
+    if ((sizeof(haddr_t) == sizeof(char))  ||
+        (sizeof(haddr_t) == sizeof(short))) {
+        return PyInt_FromLong((long)val);
+    } else if ((sizeof(haddr_t) == sizeof(int)) ||
+               (sizeof(haddr_t) == sizeof(long))) {
+        if (is_unsigned)
+            return PyLong_FromUnsignedLong((unsigned long)val);
+        else
+            return PyInt_FromLong((long)val);
+    } else if (sizeof(haddr_t) == sizeof(PY_LONG_LONG)) {
+        if (is_unsigned)
+            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG)val);
+        else
+            return PyLong_FromLongLong((PY_LONG_LONG)val);
+    } else {
+        int one = 1; int little = (int)*(unsigned char *)&one;
+        unsigned char *bytes = (unsigned char *)&val;
+        return _PyLong_FromByteArray(bytes, sizeof(haddr_t),
+                                     little, !is_unsigned);
+    }
+}
+
+static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_hsize_t(hsize_t val) {
+    const hsize_t neg_one = (hsize_t)-1, const_zero = (hsize_t)0;
+    const int is_unsigned = const_zero < neg_one;
+    if ((sizeof(hsize_t) == sizeof(char))  ||
+        (sizeof(hsize_t) == sizeof(short))) {
+        return PyInt_FromLong((long)val);
+    } else if ((sizeof(hsize_t) == sizeof(int)) ||
+               (sizeof(hsize_t) == sizeof(long))) {
+        if (is_unsigned)
+            return PyLong_FromUnsignedLong((unsigned long)val);
+        else
+            return PyInt_FromLong((long)val);
+    } else if (sizeof(hsize_t) == sizeof(PY_LONG_LONG)) {
+        if (is_unsigned)
+            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG)val);
+        else
+            return PyLong_FromLongLong((PY_LONG_LONG)val);
+    } else {
+        int one = 1; int little = (int)*(unsigned char *)&one;
+        unsigned char *bytes = (unsigned char *)&val;
+        return _PyLong_FromByteArray(bytes, sizeof(hsize_t),
+                                     little, !is_unsigned);
+    }
+}
+
+static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_hid_t(hid_t val) {
+    const hid_t neg_one = (hid_t)-1, const_zero = (hid_t)0;
+    const int is_unsigned = const_zero < neg_one;
+    if ((sizeof(hid_t) == sizeof(char))  ||
+        (sizeof(hid_t) == sizeof(short))) {
+        return PyInt_FromLong((long)val);
+    } else if ((sizeof(hid_t) == sizeof(int)) ||
+               (sizeof(hid_t) == sizeof(long))) {
+        if (is_unsigned)
+            return PyLong_FromUnsignedLong((unsigned long)val);
+        else
+            return PyInt_FromLong((long)val);
+    } else if (sizeof(hid_t) == sizeof(PY_LONG_LONG)) {
+        if (is_unsigned)
+            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG)val);
+        else
+            return PyLong_FromLongLong((PY_LONG_LONG)val);
+    } else {
+        int one = 1; int little = (int)*(unsigned char *)&one;
+        unsigned char *bytes = (unsigned char *)&val;
+        return _PyLong_FromByteArray(bytes, sizeof(hid_t),
+                                     little, !is_unsigned);
+    }
+}
+
+static CYTHON_INLINE unsigned char __Pyx_PyInt_AsUnsignedChar(PyObject* x) {
+    const unsigned char neg_one = (unsigned char)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(unsigned char) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(unsigned char)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to unsigned char" :
+                    "value too large to convert to unsigned char");
+            }
+            return (unsigned char)-1;
+        }
+        return (unsigned char)val;
+    }
+    return (unsigned char)__Pyx_PyInt_AsUnsignedLong(x);
+}
+
+static CYTHON_INLINE unsigned short __Pyx_PyInt_AsUnsignedShort(PyObject* x) {
+    const unsigned short neg_one = (unsigned short)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(unsigned short) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(unsigned short)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to unsigned short" :
+                    "value too large to convert to unsigned short");
+            }
+            return (unsigned short)-1;
+        }
+        return (unsigned short)val;
+    }
+    return (unsigned short)__Pyx_PyInt_AsUnsignedLong(x);
+}
+
+static CYTHON_INLINE unsigned int __Pyx_PyInt_AsUnsignedInt(PyObject* x) {
+    const unsigned int neg_one = (unsigned int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(unsigned int) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(unsigned int)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to unsigned int" :
+                    "value too large to convert to unsigned int");
+            }
+            return (unsigned int)-1;
+        }
+        return (unsigned int)val;
+    }
+    return (unsigned int)__Pyx_PyInt_AsUnsignedLong(x);
+}
+
+static CYTHON_INLINE char __Pyx_PyInt_AsChar(PyObject* x) {
+    const char neg_one = (char)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(char) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(char)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to char" :
+                    "value too large to convert to char");
+            }
+            return (char)-1;
+        }
+        return (char)val;
+    }
+    return (char)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE short __Pyx_PyInt_AsShort(PyObject* x) {
+    const short neg_one = (short)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(short) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(short)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to short" :
+                    "value too large to convert to short");
+            }
+            return (short)-1;
+        }
+        return (short)val;
+    }
+    return (short)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE int __Pyx_PyInt_AsInt(PyObject* x) {
+    const int neg_one = (int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(int) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(int)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to int" :
+                    "value too large to convert to int");
+            }
+            return (int)-1;
+        }
+        return (int)val;
+    }
+    return (int)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE signed char __Pyx_PyInt_AsSignedChar(PyObject* x) {
+    const signed char neg_one = (signed char)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(signed char) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(signed char)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to signed char" :
+                    "value too large to convert to signed char");
+            }
+            return (signed char)-1;
+        }
+        return (signed char)val;
+    }
+    return (signed char)__Pyx_PyInt_AsSignedLong(x);
+}
+
+static CYTHON_INLINE signed short __Pyx_PyInt_AsSignedShort(PyObject* x) {
+    const signed short neg_one = (signed short)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(signed short) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(signed short)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to signed short" :
+                    "value too large to convert to signed short");
+            }
+            return (signed short)-1;
+        }
+        return (signed short)val;
+    }
+    return (signed short)__Pyx_PyInt_AsSignedLong(x);
+}
+
+static CYTHON_INLINE signed int __Pyx_PyInt_AsSignedInt(PyObject* x) {
+    const signed int neg_one = (signed int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(signed int) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(signed int)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to signed int" :
+                    "value too large to convert to signed int");
+            }
+            return (signed int)-1;
+        }
+        return (signed int)val;
+    }
+    return (signed int)__Pyx_PyInt_AsSignedLong(x);
+}
+
+static CYTHON_INLINE int __Pyx_PyInt_AsLongDouble(PyObject* x) {
+    const int neg_one = (int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(int) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(int)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to int" :
+                    "value too large to convert to int");
+            }
+            return (int)-1;
+        }
+        return (int)val;
+    }
+    return (int)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE unsigned long __Pyx_PyInt_AsUnsignedLong(PyObject* x) {
+    const unsigned long neg_one = (unsigned long)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to unsigned long");
+            return (unsigned long)-1;
+        }
+        return (unsigned long)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to unsigned long");
+                return (unsigned long)-1;
+            }
+            return (unsigned long)PyLong_AsUnsignedLong(x);
+        } else {
+            return (unsigned long)PyLong_AsLong(x);
+        }
+    } else {
+        unsigned long val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (unsigned long)-1;
+        val = __Pyx_PyInt_AsUnsignedLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE unsigned PY_LONG_LONG __Pyx_PyInt_AsUnsignedLongLong(PyObject* x) {
+    const unsigned PY_LONG_LONG neg_one = (unsigned PY_LONG_LONG)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to unsigned PY_LONG_LONG");
+            return (unsigned PY_LONG_LONG)-1;
+        }
+        return (unsigned PY_LONG_LONG)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to unsigned PY_LONG_LONG");
+                return (unsigned PY_LONG_LONG)-1;
+            }
+            return (unsigned PY_LONG_LONG)PyLong_AsUnsignedLongLong(x);
+        } else {
+            return (unsigned PY_LONG_LONG)PyLong_AsLongLong(x);
+        }
+    } else {
+        unsigned PY_LONG_LONG val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (unsigned PY_LONG_LONG)-1;
+        val = __Pyx_PyInt_AsUnsignedLongLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE long __Pyx_PyInt_AsLong(PyObject* x) {
+    const long neg_one = (long)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to long");
+            return (long)-1;
+        }
+        return (long)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to long");
+                return (long)-1;
+            }
+            return (long)PyLong_AsUnsignedLong(x);
+        } else {
+            return (long)PyLong_AsLong(x);
+        }
+    } else {
+        long val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (long)-1;
+        val = __Pyx_PyInt_AsLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE PY_LONG_LONG __Pyx_PyInt_AsLongLong(PyObject* x) {
+    const PY_LONG_LONG neg_one = (PY_LONG_LONG)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to PY_LONG_LONG");
+            return (PY_LONG_LONG)-1;
+        }
+        return (PY_LONG_LONG)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to PY_LONG_LONG");
+                return (PY_LONG_LONG)-1;
+            }
+            return (PY_LONG_LONG)PyLong_AsUnsignedLongLong(x);
+        } else {
+            return (PY_LONG_LONG)PyLong_AsLongLong(x);
+        }
+    } else {
+        PY_LONG_LONG val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (PY_LONG_LONG)-1;
+        val = __Pyx_PyInt_AsLongLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE signed long __Pyx_PyInt_AsSignedLong(PyObject* x) {
+    const signed long neg_one = (signed long)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to signed long");
+            return (signed long)-1;
+        }
+        return (signed long)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to signed long");
+                return (signed long)-1;
+            }
+            return (signed long)PyLong_AsUnsignedLong(x);
+        } else {
+            return (signed long)PyLong_AsLong(x);
+        }
+    } else {
+        signed long val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (signed long)-1;
+        val = __Pyx_PyInt_AsSignedLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE signed PY_LONG_LONG __Pyx_PyInt_AsSignedLongLong(PyObject* x) {
+    const signed PY_LONG_LONG neg_one = (signed PY_LONG_LONG)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to signed PY_LONG_LONG");
+            return (signed PY_LONG_LONG)-1;
+        }
+        return (signed PY_LONG_LONG)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to signed PY_LONG_LONG");
+                return (signed PY_LONG_LONG)-1;
+            }
+            return (signed PY_LONG_LONG)PyLong_AsUnsignedLongLong(x);
+        } else {
+            return (signed PY_LONG_LONG)PyLong_AsLongLong(x);
+        }
+    } else {
+        signed PY_LONG_LONG val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (signed PY_LONG_LONG)-1;
+        val = __Pyx_PyInt_AsSignedLongLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static int __Pyx_check_binary_version(void) {
+    char ctversion[4], rtversion[4];
+    PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION);
+    PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion());
+    if (ctversion[0] != rtversion[0] || ctversion[2] != rtversion[2]) {
+        char message[200];
+        PyOS_snprintf(message, sizeof(message),
+                      "compiletime version %s of module '%.100s' "
+                      "does not match runtime version %s",
+                      ctversion, __Pyx_MODULE_NAME, rtversion);
+        #if PY_VERSION_HEX < 0x02050000
+        return PyErr_Warn(NULL, message);
+        #else
+        return PyErr_WarnEx(NULL, message, 1);
+        #endif
+    }
+    return 0;
+}
+
+#ifndef __PYX_HAVE_RT_ImportModule
+#define __PYX_HAVE_RT_ImportModule
+static PyObject *__Pyx_ImportModule(const char *name) {
+    PyObject *py_name = 0;
+    PyObject *py_module = 0;
+    py_name = __Pyx_PyIdentifier_FromString(name);
+    if (!py_name)
+        goto bad;
+    py_module = PyImport_Import(py_name);
+    Py_DECREF(py_name);
+    return py_module;
+bad:
+    Py_XDECREF(py_name);
+    return 0;
+}
+#endif
+
+#ifndef __PYX_HAVE_RT_ImportType
+#define __PYX_HAVE_RT_ImportType
+static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name,
+    size_t size, int strict)
+{
+    PyObject *py_module = 0;
+    PyObject *result = 0;
+    PyObject *py_name = 0;
+    char warning[200];
+    Py_ssize_t basicsize;
+#ifdef Py_LIMITED_API
+    PyObject *py_basicsize;
+#endif
+    py_module = __Pyx_ImportModule(module_name);
+    if (!py_module)
+        goto bad;
+    py_name = __Pyx_PyIdentifier_FromString(class_name);
+    if (!py_name)
+        goto bad;
+    result = PyObject_GetAttr(py_module, py_name);
+    Py_DECREF(py_name);
+    py_name = 0;
+    Py_DECREF(py_module);
+    py_module = 0;
+    if (!result)
+        goto bad;
+    if (!PyType_Check(result)) {
+        PyErr_Format(PyExc_TypeError,
+            "%s.%s is not a type object",
+            module_name, class_name);
+        goto bad;
+    }
+#ifndef Py_LIMITED_API
+    basicsize = ((PyTypeObject *)result)->tp_basicsize;
+#else
+    py_basicsize = PyObject_GetAttrString(result, "__basicsize__");
+    if (!py_basicsize)
+        goto bad;
+    basicsize = PyLong_AsSsize_t(py_basicsize);
+    Py_DECREF(py_basicsize);
+    py_basicsize = 0;
+    if (basicsize == (Py_ssize_t)-1 && PyErr_Occurred())
+        goto bad;
+#endif
+    if (!strict && (size_t)basicsize > size) {
+        PyOS_snprintf(warning, sizeof(warning),
+            "%s.%s size changed, may indicate binary incompatibility",
+            module_name, class_name);
+        #if PY_VERSION_HEX < 0x02050000
+        if (PyErr_Warn(NULL, warning) < 0) goto bad;
+        #else
+        if (PyErr_WarnEx(NULL, warning, 0) < 0) goto bad;
+        #endif
+    }
+    else if ((size_t)basicsize != size) {
+        PyErr_Format(PyExc_ValueError,
+            "%s.%s has the wrong size, try recompiling",
+            module_name, class_name);
+        goto bad;
+    }
+    return (PyTypeObject *)result;
+bad:
+    Py_XDECREF(py_module);
+    Py_XDECREF(result);
+    return NULL;
+}
+#endif
+
+#ifndef __PYX_HAVE_RT_ImportFunction
+#define __PYX_HAVE_RT_ImportFunction
+static int __Pyx_ImportFunction(PyObject *module, const char *funcname, void (**f)(void), const char *sig) {
+    PyObject *d = 0;
+    PyObject *cobj = 0;
+    union {
+        void (*fp)(void);
+        void *p;
+    } tmp;
+    d = PyObject_GetAttrString(module, (char *)"__pyx_capi__");
+    if (!d)
+        goto bad;
+    cobj = PyDict_GetItemString(d, funcname);
+    if (!cobj) {
+        PyErr_Format(PyExc_ImportError,
+            "%s does not export expected C function %s",
+                PyModule_GetName(module), funcname);
+        goto bad;
+    }
+#if PY_VERSION_HEX >= 0x02070000 && !(PY_MAJOR_VERSION==3 && PY_MINOR_VERSION==0)
+    if (!PyCapsule_IsValid(cobj, sig)) {
+        PyErr_Format(PyExc_TypeError,
+            "C function %s.%s has wrong signature (expected %s, got %s)",
+             PyModule_GetName(module), funcname, sig, PyCapsule_GetName(cobj));
+        goto bad;
+    }
+    tmp.p = PyCapsule_GetPointer(cobj, sig);
+#else
+    {const char *desc, *s1, *s2;
+    desc = (const char *)PyCObject_GetDesc(cobj);
+    if (!desc)
+        goto bad;
+    s1 = desc; s2 = sig;
+    while (*s1 != '\0' && *s1 == *s2) { s1++; s2++; }
+    if (*s1 != *s2) {
+        PyErr_Format(PyExc_TypeError,
+            "C function %s.%s has wrong signature (expected %s, got %s)",
+             PyModule_GetName(module), funcname, sig, desc);
+        goto bad;
+    }
+    tmp.p = PyCObject_AsVoidPtr(cobj);}
+#endif
+    *f = tmp.fp;
+    if (!(*f))
+        goto bad;
+    Py_DECREF(d);
+    return 0;
+bad:
+    Py_XDECREF(d);
+    return -1;
+}
+#endif
+
+static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) {
+    int start = 0, mid = 0, end = count - 1;
+    if (end >= 0 && code_line > entries[end].code_line) {
+        return count;
+    }
+    while (start < end) {
+        mid = (start + end) / 2;
+        if (code_line < entries[mid].code_line) {
+            end = mid;
+        } else if (code_line > entries[mid].code_line) {
+             start = mid + 1;
+        } else {
+            return mid;
+        }
+    }
+    if (code_line <= entries[mid].code_line) {
+        return mid;
+    } else {
+        return mid + 1;
+    }
+}
+static PyCodeObject *__pyx_find_code_object(int code_line) {
+    PyCodeObject* code_object;
+    int pos;
+    if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) {
+        return NULL;
+    }
+    pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
+    if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) {
+        return NULL;
+    }
+    code_object = __pyx_code_cache.entries[pos].code_object;
+    Py_INCREF(code_object);
+    return code_object;
+}
+static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) {
+    int pos, i;
+    __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries;
+    if (unlikely(!code_line)) {
+        return;
+    }
+    if (unlikely(!entries)) {
+        entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry));
+        if (likely(entries)) {
+            __pyx_code_cache.entries = entries;
+            __pyx_code_cache.max_count = 64;
+            __pyx_code_cache.count = 1;
+            entries[0].code_line = code_line;
+            entries[0].code_object = code_object;
+            Py_INCREF(code_object);
+        }
+        return;
+    }
+    pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
+    if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) {
+        PyCodeObject* tmp = entries[pos].code_object;
+        entries[pos].code_object = code_object;
+        Py_DECREF(tmp);
+        return;
+    }
+    if (__pyx_code_cache.count == __pyx_code_cache.max_count) {
+        int new_max = __pyx_code_cache.max_count + 64;
+        entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc(
+            __pyx_code_cache.entries, new_max*sizeof(__Pyx_CodeObjectCacheEntry));
+        if (unlikely(!entries)) {
+            return;
+        }
+        __pyx_code_cache.entries = entries;
+        __pyx_code_cache.max_count = new_max;
+    }
+    for (i=__pyx_code_cache.count; i>pos; i--) {
+        entries[i] = entries[i-1];
+    }
+    entries[pos].code_line = code_line;
+    entries[pos].code_object = code_object;
+    __pyx_code_cache.count++;
+    Py_INCREF(code_object);
+}
+
+#include "compile.h"
+#include "frameobject.h"
+#include "traceback.h"
+static PyCodeObject* __Pyx_CreateCodeObjectForTraceback(
+            const char *funcname, int c_line,
+            int py_line, const char *filename) {
+    PyCodeObject *py_code = 0;
+    PyObject *py_srcfile = 0;
+    PyObject *py_funcname = 0;
+    #if PY_MAJOR_VERSION < 3
+    py_srcfile = PyString_FromString(filename);
+    #else
+    py_srcfile = PyUnicode_FromString(filename);
+    #endif
+    if (!py_srcfile) goto bad;
+    if (c_line) {
+        #if PY_MAJOR_VERSION < 3
+        py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
+        #else
+        py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
+        #endif
+    }
+    else {
+        #if PY_MAJOR_VERSION < 3
+        py_funcname = PyString_FromString(funcname);
+        #else
+        py_funcname = PyUnicode_FromString(funcname);
+        #endif
+    }
+    if (!py_funcname) goto bad;
+    py_code = __Pyx_PyCode_New(
+        0,            /*int argcount,*/
+        0,            /*int kwonlyargcount,*/
+        0,            /*int nlocals,*/
+        0,            /*int stacksize,*/
+        0,            /*int flags,*/
+        __pyx_empty_bytes, /*PyObject *code,*/
+        __pyx_empty_tuple, /*PyObject *consts,*/
+        __pyx_empty_tuple, /*PyObject *names,*/
+        __pyx_empty_tuple, /*PyObject *varnames,*/
+        __pyx_empty_tuple, /*PyObject *freevars,*/
+        __pyx_empty_tuple, /*PyObject *cellvars,*/
+        py_srcfile,   /*PyObject *filename,*/
+        py_funcname,  /*PyObject *name,*/
+        py_line,      /*int firstlineno,*/
+        __pyx_empty_bytes  /*PyObject *lnotab*/
+    );
+    Py_DECREF(py_srcfile);
+    Py_DECREF(py_funcname);
+    return py_code;
+bad:
+    Py_XDECREF(py_srcfile);
+    Py_XDECREF(py_funcname);
+    return NULL;
+}
+static void __Pyx_AddTraceback(const char *funcname, int c_line,
+                               int py_line, const char *filename) {
+    PyCodeObject *py_code = 0;
+    PyObject *py_globals = 0;
+    PyFrameObject *py_frame = 0;
+    py_code = __pyx_find_code_object(c_line ? c_line : py_line);
+    if (!py_code) {
+        py_code = __Pyx_CreateCodeObjectForTraceback(
+            funcname, c_line, py_line, filename);
+        if (!py_code) goto bad;
+        __pyx_insert_code_object(c_line ? c_line : py_line, py_code);
+    }
+    py_globals = PyModule_GetDict(__pyx_m);
+    if (!py_globals) goto bad;
+    py_frame = PyFrame_New(
+        PyThreadState_GET(), /*PyThreadState *tstate,*/
+        py_code,             /*PyCodeObject *code,*/
+        py_globals,          /*PyObject *globals,*/
+        0                    /*PyObject *locals*/
+    );
+    if (!py_frame) goto bad;
+    py_frame->f_lineno = py_line;
+    PyTraceBack_Here(py_frame);
+bad:
+    Py_XDECREF(py_code);
+    Py_XDECREF(py_frame);
+}
+
+static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
+    while (t->p) {
+        #if PY_MAJOR_VERSION < 3
+        if (t->is_unicode) {
+            *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL);
+        } else if (t->intern) {
+            *t->p = PyString_InternFromString(t->s);
+        } else {
+            *t->p = PyString_FromStringAndSize(t->s, t->n - 1);
+        }
+        #else  /* Python 3+ has unicode identifiers */
+        if (t->is_unicode | t->is_str) {
+            if (t->intern) {
+                *t->p = PyUnicode_InternFromString(t->s);
+            } else if (t->encoding) {
+                *t->p = PyUnicode_Decode(t->s, t->n - 1, t->encoding, NULL);
+            } else {
+                *t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1);
+            }
+        } else {
+            *t->p = PyBytes_FromStringAndSize(t->s, t->n - 1);
+        }
+        #endif
+        if (!*t->p)
+            return -1;
+        ++t;
+    }
+    return 0;
+}
+
+static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) {
+   int is_true = x == Py_True;
+   if (is_true | (x == Py_False) | (x == Py_None)) return is_true;
+   else return PyObject_IsTrue(x);
+}
+static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x) {
+  PyNumberMethods *m;
+  const char *name = NULL;
+  PyObject *res = NULL;
+#if PY_VERSION_HEX < 0x03000000
+  if (PyInt_Check(x) || PyLong_Check(x))
+#else
+  if (PyLong_Check(x))
+#endif
+    return Py_INCREF(x), x;
+  m = Py_TYPE(x)->tp_as_number;
+#if PY_VERSION_HEX < 0x03000000
+  if (m && m->nb_int) {
+    name = "int";
+    res = PyNumber_Int(x);
+  }
+  else if (m && m->nb_long) {
+    name = "long";
+    res = PyNumber_Long(x);
+  }
+#else
+  if (m && m->nb_int) {
+    name = "int";
+    res = PyNumber_Long(x);
+  }
+#endif
+  if (res) {
+#if PY_VERSION_HEX < 0x03000000
+    if (!PyInt_Check(res) && !PyLong_Check(res)) {
+#else
+    if (!PyLong_Check(res)) {
+#endif
+      PyErr_Format(PyExc_TypeError,
+                   "__%s__ returned non-%s (type %.200s)",
+                   name, name, Py_TYPE(res)->tp_name);
+      Py_DECREF(res);
+      return NULL;
+    }
+  }
+  else if (!PyErr_Occurred()) {
+    PyErr_SetString(PyExc_TypeError,
+                    "an integer is required");
+  }
+  return res;
+}
+static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
+  Py_ssize_t ival;
+  PyObject* x = PyNumber_Index(b);
+  if (!x) return -1;
+  ival = PyInt_AsSsize_t(x);
+  Py_DECREF(x);
+  return ival;
+}
+static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) {
+#if PY_VERSION_HEX < 0x02050000
+   if (ival <= LONG_MAX)
+       return PyInt_FromLong((long)ival);
+   else {
+       unsigned char *bytes = (unsigned char *) &ival;
+       int one = 1; int little = (int)*(unsigned char*)&one;
+       return _PyLong_FromByteArray(bytes, sizeof(size_t), little, 0);
+   }
+#else
+   return PyInt_FromSize_t(ival);
+#endif
+}
+static CYTHON_INLINE size_t __Pyx_PyInt_AsSize_t(PyObject* x) {
+   unsigned PY_LONG_LONG val = __Pyx_PyInt_AsUnsignedLongLong(x);
+   if (unlikely(val == (unsigned PY_LONG_LONG)-1 && PyErr_Occurred())) {
+       return (size_t)-1;
+   } else if (unlikely(val != (unsigned PY_LONG_LONG)(size_t)val)) {
+       PyErr_SetString(PyExc_OverflowError,
+                       "value too large to convert to size_t");
+       return (size_t)-1;
+   }
+   return (size_t)val;
+}
+
+
+#endif /* Py_PYTHON_H */
diff --git a/h5py/h5l.pxd b/h5py/h5l.pxd
new file mode 100644
index 0000000..a12ec32
--- /dev/null
+++ b/h5py/h5l.pxd
@@ -0,0 +1,16 @@
+# This file is part of h5py, a Python interface to the HDF5 library.
+#
+# http://www.h5py.org
+#
+# Copyright 2008-2013 Andrew Collette and contributors
+#
+# License:  Standard 3-clause BSD; see "license.txt" for full license terms
+#           and contributor agreement.
+
+from defs cimport *
+
+cdef class LinkProxy:
+
+    cdef hid_t id
+
+
diff --git a/h5py/h5l.pyx b/h5py/h5l.pyx
new file mode 100644
index 0000000..bbef23f
--- /dev/null
+++ b/h5py/h5l.pyx
@@ -0,0 +1,305 @@
+# This file is part of h5py, a Python interface to the HDF5 library.
+#
+# http://www.h5py.org
+#
+# Copyright 2008-2013 Andrew Collette and contributors
+#
+# License:  Standard 3-clause BSD; see "license.txt" for full license terms
+#           and contributor agreement.
+
+"""
+    API for the "H5L" family of link-related operations.  Defines the class
+    LinkProxy, which comes attached to GroupID objects as <obj>.links.
+"""
+
+from _objects cimport pdefault
+from h5p cimport PropID
+from h5g cimport GroupID
+from utils cimport emalloc, efree
+
+# === Public constants ========================================================
+
+TYPE_HARD = H5L_TYPE_HARD
+TYPE_SOFT = H5L_TYPE_SOFT
+TYPE_EXTERNAL = H5L_TYPE_EXTERNAL
+
+cdef class LinkInfo:
+
+    cdef H5L_info_t infostruct
+
+    property type:
+        """ Integer type code for link (h5l.TYPE_*) """
+        def __get__(self):
+            return <int>self.infostruct.type
+    property corder_valid:
+        """ Indicates if the creation order is valid """
+        def __get__(self):
+            return <bint>self.infostruct.corder_valid
+    property corder:
+        """ Creation order """
+        def __get__(self):
+            return self.infostruct.corder
+    property cset:
+        """ Integer type code for character set (h5t.CSET_*) """
+        def __get__(self):
+            return self.infostruct.cset
+    property u:
+        """ Either the address of a hard link or the size of a soft/UD link """
+        def __get__(self):
+            if self.infostruct.type == H5L_TYPE_HARD:
+                return self.infostruct.u.address
+            else:
+                return self.infostruct.u.val_size
+
+cdef class _LinkVisitor:
+
+    """ Helper class for iteration callback """
+
+    cdef object func
+    cdef object retval
+    cdef LinkInfo info
+
+    def __init__(self, func):
+        self.func = func
+        self.retval = None
+        self.info = LinkInfo()
+
+cdef herr_t cb_link_iterate(hid_t grp, char* name, H5L_info_t *istruct, void* data) except 2:
+    # Standard iteration callback for iterate/visit routines
+
+    cdef _LinkVisitor it = <_LinkVisitor?>data
+    it.info.infostruct = istruct[0]
+    it.retval = it.func(name, it.info)
+    if (it.retval is None) or (not it.retval):
+        return 0
+    return 1
+
+cdef herr_t cb_link_simple(hid_t grp, char* name, H5L_info_t *istruct, void* data) except 2:
+    # Simplified iteration callback which only provides the name
+
+    cdef _LinkVisitor it = <_LinkVisitor?>data
+    it.retval = it.func(name)
+    if (it.retval is None) or (not it.retval):
+        return 0
+    return 1
+
+
+cdef class LinkProxy:
+
+    """
+        Proxy class which provides access to the HDF5 "H5L" API.
+
+        These come attached to GroupID objects as "obj.links".  Since every
+        H5L function operates on at least one group, the methods provided
+        operate on their parent group identifier.  For example::
+
+            >>> g = h5g.open(fid, '/')
+            >>> g.links.exists("MyGroup")
+            True
+            >>> g.links.exists("FooBar")
+            False
+
+        * Hashable: No
+        * Equality: Undefined
+    """
+
+    def __init__(self, hid_t id_):
+
+        # The identifier in question is the hid_t for the parent GroupID.
+        # We "borrow" this reference.
+        self.id = id_
+
+    def __richcmp__(self, object other, int how):
+        return NotImplemented
+
+    def __hash__(self):
+        raise TypeError("Link proxies are unhashable; use the parent group instead.")
+
+
+    def create_hard(self, char* new_name, GroupID cur_loc not None,
+        char* cur_name, PropID lcpl=None, PropID lapl=None):
+        """ (STRING new_name, GroupID cur_loc, STRING cur_name,
+        PropID lcpl=None, PropID lapl=None)
+
+        Create a new hard link in this group pointing to an existing link
+        in another group.
+        """
+        H5Lcreate_hard(cur_loc.id, cur_name, self.id, new_name,
+            pdefault(lcpl), pdefault(lapl))
+
+
+    def create_soft(self, char* new_name, char* target,
+        PropID lcpl=None, PropID lapl=None):
+        """(STRING new_name, STRING target, PropID lcpl=None, PropID lapl=None)
+
+        Create a new soft link in this group, with the given string value.
+        The link target does not need to exist.
+        """
+        H5Lcreate_soft(target, self.id, new_name,
+            pdefault(lcpl), pdefault(lapl))
+
+
+    def create_external(self, char* link_name, char* file_name, char* obj_name,
+        PropID lcpl=None, PropID lapl=None):
+        """(STRING link_name, STRING file_name, STRING obj_name,
+        PropLCID lcpl=None, PropLAID lapl=None)
+
+        Create a new external link, pointing to an object in another file.
+        """
+        H5Lcreate_external(file_name, obj_name, self.id, link_name,
+            pdefault(lcpl), pdefault(lapl))
+
+
+    def get_val(self, char* name, PropID lapl=None):
+        """(STRING name, PropLAID lapl=None) => STRING or TUPLE(file, obj)
+
+        Get the string value of a soft link, or a 2-tuple representing
+        the contents of an external link.
+        """
+        cdef hid_t plist = pdefault(lapl)
+        cdef H5L_info_t info
+        cdef size_t buf_size
+        cdef char* buf = NULL
+        cdef char* ext_file_name = NULL
+        cdef char* ext_obj_name = NULL
+        cdef unsigned int wtf = 0
+
+        H5Lget_info(self.id, name, &info, plist)
+        if info.type != H5L_TYPE_SOFT and info.type != H5L_TYPE_EXTERNAL:
+            raise TypeError("Link must be either a soft or external link")
+
+        buf_size = info.u.val_size
+        buf = <char*>emalloc(buf_size)
+        try:
+            H5Lget_val(self.id, name, buf, buf_size, plist)
+            if info.type == H5L_TYPE_SOFT:
+                py_retval = buf
+            else:
+                H5Lunpack_elink_val(buf, buf_size, &wtf, &ext_file_name, &ext_obj_name)
+                py_retval = (bytes(ext_file_name), bytes(ext_obj_name))
+        finally:
+            efree(buf)
+
+        return py_retval
+
+
+    def move(self, char* src_name, GroupID dst_loc not None, char* dst_name,
+        PropID lcpl=None, PropID lapl=None):
+        """ (STRING src_name, GroupID dst_loc, STRING dst_name)
+
+        Move a link to a new location in the file.
+        """
+        H5Lmove(self.id, src_name, dst_loc.id, dst_name, pdefault(lcpl),
+                pdefault(lapl))
+
+
+    def exists(self, char* name):
+        """ (STRING name) => BOOL
+
+            Check if a link of the specified name exists in this group.
+        """
+        return <bint>(H5Lexists(self.id, name, H5P_DEFAULT))
+
+
+    def get_info(self, char* name, int index=-1, *, PropID lapl=None):
+        """(STRING name=, INT index=, **kwds) => LinkInfo instance
+
+        Get information about a link, either by name or its index.
+
+        Keywords:
+        """
+        cdef LinkInfo info = LinkInfo()
+        H5Lget_info(self.id, name, &info.infostruct, pdefault(lapl))
+        return info
+
+
+    def visit(self, object func, *,
+              int idx_type=H5_INDEX_NAME, int order=H5_ITER_NATIVE,
+              char* obj_name='.', PropID lapl=None, bint info=0):
+        """(CALLABLE func, **kwds) => <Return value from func>
+
+        Iterate a function or callable object over all groups below this
+        one.  Your callable should conform to the signature::
+
+            func(STRING name) => Result
+
+        or if the keyword argument "info" is True::
+
+            func(STRING name, LinkInfo info) => Result
+
+        Returning None or a logical False continues iteration; returning
+        anything else aborts iteration and returns that value.
+
+        BOOL info (False)
+            Provide a LinkInfo instance to callback
+
+        STRING obj_name (".")
+            Visit this subgroup instead
+
+        PropLAID lapl (None)
+            Link access property list for "obj_name"
+
+        INT idx_type (h5.INDEX_NAME)
+
+        INT order (h5.ITER_NATIVE)
+        """
+        cdef _LinkVisitor it = _LinkVisitor(func)
+        cdef H5L_iterate_t cfunc
+
+        if info:
+            cfunc = cb_link_iterate
+        else:
+            cfunc = cb_link_simple
+
+        H5Lvisit_by_name(self.id, obj_name, <H5_index_t>idx_type,
+            <H5_iter_order_t>order, cfunc, <void*>it, pdefault(lapl))
+
+        return it.retval
+
+    def iterate(self, object func, *,
+              int idx_type=H5_INDEX_NAME, int order=H5_ITER_NATIVE,
+              char* obj_name='.', PropID lapl=None, bint info=0,
+              hsize_t idx=0):
+        """(CALLABLE func, **kwds) => <Return value from func>, <index to restart at>
+
+        Iterate a function or callable object over all groups in this
+        one.  Your callable should conform to the signature::
+
+            func(STRING name) => Result
+
+        or if the keyword argument "info" is True::
+
+            func(STRING name, LinkInfo info) => Result
+
+        Returning None or a logical False continues iteration; returning
+        anything else aborts iteration and returns that value.
+
+        BOOL info (False)
+            Provide a LinkInfo instance to callback
+
+        STRING obj_name (".")
+            Visit this subgroup instead
+
+        PropLAID lapl (None)
+            Link access property list for "obj_name"
+
+        INT idx_type (h5.INDEX_NAME)
+
+        INT order (h5.ITER_NATIVE)
+
+        hsize_t idx (0)
+            The index to start iterating at
+        """
+        cdef _LinkVisitor it = _LinkVisitor(func)
+        cdef H5L_iterate_t cfunc
+
+        if info:
+            cfunc = cb_link_iterate
+        else:
+            cfunc = cb_link_simple
+
+        H5Literate_by_name(self.id, obj_name, <H5_index_t>idx_type,
+            <H5_iter_order_t>order, &idx,
+            cfunc, <void*>it, pdefault(lapl))
+
+        return it.retval, idx
diff --git a/h5py/h5o.c b/h5py/h5o.c
new file mode 100644
index 0000000..f827cdf
--- /dev/null
+++ b/h5py/h5o.c
@@ -0,0 +1,7518 @@
+/* Generated by Cython 0.18 on Mon Dec  9 16:00:33 2013 */
+
+#define PY_SSIZE_T_CLEAN
+#include "Python.h"
+#ifndef Py_PYTHON_H
+    #error Python headers needed to compile C extensions, please install development version of Python.
+#elif PY_VERSION_HEX < 0x02040000
+    #error Cython requires Python 2.4+.
+#else
+#include <stddef.h> /* For offsetof */
+#ifndef offsetof
+#define offsetof(type, member) ( (size_t) & ((type*)0) -> member )
+#endif
+#if !defined(WIN32) && !defined(MS_WINDOWS)
+  #ifndef __stdcall
+    #define __stdcall
+  #endif
+  #ifndef __cdecl
+    #define __cdecl
+  #endif
+  #ifndef __fastcall
+    #define __fastcall
+  #endif
+#endif
+#ifndef DL_IMPORT
+  #define DL_IMPORT(t) t
+#endif
+#ifndef DL_EXPORT
+  #define DL_EXPORT(t) t
+#endif
+#ifndef PY_LONG_LONG
+  #define PY_LONG_LONG LONG_LONG
+#endif
+#ifndef Py_HUGE_VAL
+  #define Py_HUGE_VAL HUGE_VAL
+#endif
+#ifdef PYPY_VERSION
+#define CYTHON_COMPILING_IN_PYPY 1
+#define CYTHON_COMPILING_IN_CPYTHON 0
+#else
+#define CYTHON_COMPILING_IN_PYPY 0
+#define CYTHON_COMPILING_IN_CPYTHON 1
+#endif
+#if PY_VERSION_HEX < 0x02050000
+  typedef int Py_ssize_t;
+  #define PY_SSIZE_T_MAX INT_MAX
+  #define PY_SSIZE_T_MIN INT_MIN
+  #define PY_FORMAT_SIZE_T ""
+  #define CYTHON_FORMAT_SSIZE_T ""
+  #define PyInt_FromSsize_t(z) PyInt_FromLong(z)
+  #define PyInt_AsSsize_t(o)   __Pyx_PyInt_AsInt(o)
+  #define PyNumber_Index(o)    ((PyNumber_Check(o) && !PyFloat_Check(o)) ? PyNumber_Int(o) : \
+                                (PyErr_Format(PyExc_TypeError, \
+                                              "expected index value, got %.200s", Py_TYPE(o)->tp_name), \
+                                 (PyObject*)0))
+  #define __Pyx_PyIndex_Check(o) (PyNumber_Check(o) && !PyFloat_Check(o) && \
+                                  !PyComplex_Check(o))
+  #define PyIndex_Check __Pyx_PyIndex_Check
+  #define PyErr_WarnEx(category, message, stacklevel) PyErr_Warn(category, message)
+  #define __PYX_BUILD_PY_SSIZE_T "i"
+#else
+  #define __PYX_BUILD_PY_SSIZE_T "n"
+  #define CYTHON_FORMAT_SSIZE_T "z"
+  #define __Pyx_PyIndex_Check PyIndex_Check
+#endif
+#if PY_VERSION_HEX < 0x02060000
+  #define Py_REFCNT(ob) (((PyObject*)(ob))->ob_refcnt)
+  #define Py_TYPE(ob)   (((PyObject*)(ob))->ob_type)
+  #define Py_SIZE(ob)   (((PyVarObject*)(ob))->ob_size)
+  #define PyVarObject_HEAD_INIT(type, size) \
+          PyObject_HEAD_INIT(type) size,
+  #define PyType_Modified(t)
+  typedef struct {
+     void *buf;
+     PyObject *obj;
+     Py_ssize_t len;
+     Py_ssize_t itemsize;
+     int readonly;
+     int ndim;
+     char *format;
+     Py_ssize_t *shape;
+     Py_ssize_t *strides;
+     Py_ssize_t *suboffsets;
+     void *internal;
+  } Py_buffer;
+  #define PyBUF_SIMPLE 0
+  #define PyBUF_WRITABLE 0x0001
+  #define PyBUF_FORMAT 0x0004
+  #define PyBUF_ND 0x0008
+  #define PyBUF_STRIDES (0x0010 | PyBUF_ND)
+  #define PyBUF_C_CONTIGUOUS (0x0020 | PyBUF_STRIDES)
+  #define PyBUF_F_CONTIGUOUS (0x0040 | PyBUF_STRIDES)
+  #define PyBUF_ANY_CONTIGUOUS (0x0080 | PyBUF_STRIDES)
+  #define PyBUF_INDIRECT (0x0100 | PyBUF_STRIDES)
+  #define PyBUF_RECORDS (PyBUF_STRIDES | PyBUF_FORMAT | PyBUF_WRITABLE)
+  #define PyBUF_FULL (PyBUF_INDIRECT | PyBUF_FORMAT | PyBUF_WRITABLE)
+  typedef int (*getbufferproc)(PyObject *, Py_buffer *, int);
+  typedef void (*releasebufferproc)(PyObject *, Py_buffer *);
+#endif
+#if PY_MAJOR_VERSION < 3
+  #define __Pyx_BUILTIN_MODULE_NAME "__builtin__"
+  #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) \
+          PyCode_New(a, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
+#else
+  #define __Pyx_BUILTIN_MODULE_NAME "builtins"
+  #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) \
+          PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
+#endif
+#if PY_MAJOR_VERSION < 3 && PY_MINOR_VERSION < 6
+  #define PyUnicode_FromString(s) PyUnicode_Decode(s, strlen(s), "UTF-8", "strict")
+#endif
+#if PY_MAJOR_VERSION >= 3
+  #define Py_TPFLAGS_CHECKTYPES 0
+  #define Py_TPFLAGS_HAVE_INDEX 0
+#endif
+#if (PY_VERSION_HEX < 0x02060000) || (PY_MAJOR_VERSION >= 3)
+  #define Py_TPFLAGS_HAVE_NEWBUFFER 0
+#endif
+#if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND)
+  #define CYTHON_PEP393_ENABLED 1
+  #define __Pyx_PyUnicode_READY(op)       (likely(PyUnicode_IS_READY(op)) ? \
+                                              0 : _PyUnicode_Ready((PyObject *)(op)))
+  #define __Pyx_PyUnicode_GET_LENGTH(u)   PyUnicode_GET_LENGTH(u)
+  #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i)
+  #define __Pyx_PyUnicode_READ(k, d, i)   PyUnicode_READ(k, d, i)
+#else
+  #define CYTHON_PEP393_ENABLED 0
+  #define __Pyx_PyUnicode_READY(op)       (0)
+  #define __Pyx_PyUnicode_GET_LENGTH(u)   PyUnicode_GET_SIZE(u)
+  #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i]))
+  #define __Pyx_PyUnicode_READ(k, d, i)   ((k=k), (Py_UCS4)(((Py_UNICODE*)d)[i]))
+#endif
+#if PY_MAJOR_VERSION >= 3
+  #define PyBaseString_Type            PyUnicode_Type
+  #define PyStringObject               PyUnicodeObject
+  #define PyString_Type                PyUnicode_Type
+  #define PyString_Check               PyUnicode_Check
+  #define PyString_CheckExact          PyUnicode_CheckExact
+#endif
+#if PY_VERSION_HEX < 0x02060000
+  #define PyBytesObject                PyStringObject
+  #define PyBytes_Type                 PyString_Type
+  #define PyBytes_Check                PyString_Check
+  #define PyBytes_CheckExact           PyString_CheckExact
+  #define PyBytes_FromString           PyString_FromString
+  #define PyBytes_FromStringAndSize    PyString_FromStringAndSize
+  #define PyBytes_FromFormat           PyString_FromFormat
+  #define PyBytes_DecodeEscape         PyString_DecodeEscape
+  #define PyBytes_AsString             PyString_AsString
+  #define PyBytes_AsStringAndSize      PyString_AsStringAndSize
+  #define PyBytes_Size                 PyString_Size
+  #define PyBytes_AS_STRING            PyString_AS_STRING
+  #define PyBytes_GET_SIZE             PyString_GET_SIZE
+  #define PyBytes_Repr                 PyString_Repr
+  #define PyBytes_Concat               PyString_Concat
+  #define PyBytes_ConcatAndDel         PyString_ConcatAndDel
+#endif
+#if PY_VERSION_HEX < 0x02060000
+  #define PySet_Check(obj)             PyObject_TypeCheck(obj, &PySet_Type)
+  #define PyFrozenSet_Check(obj)       PyObject_TypeCheck(obj, &PyFrozenSet_Type)
+#endif
+#ifndef PySet_CheckExact
+  #define PySet_CheckExact(obj)        (Py_TYPE(obj) == &PySet_Type)
+#endif
+#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type)
+#if PY_MAJOR_VERSION >= 3
+  #define PyIntObject                  PyLongObject
+  #define PyInt_Type                   PyLong_Type
+  #define PyInt_Check(op)              PyLong_Check(op)
+  #define PyInt_CheckExact(op)         PyLong_CheckExact(op)
+  #define PyInt_FromString             PyLong_FromString
+  #define PyInt_FromUnicode            PyLong_FromUnicode
+  #define PyInt_FromLong               PyLong_FromLong
+  #define PyInt_FromSize_t             PyLong_FromSize_t
+  #define PyInt_FromSsize_t            PyLong_FromSsize_t
+  #define PyInt_AsLong                 PyLong_AsLong
+  #define PyInt_AS_LONG                PyLong_AS_LONG
+  #define PyInt_AsSsize_t              PyLong_AsSsize_t
+  #define PyInt_AsUnsignedLongMask     PyLong_AsUnsignedLongMask
+  #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask
+#endif
+#if PY_MAJOR_VERSION >= 3
+  #define PyBoolObject                 PyLongObject
+#endif
+#if PY_VERSION_HEX < 0x03020000
+  typedef long Py_hash_t;
+  #define __Pyx_PyInt_FromHash_t PyInt_FromLong
+  #define __Pyx_PyInt_AsHash_t   PyInt_AsLong
+#else
+  #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t
+  #define __Pyx_PyInt_AsHash_t   PyInt_AsSsize_t
+#endif
+#if (PY_MAJOR_VERSION < 3) || (PY_VERSION_HEX >= 0x03010300)
+  #define __Pyx_PySequence_GetSlice(obj, a, b) PySequence_GetSlice(obj, a, b)
+  #define __Pyx_PySequence_SetSlice(obj, a, b, value) PySequence_SetSlice(obj, a, b, value)
+  #define __Pyx_PySequence_DelSlice(obj, a, b) PySequence_DelSlice(obj, a, b)
+#else
+  #define __Pyx_PySequence_GetSlice(obj, a, b) (unlikely(!(obj)) ? \
+        (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), (PyObject*)0) : \
+        (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_GetSlice(obj, a, b)) : \
+            (PyErr_Format(PyExc_TypeError, "'%.200s' object is unsliceable", (obj)->ob_type->tp_name), (PyObject*)0)))
+  #define __Pyx_PySequence_SetSlice(obj, a, b, value) (unlikely(!(obj)) ? \
+        (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), -1) : \
+        (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_SetSlice(obj, a, b, value)) : \
+            (PyErr_Format(PyExc_TypeError, "'%.200s' object doesn't support slice assignment", (obj)->ob_type->tp_name), -1)))
+  #define __Pyx_PySequence_DelSlice(obj, a, b) (unlikely(!(obj)) ? \
+        (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), -1) : \
+        (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_DelSlice(obj, a, b)) : \
+            (PyErr_Format(PyExc_TypeError, "'%.200s' object doesn't support slice deletion", (obj)->ob_type->tp_name), -1)))
+#endif
+#if PY_MAJOR_VERSION >= 3
+  #define PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, self) : PyInstanceMethod_New(func))
+#endif
+#if PY_VERSION_HEX < 0x02050000
+  #define __Pyx_GetAttrString(o,n)   PyObject_GetAttrString((o),((char *)(n)))
+  #define __Pyx_SetAttrString(o,n,a) PyObject_SetAttrString((o),((char *)(n)),(a))
+  #define __Pyx_DelAttrString(o,n)   PyObject_DelAttrString((o),((char *)(n)))
+#else
+  #define __Pyx_GetAttrString(o,n)   PyObject_GetAttrString((o),(n))
+  #define __Pyx_SetAttrString(o,n,a) PyObject_SetAttrString((o),(n),(a))
+  #define __Pyx_DelAttrString(o,n)   PyObject_DelAttrString((o),(n))
+#endif
+#if PY_VERSION_HEX < 0x02050000
+  #define __Pyx_NAMESTR(n) ((char *)(n))
+  #define __Pyx_DOCSTR(n)  ((char *)(n))
+#else
+  #define __Pyx_NAMESTR(n) (n)
+  #define __Pyx_DOCSTR(n)  (n)
+#endif
+
+
+#if PY_MAJOR_VERSION >= 3
+  #define __Pyx_PyNumber_Divide(x,y)         PyNumber_TrueDivide(x,y)
+  #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceTrueDivide(x,y)
+#else
+  #define __Pyx_PyNumber_Divide(x,y)         PyNumber_Divide(x,y)
+  #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceDivide(x,y)
+#endif
+
+#ifndef __PYX_EXTERN_C
+  #ifdef __cplusplus
+    #define __PYX_EXTERN_C extern "C"
+  #else
+    #define __PYX_EXTERN_C extern
+  #endif
+#endif
+
+#if defined(WIN32) || defined(MS_WINDOWS)
+#define _USE_MATH_DEFINES
+#endif
+#include <math.h>
+#define __PYX_HAVE__h5py__h5o
+#define __PYX_HAVE_API__h5py__h5o
+#include "stdlib.h"
+#include "string.h"
+#include "time.h"
+#include "unistd.h"
+#include "stdint.h"
+#include "api_compat.h"
+#include "lzf_filter.h"
+#include "hdf5.h"
+#include "H5Cpublic.h"
+#include "hdf5_hl.h"
+#include "numpy/arrayobject.h"
+#ifdef _OPENMP
+#include <omp.h>
+#endif /* _OPENMP */
+
+#ifdef PYREX_WITHOUT_ASSERTIONS
+#define CYTHON_WITHOUT_ASSERTIONS
+#endif
+
+#ifndef CYTHON_INLINE
+  #if defined(__GNUC__)
+    #define CYTHON_INLINE __inline__
+  #elif defined(_MSC_VER)
+    #define CYTHON_INLINE __inline
+  #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+    #define CYTHON_INLINE inline
+  #else
+    #define CYTHON_INLINE
+  #endif
+#endif
+#ifndef CYTHON_UNUSED
+# if defined(__GNUC__)
+#   if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
+#     define CYTHON_UNUSED __attribute__ ((__unused__))
+#   else
+#     define CYTHON_UNUSED
+#   endif
+# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER))
+#   define CYTHON_UNUSED __attribute__ ((__unused__))
+# else
+#   define CYTHON_UNUSED
+# endif
+#endif
+typedef struct {PyObject **p; char *s; const long n; const char* encoding; const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; /*proto*/
+
+#define __Pyx_PyBytes_FromUString(s) PyBytes_FromString((char*)s)
+#define __Pyx_PyBytes_AsUString(s)   ((unsigned char*) PyBytes_AsString(s))
+#define __Pyx_Owned_Py_None(b) (Py_INCREF(Py_None), Py_None)
+#define __Pyx_PyBool_FromLong(b) ((b) ? (Py_INCREF(Py_True), Py_True) : (Py_INCREF(Py_False), Py_False))
+static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*);
+static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x);
+static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*);
+static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t);
+static CYTHON_INLINE size_t __Pyx_PyInt_AsSize_t(PyObject*);
+#if CYTHON_COMPILING_IN_CPYTHON
+#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x))
+#else
+#define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x)
+#endif
+#define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x))
+
+
+#ifdef __GNUC__
+  /* Test for GCC > 2.95 */
+  #if __GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))
+    #define likely(x)   __builtin_expect(!!(x), 1)
+    #define unlikely(x) __builtin_expect(!!(x), 0)
+  #else /* __GNUC__ > 2 ... */
+    #define likely(x)   (x)
+    #define unlikely(x) (x)
+  #endif /* __GNUC__ > 2 ... */
+#else /* __GNUC__ */
+  #define likely(x)   (x)
+  #define unlikely(x) (x)
+#endif /* __GNUC__ */
+    
+static PyObject *__pyx_m;
+static PyObject *__pyx_b;
+static PyObject *__pyx_empty_tuple;
+static PyObject *__pyx_empty_bytes;
+static int __pyx_lineno;
+static int __pyx_clineno = 0;
+static const char * __pyx_cfilenm= __FILE__;
+static const char *__pyx_filename;
+
+
+static const char *__pyx_f[] = {
+  "h5o.pyx",
+  "_objects.pxd",
+  "h5g.pxd",
+  "h5p.pxd",
+  "numpy.pxd",
+};
+
+/*--- Type declarations ---*/
+struct __pyx_obj_4h5py_8_objects_ObjectID;
+struct __pyx_obj_4h5py_3h5p_PropID;
+struct __pyx_obj_4h5py_3h5p_PropInstanceID;
+struct __pyx_obj_4h5py_3h5p_PropFAID;
+struct __pyx_obj_4h5py_3h5o__ObjectVisitor;
+struct __pyx_obj_4h5py_3h5o__ObjInfoBase;
+struct __pyx_obj_4h5py_3h5o__OHdr;
+struct __pyx_obj_4h5py_3h5p_PropCreateID;
+struct __pyx_obj_4h5py_3h5p_PropFCID;
+struct __pyx_obj_4h5py_3h5p_PropClassID;
+struct __pyx_obj_4h5py_3h5o__ObjInfo;
+struct __pyx_obj_4h5py_3h5p_PropOCID;
+struct __pyx_obj_4h5py_3h5o_ObjInfo;
+struct __pyx_obj_4h5py_3h5p_PropLCID;
+struct __pyx_obj_4h5py_3h5g_GroupID;
+struct __pyx_obj_4h5py_3h5p_PropGCID;
+struct __pyx_obj_4h5py_3h5o__OHdrMesg;
+struct __pyx_obj_4h5py_3h5p_PropDCID;
+struct __pyx_obj_4h5py_3h5p_PropLAID;
+struct __pyx_obj_4h5py_3h5o__OHdrSpace;
+struct __pyx_obj_4h5py_3h5p_PropCopyID;
+struct __pyx_obj_4h5py_3h5p_PropDXID;
+struct __pyx_opt_args_4h5py_5utils_check_numpy_read;
+struct __pyx_opt_args_4h5py_5utils_check_numpy_write;
+
+/* "utils.pxd":17
+ * cdef void efree(void* ptr)
+ * 
+ * cpdef int check_numpy_read(ndarray arr, hid_t space_id=*) except -1             # <<<<<<<<<<<<<<
+ * cpdef int check_numpy_write(ndarray arr, hid_t space_id=*) except -1
+ * 
+ */
+struct __pyx_opt_args_4h5py_5utils_check_numpy_read {
+  int __pyx_n;
+  hid_t space_id;
+};
+
+/* "utils.pxd":18
+ * 
+ * cpdef int check_numpy_read(ndarray arr, hid_t space_id=*) except -1
+ * cpdef int check_numpy_write(ndarray arr, hid_t space_id=*) except -1             # <<<<<<<<<<<<<<
+ * 
+ * cdef int convert_tuple(object tuple, hsize_t *dims, hsize_t rank) except -1
+ */
+struct __pyx_opt_args_4h5py_5utils_check_numpy_write {
+  int __pyx_n;
+  hid_t space_id;
+};
+
+/* "_objects.pxd":12
+ * from defs cimport *
+ * 
+ * cdef class ObjectID:             # <<<<<<<<<<<<<<
+ * 
+ *     cdef object __weakref__
+ */
+struct __pyx_obj_4h5py_8_objects_ObjectID {
+  PyObject_HEAD
+  PyObject *__weakref__;
+  hid_t id;
+  int locked;
+  PyObject *_hash;
+};
+
+
+/* "h5p.pxd":16
+ * # --- Base classes ---
+ * 
+ * cdef class PropID(ObjectID):             # <<<<<<<<<<<<<<
+ *     """ Base class for all property lists """
+ *     pass
+ */
+struct __pyx_obj_4h5py_3h5p_PropID {
+  struct __pyx_obj_4h5py_8_objects_ObjectID __pyx_base;
+};
+
+
+/* "h5p.pxd":26
+ *     pass
+ * 
+ * cdef class PropInstanceID(PropID):             # <<<<<<<<<<<<<<
+ *     """ Represents an instance of a property list class (i.e. an actual list
+ *         which can be passed on to other API functions).
+ */
+struct __pyx_obj_4h5py_3h5p_PropInstanceID {
+  struct __pyx_obj_4h5py_3h5p_PropID __pyx_base;
+};
+
+
+/* "h5p.pxd":59
+ * # --- Object access ---
+ * 
+ * cdef class PropFAID(PropInstanceID):             # <<<<<<<<<<<<<<
+ *     """ File access property list """
+ *     pass
+ */
+struct __pyx_obj_4h5py_3h5p_PropFAID {
+  struct __pyx_obj_4h5py_3h5p_PropInstanceID __pyx_base;
+};
+
+
+/* "h5py/h5o.pyx":245
+ * # === Visit routines ==========================================================
+ * 
+ * cdef class _ObjectVisitor:             # <<<<<<<<<<<<<<
+ * 
+ *     cdef object func
+ */
+struct __pyx_obj_4h5py_3h5o__ObjectVisitor {
+  PyObject_HEAD
+  PyObject *func;
+  PyObject *retval;
+  struct __pyx_obj_4h5py_3h5o_ObjInfo *objinfo;
+};
+
+
+/* "h5py/h5o.pyx":36
+ * # === Giant H5O_info_t structure ==============================================
+ * 
+ * cdef class _ObjInfoBase:             # <<<<<<<<<<<<<<
+ * 
+ *     cdef H5O_info_t *istr
+ */
+struct __pyx_obj_4h5py_3h5o__ObjInfoBase {
+  PyObject_HEAD
+  H5O_info_t *istr;
+};
+
+
+/* "h5py/h5o.pyx":70
+ *         return hash((self.total, self.meta, self.mesg, self.free))
+ * 
+ * cdef class _OHdr(_ObjInfoBase):             # <<<<<<<<<<<<<<
+ * 
+ *     cdef public _OHdrSpace space
+ */
+struct __pyx_obj_4h5py_3h5o__OHdr {
+  struct __pyx_obj_4h5py_3h5o__ObjInfoBase __pyx_base;
+  struct __pyx_obj_4h5py_3h5o__OHdrSpace *space;
+  struct __pyx_obj_4h5py_3h5o__OHdrMesg *mesg;
+};
+
+
+/* "h5p.pxd":32
+ *     pass
+ * 
+ * cdef class PropCreateID(PropInstanceID):             # <<<<<<<<<<<<<<
+ *     """ Base class for all object creation lists.
+ * 
+ */
+struct __pyx_obj_4h5py_3h5p_PropCreateID {
+  struct __pyx_obj_4h5py_3h5p_PropInstanceID __pyx_base;
+};
+
+
+/* "h5p.pxd":52
+ *     pass
+ * 
+ * cdef class PropFCID(PropCreateID):             # <<<<<<<<<<<<<<
+ *     """ File creation property list """
+ *     pass
+ */
+struct __pyx_obj_4h5py_3h5p_PropFCID {
+  struct __pyx_obj_4h5py_3h5p_PropCreateID __pyx_base;
+};
+
+
+/* "h5p.pxd":20
+ *     pass
+ * 
+ * cdef class PropClassID(PropID):             # <<<<<<<<<<<<<<
+ *     """ Represents an HDF5 property list class.  These can be either (locked)
+ *         library-defined classes or user-created classes.
+ */
+struct __pyx_obj_4h5py_3h5p_PropClassID {
+  struct __pyx_obj_4h5py_3h5p_PropID __pyx_base;
+};
+
+
+/* "h5py/h5o.pyx":89
+ *         return hash((self.version, self.nmesgs, self.space, self.mesg))
+ * 
+ * cdef class _ObjInfo(_ObjInfoBase):             # <<<<<<<<<<<<<<
+ * 
+ *     property fileno:
+ */
+struct __pyx_obj_4h5py_3h5o__ObjInfo {
+  struct __pyx_obj_4h5py_3h5o__ObjInfoBase __pyx_base;
+};
+
+
+/* "h5p.pxd":44
+ * # --- Object creation ---
+ * 
+ * cdef class PropOCID(PropCreateID):             # <<<<<<<<<<<<<<
+ *     """ Object creation property list """
+ *     pass
+ */
+struct __pyx_obj_4h5py_3h5p_PropOCID {
+  struct __pyx_obj_4h5py_3h5p_PropCreateID __pyx_base;
+};
+
+
+/* "h5py/h5o.pyx":107
+ *         return hash((self.fileno, self.addr, self.type, self.rc))
+ * 
+ * cdef class ObjInfo(_ObjInfo):             # <<<<<<<<<<<<<<
+ * 
+ *     """
+ */
+struct __pyx_obj_4h5py_3h5o_ObjInfo {
+  struct __pyx_obj_4h5py_3h5o__ObjInfo __pyx_base;
+  H5O_info_t infostruct;
+  struct __pyx_obj_4h5py_3h5o__OHdr *hdr;
+};
+
+
+/* "h5p.pxd":70
+ * # --- New in 1.8 ---
+ * 
+ * cdef class PropLCID(PropCreateID):             # <<<<<<<<<<<<<<
+ *     """ Link creation property list """
+ *     pass
+ */
+struct __pyx_obj_4h5py_3h5p_PropLCID {
+  struct __pyx_obj_4h5py_3h5p_PropCreateID __pyx_base;
+};
+
+
+/* "h5g.pxd":14
+ * from _objects cimport ObjectID
+ * 
+ * cdef class GroupID(ObjectID):             # <<<<<<<<<<<<<<
+ * 
+ *     cdef readonly object links
+ */
+struct __pyx_obj_4h5py_3h5g_GroupID {
+  struct __pyx_obj_4h5py_8_objects_ObjectID __pyx_base;
+  PyObject *links;
+};
+
+
+/* "h5p.pxd":78
+ *     cdef char* _buf
+ * 
+ * cdef class PropGCID(PropOCID):             # <<<<<<<<<<<<<<
+ *     """ Group creation property list """
+ *     pass
+ */
+struct __pyx_obj_4h5py_3h5p_PropGCID {
+  struct __pyx_obj_4h5py_3h5p_PropOCID __pyx_base;
+};
+
+
+/* "h5py/h5o.pyx":40
+ *     cdef H5O_info_t *istr
+ * 
+ * cdef class _OHdrMesg(_ObjInfoBase):             # <<<<<<<<<<<<<<
+ * 
+ *     property present:
+ */
+struct __pyx_obj_4h5py_3h5o__OHdrMesg {
+  struct __pyx_obj_4h5py_3h5o__ObjInfoBase __pyx_base;
+};
+
+
+/* "h5p.pxd":48
+ *     pass
+ * 
+ * cdef class PropDCID(PropOCID):             # <<<<<<<<<<<<<<
+ *     """ Dataset creation property list """
+ *     pass
+ */
+struct __pyx_obj_4h5py_3h5p_PropDCID {
+  struct __pyx_obj_4h5py_3h5p_PropOCID __pyx_base;
+};
+
+
+/* "h5p.pxd":74
+ *     pass
+ * 
+ * cdef class PropLAID(PropInstanceID):             # <<<<<<<<<<<<<<
+ *     """ Link access property list """
+ *     cdef char* _buf
+ */
+struct __pyx_obj_4h5py_3h5p_PropLAID {
+  struct __pyx_obj_4h5py_3h5p_PropInstanceID __pyx_base;
+  char *_buf;
+};
+
+
+/* "h5py/h5o.pyx":52
+ *         return hash((self.present, self.shared))
+ * 
+ * cdef class _OHdrSpace(_ObjInfoBase):             # <<<<<<<<<<<<<<
+ * 
+ *     property total:
+ */
+struct __pyx_obj_4h5py_3h5o__OHdrSpace {
+  struct __pyx_obj_4h5py_3h5o__ObjInfoBase __pyx_base;
+};
+
+
+/* "h5p.pxd":39
+ *     pass
+ * 
+ * cdef class PropCopyID(PropInstanceID):             # <<<<<<<<<<<<<<
+ *     """ Property list for copying objects (as in h5o.copy) """
+ * 
+ */
+struct __pyx_obj_4h5py_3h5p_PropCopyID {
+  struct __pyx_obj_4h5py_3h5p_PropInstanceID __pyx_base;
+};
+
+
+/* "h5p.pxd":63
+ *     pass
+ * 
+ * cdef class PropDXID(PropInstanceID):             # <<<<<<<<<<<<<<
+ *     """ Dataset transfer property list """
+ *     pass
+ */
+struct __pyx_obj_4h5py_3h5p_PropDXID {
+  struct __pyx_obj_4h5py_3h5p_PropInstanceID __pyx_base;
+};
+
+#ifndef CYTHON_REFNANNY
+  #define CYTHON_REFNANNY 0
+#endif
+#if CYTHON_REFNANNY
+  typedef struct {
+    void (*INCREF)(void*, PyObject*, int);
+    void (*DECREF)(void*, PyObject*, int);
+    void (*GOTREF)(void*, PyObject*, int);
+    void (*GIVEREF)(void*, PyObject*, int);
+    void* (*SetupContext)(const char*, int, const char*);
+    void (*FinishContext)(void**);
+  } __Pyx_RefNannyAPIStruct;
+  static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL;
+  static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); /*proto*/
+  #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL;
+#ifdef WITH_THREAD
+  #define __Pyx_RefNannySetupContext(name, acquire_gil) \
+          if (acquire_gil) { \
+              PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); \
+              __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__); \
+              PyGILState_Release(__pyx_gilstate_save); \
+          } else { \
+              __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__); \
+          }
+#else
+  #define __Pyx_RefNannySetupContext(name, acquire_gil) \
+          __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__)
+#endif
+  #define __Pyx_RefNannyFinishContext() \
+          __Pyx_RefNanny->FinishContext(&__pyx_refnanny)
+  #define __Pyx_INCREF(r)  __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_DECREF(r)  __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_GOTREF(r)  __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_XINCREF(r)  do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0)
+  #define __Pyx_XDECREF(r)  do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0)
+  #define __Pyx_XGOTREF(r)  do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0)
+  #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0)
+#else
+  #define __Pyx_RefNannyDeclarations
+  #define __Pyx_RefNannySetupContext(name, acquire_gil)
+  #define __Pyx_RefNannyFinishContext()
+  #define __Pyx_INCREF(r) Py_INCREF(r)
+  #define __Pyx_DECREF(r) Py_DECREF(r)
+  #define __Pyx_GOTREF(r)
+  #define __Pyx_GIVEREF(r)
+  #define __Pyx_XINCREF(r) Py_XINCREF(r)
+  #define __Pyx_XDECREF(r) Py_XDECREF(r)
+  #define __Pyx_XGOTREF(r)
+  #define __Pyx_XGIVEREF(r)
+#endif /* CYTHON_REFNANNY */
+#define __Pyx_CLEAR(r)    do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0)
+#define __Pyx_XCLEAR(r)   do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0)
+
+static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name); /*proto*/
+
+static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact,
+    Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); /*proto*/
+
+static CYTHON_INLINE int __Pyx_CheckKeywordStrings(PyObject *kwdict, const char* function_name, int kw_allowed); /*proto*/
+
+static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type); /*proto*/
+
+static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name); /*proto*/
+
+static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[], \
+    PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args, \
+    const char* function_name); /*proto*/
+
+static int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, int none_allowed,
+    const char *name, int exact); /*proto*/
+
+static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb); /*proto*/
+static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb); /*proto*/
+
+static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause); /*proto*/
+
+static int __Pyx_call_next_tp_traverse(PyObject* obj, visitproc v, void *a, traverseproc current_tp_traverse);
+
+static void __Pyx_call_next_tp_clear(PyObject* obj, inquiry current_tp_dealloc);
+
+static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_hsize_t(hsize_t);
+
+static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_haddr_t(haddr_t);
+
+static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_hid_t(hid_t);
+
+static CYTHON_INLINE unsigned char __Pyx_PyInt_AsUnsignedChar(PyObject *);
+
+static CYTHON_INLINE unsigned short __Pyx_PyInt_AsUnsignedShort(PyObject *);
+
+static CYTHON_INLINE unsigned int __Pyx_PyInt_AsUnsignedInt(PyObject *);
+
+static CYTHON_INLINE char __Pyx_PyInt_AsChar(PyObject *);
+
+static CYTHON_INLINE short __Pyx_PyInt_AsShort(PyObject *);
+
+static CYTHON_INLINE int __Pyx_PyInt_AsInt(PyObject *);
+
+static CYTHON_INLINE signed char __Pyx_PyInt_AsSignedChar(PyObject *);
+
+static CYTHON_INLINE signed short __Pyx_PyInt_AsSignedShort(PyObject *);
+
+static CYTHON_INLINE signed int __Pyx_PyInt_AsSignedInt(PyObject *);
+
+static CYTHON_INLINE int __Pyx_PyInt_AsLongDouble(PyObject *);
+
+static CYTHON_INLINE unsigned long __Pyx_PyInt_AsUnsignedLong(PyObject *);
+
+static CYTHON_INLINE unsigned PY_LONG_LONG __Pyx_PyInt_AsUnsignedLongLong(PyObject *);
+
+static CYTHON_INLINE long __Pyx_PyInt_AsLong(PyObject *);
+
+static CYTHON_INLINE PY_LONG_LONG __Pyx_PyInt_AsLongLong(PyObject *);
+
+static CYTHON_INLINE signed long __Pyx_PyInt_AsSignedLong(PyObject *);
+
+static CYTHON_INLINE signed PY_LONG_LONG __Pyx_PyInt_AsSignedLongLong(PyObject *);
+
+static int __Pyx_check_binary_version(void);
+
+#if !defined(__Pyx_PyIdentifier_FromString)
+#if PY_MAJOR_VERSION < 3
+  #define __Pyx_PyIdentifier_FromString(s) PyString_FromString(s)
+#else
+  #define __Pyx_PyIdentifier_FromString(s) PyUnicode_FromString(s)
+#endif
+#endif
+
+static PyObject *__Pyx_ImportModule(const char *name); /*proto*/
+
+static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name, size_t size, int strict);  /*proto*/
+
+static int __Pyx_ImportFunction(PyObject *module, const char *funcname, void (**f)(void), const char *sig); /*proto*/
+
+typedef struct {
+    int code_line;
+    PyCodeObject* code_object;
+} __Pyx_CodeObjectCacheEntry;
+struct __Pyx_CodeObjectCache {
+    int count;
+    int max_count;
+    __Pyx_CodeObjectCacheEntry* entries;
+};
+static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL};
+static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line);
+static PyCodeObject *__pyx_find_code_object(int code_line);
+static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object);
+
+static void __Pyx_AddTraceback(const char *funcname, int c_line,
+                               int py_line, const char *filename); /*proto*/
+
+static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); /*proto*/
+
+
+/* Module declarations from 'h5py.api_types_ext' */
+
+/* Module declarations from 'h5py.api_types_hdf5' */
+
+/* Module declarations from 'h5py.defs' */
+static hid_t (*__pyx_f_4h5py_4defs_H5Oopen)(hid_t, char *, hid_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Oget_info)(hid_t, H5O_info_t *); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Oget_info_by_name)(hid_t, char *, H5O_info_t *, hid_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Oget_info_by_idx)(hid_t, char *, H5_index_t, H5_iter_order_t, hsize_t, H5O_info_t *, hid_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Olink)(hid_t, hid_t, char *, hid_t, hid_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Ocopy)(hid_t, char *, hid_t, char *, hid_t, hid_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Oset_comment_by_name)(hid_t, char *, char *, hid_t); /*proto*/
+static Py_ssize_t (*__pyx_f_4h5py_4defs_H5Oget_comment_by_name)(hid_t, char *, char *, size_t, hid_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Ovisit_by_name)(hid_t, char *, H5_index_t, H5_iter_order_t, H5O_iterate_t, void *, hid_t); /*proto*/
+
+/* Module declarations from 'h5py._objects' */
+static PyTypeObject *__pyx_ptype_4h5py_8_objects_ObjectID = 0;
+static hid_t (*__pyx_f_4h5py_8_objects_pdefault)(struct __pyx_obj_4h5py_8_objects_ObjectID *); /*proto*/
+
+/* Module declarations from 'h5py.h5g' */
+static PyTypeObject *__pyx_ptype_4h5py_3h5g_GroupID = 0;
+
+/* Module declarations from 'h5py.h5i' */
+static struct __pyx_obj_4h5py_8_objects_ObjectID *(*__pyx_f_4h5py_3h5i_wrap_identifier)(hid_t, int __pyx_skip_dispatch); /*proto*/
+
+/* Module declarations from 'h5py.h5p' */
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropClassID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropInstanceID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropCreateID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropCopyID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropOCID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropDCID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropFCID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropFAID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropDXID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropLCID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropLAID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropGCID = 0;
+
+/* Module declarations from 'numpy' */
+
+/* Module declarations from 'h5py.numpy' */
+static PyTypeObject *__pyx_ptype_4h5py_5numpy_dtype = 0;
+static PyTypeObject *__pyx_ptype_4h5py_5numpy_ndarray = 0;
+
+/* Module declarations from 'h5py.utils' */
+static void *(*__pyx_f_4h5py_5utils_emalloc)(size_t); /*proto*/
+static void (*__pyx_f_4h5py_5utils_efree)(void *); /*proto*/
+
+/* Module declarations from 'h5py.h5o' */
+static PyTypeObject *__pyx_ptype_4h5py_3h5o__ObjInfoBase = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5o__OHdrMesg = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5o__OHdrSpace = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5o__OHdr = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5o__ObjInfo = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5o_ObjInfo = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5o__ObjectVisitor = 0;
+static herr_t __pyx_f_4h5py_3h5o_cb_obj_iterate(hid_t, char *, H5O_info_t *, void *); /*proto*/
+static herr_t __pyx_f_4h5py_3h5o_cb_obj_simple(hid_t, char *, H5O_info_t *, void *); /*proto*/
+#define __Pyx_MODULE_NAME "h5py.h5o"
+int __pyx_module_is_main_h5py__h5o = 0;
+
+/* Implementation of 'h5py.h5o' */
+static PyObject *__pyx_builtin_TypeError;
+static PyObject *__pyx_pf_4h5py_3h5o_9_OHdrMesg_7present___get__(struct __pyx_obj_4h5py_3h5o__OHdrMesg *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5o_9_OHdrMesg_6shared___get__(struct __pyx_obj_4h5py_3h5o__OHdrMesg *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5o_9_OHdrMesg__hash(struct __pyx_obj_4h5py_3h5o__OHdrMesg *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5o_10_OHdrSpace_5total___get__(struct __pyx_obj_4h5py_3h5o__OHdrSpace *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5o_10_OHdrSpace_4meta___get__(struct __pyx_obj_4h5py_3h5o__OHdrSpace *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5o_10_OHdrSpace_4mesg___get__(struct __pyx_obj_4h5py_3h5o__OHdrSpace *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5o_10_OHdrSpace_4free___get__(struct __pyx_obj_4h5py_3h5o__OHdrSpace *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5o_10_OHdrSpace__hash(struct __pyx_obj_4h5py_3h5o__OHdrSpace *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5o_5_OHdr_7version___get__(struct __pyx_obj_4h5py_3h5o__OHdr *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5o_5_OHdr_6nmesgs___get__(struct __pyx_obj_4h5py_3h5o__OHdr *__pyx_v_self); /* proto */
+static int __pyx_pf_4h5py_3h5o_5_OHdr___init__(struct __pyx_obj_4h5py_3h5o__OHdr *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5o_5_OHdr_2_hash(struct __pyx_obj_4h5py_3h5o__OHdr *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5o_5_OHdr_5space___get__(struct __pyx_obj_4h5py_3h5o__OHdr *__pyx_v_self); /* proto */
+static int __pyx_pf_4h5py_3h5o_5_OHdr_5space_2__set__(struct __pyx_obj_4h5py_3h5o__OHdr *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
+static int __pyx_pf_4h5py_3h5o_5_OHdr_5space_4__del__(struct __pyx_obj_4h5py_3h5o__OHdr *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5o_5_OHdr_4mesg___get__(struct __pyx_obj_4h5py_3h5o__OHdr *__pyx_v_self); /* proto */
+static int __pyx_pf_4h5py_3h5o_5_OHdr_4mesg_2__set__(struct __pyx_obj_4h5py_3h5o__OHdr *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
+static int __pyx_pf_4h5py_3h5o_5_OHdr_4mesg_4__del__(struct __pyx_obj_4h5py_3h5o__OHdr *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5o_8_ObjInfo_6fileno___get__(struct __pyx_obj_4h5py_3h5o__ObjInfo *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5o_8_ObjInfo_4addr___get__(struct __pyx_obj_4h5py_3h5o__ObjInfo *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5o_8_ObjInfo_4type___get__(struct __pyx_obj_4h5py_3h5o__ObjInfo *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5o_8_ObjInfo_2rc___get__(struct __pyx_obj_4h5py_3h5o__ObjInfo *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5o_8_ObjInfo__hash(struct __pyx_obj_4h5py_3h5o__ObjInfo *__pyx_v_self); /* proto */
+static int __pyx_pf_4h5py_3h5o_7ObjInfo___init__(struct __pyx_obj_4h5py_3h5o_ObjInfo *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5o_7ObjInfo_2__copy__(struct __pyx_obj_4h5py_3h5o_ObjInfo *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5o_7ObjInfo_3hdr___get__(struct __pyx_obj_4h5py_3h5o_ObjInfo *__pyx_v_self); /* proto */
+static int __pyx_pf_4h5py_3h5o_7ObjInfo_3hdr_2__set__(struct __pyx_obj_4h5py_3h5o_ObjInfo *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
+static int __pyx_pf_4h5py_3h5o_7ObjInfo_3hdr_4__del__(struct __pyx_obj_4h5py_3h5o_ObjInfo *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5o_get_info(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_loc, char *__pyx_v_name, int __pyx_v_index, char *__pyx_v_obj_name, int __pyx_v_index_type, int __pyx_v_order, struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_lapl); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5o_2open(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_loc, char *__pyx_v_name, struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_lapl); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5o_4link(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_obj, struct __pyx_obj_4h5py_3h5g_GroupID *__pyx_v_loc, char *__pyx_v_name, struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_lcpl, struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_lapl); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5o_6copy(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_src_loc, char *__pyx_v_src_name, struct __pyx_obj_4h5py_3h5g_GroupID *__pyx_v_dst_loc, char *__pyx_v_dst_name, struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_copypl, struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_lcpl); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5o_8set_comment(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_loc, char *__pyx_v_comment, char *__pyx_v_obj_name, struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_lapl); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5o_10get_comment(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_loc, CYTHON_UNUSED char *__pyx_v_comment, char *__pyx_v_obj_name, struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_lapl); /* proto */
+static int __pyx_pf_4h5py_3h5o_14_ObjectVisitor___init__(struct __pyx_obj_4h5py_3h5o__ObjectVisitor *__pyx_v_self, PyObject *__pyx_v_func); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5o_12visit(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_loc, PyObject *__pyx_v_func, int __pyx_v_idx_type, int __pyx_v_order, char *__pyx_v_obj_name, struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_lapl, int __pyx_v_info); /* proto */
+static char __pyx_k_1[] = ".";
+static char __pyx_k_4[] = "At most one of name or index may be specified";
+static char __pyx_k_8[] = "\n    Module for HDF5 \"H5O\" functions.\n";
+static char __pyx_k_9[] = "COPY_SHALLOW_HIERARCHY_FLAG";
+static char __pyx_k_10[] = "COPY_EXPAND_SOFT_LINK_FLAG";
+static char __pyx_k_11[] = "COPY_EXPAND_EXT_LINK_FLAG";
+static char __pyx_k_12[] = "COPY_EXPAND_REFERENCE_FLAG";
+static char __pyx_k_13[] = "COPY_WITHOUT_ATTR_FLAG";
+static char __pyx_k_14[] = "COPY_PRESERVE_NULL_FLAG";
+static char __pyx_k_17[] = "/home/computer/h5py/h5py/h5o.pyx";
+static char __pyx_k_18[] = "h5py.h5o";
+static char __pyx_k__rc[] = "rc";
+static char __pyx_k__buf[] = "buf";
+static char __pyx_k__loc[] = "loc";
+static char __pyx_k__obj[] = "obj";
+static char __pyx_k__addr[] = "addr";
+static char __pyx_k__copy[] = "copy";
+static char __pyx_k__free[] = "free";
+static char __pyx_k__func[] = "func";
+static char __pyx_k__info[] = "info";
+static char __pyx_k__lapl[] = "lapl";
+static char __pyx_k__lcpl[] = "lcpl";
+static char __pyx_k__link[] = "link";
+static char __pyx_k__mesg[] = "mesg";
+static char __pyx_k__meta[] = "meta";
+static char __pyx_k__name[] = "name";
+static char __pyx_k__open[] = "open";
+static char __pyx_k__size[] = "size";
+static char __pyx_k__type[] = "type";
+static char __pyx_k__cfunc[] = "cfunc";
+static char __pyx_k__index[] = "index";
+static char __pyx_k__order[] = "order";
+static char __pyx_k__total[] = "total";
+static char __pyx_k__visit[] = "visit";
+static char __pyx_k__copypl[] = "copypl";
+static char __pyx_k__fileno[] = "fileno";
+static char __pyx_k__nmesgs[] = "nmesgs";
+static char __pyx_k__shared[] = "shared";
+static char __pyx_k__comment[] = "comment";
+static char __pyx_k__dst_loc[] = "dst_loc";
+static char __pyx_k__present[] = "present";
+static char __pyx_k__pstring[] = "pstring";
+static char __pyx_k__src_loc[] = "src_loc";
+static char __pyx_k__version[] = "version";
+static char __pyx_k____main__[] = "__main__";
+static char __pyx_k____test__[] = "__test__";
+static char __pyx_k__dst_name[] = "dst_name";
+static char __pyx_k__get_info[] = "get_info";
+static char __pyx_k__idx_type[] = "idx_type";
+static char __pyx_k__obj_name[] = "obj_name";
+static char __pyx_k__src_name[] = "src_name";
+static char __pyx_k__TypeError[] = "TypeError";
+static char __pyx_k__TYPE_GROUP[] = "TYPE_GROUP";
+static char __pyx_k__index_type[] = "index_type";
+static char __pyx_k__get_comment[] = "get_comment";
+static char __pyx_k__set_comment[] = "set_comment";
+static char __pyx_k__TYPE_DATASET[] = "TYPE_DATASET";
+static char __pyx_k__TYPE_NAMED_DATATYPE[] = "TYPE_NAMED_DATATYPE";
+static PyObject *__pyx_n_s_10;
+static PyObject *__pyx_n_s_11;
+static PyObject *__pyx_n_s_12;
+static PyObject *__pyx_n_s_13;
+static PyObject *__pyx_n_s_14;
+static PyObject *__pyx_kp_s_17;
+static PyObject *__pyx_n_s_18;
+static PyObject *__pyx_kp_s_4;
+static PyObject *__pyx_n_s_9;
+static PyObject *__pyx_n_s__TYPE_DATASET;
+static PyObject *__pyx_n_s__TYPE_GROUP;
+static PyObject *__pyx_n_s__TYPE_NAMED_DATATYPE;
+static PyObject *__pyx_n_s__TypeError;
+static PyObject *__pyx_n_s____main__;
+static PyObject *__pyx_n_s____test__;
+static PyObject *__pyx_n_s__addr;
+static PyObject *__pyx_n_s__buf;
+static PyObject *__pyx_n_s__cfunc;
+static PyObject *__pyx_n_s__comment;
+static PyObject *__pyx_n_s__copy;
+static PyObject *__pyx_n_s__copypl;
+static PyObject *__pyx_n_s__dst_loc;
+static PyObject *__pyx_n_s__dst_name;
+static PyObject *__pyx_n_s__fileno;
+static PyObject *__pyx_n_s__free;
+static PyObject *__pyx_n_s__func;
+static PyObject *__pyx_n_s__get_comment;
+static PyObject *__pyx_n_s__get_info;
+static PyObject *__pyx_n_s__idx_type;
+static PyObject *__pyx_n_s__index;
+static PyObject *__pyx_n_s__index_type;
+static PyObject *__pyx_n_s__info;
+static PyObject *__pyx_n_s__lapl;
+static PyObject *__pyx_n_s__lcpl;
+static PyObject *__pyx_n_s__link;
+static PyObject *__pyx_n_s__loc;
+static PyObject *__pyx_n_s__mesg;
+static PyObject *__pyx_n_s__meta;
+static PyObject *__pyx_n_s__name;
+static PyObject *__pyx_n_s__nmesgs;
+static PyObject *__pyx_n_s__obj;
+static PyObject *__pyx_n_s__obj_name;
+static PyObject *__pyx_n_s__open;
+static PyObject *__pyx_n_s__order;
+static PyObject *__pyx_n_s__present;
+static PyObject *__pyx_n_s__pstring;
+static PyObject *__pyx_n_s__rc;
+static PyObject *__pyx_n_s__set_comment;
+static PyObject *__pyx_n_s__shared;
+static PyObject *__pyx_n_s__size;
+static PyObject *__pyx_n_s__src_loc;
+static PyObject *__pyx_n_s__src_name;
+static PyObject *__pyx_n_s__total;
+static PyObject *__pyx_n_s__type;
+static PyObject *__pyx_n_s__version;
+static PyObject *__pyx_n_s__visit;
+static int __pyx_k_2;
+static int __pyx_k_3;
+static int __pyx_k_6;
+static int __pyx_k_7;
+static PyObject *__pyx_k_tuple_5;
+static PyObject *__pyx_k_tuple_15;
+static PyObject *__pyx_k_tuple_19;
+static PyObject *__pyx_k_tuple_21;
+static PyObject *__pyx_k_tuple_23;
+static PyObject *__pyx_k_tuple_25;
+static PyObject *__pyx_k_tuple_27;
+static PyObject *__pyx_k_tuple_29;
+static PyObject *__pyx_k_codeobj_16;
+static PyObject *__pyx_k_codeobj_20;
+static PyObject *__pyx_k_codeobj_22;
+static PyObject *__pyx_k_codeobj_24;
+static PyObject *__pyx_k_codeobj_26;
+static PyObject *__pyx_k_codeobj_28;
+static PyObject *__pyx_k_codeobj_30;
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5o_9_OHdrMesg_7present_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4h5py_3h5o_9_OHdrMesg_7present_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5o_9_OHdrMesg_7present___get__(((struct __pyx_obj_4h5py_3h5o__OHdrMesg *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5o.pyx":43
+ * 
+ *     property present:
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.istr[0].hdr.mesg.present
+ *     property shared:
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5o_9_OHdrMesg_7present___get__(struct __pyx_obj_4h5py_3h5o__OHdrMesg *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "h5py/h5o.pyx":44
+ *     property present:
+ *         def __get__(self):
+ *             return self.istr[0].hdr.mesg.present             # <<<<<<<<<<<<<<
+ *     property shared:
+ *         def __get__(self):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyLong_FromUnsignedLong((__pyx_v_self->__pyx_base.istr[0]).hdr.mesg.present); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py.h5o._OHdrMesg.present.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5o_9_OHdrMesg_6shared_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4h5py_3h5o_9_OHdrMesg_6shared_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5o_9_OHdrMesg_6shared___get__(((struct __pyx_obj_4h5py_3h5o__OHdrMesg *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5o.pyx":46
+ *             return self.istr[0].hdr.mesg.present
+ *     property shared:
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.istr[0].hdr.mesg.shared
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5o_9_OHdrMesg_6shared___get__(struct __pyx_obj_4h5py_3h5o__OHdrMesg *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "h5py/h5o.pyx":47
+ *     property shared:
+ *         def __get__(self):
+ *             return self.istr[0].hdr.mesg.shared             # <<<<<<<<<<<<<<
+ * 
+ *     def _hash(self):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyLong_FromUnsignedLong((__pyx_v_self->__pyx_base.istr[0]).hdr.mesg.shared); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py.h5o._OHdrMesg.shared.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5o_9_OHdrMesg_1_hash(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static PyObject *__pyx_pw_4h5py_3h5o_9_OHdrMesg_1_hash(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("_hash (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5o_9_OHdrMesg__hash(((struct __pyx_obj_4h5py_3h5o__OHdrMesg *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5o.pyx":49
+ *             return self.istr[0].hdr.mesg.shared
+ * 
+ *     def _hash(self):             # <<<<<<<<<<<<<<
+ *         return hash((self.present, self.shared))
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5o_9_OHdrMesg__hash(struct __pyx_obj_4h5py_3h5o__OHdrMesg *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  Py_hash_t __pyx_t_4;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_hash", 0);
+
+  /* "h5py/h5o.pyx":50
+ * 
+ *     def _hash(self):
+ *         return hash((self.present, self.shared))             # <<<<<<<<<<<<<<
+ * 
+ * cdef class _OHdrSpace(_ObjInfoBase):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__present); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__shared); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2);
+  __Pyx_GIVEREF(__pyx_t_2);
+  __pyx_t_1 = 0;
+  __pyx_t_2 = 0;
+  __pyx_t_4 = PyObject_Hash(((PyObject *)__pyx_t_3)); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
+  __pyx_t_3 = __Pyx_PyInt_FromHash_t(__pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_r = __pyx_t_3;
+  __pyx_t_3 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("h5py.h5o._OHdrMesg._hash", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5o_10_OHdrSpace_5total_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4h5py_3h5o_10_OHdrSpace_5total_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5o_10_OHdrSpace_5total___get__(((struct __pyx_obj_4h5py_3h5o__OHdrSpace *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5o.pyx":55
+ * 
+ *     property total:
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.istr[0].hdr.space.total
+ *     property meta:
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5o_10_OHdrSpace_5total___get__(struct __pyx_obj_4h5py_3h5o__OHdrSpace *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "h5py/h5o.pyx":56
+ *     property total:
+ *         def __get__(self):
+ *             return self.istr[0].hdr.space.total             # <<<<<<<<<<<<<<
+ *     property meta:
+ *         def __get__(self):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_to_py_hsize_t((__pyx_v_self->__pyx_base.istr[0]).hdr.space.total); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py.h5o._OHdrSpace.total.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5o_10_OHdrSpace_4meta_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4h5py_3h5o_10_OHdrSpace_4meta_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5o_10_OHdrSpace_4meta___get__(((struct __pyx_obj_4h5py_3h5o__OHdrSpace *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5o.pyx":58
+ *             return self.istr[0].hdr.space.total
+ *     property meta:
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.istr[0].hdr.space.meta
+ *     property mesg:
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5o_10_OHdrSpace_4meta___get__(struct __pyx_obj_4h5py_3h5o__OHdrSpace *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "h5py/h5o.pyx":59
+ *     property meta:
+ *         def __get__(self):
+ *             return self.istr[0].hdr.space.meta             # <<<<<<<<<<<<<<
+ *     property mesg:
+ *         def __get__(self):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_to_py_hsize_t((__pyx_v_self->__pyx_base.istr[0]).hdr.space.meta); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py.h5o._OHdrSpace.meta.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5o_10_OHdrSpace_4mesg_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4h5py_3h5o_10_OHdrSpace_4mesg_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5o_10_OHdrSpace_4mesg___get__(((struct __pyx_obj_4h5py_3h5o__OHdrSpace *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5o.pyx":61
+ *             return self.istr[0].hdr.space.meta
+ *     property mesg:
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.istr[0].hdr.space.mesg
+ *     property free:
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5o_10_OHdrSpace_4mesg___get__(struct __pyx_obj_4h5py_3h5o__OHdrSpace *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "h5py/h5o.pyx":62
+ *     property mesg:
+ *         def __get__(self):
+ *             return self.istr[0].hdr.space.mesg             # <<<<<<<<<<<<<<
+ *     property free:
+ *         def __get__(self):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_to_py_hsize_t((__pyx_v_self->__pyx_base.istr[0]).hdr.space.mesg); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py.h5o._OHdrSpace.mesg.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5o_10_OHdrSpace_4free_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4h5py_3h5o_10_OHdrSpace_4free_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5o_10_OHdrSpace_4free___get__(((struct __pyx_obj_4h5py_3h5o__OHdrSpace *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5o.pyx":64
+ *             return self.istr[0].hdr.space.mesg
+ *     property free:
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.istr[0].hdr.space.free
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5o_10_OHdrSpace_4free___get__(struct __pyx_obj_4h5py_3h5o__OHdrSpace *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "h5py/h5o.pyx":65
+ *     property free:
+ *         def __get__(self):
+ *             return self.istr[0].hdr.space.free             # <<<<<<<<<<<<<<
+ * 
+ *     def _hash(self):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_to_py_hsize_t((__pyx_v_self->__pyx_base.istr[0]).hdr.space.free); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py.h5o._OHdrSpace.free.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5o_10_OHdrSpace_1_hash(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static PyObject *__pyx_pw_4h5py_3h5o_10_OHdrSpace_1_hash(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("_hash (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5o_10_OHdrSpace__hash(((struct __pyx_obj_4h5py_3h5o__OHdrSpace *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5o.pyx":67
+ *             return self.istr[0].hdr.space.free
+ * 
+ *     def _hash(self):             # <<<<<<<<<<<<<<
+ *         return hash((self.total, self.meta, self.mesg, self.free))
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5o_10_OHdrSpace__hash(struct __pyx_obj_4h5py_3h5o__OHdrSpace *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  Py_hash_t __pyx_t_6;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_hash", 0);
+
+  /* "h5py/h5o.pyx":68
+ * 
+ *     def _hash(self):
+ *         return hash((self.total, self.meta, self.mesg, self.free))             # <<<<<<<<<<<<<<
+ * 
+ * cdef class _OHdr(_ObjInfoBase):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__total); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__meta); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__mesg); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_4 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__free); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = PyTuple_New(4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_2);
+  __Pyx_GIVEREF(__pyx_t_2);
+  PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_3);
+  PyTuple_SET_ITEM(__pyx_t_5, 3, __pyx_t_4);
+  __Pyx_GIVEREF(__pyx_t_4);
+  __pyx_t_1 = 0;
+  __pyx_t_2 = 0;
+  __pyx_t_3 = 0;
+  __pyx_t_4 = 0;
+  __pyx_t_6 = PyObject_Hash(((PyObject *)__pyx_t_5)); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
+  __pyx_t_5 = __Pyx_PyInt_FromHash_t(__pyx_t_6); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_r = __pyx_t_5;
+  __pyx_t_5 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_AddTraceback("h5py.h5o._OHdrSpace._hash", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5o_5_OHdr_7version_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4h5py_3h5o_5_OHdr_7version_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5o_5_OHdr_7version___get__(((struct __pyx_obj_4h5py_3h5o__OHdr *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5o.pyx":76
+ * 
+ *     property version:
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.istr[0].hdr.version
+ *     property nmesgs:
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5o_5_OHdr_7version___get__(struct __pyx_obj_4h5py_3h5o__OHdr *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "h5py/h5o.pyx":77
+ *     property version:
+ *         def __get__(self):
+ *             return self.istr[0].hdr.version             # <<<<<<<<<<<<<<
+ *     property nmesgs:
+ *         def __get__(self):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyLong_FromUnsignedLong((__pyx_v_self->__pyx_base.istr[0]).hdr.version); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py.h5o._OHdr.version.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5o_5_OHdr_6nmesgs_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4h5py_3h5o_5_OHdr_6nmesgs_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5o_5_OHdr_6nmesgs___get__(((struct __pyx_obj_4h5py_3h5o__OHdr *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5o.pyx":79
+ *             return self.istr[0].hdr.version
+ *     property nmesgs:
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.istr[0].hdr.nmesgs
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5o_5_OHdr_6nmesgs___get__(struct __pyx_obj_4h5py_3h5o__OHdr *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "h5py/h5o.pyx":80
+ *     property nmesgs:
+ *         def __get__(self):
+ *             return self.istr[0].hdr.nmesgs             # <<<<<<<<<<<<<<
+ * 
+ *     def __init__(self):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyLong_FromUnsignedLong((__pyx_v_self->__pyx_base.istr[0]).hdr.nmesgs); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py.h5o._OHdr.nmesgs.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static int __pyx_pw_4h5py_3h5o_5_OHdr_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_4h5py_3h5o_5_OHdr_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
+  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
+    __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
+  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 0))) return -1;
+  __pyx_r = __pyx_pf_4h5py_3h5o_5_OHdr___init__(((struct __pyx_obj_4h5py_3h5o__OHdr *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5o.pyx":82
+ *             return self.istr[0].hdr.nmesgs
+ * 
+ *     def __init__(self):             # <<<<<<<<<<<<<<
+ *         self.space = _OHdrSpace()
+ *         self.mesg = _OHdrMesg()
+ */
+
+static int __pyx_pf_4h5py_3h5o_5_OHdr___init__(struct __pyx_obj_4h5py_3h5o__OHdr *__pyx_v_self) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__init__", 0);
+
+  /* "h5py/h5o.pyx":83
+ * 
+ *     def __init__(self):
+ *         self.space = _OHdrSpace()             # <<<<<<<<<<<<<<
+ *         self.mesg = _OHdrMesg()
+ * 
+ */
+  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4h5py_3h5o__OHdrSpace)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_GOTREF(__pyx_v_self->space);
+  __Pyx_DECREF(((PyObject *)__pyx_v_self->space));
+  __pyx_v_self->space = ((struct __pyx_obj_4h5py_3h5o__OHdrSpace *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "h5py/h5o.pyx":84
+ *     def __init__(self):
+ *         self.space = _OHdrSpace()
+ *         self.mesg = _OHdrMesg()             # <<<<<<<<<<<<<<
+ * 
+ *     def _hash(self):
+ */
+  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4h5py_3h5o__OHdrMesg)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_GOTREF(__pyx_v_self->mesg);
+  __Pyx_DECREF(((PyObject *)__pyx_v_self->mesg));
+  __pyx_v_self->mesg = ((struct __pyx_obj_4h5py_3h5o__OHdrMesg *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py.h5o._OHdr.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5o_5_OHdr_3_hash(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static PyObject *__pyx_pw_4h5py_3h5o_5_OHdr_3_hash(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("_hash (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5o_5_OHdr_2_hash(((struct __pyx_obj_4h5py_3h5o__OHdr *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5o.pyx":86
+ *         self.mesg = _OHdrMesg()
+ * 
+ *     def _hash(self):             # <<<<<<<<<<<<<<
+ *         return hash((self.version, self.nmesgs, self.space, self.mesg))
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5o_5_OHdr_2_hash(struct __pyx_obj_4h5py_3h5o__OHdr *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  Py_hash_t __pyx_t_4;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_hash", 0);
+
+  /* "h5py/h5o.pyx":87
+ * 
+ *     def _hash(self):
+ *         return hash((self.version, self.nmesgs, self.space, self.mesg))             # <<<<<<<<<<<<<<
+ * 
+ * cdef class _ObjInfo(_ObjInfoBase):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__version); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__nmesgs); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = PyTuple_New(4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2);
+  __Pyx_GIVEREF(__pyx_t_2);
+  __Pyx_INCREF(((PyObject *)__pyx_v_self->space));
+  PyTuple_SET_ITEM(__pyx_t_3, 2, ((PyObject *)__pyx_v_self->space));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_self->space));
+  __Pyx_INCREF(((PyObject *)__pyx_v_self->mesg));
+  PyTuple_SET_ITEM(__pyx_t_3, 3, ((PyObject *)__pyx_v_self->mesg));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_self->mesg));
+  __pyx_t_1 = 0;
+  __pyx_t_2 = 0;
+  __pyx_t_4 = PyObject_Hash(((PyObject *)__pyx_t_3)); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
+  __pyx_t_3 = __Pyx_PyInt_FromHash_t(__pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_r = __pyx_t_3;
+  __pyx_t_3 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("h5py.h5o._OHdr._hash", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5o_5_OHdr_5space_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4h5py_3h5o_5_OHdr_5space_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5o_5_OHdr_5space___get__(((struct __pyx_obj_4h5py_3h5o__OHdr *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5o.pyx":72
+ * cdef class _OHdr(_ObjInfoBase):
+ * 
+ *     cdef public _OHdrSpace space             # <<<<<<<<<<<<<<
+ *     cdef public _OHdrMesg mesg
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5o_5_OHdr_5space___get__(struct __pyx_obj_4h5py_3h5o__OHdr *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(((PyObject *)__pyx_v_self->space));
+  __pyx_r = ((PyObject *)__pyx_v_self->space);
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static int __pyx_pw_4h5py_3h5o_5_OHdr_5space_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
+static int __pyx_pw_4h5py_3h5o_5_OHdr_5space_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5o_5_OHdr_5space_2__set__(((struct __pyx_obj_4h5py_3h5o__OHdr *)__pyx_v_self), ((PyObject *)__pyx_v_value));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_4h5py_3h5o_5_OHdr_5space_2__set__(struct __pyx_obj_4h5py_3h5o__OHdr *__pyx_v_self, PyObject *__pyx_v_value) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__set__", 0);
+  if (!(likely(((__pyx_v_value) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_value, __pyx_ptype_4h5py_3h5o__OHdrSpace))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_INCREF(__pyx_v_value);
+  __Pyx_GIVEREF(__pyx_v_value);
+  __Pyx_GOTREF(__pyx_v_self->space);
+  __Pyx_DECREF(((PyObject *)__pyx_v_self->space));
+  __pyx_v_self->space = ((struct __pyx_obj_4h5py_3h5o__OHdrSpace *)__pyx_v_value);
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py.h5o._OHdr.space.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static int __pyx_pw_4h5py_3h5o_5_OHdr_5space_5__del__(PyObject *__pyx_v_self); /*proto*/
+static int __pyx_pw_4h5py_3h5o_5_OHdr_5space_5__del__(PyObject *__pyx_v_self) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5o_5_OHdr_5space_4__del__(((struct __pyx_obj_4h5py_3h5o__OHdr *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_4h5py_3h5o_5_OHdr_5space_4__del__(struct __pyx_obj_4h5py_3h5o__OHdr *__pyx_v_self) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__del__", 0);
+  __Pyx_INCREF(Py_None);
+  __Pyx_GIVEREF(Py_None);
+  __Pyx_GOTREF(__pyx_v_self->space);
+  __Pyx_DECREF(((PyObject *)__pyx_v_self->space));
+  __pyx_v_self->space = ((struct __pyx_obj_4h5py_3h5o__OHdrSpace *)Py_None);
+
+  __pyx_r = 0;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5o_5_OHdr_4mesg_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4h5py_3h5o_5_OHdr_4mesg_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5o_5_OHdr_4mesg___get__(((struct __pyx_obj_4h5py_3h5o__OHdr *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5o.pyx":73
+ * 
+ *     cdef public _OHdrSpace space
+ *     cdef public _OHdrMesg mesg             # <<<<<<<<<<<<<<
+ * 
+ *     property version:
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5o_5_OHdr_4mesg___get__(struct __pyx_obj_4h5py_3h5o__OHdr *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(((PyObject *)__pyx_v_self->mesg));
+  __pyx_r = ((PyObject *)__pyx_v_self->mesg);
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static int __pyx_pw_4h5py_3h5o_5_OHdr_4mesg_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
+static int __pyx_pw_4h5py_3h5o_5_OHdr_4mesg_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5o_5_OHdr_4mesg_2__set__(((struct __pyx_obj_4h5py_3h5o__OHdr *)__pyx_v_self), ((PyObject *)__pyx_v_value));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_4h5py_3h5o_5_OHdr_4mesg_2__set__(struct __pyx_obj_4h5py_3h5o__OHdr *__pyx_v_self, PyObject *__pyx_v_value) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__set__", 0);
+  if (!(likely(((__pyx_v_value) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_value, __pyx_ptype_4h5py_3h5o__OHdrMesg))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_INCREF(__pyx_v_value);
+  __Pyx_GIVEREF(__pyx_v_value);
+  __Pyx_GOTREF(__pyx_v_self->mesg);
+  __Pyx_DECREF(((PyObject *)__pyx_v_self->mesg));
+  __pyx_v_self->mesg = ((struct __pyx_obj_4h5py_3h5o__OHdrMesg *)__pyx_v_value);
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py.h5o._OHdr.mesg.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static int __pyx_pw_4h5py_3h5o_5_OHdr_4mesg_5__del__(PyObject *__pyx_v_self); /*proto*/
+static int __pyx_pw_4h5py_3h5o_5_OHdr_4mesg_5__del__(PyObject *__pyx_v_self) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5o_5_OHdr_4mesg_4__del__(((struct __pyx_obj_4h5py_3h5o__OHdr *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_4h5py_3h5o_5_OHdr_4mesg_4__del__(struct __pyx_obj_4h5py_3h5o__OHdr *__pyx_v_self) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__del__", 0);
+  __Pyx_INCREF(Py_None);
+  __Pyx_GIVEREF(Py_None);
+  __Pyx_GOTREF(__pyx_v_self->mesg);
+  __Pyx_DECREF(((PyObject *)__pyx_v_self->mesg));
+  __pyx_v_self->mesg = ((struct __pyx_obj_4h5py_3h5o__OHdrMesg *)Py_None);
+
+  __pyx_r = 0;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5o_8_ObjInfo_6fileno_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4h5py_3h5o_8_ObjInfo_6fileno_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5o_8_ObjInfo_6fileno___get__(((struct __pyx_obj_4h5py_3h5o__ObjInfo *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5o.pyx":92
+ * 
+ *     property fileno:
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.istr[0].fileno
+ *     property addr:
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5o_8_ObjInfo_6fileno___get__(struct __pyx_obj_4h5py_3h5o__ObjInfo *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "h5py/h5o.pyx":93
+ *     property fileno:
+ *         def __get__(self):
+ *             return self.istr[0].fileno             # <<<<<<<<<<<<<<
+ *     property addr:
+ *         def __get__(self):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyLong_FromUnsignedLong((__pyx_v_self->__pyx_base.istr[0]).fileno); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py.h5o._ObjInfo.fileno.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5o_8_ObjInfo_4addr_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4h5py_3h5o_8_ObjInfo_4addr_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5o_8_ObjInfo_4addr___get__(((struct __pyx_obj_4h5py_3h5o__ObjInfo *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5o.pyx":95
+ *             return self.istr[0].fileno
+ *     property addr:
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.istr[0].addr
+ *     property type:
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5o_8_ObjInfo_4addr___get__(struct __pyx_obj_4h5py_3h5o__ObjInfo *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "h5py/h5o.pyx":96
+ *     property addr:
+ *         def __get__(self):
+ *             return self.istr[0].addr             # <<<<<<<<<<<<<<
+ *     property type:
+ *         def __get__(self):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_to_py_haddr_t((__pyx_v_self->__pyx_base.istr[0]).addr); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py.h5o._ObjInfo.addr.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5o_8_ObjInfo_4type_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4h5py_3h5o_8_ObjInfo_4type_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5o_8_ObjInfo_4type___get__(((struct __pyx_obj_4h5py_3h5o__ObjInfo *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5o.pyx":98
+ *             return self.istr[0].addr
+ *     property type:
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return <int>self.istr[0].type
+ *     property rc:
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5o_8_ObjInfo_4type___get__(struct __pyx_obj_4h5py_3h5o__ObjInfo *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "h5py/h5o.pyx":99
+ *     property type:
+ *         def __get__(self):
+ *             return <int>self.istr[0].type             # <<<<<<<<<<<<<<
+ *     property rc:
+ *         def __get__(self):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyInt_FromLong(((int)(__pyx_v_self->__pyx_base.istr[0]).type)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 99; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py.h5o._ObjInfo.type.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5o_8_ObjInfo_2rc_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4h5py_3h5o_8_ObjInfo_2rc_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5o_8_ObjInfo_2rc___get__(((struct __pyx_obj_4h5py_3h5o__ObjInfo *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5o.pyx":101
+ *             return <int>self.istr[0].type
+ *     property rc:
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.istr[0].rc
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5o_8_ObjInfo_2rc___get__(struct __pyx_obj_4h5py_3h5o__ObjInfo *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "h5py/h5o.pyx":102
+ *     property rc:
+ *         def __get__(self):
+ *             return self.istr[0].rc             # <<<<<<<<<<<<<<
+ * 
+ *     def _hash(self):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyLong_FromUnsignedLong((__pyx_v_self->__pyx_base.istr[0]).rc); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py.h5o._ObjInfo.rc.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5o_8_ObjInfo_1_hash(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static PyObject *__pyx_pw_4h5py_3h5o_8_ObjInfo_1_hash(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("_hash (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5o_8_ObjInfo__hash(((struct __pyx_obj_4h5py_3h5o__ObjInfo *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5o.pyx":104
+ *             return self.istr[0].rc
+ * 
+ *     def _hash(self):             # <<<<<<<<<<<<<<
+ *         return hash((self.fileno, self.addr, self.type, self.rc))
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5o_8_ObjInfo__hash(struct __pyx_obj_4h5py_3h5o__ObjInfo *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  Py_hash_t __pyx_t_6;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_hash", 0);
+
+  /* "h5py/h5o.pyx":105
+ * 
+ *     def _hash(self):
+ *         return hash((self.fileno, self.addr, self.type, self.rc))             # <<<<<<<<<<<<<<
+ * 
+ * cdef class ObjInfo(_ObjInfo):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__fileno); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__addr); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__type); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_4 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__rc); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = PyTuple_New(4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_2);
+  __Pyx_GIVEREF(__pyx_t_2);
+  PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_3);
+  PyTuple_SET_ITEM(__pyx_t_5, 3, __pyx_t_4);
+  __Pyx_GIVEREF(__pyx_t_4);
+  __pyx_t_1 = 0;
+  __pyx_t_2 = 0;
+  __pyx_t_3 = 0;
+  __pyx_t_4 = 0;
+  __pyx_t_6 = PyObject_Hash(((PyObject *)__pyx_t_5)); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
+  __pyx_t_5 = __Pyx_PyInt_FromHash_t(__pyx_t_6); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_r = __pyx_t_5;
+  __pyx_t_5 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_AddTraceback("h5py.h5o._ObjInfo._hash", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static int __pyx_pw_4h5py_3h5o_7ObjInfo_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_4h5py_3h5o_7ObjInfo_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
+  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
+    __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
+  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 0))) return -1;
+  __pyx_r = __pyx_pf_4h5py_3h5o_7ObjInfo___init__(((struct __pyx_obj_4h5py_3h5o_ObjInfo *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5o.pyx":116
+ *     cdef public _OHdr hdr
+ * 
+ *     def __init__(self):             # <<<<<<<<<<<<<<
+ *         self.hdr = _OHdr()
+ * 
+ */
+
+static int __pyx_pf_4h5py_3h5o_7ObjInfo___init__(struct __pyx_obj_4h5py_3h5o_ObjInfo *__pyx_v_self) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__init__", 0);
+
+  /* "h5py/h5o.pyx":117
+ * 
+ *     def __init__(self):
+ *         self.hdr = _OHdr()             # <<<<<<<<<<<<<<
+ * 
+ *         self.istr = &self.infostruct
+ */
+  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4h5py_3h5o__OHdr)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_GOTREF(__pyx_v_self->hdr);
+  __Pyx_DECREF(((PyObject *)__pyx_v_self->hdr));
+  __pyx_v_self->hdr = ((struct __pyx_obj_4h5py_3h5o__OHdr *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "h5py/h5o.pyx":119
+ *         self.hdr = _OHdr()
+ * 
+ *         self.istr = &self.infostruct             # <<<<<<<<<<<<<<
+ *         self.hdr.istr = &self.infostruct
+ *         self.hdr.space.istr = &self.infostruct
+ */
+  __pyx_v_self->__pyx_base.__pyx_base.istr = (&__pyx_v_self->infostruct);
+
+  /* "h5py/h5o.pyx":120
+ * 
+ *         self.istr = &self.infostruct
+ *         self.hdr.istr = &self.infostruct             # <<<<<<<<<<<<<<
+ *         self.hdr.space.istr = &self.infostruct
+ *         self.hdr.mesg.istr = &self.infostruct
+ */
+  __pyx_v_self->hdr->__pyx_base.istr = (&__pyx_v_self->infostruct);
+
+  /* "h5py/h5o.pyx":121
+ *         self.istr = &self.infostruct
+ *         self.hdr.istr = &self.infostruct
+ *         self.hdr.space.istr = &self.infostruct             # <<<<<<<<<<<<<<
+ *         self.hdr.mesg.istr = &self.infostruct
+ * 
+ */
+  __pyx_v_self->hdr->space->__pyx_base.istr = (&__pyx_v_self->infostruct);
+
+  /* "h5py/h5o.pyx":122
+ *         self.hdr.istr = &self.infostruct
+ *         self.hdr.space.istr = &self.infostruct
+ *         self.hdr.mesg.istr = &self.infostruct             # <<<<<<<<<<<<<<
+ * 
+ *     def __copy__(self):
+ */
+  __pyx_v_self->hdr->mesg->__pyx_base.istr = (&__pyx_v_self->infostruct);
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py.h5o.ObjInfo.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5o_7ObjInfo_3__copy__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static PyObject *__pyx_pw_4h5py_3h5o_7ObjInfo_3__copy__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__copy__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5o_7ObjInfo_2__copy__(((struct __pyx_obj_4h5py_3h5o_ObjInfo *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5o.pyx":124
+ *         self.hdr.mesg.istr = &self.infostruct
+ * 
+ *     def __copy__(self):             # <<<<<<<<<<<<<<
+ *         cdef ObjInfo newcopy
+ *         newcopy = ObjInfo()
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5o_7ObjInfo_2__copy__(struct __pyx_obj_4h5py_3h5o_ObjInfo *__pyx_v_self) {
+  struct __pyx_obj_4h5py_3h5o_ObjInfo *__pyx_v_newcopy = 0;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  H5O_info_t __pyx_t_2;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__copy__", 0);
+
+  /* "h5py/h5o.pyx":126
+ *     def __copy__(self):
+ *         cdef ObjInfo newcopy
+ *         newcopy = ObjInfo()             # <<<<<<<<<<<<<<
+ *         newcopy.infostruct = self.infostruct
+ *         return newcopy
+ */
+  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4h5py_3h5o_ObjInfo)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_newcopy = ((struct __pyx_obj_4h5py_3h5o_ObjInfo *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "h5py/h5o.pyx":127
+ *         cdef ObjInfo newcopy
+ *         newcopy = ObjInfo()
+ *         newcopy.infostruct = self.infostruct             # <<<<<<<<<<<<<<
+ *         return newcopy
+ * 
+ */
+  __pyx_t_2 = __pyx_v_self->infostruct;
+  __pyx_v_newcopy->infostruct = __pyx_t_2;
+
+  /* "h5py/h5o.pyx":128
+ *         newcopy = ObjInfo()
+ *         newcopy.infostruct = self.infostruct
+ *         return newcopy             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(((PyObject *)__pyx_v_newcopy));
+  __pyx_r = ((PyObject *)__pyx_v_newcopy);
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py.h5o.ObjInfo.__copy__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_newcopy);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5o_7ObjInfo_3hdr_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4h5py_3h5o_7ObjInfo_3hdr_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5o_7ObjInfo_3hdr___get__(((struct __pyx_obj_4h5py_3h5o_ObjInfo *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5o.pyx":114
+ * 
+ *     cdef H5O_info_t infostruct
+ *     cdef public _OHdr hdr             # <<<<<<<<<<<<<<
+ * 
+ *     def __init__(self):
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5o_7ObjInfo_3hdr___get__(struct __pyx_obj_4h5py_3h5o_ObjInfo *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(((PyObject *)__pyx_v_self->hdr));
+  __pyx_r = ((PyObject *)__pyx_v_self->hdr);
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static int __pyx_pw_4h5py_3h5o_7ObjInfo_3hdr_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
+static int __pyx_pw_4h5py_3h5o_7ObjInfo_3hdr_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5o_7ObjInfo_3hdr_2__set__(((struct __pyx_obj_4h5py_3h5o_ObjInfo *)__pyx_v_self), ((PyObject *)__pyx_v_value));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_4h5py_3h5o_7ObjInfo_3hdr_2__set__(struct __pyx_obj_4h5py_3h5o_ObjInfo *__pyx_v_self, PyObject *__pyx_v_value) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__set__", 0);
+  if (!(likely(((__pyx_v_value) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_value, __pyx_ptype_4h5py_3h5o__OHdr))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_INCREF(__pyx_v_value);
+  __Pyx_GIVEREF(__pyx_v_value);
+  __Pyx_GOTREF(__pyx_v_self->hdr);
+  __Pyx_DECREF(((PyObject *)__pyx_v_self->hdr));
+  __pyx_v_self->hdr = ((struct __pyx_obj_4h5py_3h5o__OHdr *)__pyx_v_value);
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py.h5o.ObjInfo.hdr.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static int __pyx_pw_4h5py_3h5o_7ObjInfo_3hdr_5__del__(PyObject *__pyx_v_self); /*proto*/
+static int __pyx_pw_4h5py_3h5o_7ObjInfo_3hdr_5__del__(PyObject *__pyx_v_self) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5o_7ObjInfo_3hdr_4__del__(((struct __pyx_obj_4h5py_3h5o_ObjInfo *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_4h5py_3h5o_7ObjInfo_3hdr_4__del__(struct __pyx_obj_4h5py_3h5o_ObjInfo *__pyx_v_self) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__del__", 0);
+  __Pyx_INCREF(Py_None);
+  __Pyx_GIVEREF(Py_None);
+  __Pyx_GOTREF(__pyx_v_self->hdr);
+  __Pyx_DECREF(((PyObject *)__pyx_v_self->hdr));
+  __pyx_v_self->hdr = ((struct __pyx_obj_4h5py_3h5o__OHdr *)Py_None);
+
+  __pyx_r = 0;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5o_1get_info(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_4h5py_3h5o_get_info[] = "(ObjectID loc, STRING name=, INT index=, **kwds) => ObjInfo\n\n    Get information describing an object in an HDF5 file.  Provide the object\n    itself, or the containing group and exactly one of \"name\" or \"index\".\n\n    STRING obj_name (\".\")\n        When \"index\" is specified, look in this subgroup instead.\n        Otherwise ignored.\n\n    PropID lapl (None)\n        Link access property list\n\n    INT index_type (h5.INDEX_NAME [...]
+static PyMethodDef __pyx_mdef_4h5py_3h5o_1get_info = {__Pyx_NAMESTR("get_info"), (PyCFunction)__pyx_pw_4h5py_3h5o_1get_info, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5o_get_info)};
+static PyObject *__pyx_pw_4h5py_3h5o_1get_info(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_loc = 0;
+  char *__pyx_v_name;
+  int __pyx_v_index;
+  char *__pyx_v_obj_name;
+  int __pyx_v_index_type;
+  int __pyx_v_order;
+  struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_lapl = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_info (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__loc,&__pyx_n_s__name,&__pyx_n_s__index,&__pyx_n_s__obj_name,&__pyx_n_s__index_type,&__pyx_n_s__order,&__pyx_n_s__lapl,0};
+    PyObject* values[7] = {0,0,0,0,0,0,0};
+
+    /* "h5py/h5o.pyx":133
+ * def get_info(ObjectID loc not None, char* name=NULL, int index=-1, *,
+ *         char* obj_name='.', int index_type=H5_INDEX_NAME, int order=H5_ITER_NATIVE,
+ *         PropID lapl=None):             # <<<<<<<<<<<<<<
+ *     """(ObjectID loc, STRING name=, INT index=, **kwds) => ObjInfo
+ * 
+ */
+    values[6] = (PyObject *)((struct __pyx_obj_4h5py_3h5p_PropID *)Py_None);
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__loc)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__name);
+          if (value) { values[1] = value; kw_args--; }
+        }
+        case  2:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__index);
+          if (value) { values[2] = value; kw_args--; }
+        }
+      }
+      if (kw_args > 0 && likely(kw_args <= 4)) {
+        Py_ssize_t index;
+        for (index = 3; index < 7 && kw_args > 0; index++) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, *__pyx_pyargnames[index]);
+          if (value) { values[index] = value; kw_args--; }
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_info") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else {
+      switch (PyTuple_GET_SIZE(__pyx_args)) {
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+    }
+    __pyx_v_loc = ((struct __pyx_obj_4h5py_8_objects_ObjectID *)values[0]);
+    if (values[1]) {
+      __pyx_v_name = PyBytes_AsString(values[1]); if (unlikely((!__pyx_v_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    } else {
+
+      /* "h5py/h5o.pyx":131
+ * 
+ * 
+ * def get_info(ObjectID loc not None, char* name=NULL, int index=-1, *,             # <<<<<<<<<<<<<<
+ *         char* obj_name='.', int index_type=H5_INDEX_NAME, int order=H5_ITER_NATIVE,
+ *         PropID lapl=None):
+ */
+      __pyx_v_name = ((char *)NULL);
+    }
+    if (values[2]) {
+      __pyx_v_index = __Pyx_PyInt_AsInt(values[2]); if (unlikely((__pyx_v_index == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    } else {
+      __pyx_v_index = ((int)-1);
+    }
+    if (values[3]) {
+      __pyx_v_obj_name = PyBytes_AsString(values[3]); if (unlikely((!__pyx_v_obj_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    } else {
+      __pyx_v_obj_name = ((char *)__pyx_k_1);
+    }
+    if (values[4]) {
+      __pyx_v_index_type = __Pyx_PyInt_AsInt(values[4]); if (unlikely((__pyx_v_index_type == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    } else {
+      __pyx_v_index_type = __pyx_k_2;
+    }
+    if (values[5]) {
+      __pyx_v_order = __Pyx_PyInt_AsInt(values[5]); if (unlikely((__pyx_v_order == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    } else {
+      __pyx_v_order = __pyx_k_3;
+    }
+    __pyx_v_lapl = ((struct __pyx_obj_4h5py_3h5p_PropID *)values[6]);
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("get_info", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5o.get_info", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_loc), __pyx_ptype_4h5py_8_objects_ObjectID, 0, "loc", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_lapl), __pyx_ptype_4h5py_3h5p_PropID, 1, "lapl", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_pf_4h5py_3h5o_get_info(__pyx_self, __pyx_v_loc, __pyx_v_name, __pyx_v_index, __pyx_v_obj_name, __pyx_v_index_type, __pyx_v_order, __pyx_v_lapl);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_4h5py_3h5o_get_info(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_loc, char *__pyx_v_name, int __pyx_v_index, char *__pyx_v_obj_name, int __pyx_v_index_type, int __pyx_v_order, struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_lapl) {
+  struct __pyx_obj_4h5py_3h5o_ObjInfo *__pyx_v_info = 0;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_t_2;
+  int __pyx_t_3;
+  int __pyx_t_4;
+  herr_t __pyx_t_5;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_info", 0);
+
+  /* "h5py/h5o.pyx":151
+ *     """
+ *     cdef ObjInfo info
+ *     info = ObjInfo()             # <<<<<<<<<<<<<<
+ * 
+ *     if name != NULL and index >= 0:
+ */
+  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4h5py_3h5o_ObjInfo)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_info = ((struct __pyx_obj_4h5py_3h5o_ObjInfo *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "h5py/h5o.pyx":153
+ *     info = ObjInfo()
+ * 
+ *     if name != NULL and index >= 0:             # <<<<<<<<<<<<<<
+ *         raise TypeError("At most one of name or index may be specified")
+ *     elif name != NULL and index < 0:
+ */
+  __pyx_t_2 = (__pyx_v_name != NULL);
+  if (__pyx_t_2) {
+    __pyx_t_3 = (__pyx_v_index >= 0);
+    __pyx_t_4 = __pyx_t_3;
+  } else {
+    __pyx_t_4 = __pyx_t_2;
+  }
+  if (__pyx_t_4) {
+
+    /* "h5py/h5o.pyx":154
+ * 
+ *     if name != NULL and index >= 0:
+ *         raise TypeError("At most one of name or index may be specified")             # <<<<<<<<<<<<<<
+ *     elif name != NULL and index < 0:
+ *         H5Oget_info_by_name(loc.id, name, &info.infostruct, pdefault(lapl))
+ */
+    __pyx_t_1 = PyObject_Call(__pyx_builtin_TypeError, ((PyObject *)__pyx_k_tuple_5), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 154; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 154; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    goto __pyx_L3;
+  }
+
+  /* "h5py/h5o.pyx":155
+ *     if name != NULL and index >= 0:
+ *         raise TypeError("At most one of name or index may be specified")
+ *     elif name != NULL and index < 0:             # <<<<<<<<<<<<<<
+ *         H5Oget_info_by_name(loc.id, name, &info.infostruct, pdefault(lapl))
+ *     elif name == NULL and index >= 0:
+ */
+  __pyx_t_4 = (__pyx_v_name != NULL);
+  if (__pyx_t_4) {
+    __pyx_t_2 = (__pyx_v_index < 0);
+    __pyx_t_3 = __pyx_t_2;
+  } else {
+    __pyx_t_3 = __pyx_t_4;
+  }
+  if (__pyx_t_3) {
+
+    /* "h5py/h5o.pyx":156
+ *         raise TypeError("At most one of name or index may be specified")
+ *     elif name != NULL and index < 0:
+ *         H5Oget_info_by_name(loc.id, name, &info.infostruct, pdefault(lapl))             # <<<<<<<<<<<<<<
+ *     elif name == NULL and index >= 0:
+ *         H5Oget_info_by_idx(loc.id, obj_name, <H5_index_t>index_type,
+ */
+    __pyx_t_5 = __pyx_f_4h5py_4defs_H5Oget_info_by_name(__pyx_v_loc->id, __pyx_v_name, (&__pyx_v_info->infostruct), __pyx_f_4h5py_8_objects_pdefault(((struct __pyx_obj_4h5py_8_objects_ObjectID *)__pyx_v_lapl))); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    goto __pyx_L3;
+  }
+
+  /* "h5py/h5o.pyx":157
+ *     elif name != NULL and index < 0:
+ *         H5Oget_info_by_name(loc.id, name, &info.infostruct, pdefault(lapl))
+ *     elif name == NULL and index >= 0:             # <<<<<<<<<<<<<<
+ *         H5Oget_info_by_idx(loc.id, obj_name, <H5_index_t>index_type,
+ *             <H5_iter_order_t>order, index, &info.infostruct, pdefault(lapl))
+ */
+  __pyx_t_3 = (__pyx_v_name == NULL);
+  if (__pyx_t_3) {
+    __pyx_t_4 = (__pyx_v_index >= 0);
+    __pyx_t_2 = __pyx_t_4;
+  } else {
+    __pyx_t_2 = __pyx_t_3;
+  }
+  if (__pyx_t_2) {
+
+    /* "h5py/h5o.pyx":159
+ *     elif name == NULL and index >= 0:
+ *         H5Oget_info_by_idx(loc.id, obj_name, <H5_index_t>index_type,
+ *             <H5_iter_order_t>order, index, &info.infostruct, pdefault(lapl))             # <<<<<<<<<<<<<<
+ *     else:
+ *         H5Oget_info(loc.id, &info.infostruct)
+ */
+    __pyx_t_5 = __pyx_f_4h5py_4defs_H5Oget_info_by_idx(__pyx_v_loc->id, __pyx_v_obj_name, ((H5_index_t)__pyx_v_index_type), ((H5_iter_order_t)__pyx_v_order), __pyx_v_index, (&__pyx_v_info->infostruct), __pyx_f_4h5py_8_objects_pdefault(((struct __pyx_obj_4h5py_8_objects_ObjectID *)__pyx_v_lapl))); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    goto __pyx_L3;
+  }
+  /*else*/ {
+
+    /* "h5py/h5o.pyx":161
+ *             <H5_iter_order_t>order, index, &info.infostruct, pdefault(lapl))
+ *     else:
+ *         H5Oget_info(loc.id, &info.infostruct)             # <<<<<<<<<<<<<<
+ * 
+ *     return info
+ */
+    __pyx_t_5 = __pyx_f_4h5py_4defs_H5Oget_info(__pyx_v_loc->id, (&__pyx_v_info->infostruct)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  }
+  __pyx_L3:;
+
+  /* "h5py/h5o.pyx":163
+ *         H5Oget_info(loc.id, &info.infostruct)
+ * 
+ *     return info             # <<<<<<<<<<<<<<
+ * 
+ * # === General object operations ===============================================
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(((PyObject *)__pyx_v_info));
+  __pyx_r = ((PyObject *)__pyx_v_info);
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py.h5o.get_info", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_info);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5o_3open(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_4h5py_3h5o_2open[] = "(ObjectID loc, STRING name, PropID lapl=None) => ObjectID\n\n    Open a group, dataset, or named datatype attached to an existing group.\n    ";
+static PyMethodDef __pyx_mdef_4h5py_3h5o_3open = {__Pyx_NAMESTR("open"), (PyCFunction)__pyx_pw_4h5py_3h5o_3open, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5o_2open)};
+static PyObject *__pyx_pw_4h5py_3h5o_3open(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_loc = 0;
+  char *__pyx_v_name;
+  struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_lapl = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("open (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__loc,&__pyx_n_s__name,&__pyx_n_s__lapl,0};
+    PyObject* values[3] = {0,0,0};
+
+    /* "h5py/h5o.pyx":168
+ * 
+ * 
+ * def open(ObjectID loc not None, char* name, PropID lapl=None):             # <<<<<<<<<<<<<<
+ *     """(ObjectID loc, STRING name, PropID lapl=None) => ObjectID
+ * 
+ */
+    values[2] = (PyObject *)((struct __pyx_obj_4h5py_3h5p_PropID *)Py_None);
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__loc)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__name)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("open", 0, 2, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 168; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+        case  2:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__lapl);
+          if (value) { values[2] = value; kw_args--; }
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "open") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 168; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else {
+      switch (PyTuple_GET_SIZE(__pyx_args)) {
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+    }
+    __pyx_v_loc = ((struct __pyx_obj_4h5py_8_objects_ObjectID *)values[0]);
+    __pyx_v_name = PyBytes_AsString(values[1]); if (unlikely((!__pyx_v_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 168; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_lapl = ((struct __pyx_obj_4h5py_3h5p_PropID *)values[2]);
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("open", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 168; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5o.open", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_loc), __pyx_ptype_4h5py_8_objects_ObjectID, 0, "loc", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 168; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_lapl), __pyx_ptype_4h5py_3h5p_PropID, 1, "lapl", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 168; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_pf_4h5py_3h5o_2open(__pyx_self, __pyx_v_loc, __pyx_v_name, __pyx_v_lapl);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_4h5py_3h5o_2open(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_loc, char *__pyx_v_name, struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_lapl) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  hid_t __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("open", 0);
+
+  /* "h5py/h5o.pyx":173
+ *     Open a group, dataset, or named datatype attached to an existing group.
+ *     """
+ *     return wrap_identifier(H5Oopen(loc.id, name, pdefault(lapl)))             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Oopen(__pyx_v_loc->id, __pyx_v_name, __pyx_f_4h5py_8_objects_pdefault(((struct __pyx_obj_4h5py_8_objects_ObjectID *)__pyx_v_lapl))); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = ((PyObject *)__pyx_f_4h5py_3h5i_wrap_identifier(__pyx_t_1, 0)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5o.open", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5o_5link(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_4h5py_3h5o_4link[] = "(ObjectID obj, GroupID loc, STRING name, PropID lcpl=None,\n    PropID lapl=None)\n\n    Create a new hard link to an object.  Useful for objects created with\n    h5g.create_anon() or h5d.create_anon().\n    ";
+static PyMethodDef __pyx_mdef_4h5py_3h5o_5link = {__Pyx_NAMESTR("link"), (PyCFunction)__pyx_pw_4h5py_3h5o_5link, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5o_4link)};
+static PyObject *__pyx_pw_4h5py_3h5o_5link(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_obj = 0;
+  struct __pyx_obj_4h5py_3h5g_GroupID *__pyx_v_loc = 0;
+  char *__pyx_v_name;
+  struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_lcpl = 0;
+  struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_lapl = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("link (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__obj,&__pyx_n_s__loc,&__pyx_n_s__name,&__pyx_n_s__lcpl,&__pyx_n_s__lapl,0};
+    PyObject* values[5] = {0,0,0,0,0};
+
+    /* "h5py/h5o.pyx":177
+ * 
+ * def link(ObjectID obj not None, GroupID loc not None, char* name,
+ *     PropID lcpl=None, PropID lapl=None):             # <<<<<<<<<<<<<<
+ *     """(ObjectID obj, GroupID loc, STRING name, PropID lcpl=None,
+ *     PropID lapl=None)
+ */
+    values[3] = (PyObject *)((struct __pyx_obj_4h5py_3h5p_PropID *)Py_None);
+    values[4] = (PyObject *)((struct __pyx_obj_4h5py_3h5p_PropID *)Py_None);
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__obj)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__loc)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("link", 0, 3, 5, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 176; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+        case  2:
+        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__name)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("link", 0, 3, 5, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 176; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+        case  3:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__lcpl);
+          if (value) { values[3] = value; kw_args--; }
+        }
+        case  4:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__lapl);
+          if (value) { values[4] = value; kw_args--; }
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "link") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 176; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else {
+      switch (PyTuple_GET_SIZE(__pyx_args)) {
+        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+    }
+    __pyx_v_obj = ((struct __pyx_obj_4h5py_8_objects_ObjectID *)values[0]);
+    __pyx_v_loc = ((struct __pyx_obj_4h5py_3h5g_GroupID *)values[1]);
+    __pyx_v_name = PyBytes_AsString(values[2]); if (unlikely((!__pyx_v_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 176; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_lcpl = ((struct __pyx_obj_4h5py_3h5p_PropID *)values[3]);
+    __pyx_v_lapl = ((struct __pyx_obj_4h5py_3h5p_PropID *)values[4]);
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("link", 0, 3, 5, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 176; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5o.link", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_obj), __pyx_ptype_4h5py_8_objects_ObjectID, 0, "obj", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 176; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_loc), __pyx_ptype_4h5py_3h5g_GroupID, 0, "loc", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 176; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_lcpl), __pyx_ptype_4h5py_3h5p_PropID, 1, "lcpl", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 177; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_lapl), __pyx_ptype_4h5py_3h5p_PropID, 1, "lapl", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 177; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_pf_4h5py_3h5o_4link(__pyx_self, __pyx_v_obj, __pyx_v_loc, __pyx_v_name, __pyx_v_lcpl, __pyx_v_lapl);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5o.pyx":176
+ * 
+ * 
+ * def link(ObjectID obj not None, GroupID loc not None, char* name,             # <<<<<<<<<<<<<<
+ *     PropID lcpl=None, PropID lapl=None):
+ *     """(ObjectID obj, GroupID loc, STRING name, PropID lcpl=None,
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5o_4link(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_obj, struct __pyx_obj_4h5py_3h5g_GroupID *__pyx_v_loc, char *__pyx_v_name, struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_lcpl, struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_lapl) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("link", 0);
+
+  /* "h5py/h5o.pyx":184
+ *     h5g.create_anon() or h5d.create_anon().
+ *     """
+ *     H5Olink(obj.id, loc.id, name, pdefault(lcpl), pdefault(lapl))             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Olink(__pyx_v_obj->id, __pyx_v_loc->__pyx_base.id, __pyx_v_name, __pyx_f_4h5py_8_objects_pdefault(((struct __pyx_obj_4h5py_8_objects_ObjectID *)__pyx_v_lcpl)), __pyx_f_4h5py_8_objects_pdefault(((struct __pyx_obj_4h5py_8_objects_ObjectID *)__pyx_v_lapl))); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py.h5o.link", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5o_7copy(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_4h5py_3h5o_6copy[] = "(ObjectID src_loc, STRING src_name, GroupID dst_loc, STRING dst_name,\n    PropID copypl=None, PropID lcpl=None)\n\n    Copy a group, dataset or named datatype from one location to another.  The\n    source and destination need not be in the same file.\n\n    The default behavior is a recursive copy of the object and all objects\n    below it.  This behavior is modified via the \"copypl\" property list.\n    ";
+static PyMethodDef __pyx_mdef_4h5py_3h5o_7copy = {__Pyx_NAMESTR("copy"), (PyCFunction)__pyx_pw_4h5py_3h5o_7copy, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5o_6copy)};
+static PyObject *__pyx_pw_4h5py_3h5o_7copy(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_src_loc = 0;
+  char *__pyx_v_src_name;
+  struct __pyx_obj_4h5py_3h5g_GroupID *__pyx_v_dst_loc = 0;
+  char *__pyx_v_dst_name;
+  struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_copypl = 0;
+  struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_lcpl = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("copy (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__src_loc,&__pyx_n_s__src_name,&__pyx_n_s__dst_loc,&__pyx_n_s__dst_name,&__pyx_n_s__copypl,&__pyx_n_s__lcpl,0};
+    PyObject* values[6] = {0,0,0,0,0,0};
+
+    /* "h5py/h5o.pyx":188
+ * 
+ * def copy(ObjectID src_loc not None, char* src_name, GroupID dst_loc not None,
+ *     char* dst_name, PropID copypl=None, PropID lcpl=None):             # <<<<<<<<<<<<<<
+ *     """(ObjectID src_loc, STRING src_name, GroupID dst_loc, STRING dst_name,
+ *     PropID copypl=None, PropID lcpl=None)
+ */
+    values[4] = (PyObject *)((struct __pyx_obj_4h5py_3h5p_PropID *)Py_None);
+    values[5] = (PyObject *)((struct __pyx_obj_4h5py_3h5p_PropID *)Py_None);
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__src_loc)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__src_name)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("copy", 0, 4, 6, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 187; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+        case  2:
+        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__dst_loc)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("copy", 0, 4, 6, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 187; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+        case  3:
+        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__dst_name)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("copy", 0, 4, 6, 3); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 187; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+        case  4:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__copypl);
+          if (value) { values[4] = value; kw_args--; }
+        }
+        case  5:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__lcpl);
+          if (value) { values[5] = value; kw_args--; }
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "copy") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 187; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else {
+      switch (PyTuple_GET_SIZE(__pyx_args)) {
+        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+    }
+    __pyx_v_src_loc = ((struct __pyx_obj_4h5py_8_objects_ObjectID *)values[0]);
+    __pyx_v_src_name = PyBytes_AsString(values[1]); if (unlikely((!__pyx_v_src_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 187; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_dst_loc = ((struct __pyx_obj_4h5py_3h5g_GroupID *)values[2]);
+    __pyx_v_dst_name = PyBytes_AsString(values[3]); if (unlikely((!__pyx_v_dst_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 188; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_copypl = ((struct __pyx_obj_4h5py_3h5p_PropID *)values[4]);
+    __pyx_v_lcpl = ((struct __pyx_obj_4h5py_3h5p_PropID *)values[5]);
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("copy", 0, 4, 6, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 187; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5o.copy", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_src_loc), __pyx_ptype_4h5py_8_objects_ObjectID, 0, "src_loc", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_dst_loc), __pyx_ptype_4h5py_3h5g_GroupID, 0, "dst_loc", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_copypl), __pyx_ptype_4h5py_3h5p_PropID, 1, "copypl", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_lcpl), __pyx_ptype_4h5py_3h5p_PropID, 1, "lcpl", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_pf_4h5py_3h5o_6copy(__pyx_self, __pyx_v_src_loc, __pyx_v_src_name, __pyx_v_dst_loc, __pyx_v_dst_name, __pyx_v_copypl, __pyx_v_lcpl);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5o.pyx":187
+ * 
+ * 
+ * def copy(ObjectID src_loc not None, char* src_name, GroupID dst_loc not None,             # <<<<<<<<<<<<<<
+ *     char* dst_name, PropID copypl=None, PropID lcpl=None):
+ *     """(ObjectID src_loc, STRING src_name, GroupID dst_loc, STRING dst_name,
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5o_6copy(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_src_loc, char *__pyx_v_src_name, struct __pyx_obj_4h5py_3h5g_GroupID *__pyx_v_dst_loc, char *__pyx_v_dst_name, struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_copypl, struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_lcpl) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("copy", 0);
+
+  /* "h5py/h5o.pyx":199
+ *     """
+ *     H5Ocopy(src_loc.id, src_name, dst_loc.id, dst_name, pdefault(copypl),
+ *         pdefault(lcpl))             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Ocopy(__pyx_v_src_loc->id, __pyx_v_src_name, __pyx_v_dst_loc->__pyx_base.id, __pyx_v_dst_name, __pyx_f_4h5py_8_objects_pdefault(((struct __pyx_obj_4h5py_8_objects_ObjectID *)__pyx_v_copypl)), __pyx_f_4h5py_8_objects_pdefault(((struct __pyx_obj_4h5py_8_objects_ObjectID *)__pyx_v_lcpl))); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 198; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py.h5o.copy", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5o_9set_comment(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_4h5py_3h5o_8set_comment[] = "(ObjectID loc, STRING comment, **kwds)\n\n    Set the comment for any-file resident object.  Keywords:\n\n    STRING obj_name (\".\")\n        Set comment on this group member instead\n\n    PropID lapl (None)\n        Link access property list\n    ";
+static PyMethodDef __pyx_mdef_4h5py_3h5o_9set_comment = {__Pyx_NAMESTR("set_comment"), (PyCFunction)__pyx_pw_4h5py_3h5o_9set_comment, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5o_8set_comment)};
+static PyObject *__pyx_pw_4h5py_3h5o_9set_comment(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_loc = 0;
+  char *__pyx_v_comment;
+  char *__pyx_v_obj_name;
+  struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_lapl = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("set_comment (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__loc,&__pyx_n_s__comment,&__pyx_n_s__obj_name,&__pyx_n_s__lapl,0};
+    PyObject* values[4] = {0,0,0,0};
+
+    /* "h5py/h5o.pyx":203
+ * 
+ * def set_comment(ObjectID loc not None, char* comment, *, char* obj_name=".",
+ *     PropID lapl=None):             # <<<<<<<<<<<<<<
+ *     """(ObjectID loc, STRING comment, **kwds)
+ * 
+ */
+    values[3] = (PyObject *)((struct __pyx_obj_4h5py_3h5p_PropID *)Py_None);
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__loc)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__comment)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("set_comment", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+      }
+      if (kw_args > 0 && likely(kw_args <= 2)) {
+        Py_ssize_t index;
+        for (index = 2; index < 4 && kw_args > 0; index++) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, *__pyx_pyargnames[index]);
+          if (value) { values[index] = value; kw_args--; }
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_comment") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+    }
+    __pyx_v_loc = ((struct __pyx_obj_4h5py_8_objects_ObjectID *)values[0]);
+    __pyx_v_comment = PyBytes_AsString(values[1]); if (unlikely((!__pyx_v_comment) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    if (values[2]) {
+      __pyx_v_obj_name = PyBytes_AsString(values[2]); if (unlikely((!__pyx_v_obj_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    } else {
+      __pyx_v_obj_name = ((char *)__pyx_k_1);
+    }
+    __pyx_v_lapl = ((struct __pyx_obj_4h5py_3h5p_PropID *)values[3]);
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("set_comment", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5o.set_comment", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_loc), __pyx_ptype_4h5py_8_objects_ObjectID, 0, "loc", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_lapl), __pyx_ptype_4h5py_3h5p_PropID, 1, "lapl", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 203; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_pf_4h5py_3h5o_8set_comment(__pyx_self, __pyx_v_loc, __pyx_v_comment, __pyx_v_obj_name, __pyx_v_lapl);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5o.pyx":202
+ * 
+ * 
+ * def set_comment(ObjectID loc not None, char* comment, *, char* obj_name=".",             # <<<<<<<<<<<<<<
+ *     PropID lapl=None):
+ *     """(ObjectID loc, STRING comment, **kwds)
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5o_8set_comment(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_loc, char *__pyx_v_comment, char *__pyx_v_obj_name, struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_lapl) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("set_comment", 0);
+
+  /* "h5py/h5o.pyx":214
+ *         Link access property list
+ *     """
+ *     H5Oset_comment_by_name(loc.id, obj_name, comment, pdefault(lapl))             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Oset_comment_by_name(__pyx_v_loc->id, __pyx_v_obj_name, __pyx_v_comment, __pyx_f_4h5py_8_objects_pdefault(((struct __pyx_obj_4h5py_8_objects_ObjectID *)__pyx_v_lapl))); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 214; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py.h5o.set_comment", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5o_11get_comment(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_4h5py_3h5o_10get_comment[] = "(ObjectID loc, STRING comment, **kwds)\n\n    Get the comment for any-file resident object.  Keywords:\n\n    STRING obj_name (\".\")\n        Set comment on this group member instead\n\n    PropID lapl (None)\n        Link access property list\n    ";
+static PyMethodDef __pyx_mdef_4h5py_3h5o_11get_comment = {__Pyx_NAMESTR("get_comment"), (PyCFunction)__pyx_pw_4h5py_3h5o_11get_comment, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5o_10get_comment)};
+static PyObject *__pyx_pw_4h5py_3h5o_11get_comment(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_loc = 0;
+  CYTHON_UNUSED char *__pyx_v_comment;
+  char *__pyx_v_obj_name;
+  struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_lapl = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_comment (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__loc,&__pyx_n_s__comment,&__pyx_n_s__obj_name,&__pyx_n_s__lapl,0};
+    PyObject* values[4] = {0,0,0,0};
+
+    /* "h5py/h5o.pyx":219
+ * 
+ * def get_comment(ObjectID loc not None, char* comment, *, char* obj_name=".",
+ *     PropID lapl=None):             # <<<<<<<<<<<<<<
+ *     """(ObjectID loc, STRING comment, **kwds)
+ * 
+ */
+    values[3] = (PyObject *)((struct __pyx_obj_4h5py_3h5p_PropID *)Py_None);
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__loc)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__comment)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("get_comment", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 218; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+      }
+      if (kw_args > 0 && likely(kw_args <= 2)) {
+        Py_ssize_t index;
+        for (index = 2; index < 4 && kw_args > 0; index++) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, *__pyx_pyargnames[index]);
+          if (value) { values[index] = value; kw_args--; }
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_comment") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 218; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+    }
+    __pyx_v_loc = ((struct __pyx_obj_4h5py_8_objects_ObjectID *)values[0]);
+    __pyx_v_comment = PyBytes_AsString(values[1]); if (unlikely((!__pyx_v_comment) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 218; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    if (values[2]) {
+      __pyx_v_obj_name = PyBytes_AsString(values[2]); if (unlikely((!__pyx_v_obj_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 218; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    } else {
+      __pyx_v_obj_name = ((char *)__pyx_k_1);
+    }
+    __pyx_v_lapl = ((struct __pyx_obj_4h5py_3h5p_PropID *)values[3]);
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("get_comment", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 218; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5o.get_comment", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_loc), __pyx_ptype_4h5py_8_objects_ObjectID, 0, "loc", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 218; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_lapl), __pyx_ptype_4h5py_3h5p_PropID, 1, "lapl", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_pf_4h5py_3h5o_10get_comment(__pyx_self, __pyx_v_loc, __pyx_v_comment, __pyx_v_obj_name, __pyx_v_lapl);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5o.pyx":218
+ * 
+ * 
+ * def get_comment(ObjectID loc not None, char* comment, *, char* obj_name=".",             # <<<<<<<<<<<<<<
+ *     PropID lapl=None):
+ *     """(ObjectID loc, STRING comment, **kwds)
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5o_10get_comment(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_loc, CYTHON_UNUSED char *__pyx_v_comment, char *__pyx_v_obj_name, struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_lapl) {
+  Py_ssize_t __pyx_v_size;
+  char *__pyx_v_buf;
+  char *__pyx_v_pstring;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  Py_ssize_t __pyx_t_1;
+  void *__pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_comment", 0);
+
+  /* "h5py/h5o.pyx":233
+ *     cdef char* buf
+ * 
+ *     size = H5Oget_comment_by_name(loc.id, obj_name, NULL, 0, pdefault(lapl))             # <<<<<<<<<<<<<<
+ *     buf = <char*>emalloc(size+1)
+ *     try:
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Oget_comment_by_name(__pyx_v_loc->id, __pyx_v_obj_name, NULL, 0, __pyx_f_4h5py_8_objects_pdefault(((struct __pyx_obj_4h5py_8_objects_ObjectID *)__pyx_v_lapl))); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v_size = __pyx_t_1;
+
+  /* "h5py/h5o.pyx":234
+ * 
+ *     size = H5Oget_comment_by_name(loc.id, obj_name, NULL, 0, pdefault(lapl))
+ *     buf = <char*>emalloc(size+1)             # <<<<<<<<<<<<<<
+ *     try:
+ *         H5Oget_comment_by_name(loc.id, obj_name, buf, size+1, pdefault(lapl))
+ */
+  __pyx_t_2 = __pyx_f_4h5py_5utils_emalloc((__pyx_v_size + 1)); if (unlikely(__pyx_t_2 == NULL && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 234; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v_buf = ((char *)__pyx_t_2);
+
+  /* "h5py/h5o.pyx":235
+ *     size = H5Oget_comment_by_name(loc.id, obj_name, NULL, 0, pdefault(lapl))
+ *     buf = <char*>emalloc(size+1)
+ *     try:             # <<<<<<<<<<<<<<
+ *         H5Oget_comment_by_name(loc.id, obj_name, buf, size+1, pdefault(lapl))
+ *         pstring = buf
+ */
+  /*try:*/ {
+
+    /* "h5py/h5o.pyx":236
+ *     buf = <char*>emalloc(size+1)
+ *     try:
+ *         H5Oget_comment_by_name(loc.id, obj_name, buf, size+1, pdefault(lapl))             # <<<<<<<<<<<<<<
+ *         pstring = buf
+ *     finally:
+ */
+    __pyx_t_1 = __pyx_f_4h5py_4defs_H5Oget_comment_by_name(__pyx_v_loc->id, __pyx_v_obj_name, __pyx_v_buf, (__pyx_v_size + 1), __pyx_f_4h5py_8_objects_pdefault(((struct __pyx_obj_4h5py_8_objects_ObjectID *)__pyx_v_lapl))); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 236; __pyx_clineno = __LINE__; goto __pyx_L4;}
+
+    /* "h5py/h5o.pyx":237
+ *     try:
+ *         H5Oget_comment_by_name(loc.id, obj_name, buf, size+1, pdefault(lapl))
+ *         pstring = buf             # <<<<<<<<<<<<<<
+ *     finally:
+ *         efree(buf)
+ */
+    __pyx_v_pstring = __pyx_v_buf;
+  }
+
+  /* "h5py/h5o.pyx":239
+ *         pstring = buf
+ *     finally:
+ *         efree(buf)             # <<<<<<<<<<<<<<
+ * 
+ *     return pstring
+ */
+  /*finally:*/ {
+    int __pyx_why;
+    PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb;
+    int __pyx_exc_lineno;
+    __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
+    __pyx_why = 0; goto __pyx_L5;
+    __pyx_L4: {
+      __pyx_why = 4;
+      __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb);
+      __pyx_exc_lineno = __pyx_lineno;
+      goto __pyx_L5;
+    }
+    __pyx_L5:;
+    __pyx_f_4h5py_5utils_efree(__pyx_v_buf);
+    switch (__pyx_why) {
+      case 4: {
+        __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb);
+        __pyx_lineno = __pyx_exc_lineno;
+        __pyx_exc_type = 0;
+        __pyx_exc_value = 0;
+        __pyx_exc_tb = 0;
+        goto __pyx_L1_error;
+      }
+    }
+  }
+
+  /* "h5py/h5o.pyx":241
+ *         efree(buf)
+ * 
+ *     return pstring             # <<<<<<<<<<<<<<
+ * 
+ * # === Visit routines ==========================================================
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_3 = PyBytes_FromString(__pyx_v_pstring); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 241; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(((PyObject *)__pyx_t_3));
+  __pyx_r = ((PyObject *)__pyx_t_3);
+  __pyx_t_3 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("h5py.h5o.get_comment", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static int __pyx_pw_4h5py_3h5o_14_ObjectVisitor_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_4h5py_3h5o_14_ObjectVisitor_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_func = 0;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__func,0};
+    PyObject* values[1] = {0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__func)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+    }
+    __pyx_v_func = values[0];
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5o._ObjectVisitor.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return -1;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_3h5o_14_ObjectVisitor___init__(((struct __pyx_obj_4h5py_3h5o__ObjectVisitor *)__pyx_v_self), __pyx_v_func);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5o.pyx":251
+ *     cdef ObjInfo objinfo
+ * 
+ *     def __init__(self, func):             # <<<<<<<<<<<<<<
+ *         self.func = func
+ *         self.retval = None
+ */
+
+static int __pyx_pf_4h5py_3h5o_14_ObjectVisitor___init__(struct __pyx_obj_4h5py_3h5o__ObjectVisitor *__pyx_v_self, PyObject *__pyx_v_func) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__init__", 0);
+
+  /* "h5py/h5o.pyx":252
+ * 
+ *     def __init__(self, func):
+ *         self.func = func             # <<<<<<<<<<<<<<
+ *         self.retval = None
+ *         self.objinfo = ObjInfo()
+ */
+  __Pyx_INCREF(__pyx_v_func);
+  __Pyx_GIVEREF(__pyx_v_func);
+  __Pyx_GOTREF(__pyx_v_self->func);
+  __Pyx_DECREF(__pyx_v_self->func);
+  __pyx_v_self->func = __pyx_v_func;
+
+  /* "h5py/h5o.pyx":253
+ *     def __init__(self, func):
+ *         self.func = func
+ *         self.retval = None             # <<<<<<<<<<<<<<
+ *         self.objinfo = ObjInfo()
+ * 
+ */
+  __Pyx_INCREF(Py_None);
+  __Pyx_GIVEREF(Py_None);
+  __Pyx_GOTREF(__pyx_v_self->retval);
+  __Pyx_DECREF(__pyx_v_self->retval);
+  __pyx_v_self->retval = Py_None;
+
+  /* "h5py/h5o.pyx":254
+ *         self.func = func
+ *         self.retval = None
+ *         self.objinfo = ObjInfo()             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t cb_obj_iterate(hid_t obj, char* name, H5O_info_t *info, void* data) except 2:
+ */
+  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4h5py_3h5o_ObjInfo)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 254; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __Pyx_GOTREF(__pyx_v_self->objinfo);
+  __Pyx_DECREF(((PyObject *)__pyx_v_self->objinfo));
+  __pyx_v_self->objinfo = ((struct __pyx_obj_4h5py_3h5o_ObjInfo *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py.h5o._ObjectVisitor.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5o.pyx":256
+ *         self.objinfo = ObjInfo()
+ * 
+ * cdef herr_t cb_obj_iterate(hid_t obj, char* name, H5O_info_t *info, void* data) except 2:             # <<<<<<<<<<<<<<
+ * 
+ *     cdef _ObjectVisitor visit
+ */
+
+static herr_t __pyx_f_4h5py_3h5o_cb_obj_iterate(CYTHON_UNUSED hid_t __pyx_v_obj, char *__pyx_v_name, H5O_info_t *__pyx_v_info, void *__pyx_v_data) {
+  struct __pyx_obj_4h5py_3h5o__ObjectVisitor *__pyx_v_visit = 0;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("cb_obj_iterate", 0);
+
+  /* "h5py/h5o.pyx":261
+ * 
+ *     # HDF5 doesn't respect callback return for ".", so skip it
+ *     if strcmp(name, ".") == 0:             # <<<<<<<<<<<<<<
+ *         return 0
+ * 
+ */
+  __pyx_t_1 = (strcmp(__pyx_v_name, __pyx_k_1) == 0);
+  if (__pyx_t_1) {
+
+    /* "h5py/h5o.pyx":262
+ *     # HDF5 doesn't respect callback return for ".", so skip it
+ *     if strcmp(name, ".") == 0:
+ *         return 0             # <<<<<<<<<<<<<<
+ * 
+ *     visit = <_ObjectVisitor>data
+ */
+    __pyx_r = 0;
+    goto __pyx_L0;
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  /* "h5py/h5o.pyx":264
+ *         return 0
+ * 
+ *     visit = <_ObjectVisitor>data             # <<<<<<<<<<<<<<
+ *     visit.objinfo.infostruct = info[0]
+ *     visit.retval = visit.func(name, visit.objinfo)
+ */
+  __Pyx_INCREF(((PyObject *)((struct __pyx_obj_4h5py_3h5o__ObjectVisitor *)__pyx_v_data)));
+  __pyx_v_visit = ((struct __pyx_obj_4h5py_3h5o__ObjectVisitor *)__pyx_v_data);
+
+  /* "h5py/h5o.pyx":265
+ * 
+ *     visit = <_ObjectVisitor>data
+ *     visit.objinfo.infostruct = info[0]             # <<<<<<<<<<<<<<
+ *     visit.retval = visit.func(name, visit.objinfo)
+ * 
+ */
+  __pyx_v_visit->objinfo->infostruct = (__pyx_v_info[0]);
+
+  /* "h5py/h5o.pyx":266
+ *     visit = <_ObjectVisitor>data
+ *     visit.objinfo.infostruct = info[0]
+ *     visit.retval = visit.func(name, visit.objinfo)             # <<<<<<<<<<<<<<
+ * 
+ *     if visit.retval is not None:
+ */
+  __pyx_t_2 = PyBytes_FromString(__pyx_v_name); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 266; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
+  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 266; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_t_2));
+  __Pyx_GIVEREF(((PyObject *)__pyx_t_2));
+  __Pyx_INCREF(((PyObject *)__pyx_v_visit->objinfo));
+  PyTuple_SET_ITEM(__pyx_t_3, 1, ((PyObject *)__pyx_v_visit->objinfo));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_visit->objinfo));
+  __pyx_t_2 = 0;
+  __pyx_t_2 = PyObject_Call(__pyx_v_visit->func, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 266; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
+  __Pyx_GIVEREF(__pyx_t_2);
+  __Pyx_GOTREF(__pyx_v_visit->retval);
+  __Pyx_DECREF(__pyx_v_visit->retval);
+  __pyx_v_visit->retval = __pyx_t_2;
+  __pyx_t_2 = 0;
+
+  /* "h5py/h5o.pyx":268
+ *     visit.retval = visit.func(name, visit.objinfo)
+ * 
+ *     if visit.retval is not None:             # <<<<<<<<<<<<<<
+ *         return 1
+ *     return 0
+ */
+  __pyx_t_1 = (__pyx_v_visit->retval != Py_None);
+  if (__pyx_t_1) {
+
+    /* "h5py/h5o.pyx":269
+ * 
+ *     if visit.retval is not None:
+ *         return 1             # <<<<<<<<<<<<<<
+ *     return 0
+ * 
+ */
+    __pyx_r = 1;
+    goto __pyx_L0;
+    goto __pyx_L4;
+  }
+  __pyx_L4:;
+
+  /* "h5py/h5o.pyx":270
+ *     if visit.retval is not None:
+ *         return 1
+ *     return 0             # <<<<<<<<<<<<<<
+ * 
+ * cdef herr_t cb_obj_simple(hid_t obj, char* name, H5O_info_t *info, void* data) except 2:
+ */
+  __pyx_r = 0;
+  goto __pyx_L0;
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("h5py.h5o.cb_obj_iterate", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 2;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_visit);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5o.pyx":272
+ *     return 0
+ * 
+ * cdef herr_t cb_obj_simple(hid_t obj, char* name, H5O_info_t *info, void* data) except 2:             # <<<<<<<<<<<<<<
+ * 
+ *     cdef _ObjectVisitor visit
+ */
+
+static herr_t __pyx_f_4h5py_3h5o_cb_obj_simple(CYTHON_UNUSED hid_t __pyx_v_obj, char *__pyx_v_name, CYTHON_UNUSED H5O_info_t *__pyx_v_info, void *__pyx_v_data) {
+  struct __pyx_obj_4h5py_3h5o__ObjectVisitor *__pyx_v_visit = 0;
+  herr_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("cb_obj_simple", 0);
+
+  /* "h5py/h5o.pyx":277
+ * 
+ *     # Not all versions of HDF5 respect callback value for ".", so skip it
+ *     if strcmp(name, ".") == 0:             # <<<<<<<<<<<<<<
+ *         return 0
+ * 
+ */
+  __pyx_t_1 = (strcmp(__pyx_v_name, __pyx_k_1) == 0);
+  if (__pyx_t_1) {
+
+    /* "h5py/h5o.pyx":278
+ *     # Not all versions of HDF5 respect callback value for ".", so skip it
+ *     if strcmp(name, ".") == 0:
+ *         return 0             # <<<<<<<<<<<<<<
+ * 
+ *     visit = <_ObjectVisitor>data
+ */
+    __pyx_r = 0;
+    goto __pyx_L0;
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  /* "h5py/h5o.pyx":280
+ *         return 0
+ * 
+ *     visit = <_ObjectVisitor>data             # <<<<<<<<<<<<<<
+ *     visit.retval = visit.func(name)
+ * 
+ */
+  __Pyx_INCREF(((PyObject *)((struct __pyx_obj_4h5py_3h5o__ObjectVisitor *)__pyx_v_data)));
+  __pyx_v_visit = ((struct __pyx_obj_4h5py_3h5o__ObjectVisitor *)__pyx_v_data);
+
+  /* "h5py/h5o.pyx":281
+ * 
+ *     visit = <_ObjectVisitor>data
+ *     visit.retval = visit.func(name)             # <<<<<<<<<<<<<<
+ * 
+ *     if visit.retval is not None:
+ */
+  __pyx_t_2 = PyBytes_FromString(__pyx_v_name); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 281; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 281; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_t_2));
+  __Pyx_GIVEREF(((PyObject *)__pyx_t_2));
+  __pyx_t_2 = 0;
+  __pyx_t_2 = PyObject_Call(__pyx_v_visit->func, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 281; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
+  __Pyx_GIVEREF(__pyx_t_2);
+  __Pyx_GOTREF(__pyx_v_visit->retval);
+  __Pyx_DECREF(__pyx_v_visit->retval);
+  __pyx_v_visit->retval = __pyx_t_2;
+  __pyx_t_2 = 0;
+
+  /* "h5py/h5o.pyx":283
+ *     visit.retval = visit.func(name)
+ * 
+ *     if visit.retval is not None:             # <<<<<<<<<<<<<<
+ *         return 1
+ *     return 0
+ */
+  __pyx_t_1 = (__pyx_v_visit->retval != Py_None);
+  if (__pyx_t_1) {
+
+    /* "h5py/h5o.pyx":284
+ * 
+ *     if visit.retval is not None:
+ *         return 1             # <<<<<<<<<<<<<<
+ *     return 0
+ * 
+ */
+    __pyx_r = 1;
+    goto __pyx_L0;
+    goto __pyx_L4;
+  }
+  __pyx_L4:;
+
+  /* "h5py/h5o.pyx":285
+ *     if visit.retval is not None:
+ *         return 1
+ *     return 0             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_r = 0;
+  goto __pyx_L0;
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("h5py.h5o.cb_obj_simple", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 2;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_visit);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5o_13visit(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_4h5py_3h5o_12visit[] = "(ObjectID loc, CALLABLE func, **kwds) => <Return value from func>\n\n    Iterate a function or callable object over all objects below the\n    specified one.  Your callable should conform to the signature::\n\n        func(STRING name) => Result\n\n    or if the keyword argument \"info\" is True::\n\n        func(STRING name, ObjInfo info) => Result\n\n    Returning None continues iteration; returning anything else aborts\n    iteration and r [...]
+static PyMethodDef __pyx_mdef_4h5py_3h5o_13visit = {__Pyx_NAMESTR("visit"), (PyCFunction)__pyx_pw_4h5py_3h5o_13visit, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5o_12visit)};
+static PyObject *__pyx_pw_4h5py_3h5o_13visit(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_loc = 0;
+  PyObject *__pyx_v_func = 0;
+  int __pyx_v_idx_type;
+  int __pyx_v_order;
+  char *__pyx_v_obj_name;
+  struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_lapl = 0;
+  int __pyx_v_info;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("visit (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__loc,&__pyx_n_s__func,&__pyx_n_s__idx_type,&__pyx_n_s__order,&__pyx_n_s__obj_name,&__pyx_n_s__lapl,&__pyx_n_s__info,0};
+    PyObject* values[7] = {0,0,0,0,0,0,0};
+
+    /* "h5py/h5o.pyx":290
+ * def visit(ObjectID loc not None, object func, *,
+ *           int idx_type=H5_INDEX_NAME, int order=H5_ITER_NATIVE,
+ *           char* obj_name=".", PropID lapl=None, bint info=0):             # <<<<<<<<<<<<<<
+ *     """(ObjectID loc, CALLABLE func, **kwds) => <Return value from func>
+ * 
+ */
+    values[5] = (PyObject *)((struct __pyx_obj_4h5py_3h5p_PropID *)Py_None);
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__loc)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__func)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("visit", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 288; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+      }
+      if (kw_args > 0 && likely(kw_args <= 5)) {
+        Py_ssize_t index;
+        for (index = 2; index < 7 && kw_args > 0; index++) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, *__pyx_pyargnames[index]);
+          if (value) { values[index] = value; kw_args--; }
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "visit") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 288; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+    }
+    __pyx_v_loc = ((struct __pyx_obj_4h5py_8_objects_ObjectID *)values[0]);
+    __pyx_v_func = values[1];
+    if (values[2]) {
+      __pyx_v_idx_type = __Pyx_PyInt_AsInt(values[2]); if (unlikely((__pyx_v_idx_type == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 289; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    } else {
+      __pyx_v_idx_type = __pyx_k_6;
+    }
+    if (values[3]) {
+      __pyx_v_order = __Pyx_PyInt_AsInt(values[3]); if (unlikely((__pyx_v_order == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 289; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    } else {
+      __pyx_v_order = __pyx_k_7;
+    }
+    if (values[4]) {
+      __pyx_v_obj_name = PyBytes_AsString(values[4]); if (unlikely((!__pyx_v_obj_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 290; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    } else {
+      __pyx_v_obj_name = ((char *)__pyx_k_1);
+    }
+    __pyx_v_lapl = ((struct __pyx_obj_4h5py_3h5p_PropID *)values[5]);
+    if (values[6]) {
+      __pyx_v_info = __Pyx_PyObject_IsTrue(values[6]); if (unlikely((__pyx_v_info == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 290; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    } else {
+      __pyx_v_info = ((int)0);
+    }
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("visit", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 288; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5o.visit", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_loc), __pyx_ptype_4h5py_8_objects_ObjectID, 0, "loc", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_lapl), __pyx_ptype_4h5py_3h5p_PropID, 1, "lapl", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 290; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_pf_4h5py_3h5o_12visit(__pyx_self, __pyx_v_loc, __pyx_v_func, __pyx_v_idx_type, __pyx_v_order, __pyx_v_obj_name, __pyx_v_lapl, __pyx_v_info);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5o.pyx":288
+ * 
+ * 
+ * def visit(ObjectID loc not None, object func, *,             # <<<<<<<<<<<<<<
+ *           int idx_type=H5_INDEX_NAME, int order=H5_ITER_NATIVE,
+ *           char* obj_name=".", PropID lapl=None, bint info=0):
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5o_12visit(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_loc, PyObject *__pyx_v_func, int __pyx_v_idx_type, int __pyx_v_order, char *__pyx_v_obj_name, struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_lapl, int __pyx_v_info) {
+  struct __pyx_obj_4h5py_3h5o__ObjectVisitor *__pyx_v_visit = 0;
+  H5O_iterate_t __pyx_v_cfunc;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  herr_t __pyx_t_3;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("visit", 0);
+
+  /* "h5py/h5o.pyx":325
+ *     provides a literal "." as the first value.
+ *     """
+ *     cdef _ObjectVisitor visit = _ObjectVisitor(func)             # <<<<<<<<<<<<<<
+ *     cdef H5O_iterate_t cfunc
+ * 
+ */
+  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 325; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(__pyx_v_func);
+  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_func);
+  __Pyx_GIVEREF(__pyx_v_func);
+  __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4h5py_3h5o__ObjectVisitor)), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 325; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
+  __pyx_v_visit = ((struct __pyx_obj_4h5py_3h5o__ObjectVisitor *)__pyx_t_2);
+  __pyx_t_2 = 0;
+
+  /* "h5py/h5o.pyx":328
+ *     cdef H5O_iterate_t cfunc
+ * 
+ *     if info:             # <<<<<<<<<<<<<<
+ *         cfunc = cb_obj_iterate
+ *     else:
+ */
+  if (__pyx_v_info) {
+
+    /* "h5py/h5o.pyx":329
+ * 
+ *     if info:
+ *         cfunc = cb_obj_iterate             # <<<<<<<<<<<<<<
+ *     else:
+ *         cfunc = cb_obj_simple
+ */
+    __pyx_v_cfunc = __pyx_f_4h5py_3h5o_cb_obj_iterate;
+    goto __pyx_L3;
+  }
+  /*else*/ {
+
+    /* "h5py/h5o.pyx":331
+ *         cfunc = cb_obj_iterate
+ *     else:
+ *         cfunc = cb_obj_simple             # <<<<<<<<<<<<<<
+ * 
+ *     H5Ovisit_by_name(loc.id, obj_name, <H5_index_t>idx_type,
+ */
+    __pyx_v_cfunc = __pyx_f_4h5py_3h5o_cb_obj_simple;
+  }
+  __pyx_L3:;
+
+  /* "h5py/h5o.pyx":334
+ * 
+ *     H5Ovisit_by_name(loc.id, obj_name, <H5_index_t>idx_type,
+ *         <H5_iter_order_t>order, cfunc, <void*>visit, pdefault(lapl))             # <<<<<<<<<<<<<<
+ * 
+ *     return visit.retval
+ */
+  __pyx_t_3 = __pyx_f_4h5py_4defs_H5Ovisit_by_name(__pyx_v_loc->id, __pyx_v_obj_name, ((H5_index_t)__pyx_v_idx_type), ((H5_iter_order_t)__pyx_v_order), __pyx_v_cfunc, ((void *)__pyx_v_visit), __pyx_f_4h5py_8_objects_pdefault(((struct __pyx_obj_4h5py_8_objects_ObjectID *)__pyx_v_lapl))); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 333; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5o.pyx":336
+ *         <H5_iter_order_t>order, cfunc, <void*>visit, pdefault(lapl))
+ * 
+ *     return visit.retval             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_visit->retval);
+  __pyx_r = __pyx_v_visit->retval;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5o.visit", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_visit);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_tp_new_4h5py_3h5o__ObjInfoBase(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
+  PyObject *o = (*t->tp_alloc)(t, 0);
+  if (!o) return 0;
+  return o;
+}
+
+static void __pyx_tp_dealloc_4h5py_3h5o__ObjInfoBase(PyObject *o) {
+  (*Py_TYPE(o)->tp_free)(o);
+}
+
+static PyMethodDef __pyx_methods_4h5py_3h5o__ObjInfoBase[] = {
+  {0, 0, 0, 0}
+};
+
+static PyNumberMethods __pyx_tp_as_number__ObjInfoBase = {
+  0, /*nb_add*/
+  0, /*nb_subtract*/
+  0, /*nb_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_divide*/
+  #endif
+  0, /*nb_remainder*/
+  0, /*nb_divmod*/
+  0, /*nb_power*/
+  0, /*nb_negative*/
+  0, /*nb_positive*/
+  0, /*nb_absolute*/
+  0, /*nb_nonzero*/
+  0, /*nb_invert*/
+  0, /*nb_lshift*/
+  0, /*nb_rshift*/
+  0, /*nb_and*/
+  0, /*nb_xor*/
+  0, /*nb_or*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_coerce*/
+  #endif
+  0, /*nb_int*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_long*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*nb_float*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_oct*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_hex*/
+  #endif
+  0, /*nb_inplace_add*/
+  0, /*nb_inplace_subtract*/
+  0, /*nb_inplace_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_inplace_divide*/
+  #endif
+  0, /*nb_inplace_remainder*/
+  0, /*nb_inplace_power*/
+  0, /*nb_inplace_lshift*/
+  0, /*nb_inplace_rshift*/
+  0, /*nb_inplace_and*/
+  0, /*nb_inplace_xor*/
+  0, /*nb_inplace_or*/
+  0, /*nb_floor_divide*/
+  0, /*nb_true_divide*/
+  0, /*nb_inplace_floor_divide*/
+  0, /*nb_inplace_true_divide*/
+  #if PY_VERSION_HEX >= 0x02050000
+  0, /*nb_index*/
+  #endif
+};
+
+static PySequenceMethods __pyx_tp_as_sequence__ObjInfoBase = {
+  0, /*sq_length*/
+  0, /*sq_concat*/
+  0, /*sq_repeat*/
+  0, /*sq_item*/
+  0, /*sq_slice*/
+  0, /*sq_ass_item*/
+  0, /*sq_ass_slice*/
+  0, /*sq_contains*/
+  0, /*sq_inplace_concat*/
+  0, /*sq_inplace_repeat*/
+};
+
+static PyMappingMethods __pyx_tp_as_mapping__ObjInfoBase = {
+  0, /*mp_length*/
+  0, /*mp_subscript*/
+  0, /*mp_ass_subscript*/
+};
+
+static PyBufferProcs __pyx_tp_as_buffer__ObjInfoBase = {
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getreadbuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getwritebuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getsegcount*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getcharbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_getbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_releasebuffer*/
+  #endif
+};
+
+static PyTypeObject __pyx_type_4h5py_3h5o__ObjInfoBase = {
+  PyVarObject_HEAD_INIT(0, 0)
+  __Pyx_NAMESTR("h5py.h5o._ObjInfoBase"), /*tp_name*/
+  sizeof(struct __pyx_obj_4h5py_3h5o__ObjInfoBase), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_4h5py_3h5o__ObjInfoBase, /*tp_dealloc*/
+  0, /*tp_print*/
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*tp_repr*/
+  &__pyx_tp_as_number__ObjInfoBase, /*tp_as_number*/
+  &__pyx_tp_as_sequence__ObjInfoBase, /*tp_as_sequence*/
+  &__pyx_tp_as_mapping__ObjInfoBase, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  &__pyx_tp_as_buffer__ObjInfoBase, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
+  0, /*tp_doc*/
+  0, /*tp_traverse*/
+  0, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_4h5py_3h5o__ObjInfoBase, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  0, /*tp_dictoffset*/
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_4h5py_3h5o__ObjInfoBase, /*tp_new*/
+  0, /*tp_free*/
+  0, /*tp_is_gc*/
+  0, /*tp_bases*/
+  0, /*tp_mro*/
+  0, /*tp_cache*/
+  0, /*tp_subclasses*/
+  0, /*tp_weaklist*/
+  0, /*tp_del*/
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*tp_version_tag*/
+  #endif
+};
+
+static PyObject *__pyx_tp_new_4h5py_3h5o__OHdrMesg(PyTypeObject *t, PyObject *a, PyObject *k) {
+  PyObject *o = __pyx_tp_new_4h5py_3h5o__ObjInfoBase(t, a, k);
+  if (!o) return 0;
+  return o;
+}
+
+static PyObject *__pyx_getprop_4h5py_3h5o_9_OHdrMesg_present(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_4h5py_3h5o_9_OHdrMesg_7present_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_4h5py_3h5o_9_OHdrMesg_shared(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_4h5py_3h5o_9_OHdrMesg_6shared_1__get__(o);
+}
+
+static PyMethodDef __pyx_methods_4h5py_3h5o__OHdrMesg[] = {
+  {__Pyx_NAMESTR("_hash"), (PyCFunction)__pyx_pw_4h5py_3h5o_9_OHdrMesg_1_hash, METH_NOARGS, __Pyx_DOCSTR(0)},
+  {0, 0, 0, 0}
+};
+
+static struct PyGetSetDef __pyx_getsets_4h5py_3h5o__OHdrMesg[] = {
+  {(char *)"present", __pyx_getprop_4h5py_3h5o_9_OHdrMesg_present, 0, 0, 0},
+  {(char *)"shared", __pyx_getprop_4h5py_3h5o_9_OHdrMesg_shared, 0, 0, 0},
+  {0, 0, 0, 0, 0}
+};
+
+static PyNumberMethods __pyx_tp_as_number__OHdrMesg = {
+  0, /*nb_add*/
+  0, /*nb_subtract*/
+  0, /*nb_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_divide*/
+  #endif
+  0, /*nb_remainder*/
+  0, /*nb_divmod*/
+  0, /*nb_power*/
+  0, /*nb_negative*/
+  0, /*nb_positive*/
+  0, /*nb_absolute*/
+  0, /*nb_nonzero*/
+  0, /*nb_invert*/
+  0, /*nb_lshift*/
+  0, /*nb_rshift*/
+  0, /*nb_and*/
+  0, /*nb_xor*/
+  0, /*nb_or*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_coerce*/
+  #endif
+  0, /*nb_int*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_long*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*nb_float*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_oct*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_hex*/
+  #endif
+  0, /*nb_inplace_add*/
+  0, /*nb_inplace_subtract*/
+  0, /*nb_inplace_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_inplace_divide*/
+  #endif
+  0, /*nb_inplace_remainder*/
+  0, /*nb_inplace_power*/
+  0, /*nb_inplace_lshift*/
+  0, /*nb_inplace_rshift*/
+  0, /*nb_inplace_and*/
+  0, /*nb_inplace_xor*/
+  0, /*nb_inplace_or*/
+  0, /*nb_floor_divide*/
+  0, /*nb_true_divide*/
+  0, /*nb_inplace_floor_divide*/
+  0, /*nb_inplace_true_divide*/
+  #if PY_VERSION_HEX >= 0x02050000
+  0, /*nb_index*/
+  #endif
+};
+
+static PySequenceMethods __pyx_tp_as_sequence__OHdrMesg = {
+  0, /*sq_length*/
+  0, /*sq_concat*/
+  0, /*sq_repeat*/
+  0, /*sq_item*/
+  0, /*sq_slice*/
+  0, /*sq_ass_item*/
+  0, /*sq_ass_slice*/
+  0, /*sq_contains*/
+  0, /*sq_inplace_concat*/
+  0, /*sq_inplace_repeat*/
+};
+
+static PyMappingMethods __pyx_tp_as_mapping__OHdrMesg = {
+  0, /*mp_length*/
+  0, /*mp_subscript*/
+  0, /*mp_ass_subscript*/
+};
+
+static PyBufferProcs __pyx_tp_as_buffer__OHdrMesg = {
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getreadbuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getwritebuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getsegcount*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getcharbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_getbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_releasebuffer*/
+  #endif
+};
+
+static PyTypeObject __pyx_type_4h5py_3h5o__OHdrMesg = {
+  PyVarObject_HEAD_INIT(0, 0)
+  __Pyx_NAMESTR("h5py.h5o._OHdrMesg"), /*tp_name*/
+  sizeof(struct __pyx_obj_4h5py_3h5o__OHdrMesg), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_4h5py_3h5o__ObjInfoBase, /*tp_dealloc*/
+  0, /*tp_print*/
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*tp_repr*/
+  &__pyx_tp_as_number__OHdrMesg, /*tp_as_number*/
+  &__pyx_tp_as_sequence__OHdrMesg, /*tp_as_sequence*/
+  &__pyx_tp_as_mapping__OHdrMesg, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  &__pyx_tp_as_buffer__OHdrMesg, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
+  0, /*tp_doc*/
+  0, /*tp_traverse*/
+  0, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_4h5py_3h5o__OHdrMesg, /*tp_methods*/
+  0, /*tp_members*/
+  __pyx_getsets_4h5py_3h5o__OHdrMesg, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  0, /*tp_dictoffset*/
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_4h5py_3h5o__OHdrMesg, /*tp_new*/
+  0, /*tp_free*/
+  0, /*tp_is_gc*/
+  0, /*tp_bases*/
+  0, /*tp_mro*/
+  0, /*tp_cache*/
+  0, /*tp_subclasses*/
+  0, /*tp_weaklist*/
+  0, /*tp_del*/
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*tp_version_tag*/
+  #endif
+};
+
+static PyObject *__pyx_tp_new_4h5py_3h5o__OHdrSpace(PyTypeObject *t, PyObject *a, PyObject *k) {
+  PyObject *o = __pyx_tp_new_4h5py_3h5o__ObjInfoBase(t, a, k);
+  if (!o) return 0;
+  return o;
+}
+
+static PyObject *__pyx_getprop_4h5py_3h5o_10_OHdrSpace_total(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_4h5py_3h5o_10_OHdrSpace_5total_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_4h5py_3h5o_10_OHdrSpace_meta(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_4h5py_3h5o_10_OHdrSpace_4meta_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_4h5py_3h5o_10_OHdrSpace_mesg(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_4h5py_3h5o_10_OHdrSpace_4mesg_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_4h5py_3h5o_10_OHdrSpace_free(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_4h5py_3h5o_10_OHdrSpace_4free_1__get__(o);
+}
+
+static PyMethodDef __pyx_methods_4h5py_3h5o__OHdrSpace[] = {
+  {__Pyx_NAMESTR("_hash"), (PyCFunction)__pyx_pw_4h5py_3h5o_10_OHdrSpace_1_hash, METH_NOARGS, __Pyx_DOCSTR(0)},
+  {0, 0, 0, 0}
+};
+
+static struct PyGetSetDef __pyx_getsets_4h5py_3h5o__OHdrSpace[] = {
+  {(char *)"total", __pyx_getprop_4h5py_3h5o_10_OHdrSpace_total, 0, 0, 0},
+  {(char *)"meta", __pyx_getprop_4h5py_3h5o_10_OHdrSpace_meta, 0, 0, 0},
+  {(char *)"mesg", __pyx_getprop_4h5py_3h5o_10_OHdrSpace_mesg, 0, 0, 0},
+  {(char *)"free", __pyx_getprop_4h5py_3h5o_10_OHdrSpace_free, 0, 0, 0},
+  {0, 0, 0, 0, 0}
+};
+
+static PyNumberMethods __pyx_tp_as_number__OHdrSpace = {
+  0, /*nb_add*/
+  0, /*nb_subtract*/
+  0, /*nb_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_divide*/
+  #endif
+  0, /*nb_remainder*/
+  0, /*nb_divmod*/
+  0, /*nb_power*/
+  0, /*nb_negative*/
+  0, /*nb_positive*/
+  0, /*nb_absolute*/
+  0, /*nb_nonzero*/
+  0, /*nb_invert*/
+  0, /*nb_lshift*/
+  0, /*nb_rshift*/
+  0, /*nb_and*/
+  0, /*nb_xor*/
+  0, /*nb_or*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_coerce*/
+  #endif
+  0, /*nb_int*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_long*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*nb_float*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_oct*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_hex*/
+  #endif
+  0, /*nb_inplace_add*/
+  0, /*nb_inplace_subtract*/
+  0, /*nb_inplace_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_inplace_divide*/
+  #endif
+  0, /*nb_inplace_remainder*/
+  0, /*nb_inplace_power*/
+  0, /*nb_inplace_lshift*/
+  0, /*nb_inplace_rshift*/
+  0, /*nb_inplace_and*/
+  0, /*nb_inplace_xor*/
+  0, /*nb_inplace_or*/
+  0, /*nb_floor_divide*/
+  0, /*nb_true_divide*/
+  0, /*nb_inplace_floor_divide*/
+  0, /*nb_inplace_true_divide*/
+  #if PY_VERSION_HEX >= 0x02050000
+  0, /*nb_index*/
+  #endif
+};
+
+static PySequenceMethods __pyx_tp_as_sequence__OHdrSpace = {
+  0, /*sq_length*/
+  0, /*sq_concat*/
+  0, /*sq_repeat*/
+  0, /*sq_item*/
+  0, /*sq_slice*/
+  0, /*sq_ass_item*/
+  0, /*sq_ass_slice*/
+  0, /*sq_contains*/
+  0, /*sq_inplace_concat*/
+  0, /*sq_inplace_repeat*/
+};
+
+static PyMappingMethods __pyx_tp_as_mapping__OHdrSpace = {
+  0, /*mp_length*/
+  0, /*mp_subscript*/
+  0, /*mp_ass_subscript*/
+};
+
+static PyBufferProcs __pyx_tp_as_buffer__OHdrSpace = {
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getreadbuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getwritebuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getsegcount*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getcharbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_getbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_releasebuffer*/
+  #endif
+};
+
+static PyTypeObject __pyx_type_4h5py_3h5o__OHdrSpace = {
+  PyVarObject_HEAD_INIT(0, 0)
+  __Pyx_NAMESTR("h5py.h5o._OHdrSpace"), /*tp_name*/
+  sizeof(struct __pyx_obj_4h5py_3h5o__OHdrSpace), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_4h5py_3h5o__ObjInfoBase, /*tp_dealloc*/
+  0, /*tp_print*/
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*tp_repr*/
+  &__pyx_tp_as_number__OHdrSpace, /*tp_as_number*/
+  &__pyx_tp_as_sequence__OHdrSpace, /*tp_as_sequence*/
+  &__pyx_tp_as_mapping__OHdrSpace, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  &__pyx_tp_as_buffer__OHdrSpace, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
+  0, /*tp_doc*/
+  0, /*tp_traverse*/
+  0, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_4h5py_3h5o__OHdrSpace, /*tp_methods*/
+  0, /*tp_members*/
+  __pyx_getsets_4h5py_3h5o__OHdrSpace, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  0, /*tp_dictoffset*/
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_4h5py_3h5o__OHdrSpace, /*tp_new*/
+  0, /*tp_free*/
+  0, /*tp_is_gc*/
+  0, /*tp_bases*/
+  0, /*tp_mro*/
+  0, /*tp_cache*/
+  0, /*tp_subclasses*/
+  0, /*tp_weaklist*/
+  0, /*tp_del*/
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*tp_version_tag*/
+  #endif
+};
+
+static PyObject *__pyx_tp_new_4h5py_3h5o__OHdr(PyTypeObject *t, PyObject *a, PyObject *k) {
+  struct __pyx_obj_4h5py_3h5o__OHdr *p;
+  PyObject *o = __pyx_tp_new_4h5py_3h5o__ObjInfoBase(t, a, k);
+  if (!o) return 0;
+  p = ((struct __pyx_obj_4h5py_3h5o__OHdr *)o);
+  p->space = ((struct __pyx_obj_4h5py_3h5o__OHdrSpace *)Py_None); Py_INCREF(Py_None);
+  p->mesg = ((struct __pyx_obj_4h5py_3h5o__OHdrMesg *)Py_None); Py_INCREF(Py_None);
+  return o;
+}
+
+static void __pyx_tp_dealloc_4h5py_3h5o__OHdr(PyObject *o) {
+  struct __pyx_obj_4h5py_3h5o__OHdr *p = (struct __pyx_obj_4h5py_3h5o__OHdr *)o;
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->space);
+  Py_CLEAR(p->mesg);
+  PyObject_GC_Track(o);
+  __pyx_tp_dealloc_4h5py_3h5o__ObjInfoBase(o);
+}
+
+static int __pyx_tp_traverse_4h5py_3h5o__OHdr(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_4h5py_3h5o__OHdr *p = (struct __pyx_obj_4h5py_3h5o__OHdr *)o;
+  e = ((likely(__pyx_ptype_4h5py_3h5o__ObjInfoBase)) ? ((__pyx_ptype_4h5py_3h5o__ObjInfoBase->tp_traverse) ? __pyx_ptype_4h5py_3h5o__ObjInfoBase->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_4h5py_3h5o__OHdr)); if (e) return e;
+  if (p->space) {
+    e = (*v)(((PyObject*)p->space), a); if (e) return e;
+  }
+  if (p->mesg) {
+    e = (*v)(((PyObject*)p->mesg), a); if (e) return e;
+  }
+  return 0;
+}
+
+static int __pyx_tp_clear_4h5py_3h5o__OHdr(PyObject *o) {
+  struct __pyx_obj_4h5py_3h5o__OHdr *p = (struct __pyx_obj_4h5py_3h5o__OHdr *)o;
+  PyObject* tmp;
+  if (likely(__pyx_ptype_4h5py_3h5o__ObjInfoBase)) { if (__pyx_ptype_4h5py_3h5o__ObjInfoBase->tp_clear) __pyx_ptype_4h5py_3h5o__ObjInfoBase->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_4h5py_3h5o__OHdr);
+  tmp = ((PyObject*)p->space);
+  p->space = ((struct __pyx_obj_4h5py_3h5o__OHdrSpace *)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->mesg);
+  p->mesg = ((struct __pyx_obj_4h5py_3h5o__OHdrMesg *)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  return 0;
+}
+
+static PyObject *__pyx_getprop_4h5py_3h5o_5_OHdr_version(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_4h5py_3h5o_5_OHdr_7version_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_4h5py_3h5o_5_OHdr_nmesgs(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_4h5py_3h5o_5_OHdr_6nmesgs_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_4h5py_3h5o_5_OHdr_space(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_4h5py_3h5o_5_OHdr_5space_1__get__(o);
+}
+
+static int __pyx_setprop_4h5py_3h5o_5_OHdr_space(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
+  if (v) {
+    return __pyx_pw_4h5py_3h5o_5_OHdr_5space_3__set__(o, v);
+  }
+  else {
+    return __pyx_pw_4h5py_3h5o_5_OHdr_5space_5__del__(o);
+  }
+}
+
+static PyObject *__pyx_getprop_4h5py_3h5o_5_OHdr_mesg(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_4h5py_3h5o_5_OHdr_4mesg_1__get__(o);
+}
+
+static int __pyx_setprop_4h5py_3h5o_5_OHdr_mesg(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
+  if (v) {
+    return __pyx_pw_4h5py_3h5o_5_OHdr_4mesg_3__set__(o, v);
+  }
+  else {
+    return __pyx_pw_4h5py_3h5o_5_OHdr_4mesg_5__del__(o);
+  }
+}
+
+static PyMethodDef __pyx_methods_4h5py_3h5o__OHdr[] = {
+  {__Pyx_NAMESTR("_hash"), (PyCFunction)__pyx_pw_4h5py_3h5o_5_OHdr_3_hash, METH_NOARGS, __Pyx_DOCSTR(0)},
+  {0, 0, 0, 0}
+};
+
+static struct PyGetSetDef __pyx_getsets_4h5py_3h5o__OHdr[] = {
+  {(char *)"version", __pyx_getprop_4h5py_3h5o_5_OHdr_version, 0, 0, 0},
+  {(char *)"nmesgs", __pyx_getprop_4h5py_3h5o_5_OHdr_nmesgs, 0, 0, 0},
+  {(char *)"space", __pyx_getprop_4h5py_3h5o_5_OHdr_space, __pyx_setprop_4h5py_3h5o_5_OHdr_space, 0, 0},
+  {(char *)"mesg", __pyx_getprop_4h5py_3h5o_5_OHdr_mesg, __pyx_setprop_4h5py_3h5o_5_OHdr_mesg, 0, 0},
+  {0, 0, 0, 0, 0}
+};
+
+static PyNumberMethods __pyx_tp_as_number__OHdr = {
+  0, /*nb_add*/
+  0, /*nb_subtract*/
+  0, /*nb_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_divide*/
+  #endif
+  0, /*nb_remainder*/
+  0, /*nb_divmod*/
+  0, /*nb_power*/
+  0, /*nb_negative*/
+  0, /*nb_positive*/
+  0, /*nb_absolute*/
+  0, /*nb_nonzero*/
+  0, /*nb_invert*/
+  0, /*nb_lshift*/
+  0, /*nb_rshift*/
+  0, /*nb_and*/
+  0, /*nb_xor*/
+  0, /*nb_or*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_coerce*/
+  #endif
+  0, /*nb_int*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_long*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*nb_float*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_oct*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_hex*/
+  #endif
+  0, /*nb_inplace_add*/
+  0, /*nb_inplace_subtract*/
+  0, /*nb_inplace_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_inplace_divide*/
+  #endif
+  0, /*nb_inplace_remainder*/
+  0, /*nb_inplace_power*/
+  0, /*nb_inplace_lshift*/
+  0, /*nb_inplace_rshift*/
+  0, /*nb_inplace_and*/
+  0, /*nb_inplace_xor*/
+  0, /*nb_inplace_or*/
+  0, /*nb_floor_divide*/
+  0, /*nb_true_divide*/
+  0, /*nb_inplace_floor_divide*/
+  0, /*nb_inplace_true_divide*/
+  #if PY_VERSION_HEX >= 0x02050000
+  0, /*nb_index*/
+  #endif
+};
+
+static PySequenceMethods __pyx_tp_as_sequence__OHdr = {
+  0, /*sq_length*/
+  0, /*sq_concat*/
+  0, /*sq_repeat*/
+  0, /*sq_item*/
+  0, /*sq_slice*/
+  0, /*sq_ass_item*/
+  0, /*sq_ass_slice*/
+  0, /*sq_contains*/
+  0, /*sq_inplace_concat*/
+  0, /*sq_inplace_repeat*/
+};
+
+static PyMappingMethods __pyx_tp_as_mapping__OHdr = {
+  0, /*mp_length*/
+  0, /*mp_subscript*/
+  0, /*mp_ass_subscript*/
+};
+
+static PyBufferProcs __pyx_tp_as_buffer__OHdr = {
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getreadbuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getwritebuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getsegcount*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getcharbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_getbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_releasebuffer*/
+  #endif
+};
+
+static PyTypeObject __pyx_type_4h5py_3h5o__OHdr = {
+  PyVarObject_HEAD_INIT(0, 0)
+  __Pyx_NAMESTR("h5py.h5o._OHdr"), /*tp_name*/
+  sizeof(struct __pyx_obj_4h5py_3h5o__OHdr), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_4h5py_3h5o__OHdr, /*tp_dealloc*/
+  0, /*tp_print*/
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*tp_repr*/
+  &__pyx_tp_as_number__OHdr, /*tp_as_number*/
+  &__pyx_tp_as_sequence__OHdr, /*tp_as_sequence*/
+  &__pyx_tp_as_mapping__OHdr, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  &__pyx_tp_as_buffer__OHdr, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_4h5py_3h5o__OHdr, /*tp_traverse*/
+  __pyx_tp_clear_4h5py_3h5o__OHdr, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_4h5py_3h5o__OHdr, /*tp_methods*/
+  0, /*tp_members*/
+  __pyx_getsets_4h5py_3h5o__OHdr, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  0, /*tp_dictoffset*/
+  __pyx_pw_4h5py_3h5o_5_OHdr_1__init__, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_4h5py_3h5o__OHdr, /*tp_new*/
+  0, /*tp_free*/
+  0, /*tp_is_gc*/
+  0, /*tp_bases*/
+  0, /*tp_mro*/
+  0, /*tp_cache*/
+  0, /*tp_subclasses*/
+  0, /*tp_weaklist*/
+  0, /*tp_del*/
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*tp_version_tag*/
+  #endif
+};
+
+static PyObject *__pyx_tp_new_4h5py_3h5o__ObjInfo(PyTypeObject *t, PyObject *a, PyObject *k) {
+  PyObject *o = __pyx_tp_new_4h5py_3h5o__ObjInfoBase(t, a, k);
+  if (!o) return 0;
+  return o;
+}
+
+static PyObject *__pyx_getprop_4h5py_3h5o_8_ObjInfo_fileno(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_4h5py_3h5o_8_ObjInfo_6fileno_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_4h5py_3h5o_8_ObjInfo_addr(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_4h5py_3h5o_8_ObjInfo_4addr_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_4h5py_3h5o_8_ObjInfo_type(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_4h5py_3h5o_8_ObjInfo_4type_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_4h5py_3h5o_8_ObjInfo_rc(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_4h5py_3h5o_8_ObjInfo_2rc_1__get__(o);
+}
+
+static PyMethodDef __pyx_methods_4h5py_3h5o__ObjInfo[] = {
+  {__Pyx_NAMESTR("_hash"), (PyCFunction)__pyx_pw_4h5py_3h5o_8_ObjInfo_1_hash, METH_NOARGS, __Pyx_DOCSTR(0)},
+  {0, 0, 0, 0}
+};
+
+static struct PyGetSetDef __pyx_getsets_4h5py_3h5o__ObjInfo[] = {
+  {(char *)"fileno", __pyx_getprop_4h5py_3h5o_8_ObjInfo_fileno, 0, 0, 0},
+  {(char *)"addr", __pyx_getprop_4h5py_3h5o_8_ObjInfo_addr, 0, 0, 0},
+  {(char *)"type", __pyx_getprop_4h5py_3h5o_8_ObjInfo_type, 0, 0, 0},
+  {(char *)"rc", __pyx_getprop_4h5py_3h5o_8_ObjInfo_rc, 0, 0, 0},
+  {0, 0, 0, 0, 0}
+};
+
+static PyNumberMethods __pyx_tp_as_number__ObjInfo = {
+  0, /*nb_add*/
+  0, /*nb_subtract*/
+  0, /*nb_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_divide*/
+  #endif
+  0, /*nb_remainder*/
+  0, /*nb_divmod*/
+  0, /*nb_power*/
+  0, /*nb_negative*/
+  0, /*nb_positive*/
+  0, /*nb_absolute*/
+  0, /*nb_nonzero*/
+  0, /*nb_invert*/
+  0, /*nb_lshift*/
+  0, /*nb_rshift*/
+  0, /*nb_and*/
+  0, /*nb_xor*/
+  0, /*nb_or*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_coerce*/
+  #endif
+  0, /*nb_int*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_long*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*nb_float*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_oct*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_hex*/
+  #endif
+  0, /*nb_inplace_add*/
+  0, /*nb_inplace_subtract*/
+  0, /*nb_inplace_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_inplace_divide*/
+  #endif
+  0, /*nb_inplace_remainder*/
+  0, /*nb_inplace_power*/
+  0, /*nb_inplace_lshift*/
+  0, /*nb_inplace_rshift*/
+  0, /*nb_inplace_and*/
+  0, /*nb_inplace_xor*/
+  0, /*nb_inplace_or*/
+  0, /*nb_floor_divide*/
+  0, /*nb_true_divide*/
+  0, /*nb_inplace_floor_divide*/
+  0, /*nb_inplace_true_divide*/
+  #if PY_VERSION_HEX >= 0x02050000
+  0, /*nb_index*/
+  #endif
+};
+
+static PySequenceMethods __pyx_tp_as_sequence__ObjInfo = {
+  0, /*sq_length*/
+  0, /*sq_concat*/
+  0, /*sq_repeat*/
+  0, /*sq_item*/
+  0, /*sq_slice*/
+  0, /*sq_ass_item*/
+  0, /*sq_ass_slice*/
+  0, /*sq_contains*/
+  0, /*sq_inplace_concat*/
+  0, /*sq_inplace_repeat*/
+};
+
+static PyMappingMethods __pyx_tp_as_mapping__ObjInfo = {
+  0, /*mp_length*/
+  0, /*mp_subscript*/
+  0, /*mp_ass_subscript*/
+};
+
+static PyBufferProcs __pyx_tp_as_buffer__ObjInfo = {
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getreadbuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getwritebuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getsegcount*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getcharbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_getbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_releasebuffer*/
+  #endif
+};
+
+static PyTypeObject __pyx_type_4h5py_3h5o__ObjInfo = {
+  PyVarObject_HEAD_INIT(0, 0)
+  __Pyx_NAMESTR("h5py.h5o._ObjInfo"), /*tp_name*/
+  sizeof(struct __pyx_obj_4h5py_3h5o__ObjInfo), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_4h5py_3h5o__ObjInfoBase, /*tp_dealloc*/
+  0, /*tp_print*/
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*tp_repr*/
+  &__pyx_tp_as_number__ObjInfo, /*tp_as_number*/
+  &__pyx_tp_as_sequence__ObjInfo, /*tp_as_sequence*/
+  &__pyx_tp_as_mapping__ObjInfo, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  &__pyx_tp_as_buffer__ObjInfo, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
+  0, /*tp_doc*/
+  0, /*tp_traverse*/
+  0, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_4h5py_3h5o__ObjInfo, /*tp_methods*/
+  0, /*tp_members*/
+  __pyx_getsets_4h5py_3h5o__ObjInfo, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  0, /*tp_dictoffset*/
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_4h5py_3h5o__ObjInfo, /*tp_new*/
+  0, /*tp_free*/
+  0, /*tp_is_gc*/
+  0, /*tp_bases*/
+  0, /*tp_mro*/
+  0, /*tp_cache*/
+  0, /*tp_subclasses*/
+  0, /*tp_weaklist*/
+  0, /*tp_del*/
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*tp_version_tag*/
+  #endif
+};
+
+static PyObject *__pyx_tp_new_4h5py_3h5o_ObjInfo(PyTypeObject *t, PyObject *a, PyObject *k) {
+  struct __pyx_obj_4h5py_3h5o_ObjInfo *p;
+  PyObject *o = __pyx_tp_new_4h5py_3h5o__ObjInfoBase(t, a, k);
+  if (!o) return 0;
+  p = ((struct __pyx_obj_4h5py_3h5o_ObjInfo *)o);
+  p->hdr = ((struct __pyx_obj_4h5py_3h5o__OHdr *)Py_None); Py_INCREF(Py_None);
+  return o;
+}
+
+static void __pyx_tp_dealloc_4h5py_3h5o_ObjInfo(PyObject *o) {
+  struct __pyx_obj_4h5py_3h5o_ObjInfo *p = (struct __pyx_obj_4h5py_3h5o_ObjInfo *)o;
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->hdr);
+  PyObject_GC_Track(o);
+  __pyx_tp_dealloc_4h5py_3h5o__ObjInfoBase(o);
+}
+
+static int __pyx_tp_traverse_4h5py_3h5o_ObjInfo(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_4h5py_3h5o_ObjInfo *p = (struct __pyx_obj_4h5py_3h5o_ObjInfo *)o;
+  e = ((likely(__pyx_ptype_4h5py_3h5o__ObjInfo)) ? ((__pyx_ptype_4h5py_3h5o__ObjInfo->tp_traverse) ? __pyx_ptype_4h5py_3h5o__ObjInfo->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_4h5py_3h5o_ObjInfo)); if (e) return e;
+  if (p->hdr) {
+    e = (*v)(((PyObject*)p->hdr), a); if (e) return e;
+  }
+  return 0;
+}
+
+static int __pyx_tp_clear_4h5py_3h5o_ObjInfo(PyObject *o) {
+  struct __pyx_obj_4h5py_3h5o_ObjInfo *p = (struct __pyx_obj_4h5py_3h5o_ObjInfo *)o;
+  PyObject* tmp;
+  if (likely(__pyx_ptype_4h5py_3h5o__ObjInfo)) { if (__pyx_ptype_4h5py_3h5o__ObjInfo->tp_clear) __pyx_ptype_4h5py_3h5o__ObjInfo->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_4h5py_3h5o_ObjInfo);
+  tmp = ((PyObject*)p->hdr);
+  p->hdr = ((struct __pyx_obj_4h5py_3h5o__OHdr *)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  return 0;
+}
+
+static PyObject *__pyx_getprop_4h5py_3h5o_7ObjInfo_hdr(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_4h5py_3h5o_7ObjInfo_3hdr_1__get__(o);
+}
+
+static int __pyx_setprop_4h5py_3h5o_7ObjInfo_hdr(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
+  if (v) {
+    return __pyx_pw_4h5py_3h5o_7ObjInfo_3hdr_3__set__(o, v);
+  }
+  else {
+    return __pyx_pw_4h5py_3h5o_7ObjInfo_3hdr_5__del__(o);
+  }
+}
+
+static PyMethodDef __pyx_methods_4h5py_3h5o_ObjInfo[] = {
+  {__Pyx_NAMESTR("__copy__"), (PyCFunction)__pyx_pw_4h5py_3h5o_7ObjInfo_3__copy__, METH_NOARGS, __Pyx_DOCSTR(0)},
+  {0, 0, 0, 0}
+};
+
+static struct PyGetSetDef __pyx_getsets_4h5py_3h5o_ObjInfo[] = {
+  {(char *)"hdr", __pyx_getprop_4h5py_3h5o_7ObjInfo_hdr, __pyx_setprop_4h5py_3h5o_7ObjInfo_hdr, 0, 0},
+  {0, 0, 0, 0, 0}
+};
+
+static PyNumberMethods __pyx_tp_as_number_ObjInfo = {
+  0, /*nb_add*/
+  0, /*nb_subtract*/
+  0, /*nb_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_divide*/
+  #endif
+  0, /*nb_remainder*/
+  0, /*nb_divmod*/
+  0, /*nb_power*/
+  0, /*nb_negative*/
+  0, /*nb_positive*/
+  0, /*nb_absolute*/
+  0, /*nb_nonzero*/
+  0, /*nb_invert*/
+  0, /*nb_lshift*/
+  0, /*nb_rshift*/
+  0, /*nb_and*/
+  0, /*nb_xor*/
+  0, /*nb_or*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_coerce*/
+  #endif
+  0, /*nb_int*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_long*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*nb_float*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_oct*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_hex*/
+  #endif
+  0, /*nb_inplace_add*/
+  0, /*nb_inplace_subtract*/
+  0, /*nb_inplace_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_inplace_divide*/
+  #endif
+  0, /*nb_inplace_remainder*/
+  0, /*nb_inplace_power*/
+  0, /*nb_inplace_lshift*/
+  0, /*nb_inplace_rshift*/
+  0, /*nb_inplace_and*/
+  0, /*nb_inplace_xor*/
+  0, /*nb_inplace_or*/
+  0, /*nb_floor_divide*/
+  0, /*nb_true_divide*/
+  0, /*nb_inplace_floor_divide*/
+  0, /*nb_inplace_true_divide*/
+  #if PY_VERSION_HEX >= 0x02050000
+  0, /*nb_index*/
+  #endif
+};
+
+static PySequenceMethods __pyx_tp_as_sequence_ObjInfo = {
+  0, /*sq_length*/
+  0, /*sq_concat*/
+  0, /*sq_repeat*/
+  0, /*sq_item*/
+  0, /*sq_slice*/
+  0, /*sq_ass_item*/
+  0, /*sq_ass_slice*/
+  0, /*sq_contains*/
+  0, /*sq_inplace_concat*/
+  0, /*sq_inplace_repeat*/
+};
+
+static PyMappingMethods __pyx_tp_as_mapping_ObjInfo = {
+  0, /*mp_length*/
+  0, /*mp_subscript*/
+  0, /*mp_ass_subscript*/
+};
+
+static PyBufferProcs __pyx_tp_as_buffer_ObjInfo = {
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getreadbuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getwritebuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getsegcount*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getcharbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_getbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_releasebuffer*/
+  #endif
+};
+
+static PyTypeObject __pyx_type_4h5py_3h5o_ObjInfo = {
+  PyVarObject_HEAD_INIT(0, 0)
+  __Pyx_NAMESTR("h5py.h5o.ObjInfo"), /*tp_name*/
+  sizeof(struct __pyx_obj_4h5py_3h5o_ObjInfo), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_4h5py_3h5o_ObjInfo, /*tp_dealloc*/
+  0, /*tp_print*/
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*tp_repr*/
+  &__pyx_tp_as_number_ObjInfo, /*tp_as_number*/
+  &__pyx_tp_as_sequence_ObjInfo, /*tp_as_sequence*/
+  &__pyx_tp_as_mapping_ObjInfo, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  &__pyx_tp_as_buffer_ObjInfo, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+  __Pyx_DOCSTR("\n        Represents the H5O_info_t structure\n    "), /*tp_doc*/
+  __pyx_tp_traverse_4h5py_3h5o_ObjInfo, /*tp_traverse*/
+  __pyx_tp_clear_4h5py_3h5o_ObjInfo, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_4h5py_3h5o_ObjInfo, /*tp_methods*/
+  0, /*tp_members*/
+  __pyx_getsets_4h5py_3h5o_ObjInfo, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  0, /*tp_dictoffset*/
+  __pyx_pw_4h5py_3h5o_7ObjInfo_1__init__, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_4h5py_3h5o_ObjInfo, /*tp_new*/
+  0, /*tp_free*/
+  0, /*tp_is_gc*/
+  0, /*tp_bases*/
+  0, /*tp_mro*/
+  0, /*tp_cache*/
+  0, /*tp_subclasses*/
+  0, /*tp_weaklist*/
+  0, /*tp_del*/
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*tp_version_tag*/
+  #endif
+};
+
+static PyObject *__pyx_tp_new_4h5py_3h5o__ObjectVisitor(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
+  struct __pyx_obj_4h5py_3h5o__ObjectVisitor *p;
+  PyObject *o = (*t->tp_alloc)(t, 0);
+  if (!o) return 0;
+  p = ((struct __pyx_obj_4h5py_3h5o__ObjectVisitor *)o);
+  p->func = Py_None; Py_INCREF(Py_None);
+  p->retval = Py_None; Py_INCREF(Py_None);
+  p->objinfo = ((struct __pyx_obj_4h5py_3h5o_ObjInfo *)Py_None); Py_INCREF(Py_None);
+  return o;
+}
+
+static void __pyx_tp_dealloc_4h5py_3h5o__ObjectVisitor(PyObject *o) {
+  struct __pyx_obj_4h5py_3h5o__ObjectVisitor *p = (struct __pyx_obj_4h5py_3h5o__ObjectVisitor *)o;
+  PyObject_GC_UnTrack(o);
+  Py_CLEAR(p->func);
+  Py_CLEAR(p->retval);
+  Py_CLEAR(p->objinfo);
+  PyObject_GC_Track(o);
+  (*Py_TYPE(o)->tp_free)(o);
+}
+
+static int __pyx_tp_traverse_4h5py_3h5o__ObjectVisitor(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_4h5py_3h5o__ObjectVisitor *p = (struct __pyx_obj_4h5py_3h5o__ObjectVisitor *)o;
+  if (p->func) {
+    e = (*v)(p->func, a); if (e) return e;
+  }
+  if (p->retval) {
+    e = (*v)(p->retval, a); if (e) return e;
+  }
+  if (p->objinfo) {
+    e = (*v)(((PyObject*)p->objinfo), a); if (e) return e;
+  }
+  return 0;
+}
+
+static int __pyx_tp_clear_4h5py_3h5o__ObjectVisitor(PyObject *o) {
+  struct __pyx_obj_4h5py_3h5o__ObjectVisitor *p = (struct __pyx_obj_4h5py_3h5o__ObjectVisitor *)o;
+  PyObject* tmp;
+  tmp = ((PyObject*)p->func);
+  p->func = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->retval);
+  p->retval = Py_None; Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  tmp = ((PyObject*)p->objinfo);
+  p->objinfo = ((struct __pyx_obj_4h5py_3h5o_ObjInfo *)Py_None); Py_INCREF(Py_None);
+  Py_XDECREF(tmp);
+  return 0;
+}
+
+static PyMethodDef __pyx_methods_4h5py_3h5o__ObjectVisitor[] = {
+  {0, 0, 0, 0}
+};
+
+static PyNumberMethods __pyx_tp_as_number__ObjectVisitor = {
+  0, /*nb_add*/
+  0, /*nb_subtract*/
+  0, /*nb_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_divide*/
+  #endif
+  0, /*nb_remainder*/
+  0, /*nb_divmod*/
+  0, /*nb_power*/
+  0, /*nb_negative*/
+  0, /*nb_positive*/
+  0, /*nb_absolute*/
+  0, /*nb_nonzero*/
+  0, /*nb_invert*/
+  0, /*nb_lshift*/
+  0, /*nb_rshift*/
+  0, /*nb_and*/
+  0, /*nb_xor*/
+  0, /*nb_or*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_coerce*/
+  #endif
+  0, /*nb_int*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_long*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*nb_float*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_oct*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_hex*/
+  #endif
+  0, /*nb_inplace_add*/
+  0, /*nb_inplace_subtract*/
+  0, /*nb_inplace_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_inplace_divide*/
+  #endif
+  0, /*nb_inplace_remainder*/
+  0, /*nb_inplace_power*/
+  0, /*nb_inplace_lshift*/
+  0, /*nb_inplace_rshift*/
+  0, /*nb_inplace_and*/
+  0, /*nb_inplace_xor*/
+  0, /*nb_inplace_or*/
+  0, /*nb_floor_divide*/
+  0, /*nb_true_divide*/
+  0, /*nb_inplace_floor_divide*/
+  0, /*nb_inplace_true_divide*/
+  #if PY_VERSION_HEX >= 0x02050000
+  0, /*nb_index*/
+  #endif
+};
+
+static PySequenceMethods __pyx_tp_as_sequence__ObjectVisitor = {
+  0, /*sq_length*/
+  0, /*sq_concat*/
+  0, /*sq_repeat*/
+  0, /*sq_item*/
+  0, /*sq_slice*/
+  0, /*sq_ass_item*/
+  0, /*sq_ass_slice*/
+  0, /*sq_contains*/
+  0, /*sq_inplace_concat*/
+  0, /*sq_inplace_repeat*/
+};
+
+static PyMappingMethods __pyx_tp_as_mapping__ObjectVisitor = {
+  0, /*mp_length*/
+  0, /*mp_subscript*/
+  0, /*mp_ass_subscript*/
+};
+
+static PyBufferProcs __pyx_tp_as_buffer__ObjectVisitor = {
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getreadbuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getwritebuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getsegcount*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getcharbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_getbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_releasebuffer*/
+  #endif
+};
+
+static PyTypeObject __pyx_type_4h5py_3h5o__ObjectVisitor = {
+  PyVarObject_HEAD_INIT(0, 0)
+  __Pyx_NAMESTR("h5py.h5o._ObjectVisitor"), /*tp_name*/
+  sizeof(struct __pyx_obj_4h5py_3h5o__ObjectVisitor), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_4h5py_3h5o__ObjectVisitor, /*tp_dealloc*/
+  0, /*tp_print*/
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*tp_repr*/
+  &__pyx_tp_as_number__ObjectVisitor, /*tp_as_number*/
+  &__pyx_tp_as_sequence__ObjectVisitor, /*tp_as_sequence*/
+  &__pyx_tp_as_mapping__ObjectVisitor, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  &__pyx_tp_as_buffer__ObjectVisitor, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_4h5py_3h5o__ObjectVisitor, /*tp_traverse*/
+  __pyx_tp_clear_4h5py_3h5o__ObjectVisitor, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_4h5py_3h5o__ObjectVisitor, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  0, /*tp_dictoffset*/
+  __pyx_pw_4h5py_3h5o_14_ObjectVisitor_1__init__, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_4h5py_3h5o__ObjectVisitor, /*tp_new*/
+  0, /*tp_free*/
+  0, /*tp_is_gc*/
+  0, /*tp_bases*/
+  0, /*tp_mro*/
+  0, /*tp_cache*/
+  0, /*tp_subclasses*/
+  0, /*tp_weaklist*/
+  0, /*tp_del*/
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*tp_version_tag*/
+  #endif
+};
+
+static PyMethodDef __pyx_methods[] = {
+  {0, 0, 0, 0}
+};
+
+#if PY_MAJOR_VERSION >= 3
+static struct PyModuleDef __pyx_moduledef = {
+  #if PY_VERSION_HEX < 0x03020000
+    { PyObject_HEAD_INIT(NULL) NULL, 0, NULL },
+  #else
+    PyModuleDef_HEAD_INIT,
+  #endif
+    __Pyx_NAMESTR("h5o"),
+    __Pyx_DOCSTR(__pyx_k_8), /* m_doc */
+    -1, /* m_size */
+    __pyx_methods /* m_methods */,
+    NULL, /* m_reload */
+    NULL, /* m_traverse */
+    NULL, /* m_clear */
+    NULL /* m_free */
+};
+#endif
+
+static __Pyx_StringTabEntry __pyx_string_tab[] = {
+  {&__pyx_n_s_10, __pyx_k_10, sizeof(__pyx_k_10), 0, 0, 1, 1},
+  {&__pyx_n_s_11, __pyx_k_11, sizeof(__pyx_k_11), 0, 0, 1, 1},
+  {&__pyx_n_s_12, __pyx_k_12, sizeof(__pyx_k_12), 0, 0, 1, 1},
+  {&__pyx_n_s_13, __pyx_k_13, sizeof(__pyx_k_13), 0, 0, 1, 1},
+  {&__pyx_n_s_14, __pyx_k_14, sizeof(__pyx_k_14), 0, 0, 1, 1},
+  {&__pyx_kp_s_17, __pyx_k_17, sizeof(__pyx_k_17), 0, 0, 1, 0},
+  {&__pyx_n_s_18, __pyx_k_18, sizeof(__pyx_k_18), 0, 0, 1, 1},
+  {&__pyx_kp_s_4, __pyx_k_4, sizeof(__pyx_k_4), 0, 0, 1, 0},
+  {&__pyx_n_s_9, __pyx_k_9, sizeof(__pyx_k_9), 0, 0, 1, 1},
+  {&__pyx_n_s__TYPE_DATASET, __pyx_k__TYPE_DATASET, sizeof(__pyx_k__TYPE_DATASET), 0, 0, 1, 1},
+  {&__pyx_n_s__TYPE_GROUP, __pyx_k__TYPE_GROUP, sizeof(__pyx_k__TYPE_GROUP), 0, 0, 1, 1},
+  {&__pyx_n_s__TYPE_NAMED_DATATYPE, __pyx_k__TYPE_NAMED_DATATYPE, sizeof(__pyx_k__TYPE_NAMED_DATATYPE), 0, 0, 1, 1},
+  {&__pyx_n_s__TypeError, __pyx_k__TypeError, sizeof(__pyx_k__TypeError), 0, 0, 1, 1},
+  {&__pyx_n_s____main__, __pyx_k____main__, sizeof(__pyx_k____main__), 0, 0, 1, 1},
+  {&__pyx_n_s____test__, __pyx_k____test__, sizeof(__pyx_k____test__), 0, 0, 1, 1},
+  {&__pyx_n_s__addr, __pyx_k__addr, sizeof(__pyx_k__addr), 0, 0, 1, 1},
+  {&__pyx_n_s__buf, __pyx_k__buf, sizeof(__pyx_k__buf), 0, 0, 1, 1},
+  {&__pyx_n_s__cfunc, __pyx_k__cfunc, sizeof(__pyx_k__cfunc), 0, 0, 1, 1},
+  {&__pyx_n_s__comment, __pyx_k__comment, sizeof(__pyx_k__comment), 0, 0, 1, 1},
+  {&__pyx_n_s__copy, __pyx_k__copy, sizeof(__pyx_k__copy), 0, 0, 1, 1},
+  {&__pyx_n_s__copypl, __pyx_k__copypl, sizeof(__pyx_k__copypl), 0, 0, 1, 1},
+  {&__pyx_n_s__dst_loc, __pyx_k__dst_loc, sizeof(__pyx_k__dst_loc), 0, 0, 1, 1},
+  {&__pyx_n_s__dst_name, __pyx_k__dst_name, sizeof(__pyx_k__dst_name), 0, 0, 1, 1},
+  {&__pyx_n_s__fileno, __pyx_k__fileno, sizeof(__pyx_k__fileno), 0, 0, 1, 1},
+  {&__pyx_n_s__free, __pyx_k__free, sizeof(__pyx_k__free), 0, 0, 1, 1},
+  {&__pyx_n_s__func, __pyx_k__func, sizeof(__pyx_k__func), 0, 0, 1, 1},
+  {&__pyx_n_s__get_comment, __pyx_k__get_comment, sizeof(__pyx_k__get_comment), 0, 0, 1, 1},
+  {&__pyx_n_s__get_info, __pyx_k__get_info, sizeof(__pyx_k__get_info), 0, 0, 1, 1},
+  {&__pyx_n_s__idx_type, __pyx_k__idx_type, sizeof(__pyx_k__idx_type), 0, 0, 1, 1},
+  {&__pyx_n_s__index, __pyx_k__index, sizeof(__pyx_k__index), 0, 0, 1, 1},
+  {&__pyx_n_s__index_type, __pyx_k__index_type, sizeof(__pyx_k__index_type), 0, 0, 1, 1},
+  {&__pyx_n_s__info, __pyx_k__info, sizeof(__pyx_k__info), 0, 0, 1, 1},
+  {&__pyx_n_s__lapl, __pyx_k__lapl, sizeof(__pyx_k__lapl), 0, 0, 1, 1},
+  {&__pyx_n_s__lcpl, __pyx_k__lcpl, sizeof(__pyx_k__lcpl), 0, 0, 1, 1},
+  {&__pyx_n_s__link, __pyx_k__link, sizeof(__pyx_k__link), 0, 0, 1, 1},
+  {&__pyx_n_s__loc, __pyx_k__loc, sizeof(__pyx_k__loc), 0, 0, 1, 1},
+  {&__pyx_n_s__mesg, __pyx_k__mesg, sizeof(__pyx_k__mesg), 0, 0, 1, 1},
+  {&__pyx_n_s__meta, __pyx_k__meta, sizeof(__pyx_k__meta), 0, 0, 1, 1},
+  {&__pyx_n_s__name, __pyx_k__name, sizeof(__pyx_k__name), 0, 0, 1, 1},
+  {&__pyx_n_s__nmesgs, __pyx_k__nmesgs, sizeof(__pyx_k__nmesgs), 0, 0, 1, 1},
+  {&__pyx_n_s__obj, __pyx_k__obj, sizeof(__pyx_k__obj), 0, 0, 1, 1},
+  {&__pyx_n_s__obj_name, __pyx_k__obj_name, sizeof(__pyx_k__obj_name), 0, 0, 1, 1},
+  {&__pyx_n_s__open, __pyx_k__open, sizeof(__pyx_k__open), 0, 0, 1, 1},
+  {&__pyx_n_s__order, __pyx_k__order, sizeof(__pyx_k__order), 0, 0, 1, 1},
+  {&__pyx_n_s__present, __pyx_k__present, sizeof(__pyx_k__present), 0, 0, 1, 1},
+  {&__pyx_n_s__pstring, __pyx_k__pstring, sizeof(__pyx_k__pstring), 0, 0, 1, 1},
+  {&__pyx_n_s__rc, __pyx_k__rc, sizeof(__pyx_k__rc), 0, 0, 1, 1},
+  {&__pyx_n_s__set_comment, __pyx_k__set_comment, sizeof(__pyx_k__set_comment), 0, 0, 1, 1},
+  {&__pyx_n_s__shared, __pyx_k__shared, sizeof(__pyx_k__shared), 0, 0, 1, 1},
+  {&__pyx_n_s__size, __pyx_k__size, sizeof(__pyx_k__size), 0, 0, 1, 1},
+  {&__pyx_n_s__src_loc, __pyx_k__src_loc, sizeof(__pyx_k__src_loc), 0, 0, 1, 1},
+  {&__pyx_n_s__src_name, __pyx_k__src_name, sizeof(__pyx_k__src_name), 0, 0, 1, 1},
+  {&__pyx_n_s__total, __pyx_k__total, sizeof(__pyx_k__total), 0, 0, 1, 1},
+  {&__pyx_n_s__type, __pyx_k__type, sizeof(__pyx_k__type), 0, 0, 1, 1},
+  {&__pyx_n_s__version, __pyx_k__version, sizeof(__pyx_k__version), 0, 0, 1, 1},
+  {&__pyx_n_s__visit, __pyx_k__visit, sizeof(__pyx_k__visit), 0, 0, 1, 1},
+  {0, 0, 0, 0, 0, 0, 0}
+};
+static int __Pyx_InitCachedBuiltins(void) {
+  __pyx_builtin_TypeError = __Pyx_GetName(__pyx_b, __pyx_n_s__TypeError); if (!__pyx_builtin_TypeError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 154; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  return 0;
+  __pyx_L1_error:;
+  return -1;
+}
+
+static int __Pyx_InitCachedConstants(void) {
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0);
+
+  /* "h5py/h5o.pyx":154
+ * 
+ *     if name != NULL and index >= 0:
+ *         raise TypeError("At most one of name or index may be specified")             # <<<<<<<<<<<<<<
+ *     elif name != NULL and index < 0:
+ *         H5Oget_info_by_name(loc.id, name, &info.infostruct, pdefault(lapl))
+ */
+  __pyx_k_tuple_5 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_4)); if (unlikely(!__pyx_k_tuple_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 154; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_5);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_5));
+
+  /* "h5py/h5o.pyx":131
+ * 
+ * 
+ * def get_info(ObjectID loc not None, char* name=NULL, int index=-1, *,             # <<<<<<<<<<<<<<
+ *         char* obj_name='.', int index_type=H5_INDEX_NAME, int order=H5_ITER_NATIVE,
+ *         PropID lapl=None):
+ */
+  __pyx_k_tuple_15 = PyTuple_Pack(8, ((PyObject *)__pyx_n_s__loc), ((PyObject *)__pyx_n_s__name), ((PyObject *)__pyx_n_s__index), ((PyObject *)__pyx_n_s__obj_name), ((PyObject *)__pyx_n_s__index_type), ((PyObject *)__pyx_n_s__order), ((PyObject *)__pyx_n_s__lapl), ((PyObject *)__pyx_n_s__info)); if (unlikely(!__pyx_k_tuple_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_15);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_15));
+  __pyx_k_codeobj_16 = (PyObject*)__Pyx_PyCode_New(7, 4, 8, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_15, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_17, __pyx_n_s__get_info, 131, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5o.pyx":168
+ * 
+ * 
+ * def open(ObjectID loc not None, char* name, PropID lapl=None):             # <<<<<<<<<<<<<<
+ *     """(ObjectID loc, STRING name, PropID lapl=None) => ObjectID
+ * 
+ */
+  __pyx_k_tuple_19 = PyTuple_Pack(3, ((PyObject *)__pyx_n_s__loc), ((PyObject *)__pyx_n_s__name), ((PyObject *)__pyx_n_s__lapl)); if (unlikely(!__pyx_k_tuple_19)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 168; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_19);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_19));
+  __pyx_k_codeobj_20 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_19, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_17, __pyx_n_s__open, 168, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_20)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 168; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5o.pyx":176
+ * 
+ * 
+ * def link(ObjectID obj not None, GroupID loc not None, char* name,             # <<<<<<<<<<<<<<
+ *     PropID lcpl=None, PropID lapl=None):
+ *     """(ObjectID obj, GroupID loc, STRING name, PropID lcpl=None,
+ */
+  __pyx_k_tuple_21 = PyTuple_Pack(5, ((PyObject *)__pyx_n_s__obj), ((PyObject *)__pyx_n_s__loc), ((PyObject *)__pyx_n_s__name), ((PyObject *)__pyx_n_s__lcpl), ((PyObject *)__pyx_n_s__lapl)); if (unlikely(!__pyx_k_tuple_21)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 176; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_21);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_21));
+  __pyx_k_codeobj_22 = (PyObject*)__Pyx_PyCode_New(5, 0, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_17, __pyx_n_s__link, 176, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_22)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 176; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5o.pyx":187
+ * 
+ * 
+ * def copy(ObjectID src_loc not None, char* src_name, GroupID dst_loc not None,             # <<<<<<<<<<<<<<
+ *     char* dst_name, PropID copypl=None, PropID lcpl=None):
+ *     """(ObjectID src_loc, STRING src_name, GroupID dst_loc, STRING dst_name,
+ */
+  __pyx_k_tuple_23 = PyTuple_Pack(6, ((PyObject *)__pyx_n_s__src_loc), ((PyObject *)__pyx_n_s__src_name), ((PyObject *)__pyx_n_s__dst_loc), ((PyObject *)__pyx_n_s__dst_name), ((PyObject *)__pyx_n_s__copypl), ((PyObject *)__pyx_n_s__lcpl)); if (unlikely(!__pyx_k_tuple_23)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_23);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_23));
+  __pyx_k_codeobj_24 = (PyObject*)__Pyx_PyCode_New(6, 0, 6, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_23, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_17, __pyx_n_s__copy, 187, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_24)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5o.pyx":202
+ * 
+ * 
+ * def set_comment(ObjectID loc not None, char* comment, *, char* obj_name=".",             # <<<<<<<<<<<<<<
+ *     PropID lapl=None):
+ *     """(ObjectID loc, STRING comment, **kwds)
+ */
+  __pyx_k_tuple_25 = PyTuple_Pack(4, ((PyObject *)__pyx_n_s__loc), ((PyObject *)__pyx_n_s__comment), ((PyObject *)__pyx_n_s__obj_name), ((PyObject *)__pyx_n_s__lapl)); if (unlikely(!__pyx_k_tuple_25)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_25);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_25));
+  __pyx_k_codeobj_26 = (PyObject*)__Pyx_PyCode_New(4, 2, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_25, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_17, __pyx_n_s__set_comment, 202, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_26)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5o.pyx":218
+ * 
+ * 
+ * def get_comment(ObjectID loc not None, char* comment, *, char* obj_name=".",             # <<<<<<<<<<<<<<
+ *     PropID lapl=None):
+ *     """(ObjectID loc, STRING comment, **kwds)
+ */
+  __pyx_k_tuple_27 = PyTuple_Pack(7, ((PyObject *)__pyx_n_s__loc), ((PyObject *)__pyx_n_s__comment), ((PyObject *)__pyx_n_s__obj_name), ((PyObject *)__pyx_n_s__lapl), ((PyObject *)__pyx_n_s__size), ((PyObject *)__pyx_n_s__buf), ((PyObject *)__pyx_n_s__pstring)); if (unlikely(!__pyx_k_tuple_27)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 218; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_27);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_27));
+  __pyx_k_codeobj_28 = (PyObject*)__Pyx_PyCode_New(4, 2, 7, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_27, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_17, __pyx_n_s__get_comment, 218, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_28)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 218; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5o.pyx":288
+ * 
+ * 
+ * def visit(ObjectID loc not None, object func, *,             # <<<<<<<<<<<<<<
+ *           int idx_type=H5_INDEX_NAME, int order=H5_ITER_NATIVE,
+ *           char* obj_name=".", PropID lapl=None, bint info=0):
+ */
+  __pyx_k_tuple_29 = PyTuple_Pack(9, ((PyObject *)__pyx_n_s__loc), ((PyObject *)__pyx_n_s__func), ((PyObject *)__pyx_n_s__idx_type), ((PyObject *)__pyx_n_s__order), ((PyObject *)__pyx_n_s__obj_name), ((PyObject *)__pyx_n_s__lapl), ((PyObject *)__pyx_n_s__info), ((PyObject *)__pyx_n_s__visit), ((PyObject *)__pyx_n_s__cfunc)); if (unlikely(!__pyx_k_tuple_29)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_29);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_29));
+  __pyx_k_codeobj_30 = (PyObject*)__Pyx_PyCode_New(7, 5, 9, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_29, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_17, __pyx_n_s__visit, 288, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_30)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_RefNannyFinishContext();
+  return 0;
+  __pyx_L1_error:;
+  __Pyx_RefNannyFinishContext();
+  return -1;
+}
+
+static int __Pyx_InitGlobals(void) {
+  if (__Pyx_InitStrings(__pyx_string_tab) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  return 0;
+  __pyx_L1_error:;
+  return -1;
+}
+
+#if PY_MAJOR_VERSION < 3
+PyMODINIT_FUNC inith5o(void); /*proto*/
+PyMODINIT_FUNC inith5o(void)
+#else
+PyMODINIT_FUNC PyInit_h5o(void); /*proto*/
+PyMODINIT_FUNC PyInit_h5o(void)
+#endif
+{
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  __Pyx_RefNannyDeclarations
+  #if CYTHON_REFNANNY
+  __Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny");
+  if (!__Pyx_RefNanny) {
+      PyErr_Clear();
+      __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny");
+      if (!__Pyx_RefNanny)
+          Py_FatalError("failed to import 'refnanny' module");
+  }
+  #endif
+  __Pyx_RefNannySetupContext("PyMODINIT_FUNC PyInit_h5o(void)", 0);
+  if ( __Pyx_check_binary_version() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #ifdef __Pyx_CyFunction_USED
+  if (__Pyx_CyFunction_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #endif
+  #ifdef __Pyx_FusedFunction_USED
+  if (__pyx_FusedFunction_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #endif
+  #ifdef __Pyx_Generator_USED
+  if (__pyx_Generator_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #endif
+  /*--- Library function declarations ---*/
+  /*--- Threads initialization code ---*/
+  #if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS
+  #ifdef WITH_THREAD /* Python build with threading support? */
+  PyEval_InitThreads();
+  #endif
+  #endif
+  /*--- Module creation code ---*/
+  #if PY_MAJOR_VERSION < 3
+  __pyx_m = Py_InitModule4(__Pyx_NAMESTR("h5o"), __pyx_methods, __Pyx_DOCSTR(__pyx_k_8), 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m);
+  #else
+  __pyx_m = PyModule_Create(&__pyx_moduledef);
+  #endif
+  if (unlikely(!__pyx_m)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #if PY_MAJOR_VERSION >= 3
+  {
+    PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (!PyDict_GetItemString(modules, "h5py.h5o")) {
+      if (unlikely(PyDict_SetItemString(modules, "h5py.h5o", __pyx_m) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    }
+  }
+  #endif
+  __pyx_b = PyImport_AddModule(__Pyx_NAMESTR(__Pyx_BUILTIN_MODULE_NAME)); if (unlikely(!__pyx_b)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #if CYTHON_COMPILING_IN_PYPY
+  Py_INCREF(__pyx_b);
+  #endif
+  if (__Pyx_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  /*--- Initialize various global constants etc. ---*/
+  if (unlikely(__Pyx_InitGlobals() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__pyx_module_is_main_h5py__h5o) {
+    if (__Pyx_SetAttrString(__pyx_m, "__name__", __pyx_n_s____main__) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  }
+  /*--- Builtin init code ---*/
+  if (unlikely(__Pyx_InitCachedBuiltins() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  /*--- Constants init code ---*/
+  if (unlikely(__Pyx_InitCachedConstants() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  /*--- Global init code ---*/
+  /*--- Variable export code ---*/
+  /*--- Function export code ---*/
+  /*--- Type init code ---*/
+  if (PyType_Ready(&__pyx_type_4h5py_3h5o__ObjInfoBase) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetAttrString(__pyx_m, "_ObjInfoBase", (PyObject *)&__pyx_type_4h5py_3h5o__ObjInfoBase) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5o__ObjInfoBase = &__pyx_type_4h5py_3h5o__ObjInfoBase;
+  __pyx_type_4h5py_3h5o__OHdrMesg.tp_base = __pyx_ptype_4h5py_3h5o__ObjInfoBase;
+  if (PyType_Ready(&__pyx_type_4h5py_3h5o__OHdrMesg) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetAttrString(__pyx_m, "_OHdrMesg", (PyObject *)&__pyx_type_4h5py_3h5o__OHdrMesg) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5o__OHdrMesg = &__pyx_type_4h5py_3h5o__OHdrMesg;
+  __pyx_type_4h5py_3h5o__OHdrSpace.tp_base = __pyx_ptype_4h5py_3h5o__ObjInfoBase;
+  if (PyType_Ready(&__pyx_type_4h5py_3h5o__OHdrSpace) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetAttrString(__pyx_m, "_OHdrSpace", (PyObject *)&__pyx_type_4h5py_3h5o__OHdrSpace) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5o__OHdrSpace = &__pyx_type_4h5py_3h5o__OHdrSpace;
+  __pyx_type_4h5py_3h5o__OHdr.tp_base = __pyx_ptype_4h5py_3h5o__ObjInfoBase;
+  if (PyType_Ready(&__pyx_type_4h5py_3h5o__OHdr) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetAttrString(__pyx_m, "_OHdr", (PyObject *)&__pyx_type_4h5py_3h5o__OHdr) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5o__OHdr = &__pyx_type_4h5py_3h5o__OHdr;
+  __pyx_type_4h5py_3h5o__ObjInfo.tp_base = __pyx_ptype_4h5py_3h5o__ObjInfoBase;
+  if (PyType_Ready(&__pyx_type_4h5py_3h5o__ObjInfo) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetAttrString(__pyx_m, "_ObjInfo", (PyObject *)&__pyx_type_4h5py_3h5o__ObjInfo) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5o__ObjInfo = &__pyx_type_4h5py_3h5o__ObjInfo;
+  __pyx_type_4h5py_3h5o_ObjInfo.tp_base = __pyx_ptype_4h5py_3h5o__ObjInfo;
+  if (PyType_Ready(&__pyx_type_4h5py_3h5o_ObjInfo) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetAttrString(__pyx_m, "ObjInfo", (PyObject *)&__pyx_type_4h5py_3h5o_ObjInfo) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5o_ObjInfo = &__pyx_type_4h5py_3h5o_ObjInfo;
+  if (PyType_Ready(&__pyx_type_4h5py_3h5o__ObjectVisitor) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 245; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetAttrString(__pyx_m, "_ObjectVisitor", (PyObject *)&__pyx_type_4h5py_3h5o__ObjectVisitor) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 245; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5o__ObjectVisitor = &__pyx_type_4h5py_3h5o__ObjectVisitor;
+  /*--- Type import code ---*/
+  __pyx_ptype_4h5py_8_objects_ObjectID = __Pyx_ImportType("h5py._objects", "ObjectID", sizeof(struct __pyx_obj_4h5py_8_objects_ObjectID), 1); if (unlikely(!__pyx_ptype_4h5py_8_objects_ObjectID)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5g_GroupID = __Pyx_ImportType("h5py.h5g", "GroupID", sizeof(struct __pyx_obj_4h5py_3h5g_GroupID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5g_GroupID)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5p_PropID = __Pyx_ImportType("h5py.h5p", "PropID", sizeof(struct __pyx_obj_4h5py_3h5p_PropID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5p_PropID)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5p_PropClassID = __Pyx_ImportType("h5py.h5p", "PropClassID", sizeof(struct __pyx_obj_4h5py_3h5p_PropClassID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5p_PropClassID)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5p_PropInstanceID = __Pyx_ImportType("h5py.h5p", "PropInstanceID", sizeof(struct __pyx_obj_4h5py_3h5p_PropInstanceID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5p_PropInstanceID)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5p_PropCreateID = __Pyx_ImportType("h5py.h5p", "PropCreateID", sizeof(struct __pyx_obj_4h5py_3h5p_PropCreateID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5p_PropCreateID)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5p_PropCopyID = __Pyx_ImportType("h5py.h5p", "PropCopyID", sizeof(struct __pyx_obj_4h5py_3h5p_PropCopyID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5p_PropCopyID)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5p_PropOCID = __Pyx_ImportType("h5py.h5p", "PropOCID", sizeof(struct __pyx_obj_4h5py_3h5p_PropOCID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5p_PropOCID)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5p_PropDCID = __Pyx_ImportType("h5py.h5p", "PropDCID", sizeof(struct __pyx_obj_4h5py_3h5p_PropDCID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5p_PropDCID)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5p_PropFCID = __Pyx_ImportType("h5py.h5p", "PropFCID", sizeof(struct __pyx_obj_4h5py_3h5p_PropFCID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5p_PropFCID)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5p_PropFAID = __Pyx_ImportType("h5py.h5p", "PropFAID", sizeof(struct __pyx_obj_4h5py_3h5p_PropFAID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5p_PropFAID)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5p_PropDXID = __Pyx_ImportType("h5py.h5p", "PropDXID", sizeof(struct __pyx_obj_4h5py_3h5p_PropDXID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5p_PropDXID)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5p_PropLCID = __Pyx_ImportType("h5py.h5p", "PropLCID", sizeof(struct __pyx_obj_4h5py_3h5p_PropLCID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5p_PropLCID)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5p_PropLAID = __Pyx_ImportType("h5py.h5p", "PropLAID", sizeof(struct __pyx_obj_4h5py_3h5p_PropLAID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5p_PropLAID)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5p_PropGCID = __Pyx_ImportType("h5py.h5p", "PropGCID", sizeof(struct __pyx_obj_4h5py_3h5p_PropGCID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5p_PropGCID)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_5numpy_dtype = __Pyx_ImportType("numpy", "dtype", sizeof(PyArray_Descr), 0); if (unlikely(!__pyx_ptype_4h5py_5numpy_dtype)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_5numpy_ndarray = __Pyx_ImportType("numpy", "ndarray", sizeof(PyArrayObject), 0); if (unlikely(!__pyx_ptype_4h5py_5numpy_ndarray)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  /*--- Variable import code ---*/
+  /*--- Function import code ---*/
+  __pyx_t_1 = __Pyx_ImportModule("h5py.defs"); if (!__pyx_t_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Oopen", (void (**)(void))&__pyx_f_4h5py_4defs_H5Oopen, "hid_t (hid_t, char *, hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Oget_info", (void (**)(void))&__pyx_f_4h5py_4defs_H5Oget_info, "herr_t (hid_t, H5O_info_t *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Oget_info_by_name", (void (**)(void))&__pyx_f_4h5py_4defs_H5Oget_info_by_name, "herr_t (hid_t, char *, H5O_info_t *, hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Oget_info_by_idx", (void (**)(void))&__pyx_f_4h5py_4defs_H5Oget_info_by_idx, "herr_t (hid_t, char *, H5_index_t, H5_iter_order_t, hsize_t, H5O_info_t *, hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Olink", (void (**)(void))&__pyx_f_4h5py_4defs_H5Olink, "herr_t (hid_t, hid_t, char *, hid_t, hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Ocopy", (void (**)(void))&__pyx_f_4h5py_4defs_H5Ocopy, "herr_t (hid_t, char *, hid_t, char *, hid_t, hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Oset_comment_by_name", (void (**)(void))&__pyx_f_4h5py_4defs_H5Oset_comment_by_name, "herr_t (hid_t, char *, char *, hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Oget_comment_by_name", (void (**)(void))&__pyx_f_4h5py_4defs_H5Oget_comment_by_name, "Py_ssize_t (hid_t, char *, char *, size_t, hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Ovisit_by_name", (void (**)(void))&__pyx_f_4h5py_4defs_H5Ovisit_by_name, "herr_t (hid_t, char *, H5_index_t, H5_iter_order_t, H5O_iterate_t, void *, hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  Py_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_2 = __Pyx_ImportModule("h5py._objects"); if (!__pyx_t_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_2, "pdefault", (void (**)(void))&__pyx_f_4h5py_8_objects_pdefault, "hid_t (struct __pyx_obj_4h5py_8_objects_ObjectID *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  Py_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_3 = __Pyx_ImportModule("h5py.h5i"); if (!__pyx_t_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_3, "wrap_identifier", (void (**)(void))&__pyx_f_4h5py_3h5i_wrap_identifier, "struct __pyx_obj_4h5py_8_objects_ObjectID *(hid_t, int __pyx_skip_dispatch)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  Py_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_t_4 = __Pyx_ImportModule("h5py.utils"); if (!__pyx_t_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_4, "emalloc", (void (**)(void))&__pyx_f_4h5py_5utils_emalloc, "void *(size_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_4, "efree", (void (**)(void))&__pyx_f_4h5py_5utils_efree, "void (void *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  Py_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  /*--- Execution code ---*/
+
+  /* "h5py/h5o.pyx":23
+ * # === Public constants ========================================================
+ * 
+ * TYPE_GROUP = H5O_TYPE_GROUP             # <<<<<<<<<<<<<<
+ * TYPE_DATASET = H5O_TYPE_DATASET
+ * TYPE_NAMED_DATATYPE = H5O_TYPE_NAMED_DATATYPE
+ */
+  __pyx_t_5 = PyInt_FromLong(H5O_TYPE_GROUP); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__TYPE_GROUP, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+  /* "h5py/h5o.pyx":24
+ * 
+ * TYPE_GROUP = H5O_TYPE_GROUP
+ * TYPE_DATASET = H5O_TYPE_DATASET             # <<<<<<<<<<<<<<
+ * TYPE_NAMED_DATATYPE = H5O_TYPE_NAMED_DATATYPE
+ * 
+ */
+  __pyx_t_5 = PyInt_FromLong(H5O_TYPE_DATASET); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__TYPE_DATASET, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+  /* "h5py/h5o.pyx":25
+ * TYPE_GROUP = H5O_TYPE_GROUP
+ * TYPE_DATASET = H5O_TYPE_DATASET
+ * TYPE_NAMED_DATATYPE = H5O_TYPE_NAMED_DATATYPE             # <<<<<<<<<<<<<<
+ * 
+ * COPY_SHALLOW_HIERARCHY_FLAG = H5O_COPY_SHALLOW_HIERARCHY_FLAG
+ */
+  __pyx_t_5 = PyInt_FromLong(H5O_TYPE_NAMED_DATATYPE); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__TYPE_NAMED_DATATYPE, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+  /* "h5py/h5o.pyx":27
+ * TYPE_NAMED_DATATYPE = H5O_TYPE_NAMED_DATATYPE
+ * 
+ * COPY_SHALLOW_HIERARCHY_FLAG = H5O_COPY_SHALLOW_HIERARCHY_FLAG             # <<<<<<<<<<<<<<
+ * COPY_EXPAND_SOFT_LINK_FLAG  = H5O_COPY_EXPAND_SOFT_LINK_FLAG
+ * COPY_EXPAND_EXT_LINK_FLAG   = H5O_COPY_EXPAND_EXT_LINK_FLAG
+ */
+  __pyx_t_5 = PyLong_FromUnsignedLong(H5O_COPY_SHALLOW_HIERARCHY_FLAG); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_9, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+  /* "h5py/h5o.pyx":28
+ * 
+ * COPY_SHALLOW_HIERARCHY_FLAG = H5O_COPY_SHALLOW_HIERARCHY_FLAG
+ * COPY_EXPAND_SOFT_LINK_FLAG  = H5O_COPY_EXPAND_SOFT_LINK_FLAG             # <<<<<<<<<<<<<<
+ * COPY_EXPAND_EXT_LINK_FLAG   = H5O_COPY_EXPAND_EXT_LINK_FLAG
+ * COPY_EXPAND_REFERENCE_FLAG  = H5O_COPY_EXPAND_REFERENCE_FLAG
+ */
+  __pyx_t_5 = PyLong_FromUnsignedLong(H5O_COPY_EXPAND_SOFT_LINK_FLAG); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_10, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+  /* "h5py/h5o.pyx":29
+ * COPY_SHALLOW_HIERARCHY_FLAG = H5O_COPY_SHALLOW_HIERARCHY_FLAG
+ * COPY_EXPAND_SOFT_LINK_FLAG  = H5O_COPY_EXPAND_SOFT_LINK_FLAG
+ * COPY_EXPAND_EXT_LINK_FLAG   = H5O_COPY_EXPAND_EXT_LINK_FLAG             # <<<<<<<<<<<<<<
+ * COPY_EXPAND_REFERENCE_FLAG  = H5O_COPY_EXPAND_REFERENCE_FLAG
+ * COPY_WITHOUT_ATTR_FLAG      = H5O_COPY_WITHOUT_ATTR_FLAG
+ */
+  __pyx_t_5 = PyLong_FromUnsignedLong(H5O_COPY_EXPAND_EXT_LINK_FLAG); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_11, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+  /* "h5py/h5o.pyx":30
+ * COPY_EXPAND_SOFT_LINK_FLAG  = H5O_COPY_EXPAND_SOFT_LINK_FLAG
+ * COPY_EXPAND_EXT_LINK_FLAG   = H5O_COPY_EXPAND_EXT_LINK_FLAG
+ * COPY_EXPAND_REFERENCE_FLAG  = H5O_COPY_EXPAND_REFERENCE_FLAG             # <<<<<<<<<<<<<<
+ * COPY_WITHOUT_ATTR_FLAG      = H5O_COPY_WITHOUT_ATTR_FLAG
+ * COPY_PRESERVE_NULL_FLAG     = H5O_COPY_PRESERVE_NULL_FLAG
+ */
+  __pyx_t_5 = PyLong_FromUnsignedLong(H5O_COPY_EXPAND_REFERENCE_FLAG); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_12, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+  /* "h5py/h5o.pyx":31
+ * COPY_EXPAND_EXT_LINK_FLAG   = H5O_COPY_EXPAND_EXT_LINK_FLAG
+ * COPY_EXPAND_REFERENCE_FLAG  = H5O_COPY_EXPAND_REFERENCE_FLAG
+ * COPY_WITHOUT_ATTR_FLAG      = H5O_COPY_WITHOUT_ATTR_FLAG             # <<<<<<<<<<<<<<
+ * COPY_PRESERVE_NULL_FLAG     = H5O_COPY_PRESERVE_NULL_FLAG
+ * 
+ */
+  __pyx_t_5 = PyLong_FromUnsignedLong(H5O_COPY_WITHOUT_ATTR_FLAG); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_13, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+  /* "h5py/h5o.pyx":32
+ * COPY_EXPAND_REFERENCE_FLAG  = H5O_COPY_EXPAND_REFERENCE_FLAG
+ * COPY_WITHOUT_ATTR_FLAG      = H5O_COPY_WITHOUT_ATTR_FLAG
+ * COPY_PRESERVE_NULL_FLAG     = H5O_COPY_PRESERVE_NULL_FLAG             # <<<<<<<<<<<<<<
+ * 
+ * # === Giant H5O_info_t structure ==============================================
+ */
+  __pyx_t_5 = PyLong_FromUnsignedLong(H5O_COPY_PRESERVE_NULL_FLAG); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_14, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+  /* "h5py/h5o.pyx":132
+ * 
+ * def get_info(ObjectID loc not None, char* name=NULL, int index=-1, *,
+ *         char* obj_name='.', int index_type=H5_INDEX_NAME, int order=H5_ITER_NATIVE,             # <<<<<<<<<<<<<<
+ *         PropID lapl=None):
+ *     """(ObjectID loc, STRING name=, INT index=, **kwds) => ObjInfo
+ */
+  __pyx_k_2 = H5_INDEX_NAME;
+  __pyx_k_3 = H5_ITER_NATIVE;
+
+  /* "h5py/h5o.pyx":131
+ * 
+ * 
+ * def get_info(ObjectID loc not None, char* name=NULL, int index=-1, *,             # <<<<<<<<<<<<<<
+ *         char* obj_name='.', int index_type=H5_INDEX_NAME, int order=H5_ITER_NATIVE,
+ *         PropID lapl=None):
+ */
+  __pyx_t_5 = PyCFunction_NewEx(&__pyx_mdef_4h5py_3h5o_1get_info, NULL, __pyx_n_s_18); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__get_info, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+  /* "h5py/h5o.pyx":168
+ * 
+ * 
+ * def open(ObjectID loc not None, char* name, PropID lapl=None):             # <<<<<<<<<<<<<<
+ *     """(ObjectID loc, STRING name, PropID lapl=None) => ObjectID
+ * 
+ */
+  __pyx_t_5 = PyCFunction_NewEx(&__pyx_mdef_4h5py_3h5o_3open, NULL, __pyx_n_s_18); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 168; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__open, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 168; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+  /* "h5py/h5o.pyx":176
+ * 
+ * 
+ * def link(ObjectID obj not None, GroupID loc not None, char* name,             # <<<<<<<<<<<<<<
+ *     PropID lcpl=None, PropID lapl=None):
+ *     """(ObjectID obj, GroupID loc, STRING name, PropID lcpl=None,
+ */
+  __pyx_t_5 = PyCFunction_NewEx(&__pyx_mdef_4h5py_3h5o_5link, NULL, __pyx_n_s_18); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 176; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__link, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 176; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+  /* "h5py/h5o.pyx":187
+ * 
+ * 
+ * def copy(ObjectID src_loc not None, char* src_name, GroupID dst_loc not None,             # <<<<<<<<<<<<<<
+ *     char* dst_name, PropID copypl=None, PropID lcpl=None):
+ *     """(ObjectID src_loc, STRING src_name, GroupID dst_loc, STRING dst_name,
+ */
+  __pyx_t_5 = PyCFunction_NewEx(&__pyx_mdef_4h5py_3h5o_7copy, NULL, __pyx_n_s_18); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__copy, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+  /* "h5py/h5o.pyx":202
+ * 
+ * 
+ * def set_comment(ObjectID loc not None, char* comment, *, char* obj_name=".",             # <<<<<<<<<<<<<<
+ *     PropID lapl=None):
+ *     """(ObjectID loc, STRING comment, **kwds)
+ */
+  __pyx_t_5 = PyCFunction_NewEx(&__pyx_mdef_4h5py_3h5o_9set_comment, NULL, __pyx_n_s_18); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__set_comment, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+  /* "h5py/h5o.pyx":218
+ * 
+ * 
+ * def get_comment(ObjectID loc not None, char* comment, *, char* obj_name=".",             # <<<<<<<<<<<<<<
+ *     PropID lapl=None):
+ *     """(ObjectID loc, STRING comment, **kwds)
+ */
+  __pyx_t_5 = PyCFunction_NewEx(&__pyx_mdef_4h5py_3h5o_11get_comment, NULL, __pyx_n_s_18); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 218; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__get_comment, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 218; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+  /* "h5py/h5o.pyx":289
+ * 
+ * def visit(ObjectID loc not None, object func, *,
+ *           int idx_type=H5_INDEX_NAME, int order=H5_ITER_NATIVE,             # <<<<<<<<<<<<<<
+ *           char* obj_name=".", PropID lapl=None, bint info=0):
+ *     """(ObjectID loc, CALLABLE func, **kwds) => <Return value from func>
+ */
+  __pyx_k_6 = H5_INDEX_NAME;
+  __pyx_k_7 = H5_ITER_NATIVE;
+
+  /* "h5py/h5o.pyx":288
+ * 
+ * 
+ * def visit(ObjectID loc not None, object func, *,             # <<<<<<<<<<<<<<
+ *           int idx_type=H5_INDEX_NAME, int order=H5_ITER_NATIVE,
+ *           char* obj_name=".", PropID lapl=None, bint info=0):
+ */
+  __pyx_t_5 = PyCFunction_NewEx(&__pyx_mdef_4h5py_3h5o_13visit, NULL, __pyx_n_s_18); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__visit, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+  /* "h5py/h5o.pyx":1
+ * # This file is part of h5py, a Python interface to the HDF5 library.             # <<<<<<<<<<<<<<
+ * #
+ * # http://www.h5py.org
+ */
+  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(((PyObject *)__pyx_t_5));
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s____test__, ((PyObject *)__pyx_t_5)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  if (__pyx_m) {
+    __Pyx_AddTraceback("init h5py.h5o", __pyx_clineno, __pyx_lineno, __pyx_filename);
+    Py_DECREF(__pyx_m); __pyx_m = 0;
+  } else if (!PyErr_Occurred()) {
+    PyErr_SetString(PyExc_ImportError, "init h5py.h5o");
+  }
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  #if PY_MAJOR_VERSION < 3
+  return;
+  #else
+  return __pyx_m;
+  #endif
+}
+
+/* Runtime support code */
+#if CYTHON_REFNANNY
+static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) {
+    PyObject *m = NULL, *p = NULL;
+    void *r = NULL;
+    m = PyImport_ImportModule((char *)modname);
+    if (!m) goto end;
+    p = PyObject_GetAttrString(m, (char *)"RefNannyAPI");
+    if (!p) goto end;
+    r = PyLong_AsVoidPtr(p);
+end:
+    Py_XDECREF(p);
+    Py_XDECREF(m);
+    return (__Pyx_RefNannyAPIStruct *)r;
+}
+#endif /* CYTHON_REFNANNY */
+
+static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name) {
+    PyObject *result;
+    result = PyObject_GetAttr(dict, name);
+    if (!result) {
+        if (dict != __pyx_b) {
+            PyErr_Clear();
+            result = PyObject_GetAttr(__pyx_b, name);
+        }
+        if (!result) {
+            PyErr_SetObject(PyExc_NameError, name);
+        }
+    }
+    return result;
+}
+
+static void __Pyx_RaiseArgtupleInvalid(
+    const char* func_name,
+    int exact,
+    Py_ssize_t num_min,
+    Py_ssize_t num_max,
+    Py_ssize_t num_found)
+{
+    Py_ssize_t num_expected;
+    const char *more_or_less;
+    if (num_found < num_min) {
+        num_expected = num_min;
+        more_or_less = "at least";
+    } else {
+        num_expected = num_max;
+        more_or_less = "at most";
+    }
+    if (exact) {
+        more_or_less = "exactly";
+    }
+    PyErr_Format(PyExc_TypeError,
+                 "%s() takes %s %" CYTHON_FORMAT_SSIZE_T "d positional argument%s (%" CYTHON_FORMAT_SSIZE_T "d given)",
+                 func_name, more_or_less, num_expected,
+                 (num_expected == 1) ? "" : "s", num_found);
+}
+
+static CYTHON_INLINE int __Pyx_CheckKeywordStrings(
+    PyObject *kwdict,
+    const char* function_name,
+    int kw_allowed)
+{
+    PyObject* key = 0;
+    Py_ssize_t pos = 0;
+#if CPYTHON_COMPILING_IN_PYPY
+    if (!kw_allowed && PyDict_Next(kwdict, &pos, &key, 0))
+        goto invalid_keyword;
+    return 1;
+#else
+    while (PyDict_Next(kwdict, &pos, &key, 0)) {
+        #if PY_MAJOR_VERSION < 3
+        if (unlikely(!PyString_CheckExact(key)) && unlikely(!PyString_Check(key)))
+        #endif
+            if (unlikely(!PyUnicode_Check(key)))
+                goto invalid_keyword_type;
+    }
+    if ((!kw_allowed) && unlikely(key))
+        goto invalid_keyword;
+    return 1;
+invalid_keyword_type:
+    PyErr_Format(PyExc_TypeError,
+        "%s() keywords must be strings", function_name);
+    return 0;
+#endif
+invalid_keyword:
+    PyErr_Format(PyExc_TypeError,
+    #if PY_MAJOR_VERSION < 3
+        "%s() got an unexpected keyword argument '%s'",
+        function_name, PyString_AsString(key));
+    #else
+        "%s() got an unexpected keyword argument '%U'",
+        function_name, key);
+    #endif
+    return 0;
+}
+
+static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) {
+    if (unlikely(!type)) {
+        PyErr_Format(PyExc_SystemError, "Missing type object");
+        return 0;
+    }
+    if (likely(PyObject_TypeCheck(obj, type)))
+        return 1;
+    PyErr_Format(PyExc_TypeError, "Cannot convert %.200s to %.200s",
+                 Py_TYPE(obj)->tp_name, type->tp_name);
+    return 0;
+}
+
+static void __Pyx_RaiseDoubleKeywordsError(
+    const char* func_name,
+    PyObject* kw_name)
+{
+    PyErr_Format(PyExc_TypeError,
+        #if PY_MAJOR_VERSION >= 3
+        "%s() got multiple values for keyword argument '%U'", func_name, kw_name);
+        #else
+        "%s() got multiple values for keyword argument '%s'", func_name,
+        PyString_AsString(kw_name));
+        #endif
+}
+
+static int __Pyx_ParseOptionalKeywords(
+    PyObject *kwds,
+    PyObject **argnames[],
+    PyObject *kwds2,
+    PyObject *values[],
+    Py_ssize_t num_pos_args,
+    const char* function_name)
+{
+    PyObject *key = 0, *value = 0;
+    Py_ssize_t pos = 0;
+    PyObject*** name;
+    PyObject*** first_kw_arg = argnames + num_pos_args;
+    while (PyDict_Next(kwds, &pos, &key, &value)) {
+        name = first_kw_arg;
+        while (*name && (**name != key)) name++;
+        if (*name) {
+            values[name-argnames] = value;
+            continue;
+        }
+        name = first_kw_arg;
+        #if PY_MAJOR_VERSION < 3
+        if (likely(PyString_CheckExact(key)) || likely(PyString_Check(key))) {
+            while (*name) {
+                if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key))
+                        && _PyString_Eq(**name, key)) {
+                    values[name-argnames] = value;
+                    break;
+                }
+                name++;
+            }
+            if (*name) continue;
+            else {
+                PyObject*** argname = argnames;
+                while (argname != first_kw_arg) {
+                    if ((**argname == key) || (
+                            (CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**argname) == PyString_GET_SIZE(key))
+                             && _PyString_Eq(**argname, key))) {
+                        goto arg_passed_twice;
+                    }
+                    argname++;
+                }
+            }
+        } else
+        #endif
+        if (likely(PyUnicode_Check(key))) {
+            while (*name) {
+                int cmp = (**name == key) ? 0 :
+                #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
+                    (PyUnicode_GET_SIZE(**name) != PyUnicode_GET_SIZE(key)) ? 1 :
+                #endif
+                    PyUnicode_Compare(**name, key);
+                if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
+                if (cmp == 0) {
+                    values[name-argnames] = value;
+                    break;
+                }
+                name++;
+            }
+            if (*name) continue;
+            else {
+                PyObject*** argname = argnames;
+                while (argname != first_kw_arg) {
+                    int cmp = (**argname == key) ? 0 :
+                    #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
+                        (PyUnicode_GET_SIZE(**argname) != PyUnicode_GET_SIZE(key)) ? 1 :
+                    #endif
+                        PyUnicode_Compare(**argname, key);
+                    if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
+                    if (cmp == 0) goto arg_passed_twice;
+                    argname++;
+                }
+            }
+        } else
+            goto invalid_keyword_type;
+        if (kwds2) {
+            if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad;
+        } else {
+            goto invalid_keyword;
+        }
+    }
+    return 0;
+arg_passed_twice:
+    __Pyx_RaiseDoubleKeywordsError(function_name, key);
+    goto bad;
+invalid_keyword_type:
+    PyErr_Format(PyExc_TypeError,
+        "%s() keywords must be strings", function_name);
+    goto bad;
+invalid_keyword:
+    PyErr_Format(PyExc_TypeError,
+    #if PY_MAJOR_VERSION < 3
+        "%s() got an unexpected keyword argument '%s'",
+        function_name, PyString_AsString(key));
+    #else
+        "%s() got an unexpected keyword argument '%U'",
+        function_name, key);
+    #endif
+bad:
+    return -1;
+}
+
+static int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, int none_allowed,
+    const char *name, int exact)
+{
+    if (!type) {
+        PyErr_Format(PyExc_SystemError, "Missing type object");
+        return 0;
+    }
+    if (none_allowed && obj == Py_None) return 1;
+    else if (exact) {
+        if (Py_TYPE(obj) == type) return 1;
+    }
+    else {
+        if (PyObject_TypeCheck(obj, type)) return 1;
+    }
+    PyErr_Format(PyExc_TypeError,
+        "Argument '%s' has incorrect type (expected %s, got %s)",
+        name, type->tp_name, Py_TYPE(obj)->tp_name);
+    return 0;
+}
+
+static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb) {
+#if CYTHON_COMPILING_IN_CPYTHON
+    PyObject *tmp_type, *tmp_value, *tmp_tb;
+    PyThreadState *tstate = PyThreadState_GET();
+    tmp_type = tstate->curexc_type;
+    tmp_value = tstate->curexc_value;
+    tmp_tb = tstate->curexc_traceback;
+    tstate->curexc_type = type;
+    tstate->curexc_value = value;
+    tstate->curexc_traceback = tb;
+    Py_XDECREF(tmp_type);
+    Py_XDECREF(tmp_value);
+    Py_XDECREF(tmp_tb);
+#else
+    PyErr_Restore(type, value, tb);
+#endif
+}
+static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb) {
+#if CYTHON_COMPILING_IN_CPYTHON
+    PyThreadState *tstate = PyThreadState_GET();
+    *type = tstate->curexc_type;
+    *value = tstate->curexc_value;
+    *tb = tstate->curexc_traceback;
+    tstate->curexc_type = 0;
+    tstate->curexc_value = 0;
+    tstate->curexc_traceback = 0;
+#else
+    PyErr_Fetch(type, value, tb);
+#endif
+}
+
+#if PY_MAJOR_VERSION < 3
+static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb,
+                        CYTHON_UNUSED PyObject *cause) {
+    Py_XINCREF(type);
+    if (!value || value == Py_None)
+        value = NULL;
+    else
+        Py_INCREF(value);
+    if (!tb || tb == Py_None)
+        tb = NULL;
+    else {
+        Py_INCREF(tb);
+        if (!PyTraceBack_Check(tb)) {
+            PyErr_SetString(PyExc_TypeError,
+                "raise: arg 3 must be a traceback or None");
+            goto raise_error;
+        }
+    }
+    #if PY_VERSION_HEX < 0x02050000
+    if (PyClass_Check(type)) {
+    #else
+    if (PyType_Check(type)) {
+    #endif
+#if CYTHON_COMPILING_IN_PYPY
+        if (!value) {
+            Py_INCREF(Py_None);
+            value = Py_None;
+        }
+#endif
+        PyErr_NormalizeException(&type, &value, &tb);
+    } else {
+        if (value) {
+            PyErr_SetString(PyExc_TypeError,
+                "instance exception may not have a separate value");
+            goto raise_error;
+        }
+        value = type;
+        #if PY_VERSION_HEX < 0x02050000
+            if (PyInstance_Check(type)) {
+                type = (PyObject*) ((PyInstanceObject*)type)->in_class;
+                Py_INCREF(type);
+            }
+            else {
+                type = 0;
+                PyErr_SetString(PyExc_TypeError,
+                    "raise: exception must be an old-style class or instance");
+                goto raise_error;
+            }
+        #else
+            type = (PyObject*) Py_TYPE(type);
+            Py_INCREF(type);
+            if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) {
+                PyErr_SetString(PyExc_TypeError,
+                    "raise: exception class must be a subclass of BaseException");
+                goto raise_error;
+            }
+        #endif
+    }
+    __Pyx_ErrRestore(type, value, tb);
+    return;
+raise_error:
+    Py_XDECREF(value);
+    Py_XDECREF(type);
+    Py_XDECREF(tb);
+    return;
+}
+#else /* Python 3+ */
+static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) {
+    PyObject* owned_instance = NULL;
+    if (tb == Py_None) {
+        tb = 0;
+    } else if (tb && !PyTraceBack_Check(tb)) {
+        PyErr_SetString(PyExc_TypeError,
+            "raise: arg 3 must be a traceback or None");
+        goto bad;
+    }
+    if (value == Py_None)
+        value = 0;
+    if (PyExceptionInstance_Check(type)) {
+        if (value) {
+            PyErr_SetString(PyExc_TypeError,
+                "instance exception may not have a separate value");
+            goto bad;
+        }
+        value = type;
+        type = (PyObject*) Py_TYPE(value);
+    } else if (PyExceptionClass_Check(type)) {
+        PyObject *args;
+        if (!value)
+            args = PyTuple_New(0);
+        else if (PyTuple_Check(value)) {
+            Py_INCREF(value);
+            args = value;
+        }
+        else
+            args = PyTuple_Pack(1, value);
+        if (!args)
+            goto bad;
+        owned_instance = PyEval_CallObject(type, args);
+        Py_DECREF(args);
+        if (!owned_instance)
+            goto bad;
+        value = owned_instance;
+        if (!PyExceptionInstance_Check(value)) {
+            PyErr_Format(PyExc_TypeError,
+                         "calling %R should have returned an instance of "
+                         "BaseException, not %R",
+                         type, Py_TYPE(value));
+            goto bad;
+        }
+    } else {
+        PyErr_SetString(PyExc_TypeError,
+            "raise: exception class must be a subclass of BaseException");
+        goto bad;
+    }
+    if (cause && cause != Py_None) {
+        PyObject *fixed_cause;
+        if (PyExceptionClass_Check(cause)) {
+            fixed_cause = PyObject_CallObject(cause, NULL);
+            if (fixed_cause == NULL)
+                goto bad;
+        }
+        else if (PyExceptionInstance_Check(cause)) {
+            fixed_cause = cause;
+            Py_INCREF(fixed_cause);
+        }
+        else {
+            PyErr_SetString(PyExc_TypeError,
+                            "exception causes must derive from "
+                            "BaseException");
+            goto bad;
+        }
+        PyException_SetCause(value, fixed_cause);
+    }
+    PyErr_SetObject(type, value);
+    if (tb) {
+        PyThreadState *tstate = PyThreadState_GET();
+        PyObject* tmp_tb = tstate->curexc_traceback;
+        if (tb != tmp_tb) {
+            Py_INCREF(tb);
+            tstate->curexc_traceback = tb;
+            Py_XDECREF(tmp_tb);
+        }
+    }
+bad:
+    Py_XDECREF(owned_instance);
+    return;
+}
+#endif
+
+static int __Pyx_call_next_tp_traverse(PyObject* obj, visitproc v, void *a, traverseproc current_tp_traverse) {
+    PyTypeObject* type = Py_TYPE(obj);
+    while (type && type->tp_traverse != current_tp_traverse)
+        type = type->tp_base;
+    while (type && type->tp_traverse == current_tp_traverse)
+        type = type->tp_base;
+    if (type && type->tp_traverse)
+        return type->tp_traverse(obj, v, a);
+    return 0;
+}
+
+static void __Pyx_call_next_tp_clear(PyObject* obj, inquiry current_tp_clear) {
+    PyTypeObject* type = Py_TYPE(obj);
+    while (type && type->tp_clear != current_tp_clear)
+        type = type->tp_base;
+    while (type && type->tp_clear == current_tp_clear)
+        type = type->tp_base;
+    if (type && type->tp_clear)
+        type->tp_clear(obj);
+}
+
+static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_hsize_t(hsize_t val) {
+    const hsize_t neg_one = (hsize_t)-1, const_zero = (hsize_t)0;
+    const int is_unsigned = const_zero < neg_one;
+    if ((sizeof(hsize_t) == sizeof(char))  ||
+        (sizeof(hsize_t) == sizeof(short))) {
+        return PyInt_FromLong((long)val);
+    } else if ((sizeof(hsize_t) == sizeof(int)) ||
+               (sizeof(hsize_t) == sizeof(long))) {
+        if (is_unsigned)
+            return PyLong_FromUnsignedLong((unsigned long)val);
+        else
+            return PyInt_FromLong((long)val);
+    } else if (sizeof(hsize_t) == sizeof(PY_LONG_LONG)) {
+        if (is_unsigned)
+            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG)val);
+        else
+            return PyLong_FromLongLong((PY_LONG_LONG)val);
+    } else {
+        int one = 1; int little = (int)*(unsigned char *)&one;
+        unsigned char *bytes = (unsigned char *)&val;
+        return _PyLong_FromByteArray(bytes, sizeof(hsize_t),
+                                     little, !is_unsigned);
+    }
+}
+
+static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_haddr_t(haddr_t val) {
+    const haddr_t neg_one = (haddr_t)-1, const_zero = (haddr_t)0;
+    const int is_unsigned = const_zero < neg_one;
+    if ((sizeof(haddr_t) == sizeof(char))  ||
+        (sizeof(haddr_t) == sizeof(short))) {
+        return PyInt_FromLong((long)val);
+    } else if ((sizeof(haddr_t) == sizeof(int)) ||
+               (sizeof(haddr_t) == sizeof(long))) {
+        if (is_unsigned)
+            return PyLong_FromUnsignedLong((unsigned long)val);
+        else
+            return PyInt_FromLong((long)val);
+    } else if (sizeof(haddr_t) == sizeof(PY_LONG_LONG)) {
+        if (is_unsigned)
+            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG)val);
+        else
+            return PyLong_FromLongLong((PY_LONG_LONG)val);
+    } else {
+        int one = 1; int little = (int)*(unsigned char *)&one;
+        unsigned char *bytes = (unsigned char *)&val;
+        return _PyLong_FromByteArray(bytes, sizeof(haddr_t),
+                                     little, !is_unsigned);
+    }
+}
+
+static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_hid_t(hid_t val) {
+    const hid_t neg_one = (hid_t)-1, const_zero = (hid_t)0;
+    const int is_unsigned = const_zero < neg_one;
+    if ((sizeof(hid_t) == sizeof(char))  ||
+        (sizeof(hid_t) == sizeof(short))) {
+        return PyInt_FromLong((long)val);
+    } else if ((sizeof(hid_t) == sizeof(int)) ||
+               (sizeof(hid_t) == sizeof(long))) {
+        if (is_unsigned)
+            return PyLong_FromUnsignedLong((unsigned long)val);
+        else
+            return PyInt_FromLong((long)val);
+    } else if (sizeof(hid_t) == sizeof(PY_LONG_LONG)) {
+        if (is_unsigned)
+            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG)val);
+        else
+            return PyLong_FromLongLong((PY_LONG_LONG)val);
+    } else {
+        int one = 1; int little = (int)*(unsigned char *)&one;
+        unsigned char *bytes = (unsigned char *)&val;
+        return _PyLong_FromByteArray(bytes, sizeof(hid_t),
+                                     little, !is_unsigned);
+    }
+}
+
+static CYTHON_INLINE unsigned char __Pyx_PyInt_AsUnsignedChar(PyObject* x) {
+    const unsigned char neg_one = (unsigned char)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(unsigned char) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(unsigned char)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to unsigned char" :
+                    "value too large to convert to unsigned char");
+            }
+            return (unsigned char)-1;
+        }
+        return (unsigned char)val;
+    }
+    return (unsigned char)__Pyx_PyInt_AsUnsignedLong(x);
+}
+
+static CYTHON_INLINE unsigned short __Pyx_PyInt_AsUnsignedShort(PyObject* x) {
+    const unsigned short neg_one = (unsigned short)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(unsigned short) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(unsigned short)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to unsigned short" :
+                    "value too large to convert to unsigned short");
+            }
+            return (unsigned short)-1;
+        }
+        return (unsigned short)val;
+    }
+    return (unsigned short)__Pyx_PyInt_AsUnsignedLong(x);
+}
+
+static CYTHON_INLINE unsigned int __Pyx_PyInt_AsUnsignedInt(PyObject* x) {
+    const unsigned int neg_one = (unsigned int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(unsigned int) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(unsigned int)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to unsigned int" :
+                    "value too large to convert to unsigned int");
+            }
+            return (unsigned int)-1;
+        }
+        return (unsigned int)val;
+    }
+    return (unsigned int)__Pyx_PyInt_AsUnsignedLong(x);
+}
+
+static CYTHON_INLINE char __Pyx_PyInt_AsChar(PyObject* x) {
+    const char neg_one = (char)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(char) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(char)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to char" :
+                    "value too large to convert to char");
+            }
+            return (char)-1;
+        }
+        return (char)val;
+    }
+    return (char)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE short __Pyx_PyInt_AsShort(PyObject* x) {
+    const short neg_one = (short)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(short) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(short)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to short" :
+                    "value too large to convert to short");
+            }
+            return (short)-1;
+        }
+        return (short)val;
+    }
+    return (short)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE int __Pyx_PyInt_AsInt(PyObject* x) {
+    const int neg_one = (int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(int) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(int)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to int" :
+                    "value too large to convert to int");
+            }
+            return (int)-1;
+        }
+        return (int)val;
+    }
+    return (int)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE signed char __Pyx_PyInt_AsSignedChar(PyObject* x) {
+    const signed char neg_one = (signed char)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(signed char) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(signed char)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to signed char" :
+                    "value too large to convert to signed char");
+            }
+            return (signed char)-1;
+        }
+        return (signed char)val;
+    }
+    return (signed char)__Pyx_PyInt_AsSignedLong(x);
+}
+
+static CYTHON_INLINE signed short __Pyx_PyInt_AsSignedShort(PyObject* x) {
+    const signed short neg_one = (signed short)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(signed short) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(signed short)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to signed short" :
+                    "value too large to convert to signed short");
+            }
+            return (signed short)-1;
+        }
+        return (signed short)val;
+    }
+    return (signed short)__Pyx_PyInt_AsSignedLong(x);
+}
+
+static CYTHON_INLINE signed int __Pyx_PyInt_AsSignedInt(PyObject* x) {
+    const signed int neg_one = (signed int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(signed int) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(signed int)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to signed int" :
+                    "value too large to convert to signed int");
+            }
+            return (signed int)-1;
+        }
+        return (signed int)val;
+    }
+    return (signed int)__Pyx_PyInt_AsSignedLong(x);
+}
+
+static CYTHON_INLINE int __Pyx_PyInt_AsLongDouble(PyObject* x) {
+    const int neg_one = (int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(int) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(int)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to int" :
+                    "value too large to convert to int");
+            }
+            return (int)-1;
+        }
+        return (int)val;
+    }
+    return (int)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE unsigned long __Pyx_PyInt_AsUnsignedLong(PyObject* x) {
+    const unsigned long neg_one = (unsigned long)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to unsigned long");
+            return (unsigned long)-1;
+        }
+        return (unsigned long)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to unsigned long");
+                return (unsigned long)-1;
+            }
+            return (unsigned long)PyLong_AsUnsignedLong(x);
+        } else {
+            return (unsigned long)PyLong_AsLong(x);
+        }
+    } else {
+        unsigned long val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (unsigned long)-1;
+        val = __Pyx_PyInt_AsUnsignedLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE unsigned PY_LONG_LONG __Pyx_PyInt_AsUnsignedLongLong(PyObject* x) {
+    const unsigned PY_LONG_LONG neg_one = (unsigned PY_LONG_LONG)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to unsigned PY_LONG_LONG");
+            return (unsigned PY_LONG_LONG)-1;
+        }
+        return (unsigned PY_LONG_LONG)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to unsigned PY_LONG_LONG");
+                return (unsigned PY_LONG_LONG)-1;
+            }
+            return (unsigned PY_LONG_LONG)PyLong_AsUnsignedLongLong(x);
+        } else {
+            return (unsigned PY_LONG_LONG)PyLong_AsLongLong(x);
+        }
+    } else {
+        unsigned PY_LONG_LONG val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (unsigned PY_LONG_LONG)-1;
+        val = __Pyx_PyInt_AsUnsignedLongLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE long __Pyx_PyInt_AsLong(PyObject* x) {
+    const long neg_one = (long)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to long");
+            return (long)-1;
+        }
+        return (long)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to long");
+                return (long)-1;
+            }
+            return (long)PyLong_AsUnsignedLong(x);
+        } else {
+            return (long)PyLong_AsLong(x);
+        }
+    } else {
+        long val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (long)-1;
+        val = __Pyx_PyInt_AsLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE PY_LONG_LONG __Pyx_PyInt_AsLongLong(PyObject* x) {
+    const PY_LONG_LONG neg_one = (PY_LONG_LONG)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to PY_LONG_LONG");
+            return (PY_LONG_LONG)-1;
+        }
+        return (PY_LONG_LONG)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to PY_LONG_LONG");
+                return (PY_LONG_LONG)-1;
+            }
+            return (PY_LONG_LONG)PyLong_AsUnsignedLongLong(x);
+        } else {
+            return (PY_LONG_LONG)PyLong_AsLongLong(x);
+        }
+    } else {
+        PY_LONG_LONG val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (PY_LONG_LONG)-1;
+        val = __Pyx_PyInt_AsLongLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE signed long __Pyx_PyInt_AsSignedLong(PyObject* x) {
+    const signed long neg_one = (signed long)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to signed long");
+            return (signed long)-1;
+        }
+        return (signed long)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to signed long");
+                return (signed long)-1;
+            }
+            return (signed long)PyLong_AsUnsignedLong(x);
+        } else {
+            return (signed long)PyLong_AsLong(x);
+        }
+    } else {
+        signed long val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (signed long)-1;
+        val = __Pyx_PyInt_AsSignedLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE signed PY_LONG_LONG __Pyx_PyInt_AsSignedLongLong(PyObject* x) {
+    const signed PY_LONG_LONG neg_one = (signed PY_LONG_LONG)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to signed PY_LONG_LONG");
+            return (signed PY_LONG_LONG)-1;
+        }
+        return (signed PY_LONG_LONG)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to signed PY_LONG_LONG");
+                return (signed PY_LONG_LONG)-1;
+            }
+            return (signed PY_LONG_LONG)PyLong_AsUnsignedLongLong(x);
+        } else {
+            return (signed PY_LONG_LONG)PyLong_AsLongLong(x);
+        }
+    } else {
+        signed PY_LONG_LONG val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (signed PY_LONG_LONG)-1;
+        val = __Pyx_PyInt_AsSignedLongLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static int __Pyx_check_binary_version(void) {
+    char ctversion[4], rtversion[4];
+    PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION);
+    PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion());
+    if (ctversion[0] != rtversion[0] || ctversion[2] != rtversion[2]) {
+        char message[200];
+        PyOS_snprintf(message, sizeof(message),
+                      "compiletime version %s of module '%.100s' "
+                      "does not match runtime version %s",
+                      ctversion, __Pyx_MODULE_NAME, rtversion);
+        #if PY_VERSION_HEX < 0x02050000
+        return PyErr_Warn(NULL, message);
+        #else
+        return PyErr_WarnEx(NULL, message, 1);
+        #endif
+    }
+    return 0;
+}
+
+#ifndef __PYX_HAVE_RT_ImportModule
+#define __PYX_HAVE_RT_ImportModule
+static PyObject *__Pyx_ImportModule(const char *name) {
+    PyObject *py_name = 0;
+    PyObject *py_module = 0;
+    py_name = __Pyx_PyIdentifier_FromString(name);
+    if (!py_name)
+        goto bad;
+    py_module = PyImport_Import(py_name);
+    Py_DECREF(py_name);
+    return py_module;
+bad:
+    Py_XDECREF(py_name);
+    return 0;
+}
+#endif
+
+#ifndef __PYX_HAVE_RT_ImportType
+#define __PYX_HAVE_RT_ImportType
+static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name,
+    size_t size, int strict)
+{
+    PyObject *py_module = 0;
+    PyObject *result = 0;
+    PyObject *py_name = 0;
+    char warning[200];
+    Py_ssize_t basicsize;
+#ifdef Py_LIMITED_API
+    PyObject *py_basicsize;
+#endif
+    py_module = __Pyx_ImportModule(module_name);
+    if (!py_module)
+        goto bad;
+    py_name = __Pyx_PyIdentifier_FromString(class_name);
+    if (!py_name)
+        goto bad;
+    result = PyObject_GetAttr(py_module, py_name);
+    Py_DECREF(py_name);
+    py_name = 0;
+    Py_DECREF(py_module);
+    py_module = 0;
+    if (!result)
+        goto bad;
+    if (!PyType_Check(result)) {
+        PyErr_Format(PyExc_TypeError,
+            "%s.%s is not a type object",
+            module_name, class_name);
+        goto bad;
+    }
+#ifndef Py_LIMITED_API
+    basicsize = ((PyTypeObject *)result)->tp_basicsize;
+#else
+    py_basicsize = PyObject_GetAttrString(result, "__basicsize__");
+    if (!py_basicsize)
+        goto bad;
+    basicsize = PyLong_AsSsize_t(py_basicsize);
+    Py_DECREF(py_basicsize);
+    py_basicsize = 0;
+    if (basicsize == (Py_ssize_t)-1 && PyErr_Occurred())
+        goto bad;
+#endif
+    if (!strict && (size_t)basicsize > size) {
+        PyOS_snprintf(warning, sizeof(warning),
+            "%s.%s size changed, may indicate binary incompatibility",
+            module_name, class_name);
+        #if PY_VERSION_HEX < 0x02050000
+        if (PyErr_Warn(NULL, warning) < 0) goto bad;
+        #else
+        if (PyErr_WarnEx(NULL, warning, 0) < 0) goto bad;
+        #endif
+    }
+    else if ((size_t)basicsize != size) {
+        PyErr_Format(PyExc_ValueError,
+            "%s.%s has the wrong size, try recompiling",
+            module_name, class_name);
+        goto bad;
+    }
+    return (PyTypeObject *)result;
+bad:
+    Py_XDECREF(py_module);
+    Py_XDECREF(result);
+    return NULL;
+}
+#endif
+
+#ifndef __PYX_HAVE_RT_ImportFunction
+#define __PYX_HAVE_RT_ImportFunction
+static int __Pyx_ImportFunction(PyObject *module, const char *funcname, void (**f)(void), const char *sig) {
+    PyObject *d = 0;
+    PyObject *cobj = 0;
+    union {
+        void (*fp)(void);
+        void *p;
+    } tmp;
+    d = PyObject_GetAttrString(module, (char *)"__pyx_capi__");
+    if (!d)
+        goto bad;
+    cobj = PyDict_GetItemString(d, funcname);
+    if (!cobj) {
+        PyErr_Format(PyExc_ImportError,
+            "%s does not export expected C function %s",
+                PyModule_GetName(module), funcname);
+        goto bad;
+    }
+#if PY_VERSION_HEX >= 0x02070000 && !(PY_MAJOR_VERSION==3 && PY_MINOR_VERSION==0)
+    if (!PyCapsule_IsValid(cobj, sig)) {
+        PyErr_Format(PyExc_TypeError,
+            "C function %s.%s has wrong signature (expected %s, got %s)",
+             PyModule_GetName(module), funcname, sig, PyCapsule_GetName(cobj));
+        goto bad;
+    }
+    tmp.p = PyCapsule_GetPointer(cobj, sig);
+#else
+    {const char *desc, *s1, *s2;
+    desc = (const char *)PyCObject_GetDesc(cobj);
+    if (!desc)
+        goto bad;
+    s1 = desc; s2 = sig;
+    while (*s1 != '\0' && *s1 == *s2) { s1++; s2++; }
+    if (*s1 != *s2) {
+        PyErr_Format(PyExc_TypeError,
+            "C function %s.%s has wrong signature (expected %s, got %s)",
+             PyModule_GetName(module), funcname, sig, desc);
+        goto bad;
+    }
+    tmp.p = PyCObject_AsVoidPtr(cobj);}
+#endif
+    *f = tmp.fp;
+    if (!(*f))
+        goto bad;
+    Py_DECREF(d);
+    return 0;
+bad:
+    Py_XDECREF(d);
+    return -1;
+}
+#endif
+
+static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) {
+    int start = 0, mid = 0, end = count - 1;
+    if (end >= 0 && code_line > entries[end].code_line) {
+        return count;
+    }
+    while (start < end) {
+        mid = (start + end) / 2;
+        if (code_line < entries[mid].code_line) {
+            end = mid;
+        } else if (code_line > entries[mid].code_line) {
+             start = mid + 1;
+        } else {
+            return mid;
+        }
+    }
+    if (code_line <= entries[mid].code_line) {
+        return mid;
+    } else {
+        return mid + 1;
+    }
+}
+static PyCodeObject *__pyx_find_code_object(int code_line) {
+    PyCodeObject* code_object;
+    int pos;
+    if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) {
+        return NULL;
+    }
+    pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
+    if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) {
+        return NULL;
+    }
+    code_object = __pyx_code_cache.entries[pos].code_object;
+    Py_INCREF(code_object);
+    return code_object;
+}
+static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) {
+    int pos, i;
+    __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries;
+    if (unlikely(!code_line)) {
+        return;
+    }
+    if (unlikely(!entries)) {
+        entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry));
+        if (likely(entries)) {
+            __pyx_code_cache.entries = entries;
+            __pyx_code_cache.max_count = 64;
+            __pyx_code_cache.count = 1;
+            entries[0].code_line = code_line;
+            entries[0].code_object = code_object;
+            Py_INCREF(code_object);
+        }
+        return;
+    }
+    pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
+    if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) {
+        PyCodeObject* tmp = entries[pos].code_object;
+        entries[pos].code_object = code_object;
+        Py_DECREF(tmp);
+        return;
+    }
+    if (__pyx_code_cache.count == __pyx_code_cache.max_count) {
+        int new_max = __pyx_code_cache.max_count + 64;
+        entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc(
+            __pyx_code_cache.entries, new_max*sizeof(__Pyx_CodeObjectCacheEntry));
+        if (unlikely(!entries)) {
+            return;
+        }
+        __pyx_code_cache.entries = entries;
+        __pyx_code_cache.max_count = new_max;
+    }
+    for (i=__pyx_code_cache.count; i>pos; i--) {
+        entries[i] = entries[i-1];
+    }
+    entries[pos].code_line = code_line;
+    entries[pos].code_object = code_object;
+    __pyx_code_cache.count++;
+    Py_INCREF(code_object);
+}
+
+#include "compile.h"
+#include "frameobject.h"
+#include "traceback.h"
+static PyCodeObject* __Pyx_CreateCodeObjectForTraceback(
+            const char *funcname, int c_line,
+            int py_line, const char *filename) {
+    PyCodeObject *py_code = 0;
+    PyObject *py_srcfile = 0;
+    PyObject *py_funcname = 0;
+    #if PY_MAJOR_VERSION < 3
+    py_srcfile = PyString_FromString(filename);
+    #else
+    py_srcfile = PyUnicode_FromString(filename);
+    #endif
+    if (!py_srcfile) goto bad;
+    if (c_line) {
+        #if PY_MAJOR_VERSION < 3
+        py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
+        #else
+        py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
+        #endif
+    }
+    else {
+        #if PY_MAJOR_VERSION < 3
+        py_funcname = PyString_FromString(funcname);
+        #else
+        py_funcname = PyUnicode_FromString(funcname);
+        #endif
+    }
+    if (!py_funcname) goto bad;
+    py_code = __Pyx_PyCode_New(
+        0,            /*int argcount,*/
+        0,            /*int kwonlyargcount,*/
+        0,            /*int nlocals,*/
+        0,            /*int stacksize,*/
+        0,            /*int flags,*/
+        __pyx_empty_bytes, /*PyObject *code,*/
+        __pyx_empty_tuple, /*PyObject *consts,*/
+        __pyx_empty_tuple, /*PyObject *names,*/
+        __pyx_empty_tuple, /*PyObject *varnames,*/
+        __pyx_empty_tuple, /*PyObject *freevars,*/
+        __pyx_empty_tuple, /*PyObject *cellvars,*/
+        py_srcfile,   /*PyObject *filename,*/
+        py_funcname,  /*PyObject *name,*/
+        py_line,      /*int firstlineno,*/
+        __pyx_empty_bytes  /*PyObject *lnotab*/
+    );
+    Py_DECREF(py_srcfile);
+    Py_DECREF(py_funcname);
+    return py_code;
+bad:
+    Py_XDECREF(py_srcfile);
+    Py_XDECREF(py_funcname);
+    return NULL;
+}
+static void __Pyx_AddTraceback(const char *funcname, int c_line,
+                               int py_line, const char *filename) {
+    PyCodeObject *py_code = 0;
+    PyObject *py_globals = 0;
+    PyFrameObject *py_frame = 0;
+    py_code = __pyx_find_code_object(c_line ? c_line : py_line);
+    if (!py_code) {
+        py_code = __Pyx_CreateCodeObjectForTraceback(
+            funcname, c_line, py_line, filename);
+        if (!py_code) goto bad;
+        __pyx_insert_code_object(c_line ? c_line : py_line, py_code);
+    }
+    py_globals = PyModule_GetDict(__pyx_m);
+    if (!py_globals) goto bad;
+    py_frame = PyFrame_New(
+        PyThreadState_GET(), /*PyThreadState *tstate,*/
+        py_code,             /*PyCodeObject *code,*/
+        py_globals,          /*PyObject *globals,*/
+        0                    /*PyObject *locals*/
+    );
+    if (!py_frame) goto bad;
+    py_frame->f_lineno = py_line;
+    PyTraceBack_Here(py_frame);
+bad:
+    Py_XDECREF(py_code);
+    Py_XDECREF(py_frame);
+}
+
+static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
+    while (t->p) {
+        #if PY_MAJOR_VERSION < 3
+        if (t->is_unicode) {
+            *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL);
+        } else if (t->intern) {
+            *t->p = PyString_InternFromString(t->s);
+        } else {
+            *t->p = PyString_FromStringAndSize(t->s, t->n - 1);
+        }
+        #else  /* Python 3+ has unicode identifiers */
+        if (t->is_unicode | t->is_str) {
+            if (t->intern) {
+                *t->p = PyUnicode_InternFromString(t->s);
+            } else if (t->encoding) {
+                *t->p = PyUnicode_Decode(t->s, t->n - 1, t->encoding, NULL);
+            } else {
+                *t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1);
+            }
+        } else {
+            *t->p = PyBytes_FromStringAndSize(t->s, t->n - 1);
+        }
+        #endif
+        if (!*t->p)
+            return -1;
+        ++t;
+    }
+    return 0;
+}
+
+static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) {
+   int is_true = x == Py_True;
+   if (is_true | (x == Py_False) | (x == Py_None)) return is_true;
+   else return PyObject_IsTrue(x);
+}
+static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x) {
+  PyNumberMethods *m;
+  const char *name = NULL;
+  PyObject *res = NULL;
+#if PY_VERSION_HEX < 0x03000000
+  if (PyInt_Check(x) || PyLong_Check(x))
+#else
+  if (PyLong_Check(x))
+#endif
+    return Py_INCREF(x), x;
+  m = Py_TYPE(x)->tp_as_number;
+#if PY_VERSION_HEX < 0x03000000
+  if (m && m->nb_int) {
+    name = "int";
+    res = PyNumber_Int(x);
+  }
+  else if (m && m->nb_long) {
+    name = "long";
+    res = PyNumber_Long(x);
+  }
+#else
+  if (m && m->nb_int) {
+    name = "int";
+    res = PyNumber_Long(x);
+  }
+#endif
+  if (res) {
+#if PY_VERSION_HEX < 0x03000000
+    if (!PyInt_Check(res) && !PyLong_Check(res)) {
+#else
+    if (!PyLong_Check(res)) {
+#endif
+      PyErr_Format(PyExc_TypeError,
+                   "__%s__ returned non-%s (type %.200s)",
+                   name, name, Py_TYPE(res)->tp_name);
+      Py_DECREF(res);
+      return NULL;
+    }
+  }
+  else if (!PyErr_Occurred()) {
+    PyErr_SetString(PyExc_TypeError,
+                    "an integer is required");
+  }
+  return res;
+}
+static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
+  Py_ssize_t ival;
+  PyObject* x = PyNumber_Index(b);
+  if (!x) return -1;
+  ival = PyInt_AsSsize_t(x);
+  Py_DECREF(x);
+  return ival;
+}
+static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) {
+#if PY_VERSION_HEX < 0x02050000
+   if (ival <= LONG_MAX)
+       return PyInt_FromLong((long)ival);
+   else {
+       unsigned char *bytes = (unsigned char *) &ival;
+       int one = 1; int little = (int)*(unsigned char*)&one;
+       return _PyLong_FromByteArray(bytes, sizeof(size_t), little, 0);
+   }
+#else
+   return PyInt_FromSize_t(ival);
+#endif
+}
+static CYTHON_INLINE size_t __Pyx_PyInt_AsSize_t(PyObject* x) {
+   unsigned PY_LONG_LONG val = __Pyx_PyInt_AsUnsignedLongLong(x);
+   if (unlikely(val == (unsigned PY_LONG_LONG)-1 && PyErr_Occurred())) {
+       return (size_t)-1;
+   } else if (unlikely(val != (unsigned PY_LONG_LONG)(size_t)val)) {
+       PyErr_SetString(PyExc_OverflowError,
+                       "value too large to convert to size_t");
+       return (size_t)-1;
+   }
+   return (size_t)val;
+}
+
+
+#endif /* Py_PYTHON_H */
diff --git a/h5py/h5o.pxd b/h5py/h5o.pxd
new file mode 100644
index 0000000..2e75510
--- /dev/null
+++ b/h5py/h5o.pxd
@@ -0,0 +1,11 @@
+# This file is part of h5py, a Python interface to the HDF5 library.
+#
+# http://www.h5py.org
+#
+# Copyright 2008-2013 Andrew Collette and contributors
+#
+# License:  Standard 3-clause BSD; see "license.txt" for full license terms
+#           and contributor agreement.
+
+from defs cimport *
+
diff --git a/h5py/h5o.pyx b/h5py/h5o.pyx
new file mode 100644
index 0000000..95aa2fe
--- /dev/null
+++ b/h5py/h5o.pyx
@@ -0,0 +1,344 @@
+# This file is part of h5py, a Python interface to the HDF5 library.
+#
+# http://www.h5py.org
+#
+# Copyright 2008-2013 Andrew Collette and contributors
+#
+# License:  Standard 3-clause BSD; see "license.txt" for full license terms
+#           and contributor agreement.
+
+"""
+    Module for HDF5 "H5O" functions.
+"""
+
+# Pyrex compile-time imports
+from _objects cimport ObjectID, pdefault
+from h5g cimport GroupID
+from h5i cimport wrap_identifier
+from h5p cimport PropID
+from utils cimport emalloc, efree
+
+# === Public constants ========================================================
+
+TYPE_GROUP = H5O_TYPE_GROUP
+TYPE_DATASET = H5O_TYPE_DATASET
+TYPE_NAMED_DATATYPE = H5O_TYPE_NAMED_DATATYPE
+
+COPY_SHALLOW_HIERARCHY_FLAG = H5O_COPY_SHALLOW_HIERARCHY_FLAG
+COPY_EXPAND_SOFT_LINK_FLAG  = H5O_COPY_EXPAND_SOFT_LINK_FLAG
+COPY_EXPAND_EXT_LINK_FLAG   = H5O_COPY_EXPAND_EXT_LINK_FLAG
+COPY_EXPAND_REFERENCE_FLAG  = H5O_COPY_EXPAND_REFERENCE_FLAG
+COPY_WITHOUT_ATTR_FLAG      = H5O_COPY_WITHOUT_ATTR_FLAG
+COPY_PRESERVE_NULL_FLAG     = H5O_COPY_PRESERVE_NULL_FLAG
+
+# === Giant H5O_info_t structure ==============================================
+
+cdef class _ObjInfoBase:
+
+    cdef H5O_info_t *istr
+
+cdef class _OHdrMesg(_ObjInfoBase):
+
+    property present:
+        def __get__(self):
+            return self.istr[0].hdr.mesg.present
+    property shared:
+        def __get__(self):
+            return self.istr[0].hdr.mesg.shared
+
+    def _hash(self):
+        return hash((self.present, self.shared))
+
+cdef class _OHdrSpace(_ObjInfoBase):
+
+    property total:
+        def __get__(self):
+            return self.istr[0].hdr.space.total
+    property meta:
+        def __get__(self):
+            return self.istr[0].hdr.space.meta
+    property mesg:
+        def __get__(self):
+            return self.istr[0].hdr.space.mesg
+    property free:
+        def __get__(self):
+            return self.istr[0].hdr.space.free
+
+    def _hash(self):
+        return hash((self.total, self.meta, self.mesg, self.free))
+
+cdef class _OHdr(_ObjInfoBase):
+
+    cdef public _OHdrSpace space
+    cdef public _OHdrMesg mesg
+
+    property version:
+        def __get__(self):
+            return self.istr[0].hdr.version
+    property nmesgs:
+        def __get__(self):
+            return self.istr[0].hdr.nmesgs
+
+    def __init__(self):
+        self.space = _OHdrSpace()
+        self.mesg = _OHdrMesg()
+
+    def _hash(self):
+        return hash((self.version, self.nmesgs, self.space, self.mesg))
+
+cdef class _ObjInfo(_ObjInfoBase):
+
+    property fileno:
+        def __get__(self):
+            return self.istr[0].fileno
+    property addr:
+        def __get__(self):
+            return self.istr[0].addr
+    property type:
+        def __get__(self):
+            return <int>self.istr[0].type
+    property rc:
+        def __get__(self):
+            return self.istr[0].rc
+
+    def _hash(self):
+        return hash((self.fileno, self.addr, self.type, self.rc))
+
+cdef class ObjInfo(_ObjInfo):
+
+    """
+        Represents the H5O_info_t structure
+    """
+
+    cdef H5O_info_t infostruct
+    cdef public _OHdr hdr
+
+    def __init__(self):
+        self.hdr = _OHdr()
+
+        self.istr = &self.infostruct
+        self.hdr.istr = &self.infostruct
+        self.hdr.space.istr = &self.infostruct
+        self.hdr.mesg.istr = &self.infostruct
+
+    def __copy__(self):
+        cdef ObjInfo newcopy
+        newcopy = ObjInfo()
+        newcopy.infostruct = self.infostruct
+        return newcopy
+
+
+def get_info(ObjectID loc not None, char* name=NULL, int index=-1, *,
+        char* obj_name='.', int index_type=H5_INDEX_NAME, int order=H5_ITER_NATIVE,
+        PropID lapl=None):
+    """(ObjectID loc, STRING name=, INT index=, **kwds) => ObjInfo
+
+    Get information describing an object in an HDF5 file.  Provide the object
+    itself, or the containing group and exactly one of "name" or "index".
+
+    STRING obj_name (".")
+        When "index" is specified, look in this subgroup instead.
+        Otherwise ignored.
+
+    PropID lapl (None)
+        Link access property list
+
+    INT index_type (h5.INDEX_NAME)
+
+    INT order (h5.ITER_NATIVE)
+    """
+    cdef ObjInfo info
+    info = ObjInfo()
+
+    if name != NULL and index >= 0:
+        raise TypeError("At most one of name or index may be specified")
+    elif name != NULL and index < 0:
+        H5Oget_info_by_name(loc.id, name, &info.infostruct, pdefault(lapl))
+    elif name == NULL and index >= 0:
+        H5Oget_info_by_idx(loc.id, obj_name, <H5_index_t>index_type,
+            <H5_iter_order_t>order, index, &info.infostruct, pdefault(lapl))
+    else:
+        H5Oget_info(loc.id, &info.infostruct)
+
+    return info
+
+# === General object operations ===============================================
+
+
+def open(ObjectID loc not None, char* name, PropID lapl=None):
+    """(ObjectID loc, STRING name, PropID lapl=None) => ObjectID
+
+    Open a group, dataset, or named datatype attached to an existing group.
+    """
+    return wrap_identifier(H5Oopen(loc.id, name, pdefault(lapl)))
+
+
+def link(ObjectID obj not None, GroupID loc not None, char* name,
+    PropID lcpl=None, PropID lapl=None):
+    """(ObjectID obj, GroupID loc, STRING name, PropID lcpl=None,
+    PropID lapl=None)
+
+    Create a new hard link to an object.  Useful for objects created with
+    h5g.create_anon() or h5d.create_anon().
+    """
+    H5Olink(obj.id, loc.id, name, pdefault(lcpl), pdefault(lapl))
+
+
+def copy(ObjectID src_loc not None, char* src_name, GroupID dst_loc not None,
+    char* dst_name, PropID copypl=None, PropID lcpl=None):
+    """(ObjectID src_loc, STRING src_name, GroupID dst_loc, STRING dst_name,
+    PropID copypl=None, PropID lcpl=None)
+
+    Copy a group, dataset or named datatype from one location to another.  The
+    source and destination need not be in the same file.
+
+    The default behavior is a recursive copy of the object and all objects
+    below it.  This behavior is modified via the "copypl" property list.
+    """
+    H5Ocopy(src_loc.id, src_name, dst_loc.id, dst_name, pdefault(copypl),
+        pdefault(lcpl))
+
+
+def set_comment(ObjectID loc not None, char* comment, *, char* obj_name=".",
+    PropID lapl=None):
+    """(ObjectID loc, STRING comment, **kwds)
+
+    Set the comment for any-file resident object.  Keywords:
+
+    STRING obj_name (".")
+        Set comment on this group member instead
+
+    PropID lapl (None)
+        Link access property list
+    """
+    H5Oset_comment_by_name(loc.id, obj_name, comment, pdefault(lapl))
+
+
+
+def get_comment(ObjectID loc not None, char* comment, *, char* obj_name=".",
+    PropID lapl=None):
+    """(ObjectID loc, STRING comment, **kwds)
+
+    Get the comment for any-file resident object.  Keywords:
+
+    STRING obj_name (".")
+        Set comment on this group member instead
+
+    PropID lapl (None)
+        Link access property list
+    """
+    cdef ssize_t size
+    cdef char* buf
+
+    size = H5Oget_comment_by_name(loc.id, obj_name, NULL, 0, pdefault(lapl))
+    buf = <char*>emalloc(size+1)
+    try:
+        H5Oget_comment_by_name(loc.id, obj_name, buf, size+1, pdefault(lapl))
+        pstring = buf
+    finally:
+        efree(buf)
+
+    return pstring
+
+# === Visit routines ==========================================================
+
+cdef class _ObjectVisitor:
+
+    cdef object func
+    cdef object retval
+    cdef ObjInfo objinfo
+
+    def __init__(self, func):
+        self.func = func
+        self.retval = None
+        self.objinfo = ObjInfo()
+
+cdef herr_t cb_obj_iterate(hid_t obj, char* name, H5O_info_t *info, void* data) except 2:
+
+    cdef _ObjectVisitor visit
+
+    # HDF5 doesn't respect callback return for ".", so skip it
+    if strcmp(name, ".") == 0:
+        return 0
+
+    visit = <_ObjectVisitor>data
+    visit.objinfo.infostruct = info[0]
+    visit.retval = visit.func(name, visit.objinfo)
+
+    if visit.retval is not None:
+        return 1
+    return 0
+
+cdef herr_t cb_obj_simple(hid_t obj, char* name, H5O_info_t *info, void* data) except 2:
+
+    cdef _ObjectVisitor visit
+
+    # Not all versions of HDF5 respect callback value for ".", so skip it
+    if strcmp(name, ".") == 0:
+        return 0
+
+    visit = <_ObjectVisitor>data
+    visit.retval = visit.func(name)
+
+    if visit.retval is not None:
+        return 1
+    return 0
+
+
+def visit(ObjectID loc not None, object func, *,
+          int idx_type=H5_INDEX_NAME, int order=H5_ITER_NATIVE,
+          char* obj_name=".", PropID lapl=None, bint info=0):
+    """(ObjectID loc, CALLABLE func, **kwds) => <Return value from func>
+
+    Iterate a function or callable object over all objects below the
+    specified one.  Your callable should conform to the signature::
+
+        func(STRING name) => Result
+
+    or if the keyword argument "info" is True::
+
+        func(STRING name, ObjInfo info) => Result
+
+    Returning None continues iteration; returning anything else aborts
+    iteration and returns that value.  Keywords:
+
+    BOOL info (False)
+        Callback is func(STRING, Objinfo)
+
+    STRING obj_name (".")
+        Visit a subgroup of "loc" instead
+
+    PropLAID lapl (None)
+        Control how "obj_name" is interpreted
+
+    INT idx_type (h5.INDEX_NAME)
+        What indexing strategy to use
+
+    INT order (h5.ITER_NATIVE)
+        Order in which iteration occurs
+
+    Compatibility note:  No callback is executed for the starting path ("."),
+    as some versions of HDF5 don't correctly handle a return value for this
+    case.  This differs from the behavior of the native H5Ovisit, which
+    provides a literal "." as the first value.
+    """
+    cdef _ObjectVisitor visit = _ObjectVisitor(func)
+    cdef H5O_iterate_t cfunc
+
+    if info:
+        cfunc = cb_obj_iterate
+    else:
+        cfunc = cb_obj_simple
+
+    H5Ovisit_by_name(loc.id, obj_name, <H5_index_t>idx_type,
+        <H5_iter_order_t>order, cfunc, <void*>visit, pdefault(lapl))
+
+    return visit.retval
+
+
+
+
+
+
+
+
diff --git a/h5py/h5p.c b/h5py/h5p.c
new file mode 100644
index 0000000..1f31a3a
--- /dev/null
+++ b/h5py/h5p.c
@@ -0,0 +1,13550 @@
+/* Generated by Cython 0.18 on Mon Dec  9 16:00:33 2013 */
+
+#define PY_SSIZE_T_CLEAN
+#include "Python.h"
+#ifndef Py_PYTHON_H
+    #error Python headers needed to compile C extensions, please install development version of Python.
+#elif PY_VERSION_HEX < 0x02040000
+    #error Cython requires Python 2.4+.
+#else
+#include <stddef.h> /* For offsetof */
+#ifndef offsetof
+#define offsetof(type, member) ( (size_t) & ((type*)0) -> member )
+#endif
+#if !defined(WIN32) && !defined(MS_WINDOWS)
+  #ifndef __stdcall
+    #define __stdcall
+  #endif
+  #ifndef __cdecl
+    #define __cdecl
+  #endif
+  #ifndef __fastcall
+    #define __fastcall
+  #endif
+#endif
+#ifndef DL_IMPORT
+  #define DL_IMPORT(t) t
+#endif
+#ifndef DL_EXPORT
+  #define DL_EXPORT(t) t
+#endif
+#ifndef PY_LONG_LONG
+  #define PY_LONG_LONG LONG_LONG
+#endif
+#ifndef Py_HUGE_VAL
+  #define Py_HUGE_VAL HUGE_VAL
+#endif
+#ifdef PYPY_VERSION
+#define CYTHON_COMPILING_IN_PYPY 1
+#define CYTHON_COMPILING_IN_CPYTHON 0
+#else
+#define CYTHON_COMPILING_IN_PYPY 0
+#define CYTHON_COMPILING_IN_CPYTHON 1
+#endif
+#if PY_VERSION_HEX < 0x02050000
+  typedef int Py_ssize_t;
+  #define PY_SSIZE_T_MAX INT_MAX
+  #define PY_SSIZE_T_MIN INT_MIN
+  #define PY_FORMAT_SIZE_T ""
+  #define CYTHON_FORMAT_SSIZE_T ""
+  #define PyInt_FromSsize_t(z) PyInt_FromLong(z)
+  #define PyInt_AsSsize_t(o)   __Pyx_PyInt_AsInt(o)
+  #define PyNumber_Index(o)    ((PyNumber_Check(o) && !PyFloat_Check(o)) ? PyNumber_Int(o) : \
+                                (PyErr_Format(PyExc_TypeError, \
+                                              "expected index value, got %.200s", Py_TYPE(o)->tp_name), \
+                                 (PyObject*)0))
+  #define __Pyx_PyIndex_Check(o) (PyNumber_Check(o) && !PyFloat_Check(o) && \
+                                  !PyComplex_Check(o))
+  #define PyIndex_Check __Pyx_PyIndex_Check
+  #define PyErr_WarnEx(category, message, stacklevel) PyErr_Warn(category, message)
+  #define __PYX_BUILD_PY_SSIZE_T "i"
+#else
+  #define __PYX_BUILD_PY_SSIZE_T "n"
+  #define CYTHON_FORMAT_SSIZE_T "z"
+  #define __Pyx_PyIndex_Check PyIndex_Check
+#endif
+#if PY_VERSION_HEX < 0x02060000
+  #define Py_REFCNT(ob) (((PyObject*)(ob))->ob_refcnt)
+  #define Py_TYPE(ob)   (((PyObject*)(ob))->ob_type)
+  #define Py_SIZE(ob)   (((PyVarObject*)(ob))->ob_size)
+  #define PyVarObject_HEAD_INIT(type, size) \
+          PyObject_HEAD_INIT(type) size,
+  #define PyType_Modified(t)
+  typedef struct {
+     void *buf;
+     PyObject *obj;
+     Py_ssize_t len;
+     Py_ssize_t itemsize;
+     int readonly;
+     int ndim;
+     char *format;
+     Py_ssize_t *shape;
+     Py_ssize_t *strides;
+     Py_ssize_t *suboffsets;
+     void *internal;
+  } Py_buffer;
+  #define PyBUF_SIMPLE 0
+  #define PyBUF_WRITABLE 0x0001
+  #define PyBUF_FORMAT 0x0004
+  #define PyBUF_ND 0x0008
+  #define PyBUF_STRIDES (0x0010 | PyBUF_ND)
+  #define PyBUF_C_CONTIGUOUS (0x0020 | PyBUF_STRIDES)
+  #define PyBUF_F_CONTIGUOUS (0x0040 | PyBUF_STRIDES)
+  #define PyBUF_ANY_CONTIGUOUS (0x0080 | PyBUF_STRIDES)
+  #define PyBUF_INDIRECT (0x0100 | PyBUF_STRIDES)
+  #define PyBUF_RECORDS (PyBUF_STRIDES | PyBUF_FORMAT | PyBUF_WRITABLE)
+  #define PyBUF_FULL (PyBUF_INDIRECT | PyBUF_FORMAT | PyBUF_WRITABLE)
+  typedef int (*getbufferproc)(PyObject *, Py_buffer *, int);
+  typedef void (*releasebufferproc)(PyObject *, Py_buffer *);
+#endif
+#if PY_MAJOR_VERSION < 3
+  #define __Pyx_BUILTIN_MODULE_NAME "__builtin__"
+  #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) \
+          PyCode_New(a, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
+#else
+  #define __Pyx_BUILTIN_MODULE_NAME "builtins"
+  #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) \
+          PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
+#endif
+#if PY_MAJOR_VERSION < 3 && PY_MINOR_VERSION < 6
+  #define PyUnicode_FromString(s) PyUnicode_Decode(s, strlen(s), "UTF-8", "strict")
+#endif
+#if PY_MAJOR_VERSION >= 3
+  #define Py_TPFLAGS_CHECKTYPES 0
+  #define Py_TPFLAGS_HAVE_INDEX 0
+#endif
+#if (PY_VERSION_HEX < 0x02060000) || (PY_MAJOR_VERSION >= 3)
+  #define Py_TPFLAGS_HAVE_NEWBUFFER 0
+#endif
+#if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND)
+  #define CYTHON_PEP393_ENABLED 1
+  #define __Pyx_PyUnicode_READY(op)       (likely(PyUnicode_IS_READY(op)) ? \
+                                              0 : _PyUnicode_Ready((PyObject *)(op)))
+  #define __Pyx_PyUnicode_GET_LENGTH(u)   PyUnicode_GET_LENGTH(u)
+  #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i)
+  #define __Pyx_PyUnicode_READ(k, d, i)   PyUnicode_READ(k, d, i)
+#else
+  #define CYTHON_PEP393_ENABLED 0
+  #define __Pyx_PyUnicode_READY(op)       (0)
+  #define __Pyx_PyUnicode_GET_LENGTH(u)   PyUnicode_GET_SIZE(u)
+  #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i]))
+  #define __Pyx_PyUnicode_READ(k, d, i)   ((k=k), (Py_UCS4)(((Py_UNICODE*)d)[i]))
+#endif
+#if PY_MAJOR_VERSION >= 3
+  #define PyBaseString_Type            PyUnicode_Type
+  #define PyStringObject               PyUnicodeObject
+  #define PyString_Type                PyUnicode_Type
+  #define PyString_Check               PyUnicode_Check
+  #define PyString_CheckExact          PyUnicode_CheckExact
+#endif
+#if PY_VERSION_HEX < 0x02060000
+  #define PyBytesObject                PyStringObject
+  #define PyBytes_Type                 PyString_Type
+  #define PyBytes_Check                PyString_Check
+  #define PyBytes_CheckExact           PyString_CheckExact
+  #define PyBytes_FromString           PyString_FromString
+  #define PyBytes_FromStringAndSize    PyString_FromStringAndSize
+  #define PyBytes_FromFormat           PyString_FromFormat
+  #define PyBytes_DecodeEscape         PyString_DecodeEscape
+  #define PyBytes_AsString             PyString_AsString
+  #define PyBytes_AsStringAndSize      PyString_AsStringAndSize
+  #define PyBytes_Size                 PyString_Size
+  #define PyBytes_AS_STRING            PyString_AS_STRING
+  #define PyBytes_GET_SIZE             PyString_GET_SIZE
+  #define PyBytes_Repr                 PyString_Repr
+  #define PyBytes_Concat               PyString_Concat
+  #define PyBytes_ConcatAndDel         PyString_ConcatAndDel
+#endif
+#if PY_VERSION_HEX < 0x02060000
+  #define PySet_Check(obj)             PyObject_TypeCheck(obj, &PySet_Type)
+  #define PyFrozenSet_Check(obj)       PyObject_TypeCheck(obj, &PyFrozenSet_Type)
+#endif
+#ifndef PySet_CheckExact
+  #define PySet_CheckExact(obj)        (Py_TYPE(obj) == &PySet_Type)
+#endif
+#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type)
+#if PY_MAJOR_VERSION >= 3
+  #define PyIntObject                  PyLongObject
+  #define PyInt_Type                   PyLong_Type
+  #define PyInt_Check(op)              PyLong_Check(op)
+  #define PyInt_CheckExact(op)         PyLong_CheckExact(op)
+  #define PyInt_FromString             PyLong_FromString
+  #define PyInt_FromUnicode            PyLong_FromUnicode
+  #define PyInt_FromLong               PyLong_FromLong
+  #define PyInt_FromSize_t             PyLong_FromSize_t
+  #define PyInt_FromSsize_t            PyLong_FromSsize_t
+  #define PyInt_AsLong                 PyLong_AsLong
+  #define PyInt_AS_LONG                PyLong_AS_LONG
+  #define PyInt_AsSsize_t              PyLong_AsSsize_t
+  #define PyInt_AsUnsignedLongMask     PyLong_AsUnsignedLongMask
+  #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask
+#endif
+#if PY_MAJOR_VERSION >= 3
+  #define PyBoolObject                 PyLongObject
+#endif
+#if PY_VERSION_HEX < 0x03020000
+  typedef long Py_hash_t;
+  #define __Pyx_PyInt_FromHash_t PyInt_FromLong
+  #define __Pyx_PyInt_AsHash_t   PyInt_AsLong
+#else
+  #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t
+  #define __Pyx_PyInt_AsHash_t   PyInt_AsSsize_t
+#endif
+#if (PY_MAJOR_VERSION < 3) || (PY_VERSION_HEX >= 0x03010300)
+  #define __Pyx_PySequence_GetSlice(obj, a, b) PySequence_GetSlice(obj, a, b)
+  #define __Pyx_PySequence_SetSlice(obj, a, b, value) PySequence_SetSlice(obj, a, b, value)
+  #define __Pyx_PySequence_DelSlice(obj, a, b) PySequence_DelSlice(obj, a, b)
+#else
+  #define __Pyx_PySequence_GetSlice(obj, a, b) (unlikely(!(obj)) ? \
+        (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), (PyObject*)0) : \
+        (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_GetSlice(obj, a, b)) : \
+            (PyErr_Format(PyExc_TypeError, "'%.200s' object is unsliceable", (obj)->ob_type->tp_name), (PyObject*)0)))
+  #define __Pyx_PySequence_SetSlice(obj, a, b, value) (unlikely(!(obj)) ? \
+        (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), -1) : \
+        (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_SetSlice(obj, a, b, value)) : \
+            (PyErr_Format(PyExc_TypeError, "'%.200s' object doesn't support slice assignment", (obj)->ob_type->tp_name), -1)))
+  #define __Pyx_PySequence_DelSlice(obj, a, b) (unlikely(!(obj)) ? \
+        (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), -1) : \
+        (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_DelSlice(obj, a, b)) : \
+            (PyErr_Format(PyExc_TypeError, "'%.200s' object doesn't support slice deletion", (obj)->ob_type->tp_name), -1)))
+#endif
+#if PY_MAJOR_VERSION >= 3
+  #define PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, self) : PyInstanceMethod_New(func))
+#endif
+#if PY_VERSION_HEX < 0x02050000
+  #define __Pyx_GetAttrString(o,n)   PyObject_GetAttrString((o),((char *)(n)))
+  #define __Pyx_SetAttrString(o,n,a) PyObject_SetAttrString((o),((char *)(n)),(a))
+  #define __Pyx_DelAttrString(o,n)   PyObject_DelAttrString((o),((char *)(n)))
+#else
+  #define __Pyx_GetAttrString(o,n)   PyObject_GetAttrString((o),(n))
+  #define __Pyx_SetAttrString(o,n,a) PyObject_SetAttrString((o),(n),(a))
+  #define __Pyx_DelAttrString(o,n)   PyObject_DelAttrString((o),(n))
+#endif
+#if PY_VERSION_HEX < 0x02050000
+  #define __Pyx_NAMESTR(n) ((char *)(n))
+  #define __Pyx_DOCSTR(n)  ((char *)(n))
+#else
+  #define __Pyx_NAMESTR(n) (n)
+  #define __Pyx_DOCSTR(n)  (n)
+#endif
+
+
+#if PY_MAJOR_VERSION >= 3
+  #define __Pyx_PyNumber_Divide(x,y)         PyNumber_TrueDivide(x,y)
+  #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceTrueDivide(x,y)
+#else
+  #define __Pyx_PyNumber_Divide(x,y)         PyNumber_Divide(x,y)
+  #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceDivide(x,y)
+#endif
+
+#ifndef __PYX_EXTERN_C
+  #ifdef __cplusplus
+    #define __PYX_EXTERN_C extern "C"
+  #else
+    #define __PYX_EXTERN_C extern
+  #endif
+#endif
+
+#if defined(WIN32) || defined(MS_WINDOWS)
+#define _USE_MATH_DEFINES
+#endif
+#include <math.h>
+#define __PYX_HAVE__h5py__h5p
+#define __PYX_HAVE_API__h5py__h5p
+#include "stdlib.h"
+#include "string.h"
+#include "time.h"
+#include "unistd.h"
+#include "stdint.h"
+#include "api_compat.h"
+#include "lzf_filter.h"
+#include "hdf5.h"
+#include "H5Cpublic.h"
+#include "hdf5_hl.h"
+#include "numpy/arrayobject.h"
+#ifdef _OPENMP
+#include <omp.h>
+#endif /* _OPENMP */
+
+#ifdef PYREX_WITHOUT_ASSERTIONS
+#define CYTHON_WITHOUT_ASSERTIONS
+#endif
+
+#ifndef CYTHON_INLINE
+  #if defined(__GNUC__)
+    #define CYTHON_INLINE __inline__
+  #elif defined(_MSC_VER)
+    #define CYTHON_INLINE __inline
+  #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+    #define CYTHON_INLINE inline
+  #else
+    #define CYTHON_INLINE
+  #endif
+#endif
+#ifndef CYTHON_UNUSED
+# if defined(__GNUC__)
+#   if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
+#     define CYTHON_UNUSED __attribute__ ((__unused__))
+#   else
+#     define CYTHON_UNUSED
+#   endif
+# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER))
+#   define CYTHON_UNUSED __attribute__ ((__unused__))
+# else
+#   define CYTHON_UNUSED
+# endif
+#endif
+typedef struct {PyObject **p; char *s; const long n; const char* encoding; const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; /*proto*/
+
+#define __Pyx_PyBytes_FromUString(s) PyBytes_FromString((char*)s)
+#define __Pyx_PyBytes_AsUString(s)   ((unsigned char*) PyBytes_AsString(s))
+#define __Pyx_Owned_Py_None(b) (Py_INCREF(Py_None), Py_None)
+#define __Pyx_PyBool_FromLong(b) ((b) ? (Py_INCREF(Py_True), Py_True) : (Py_INCREF(Py_False), Py_False))
+static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*);
+static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x);
+static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*);
+static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t);
+static CYTHON_INLINE size_t __Pyx_PyInt_AsSize_t(PyObject*);
+#if CYTHON_COMPILING_IN_CPYTHON
+#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x))
+#else
+#define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x)
+#endif
+#define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x))
+
+
+#ifdef __GNUC__
+  /* Test for GCC > 2.95 */
+  #if __GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))
+    #define likely(x)   __builtin_expect(!!(x), 1)
+    #define unlikely(x) __builtin_expect(!!(x), 0)
+  #else /* __GNUC__ > 2 ... */
+    #define likely(x)   (x)
+    #define unlikely(x) (x)
+  #endif /* __GNUC__ > 2 ... */
+#else /* __GNUC__ */
+  #define likely(x)   (x)
+  #define unlikely(x) (x)
+#endif /* __GNUC__ */
+    
+static PyObject *__pyx_m;
+static PyObject *__pyx_b;
+static PyObject *__pyx_empty_tuple;
+static PyObject *__pyx_empty_bytes;
+static int __pyx_lineno;
+static int __pyx_clineno = 0;
+static const char * __pyx_cfilenm= __FILE__;
+static const char *__pyx_filename;
+
+
+static const char *__pyx_f[] = {
+  "h5p.pyx",
+  "h5p.pxd",
+  "numpy.pxd",
+  "h5t.pxd",
+  "h5ac.pxd",
+};
+
+/*--- Type declarations ---*/
+struct __pyx_obj_4h5py_8_objects_ObjectID;
+struct __pyx_obj_4h5py_3h5p_PropID;
+struct __pyx_obj_4h5py_3h5p_PropInstanceID;
+struct __pyx_obj_4h5py_3h5p_PropFAID;
+struct __pyx_obj_4h5py_4h5ac_CacheConfig;
+struct __pyx_obj_4h5py_3h5t_TypeID;
+struct __pyx_obj_4h5py_3h5t_TypeBitfieldID;
+struct __pyx_obj_4h5py_3h5p_PropCreateID;
+struct __pyx_obj_4h5py_3h5p_PropFCID;
+struct __pyx_obj_4h5py_3h5p_PropClassID;
+struct __pyx_obj_4h5py_3h5t_TypeCompositeID;
+struct __pyx_obj_4h5py_3h5t_TypeCompoundID;
+struct __pyx_obj_4h5py_3h5t_TypeVlenID;
+struct __pyx_obj_4h5py_3h5p_PropOCID;
+struct __pyx_obj_4h5py_3h5p_PropLCID;
+struct __pyx_obj_4h5py_3h5p_PropGCID;
+struct __pyx_obj_4h5py_3h5p_PropDCID;
+struct __pyx_obj_4h5py_3h5t_TypeTimeID;
+struct __pyx_obj_4h5py_3h5t_TypeArrayID;
+struct __pyx_obj_4h5py_3h5t_TypeAtomicID;
+struct __pyx_obj_4h5py_3h5t_TypeFloatID;
+struct __pyx_obj_4h5py_3h5p_PropDAID;
+struct __pyx_obj_4h5py_3h5t_TypeStringID;
+struct __pyx_obj_4h5py_3h5t_TypeOpaqueID;
+struct __pyx_obj_4h5py_3h5t_TypeEnumID;
+struct __pyx_obj_4h5py_3h5p_PropCopyID;
+struct __pyx_obj_4h5py_3h5t_TypeIntegerID;
+struct __pyx_obj_4h5py_3h5t_TypeReferenceID;
+struct __pyx_obj_4h5py_3h5p_PropDXID;
+struct __pyx_obj_4h5py_3h5p_PropLAID;
+struct __pyx_opt_args_4h5py_5utils_check_numpy_read;
+struct __pyx_opt_args_4h5py_5utils_check_numpy_write;
+
+/* "utils.pxd":17
+ * cdef void efree(void* ptr)
+ * 
+ * cpdef int check_numpy_read(ndarray arr, hid_t space_id=*) except -1             # <<<<<<<<<<<<<<
+ * cpdef int check_numpy_write(ndarray arr, hid_t space_id=*) except -1
+ * 
+ */
+struct __pyx_opt_args_4h5py_5utils_check_numpy_read {
+  int __pyx_n;
+  hid_t space_id;
+};
+
+/* "utils.pxd":18
+ * 
+ * cpdef int check_numpy_read(ndarray arr, hid_t space_id=*) except -1
+ * cpdef int check_numpy_write(ndarray arr, hid_t space_id=*) except -1             # <<<<<<<<<<<<<<
+ * 
+ * cdef int convert_tuple(object tuple, hsize_t *dims, hsize_t rank) except -1
+ */
+struct __pyx_opt_args_4h5py_5utils_check_numpy_write {
+  int __pyx_n;
+  hid_t space_id;
+};
+struct __pyx_opt_args_4h5py_3h5t_py_create;
+
+/* "h5t.pxd":69
+ * 
+ * cpdef TypeID typewrap(hid_t id_)
+ * cpdef TypeID py_create(object dtype, bint logical=*)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+struct __pyx_opt_args_4h5py_3h5t_py_create {
+  int __pyx_n;
+  int logical;
+};
+
+/* "_objects.pxd":12
+ * from defs cimport *
+ * 
+ * cdef class ObjectID:             # <<<<<<<<<<<<<<
+ * 
+ *     cdef object __weakref__
+ */
+struct __pyx_obj_4h5py_8_objects_ObjectID {
+  PyObject_HEAD
+  PyObject *__weakref__;
+  hid_t id;
+  int locked;
+  PyObject *_hash;
+};
+
+
+/* "h5py/h5p.pxd":16
+ * # --- Base classes ---
+ * 
+ * cdef class PropID(ObjectID):             # <<<<<<<<<<<<<<
+ *     """ Base class for all property lists """
+ *     pass
+ */
+struct __pyx_obj_4h5py_3h5p_PropID {
+  struct __pyx_obj_4h5py_8_objects_ObjectID __pyx_base;
+};
+
+
+/* "h5py/h5p.pxd":26
+ *     pass
+ * 
+ * cdef class PropInstanceID(PropID):             # <<<<<<<<<<<<<<
+ *     """ Represents an instance of a property list class (i.e. an actual list
+ *         which can be passed on to other API functions).
+ */
+struct __pyx_obj_4h5py_3h5p_PropInstanceID {
+  struct __pyx_obj_4h5py_3h5p_PropID __pyx_base;
+};
+
+
+/* "h5py/h5p.pxd":59
+ * # --- Object access ---
+ * 
+ * cdef class PropFAID(PropInstanceID):             # <<<<<<<<<<<<<<
+ *     """ File access property list """
+ *     pass
+ */
+struct __pyx_obj_4h5py_3h5p_PropFAID {
+  struct __pyx_obj_4h5py_3h5p_PropInstanceID __pyx_base;
+};
+
+
+/* "h5ac.pxd":12
+ * from defs cimport *
+ * 
+ * cdef class CacheConfig:             # <<<<<<<<<<<<<<
+ *     cdef H5AC_cache_config_t cache_config
+ */
+struct __pyx_obj_4h5py_4h5ac_CacheConfig {
+  PyObject_HEAD
+  H5AC_cache_config_t cache_config;
+};
+
+
+/* "h5t.pxd":14
+ * from _objects cimport class ObjectID
+ * 
+ * cdef class TypeID(ObjectID):             # <<<<<<<<<<<<<<
+ * 
+ *     cdef object py_dtype(self)
+ */
+struct __pyx_obj_4h5py_3h5t_TypeID {
+  struct __pyx_obj_4h5py_8_objects_ObjectID __pyx_base;
+  struct __pyx_vtabstruct_4h5py_3h5t_TypeID *__pyx_vtab;
+};
+
+
+/* "h5t.pxd":37
+ *     pass
+ * 
+ * cdef class TypeBitfieldID(TypeID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+struct __pyx_obj_4h5py_3h5t_TypeBitfieldID {
+  struct __pyx_obj_4h5py_3h5t_TypeID __pyx_base;
+};
+
+
+/* "h5py/h5p.pxd":32
+ *     pass
+ * 
+ * cdef class PropCreateID(PropInstanceID):             # <<<<<<<<<<<<<<
+ *     """ Base class for all object creation lists.
+ * 
+ */
+struct __pyx_obj_4h5py_3h5p_PropCreateID {
+  struct __pyx_obj_4h5py_3h5p_PropInstanceID __pyx_base;
+};
+
+
+/* "h5py/h5p.pxd":52
+ *     pass
+ * 
+ * cdef class PropFCID(PropCreateID):             # <<<<<<<<<<<<<<
+ *     """ File creation property list """
+ *     pass
+ */
+struct __pyx_obj_4h5py_3h5p_PropFCID {
+  struct __pyx_obj_4h5py_3h5p_PropCreateID __pyx_base;
+};
+
+
+/* "h5py/h5p.pxd":20
+ *     pass
+ * 
+ * cdef class PropClassID(PropID):             # <<<<<<<<<<<<<<
+ *     """ Represents an HDF5 property list class.  These can be either (locked)
+ *         library-defined classes or user-created classes.
+ */
+struct __pyx_obj_4h5py_3h5p_PropClassID {
+  struct __pyx_obj_4h5py_3h5p_PropID __pyx_base;
+};
+
+
+/* "h5t.pxd":56
+ * # --- Enums & compound types ---
+ * 
+ * cdef class TypeCompositeID(TypeID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+struct __pyx_obj_4h5py_3h5t_TypeCompositeID {
+  struct __pyx_obj_4h5py_3h5t_TypeID __pyx_base;
+};
+
+
+/* "h5t.pxd":63
+ *     cdef int enum_convert(self, long long *buf, int reverse) except -1
+ * 
+ * cdef class TypeCompoundID(TypeCompositeID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+struct __pyx_obj_4h5py_3h5t_TypeCompoundID {
+  struct __pyx_obj_4h5py_3h5t_TypeCompositeID __pyx_base;
+};
+
+
+/* "h5t.pxd":30
+ *     pass
+ * 
+ * cdef class TypeVlenID(TypeID):             # <<<<<<<<<<<<<<
+ *     # Non-string vlens
+ *     pass
+ */
+struct __pyx_obj_4h5py_3h5t_TypeVlenID {
+  struct __pyx_obj_4h5py_3h5t_TypeID __pyx_base;
+};
+
+
+/* "h5py/h5p.pxd":44
+ * # --- Object creation ---
+ * 
+ * cdef class PropOCID(PropCreateID):             # <<<<<<<<<<<<<<
+ *     """ Object creation property list """
+ *     pass
+ */
+struct __pyx_obj_4h5py_3h5p_PropOCID {
+  struct __pyx_obj_4h5py_3h5p_PropCreateID __pyx_base;
+};
+
+
+/* "h5py/h5p.pxd":70
+ * # --- New in 1.8 ---
+ * 
+ * cdef class PropLCID(PropCreateID):             # <<<<<<<<<<<<<<
+ *     """ Link creation property list """
+ *     pass
+ */
+struct __pyx_obj_4h5py_3h5p_PropLCID {
+  struct __pyx_obj_4h5py_3h5p_PropCreateID __pyx_base;
+};
+
+
+/* "h5py/h5p.pxd":78
+ *     cdef char* _buf
+ * 
+ * cdef class PropGCID(PropOCID):             # <<<<<<<<<<<<<<
+ *     """ Group creation property list """
+ *     pass
+ */
+struct __pyx_obj_4h5py_3h5p_PropGCID {
+  struct __pyx_obj_4h5py_3h5p_PropOCID __pyx_base;
+};
+
+
+/* "h5py/h5p.pxd":48
+ *     pass
+ * 
+ * cdef class PropDCID(PropOCID):             # <<<<<<<<<<<<<<
+ *     """ Dataset creation property list """
+ *     pass
+ */
+struct __pyx_obj_4h5py_3h5p_PropDCID {
+  struct __pyx_obj_4h5py_3h5p_PropOCID __pyx_base;
+};
+
+
+/* "h5t.pxd":34
+ *     pass
+ * 
+ * cdef class TypeTimeID(TypeID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+struct __pyx_obj_4h5py_3h5t_TypeTimeID {
+  struct __pyx_obj_4h5py_3h5t_TypeID __pyx_base;
+};
+
+
+/* "h5t.pxd":20
+ * # --- Top-level classes ---
+ * 
+ * cdef class TypeArrayID(TypeID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+struct __pyx_obj_4h5py_3h5t_TypeArrayID {
+  struct __pyx_obj_4h5py_3h5t_TypeID __pyx_base;
+};
+
+
+/* "h5t.pxd":45
+ * # --- Numeric atomic types ---
+ * 
+ * cdef class TypeAtomicID(TypeID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+struct __pyx_obj_4h5py_3h5t_TypeAtomicID {
+  struct __pyx_obj_4h5py_3h5t_TypeID __pyx_base;
+};
+
+
+/* "h5t.pxd":51
+ *     pass
+ * 
+ * cdef class TypeFloatID(TypeAtomicID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+struct __pyx_obj_4h5py_3h5t_TypeFloatID {
+  struct __pyx_obj_4h5py_3h5t_TypeAtomicID __pyx_base;
+};
+
+
+/* "h5py/h5p.pyx":1165
+ * 
+ * # Dataset access
+ * cdef class PropDAID(PropInstanceID):             # <<<<<<<<<<<<<<
+ * 
+ *     """ Dataset access property list """
+ */
+struct __pyx_obj_4h5py_3h5p_PropDAID {
+  struct __pyx_obj_4h5py_3h5p_PropInstanceID __pyx_base;
+};
+
+
+/* "h5t.pxd":26
+ *     pass
+ * 
+ * cdef class TypeStringID(TypeID):             # <<<<<<<<<<<<<<
+ *     # Both vlen and fixed-len strings
+ *     pass
+ */
+struct __pyx_obj_4h5py_3h5t_TypeStringID {
+  struct __pyx_obj_4h5py_3h5t_TypeID __pyx_base;
+};
+
+
+/* "h5t.pxd":23
+ *     pass
+ * 
+ * cdef class TypeOpaqueID(TypeID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+struct __pyx_obj_4h5py_3h5t_TypeOpaqueID {
+  struct __pyx_obj_4h5py_3h5t_TypeID __pyx_base;
+};
+
+
+/* "h5t.pxd":59
+ *     pass
+ * 
+ * cdef class TypeEnumID(TypeCompositeID):             # <<<<<<<<<<<<<<
+ * 
+ *     cdef int enum_convert(self, long long *buf, int reverse) except -1
+ */
+struct __pyx_obj_4h5py_3h5t_TypeEnumID {
+  struct __pyx_obj_4h5py_3h5t_TypeCompositeID __pyx_base;
+};
+
+
+/* "h5py/h5p.pxd":39
+ *     pass
+ * 
+ * cdef class PropCopyID(PropInstanceID):             # <<<<<<<<<<<<<<
+ *     """ Property list for copying objects (as in h5o.copy) """
+ * 
+ */
+struct __pyx_obj_4h5py_3h5p_PropCopyID {
+  struct __pyx_obj_4h5py_3h5p_PropInstanceID __pyx_base;
+};
+
+
+/* "h5t.pxd":48
+ *     pass
+ * 
+ * cdef class TypeIntegerID(TypeAtomicID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+struct __pyx_obj_4h5py_3h5t_TypeIntegerID {
+  struct __pyx_obj_4h5py_3h5t_TypeAtomicID __pyx_base;
+};
+
+
+/* "h5t.pxd":40
+ *     pass
+ * 
+ * cdef class TypeReferenceID(TypeID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+struct __pyx_obj_4h5py_3h5t_TypeReferenceID {
+  struct __pyx_obj_4h5py_3h5t_TypeID __pyx_base;
+};
+
+
+/* "h5py/h5p.pxd":63
+ *     pass
+ * 
+ * cdef class PropDXID(PropInstanceID):             # <<<<<<<<<<<<<<
+ *     """ Dataset transfer property list """
+ *     pass
+ */
+struct __pyx_obj_4h5py_3h5p_PropDXID {
+  struct __pyx_obj_4h5py_3h5p_PropInstanceID __pyx_base;
+};
+
+
+/* "h5py/h5p.pxd":74
+ *     pass
+ * 
+ * cdef class PropLAID(PropInstanceID):             # <<<<<<<<<<<<<<
+ *     """ Link access property list """
+ *     cdef char* _buf
+ */
+struct __pyx_obj_4h5py_3h5p_PropLAID {
+  struct __pyx_obj_4h5py_3h5p_PropInstanceID __pyx_base;
+  char *_buf;
+};
+
+
+
+/* "h5t.pxd":14
+ * from _objects cimport class ObjectID
+ * 
+ * cdef class TypeID(ObjectID):             # <<<<<<<<<<<<<<
+ * 
+ *     cdef object py_dtype(self)
+ */
+
+struct __pyx_vtabstruct_4h5py_3h5t_TypeID {
+  PyObject *(*py_dtype)(struct __pyx_obj_4h5py_3h5t_TypeID *);
+};
+static struct __pyx_vtabstruct_4h5py_3h5t_TypeID *__pyx_vtabptr_4h5py_3h5t_TypeID;
+
+
+/* "h5t.pxd":56
+ * # --- Enums & compound types ---
+ * 
+ * cdef class TypeCompositeID(TypeID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+
+struct __pyx_vtabstruct_4h5py_3h5t_TypeCompositeID {
+  struct __pyx_vtabstruct_4h5py_3h5t_TypeID __pyx_base;
+};
+static struct __pyx_vtabstruct_4h5py_3h5t_TypeCompositeID *__pyx_vtabptr_4h5py_3h5t_TypeCompositeID;
+
+
+/* "h5t.pxd":63
+ *     cdef int enum_convert(self, long long *buf, int reverse) except -1
+ * 
+ * cdef class TypeCompoundID(TypeCompositeID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+
+struct __pyx_vtabstruct_4h5py_3h5t_TypeCompoundID {
+  struct __pyx_vtabstruct_4h5py_3h5t_TypeCompositeID __pyx_base;
+};
+static struct __pyx_vtabstruct_4h5py_3h5t_TypeCompoundID *__pyx_vtabptr_4h5py_3h5t_TypeCompoundID;
+
+
+/* "h5t.pxd":23
+ *     pass
+ * 
+ * cdef class TypeOpaqueID(TypeID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+
+struct __pyx_vtabstruct_4h5py_3h5t_TypeOpaqueID {
+  struct __pyx_vtabstruct_4h5py_3h5t_TypeID __pyx_base;
+};
+static struct __pyx_vtabstruct_4h5py_3h5t_TypeOpaqueID *__pyx_vtabptr_4h5py_3h5t_TypeOpaqueID;
+
+
+/* "h5t.pxd":20
+ * # --- Top-level classes ---
+ * 
+ * cdef class TypeArrayID(TypeID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+
+struct __pyx_vtabstruct_4h5py_3h5t_TypeArrayID {
+  struct __pyx_vtabstruct_4h5py_3h5t_TypeID __pyx_base;
+};
+static struct __pyx_vtabstruct_4h5py_3h5t_TypeArrayID *__pyx_vtabptr_4h5py_3h5t_TypeArrayID;
+
+
+/* "h5t.pxd":45
+ * # --- Numeric atomic types ---
+ * 
+ * cdef class TypeAtomicID(TypeID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+
+struct __pyx_vtabstruct_4h5py_3h5t_TypeAtomicID {
+  struct __pyx_vtabstruct_4h5py_3h5t_TypeID __pyx_base;
+};
+static struct __pyx_vtabstruct_4h5py_3h5t_TypeAtomicID *__pyx_vtabptr_4h5py_3h5t_TypeAtomicID;
+
+
+/* "h5t.pxd":48
+ *     pass
+ * 
+ * cdef class TypeIntegerID(TypeAtomicID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+
+struct __pyx_vtabstruct_4h5py_3h5t_TypeIntegerID {
+  struct __pyx_vtabstruct_4h5py_3h5t_TypeAtomicID __pyx_base;
+};
+static struct __pyx_vtabstruct_4h5py_3h5t_TypeIntegerID *__pyx_vtabptr_4h5py_3h5t_TypeIntegerID;
+
+
+/* "h5t.pxd":40
+ *     pass
+ * 
+ * cdef class TypeReferenceID(TypeID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+
+struct __pyx_vtabstruct_4h5py_3h5t_TypeReferenceID {
+  struct __pyx_vtabstruct_4h5py_3h5t_TypeID __pyx_base;
+};
+static struct __pyx_vtabstruct_4h5py_3h5t_TypeReferenceID *__pyx_vtabptr_4h5py_3h5t_TypeReferenceID;
+
+
+/* "h5t.pxd":26
+ *     pass
+ * 
+ * cdef class TypeStringID(TypeID):             # <<<<<<<<<<<<<<
+ *     # Both vlen and fixed-len strings
+ *     pass
+ */
+
+struct __pyx_vtabstruct_4h5py_3h5t_TypeStringID {
+  struct __pyx_vtabstruct_4h5py_3h5t_TypeID __pyx_base;
+};
+static struct __pyx_vtabstruct_4h5py_3h5t_TypeStringID *__pyx_vtabptr_4h5py_3h5t_TypeStringID;
+
+
+/* "h5t.pxd":51
+ *     pass
+ * 
+ * cdef class TypeFloatID(TypeAtomicID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+
+struct __pyx_vtabstruct_4h5py_3h5t_TypeFloatID {
+  struct __pyx_vtabstruct_4h5py_3h5t_TypeAtomicID __pyx_base;
+};
+static struct __pyx_vtabstruct_4h5py_3h5t_TypeFloatID *__pyx_vtabptr_4h5py_3h5t_TypeFloatID;
+
+
+/* "h5t.pxd":34
+ *     pass
+ * 
+ * cdef class TypeTimeID(TypeID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+
+struct __pyx_vtabstruct_4h5py_3h5t_TypeTimeID {
+  struct __pyx_vtabstruct_4h5py_3h5t_TypeID __pyx_base;
+};
+static struct __pyx_vtabstruct_4h5py_3h5t_TypeTimeID *__pyx_vtabptr_4h5py_3h5t_TypeTimeID;
+
+
+/* "h5t.pxd":37
+ *     pass
+ * 
+ * cdef class TypeBitfieldID(TypeID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+
+struct __pyx_vtabstruct_4h5py_3h5t_TypeBitfieldID {
+  struct __pyx_vtabstruct_4h5py_3h5t_TypeID __pyx_base;
+};
+static struct __pyx_vtabstruct_4h5py_3h5t_TypeBitfieldID *__pyx_vtabptr_4h5py_3h5t_TypeBitfieldID;
+
+
+/* "h5t.pxd":30
+ *     pass
+ * 
+ * cdef class TypeVlenID(TypeID):             # <<<<<<<<<<<<<<
+ *     # Non-string vlens
+ *     pass
+ */
+
+struct __pyx_vtabstruct_4h5py_3h5t_TypeVlenID {
+  struct __pyx_vtabstruct_4h5py_3h5t_TypeID __pyx_base;
+};
+static struct __pyx_vtabstruct_4h5py_3h5t_TypeVlenID *__pyx_vtabptr_4h5py_3h5t_TypeVlenID;
+
+
+/* "h5t.pxd":59
+ *     pass
+ * 
+ * cdef class TypeEnumID(TypeCompositeID):             # <<<<<<<<<<<<<<
+ * 
+ *     cdef int enum_convert(self, long long *buf, int reverse) except -1
+ */
+
+struct __pyx_vtabstruct_4h5py_3h5t_TypeEnumID {
+  struct __pyx_vtabstruct_4h5py_3h5t_TypeCompositeID __pyx_base;
+  int (*enum_convert)(struct __pyx_obj_4h5py_3h5t_TypeEnumID *, PY_LONG_LONG *, int);
+};
+static struct __pyx_vtabstruct_4h5py_3h5t_TypeEnumID *__pyx_vtabptr_4h5py_3h5t_TypeEnumID;
+#ifndef CYTHON_REFNANNY
+  #define CYTHON_REFNANNY 0
+#endif
+#if CYTHON_REFNANNY
+  typedef struct {
+    void (*INCREF)(void*, PyObject*, int);
+    void (*DECREF)(void*, PyObject*, int);
+    void (*GOTREF)(void*, PyObject*, int);
+    void (*GIVEREF)(void*, PyObject*, int);
+    void* (*SetupContext)(const char*, int, const char*);
+    void (*FinishContext)(void**);
+  } __Pyx_RefNannyAPIStruct;
+  static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL;
+  static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); /*proto*/
+  #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL;
+#ifdef WITH_THREAD
+  #define __Pyx_RefNannySetupContext(name, acquire_gil) \
+          if (acquire_gil) { \
+              PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); \
+              __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__); \
+              PyGILState_Release(__pyx_gilstate_save); \
+          } else { \
+              __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__); \
+          }
+#else
+  #define __Pyx_RefNannySetupContext(name, acquire_gil) \
+          __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__)
+#endif
+  #define __Pyx_RefNannyFinishContext() \
+          __Pyx_RefNanny->FinishContext(&__pyx_refnanny)
+  #define __Pyx_INCREF(r)  __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_DECREF(r)  __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_GOTREF(r)  __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_XINCREF(r)  do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0)
+  #define __Pyx_XDECREF(r)  do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0)
+  #define __Pyx_XGOTREF(r)  do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0)
+  #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0)
+#else
+  #define __Pyx_RefNannyDeclarations
+  #define __Pyx_RefNannySetupContext(name, acquire_gil)
+  #define __Pyx_RefNannyFinishContext()
+  #define __Pyx_INCREF(r) Py_INCREF(r)
+  #define __Pyx_DECREF(r) Py_DECREF(r)
+  #define __Pyx_GOTREF(r)
+  #define __Pyx_GIVEREF(r)
+  #define __Pyx_XINCREF(r) Py_XINCREF(r)
+  #define __Pyx_XDECREF(r) Py_XDECREF(r)
+  #define __Pyx_XGOTREF(r)
+  #define __Pyx_XGIVEREF(r)
+#endif /* CYTHON_REFNANNY */
+#define __Pyx_CLEAR(r)    do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0)
+#define __Pyx_XCLEAR(r)   do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0)
+
+static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name); /*proto*/
+
+static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb); /*proto*/
+static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb); /*proto*/
+
+static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause); /*proto*/
+
+static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type); /*proto*/
+
+static int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, int none_allowed,
+    const char *name, int exact); /*proto*/
+
+#define __Pyx_DelItemInt(o, i, size, to_py_func) (((size) <= sizeof(Py_ssize_t)) ? \
+                                                    __Pyx_DelItemInt_Fast(o, i) : \
+                                                    __Pyx_DelItem_Generic(o, to_py_func(i)))
+static CYTHON_INLINE int __Pyx_DelItem_Generic(PyObject *o, PyObject *j) {
+    int r;
+    if (!j) return -1;
+    r = PyObject_DelItem(o, j);
+    Py_DECREF(j);
+    return r;
+}
+static CYTHON_INLINE int __Pyx_DelItemInt_Fast(PyObject *o, Py_ssize_t i) {
+#if CYTHON_COMPILING_IN_PYPY
+    if (PySequence_Check(o)) {
+        return PySequence_DelItem(o, i);
+    }
+#else
+    PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence;
+    if (likely(m && m->sq_ass_item)) {
+        if (unlikely(i < 0) && likely(m->sq_length)) {
+            Py_ssize_t l = m->sq_length(o);
+            if (unlikely(l < 0)) return -1;
+            i += l;
+        }
+        return m->sq_ass_item(o, i, (PyObject *)NULL);
+    }
+#endif
+    return __Pyx_DelItem_Generic(o, PyInt_FromSsize_t(i));
+}
+
+static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb); /*proto*/
+
+static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact,
+    Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); /*proto*/
+
+static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name); /*proto*/
+
+static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[], \
+    PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args, \
+    const char* function_name); /*proto*/
+
+static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) {
+    PyObject *r;
+    if (!j) return NULL;
+    r = PyObject_GetItem(o, j);
+    Py_DECREF(j);
+    return r;
+}
+#define __Pyx_GetItemInt_List(o, i, size, to_py_func) (((size) <= sizeof(Py_ssize_t)) ? \
+                                                    __Pyx_GetItemInt_List_Fast(o, i) : \
+                                                    __Pyx_GetItemInt_Generic(o, to_py_func(i)))
+static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i) {
+#if CYTHON_COMPILING_IN_CPYTHON
+    if (likely((0 <= i) & (i < PyList_GET_SIZE(o)))) {
+        PyObject *r = PyList_GET_ITEM(o, i);
+        Py_INCREF(r);
+        return r;
+    }
+    else if ((-PyList_GET_SIZE(o) <= i) & (i < 0)) {
+        PyObject *r = PyList_GET_ITEM(o, PyList_GET_SIZE(o) + i);
+        Py_INCREF(r);
+        return r;
+    }
+    return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));
+#else
+    return PySequence_GetItem(o, i);
+#endif
+}
+#define __Pyx_GetItemInt_Tuple(o, i, size, to_py_func) (((size) <= sizeof(Py_ssize_t)) ? \
+                                                    __Pyx_GetItemInt_Tuple_Fast(o, i) : \
+                                                    __Pyx_GetItemInt_Generic(o, to_py_func(i)))
+static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i) {
+#if CYTHON_COMPILING_IN_CPYTHON
+    if (likely((0 <= i) & (i < PyTuple_GET_SIZE(o)))) {
+        PyObject *r = PyTuple_GET_ITEM(o, i);
+        Py_INCREF(r);
+        return r;
+    }
+    else if ((-PyTuple_GET_SIZE(o) <= i) & (i < 0)) {
+        PyObject *r = PyTuple_GET_ITEM(o, PyTuple_GET_SIZE(o) + i);
+        Py_INCREF(r);
+        return r;
+    }
+    return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));
+#else
+    return PySequence_GetItem(o, i);
+#endif
+}
+#define __Pyx_GetItemInt(o, i, size, to_py_func) (((size) <= sizeof(Py_ssize_t)) ? \
+                                                    __Pyx_GetItemInt_Fast(o, i) : \
+                                                    __Pyx_GetItemInt_Generic(o, to_py_func(i)))
+static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i) {
+#if CYTHON_COMPILING_IN_CPYTHON
+    if (PyList_CheckExact(o)) {
+        Py_ssize_t n = (likely(i >= 0)) ? i : i + PyList_GET_SIZE(o);
+        if (likely((n >= 0) & (n < PyList_GET_SIZE(o)))) {
+            PyObject *r = PyList_GET_ITEM(o, n);
+            Py_INCREF(r);
+            return r;
+        }
+    }
+    else if (PyTuple_CheckExact(o)) {
+        Py_ssize_t n = (likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o);
+        if (likely((n >= 0) & (n < PyTuple_GET_SIZE(o)))) {
+            PyObject *r = PyTuple_GET_ITEM(o, n);
+            Py_INCREF(r);
+            return r;
+        }
+    } else {  /* inlined PySequence_GetItem() */
+        PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence;
+        if (likely(m && m->sq_item)) {
+            if (unlikely(i < 0) && likely(m->sq_length)) {
+                Py_ssize_t l = m->sq_length(o);
+                if (unlikely(l < 0)) return NULL;
+                i += l;
+            }
+            return m->sq_item(o, i);
+        }
+    }
+#else
+    if (PySequence_Check(o)) {
+        return PySequence_GetItem(o, i);
+    }
+#endif
+    return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));
+}
+
+static CYTHON_INLINE int __Pyx_CheckKeywordStrings(PyObject *kwdict, const char* function_name, int kw_allowed); /*proto*/
+
+static void __Pyx_call_next_tp_dealloc(PyObject* obj, destructor current_tp_dealloc);
+
+static int __Pyx_call_next_tp_traverse(PyObject* obj, visitproc v, void *a, traverseproc current_tp_traverse);
+
+static void __Pyx_call_next_tp_clear(PyObject* obj, inquiry current_tp_dealloc);
+
+static CYTHON_INLINE void __Pyx_ExceptionSave(PyObject **type, PyObject **value, PyObject **tb); /*proto*/
+static void __Pyx_ExceptionReset(PyObject *type, PyObject *value, PyObject *tb); /*proto*/
+
+static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level); /*proto*/
+
+static CYTHON_INLINE void __Pyx_RaiseImportError(PyObject *name);
+
+static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_hid_t(hid_t);
+
+static CYTHON_INLINE hsize_t __Pyx_PyInt_from_py_hsize_t(PyObject *);
+
+static CYTHON_INLINE hbool_t __Pyx_PyInt_from_py_hbool_t(PyObject *);
+
+static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_hsize_t(hsize_t);
+
+static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_hbool_t(hbool_t);
+
+static CYTHON_INLINE unsigned char __Pyx_PyInt_AsUnsignedChar(PyObject *);
+
+static CYTHON_INLINE unsigned short __Pyx_PyInt_AsUnsignedShort(PyObject *);
+
+static CYTHON_INLINE unsigned int __Pyx_PyInt_AsUnsignedInt(PyObject *);
+
+static CYTHON_INLINE char __Pyx_PyInt_AsChar(PyObject *);
+
+static CYTHON_INLINE short __Pyx_PyInt_AsShort(PyObject *);
+
+static CYTHON_INLINE int __Pyx_PyInt_AsInt(PyObject *);
+
+static CYTHON_INLINE signed char __Pyx_PyInt_AsSignedChar(PyObject *);
+
+static CYTHON_INLINE signed short __Pyx_PyInt_AsSignedShort(PyObject *);
+
+static CYTHON_INLINE signed int __Pyx_PyInt_AsSignedInt(PyObject *);
+
+static CYTHON_INLINE int __Pyx_PyInt_AsLongDouble(PyObject *);
+
+static CYTHON_INLINE unsigned long __Pyx_PyInt_AsUnsignedLong(PyObject *);
+
+static CYTHON_INLINE unsigned PY_LONG_LONG __Pyx_PyInt_AsUnsignedLongLong(PyObject *);
+
+static CYTHON_INLINE long __Pyx_PyInt_AsLong(PyObject *);
+
+static CYTHON_INLINE PY_LONG_LONG __Pyx_PyInt_AsLongLong(PyObject *);
+
+static CYTHON_INLINE signed long __Pyx_PyInt_AsSignedLong(PyObject *);
+
+static CYTHON_INLINE signed PY_LONG_LONG __Pyx_PyInt_AsSignedLongLong(PyObject *);
+
+static int __Pyx_check_binary_version(void);
+
+static int __Pyx_ExportFunction(const char *name, void (*f)(void), const char *sig); /*proto*/
+
+#if !defined(__Pyx_PyIdentifier_FromString)
+#if PY_MAJOR_VERSION < 3
+  #define __Pyx_PyIdentifier_FromString(s) PyString_FromString(s)
+#else
+  #define __Pyx_PyIdentifier_FromString(s) PyUnicode_FromString(s)
+#endif
+#endif
+
+static PyObject *__Pyx_ImportModule(const char *name); /*proto*/
+
+static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name, size_t size, int strict);  /*proto*/
+
+static void* __Pyx_GetVtable(PyObject *dict); /*proto*/
+
+static int __Pyx_ImportFunction(PyObject *module, const char *funcname, void (**f)(void), const char *sig); /*proto*/
+
+typedef struct {
+    int code_line;
+    PyCodeObject* code_object;
+} __Pyx_CodeObjectCacheEntry;
+struct __Pyx_CodeObjectCache {
+    int count;
+    int max_count;
+    __Pyx_CodeObjectCacheEntry* entries;
+};
+static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL};
+static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line);
+static PyCodeObject *__pyx_find_code_object(int code_line);
+static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object);
+
+static void __Pyx_AddTraceback(const char *funcname, int c_line,
+                               int py_line, const char *filename); /*proto*/
+
+static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); /*proto*/
+
+
+/* Module declarations from 'h5py.api_types_ext' */
+
+/* Module declarations from 'h5py.api_types_hdf5' */
+
+/* Module declarations from 'h5py.defs' */
+static herr_t (*__pyx_f_4h5py_4defs_H5Fget_mdc_config)(hid_t, H5AC_cache_config_t *); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Fset_mdc_config)(hid_t, H5AC_cache_config_t *); /*proto*/
+static int (*__pyx_f_4h5py_4defs_H5Idec_ref)(hid_t); /*proto*/
+static int (*__pyx_f_4h5py_4defs_H5Iget_ref)(hid_t); /*proto*/
+static hid_t (*__pyx_f_4h5py_4defs_H5Pcreate)(hid_t); /*proto*/
+static hid_t (*__pyx_f_4h5py_4defs_H5Pcopy)(hid_t); /*proto*/
+static int (*__pyx_f_4h5py_4defs_H5Pget_class)(hid_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Pclose)(hid_t); /*proto*/
+static htri_t (*__pyx_f_4h5py_4defs_H5Pequal)(hid_t, hid_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Pclose_class)(hid_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Pget_version)(hid_t, unsigned int *, unsigned int *, unsigned int *, unsigned int *); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Pset_userblock)(hid_t, hsize_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Pget_userblock)(hid_t, hsize_t *); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Pset_sizes)(hid_t, size_t, size_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Pget_sizes)(hid_t, size_t *, size_t *); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Pset_fclose_degree)(hid_t, enum H5F_close_degree_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Pget_fclose_degree)(hid_t, enum H5F_close_degree_t *); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Pset_fapl_core)(hid_t, size_t, hbool_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Pget_fapl_core)(hid_t, size_t *, hbool_t *); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Pset_fapl_family)(hid_t, hsize_t, hid_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Pget_fapl_family)(hid_t, hsize_t *, hid_t *); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Pset_fapl_log)(hid_t, char *, unsigned int, size_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Pset_cache)(hid_t, int, int, size_t, double); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Pget_cache)(hid_t, int *, int *, size_t *, double *); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Pset_fapl_sec2)(hid_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Pset_fapl_stdio)(hid_t); /*proto*/
+static hid_t (*__pyx_f_4h5py_4defs_H5Pget_driver)(hid_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Pset_layout)(hid_t, int); /*proto*/
+static H5D_layout_t (*__pyx_f_4h5py_4defs_H5Pget_layout)(hid_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Pset_chunk)(hid_t, int, hsize_t *); /*proto*/
+static int (*__pyx_f_4h5py_4defs_H5Pget_chunk)(hid_t, int, hsize_t *); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Pset_deflate)(hid_t, int); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Pset_fill_value)(hid_t, hid_t, void *); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Pget_fill_value)(hid_t, hid_t, void *); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Pfill_value_defined)(hid_t, H5D_fill_value_t *); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Pset_fill_time)(hid_t, H5D_fill_time_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Pget_fill_time)(hid_t, H5D_fill_time_t *); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Pset_alloc_time)(hid_t, H5D_alloc_time_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Pget_alloc_time)(hid_t, H5D_alloc_time_t *); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Pset_filter)(hid_t, H5Z_filter_t, unsigned int, size_t, unsigned int *); /*proto*/
+static htri_t (*__pyx_f_4h5py_4defs_H5Pall_filters_avail)(hid_t); /*proto*/
+static int (*__pyx_f_4h5py_4defs_H5Pget_nfilters)(hid_t); /*proto*/
+static H5Z_filter_t (*__pyx_f_4h5py_4defs_H5Pget_filter)(hid_t, unsigned int, unsigned int *, size_t *, unsigned int *, size_t, char *); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Pget_filter_by_id)(hid_t, H5Z_filter_t, unsigned int *, size_t *, unsigned int *, size_t, char *); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Premove_filter)(hid_t, H5Z_filter_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Pset_fletcher32)(hid_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Pset_shuffle)(hid_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Pset_szip)(hid_t, unsigned int, unsigned int); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Pset_scaleoffset)(hid_t, enum H5Z_SO_scale_type_t, int); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Pset_chunk_cache)(hid_t, size_t, size_t, double); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Pget_chunk_cache)(hid_t, size_t *, size_t *, double *); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Pset_sieve_buf_size)(hid_t, size_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Pget_sieve_buf_size)(hid_t, size_t *); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Pset_nlinks)(hid_t, size_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Pget_nlinks)(hid_t, size_t *); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Pset_elink_prefix)(hid_t, char *); /*proto*/
+static Py_ssize_t (*__pyx_f_4h5py_4defs_H5Pget_elink_prefix)(hid_t, char *, size_t); /*proto*/
+static hid_t (*__pyx_f_4h5py_4defs_H5Pget_elink_fapl)(hid_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Pset_elink_fapl)(hid_t, hid_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Pset_create_intermediate_group)(hid_t, unsigned int); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Pget_create_intermediate_group)(hid_t, unsigned int *); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Pset_copy_object)(hid_t, unsigned int); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Pget_copy_object)(hid_t, unsigned int *); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Pset_char_encoding)(hid_t, H5T_cset_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Pget_char_encoding)(hid_t, H5T_cset_t *); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Pset_obj_track_times)(hid_t, hbool_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Pget_obj_track_times)(hid_t, hbool_t *); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Pset_link_creation_order)(hid_t, unsigned int); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Pget_link_creation_order)(hid_t, unsigned int *); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Pset_libver_bounds)(hid_t, H5F_libver_t, H5F_libver_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Pget_libver_bounds)(hid_t, H5F_libver_t *, H5F_libver_t *); /*proto*/
+
+/* Module declarations from 'h5py._objects' */
+static PyTypeObject *__pyx_ptype_4h5py_8_objects_ObjectID = 0;
+
+/* Module declarations from 'numpy' */
+
+/* Module declarations from 'h5py.numpy' */
+static PyTypeObject *__pyx_ptype_4h5py_5numpy_dtype = 0;
+static PyTypeObject *__pyx_ptype_4h5py_5numpy_ndarray = 0;
+
+/* Module declarations from 'h5py.utils' */
+static void *(*__pyx_f_4h5py_5utils_emalloc)(size_t); /*proto*/
+static void (*__pyx_f_4h5py_5utils_efree)(void *); /*proto*/
+static int (*__pyx_f_4h5py_5utils_check_numpy_read)(PyArrayObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_4h5py_5utils_check_numpy_read *__pyx_optional_args); /*proto*/
+static int (*__pyx_f_4h5py_5utils_check_numpy_write)(PyArrayObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_4h5py_5utils_check_numpy_write *__pyx_optional_args); /*proto*/
+static int (*__pyx_f_4h5py_5utils_convert_tuple)(PyObject *, hsize_t *, hsize_t); /*proto*/
+static PyObject *(*__pyx_f_4h5py_5utils_convert_dims)(hsize_t *, hsize_t); /*proto*/
+static int (*__pyx_f_4h5py_5utils_require_tuple)(PyObject *, int, int, char *); /*proto*/
+
+/* Module declarations from 'h5py.h5t' */
+static PyTypeObject *__pyx_ptype_4h5py_3h5t_TypeID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5t_TypeArrayID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5t_TypeOpaqueID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5t_TypeStringID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5t_TypeVlenID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5t_TypeTimeID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5t_TypeBitfieldID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5t_TypeReferenceID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5t_TypeAtomicID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5t_TypeIntegerID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5t_TypeFloatID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5t_TypeCompositeID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5t_TypeEnumID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5t_TypeCompoundID = 0;
+static struct __pyx_obj_4h5py_3h5t_TypeID *(*__pyx_f_4h5py_3h5t_py_create)(PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_4h5py_3h5t_py_create *__pyx_optional_args); /*proto*/
+
+/* Module declarations from 'h5py.h5ac' */
+static PyTypeObject *__pyx_ptype_4h5py_4h5ac_CacheConfig = 0;
+
+/* Module declarations from 'h5py.h5p' */
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropClassID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropInstanceID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropCreateID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropCopyID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropOCID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropDCID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropFCID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropFAID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropDXID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropLCID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropLAID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropGCID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5p_PropDAID = 0;
+static hid_t __pyx_f_4h5py_3h5p_pdefault(struct __pyx_obj_4h5py_3h5p_PropID *); /*proto*/
+static PyObject *__pyx_f_4h5py_3h5p_propwrap(hid_t); /*proto*/
+static PyObject *__pyx_f_4h5py_3h5p_lockcls(hid_t); /*proto*/
+#define __Pyx_MODULE_NAME "h5py.h5p"
+int __pyx_module_is_main_h5py__h5p = 0;
+
+/* Implementation of 'h5py.h5p' */
+static PyObject *__pyx_builtin_ValueError;
+static PyObject *__pyx_builtin_NotImplemented;
+static PyObject *__pyx_builtin_TypeError;
+static PyObject *__pyx_builtin_RuntimeError;
+static PyObject *__pyx_pf_4h5py_3h5p_create(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_3h5p_PropClassID *__pyx_v_cls); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5p_6PropID_equal(struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_self, struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_plist); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5p_6PropID_2__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_how); /* proto */
+static Py_hash_t __pyx_pf_4h5py_3h5p_6PropID_4__hash__(CYTHON_UNUSED struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5p_11PropClassID___richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_how); /* proto */
+static Py_hash_t __pyx_pf_4h5py_3h5p_11PropClassID_2__hash__(struct __pyx_obj_4h5py_3h5p_PropClassID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5p_14PropInstanceID_copy(struct __pyx_obj_4h5py_3h5p_PropInstanceID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5p_14PropInstanceID_2_close(struct __pyx_obj_4h5py_3h5p_PropInstanceID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5p_14PropInstanceID_4get_class(struct __pyx_obj_4h5py_3h5p_PropInstanceID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5p_10PropCopyID_set_copy_object(struct __pyx_obj_4h5py_3h5p_PropCopyID *__pyx_v_self, unsigned int __pyx_v_flags); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5p_10PropCopyID_2get_copy_object(struct __pyx_obj_4h5py_3h5p_PropCopyID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5p_8PropFCID_get_version(struct __pyx_obj_4h5py_3h5p_PropFCID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5p_8PropFCID_2set_userblock(struct __pyx_obj_4h5py_3h5p_PropFCID *__pyx_v_self, hsize_t __pyx_v_size); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5p_8PropFCID_4get_userblock(struct __pyx_obj_4h5py_3h5p_PropFCID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5p_8PropFCID_6set_sizes(struct __pyx_obj_4h5py_3h5p_PropFCID *__pyx_v_self, size_t __pyx_v_addr, size_t __pyx_v_size); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5p_8PropFCID_8get_sizes(struct __pyx_obj_4h5py_3h5p_PropFCID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5p_8PropFCID_10set_link_creation_order(struct __pyx_obj_4h5py_3h5p_PropFCID *__pyx_v_self, unsigned int __pyx_v_flags); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5p_8PropFCID_12get_link_creation_order(struct __pyx_obj_4h5py_3h5p_PropFCID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5p_8PropDCID_set_layout(struct __pyx_obj_4h5py_3h5p_PropDCID *__pyx_v_self, int __pyx_v_layout_code); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5p_8PropDCID_2get_layout(struct __pyx_obj_4h5py_3h5p_PropDCID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5p_8PropDCID_4set_chunk(struct __pyx_obj_4h5py_3h5p_PropDCID *__pyx_v_self, PyObject *__pyx_v_chunksize); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5p_8PropDCID_6get_chunk(struct __pyx_obj_4h5py_3h5p_PropDCID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5p_8PropDCID_8set_fill_value(struct __pyx_obj_4h5py_3h5p_PropDCID *__pyx_v_self, PyArrayObject *__pyx_v_value); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5p_8PropDCID_10get_fill_value(struct __pyx_obj_4h5py_3h5p_PropDCID *__pyx_v_self, PyArrayObject *__pyx_v_value); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5p_8PropDCID_12fill_value_defined(struct __pyx_obj_4h5py_3h5p_PropDCID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5p_8PropDCID_14set_fill_time(struct __pyx_obj_4h5py_3h5p_PropDCID *__pyx_v_self, int __pyx_v_fill_time); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5p_8PropDCID_16get_fill_time(struct __pyx_obj_4h5py_3h5p_PropDCID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5p_8PropDCID_18set_alloc_time(struct __pyx_obj_4h5py_3h5p_PropDCID *__pyx_v_self, int __pyx_v_alloc_time); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5p_8PropDCID_20get_alloc_time(struct __pyx_obj_4h5py_3h5p_PropDCID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5p_8PropDCID_22set_filter(struct __pyx_obj_4h5py_3h5p_PropDCID *__pyx_v_self, int __pyx_v_filter_code, unsigned int __pyx_v_flags, PyObject *__pyx_v_values); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5p_8PropDCID_24all_filters_avail(struct __pyx_obj_4h5py_3h5p_PropDCID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5p_8PropDCID_26get_nfilters(struct __pyx_obj_4h5py_3h5p_PropDCID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5p_8PropDCID_28get_filter(struct __pyx_obj_4h5py_3h5p_PropDCID *__pyx_v_self, int __pyx_v_filter_idx); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5p_8PropDCID_30_has_filter(struct __pyx_obj_4h5py_3h5p_PropDCID *__pyx_v_self, int __pyx_v_filter_code); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5p_8PropDCID_32get_filter_by_id(struct __pyx_obj_4h5py_3h5p_PropDCID *__pyx_v_self, int __pyx_v_filter_code); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5p_8PropDCID_34remove_filter(struct __pyx_obj_4h5py_3h5p_PropDCID *__pyx_v_self, int __pyx_v_filter_class); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5p_8PropDCID_36set_deflate(struct __pyx_obj_4h5py_3h5p_PropDCID *__pyx_v_self, unsigned int __pyx_v_level); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5p_8PropDCID_38set_fletcher32(struct __pyx_obj_4h5py_3h5p_PropDCID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5p_8PropDCID_40set_shuffle(struct __pyx_obj_4h5py_3h5p_PropDCID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5p_8PropDCID_42set_szip(struct __pyx_obj_4h5py_3h5p_PropDCID *__pyx_v_self, unsigned int __pyx_v_options, unsigned int __pyx_v_pixels_per_block); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5p_8PropDCID_44set_scaleoffset(struct __pyx_obj_4h5py_3h5p_PropDCID *__pyx_v_self, enum H5Z_SO_scale_type_t __pyx_v_scale_type, int __pyx_v_scale_factor); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5p_8PropFAID_set_fclose_degree(struct __pyx_obj_4h5py_3h5p_PropFAID *__pyx_v_self, int __pyx_v_close_degree); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5p_8PropFAID_2get_fclose_degree(struct __pyx_obj_4h5py_3h5p_PropFAID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5p_8PropFAID_4set_fapl_core(struct __pyx_obj_4h5py_3h5p_PropFAID *__pyx_v_self, size_t __pyx_v_block_size, hbool_t __pyx_v_backing_store); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5p_8PropFAID_6get_fapl_core(struct __pyx_obj_4h5py_3h5p_PropFAID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5p_8PropFAID_8set_fapl_family(struct __pyx_obj_4h5py_3h5p_PropFAID *__pyx_v_self, hsize_t __pyx_v_memb_size, struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_memb_fapl); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5p_8PropFAID_10get_fapl_family(struct __pyx_obj_4h5py_3h5p_PropFAID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5p_8PropFAID_12set_fapl_log(struct __pyx_obj_4h5py_3h5p_PropFAID *__pyx_v_self, char *__pyx_v_logfile, unsigned int __pyx_v_flags, size_t __pyx_v_buf_size); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5p_8PropFAID_14set_fapl_sec2(struct __pyx_obj_4h5py_3h5p_PropFAID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5p_8PropFAID_16set_fapl_stdio(struct __pyx_obj_4h5py_3h5p_PropFAID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5p_8PropFAID_18get_driver(struct __pyx_obj_4h5py_3h5p_PropFAID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5p_8PropFAID_20set_cache(struct __pyx_obj_4h5py_3h5p_PropFAID *__pyx_v_self, int __pyx_v_mdc, int __pyx_v_rdcc, size_t __pyx_v_rdcc_nbytes, double __pyx_v_rdcc_w0); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5p_8PropFAID_22get_cache(struct __pyx_obj_4h5py_3h5p_PropFAID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5p_8PropFAID_24set_sieve_buf_size(struct __pyx_obj_4h5py_3h5p_PropFAID *__pyx_v_self, size_t __pyx_v_size); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5p_8PropFAID_26get_sieve_buf_size(struct __pyx_obj_4h5py_3h5p_PropFAID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5p_8PropFAID_28set_libver_bounds(struct __pyx_obj_4h5py_3h5p_PropFAID *__pyx_v_self, int __pyx_v_low, int __pyx_v_high); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5p_8PropFAID_30get_libver_bounds(struct __pyx_obj_4h5py_3h5p_PropFAID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5p_8PropFAID_32get_mdc_config(struct __pyx_obj_4h5py_3h5p_PropFAID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5p_8PropFAID_34set_mdc_config(struct __pyx_obj_4h5py_3h5p_PropFAID *__pyx_v_self, struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_config); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5p_8PropLCID_set_char_encoding(struct __pyx_obj_4h5py_3h5p_PropLCID *__pyx_v_self, int __pyx_v_encoding); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5p_8PropLCID_2get_char_encoding(struct __pyx_obj_4h5py_3h5p_PropLCID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5p_8PropLCID_4set_create_intermediate_group(struct __pyx_obj_4h5py_3h5p_PropLCID *__pyx_v_self, int __pyx_v_create); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5p_8PropLCID_6get_create_intermediate_group(struct __pyx_obj_4h5py_3h5p_PropLCID *__pyx_v_self); /* proto */
+static int __pyx_pf_4h5py_3h5p_8PropLAID___cinit__(struct __pyx_obj_4h5py_3h5p_PropLAID *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_args); /* proto */
+static void __pyx_pf_4h5py_3h5p_8PropLAID_2__dealloc__(struct __pyx_obj_4h5py_3h5p_PropLAID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5p_8PropLAID_4set_nlinks(struct __pyx_obj_4h5py_3h5p_PropLAID *__pyx_v_self, size_t __pyx_v_nlinks); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5p_8PropLAID_6get_nlinks(struct __pyx_obj_4h5py_3h5p_PropLAID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5p_8PropLAID_8set_elink_prefix(struct __pyx_obj_4h5py_3h5p_PropLAID *__pyx_v_self, char *__pyx_v_prefix); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5p_8PropLAID_10get_elink_prefix(struct __pyx_obj_4h5py_3h5p_PropLAID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5p_8PropLAID_12set_elink_fapl(struct __pyx_obj_4h5py_3h5p_PropLAID *__pyx_v_self, struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_fapl); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5p_8PropLAID_14get_elink_fapl(struct __pyx_obj_4h5py_3h5p_PropLAID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5p_8PropGCID_set_link_creation_order(struct __pyx_obj_4h5py_3h5p_PropGCID *__pyx_v_self, unsigned int __pyx_v_flags); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5p_8PropGCID_2get_link_creation_order(struct __pyx_obj_4h5py_3h5p_PropGCID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5p_8PropOCID_set_obj_track_times(struct __pyx_obj_4h5py_3h5p_PropOCID *__pyx_v_self, PyObject *__pyx_v_track_times); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5p_8PropOCID_2get_obj_track_times(struct __pyx_obj_4h5py_3h5p_PropOCID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5p_8PropDAID_set_chunk_cache(struct __pyx_obj_4h5py_3h5p_PropDAID *__pyx_v_self, size_t __pyx_v_rdcc_nslots, size_t __pyx_v_rdcc_nbytes, double __pyx_v_rdcc_w0); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5p_8PropDAID_2get_chunk_cache(struct __pyx_obj_4h5py_3h5p_PropDAID *__pyx_v_self); /* proto */
+static char __pyx_k_1[] = "No class found for ID %d";
+static char __pyx_k_2[] = "Property lists are unhashable";
+static char __pyx_k_5[] = "Filter index must be a non-negative integer";
+static char __pyx_k_7[] = "Failed to get hit rate";
+static char __pyx_k_10[] = "\n    HDF5 property list interface.\n";
+static char __pyx_k_13[] = "/home/computer/h5py/h5py/h5p.pyx";
+static char __pyx_k_14[] = "h5py.h5p";
+static char __pyx_k__cls[] = "cls";
+static char __pyx_k__low[] = "low";
+static char __pyx_k__mdc[] = "mdc";
+static char __pyx_k__addr[] = "addr";
+static char __pyx_k__h5py[] = "h5py";
+static char __pyx_k__high[] = "high";
+static char __pyx_k__lock[] = "lock";
+static char __pyx_k__open[] = "open";
+static char __pyx_k__rdcc[] = "rdcc";
+static char __pyx_k__size[] = "size";
+static char __pyx_k__dtype[] = "dtype";
+static char __pyx_k__equal[] = "equal";
+static char __pyx_k__flags[] = "flags";
+static char __pyx_k__level[] = "level";
+static char __pyx_k__newid[] = "newid";
+static char __pyx_k__valid[] = "valid";
+static char __pyx_k__create[] = "create";
+static char __pyx_k__values[] = "values";
+static char __pyx_k__DEFAULT[] = "DEFAULT";
+static char __pyx_k__logfile[] = "logfile";
+static char __pyx_k__options[] = "options";
+static char __pyx_k__rdcc_w0[] = "rdcc_w0";
+static char __pyx_k__NO_CLASS[] = "NO_CLASS";
+static char __pyx_k____exit__[] = "__exit__";
+static char __pyx_k____main__[] = "__main__";
+static char __pyx_k____test__[] = "__test__";
+static char __pyx_k___objects[] = "_objects";
+static char __pyx_k__buf_size[] = "buf_size";
+static char __pyx_k__registry[] = "registry";
+static char __pyx_k__TypeError[] = "TypeError";
+static char __pyx_k____enter__[] = "__enter__";
+static char __pyx_k__chunksize[] = "chunksize";
+static char __pyx_k__memb_fapl[] = "memb_fapl";
+static char __pyx_k__memb_size[] = "memb_size";
+static char __pyx_k__ValueError[] = "ValueError";
+static char __pyx_k__block_size[] = "block_size";
+static char __pyx_k__get_filter[] = "get_filter";
+static char __pyx_k__scale_type[] = "scale_type";
+static char __pyx_k__FILE_ACCESS[] = "FILE_ACCESS";
+static char __pyx_k__FILE_CREATE[] = "FILE_CREATE";
+static char __pyx_k__LINK_ACCESS[] = "LINK_ACCESS";
+static char __pyx_k__LINK_CREATE[] = "LINK_CREATE";
+static char __pyx_k__OBJECT_COPY[] = "OBJECT_COPY";
+static char __pyx_k____richcmp__[] = "__richcmp__";
+static char __pyx_k___has_filter[] = "_has_filter";
+static char __pyx_k__filter_code[] = "filter_code";
+static char __pyx_k__rdcc_nbytes[] = "rdcc_nbytes";
+static char __pyx_k__rdcc_nslots[] = "rdcc_nslots";
+static char __pyx_k__DATASET_XFER[] = "DATASET_XFER";
+static char __pyx_k__GROUP_CREATE[] = "GROUP_CREATE";
+static char __pyx_k__RuntimeError[] = "RuntimeError";
+static char __pyx_k__get_nfilters[] = "get_nfilters";
+static char __pyx_k__scale_factor[] = "scale_factor";
+static char __pyx_k__OBJECT_CREATE[] = "OBJECT_CREATE";
+static char __pyx_k__backing_store[] = "backing_store";
+static char __pyx_k__DATASET_ACCESS[] = "DATASET_ACCESS";
+static char __pyx_k__DATASET_CREATE[] = "DATASET_CREATE";
+static char __pyx_k__NotImplemented[] = "NotImplemented";
+static char __pyx_k__pixels_per_block[] = "pixels_per_block";
+static char __pyx_k__CRT_ORDER_INDEXED[] = "CRT_ORDER_INDEXED";
+static char __pyx_k__CRT_ORDER_TRACKED[] = "CRT_ORDER_TRACKED";
+static PyObject *__pyx_kp_s_1;
+static PyObject *__pyx_kp_s_13;
+static PyObject *__pyx_n_s_14;
+static PyObject *__pyx_kp_s_2;
+static PyObject *__pyx_kp_s_5;
+static PyObject *__pyx_kp_s_7;
+static PyObject *__pyx_n_s__CRT_ORDER_INDEXED;
+static PyObject *__pyx_n_s__CRT_ORDER_TRACKED;
+static PyObject *__pyx_n_s__DATASET_ACCESS;
+static PyObject *__pyx_n_s__DATASET_CREATE;
+static PyObject *__pyx_n_s__DATASET_XFER;
+static PyObject *__pyx_n_s__DEFAULT;
+static PyObject *__pyx_n_s__FILE_ACCESS;
+static PyObject *__pyx_n_s__FILE_CREATE;
+static PyObject *__pyx_n_s__GROUP_CREATE;
+static PyObject *__pyx_n_s__LINK_ACCESS;
+static PyObject *__pyx_n_s__LINK_CREATE;
+static PyObject *__pyx_n_s__NO_CLASS;
+static PyObject *__pyx_n_s__NotImplemented;
+static PyObject *__pyx_n_s__OBJECT_COPY;
+static PyObject *__pyx_n_s__OBJECT_CREATE;
+static PyObject *__pyx_n_s__RuntimeError;
+static PyObject *__pyx_n_s__TypeError;
+static PyObject *__pyx_n_s__ValueError;
+static PyObject *__pyx_n_s____enter__;
+static PyObject *__pyx_n_s____exit__;
+static PyObject *__pyx_n_s____main__;
+static PyObject *__pyx_n_s____richcmp__;
+static PyObject *__pyx_n_s____test__;
+static PyObject *__pyx_n_s___has_filter;
+static PyObject *__pyx_n_s___objects;
+static PyObject *__pyx_n_s__addr;
+static PyObject *__pyx_n_s__backing_store;
+static PyObject *__pyx_n_s__block_size;
+static PyObject *__pyx_n_s__buf_size;
+static PyObject *__pyx_n_s__cls;
+static PyObject *__pyx_n_s__create;
+static PyObject *__pyx_n_s__dtype;
+static PyObject *__pyx_n_s__equal;
+static PyObject *__pyx_n_s__filter_code;
+static PyObject *__pyx_n_s__flags;
+static PyObject *__pyx_n_s__get_filter;
+static PyObject *__pyx_n_s__get_nfilters;
+static PyObject *__pyx_n_s__h5py;
+static PyObject *__pyx_n_s__high;
+static PyObject *__pyx_n_s__level;
+static PyObject *__pyx_n_s__lock;
+static PyObject *__pyx_n_s__logfile;
+static PyObject *__pyx_n_s__low;
+static PyObject *__pyx_n_s__mdc;
+static PyObject *__pyx_n_s__memb_fapl;
+static PyObject *__pyx_n_s__memb_size;
+static PyObject *__pyx_n_s__newid;
+static PyObject *__pyx_n_s__open;
+static PyObject *__pyx_n_s__options;
+static PyObject *__pyx_n_s__pixels_per_block;
+static PyObject *__pyx_n_s__rdcc;
+static PyObject *__pyx_n_s__rdcc_nbytes;
+static PyObject *__pyx_n_s__rdcc_nslots;
+static PyObject *__pyx_n_s__rdcc_w0;
+static PyObject *__pyx_n_s__registry;
+static PyObject *__pyx_n_s__scale_factor;
+static PyObject *__pyx_n_s__scale_type;
+static PyObject *__pyx_n_s__size;
+static PyObject *__pyx_n_s__valid;
+static PyObject *__pyx_n_s__values;
+static PyObject *__pyx_k_tuple_3;
+static PyObject *__pyx_k_tuple_4;
+static PyObject *__pyx_k_tuple_6;
+static PyObject *__pyx_k_tuple_8;
+static PyObject *__pyx_k_tuple_9;
+static PyObject *__pyx_k_tuple_11;
+static PyObject *__pyx_k_codeobj_12;
+
+/* "h5py/h5p.pyx":30
+ * # === C API ===================================================================
+ * 
+ * cdef hid_t pdefault(PropID pid):             # <<<<<<<<<<<<<<
+ * 
+ *     if pid is None:
+ */
+
+static hid_t __pyx_f_4h5py_3h5p_pdefault(struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_pid) {
+  hid_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  __Pyx_RefNannySetupContext("pdefault", 0);
+
+  /* "h5py/h5p.pyx":32
+ * cdef hid_t pdefault(PropID pid):
+ * 
+ *     if pid is None:             # <<<<<<<<<<<<<<
+ *         return <hid_t>H5P_DEFAULT
+ *     return pid.id
+ */
+  __pyx_t_1 = (((PyObject *)__pyx_v_pid) == Py_None);
+  if (__pyx_t_1) {
+
+    /* "h5py/h5p.pyx":33
+ * 
+ *     if pid is None:
+ *         return <hid_t>H5P_DEFAULT             # <<<<<<<<<<<<<<
+ *     return pid.id
+ * 
+ */
+    __pyx_r = ((hid_t)H5P_DEFAULT);
+    goto __pyx_L0;
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  /* "h5py/h5p.pyx":34
+ *     if pid is None:
+ *         return <hid_t>H5P_DEFAULT
+ *     return pid.id             # <<<<<<<<<<<<<<
+ * 
+ * cdef object propwrap(hid_t id_in):
+ */
+  __pyx_r = __pyx_v_pid->__pyx_base.id;
+  goto __pyx_L0;
+
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5p.pyx":36
+ *     return pid.id
+ * 
+ * cdef object propwrap(hid_t id_in):             # <<<<<<<<<<<<<<
+ * 
+ *     clsid = H5Pget_class(id_in)
+ */
+
+static PyObject *__pyx_f_4h5py_3h5p_propwrap(hid_t __pyx_v_id_in) {
+  int __pyx_v_clsid;
+  PyObject *__pyx_v_pcls = NULL;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  htri_t __pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  herr_t __pyx_t_6;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("propwrap", 0);
+
+  /* "h5py/h5p.pyx":38
+ * cdef object propwrap(hid_t id_in):
+ * 
+ *     clsid = H5Pget_class(id_in)             # <<<<<<<<<<<<<<
+ *     try:
+ *         if H5Pequal(clsid, H5P_FILE_CREATE):
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Pget_class(__pyx_v_id_in); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v_clsid = __pyx_t_1;
+
+  /* "h5py/h5p.pyx":39
+ * 
+ *     clsid = H5Pget_class(id_in)
+ *     try:             # <<<<<<<<<<<<<<
+ *         if H5Pequal(clsid, H5P_FILE_CREATE):
+ *             pcls = PropFCID
+ */
+  /*try:*/ {
+
+    /* "h5py/h5p.pyx":40
+ *     clsid = H5Pget_class(id_in)
+ *     try:
+ *         if H5Pequal(clsid, H5P_FILE_CREATE):             # <<<<<<<<<<<<<<
+ *             pcls = PropFCID
+ *         elif H5Pequal(clsid, H5P_FILE_ACCESS):
+ */
+    __pyx_t_2 = __pyx_f_4h5py_4defs_H5Pequal(__pyx_v_clsid, H5P_FILE_CREATE); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L4;}
+    if (__pyx_t_2) {
+
+      /* "h5py/h5p.pyx":41
+ *     try:
+ *         if H5Pequal(clsid, H5P_FILE_CREATE):
+ *             pcls = PropFCID             # <<<<<<<<<<<<<<
+ *         elif H5Pequal(clsid, H5P_FILE_ACCESS):
+ *             pcls = PropFAID
+ */
+      __Pyx_INCREF(((PyObject *)((PyObject*)__pyx_ptype_4h5py_3h5p_PropFCID)));
+      __pyx_v_pcls = ((PyObject*)__pyx_ptype_4h5py_3h5p_PropFCID);
+      goto __pyx_L6;
+    }
+
+    /* "h5py/h5p.pyx":42
+ *         if H5Pequal(clsid, H5P_FILE_CREATE):
+ *             pcls = PropFCID
+ *         elif H5Pequal(clsid, H5P_FILE_ACCESS):             # <<<<<<<<<<<<<<
+ *             pcls = PropFAID
+ *         elif H5Pequal(clsid, H5P_DATASET_CREATE):
+ */
+    __pyx_t_2 = __pyx_f_4h5py_4defs_H5Pequal(__pyx_v_clsid, H5P_FILE_ACCESS); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 42; __pyx_clineno = __LINE__; goto __pyx_L4;}
+    if (__pyx_t_2) {
+
+      /* "h5py/h5p.pyx":43
+ *             pcls = PropFCID
+ *         elif H5Pequal(clsid, H5P_FILE_ACCESS):
+ *             pcls = PropFAID             # <<<<<<<<<<<<<<
+ *         elif H5Pequal(clsid, H5P_DATASET_CREATE):
+ *             pcls = PropDCID
+ */
+      __Pyx_INCREF(((PyObject *)((PyObject*)__pyx_ptype_4h5py_3h5p_PropFAID)));
+      __pyx_v_pcls = ((PyObject*)__pyx_ptype_4h5py_3h5p_PropFAID);
+      goto __pyx_L6;
+    }
+
+    /* "h5py/h5p.pyx":44
+ *         elif H5Pequal(clsid, H5P_FILE_ACCESS):
+ *             pcls = PropFAID
+ *         elif H5Pequal(clsid, H5P_DATASET_CREATE):             # <<<<<<<<<<<<<<
+ *             pcls = PropDCID
+ *         elif H5Pequal(clsid, H5P_DATASET_XFER):
+ */
+    __pyx_t_2 = __pyx_f_4h5py_4defs_H5Pequal(__pyx_v_clsid, H5P_DATASET_CREATE); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L4;}
+    if (__pyx_t_2) {
+
+      /* "h5py/h5p.pyx":45
+ *             pcls = PropFAID
+ *         elif H5Pequal(clsid, H5P_DATASET_CREATE):
+ *             pcls = PropDCID             # <<<<<<<<<<<<<<
+ *         elif H5Pequal(clsid, H5P_DATASET_XFER):
+ *             pcls = PropDXID
+ */
+      __Pyx_INCREF(((PyObject *)((PyObject*)__pyx_ptype_4h5py_3h5p_PropDCID)));
+      __pyx_v_pcls = ((PyObject*)__pyx_ptype_4h5py_3h5p_PropDCID);
+      goto __pyx_L6;
+    }
+
+    /* "h5py/h5p.pyx":46
+ *         elif H5Pequal(clsid, H5P_DATASET_CREATE):
+ *             pcls = PropDCID
+ *         elif H5Pequal(clsid, H5P_DATASET_XFER):             # <<<<<<<<<<<<<<
+ *             pcls = PropDXID
+ *         elif H5Pequal(clsid, H5P_OBJECT_COPY):
+ */
+    __pyx_t_2 = __pyx_f_4h5py_4defs_H5Pequal(__pyx_v_clsid, H5P_DATASET_XFER); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L4;}
+    if (__pyx_t_2) {
+
+      /* "h5py/h5p.pyx":47
+ *             pcls = PropDCID
+ *         elif H5Pequal(clsid, H5P_DATASET_XFER):
+ *             pcls = PropDXID             # <<<<<<<<<<<<<<
+ *         elif H5Pequal(clsid, H5P_OBJECT_COPY):
+ *             pcls = PropCopyID
+ */
+      __Pyx_INCREF(((PyObject *)((PyObject*)__pyx_ptype_4h5py_3h5p_PropDXID)));
+      __pyx_v_pcls = ((PyObject*)__pyx_ptype_4h5py_3h5p_PropDXID);
+      goto __pyx_L6;
+    }
+
+    /* "h5py/h5p.pyx":48
+ *         elif H5Pequal(clsid, H5P_DATASET_XFER):
+ *             pcls = PropDXID
+ *         elif H5Pequal(clsid, H5P_OBJECT_COPY):             # <<<<<<<<<<<<<<
+ *             pcls = PropCopyID
+ *         elif H5Pequal(clsid, H5P_LINK_CREATE):
+ */
+    __pyx_t_2 = __pyx_f_4h5py_4defs_H5Pequal(__pyx_v_clsid, H5P_OBJECT_COPY); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L4;}
+    if (__pyx_t_2) {
+
+      /* "h5py/h5p.pyx":49
+ *             pcls = PropDXID
+ *         elif H5Pequal(clsid, H5P_OBJECT_COPY):
+ *             pcls = PropCopyID             # <<<<<<<<<<<<<<
+ *         elif H5Pequal(clsid, H5P_LINK_CREATE):
+ *             pcls = PropLCID
+ */
+      __Pyx_INCREF(((PyObject *)((PyObject*)__pyx_ptype_4h5py_3h5p_PropCopyID)));
+      __pyx_v_pcls = ((PyObject*)__pyx_ptype_4h5py_3h5p_PropCopyID);
+      goto __pyx_L6;
+    }
+
+    /* "h5py/h5p.pyx":50
+ *         elif H5Pequal(clsid, H5P_OBJECT_COPY):
+ *             pcls = PropCopyID
+ *         elif H5Pequal(clsid, H5P_LINK_CREATE):             # <<<<<<<<<<<<<<
+ *             pcls = PropLCID
+ *         elif H5Pequal(clsid, H5P_LINK_ACCESS):
+ */
+    __pyx_t_2 = __pyx_f_4h5py_4defs_H5Pequal(__pyx_v_clsid, H5P_LINK_CREATE); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L4;}
+    if (__pyx_t_2) {
+
+      /* "h5py/h5p.pyx":51
+ *             pcls = PropCopyID
+ *         elif H5Pequal(clsid, H5P_LINK_CREATE):
+ *             pcls = PropLCID             # <<<<<<<<<<<<<<
+ *         elif H5Pequal(clsid, H5P_LINK_ACCESS):
+ *             pcls = PropLAID
+ */
+      __Pyx_INCREF(((PyObject *)((PyObject*)__pyx_ptype_4h5py_3h5p_PropLCID)));
+      __pyx_v_pcls = ((PyObject*)__pyx_ptype_4h5py_3h5p_PropLCID);
+      goto __pyx_L6;
+    }
+
+    /* "h5py/h5p.pyx":52
+ *         elif H5Pequal(clsid, H5P_LINK_CREATE):
+ *             pcls = PropLCID
+ *         elif H5Pequal(clsid, H5P_LINK_ACCESS):             # <<<<<<<<<<<<<<
+ *             pcls = PropLAID
+ *         elif H5Pequal(clsid, H5P_GROUP_CREATE):
+ */
+    __pyx_t_2 = __pyx_f_4h5py_4defs_H5Pequal(__pyx_v_clsid, H5P_LINK_ACCESS); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L4;}
+    if (__pyx_t_2) {
+
+      /* "h5py/h5p.pyx":53
+ *             pcls = PropLCID
+ *         elif H5Pequal(clsid, H5P_LINK_ACCESS):
+ *             pcls = PropLAID             # <<<<<<<<<<<<<<
+ *         elif H5Pequal(clsid, H5P_GROUP_CREATE):
+ *             pcls = PropGCID
+ */
+      __Pyx_INCREF(((PyObject *)((PyObject*)__pyx_ptype_4h5py_3h5p_PropLAID)));
+      __pyx_v_pcls = ((PyObject*)__pyx_ptype_4h5py_3h5p_PropLAID);
+      goto __pyx_L6;
+    }
+
+    /* "h5py/h5p.pyx":54
+ *         elif H5Pequal(clsid, H5P_LINK_ACCESS):
+ *             pcls = PropLAID
+ *         elif H5Pequal(clsid, H5P_GROUP_CREATE):             # <<<<<<<<<<<<<<
+ *             pcls = PropGCID
+ *         elif H5Pequal(clsid, H5P_DATASET_ACCESS):
+ */
+    __pyx_t_2 = __pyx_f_4h5py_4defs_H5Pequal(__pyx_v_clsid, H5P_GROUP_CREATE); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L4;}
+    if (__pyx_t_2) {
+
+      /* "h5py/h5p.pyx":55
+ *             pcls = PropLAID
+ *         elif H5Pequal(clsid, H5P_GROUP_CREATE):
+ *             pcls = PropGCID             # <<<<<<<<<<<<<<
+ *         elif H5Pequal(clsid, H5P_DATASET_ACCESS):
+ *             pcls = PropDAID
+ */
+      __Pyx_INCREF(((PyObject *)((PyObject*)__pyx_ptype_4h5py_3h5p_PropGCID)));
+      __pyx_v_pcls = ((PyObject*)__pyx_ptype_4h5py_3h5p_PropGCID);
+      goto __pyx_L6;
+    }
+
+    /* "h5py/h5p.pyx":56
+ *         elif H5Pequal(clsid, H5P_GROUP_CREATE):
+ *             pcls = PropGCID
+ *         elif H5Pequal(clsid, H5P_DATASET_ACCESS):             # <<<<<<<<<<<<<<
+ *             pcls = PropDAID
+ *         elif H5Pequal(clsid, H5P_OBJECT_CREATE):
+ */
+    __pyx_t_2 = __pyx_f_4h5py_4defs_H5Pequal(__pyx_v_clsid, H5P_DATASET_ACCESS); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L4;}
+    if (__pyx_t_2) {
+
+      /* "h5py/h5p.pyx":57
+ *             pcls = PropGCID
+ *         elif H5Pequal(clsid, H5P_DATASET_ACCESS):
+ *             pcls = PropDAID             # <<<<<<<<<<<<<<
+ *         elif H5Pequal(clsid, H5P_OBJECT_CREATE):
+ *             pcls = PropOCID
+ */
+      __Pyx_INCREF(((PyObject *)((PyObject*)__pyx_ptype_4h5py_3h5p_PropDAID)));
+      __pyx_v_pcls = ((PyObject*)__pyx_ptype_4h5py_3h5p_PropDAID);
+      goto __pyx_L6;
+    }
+
+    /* "h5py/h5p.pyx":58
+ *         elif H5Pequal(clsid, H5P_DATASET_ACCESS):
+ *             pcls = PropDAID
+ *         elif H5Pequal(clsid, H5P_OBJECT_CREATE):             # <<<<<<<<<<<<<<
+ *             pcls = PropOCID
+ * 
+ */
+    __pyx_t_2 = __pyx_f_4h5py_4defs_H5Pequal(__pyx_v_clsid, H5P_OBJECT_CREATE); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L4;}
+    if (__pyx_t_2) {
+
+      /* "h5py/h5p.pyx":59
+ *             pcls = PropDAID
+ *         elif H5Pequal(clsid, H5P_OBJECT_CREATE):
+ *             pcls = PropOCID             # <<<<<<<<<<<<<<
+ * 
+ *         else:
+ */
+      __Pyx_INCREF(((PyObject *)((PyObject*)__pyx_ptype_4h5py_3h5p_PropOCID)));
+      __pyx_v_pcls = ((PyObject*)__pyx_ptype_4h5py_3h5p_PropOCID);
+      goto __pyx_L6;
+    }
+    /*else*/ {
+
+      /* "h5py/h5p.pyx":62
+ * 
+ *         else:
+ *             raise ValueError("No class found for ID %d" % id_in)             # <<<<<<<<<<<<<<
+ * 
+ *         return pcls.open(id_in)
+ */
+      __pyx_t_3 = __Pyx_PyInt_to_py_hid_t(__pyx_v_id_in); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L4;}
+      __Pyx_GOTREF(__pyx_t_3);
+      __pyx_t_4 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_1), __pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L4;}
+      __Pyx_GOTREF(((PyObject *)__pyx_t_4));
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L4;}
+      __Pyx_GOTREF(__pyx_t_3);
+      PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_t_4));
+      __Pyx_GIVEREF(((PyObject *)__pyx_t_4));
+      __pyx_t_4 = 0;
+      __pyx_t_4 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L4;}
+      __Pyx_GOTREF(__pyx_t_4);
+      __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
+      __Pyx_Raise(__pyx_t_4, 0, 0, 0);
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L4;}
+    }
+    __pyx_L6:;
+
+    /* "h5py/h5p.pyx":64
+ *             raise ValueError("No class found for ID %d" % id_in)
+ * 
+ *         return pcls.open(id_in)             # <<<<<<<<<<<<<<
+ *     finally:
+ *         H5Pclose_class(clsid)
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_4 = PyObject_GetAttr(((PyObject *)__pyx_v_pcls), __pyx_n_s__open); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L4;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_3 = __Pyx_PyInt_to_py_hid_t(__pyx_v_id_in); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L4;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L4;}
+    __Pyx_GOTREF(__pyx_t_5);
+    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3);
+    __Pyx_GIVEREF(__pyx_t_3);
+    __pyx_t_3 = 0;
+    __pyx_t_3 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L4;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
+    __pyx_r = __pyx_t_3;
+    __pyx_t_3 = 0;
+    goto __pyx_L3;
+  }
+
+  /* "h5py/h5p.pyx":66
+ *         return pcls.open(id_in)
+ *     finally:
+ *         H5Pclose_class(clsid)             # <<<<<<<<<<<<<<
+ * 
+ * cdef object lockcls(hid_t id_in):
+ */
+  /*finally:*/ {
+    int __pyx_why;
+    PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb;
+    int __pyx_exc_lineno;
+    __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
+    __pyx_why = 0; goto __pyx_L5;
+    __pyx_L3: __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
+    __pyx_why = 3; goto __pyx_L5;
+    __pyx_L4: {
+      __pyx_why = 4;
+      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb);
+      __pyx_exc_lineno = __pyx_lineno;
+      goto __pyx_L5;
+    }
+    __pyx_L5:;
+    __pyx_t_6 = __pyx_f_4h5py_4defs_H5Pclose_class(__pyx_v_clsid); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+    goto __pyx_L8;
+    __pyx_L7_error:;
+    if (__pyx_why == 4) {
+      Py_XDECREF(__pyx_exc_type);
+      Py_XDECREF(__pyx_exc_value);
+      Py_XDECREF(__pyx_exc_tb);
+    }
+    goto __pyx_L1_error;
+    __pyx_L8:;
+    switch (__pyx_why) {
+      case 3: goto __pyx_L0;
+      case 4: {
+        __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb);
+        __pyx_lineno = __pyx_exc_lineno;
+        __pyx_exc_type = 0;
+        __pyx_exc_value = 0;
+        __pyx_exc_tb = 0;
+        goto __pyx_L1_error;
+      }
+    }
+  }
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_AddTraceback("h5py.h5p.propwrap", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_pcls);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5p.pyx":68
+ *         H5Pclose_class(clsid)
+ * 
+ * cdef object lockcls(hid_t id_in):             # <<<<<<<<<<<<<<
+ *     cdef PropClassID pid
+ *     pid = PropClassID.open(id_in)
+ */
+
+static PyObject *__pyx_f_4h5py_3h5p_lockcls(hid_t __pyx_v_id_in) {
+  struct __pyx_obj_4h5py_3h5p_PropClassID *__pyx_v_pid = 0;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("lockcls", 0);
+
+  /* "h5py/h5p.pyx":70
+ * cdef object lockcls(hid_t id_in):
+ *     cdef PropClassID pid
+ *     pid = PropClassID.open(id_in)             # <<<<<<<<<<<<<<
+ *     pid.locked = 1
+ *     return pid
+ */
+  __pyx_t_1 = PyObject_GetAttr(((PyObject *)((PyObject*)__pyx_ptype_4h5py_3h5p_PropClassID)), __pyx_n_s__open); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyInt_to_py_hid_t(__pyx_v_id_in); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2);
+  __Pyx_GIVEREF(__pyx_t_2);
+  __pyx_t_2 = 0;
+  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
+  if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_4h5py_3h5p_PropClassID))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v_pid = ((struct __pyx_obj_4h5py_3h5p_PropClassID *)__pyx_t_2);
+  __pyx_t_2 = 0;
+
+  /* "h5py/h5p.pyx":71
+ *     cdef PropClassID pid
+ *     pid = PropClassID.open(id_in)
+ *     pid.locked = 1             # <<<<<<<<<<<<<<
+ *     return pid
+ * 
+ */
+  __pyx_v_pid->__pyx_base.__pyx_base.locked = 1;
+
+  /* "h5py/h5p.pyx":72
+ *     pid = PropClassID.open(id_in)
+ *     pid.locked = 1
+ *     return pid             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(((PyObject *)__pyx_v_pid));
+  __pyx_r = ((PyObject *)__pyx_v_pid);
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("h5py.h5p.lockcls", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_pid);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5p_1create(PyObject *__pyx_self, PyObject *__pyx_v_cls); /*proto*/
+static char __pyx_doc_4h5py_3h5p_create[] = "(PropClassID cls) => PropID\n\n    Create a new property list as an instance of a class; classes are:\n\n    - FILE_CREATE\n    - FILE_ACCESS\n    - DATASET_CREATE\n    - DATASET_XFER\n    - DATASET_ACCESS\n    - LINK_CREATE\n    - LINK_ACCESS\n    - GROUP_CREATE\n    - OBJECT_COPY\n    - OBJECT_CREATE\n    ";
+static PyMethodDef __pyx_mdef_4h5py_3h5p_1create = {__Pyx_NAMESTR("create"), (PyCFunction)__pyx_pw_4h5py_3h5p_1create, METH_O, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5p_create)};
+static PyObject *__pyx_pw_4h5py_3h5p_1create(PyObject *__pyx_self, PyObject *__pyx_v_cls) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("create (wrapper)", 0);
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_cls), __pyx_ptype_4h5py_3h5p_PropClassID, 0, "cls", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_pf_4h5py_3h5p_create(__pyx_self, ((struct __pyx_obj_4h5py_3h5p_PropClassID *)__pyx_v_cls));
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5p.pyx":106
+ * # === Property list functional API ============================================
+ * 
+ * def create(PropClassID cls not None):             # <<<<<<<<<<<<<<
+ *     """(PropClassID cls) => PropID
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5p_create(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_3h5p_PropClassID *__pyx_v_cls) {
+  hid_t __pyx_v_newid;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  hid_t __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("create", 0);
+
+  /* "h5py/h5p.pyx":123
+ *     """
+ *     cdef hid_t newid
+ *     newid = H5Pcreate(cls.id)             # <<<<<<<<<<<<<<
+ *     return propwrap(newid)
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Pcreate(__pyx_v_cls->__pyx_base.__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v_newid = __pyx_t_1;
+
+  /* "h5py/h5p.pyx":124
+ *     cdef hid_t newid
+ *     newid = H5Pcreate(cls.id)
+ *     return propwrap(newid)             # <<<<<<<<<<<<<<
+ * 
+ * # === Class API ===============================================================
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_2 = __pyx_f_4h5py_3h5p_propwrap(__pyx_v_newid); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5p.create", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5p_6PropID_1equal(PyObject *__pyx_v_self, PyObject *__pyx_v_plist); /*proto*/
+static char __pyx_doc_4h5py_3h5p_6PropID_equal[] = "(PropID plist) => BOOL\n\n        Compare this property list (or class) to another for equality.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5p_6PropID_1equal(PyObject *__pyx_v_self, PyObject *__pyx_v_plist) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("equal (wrapper)", 0);
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_plist), __pyx_ptype_4h5py_3h5p_PropID, 0, "plist", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_pf_4h5py_3h5p_6PropID_equal(((struct __pyx_obj_4h5py_3h5p_PropID *)__pyx_v_self), ((struct __pyx_obj_4h5py_3h5p_PropID *)__pyx_v_plist));
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5p.pyx":135
+ * 
+ * 
+ *     def equal(self, PropID plist not None):             # <<<<<<<<<<<<<<
+ *         """(PropID plist) => BOOL
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5p_6PropID_equal(struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_self, struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_plist) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  htri_t __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("equal", 0);
+
+  /* "h5py/h5p.pyx":140
+ *         Compare this property list (or class) to another for equality.
+ *         """
+ *         return <bint>(H5Pequal(self.id, plist.id))             # <<<<<<<<<<<<<<
+ * 
+ *     def __richcmp__(self, object other, int how):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Pequal(__pyx_v_self->__pyx_base.id, __pyx_v_plist->__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 140; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyBool_FromLong(((int)__pyx_t_1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 140; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5p.PropID.equal", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5p_6PropID_3__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_how); /*proto*/
+static PyObject *__pyx_pw_4h5py_3h5p_6PropID_3__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_how) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__richcmp__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5p_6PropID_2__richcmp__(((PyObject *)__pyx_v_self), ((PyObject *)__pyx_v_other), ((int)__pyx_v_how));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5p.pyx":142
+ *         return <bint>(H5Pequal(self.id, plist.id))
+ * 
+ *     def __richcmp__(self, object other, int how):             # <<<<<<<<<<<<<<
+ *         cdef bint truthval = 0
+ *         if how != 2 and how != 3:
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5p_6PropID_2__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_how) {
+  int __pyx_v_truthval;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__richcmp__", 0);
+
+  /* "h5py/h5p.pyx":143
+ * 
+ *     def __richcmp__(self, object other, int how):
+ *         cdef bint truthval = 0             # <<<<<<<<<<<<<<
+ *         if how != 2 and how != 3:
+ *             return NotImplemented
+ */
+  __pyx_v_truthval = 0;
+
+  /* "h5py/h5p.pyx":144
+ *     def __richcmp__(self, object other, int how):
+ *         cdef bint truthval = 0
+ *         if how != 2 and how != 3:             # <<<<<<<<<<<<<<
+ *             return NotImplemented
+ *         if type(self) == type(other):
+ */
+  switch (__pyx_v_how) {
+    case 2:
+    case 3:
+    __pyx_t_1 = 0;
+    break;
+    default:
+    __pyx_t_1 = 1;
+    break;
+  }
+  if (__pyx_t_1) {
+
+    /* "h5py/h5p.pyx":145
+ *         cdef bint truthval = 0
+ *         if how != 2 and how != 3:
+ *             return NotImplemented             # <<<<<<<<<<<<<<
+ *         if type(self) == type(other):
+ *             truthval = self.equal(other)
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __Pyx_INCREF(__pyx_builtin_NotImplemented);
+    __pyx_r = __pyx_builtin_NotImplemented;
+    goto __pyx_L0;
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  /* "h5py/h5p.pyx":146
+ *         if how != 2 and how != 3:
+ *             return NotImplemented
+ *         if type(self) == type(other):             # <<<<<<<<<<<<<<
+ *             truthval = self.equal(other)
+ * 
+ */
+  __pyx_t_2 = PyObject_RichCompare(((PyObject *)Py_TYPE(__pyx_v_self)), ((PyObject *)Py_TYPE(__pyx_v_other)), Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  if (__pyx_t_1) {
+
+    /* "h5py/h5p.pyx":147
+ *             return NotImplemented
+ *         if type(self) == type(other):
+ *             truthval = self.equal(other)             # <<<<<<<<<<<<<<
+ * 
+ *         if how == 2:
+ */
+    __pyx_t_2 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__equal); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 147; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 147; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_INCREF(__pyx_v_other);
+    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_other);
+    __Pyx_GIVEREF(__pyx_v_other);
+    __pyx_t_4 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 147; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
+    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 147; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_v_truthval = __pyx_t_1;
+    goto __pyx_L4;
+  }
+  __pyx_L4:;
+
+  /* "h5py/h5p.pyx":149
+ *             truthval = self.equal(other)
+ * 
+ *         if how == 2:             # <<<<<<<<<<<<<<
+ *             return truthval
+ *         return not truthval
+ */
+  __pyx_t_1 = (__pyx_v_how == 2);
+  if (__pyx_t_1) {
+
+    /* "h5py/h5p.pyx":150
+ * 
+ *         if how == 2:
+ *             return truthval             # <<<<<<<<<<<<<<
+ *         return not truthval
+ * 
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_v_truthval); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_r = __pyx_t_4;
+    __pyx_t_4 = 0;
+    goto __pyx_L0;
+    goto __pyx_L5;
+  }
+  __pyx_L5:;
+
+  /* "h5py/h5p.pyx":151
+ *         if how == 2:
+ *             return truthval
+ *         return not truthval             # <<<<<<<<<<<<<<
+ * 
+ *     def __hash__(self):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_4 = __Pyx_PyBool_FromLong((!__pyx_v_truthval)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_r = __pyx_t_4;
+  __pyx_t_4 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("h5py.h5p.PropID.__richcmp__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static Py_hash_t __pyx_pw_4h5py_3h5p_6PropID_5__hash__(PyObject *__pyx_v_self); /*proto*/
+static Py_hash_t __pyx_pw_4h5py_3h5p_6PropID_5__hash__(PyObject *__pyx_v_self) {
+  Py_hash_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__hash__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5p_6PropID_4__hash__(((struct __pyx_obj_4h5py_3h5p_PropID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5p.pyx":153
+ *         return not truthval
+ * 
+ *     def __hash__(self):             # <<<<<<<<<<<<<<
+ *         raise TypeError("Property lists are unhashable")
+ * 
+ */
+
+static Py_hash_t __pyx_pf_4h5py_3h5p_6PropID_4__hash__(CYTHON_UNUSED struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_self) {
+  Py_hash_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__hash__", 0);
+
+  /* "h5py/h5p.pyx":154
+ * 
+ *     def __hash__(self):
+ *         raise TypeError("Property lists are unhashable")             # <<<<<<<<<<<<<<
+ * 
+ * cdef class PropClassID(PropID):
+ */
+  __pyx_t_1 = PyObject_Call(__pyx_builtin_TypeError, ((PyObject *)__pyx_k_tuple_3), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 154; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  {__pyx_filename = __pyx_f[0]; __pyx_lineno = 154; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py.h5p.PropID.__hash__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  if (unlikely(__pyx_r == -1) && !PyErr_Occurred()) __pyx_r = -2;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5p_11PropClassID_1__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_how); /*proto*/
+static PyObject *__pyx_pw_4h5py_3h5p_11PropClassID_1__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_how) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__richcmp__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5p_11PropClassID___richcmp__(((PyObject *)__pyx_v_self), ((PyObject *)__pyx_v_other), ((int)__pyx_v_how));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5p.pyx":165
+ *     """
+ * 
+ *     def __richcmp__(self, object other, int how):             # <<<<<<<<<<<<<<
+ *         return PropID.__richcmp__(self, other, how)
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5p_11PropClassID___richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_how) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__richcmp__", 0);
+
+  /* "h5py/h5p.pyx":166
+ * 
+ *     def __richcmp__(self, object other, int how):
+ *         return PropID.__richcmp__(self, other, how)             # <<<<<<<<<<<<<<
+ * 
+ *     def __hash__(self):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyObject_GetAttr(((PyObject *)((PyObject*)__pyx_ptype_4h5py_3h5p_PropID)), __pyx_n_s____richcmp__); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyInt_FromLong(__pyx_v_how); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_INCREF(__pyx_v_self);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_self);
+  __Pyx_GIVEREF(__pyx_v_self);
+  __Pyx_INCREF(__pyx_v_other);
+  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_other);
+  __Pyx_GIVEREF(__pyx_v_other);
+  PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_2);
+  __Pyx_GIVEREF(__pyx_t_2);
+  __pyx_t_2 = 0;
+  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("h5py.h5p.PropClassID.__richcmp__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static Py_hash_t __pyx_pw_4h5py_3h5p_11PropClassID_3__hash__(PyObject *__pyx_v_self); /*proto*/
+static char __pyx_doc_4h5py_3h5p_11PropClassID_2__hash__[] = " Since classes are library-created and immutable, they are uniquely\n            identified by their HDF5 identifiers.\n        ";
+#if CYTHON_COMPILING_IN_CPYTHON
+struct wrapperbase __pyx_wrapperbase_4h5py_3h5p_11PropClassID_2__hash__;
+#endif
+static Py_hash_t __pyx_pw_4h5py_3h5p_11PropClassID_3__hash__(PyObject *__pyx_v_self) {
+  Py_hash_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__hash__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5p_11PropClassID_2__hash__(((struct __pyx_obj_4h5py_3h5p_PropClassID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5p.pyx":168
+ *         return PropID.__richcmp__(self, other, how)
+ * 
+ *     def __hash__(self):             # <<<<<<<<<<<<<<
+ *         """ Since classes are library-created and immutable, they are uniquely
+ *             identified by their HDF5 identifiers.
+ */
+
+static Py_hash_t __pyx_pf_4h5py_3h5p_11PropClassID_2__hash__(struct __pyx_obj_4h5py_3h5p_PropClassID *__pyx_v_self) {
+  Py_hash_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  Py_hash_t __pyx_t_2;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__hash__", 0);
+
+  /* "h5py/h5p.pyx":172
+ *             identified by their HDF5 identifiers.
+ *         """
+ *         return hash(self.id)             # <<<<<<<<<<<<<<
+ * 
+ * cdef class PropInstanceID(PropID):
+ */
+  __pyx_t_1 = __Pyx_PyInt_to_py_hid_t(__pyx_v_self->__pyx_base.__pyx_base.id); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyObject_Hash(__pyx_t_1); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_r = __pyx_t_2;
+  goto __pyx_L0;
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py.h5p.PropClassID.__hash__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  if (unlikely(__pyx_r == -1) && !PyErr_Occurred()) __pyx_r = -2;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5p_14PropInstanceID_1copy(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5p_14PropInstanceID_copy[] = "() => PropList newid\n\n         Create a new copy of an existing property list object.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5p_14PropInstanceID_1copy(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("copy (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5p_14PropInstanceID_copy(((struct __pyx_obj_4h5py_3h5p_PropInstanceID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5p.pyx":185
+ * 
+ * 
+ *     def copy(self):             # <<<<<<<<<<<<<<
+ *         """() => PropList newid
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5p_14PropInstanceID_copy(struct __pyx_obj_4h5py_3h5p_PropInstanceID *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  hid_t __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("copy", 0);
+
+  /* "h5py/h5p.pyx":190
+ *          Create a new copy of an existing property list object.
+ *         """
+ *         return type(self)(H5Pcopy(self.id))             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Pcopy(__pyx_v_self->__pyx_base.__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyInt_to_py_hid_t(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2);
+  __Pyx_GIVEREF(__pyx_t_2);
+  __pyx_t_2 = 0;
+  __pyx_t_2 = PyObject_Call(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))), ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("h5py.h5p.PropInstanceID.copy", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5p_14PropInstanceID_3_close(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5p_14PropInstanceID_2_close[] = "()\n\n        Terminate access through this identifier.  You shouldn't have to\n        do this manually, as propery lists are automatically deleted when\n        their Python wrappers are freed.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5p_14PropInstanceID_3_close(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("_close (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5p_14PropInstanceID_2_close(((struct __pyx_obj_4h5py_3h5p_PropInstanceID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5p.pyx":193
+ * 
+ * 
+ *     def _close(self):             # <<<<<<<<<<<<<<
+ *         """()
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5p_14PropInstanceID_2_close(struct __pyx_obj_4h5py_3h5p_PropInstanceID *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_close", 0);
+
+  /* "h5py/h5p.pyx":200
+ *         their Python wrappers are freed.
+ *         """
+ *         with _objects.registry.lock:             # <<<<<<<<<<<<<<
+ *             H5Pclose(self.id)
+ *             if not self.valid:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s___objects); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 200; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__registry); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 200; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __pyx_t_1 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__lock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 200; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 200; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 200; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_4 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 200; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/h5p.pyx":201
+ *         """
+ *         with _objects.registry.lock:
+ *             H5Pclose(self.id)             # <<<<<<<<<<<<<<
+ *             if not self.valid:
+ *                 del _objects.registry[self.id]
+ */
+          __pyx_t_8 = __pyx_f_4h5py_4defs_H5Pclose(__pyx_v_self->__pyx_base.__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+
+          /* "h5py/h5p.pyx":202
+ *         with _objects.registry.lock:
+ *             H5Pclose(self.id)
+ *             if not self.valid:             # <<<<<<<<<<<<<<
+ *                 del _objects.registry[self.id]
+ * 
+ */
+          __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__valid); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __pyx_t_10 = (!__pyx_t_9);
+          if (__pyx_t_10) {
+
+            /* "h5py/h5p.pyx":203
+ *             H5Pclose(self.id)
+ *             if not self.valid:
+ *                 del _objects.registry[self.id]             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+            __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s___objects); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 203; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            __Pyx_GOTREF(__pyx_t_1);
+            __pyx_t_4 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__registry); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 203; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            __Pyx_GOTREF(__pyx_t_4);
+            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+            if (__Pyx_DelItemInt(__pyx_t_4, __pyx_v_self->__pyx_base.__pyx_base.id, sizeof(hid_t), __Pyx_PyInt_to_py_hid_t) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 203; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+        /* "h5py/h5p.pyx":200
+ *         their Python wrappers are freed.
+ *         """
+ *         with _objects.registry.lock:             # <<<<<<<<<<<<<<
+ *             H5Pclose(self.id)
+ *             if not self.valid:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.h5p.PropInstanceID._close", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_1, &__pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 200; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_2);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 200; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_2);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_2);
+          __Pyx_GIVEREF(__pyx_t_2);
+          __pyx_t_12 = PyObject_Call(__pyx_t_3, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 200; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_10 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 200; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_9 = (!__pyx_t_10);
+          if (__pyx_t_9) {
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_2);
+            __Pyx_ErrRestore(__pyx_t_4, __pyx_t_1, __pyx_t_2);
+            __pyx_t_4 = 0; __pyx_t_1 = 0; __pyx_t_2 = 0; 
+            {__pyx_filename = __pyx_f[0]; __pyx_lineno = 200; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L18;
+          }
+          __pyx_L18:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      if (__pyx_t_3) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_3, __pyx_k_tuple_4, NULL);
+        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 200; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 200; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+    }
+    goto __pyx_L19;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    goto __pyx_L1_error;
+    __pyx_L19:;
+  }
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.h5p.PropInstanceID._close", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5p_14PropInstanceID_5get_class(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5p_14PropInstanceID_4get_class[] = "() => PropClassID\n\n        Determine the class of a property list object.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5p_14PropInstanceID_5get_class(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_class (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5p_14PropInstanceID_4get_class(((struct __pyx_obj_4h5py_3h5p_PropInstanceID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5p.pyx":206
+ * 
+ * 
+ *     def get_class(self):             # <<<<<<<<<<<<<<
+ *         """() => PropClassID
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5p_14PropInstanceID_4get_class(struct __pyx_obj_4h5py_3h5p_PropInstanceID *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_class", 0);
+
+  /* "h5py/h5p.pyx":211
+ *         Determine the class of a property list object.
+ *         """
+ *         return PropClassID.open(H5Pget_class(self.id))             # <<<<<<<<<<<<<<
+ * 
+ * cdef class PropCreateID(PropInstanceID):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyObject_GetAttr(((PyObject *)((PyObject*)__pyx_ptype_4h5py_3h5p_PropClassID)), __pyx_n_s__open); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 211; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __pyx_f_4h5py_4defs_H5Pget_class(__pyx_v_self->__pyx_base.__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 211; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = PyInt_FromLong(__pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 211; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 211; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_3);
+  __pyx_t_3 = 0;
+  __pyx_t_3 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 211; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
+  __pyx_r = __pyx_t_3;
+  __pyx_t_3 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("h5py.h5p.PropInstanceID.get_class", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5p_10PropCopyID_1set_copy_object(PyObject *__pyx_v_self, PyObject *__pyx_arg_flags); /*proto*/
+static char __pyx_doc_4h5py_3h5p_10PropCopyID_set_copy_object[] = "(UINT flags)\n\n        Set flags for object copying process.  Legal flags are\n        from the h5o.COPY* family:\n\n        h5o.COPY_SHALLOW_HIERARCHY_FLAG\n            Copy only immediate members of a group.\n\n        h5o.COPY_EXPAND_SOFT_LINK_FLAG\n            Expand soft links into new objects.\n\n        h5o.COPY_EXPAND_EXT_LINK_FLAG\n            Expand external link into new objects.\n\n        h5o.COPY_EXPAND_REF [...]
+static PyObject *__pyx_pw_4h5py_3h5p_10PropCopyID_1set_copy_object(PyObject *__pyx_v_self, PyObject *__pyx_arg_flags) {
+  unsigned int __pyx_v_flags;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("set_copy_object (wrapper)", 0);
+  assert(__pyx_arg_flags); {
+    __pyx_v_flags = __Pyx_PyInt_AsUnsignedInt(__pyx_arg_flags); if (unlikely((__pyx_v_flags == (unsigned int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5p.PropCopyID.set_copy_object", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_3h5p_10PropCopyID_set_copy_object(((struct __pyx_obj_4h5py_3h5p_PropCopyID *)__pyx_v_self), ((unsigned int)__pyx_v_flags));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5p.pyx":227
+ * 
+ * 
+ *     def set_copy_object(self, unsigned int flags):             # <<<<<<<<<<<<<<
+ *         """(UINT flags)
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5p_10PropCopyID_set_copy_object(struct __pyx_obj_4h5py_3h5p_PropCopyID *__pyx_v_self, unsigned int __pyx_v_flags) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("set_copy_object", 0);
+
+  /* "h5py/h5p.pyx":248
+ *             Copy object without copying attributes.
+ *         """
+ *         H5Pset_copy_object(self.id, flags)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Pset_copy_object(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.id, __pyx_v_flags); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 248; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py.h5p.PropCopyID.set_copy_object", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5p_10PropCopyID_3get_copy_object(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5p_10PropCopyID_2get_copy_object[] = "() => UINT flags\n\n        Get copy process flags. Legal flags are h5o.COPY*.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5p_10PropCopyID_3get_copy_object(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_copy_object (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5p_10PropCopyID_2get_copy_object(((struct __pyx_obj_4h5py_3h5p_PropCopyID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5p.pyx":251
+ * 
+ * 
+ *     def get_copy_object(self):             # <<<<<<<<<<<<<<
+ *         """() => UINT flags
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5p_10PropCopyID_2get_copy_object(struct __pyx_obj_4h5py_3h5p_PropCopyID *__pyx_v_self) {
+  unsigned int __pyx_v_flags;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_copy_object", 0);
+
+  /* "h5py/h5p.pyx":257
+ *         """
+ *         cdef unsigned int flags
+ *         H5Pget_copy_object(self.id, &flags)             # <<<<<<<<<<<<<<
+ *         return flags
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Pget_copy_object(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.id, (&__pyx_v_flags)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5p.pyx":258
+ *         cdef unsigned int flags
+ *         H5Pget_copy_object(self.id, &flags)
+ *         return flags             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_2 = PyLong_FromUnsignedLong(__pyx_v_flags); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 258; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5p.PropCopyID.get_copy_object", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5p_8PropFCID_1get_version(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5p_8PropFCID_get_version[] = "() => TUPLE version_info\n\n        Determine version information of various file attributes.\n        Elements are:\n\n        0.  UINT Super block version number\n        1.  UINT Freelist version number\n        2.  UINT Symbol table version number\n        3.  UINT Shared object header version number\n        ";
+static PyObject *__pyx_pw_4h5py_3h5p_8PropFCID_1get_version(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_version (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5p_8PropFCID_get_version(((struct __pyx_obj_4h5py_3h5p_PropFCID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5p.pyx":272
+ * 
+ * 
+ *     def get_version(self):             # <<<<<<<<<<<<<<
+ *         """() => TUPLE version_info
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5p_8PropFCID_get_version(struct __pyx_obj_4h5py_3h5p_PropFCID *__pyx_v_self) {
+  unsigned int __pyx_v_super_;
+  unsigned int __pyx_v_freelist;
+  unsigned int __pyx_v_stab;
+  unsigned int __pyx_v_shhdr;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_version", 0);
+
+  /* "h5py/h5p.pyx":289
+ *         cdef unsigned int shhdr
+ * 
+ *         H5Pget_version(self.id, &super_, &freelist, &stab, &shhdr)             # <<<<<<<<<<<<<<
+ * 
+ *         return (super_, freelist, stab, shhdr)
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Pget_version(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base.id, (&__pyx_v_super_), (&__pyx_v_freelist), (&__pyx_v_stab), (&__pyx_v_shhdr)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 289; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5p.pyx":291
+ *         H5Pget_version(self.id, &super_, &freelist, &stab, &shhdr)
+ * 
+ *         return (super_, freelist, stab, shhdr)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_2 = PyLong_FromUnsignedLong(__pyx_v_super_); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 291; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = PyLong_FromUnsignedLong(__pyx_v_freelist); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 291; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_4 = PyLong_FromUnsignedLong(__pyx_v_stab); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 291; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = PyLong_FromUnsignedLong(__pyx_v_shhdr); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 291; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_6 = PyTuple_New(4); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 291; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_6);
+  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_2);
+  __Pyx_GIVEREF(__pyx_t_2);
+  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_3);
+  PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_t_4);
+  __Pyx_GIVEREF(__pyx_t_4);
+  PyTuple_SET_ITEM(__pyx_t_6, 3, __pyx_t_5);
+  __Pyx_GIVEREF(__pyx_t_5);
+  __pyx_t_2 = 0;
+  __pyx_t_3 = 0;
+  __pyx_t_4 = 0;
+  __pyx_t_5 = 0;
+  __pyx_r = ((PyObject *)__pyx_t_6);
+  __pyx_t_6 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_AddTraceback("h5py.h5p.PropFCID.get_version", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5p_8PropFCID_3set_userblock(PyObject *__pyx_v_self, PyObject *__pyx_arg_size); /*proto*/
+static char __pyx_doc_4h5py_3h5p_8PropFCID_2set_userblock[] = "(INT/LONG size)\n\n        Set the file user block size, in bytes.\n        Must be a power of 2, and at least 512.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5p_8PropFCID_3set_userblock(PyObject *__pyx_v_self, PyObject *__pyx_arg_size) {
+  hsize_t __pyx_v_size;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("set_userblock (wrapper)", 0);
+  assert(__pyx_arg_size); {
+    __pyx_v_size = __Pyx_PyInt_from_py_hsize_t(__pyx_arg_size); if (unlikely((__pyx_v_size == (hsize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 294; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5p.PropFCID.set_userblock", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_3h5p_8PropFCID_2set_userblock(((struct __pyx_obj_4h5py_3h5p_PropFCID *)__pyx_v_self), ((hsize_t)__pyx_v_size));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5p.pyx":294
+ * 
+ * 
+ *     def set_userblock(self, hsize_t size):             # <<<<<<<<<<<<<<
+ *         """(INT/LONG size)
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5p_8PropFCID_2set_userblock(struct __pyx_obj_4h5py_3h5p_PropFCID *__pyx_v_self, hsize_t __pyx_v_size) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("set_userblock", 0);
+
+  /* "h5py/h5p.pyx":300
+ *         Must be a power of 2, and at least 512.
+ *         """
+ *         H5Pset_userblock(self.id, size)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Pset_userblock(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base.id, __pyx_v_size); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 300; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py.h5p.PropFCID.set_userblock", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5p_8PropFCID_5get_userblock(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5p_8PropFCID_4get_userblock[] = "() => LONG size\n\n        Determine the user block size, in bytes.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5p_8PropFCID_5get_userblock(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_userblock (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5p_8PropFCID_4get_userblock(((struct __pyx_obj_4h5py_3h5p_PropFCID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5p.pyx":303
+ * 
+ * 
+ *     def get_userblock(self):             # <<<<<<<<<<<<<<
+ *         """() => LONG size
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5p_8PropFCID_4get_userblock(struct __pyx_obj_4h5py_3h5p_PropFCID *__pyx_v_self) {
+  hsize_t __pyx_v_size;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_userblock", 0);
+
+  /* "h5py/h5p.pyx":309
+ *         """
+ *         cdef hsize_t size
+ *         H5Pget_userblock(self.id, &size)             # <<<<<<<<<<<<<<
+ *         return size
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Pget_userblock(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base.id, (&__pyx_v_size)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 309; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5p.pyx":310
+ *         cdef hsize_t size
+ *         H5Pget_userblock(self.id, &size)
+ *         return size             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_2 = __Pyx_PyInt_to_py_hsize_t(__pyx_v_size); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 310; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5p.PropFCID.get_userblock", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5p_8PropFCID_7set_sizes(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_4h5py_3h5p_8PropFCID_6set_sizes[] = "(UINT addr, UINT size)\n\n        Set the addressing offsets and lengths for objects\n        in an HDF5 file, in bytes.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5p_8PropFCID_7set_sizes(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  size_t __pyx_v_addr;
+  size_t __pyx_v_size;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("set_sizes (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__addr,&__pyx_n_s__size,0};
+    PyObject* values[2] = {0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__addr)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__size)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("set_sizes", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 313; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_sizes") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 313; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+    }
+    __pyx_v_addr = __Pyx_PyInt_AsSize_t(values[0]); if (unlikely((__pyx_v_addr == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 313; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_size = __Pyx_PyInt_AsSize_t(values[1]); if (unlikely((__pyx_v_size == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 313; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("set_sizes", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 313; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5p.PropFCID.set_sizes", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_3h5p_8PropFCID_6set_sizes(((struct __pyx_obj_4h5py_3h5p_PropFCID *)__pyx_v_self), __pyx_v_addr, __pyx_v_size);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5p.pyx":313
+ * 
+ * 
+ *     def set_sizes(self, size_t addr, size_t size):             # <<<<<<<<<<<<<<
+ *         """(UINT addr, UINT size)
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5p_8PropFCID_6set_sizes(struct __pyx_obj_4h5py_3h5p_PropFCID *__pyx_v_self, size_t __pyx_v_addr, size_t __pyx_v_size) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("set_sizes", 0);
+
+  /* "h5py/h5p.pyx":319
+ *         in an HDF5 file, in bytes.
+ *         """
+ *         H5Pset_sizes(self.id, addr, size)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Pset_sizes(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base.id, __pyx_v_addr, __pyx_v_size); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 319; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py.h5p.PropFCID.set_sizes", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5p_8PropFCID_9get_sizes(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5p_8PropFCID_8get_sizes[] = "() => TUPLE sizes\n\n        Determine addressing offsets and lengths for objects in an\n        HDF5 file, in bytes.  Return value is a 2-tuple with values:\n\n        0.  UINT Address offsets\n        1.  UINT Lengths\n        ";
+static PyObject *__pyx_pw_4h5py_3h5p_8PropFCID_9get_sizes(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_sizes (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5p_8PropFCID_8get_sizes(((struct __pyx_obj_4h5py_3h5p_PropFCID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5p.pyx":322
+ * 
+ * 
+ *     def get_sizes(self):             # <<<<<<<<<<<<<<
+ *         """() => TUPLE sizes
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5p_8PropFCID_8get_sizes(struct __pyx_obj_4h5py_3h5p_PropFCID *__pyx_v_self) {
+  size_t __pyx_v_addr;
+  size_t __pyx_v_size;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_sizes", 0);
+
+  /* "h5py/h5p.pyx":333
+ *         cdef size_t addr
+ *         cdef size_t size
+ *         H5Pget_sizes(self.id, &addr, &size)             # <<<<<<<<<<<<<<
+ *         return (addr, size)
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Pget_sizes(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base.id, (&__pyx_v_addr), (&__pyx_v_size)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 333; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5p.pyx":334
+ *         cdef size_t size
+ *         H5Pget_sizes(self.id, &addr, &size)
+ *         return (addr, size)             # <<<<<<<<<<<<<<
+ * 
+ *     def set_link_creation_order(self, unsigned int flags):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_2 = __Pyx_PyInt_FromSize_t(__pyx_v_addr); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 334; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_size); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 334; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 334; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2);
+  __Pyx_GIVEREF(__pyx_t_2);
+  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_3);
+  __pyx_t_2 = 0;
+  __pyx_t_3 = 0;
+  __pyx_r = ((PyObject *)__pyx_t_4);
+  __pyx_t_4 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("h5py.h5p.PropFCID.get_sizes", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5p_8PropFCID_11set_link_creation_order(PyObject *__pyx_v_self, PyObject *__pyx_arg_flags); /*proto*/
+static char __pyx_doc_4h5py_3h5p_8PropFCID_10set_link_creation_order[] = " (UINT flags)\n\n        Set tracking and indexing of creation order for links added to this group\n\n        flags -- h5p.CRT_ORDER_TRACKED, h5p.CRT_ORDER_INDEXED\n        ";
+static PyObject *__pyx_pw_4h5py_3h5p_8PropFCID_11set_link_creation_order(PyObject *__pyx_v_self, PyObject *__pyx_arg_flags) {
+  unsigned int __pyx_v_flags;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("set_link_creation_order (wrapper)", 0);
+  assert(__pyx_arg_flags); {
+    __pyx_v_flags = __Pyx_PyInt_AsUnsignedInt(__pyx_arg_flags); if (unlikely((__pyx_v_flags == (unsigned int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 336; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5p.PropFCID.set_link_creation_order", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_3h5p_8PropFCID_10set_link_creation_order(((struct __pyx_obj_4h5py_3h5p_PropFCID *)__pyx_v_self), ((unsigned int)__pyx_v_flags));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5p.pyx":336
+ *         return (addr, size)
+ * 
+ *     def set_link_creation_order(self, unsigned int flags):             # <<<<<<<<<<<<<<
+ *         """ (UINT flags)
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5p_8PropFCID_10set_link_creation_order(struct __pyx_obj_4h5py_3h5p_PropFCID *__pyx_v_self, unsigned int __pyx_v_flags) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("set_link_creation_order", 0);
+
+  /* "h5py/h5p.pyx":343
+ *         flags -- h5p.CRT_ORDER_TRACKED, h5p.CRT_ORDER_INDEXED
+ *         """
+ *         H5Pset_link_creation_order(self.id, flags)             # <<<<<<<<<<<<<<
+ * 
+ *     def get_link_creation_order(self):
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Pset_link_creation_order(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base.id, __pyx_v_flags); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py.h5p.PropFCID.set_link_creation_order", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5p_8PropFCID_13get_link_creation_order(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5p_8PropFCID_12get_link_creation_order[] = " () -> UINT flags\n\n        Get tracking and indexing of creation order for links added to this group\n        ";
+static PyObject *__pyx_pw_4h5py_3h5p_8PropFCID_13get_link_creation_order(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_link_creation_order (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5p_8PropFCID_12get_link_creation_order(((struct __pyx_obj_4h5py_3h5p_PropFCID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5p.pyx":345
+ *         H5Pset_link_creation_order(self.id, flags)
+ * 
+ *     def get_link_creation_order(self):             # <<<<<<<<<<<<<<
+ *         """ () -> UINT flags
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5p_8PropFCID_12get_link_creation_order(struct __pyx_obj_4h5py_3h5p_PropFCID *__pyx_v_self) {
+  unsigned int __pyx_v_flags;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_link_creation_order", 0);
+
+  /* "h5py/h5p.pyx":351
+ *         """
+ *         cdef unsigned int flags
+ *         H5Pget_link_creation_order(self.id, &flags)             # <<<<<<<<<<<<<<
+ *         return flags
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Pget_link_creation_order(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base.id, (&__pyx_v_flags)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 351; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5p.pyx":352
+ *         cdef unsigned int flags
+ *         H5Pget_link_creation_order(self.id, &flags)
+ *         return flags             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_2 = PyLong_FromUnsignedLong(__pyx_v_flags); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 352; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5p.PropFCID.get_link_creation_order", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5p_8PropDCID_1set_layout(PyObject *__pyx_v_self, PyObject *__pyx_arg_layout_code); /*proto*/
+static char __pyx_doc_4h5py_3h5p_8PropDCID_set_layout[] = "(INT layout_code)\n\n        Set dataset storage strategy; legal values are:\n\n        - h5d.COMPACT\n        - h5d.CONTIGUOUS\n        - h5d.CHUNKED\n        ";
+static PyObject *__pyx_pw_4h5py_3h5p_8PropDCID_1set_layout(PyObject *__pyx_v_self, PyObject *__pyx_arg_layout_code) {
+  int __pyx_v_layout_code;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("set_layout (wrapper)", 0);
+  assert(__pyx_arg_layout_code); {
+    __pyx_v_layout_code = __Pyx_PyInt_AsInt(__pyx_arg_layout_code); if (unlikely((__pyx_v_layout_code == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 363; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5p.PropDCID.set_layout", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_3h5p_8PropDCID_set_layout(((struct __pyx_obj_4h5py_3h5p_PropDCID *)__pyx_v_self), ((int)__pyx_v_layout_code));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5p.pyx":363
+ * 
+ * 
+ *     def set_layout(self, int layout_code):             # <<<<<<<<<<<<<<
+ *         """(INT layout_code)
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5p_8PropDCID_set_layout(struct __pyx_obj_4h5py_3h5p_PropDCID *__pyx_v_self, int __pyx_v_layout_code) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("set_layout", 0);
+
+  /* "h5py/h5p.pyx":372
+ *         - h5d.CHUNKED
+ *         """
+ *         H5Pset_layout(self.id, layout_code)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Pset_layout(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_base.id, __pyx_v_layout_code); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 372; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py.h5p.PropDCID.set_layout", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5p_8PropDCID_3get_layout(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5p_8PropDCID_2get_layout[] = "() => INT layout_code\n\n        Determine the storage strategy of a dataset; legal values are:\n\n        - h5d.COMPACT\n        - h5d.CONTIGUOUS\n        - h5d.CHUNKED\n        ";
+static PyObject *__pyx_pw_4h5py_3h5p_8PropDCID_3get_layout(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_layout (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5p_8PropDCID_2get_layout(((struct __pyx_obj_4h5py_3h5p_PropDCID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5p.pyx":375
+ * 
+ * 
+ *     def get_layout(self):             # <<<<<<<<<<<<<<
+ *         """() => INT layout_code
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5p_8PropDCID_2get_layout(struct __pyx_obj_4h5py_3h5p_PropDCID *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  H5D_layout_t __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_layout", 0);
+
+  /* "h5py/h5p.pyx":384
+ *         - h5d.CHUNKED
+ *         """
+ *         return <int>H5Pget_layout(self.id)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Pget_layout(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyInt_FromLong(((int)__pyx_t_1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5p.PropDCID.get_layout", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5p_8PropDCID_5set_chunk(PyObject *__pyx_v_self, PyObject *__pyx_v_chunksize); /*proto*/
+static char __pyx_doc_4h5py_3h5p_8PropDCID_4set_chunk[] = "(TUPLE chunksize)\n\n        Set the dataset chunk size.  It's up to you to provide\n        values which are compatible with your dataset.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5p_8PropDCID_5set_chunk(PyObject *__pyx_v_self, PyObject *__pyx_v_chunksize) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("set_chunk (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5p_8PropDCID_4set_chunk(((struct __pyx_obj_4h5py_3h5p_PropDCID *)__pyx_v_self), ((PyObject *)__pyx_v_chunksize));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5p.pyx":387
+ * 
+ * 
+ *     def set_chunk(self, object chunksize):             # <<<<<<<<<<<<<<
+ *         """(TUPLE chunksize)
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5p_8PropDCID_4set_chunk(struct __pyx_obj_4h5py_3h5p_PropDCID *__pyx_v_self, PyObject *__pyx_v_chunksize) {
+  int __pyx_v_rank;
+  hsize_t *__pyx_v_dims;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  Py_ssize_t __pyx_t_2;
+  void *__pyx_t_3;
+  herr_t __pyx_t_4;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("set_chunk", 0);
+
+  /* "h5py/h5p.pyx":395
+ *         cdef int rank
+ *         cdef hsize_t* dims
+ *         dims = NULL             # <<<<<<<<<<<<<<
+ * 
+ *         require_tuple(chunksize, 0, -1, "chunksize")
+ */
+  __pyx_v_dims = NULL;
+
+  /* "h5py/h5p.pyx":397
+ *         dims = NULL
+ * 
+ *         require_tuple(chunksize, 0, -1, "chunksize")             # <<<<<<<<<<<<<<
+ *         rank = len(chunksize)
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_5utils_require_tuple(__pyx_v_chunksize, 0, -1, __pyx_k__chunksize); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 397; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5p.pyx":398
+ * 
+ *         require_tuple(chunksize, 0, -1, "chunksize")
+ *         rank = len(chunksize)             # <<<<<<<<<<<<<<
+ * 
+ *         dims = <hsize_t*>emalloc(sizeof(hsize_t)*rank)
+ */
+  __pyx_t_2 = PyObject_Length(__pyx_v_chunksize); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 398; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v_rank = __pyx_t_2;
+
+  /* "h5py/h5p.pyx":400
+ *         rank = len(chunksize)
+ * 
+ *         dims = <hsize_t*>emalloc(sizeof(hsize_t)*rank)             # <<<<<<<<<<<<<<
+ *         try:
+ *             convert_tuple(chunksize, dims, rank)
+ */
+  __pyx_t_3 = __pyx_f_4h5py_5utils_emalloc(((sizeof(hsize_t)) * __pyx_v_rank)); if (unlikely(__pyx_t_3 == NULL && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 400; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v_dims = ((hsize_t *)__pyx_t_3);
+
+  /* "h5py/h5p.pyx":401
+ * 
+ *         dims = <hsize_t*>emalloc(sizeof(hsize_t)*rank)
+ *         try:             # <<<<<<<<<<<<<<
+ *             convert_tuple(chunksize, dims, rank)
+ *             H5Pset_chunk(self.id, rank, dims)
+ */
+  /*try:*/ {
+
+    /* "h5py/h5p.pyx":402
+ *         dims = <hsize_t*>emalloc(sizeof(hsize_t)*rank)
+ *         try:
+ *             convert_tuple(chunksize, dims, rank)             # <<<<<<<<<<<<<<
+ *             H5Pset_chunk(self.id, rank, dims)
+ *         finally:
+ */
+    __pyx_t_1 = __pyx_f_4h5py_5utils_convert_tuple(__pyx_v_chunksize, __pyx_v_dims, __pyx_v_rank); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 402; __pyx_clineno = __LINE__; goto __pyx_L4;}
+
+    /* "h5py/h5p.pyx":403
+ *         try:
+ *             convert_tuple(chunksize, dims, rank)
+ *             H5Pset_chunk(self.id, rank, dims)             # <<<<<<<<<<<<<<
+ *         finally:
+ *             efree(dims)
+ */
+    __pyx_t_4 = __pyx_f_4h5py_4defs_H5Pset_chunk(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_base.id, __pyx_v_rank, __pyx_v_dims); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 403; __pyx_clineno = __LINE__; goto __pyx_L4;}
+  }
+
+  /* "h5py/h5p.pyx":405
+ *             H5Pset_chunk(self.id, rank, dims)
+ *         finally:
+ *             efree(dims)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  /*finally:*/ {
+    int __pyx_why;
+    PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb;
+    int __pyx_exc_lineno;
+    __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
+    __pyx_why = 0; goto __pyx_L5;
+    __pyx_L4: {
+      __pyx_why = 4;
+      __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb);
+      __pyx_exc_lineno = __pyx_lineno;
+      goto __pyx_L5;
+    }
+    __pyx_L5:;
+    __pyx_f_4h5py_5utils_efree(__pyx_v_dims);
+    switch (__pyx_why) {
+      case 4: {
+        __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb);
+        __pyx_lineno = __pyx_exc_lineno;
+        __pyx_exc_type = 0;
+        __pyx_exc_value = 0;
+        __pyx_exc_tb = 0;
+        goto __pyx_L1_error;
+      }
+    }
+  }
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py.h5p.PropDCID.set_chunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5p_8PropDCID_7get_chunk(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5p_8PropDCID_6get_chunk[] = "() => TUPLE chunk_dimensions\n\n        Obtain the dataset chunk size, as a tuple.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5p_8PropDCID_7get_chunk(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_chunk (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5p_8PropDCID_6get_chunk(((struct __pyx_obj_4h5py_3h5p_PropDCID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5p.pyx":408
+ * 
+ * 
+ *     def get_chunk(self):             # <<<<<<<<<<<<<<
+ *         """() => TUPLE chunk_dimensions
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5p_8PropDCID_6get_chunk(struct __pyx_obj_4h5py_3h5p_PropDCID *__pyx_v_self) {
+  int __pyx_v_rank;
+  hsize_t *__pyx_v_dims;
+  PyObject *__pyx_v_tpl = NULL;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  void *__pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_chunk", 0);
+
+  /* "h5py/h5p.pyx":416
+ *         cdef hsize_t *dims
+ * 
+ *         rank = H5Pget_chunk(self.id, 0, NULL)             # <<<<<<<<<<<<<<
+ *         assert rank >= 0
+ *         dims = <hsize_t*>emalloc(sizeof(hsize_t)*rank)
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Pget_chunk(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_base.id, 0, NULL); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 416; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v_rank = __pyx_t_1;
+
+  /* "h5py/h5p.pyx":417
+ * 
+ *         rank = H5Pget_chunk(self.id, 0, NULL)
+ *         assert rank >= 0             # <<<<<<<<<<<<<<
+ *         dims = <hsize_t*>emalloc(sizeof(hsize_t)*rank)
+ * 
+ */
+  #ifndef CYTHON_WITHOUT_ASSERTIONS
+  if (unlikely(!(__pyx_v_rank >= 0))) {
+    PyErr_SetNone(PyExc_AssertionError);
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 417; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  }
+  #endif
+
+  /* "h5py/h5p.pyx":418
+ *         rank = H5Pget_chunk(self.id, 0, NULL)
+ *         assert rank >= 0
+ *         dims = <hsize_t*>emalloc(sizeof(hsize_t)*rank)             # <<<<<<<<<<<<<<
+ * 
+ *         try:
+ */
+  __pyx_t_2 = __pyx_f_4h5py_5utils_emalloc(((sizeof(hsize_t)) * __pyx_v_rank)); if (unlikely(__pyx_t_2 == NULL && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 418; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v_dims = ((hsize_t *)__pyx_t_2);
+
+  /* "h5py/h5p.pyx":420
+ *         dims = <hsize_t*>emalloc(sizeof(hsize_t)*rank)
+ * 
+ *         try:             # <<<<<<<<<<<<<<
+ *             H5Pget_chunk(self.id, rank, dims)
+ *             tpl = convert_dims(dims, rank)
+ */
+  /*try:*/ {
+
+    /* "h5py/h5p.pyx":421
+ * 
+ *         try:
+ *             H5Pget_chunk(self.id, rank, dims)             # <<<<<<<<<<<<<<
+ *             tpl = convert_dims(dims, rank)
+ *             return tpl
+ */
+    __pyx_t_1 = __pyx_f_4h5py_4defs_H5Pget_chunk(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_base.id, __pyx_v_rank, __pyx_v_dims); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 421; __pyx_clineno = __LINE__; goto __pyx_L4;}
+
+    /* "h5py/h5p.pyx":422
+ *         try:
+ *             H5Pget_chunk(self.id, rank, dims)
+ *             tpl = convert_dims(dims, rank)             # <<<<<<<<<<<<<<
+ *             return tpl
+ *         finally:
+ */
+    __pyx_t_3 = __pyx_f_4h5py_5utils_convert_dims(__pyx_v_dims, __pyx_v_rank); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 422; __pyx_clineno = __LINE__; goto __pyx_L4;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_v_tpl = __pyx_t_3;
+    __pyx_t_3 = 0;
+
+    /* "h5py/h5p.pyx":423
+ *             H5Pget_chunk(self.id, rank, dims)
+ *             tpl = convert_dims(dims, rank)
+ *             return tpl             # <<<<<<<<<<<<<<
+ *         finally:
+ *             efree(dims)
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __Pyx_INCREF(__pyx_v_tpl);
+    __pyx_r = __pyx_v_tpl;
+    goto __pyx_L3;
+  }
+
+  /* "h5py/h5p.pyx":425
+ *             return tpl
+ *         finally:
+ *             efree(dims)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  /*finally:*/ {
+    int __pyx_why;
+    PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb;
+    int __pyx_exc_lineno;
+    __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
+    __pyx_why = 0; goto __pyx_L5;
+    __pyx_L3: __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
+    __pyx_why = 3; goto __pyx_L5;
+    __pyx_L4: {
+      __pyx_why = 4;
+      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb);
+      __pyx_exc_lineno = __pyx_lineno;
+      goto __pyx_L5;
+    }
+    __pyx_L5:;
+    __pyx_f_4h5py_5utils_efree(__pyx_v_dims);
+    switch (__pyx_why) {
+      case 3: goto __pyx_L0;
+      case 4: {
+        __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb);
+        __pyx_lineno = __pyx_exc_lineno;
+        __pyx_exc_type = 0;
+        __pyx_exc_value = 0;
+        __pyx_exc_tb = 0;
+        goto __pyx_L1_error;
+      }
+    }
+  }
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("h5py.h5p.PropDCID.get_chunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_tpl);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5p_8PropDCID_9set_fill_value(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
+static char __pyx_doc_4h5py_3h5p_8PropDCID_8set_fill_value[] = "(NDARRAY value)\n\n        Set the dataset fill value.  The object provided should be an\n        0-dimensional NumPy array; otherwise, the value will be read from\n        the first element.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5p_8PropDCID_9set_fill_value(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("set_fill_value (wrapper)", 0);
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_value), __pyx_ptype_4h5py_5numpy_ndarray, 0, "value", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 428; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_pf_4h5py_3h5p_8PropDCID_8set_fill_value(((struct __pyx_obj_4h5py_3h5p_PropDCID *)__pyx_v_self), ((PyArrayObject *)__pyx_v_value));
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5p.pyx":428
+ * 
+ * 
+ *     def set_fill_value(self, ndarray value not None):             # <<<<<<<<<<<<<<
+ *         """(NDARRAY value)
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5p_8PropDCID_8set_fill_value(struct __pyx_obj_4h5py_3h5p_PropDCID *__pyx_v_self, PyArrayObject *__pyx_v_value) {
+  struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_v_tid = 0;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  struct __pyx_opt_args_4h5py_5utils_check_numpy_read __pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  herr_t __pyx_t_5;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("set_fill_value", 0);
+
+  /* "h5py/h5p.pyx":437
+ *         cdef TypeID tid
+ * 
+ *         check_numpy_read(value, -1)             # <<<<<<<<<<<<<<
+ *         tid = py_create(value.dtype)
+ *         H5Pset_fill_value(self.id, tid.id, value.data)
+ */
+  __pyx_t_2.__pyx_n = 1;
+  __pyx_t_2.space_id = -1;
+  __pyx_t_1 = __pyx_f_4h5py_5utils_check_numpy_read(__pyx_v_value, 0, &__pyx_t_2); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 437; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5p.pyx":438
+ * 
+ *         check_numpy_read(value, -1)
+ *         tid = py_create(value.dtype)             # <<<<<<<<<<<<<<
+ *         H5Pset_fill_value(self.id, tid.id, value.data)
+ * 
+ */
+  __pyx_t_3 = PyObject_GetAttr(((PyObject *)__pyx_v_value), __pyx_n_s__dtype); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 438; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_4 = ((PyObject *)__pyx_f_4h5py_3h5t_py_create(__pyx_t_3, 0, NULL)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 438; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_v_tid = ((struct __pyx_obj_4h5py_3h5t_TypeID *)__pyx_t_4);
+  __pyx_t_4 = 0;
+
+  /* "h5py/h5p.pyx":439
+ *         check_numpy_read(value, -1)
+ *         tid = py_create(value.dtype)
+ *         H5Pset_fill_value(self.id, tid.id, value.data)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_5 = __pyx_f_4h5py_4defs_H5Pset_fill_value(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_base.id, __pyx_v_tid->__pyx_base.id, __pyx_v_value->data); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 439; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("h5py.h5p.PropDCID.set_fill_value", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_tid);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5p_8PropDCID_11get_fill_value(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
+static char __pyx_doc_4h5py_3h5p_8PropDCID_10get_fill_value[] = "(NDARRAY value)\n\n        Read the dataset fill value into a NumPy array.  It will be\n        converted to match the array dtype.  If the array has nonzero\n        rank, only the first element will contain the value.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5p_8PropDCID_11get_fill_value(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_fill_value (wrapper)", 0);
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_value), __pyx_ptype_4h5py_5numpy_ndarray, 0, "value", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 442; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_pf_4h5py_3h5p_8PropDCID_10get_fill_value(((struct __pyx_obj_4h5py_3h5p_PropDCID *)__pyx_v_self), ((PyArrayObject *)__pyx_v_value));
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5p.pyx":442
+ * 
+ * 
+ *     def get_fill_value(self, ndarray value not None):             # <<<<<<<<<<<<<<
+ *         """(NDARRAY value)
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5p_8PropDCID_10get_fill_value(struct __pyx_obj_4h5py_3h5p_PropDCID *__pyx_v_self, PyArrayObject *__pyx_v_value) {
+  struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_v_tid = 0;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  struct __pyx_opt_args_4h5py_5utils_check_numpy_write __pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  herr_t __pyx_t_5;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_fill_value", 0);
+
+  /* "h5py/h5p.pyx":451
+ *         cdef TypeID tid
+ * 
+ *         check_numpy_write(value, -1)             # <<<<<<<<<<<<<<
+ *         tid = py_create(value.dtype)
+ *         H5Pget_fill_value(self.id, tid.id, value.data)
+ */
+  __pyx_t_2.__pyx_n = 1;
+  __pyx_t_2.space_id = -1;
+  __pyx_t_1 = __pyx_f_4h5py_5utils_check_numpy_write(__pyx_v_value, 0, &__pyx_t_2); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 451; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5p.pyx":452
+ * 
+ *         check_numpy_write(value, -1)
+ *         tid = py_create(value.dtype)             # <<<<<<<<<<<<<<
+ *         H5Pget_fill_value(self.id, tid.id, value.data)
+ * 
+ */
+  __pyx_t_3 = PyObject_GetAttr(((PyObject *)__pyx_v_value), __pyx_n_s__dtype); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 452; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_4 = ((PyObject *)__pyx_f_4h5py_3h5t_py_create(__pyx_t_3, 0, NULL)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 452; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_v_tid = ((struct __pyx_obj_4h5py_3h5t_TypeID *)__pyx_t_4);
+  __pyx_t_4 = 0;
+
+  /* "h5py/h5p.pyx":453
+ *         check_numpy_write(value, -1)
+ *         tid = py_create(value.dtype)
+ *         H5Pget_fill_value(self.id, tid.id, value.data)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_5 = __pyx_f_4h5py_4defs_H5Pget_fill_value(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_base.id, __pyx_v_tid->__pyx_base.id, __pyx_v_value->data); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 453; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("h5py.h5p.PropDCID.get_fill_value", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_tid);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5p_8PropDCID_13fill_value_defined(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5p_8PropDCID_12fill_value_defined[] = "() => INT fill_status\n\n        Determine the status of the dataset fill value.  Return values are:\n\n        - h5d.FILL_VALUE_UNDEFINED\n        - h5d.FILL_VALUE_DEFAULT\n        - h5d.FILL_VALUE_USER_DEFINED\n        ";
+static PyObject *__pyx_pw_4h5py_3h5p_8PropDCID_13fill_value_defined(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("fill_value_defined (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5p_8PropDCID_12fill_value_defined(((struct __pyx_obj_4h5py_3h5p_PropDCID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5p.pyx":456
+ * 
+ * 
+ *     def fill_value_defined(self):             # <<<<<<<<<<<<<<
+ *         """() => INT fill_status
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5p_8PropDCID_12fill_value_defined(struct __pyx_obj_4h5py_3h5p_PropDCID *__pyx_v_self) {
+  H5D_fill_value_t __pyx_v_val;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("fill_value_defined", 0);
+
+  /* "h5py/h5p.pyx":466
+ *         """
+ *         cdef H5D_fill_value_t val
+ *         H5Pfill_value_defined(self.id, &val)             # <<<<<<<<<<<<<<
+ *         return <int>val
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Pfill_value_defined(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_base.id, (&__pyx_v_val)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 466; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5p.pyx":467
+ *         cdef H5D_fill_value_t val
+ *         H5Pfill_value_defined(self.id, &val)
+ *         return <int>val             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_2 = PyInt_FromLong(((int)__pyx_v_val)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 467; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5p.PropDCID.fill_value_defined", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5p_8PropDCID_15set_fill_time(PyObject *__pyx_v_self, PyObject *__pyx_arg_fill_time); /*proto*/
+static char __pyx_doc_4h5py_3h5p_8PropDCID_14set_fill_time[] = "(INT fill_time)\n\n        Define when fill values are written to the dataset.  Legal\n        values (defined in module h5d) are:\n\n        - h5d.FILL_TIME_ALLOC\n        - h5d.FILL_TIME_NEVER\n        - h5d.FILL_TIME_IFSET\n        ";
+static PyObject *__pyx_pw_4h5py_3h5p_8PropDCID_15set_fill_time(PyObject *__pyx_v_self, PyObject *__pyx_arg_fill_time) {
+  int __pyx_v_fill_time;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("set_fill_time (wrapper)", 0);
+  assert(__pyx_arg_fill_time); {
+    __pyx_v_fill_time = __Pyx_PyInt_AsInt(__pyx_arg_fill_time); if (unlikely((__pyx_v_fill_time == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 470; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5p.PropDCID.set_fill_time", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_3h5p_8PropDCID_14set_fill_time(((struct __pyx_obj_4h5py_3h5p_PropDCID *)__pyx_v_self), ((int)__pyx_v_fill_time));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5p.pyx":470
+ * 
+ * 
+ *     def set_fill_time(self, int fill_time):             # <<<<<<<<<<<<<<
+ *         """(INT fill_time)
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5p_8PropDCID_14set_fill_time(struct __pyx_obj_4h5py_3h5p_PropDCID *__pyx_v_self, int __pyx_v_fill_time) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("set_fill_time", 0);
+
+  /* "h5py/h5p.pyx":480
+ *         - h5d.FILL_TIME_IFSET
+ *         """
+ *         H5Pset_fill_time(self.id, <H5D_fill_time_t>fill_time)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Pset_fill_time(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_base.id, ((H5D_fill_time_t)__pyx_v_fill_time)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 480; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py.h5p.PropDCID.set_fill_time", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5p_8PropDCID_17get_fill_time(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5p_8PropDCID_16get_fill_time[] = " () => INT\n\n        Determine when fill values are written to the dataset.  Legal\n        values (defined in module h5d) are:\n\n        - h5d.FILL_TIME_ALLOC\n        - h5d.FILL_TIME_NEVER\n        - h5d.FILL_TIME_IFSET\n        ";
+static PyObject *__pyx_pw_4h5py_3h5p_8PropDCID_17get_fill_time(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_fill_time (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5p_8PropDCID_16get_fill_time(((struct __pyx_obj_4h5py_3h5p_PropDCID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5p.pyx":483
+ * 
+ * 
+ *     def get_fill_time(self):             # <<<<<<<<<<<<<<
+ *         """ () => INT
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5p_8PropDCID_16get_fill_time(struct __pyx_obj_4h5py_3h5p_PropDCID *__pyx_v_self) {
+  H5D_fill_time_t __pyx_v_fill_time;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_fill_time", 0);
+
+  /* "h5py/h5p.pyx":494
+ *         """
+ *         cdef H5D_fill_time_t fill_time
+ *         H5Pget_fill_time(self.id, &fill_time)             # <<<<<<<<<<<<<<
+ *         return <int>fill_time
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Pget_fill_time(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_base.id, (&__pyx_v_fill_time)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 494; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5p.pyx":495
+ *         cdef H5D_fill_time_t fill_time
+ *         H5Pget_fill_time(self.id, &fill_time)
+ *         return <int>fill_time             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_2 = PyInt_FromLong(((int)__pyx_v_fill_time)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 495; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5p.PropDCID.get_fill_time", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5p_8PropDCID_19set_alloc_time(PyObject *__pyx_v_self, PyObject *__pyx_arg_alloc_time); /*proto*/
+static char __pyx_doc_4h5py_3h5p_8PropDCID_18set_alloc_time[] = "(INT alloc_time)\n\n        Set the storage space allocation time.  One of h5d.ALLOC_TIME*.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5p_8PropDCID_19set_alloc_time(PyObject *__pyx_v_self, PyObject *__pyx_arg_alloc_time) {
+  int __pyx_v_alloc_time;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("set_alloc_time (wrapper)", 0);
+  assert(__pyx_arg_alloc_time); {
+    __pyx_v_alloc_time = __Pyx_PyInt_AsInt(__pyx_arg_alloc_time); if (unlikely((__pyx_v_alloc_time == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 498; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5p.PropDCID.set_alloc_time", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_3h5p_8PropDCID_18set_alloc_time(((struct __pyx_obj_4h5py_3h5p_PropDCID *)__pyx_v_self), ((int)__pyx_v_alloc_time));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5p.pyx":498
+ * 
+ * 
+ *     def set_alloc_time(self, int alloc_time):             # <<<<<<<<<<<<<<
+ *         """(INT alloc_time)
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5p_8PropDCID_18set_alloc_time(struct __pyx_obj_4h5py_3h5p_PropDCID *__pyx_v_self, int __pyx_v_alloc_time) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("set_alloc_time", 0);
+
+  /* "h5py/h5p.pyx":503
+ *         Set the storage space allocation time.  One of h5d.ALLOC_TIME*.
+ *         """
+ *         H5Pset_alloc_time(self.id, <H5D_alloc_time_t>alloc_time)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Pset_alloc_time(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_base.id, ((H5D_alloc_time_t)__pyx_v_alloc_time)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 503; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py.h5p.PropDCID.set_alloc_time", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5p_8PropDCID_21get_alloc_time(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5p_8PropDCID_20get_alloc_time[] = "() => INT alloc_time\n\n        Get the storage space allocation time.  One of h5d.ALLOC_TIME*.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5p_8PropDCID_21get_alloc_time(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_alloc_time (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5p_8PropDCID_20get_alloc_time(((struct __pyx_obj_4h5py_3h5p_PropDCID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5p.pyx":506
+ * 
+ * 
+ *     def get_alloc_time(self):             # <<<<<<<<<<<<<<
+ *         """() => INT alloc_time
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5p_8PropDCID_20get_alloc_time(struct __pyx_obj_4h5py_3h5p_PropDCID *__pyx_v_self) {
+  H5D_alloc_time_t __pyx_v_alloc_time;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_alloc_time", 0);
+
+  /* "h5py/h5p.pyx":512
+ *         """
+ *         cdef H5D_alloc_time_t alloc_time
+ *         H5Pget_alloc_time(self.id, &alloc_time)             # <<<<<<<<<<<<<<
+ *         return <int>alloc_time
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Pget_alloc_time(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_base.id, (&__pyx_v_alloc_time)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 512; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5p.pyx":513
+ *         cdef H5D_alloc_time_t alloc_time
+ *         H5Pget_alloc_time(self.id, &alloc_time)
+ *         return <int>alloc_time             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_2 = PyInt_FromLong(((int)__pyx_v_alloc_time)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 513; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5p.PropDCID.get_alloc_time", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5p_8PropDCID_23set_filter(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_4h5py_3h5p_8PropDCID_22set_filter[] = "(INT filter_code, UINT flags=0, TUPLE values=None)\n\n        Set a filter in the pipeline.  Params are:\n\n        filter_code\n            One of the following:\n\n            - h5z.FILTER_DEFLATE\n            - h5z.FILTER_SHUFFLE\n            - h5z.FILTER_FLETCHER32\n            - h5z.FILTER_SZIP\n\n        flags\n            Bit flags (h5z.FLAG*) setting filter properties\n\n        values\n            TUPLE of UINTs giving [...]
+static PyObject *__pyx_pw_4h5py_3h5p_8PropDCID_23set_filter(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  int __pyx_v_filter_code;
+  unsigned int __pyx_v_flags;
+  PyObject *__pyx_v_values = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("set_filter (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__filter_code,&__pyx_n_s__flags,&__pyx_n_s__values,0};
+    PyObject* values[3] = {0,0,0};
+
+    /* "h5py/h5p.pyx":519
+ * 
+ * 
+ *     def set_filter(self, int filter_code, unsigned int flags=0, object values=None):             # <<<<<<<<<<<<<<
+ *         """(INT filter_code, UINT flags=0, TUPLE values=None)
+ * 
+ */
+    values[2] = ((PyObject *)Py_None);
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__filter_code)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__flags);
+          if (value) { values[1] = value; kw_args--; }
+        }
+        case  2:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__values);
+          if (value) { values[2] = value; kw_args--; }
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_filter") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 519; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else {
+      switch (PyTuple_GET_SIZE(__pyx_args)) {
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+    }
+    __pyx_v_filter_code = __Pyx_PyInt_AsInt(values[0]); if (unlikely((__pyx_v_filter_code == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 519; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    if (values[1]) {
+      __pyx_v_flags = __Pyx_PyInt_AsUnsignedInt(values[1]); if (unlikely((__pyx_v_flags == (unsigned int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 519; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    } else {
+      __pyx_v_flags = ((unsigned int)0);
+    }
+    __pyx_v_values = values[2];
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("set_filter", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 519; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5p.PropDCID.set_filter", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_3h5p_8PropDCID_22set_filter(((struct __pyx_obj_4h5py_3h5p_PropDCID *)__pyx_v_self), __pyx_v_filter_code, __pyx_v_flags, __pyx_v_values);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_4h5py_3h5p_8PropDCID_22set_filter(struct __pyx_obj_4h5py_3h5p_PropDCID *__pyx_v_self, int __pyx_v_filter_code, unsigned int __pyx_v_flags, PyObject *__pyx_v_values) {
+  size_t __pyx_v_nelements;
+  unsigned int *__pyx_v_cd_values;
+  int __pyx_v_i;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  int __pyx_t_2;
+  Py_ssize_t __pyx_t_3;
+  int __pyx_t_4;
+  int __pyx_t_5;
+  void *__pyx_t_6;
+  size_t __pyx_t_7;
+  PyObject *__pyx_t_8 = NULL;
+  PyObject *__pyx_t_9 = NULL;
+  unsigned int __pyx_t_10;
+  herr_t __pyx_t_11;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("set_filter", 0);
+
+  /* "h5py/h5p.pyx":541
+ *         cdef unsigned int *cd_values
+ *         cdef int i
+ *         cd_values = NULL             # <<<<<<<<<<<<<<
+ * 
+ *         require_tuple(values, 1, -1, "values")
+ */
+  __pyx_v_cd_values = NULL;
+
+  /* "h5py/h5p.pyx":543
+ *         cd_values = NULL
+ * 
+ *         require_tuple(values, 1, -1, "values")             # <<<<<<<<<<<<<<
+ * 
+ *         try:
+ */
+  __pyx_t_1 = __pyx_f_4h5py_5utils_require_tuple(__pyx_v_values, 1, -1, __pyx_k__values); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 543; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5p.pyx":545
+ *         require_tuple(values, 1, -1, "values")
+ * 
+ *         try:             # <<<<<<<<<<<<<<
+ *             if values is None or len(values) == 0:
+ *                 nelements = 0
+ */
+  /*try:*/ {
+
+    /* "h5py/h5p.pyx":546
+ * 
+ *         try:
+ *             if values is None or len(values) == 0:             # <<<<<<<<<<<<<<
+ *                 nelements = 0
+ *                 cd_values = NULL
+ */
+    __pyx_t_2 = (__pyx_v_values == Py_None);
+    if (!__pyx_t_2) {
+      __pyx_t_3 = PyObject_Length(__pyx_v_values); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 546; __pyx_clineno = __LINE__; goto __pyx_L4;}
+      __pyx_t_4 = (__pyx_t_3 == 0);
+      __pyx_t_5 = __pyx_t_4;
+    } else {
+      __pyx_t_5 = __pyx_t_2;
+    }
+    if (__pyx_t_5) {
+
+      /* "h5py/h5p.pyx":547
+ *         try:
+ *             if values is None or len(values) == 0:
+ *                 nelements = 0             # <<<<<<<<<<<<<<
+ *                 cd_values = NULL
+ *             else:
+ */
+      __pyx_v_nelements = 0;
+
+      /* "h5py/h5p.pyx":548
+ *             if values is None or len(values) == 0:
+ *                 nelements = 0
+ *                 cd_values = NULL             # <<<<<<<<<<<<<<
+ *             else:
+ *                 nelements = len(values)
+ */
+      __pyx_v_cd_values = NULL;
+      goto __pyx_L6;
+    }
+    /*else*/ {
+
+      /* "h5py/h5p.pyx":550
+ *                 cd_values = NULL
+ *             else:
+ *                 nelements = len(values)             # <<<<<<<<<<<<<<
+ *                 cd_values = <unsigned int*>emalloc(sizeof(unsigned int)*nelements)
+ * 
+ */
+      __pyx_t_3 = PyObject_Length(__pyx_v_values); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 550; __pyx_clineno = __LINE__; goto __pyx_L4;}
+      __pyx_v_nelements = __pyx_t_3;
+
+      /* "h5py/h5p.pyx":551
+ *             else:
+ *                 nelements = len(values)
+ *                 cd_values = <unsigned int*>emalloc(sizeof(unsigned int)*nelements)             # <<<<<<<<<<<<<<
+ * 
+ *                 for i from 0<=i<nelements:
+ */
+      __pyx_t_6 = __pyx_f_4h5py_5utils_emalloc(((sizeof(unsigned int)) * __pyx_v_nelements)); if (unlikely(__pyx_t_6 == NULL && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 551; __pyx_clineno = __LINE__; goto __pyx_L4;}
+      __pyx_v_cd_values = ((unsigned int *)__pyx_t_6);
+
+      /* "h5py/h5p.pyx":553
+ *                 cd_values = <unsigned int*>emalloc(sizeof(unsigned int)*nelements)
+ * 
+ *                 for i from 0<=i<nelements:             # <<<<<<<<<<<<<<
+ *                     cd_values[i] = int(values[i])
+ * 
+ */
+      __pyx_t_7 = __pyx_v_nelements;
+      for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_7; __pyx_v_i++) {
+
+        /* "h5py/h5p.pyx":554
+ * 
+ *                 for i from 0<=i<nelements:
+ *                     cd_values[i] = int(values[i])             # <<<<<<<<<<<<<<
+ * 
+ *             H5Pset_filter(self.id, <H5Z_filter_t>filter_code, flags, nelements, cd_values)
+ */
+        __pyx_t_8 = __Pyx_GetItemInt(__pyx_v_values, __pyx_v_i, sizeof(int), PyInt_FromLong); if (!__pyx_t_8) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 554; __pyx_clineno = __LINE__; goto __pyx_L4;}
+        __Pyx_GOTREF(__pyx_t_8);
+        __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 554; __pyx_clineno = __LINE__; goto __pyx_L4;}
+        __Pyx_GOTREF(__pyx_t_9);
+        PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8);
+        __Pyx_GIVEREF(__pyx_t_8);
+        __pyx_t_8 = 0;
+        __pyx_t_8 = PyObject_Call(((PyObject *)((PyObject*)(&PyInt_Type))), ((PyObject *)__pyx_t_9), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 554; __pyx_clineno = __LINE__; goto __pyx_L4;}
+        __Pyx_GOTREF(__pyx_t_8);
+        __Pyx_DECREF(((PyObject *)__pyx_t_9)); __pyx_t_9 = 0;
+        __pyx_t_10 = __Pyx_PyInt_AsUnsignedInt(__pyx_t_8); if (unlikely((__pyx_t_10 == (unsigned int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 554; __pyx_clineno = __LINE__; goto __pyx_L4;}
+        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+        (__pyx_v_cd_values[__pyx_v_i]) = __pyx_t_10;
+      }
+    }
+    __pyx_L6:;
+
+    /* "h5py/h5p.pyx":556
+ *                     cd_values[i] = int(values[i])
+ * 
+ *             H5Pset_filter(self.id, <H5Z_filter_t>filter_code, flags, nelements, cd_values)             # <<<<<<<<<<<<<<
+ *         finally:
+ *             efree(cd_values)
+ */
+    __pyx_t_11 = __pyx_f_4h5py_4defs_H5Pset_filter(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_base.id, ((H5Z_filter_t)__pyx_v_filter_code), __pyx_v_flags, __pyx_v_nelements, __pyx_v_cd_values); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 556; __pyx_clineno = __LINE__; goto __pyx_L4;}
+  }
+
+  /* "h5py/h5p.pyx":558
+ *             H5Pset_filter(self.id, <H5Z_filter_t>filter_code, flags, nelements, cd_values)
+ *         finally:
+ *             efree(cd_values)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  /*finally:*/ {
+    int __pyx_why;
+    PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb;
+    int __pyx_exc_lineno;
+    __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
+    __pyx_why = 0; goto __pyx_L5;
+    __pyx_L4: {
+      __pyx_why = 4;
+      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
+      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+      __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb);
+      __pyx_exc_lineno = __pyx_lineno;
+      goto __pyx_L5;
+    }
+    __pyx_L5:;
+    __pyx_f_4h5py_5utils_efree(__pyx_v_cd_values);
+    switch (__pyx_why) {
+      case 4: {
+        __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb);
+        __pyx_lineno = __pyx_exc_lineno;
+        __pyx_exc_type = 0;
+        __pyx_exc_value = 0;
+        __pyx_exc_tb = 0;
+        goto __pyx_L1_error;
+      }
+    }
+  }
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_8);
+  __Pyx_XDECREF(__pyx_t_9);
+  __Pyx_AddTraceback("h5py.h5p.PropDCID.set_filter", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5p_8PropDCID_25all_filters_avail(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5p_8PropDCID_24all_filters_avail[] = "() => BOOL\n\n        Determine if all the filters in the pipelist are available to\n        the library.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5p_8PropDCID_25all_filters_avail(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("all_filters_avail (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5p_8PropDCID_24all_filters_avail(((struct __pyx_obj_4h5py_3h5p_PropDCID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5p.pyx":561
+ * 
+ * 
+ *     def all_filters_avail(self):             # <<<<<<<<<<<<<<
+ *         """() => BOOL
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5p_8PropDCID_24all_filters_avail(struct __pyx_obj_4h5py_3h5p_PropDCID *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  htri_t __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("all_filters_avail", 0);
+
+  /* "h5py/h5p.pyx":567
+ *         the library.
+ *         """
+ *         return <bint>(H5Pall_filters_avail(self.id))             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Pall_filters_avail(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 567; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyBool_FromLong(((int)__pyx_t_1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 567; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5p.PropDCID.all_filters_avail", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5p_8PropDCID_27get_nfilters(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5p_8PropDCID_26get_nfilters[] = "() => INT\n\n        Determine the number of filters in the pipeline.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5p_8PropDCID_27get_nfilters(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_nfilters (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5p_8PropDCID_26get_nfilters(((struct __pyx_obj_4h5py_3h5p_PropDCID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5p.pyx":570
+ * 
+ * 
+ *     def get_nfilters(self):             # <<<<<<<<<<<<<<
+ *         """() => INT
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5p_8PropDCID_26get_nfilters(struct __pyx_obj_4h5py_3h5p_PropDCID *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_nfilters", 0);
+
+  /* "h5py/h5p.pyx":575
+ *         Determine the number of filters in the pipeline.
+ *         """
+ *         return H5Pget_nfilters(self.id)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Pget_nfilters(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 575; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyInt_FromLong(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 575; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5p.PropDCID.get_nfilters", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5p_8PropDCID_29get_filter(PyObject *__pyx_v_self, PyObject *__pyx_arg_filter_idx); /*proto*/
+static char __pyx_doc_4h5py_3h5p_8PropDCID_28get_filter[] = "(UINT filter_idx) => TUPLE filter_info\n\n        Get information about a filter, identified by its index.  Tuple\n        elements are:\n\n        0. INT filter code (h5z.FILTER*)\n        1. UINT flags (h5z.FLAG*)\n        2. TUPLE of UINT values; filter aux data (16 values max)\n        3. STRING name of filter (256 chars max)\n        ";
+static PyObject *__pyx_pw_4h5py_3h5p_8PropDCID_29get_filter(PyObject *__pyx_v_self, PyObject *__pyx_arg_filter_idx) {
+  int __pyx_v_filter_idx;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_filter (wrapper)", 0);
+  assert(__pyx_arg_filter_idx); {
+    __pyx_v_filter_idx = __Pyx_PyInt_AsInt(__pyx_arg_filter_idx); if (unlikely((__pyx_v_filter_idx == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 578; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5p.PropDCID.get_filter", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_3h5p_8PropDCID_28get_filter(((struct __pyx_obj_4h5py_3h5p_PropDCID *)__pyx_v_self), ((int)__pyx_v_filter_idx));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5p.pyx":578
+ * 
+ * 
+ *     def get_filter(self, int filter_idx):             # <<<<<<<<<<<<<<
+ *         """(UINT filter_idx) => TUPLE filter_info
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5p_8PropDCID_28get_filter(struct __pyx_obj_4h5py_3h5p_PropDCID *__pyx_v_self, int __pyx_v_filter_idx) {
+  PyObject *__pyx_v_vlist = 0;
+  int __pyx_v_filter_code;
+  unsigned int __pyx_v_flags;
+  size_t __pyx_v_nelements;
+  unsigned int __pyx_v_cd_values[16];
+  char __pyx_v_name[257];
+  int __pyx_v_i;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  H5Z_filter_t __pyx_t_3;
+  size_t __pyx_t_4;
+  int __pyx_t_5;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  PyObject *__pyx_t_8 = NULL;
+  PyObject *__pyx_t_9 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_filter", 0);
+
+  /* "h5py/h5p.pyx":596
+ *         cdef char name[257]
+ *         cdef int i
+ *         nelements = 16 # HDF5 library actually complains if this is too big.             # <<<<<<<<<<<<<<
+ * 
+ *         if filter_idx < 0:
+ */
+  __pyx_v_nelements = 16;
+
+  /* "h5py/h5p.pyx":598
+ *         nelements = 16 # HDF5 library actually complains if this is too big.
+ * 
+ *         if filter_idx < 0:             # <<<<<<<<<<<<<<
+ *             raise ValueError("Filter index must be a non-negative integer")
+ * 
+ */
+  __pyx_t_1 = (__pyx_v_filter_idx < 0);
+  if (__pyx_t_1) {
+
+    /* "h5py/h5p.pyx":599
+ * 
+ *         if filter_idx < 0:
+ *             raise ValueError("Filter index must be a non-negative integer")             # <<<<<<<<<<<<<<
+ * 
+ *         filter_code = <int>H5Pget_filter(self.id, filter_idx, &flags,
+ */
+    __pyx_t_2 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_6), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 599; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 599; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  /* "h5py/h5p.pyx":602
+ * 
+ *         filter_code = <int>H5Pget_filter(self.id, filter_idx, &flags,
+ *                                          &nelements, cd_values, 256, name)             # <<<<<<<<<<<<<<
+ *         name[256] = c'\0'  # in case it's > 256 chars
+ * 
+ */
+  __pyx_t_3 = __pyx_f_4h5py_4defs_H5Pget_filter(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_base.id, __pyx_v_filter_idx, (&__pyx_v_flags), (&__pyx_v_nelements), __pyx_v_cd_values, 256, __pyx_v_name); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 601; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v_filter_code = ((int)__pyx_t_3);
+
+  /* "h5py/h5p.pyx":603
+ *         filter_code = <int>H5Pget_filter(self.id, filter_idx, &flags,
+ *                                          &nelements, cd_values, 256, name)
+ *         name[256] = c'\0'  # in case it's > 256 chars             # <<<<<<<<<<<<<<
+ * 
+ *         vlist = []
+ */
+  (__pyx_v_name[256]) = '\x00';
+
+  /* "h5py/h5p.pyx":605
+ *         name[256] = c'\0'  # in case it's > 256 chars
+ * 
+ *         vlist = []             # <<<<<<<<<<<<<<
+ *         for i from 0<=i<nelements:
+ *             vlist.append(cd_values[i])
+ */
+  __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 605; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_v_vlist = ((PyObject*)__pyx_t_2);
+  __pyx_t_2 = 0;
+
+  /* "h5py/h5p.pyx":606
+ * 
+ *         vlist = []
+ *         for i from 0<=i<nelements:             # <<<<<<<<<<<<<<
+ *             vlist.append(cd_values[i])
+ * 
+ */
+  __pyx_t_4 = __pyx_v_nelements;
+  for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_4; __pyx_v_i++) {
+
+    /* "h5py/h5p.pyx":607
+ *         vlist = []
+ *         for i from 0<=i<nelements:
+ *             vlist.append(cd_values[i])             # <<<<<<<<<<<<<<
+ * 
+ *         return (filter_code, flags, tuple(vlist), name)
+ */
+    __pyx_t_2 = PyLong_FromUnsignedLong((__pyx_v_cd_values[__pyx_v_i])); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 607; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_5 = PyList_Append(__pyx_v_vlist, __pyx_t_2); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 607; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  }
+
+  /* "h5py/h5p.pyx":609
+ *             vlist.append(cd_values[i])
+ * 
+ *         return (filter_code, flags, tuple(vlist), name)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_2 = PyInt_FromLong(__pyx_v_filter_code); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 609; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_6 = PyLong_FromUnsignedLong(__pyx_v_flags); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 609; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_6);
+  __pyx_t_7 = ((PyObject *)PyList_AsTuple(__pyx_v_vlist)); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 609; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(((PyObject *)__pyx_t_7));
+  __pyx_t_8 = PyBytes_FromString(__pyx_v_name); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 609; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(((PyObject *)__pyx_t_8));
+  __pyx_t_9 = PyTuple_New(4); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 609; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_9);
+  PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_2);
+  __Pyx_GIVEREF(__pyx_t_2);
+  PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_6);
+  __Pyx_GIVEREF(__pyx_t_6);
+  PyTuple_SET_ITEM(__pyx_t_9, 2, ((PyObject *)__pyx_t_7));
+  __Pyx_GIVEREF(((PyObject *)__pyx_t_7));
+  PyTuple_SET_ITEM(__pyx_t_9, 3, ((PyObject *)__pyx_t_8));
+  __Pyx_GIVEREF(((PyObject *)__pyx_t_8));
+  __pyx_t_2 = 0;
+  __pyx_t_6 = 0;
+  __pyx_t_7 = 0;
+  __pyx_t_8 = 0;
+  __pyx_r = ((PyObject *)__pyx_t_9);
+  __pyx_t_9 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_XDECREF(__pyx_t_8);
+  __Pyx_XDECREF(__pyx_t_9);
+  __Pyx_AddTraceback("h5py.h5p.PropDCID.get_filter", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_vlist);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5p_8PropDCID_31_has_filter(PyObject *__pyx_v_self, PyObject *__pyx_arg_filter_code); /*proto*/
+static char __pyx_doc_4h5py_3h5p_8PropDCID_30_has_filter[] = "(INT filter_code)\n\n        Slow & stupid method to determine if a filter is used in this\n        property list.  Used because the HDF5 function H5Pget_filter_by_id\n        is broken.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5p_8PropDCID_31_has_filter(PyObject *__pyx_v_self, PyObject *__pyx_arg_filter_code) {
+  int __pyx_v_filter_code;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("_has_filter (wrapper)", 0);
+  assert(__pyx_arg_filter_code); {
+    __pyx_v_filter_code = __Pyx_PyInt_AsInt(__pyx_arg_filter_code); if (unlikely((__pyx_v_filter_code == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 612; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5p.PropDCID._has_filter", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_3h5p_8PropDCID_30_has_filter(((struct __pyx_obj_4h5py_3h5p_PropDCID *)__pyx_v_self), ((int)__pyx_v_filter_code));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5p.pyx":612
+ * 
+ * 
+ *     def _has_filter(self, int filter_code):             # <<<<<<<<<<<<<<
+ *         """(INT filter_code)
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5p_8PropDCID_30_has_filter(struct __pyx_obj_4h5py_3h5p_PropDCID *__pyx_v_self, int __pyx_v_filter_code) {
+  int __pyx_v_nfilters;
+  long __pyx_v_i;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_t_3;
+  PyObject *__pyx_t_4 = NULL;
+  int __pyx_t_5;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_has_filter", 0);
+
+  /* "h5py/h5p.pyx":620
+ *         """
+ *         cdef int nfilters
+ *         nfilters = self.get_nfilters()             # <<<<<<<<<<<<<<
+ *         for i from 0<=i<nfilters:
+ *             if self.get_filter(i)[0] == filter_code:
+ */
+  __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__get_nfilters); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 620; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 620; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_3 = __Pyx_PyInt_AsInt(__pyx_t_2); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 620; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_v_nfilters = __pyx_t_3;
+
+  /* "h5py/h5p.pyx":621
+ *         cdef int nfilters
+ *         nfilters = self.get_nfilters()
+ *         for i from 0<=i<nfilters:             # <<<<<<<<<<<<<<
+ *             if self.get_filter(i)[0] == filter_code:
+ *                 return True
+ */
+  __pyx_t_3 = __pyx_v_nfilters;
+  for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_3; __pyx_v_i++) {
+
+    /* "h5py/h5p.pyx":622
+ *         nfilters = self.get_nfilters()
+ *         for i from 0<=i<nfilters:
+ *             if self.get_filter(i)[0] == filter_code:             # <<<<<<<<<<<<<<
+ *                 return True
+ *         return False
+ */
+    __pyx_t_2 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__get_filter); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 622; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_1 = PyInt_FromLong(__pyx_v_i); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 622; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 622; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1);
+    __Pyx_GIVEREF(__pyx_t_1);
+    __pyx_t_1 = 0;
+    __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 622; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
+    __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_1, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 622; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __pyx_t_1 = PyInt_FromLong(__pyx_v_filter_code); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 622; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_RichCompare(__pyx_t_4, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 622; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 622; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    if (__pyx_t_5) {
+
+      /* "h5py/h5p.pyx":623
+ *         for i from 0<=i<nfilters:
+ *             if self.get_filter(i)[0] == filter_code:
+ *                 return True             # <<<<<<<<<<<<<<
+ *         return False
+ * 
+ */
+      __Pyx_XDECREF(__pyx_r);
+      __pyx_t_2 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 623; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_2);
+      __pyx_r = __pyx_t_2;
+      __pyx_t_2 = 0;
+      goto __pyx_L0;
+      goto __pyx_L5;
+    }
+    __pyx_L5:;
+  }
+
+  /* "h5py/h5p.pyx":624
+ *             if self.get_filter(i)[0] == filter_code:
+ *                 return True
+ *         return False             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_2 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 624; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("h5py.h5p.PropDCID._has_filter", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5p_8PropDCID_33get_filter_by_id(PyObject *__pyx_v_self, PyObject *__pyx_arg_filter_code); /*proto*/
+static char __pyx_doc_4h5py_3h5p_8PropDCID_32get_filter_by_id[] = "(INT filter_code) => TUPLE filter_info or None\n\n        Get information about a filter, identified by its code (one\n        of h5z.FILTER*).  If the filter doesn't exist, returns None.\n        Tuple elements are:\n\n        0. UINT flags (h5z.FLAG*)\n        1. TUPLE of UINT values; filter aux data (16 values max)\n        2. STRING name of filter (256 chars max)\n        ";
+static PyObject *__pyx_pw_4h5py_3h5p_8PropDCID_33get_filter_by_id(PyObject *__pyx_v_self, PyObject *__pyx_arg_filter_code) {
+  int __pyx_v_filter_code;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_filter_by_id (wrapper)", 0);
+  assert(__pyx_arg_filter_code); {
+    __pyx_v_filter_code = __Pyx_PyInt_AsInt(__pyx_arg_filter_code); if (unlikely((__pyx_v_filter_code == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 627; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5p.PropDCID.get_filter_by_id", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_3h5p_8PropDCID_32get_filter_by_id(((struct __pyx_obj_4h5py_3h5p_PropDCID *)__pyx_v_self), ((int)__pyx_v_filter_code));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5p.pyx":627
+ * 
+ * 
+ *     def get_filter_by_id(self, int filter_code):             # <<<<<<<<<<<<<<
+ *         """(INT filter_code) => TUPLE filter_info or None
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5p_8PropDCID_32get_filter_by_id(struct __pyx_obj_4h5py_3h5p_PropDCID *__pyx_v_self, int __pyx_v_filter_code) {
+  PyObject *__pyx_v_vlist = 0;
+  unsigned int __pyx_v_flags;
+  size_t __pyx_v_nelements;
+  unsigned int __pyx_v_cd_values[16];
+  char __pyx_v_name[257];
+  CYTHON_UNUSED herr_t __pyx_v_retval;
+  int __pyx_v_i;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  int __pyx_t_4;
+  int __pyx_t_5;
+  herr_t __pyx_t_6;
+  size_t __pyx_t_7;
+  int __pyx_t_8;
+  PyObject *__pyx_t_9 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_filter_by_id", 0);
+
+  /* "h5py/h5p.pyx":645
+ *         cdef herr_t retval
+ *         cdef int i
+ *         nelements = 16 # HDF5 library actually complains if this is too big.             # <<<<<<<<<<<<<<
+ * 
+ *         if not self._has_filter(filter_code):
+ */
+  __pyx_v_nelements = 16;
+
+  /* "h5py/h5p.pyx":647
+ *         nelements = 16 # HDF5 library actually complains if this is too big.
+ * 
+ *         if not self._has_filter(filter_code):             # <<<<<<<<<<<<<<
+ *             # Avoid library segfault
+ *             return None
+ */
+  __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s___has_filter); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 647; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyInt_FromLong(__pyx_v_filter_code); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 647; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 647; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2);
+  __Pyx_GIVEREF(__pyx_t_2);
+  __pyx_t_2 = 0;
+  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 647; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
+  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 647; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_5 = (!__pyx_t_4);
+  if (__pyx_t_5) {
+
+    /* "h5py/h5p.pyx":649
+ *         if not self._has_filter(filter_code):
+ *             # Avoid library segfault
+ *             return None             # <<<<<<<<<<<<<<
+ * 
+ *         retval = H5Pget_filter_by_id(self.id, <H5Z_filter_t>filter_code,
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __Pyx_INCREF(Py_None);
+    __pyx_r = Py_None;
+    goto __pyx_L0;
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  /* "h5py/h5p.pyx":652
+ * 
+ *         retval = H5Pget_filter_by_id(self.id, <H5Z_filter_t>filter_code,
+ *                                      &flags, &nelements, cd_values, 256, name)             # <<<<<<<<<<<<<<
+ *         assert nelements <= 16
+ * 
+ */
+  __pyx_t_6 = __pyx_f_4h5py_4defs_H5Pget_filter_by_id(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_base.id, ((H5Z_filter_t)__pyx_v_filter_code), (&__pyx_v_flags), (&__pyx_v_nelements), __pyx_v_cd_values, 256, __pyx_v_name); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 651; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v_retval = __pyx_t_6;
+
+  /* "h5py/h5p.pyx":653
+ *         retval = H5Pget_filter_by_id(self.id, <H5Z_filter_t>filter_code,
+ *                                      &flags, &nelements, cd_values, 256, name)
+ *         assert nelements <= 16             # <<<<<<<<<<<<<<
+ * 
+ *         name[256] = c'\0'  # In case HDF5 doesn't terminate it properly
+ */
+  #ifndef CYTHON_WITHOUT_ASSERTIONS
+  if (unlikely(!(__pyx_v_nelements <= 16))) {
+    PyErr_SetNone(PyExc_AssertionError);
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 653; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  }
+  #endif
+
+  /* "h5py/h5p.pyx":655
+ *         assert nelements <= 16
+ * 
+ *         name[256] = c'\0'  # In case HDF5 doesn't terminate it properly             # <<<<<<<<<<<<<<
+ * 
+ *         vlist = []
+ */
+  (__pyx_v_name[256]) = '\x00';
+
+  /* "h5py/h5p.pyx":657
+ *         name[256] = c'\0'  # In case HDF5 doesn't terminate it properly
+ * 
+ *         vlist = []             # <<<<<<<<<<<<<<
+ *         for i from 0<=i<nelements:
+ *             vlist.append(cd_values[i])
+ */
+  __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 657; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_v_vlist = ((PyObject*)__pyx_t_2);
+  __pyx_t_2 = 0;
+
+  /* "h5py/h5p.pyx":658
+ * 
+ *         vlist = []
+ *         for i from 0<=i<nelements:             # <<<<<<<<<<<<<<
+ *             vlist.append(cd_values[i])
+ * 
+ */
+  __pyx_t_7 = __pyx_v_nelements;
+  for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_7; __pyx_v_i++) {
+
+    /* "h5py/h5p.pyx":659
+ *         vlist = []
+ *         for i from 0<=i<nelements:
+ *             vlist.append(cd_values[i])             # <<<<<<<<<<<<<<
+ * 
+ *         return (flags, tuple(vlist), name)
+ */
+    __pyx_t_2 = PyLong_FromUnsignedLong((__pyx_v_cd_values[__pyx_v_i])); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 659; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_8 = PyList_Append(__pyx_v_vlist, __pyx_t_2); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 659; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  }
+
+  /* "h5py/h5p.pyx":661
+ *             vlist.append(cd_values[i])
+ * 
+ *         return (flags, tuple(vlist), name)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_2 = PyLong_FromUnsignedLong(__pyx_v_flags); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 661; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = ((PyObject *)PyList_AsTuple(__pyx_v_vlist)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 661; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(((PyObject *)__pyx_t_3));
+  __pyx_t_1 = PyBytes_FromString(__pyx_v_name); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 661; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
+  __pyx_t_9 = PyTuple_New(3); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 661; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_9);
+  PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_2);
+  __Pyx_GIVEREF(__pyx_t_2);
+  PyTuple_SET_ITEM(__pyx_t_9, 1, ((PyObject *)__pyx_t_3));
+  __Pyx_GIVEREF(((PyObject *)__pyx_t_3));
+  PyTuple_SET_ITEM(__pyx_t_9, 2, ((PyObject *)__pyx_t_1));
+  __Pyx_GIVEREF(((PyObject *)__pyx_t_1));
+  __pyx_t_2 = 0;
+  __pyx_t_3 = 0;
+  __pyx_t_1 = 0;
+  __pyx_r = ((PyObject *)__pyx_t_9);
+  __pyx_t_9 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_9);
+  __Pyx_AddTraceback("h5py.h5p.PropDCID.get_filter_by_id", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_vlist);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5p_8PropDCID_35remove_filter(PyObject *__pyx_v_self, PyObject *__pyx_arg_filter_class); /*proto*/
+static char __pyx_doc_4h5py_3h5p_8PropDCID_34remove_filter[] = "(INT filter_class)\n\n        Remove a filter from the pipeline.  The class code is one of\n        h5z.FILTER*.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5p_8PropDCID_35remove_filter(PyObject *__pyx_v_self, PyObject *__pyx_arg_filter_class) {
+  int __pyx_v_filter_class;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("remove_filter (wrapper)", 0);
+  assert(__pyx_arg_filter_class); {
+    __pyx_v_filter_class = __Pyx_PyInt_AsInt(__pyx_arg_filter_class); if (unlikely((__pyx_v_filter_class == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 664; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5p.PropDCID.remove_filter", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_3h5p_8PropDCID_34remove_filter(((struct __pyx_obj_4h5py_3h5p_PropDCID *)__pyx_v_self), ((int)__pyx_v_filter_class));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5p.pyx":664
+ * 
+ * 
+ *     def remove_filter(self, int filter_class):             # <<<<<<<<<<<<<<
+ *         """(INT filter_class)
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5p_8PropDCID_34remove_filter(struct __pyx_obj_4h5py_3h5p_PropDCID *__pyx_v_self, int __pyx_v_filter_class) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("remove_filter", 0);
+
+  /* "h5py/h5p.pyx":670
+ *         h5z.FILTER*.
+ *         """
+ *         H5Premove_filter(self.id, <H5Z_filter_t>filter_class)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Premove_filter(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_base.id, ((H5Z_filter_t)__pyx_v_filter_class)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 670; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py.h5p.PropDCID.remove_filter", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5p_8PropDCID_37set_deflate(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_4h5py_3h5p_8PropDCID_36set_deflate[] = "(UINT level=5)\n\n        Enable deflate (gzip) compression, at the given level.\n        Valid levels are 0-9, default is 5.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5p_8PropDCID_37set_deflate(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  unsigned int __pyx_v_level;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("set_deflate (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__level,0};
+    PyObject* values[1] = {0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__level);
+          if (value) { values[0] = value; kw_args--; }
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_deflate") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 673; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else {
+      switch (PyTuple_GET_SIZE(__pyx_args)) {
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+    }
+    if (values[0]) {
+      __pyx_v_level = __Pyx_PyInt_AsUnsignedInt(values[0]); if (unlikely((__pyx_v_level == (unsigned int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 673; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    } else {
+      __pyx_v_level = ((unsigned int)5);
+    }
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("set_deflate", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 673; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5p.PropDCID.set_deflate", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_3h5p_8PropDCID_36set_deflate(((struct __pyx_obj_4h5py_3h5p_PropDCID *)__pyx_v_self), __pyx_v_level);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5p.pyx":673
+ * 
+ * 
+ *     def set_deflate(self, unsigned int level=5):             # <<<<<<<<<<<<<<
+ *         """(UINT level=5)
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5p_8PropDCID_36set_deflate(struct __pyx_obj_4h5py_3h5p_PropDCID *__pyx_v_self, unsigned int __pyx_v_level) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("set_deflate", 0);
+
+  /* "h5py/h5p.pyx":679
+ *         Valid levels are 0-9, default is 5.
+ *         """
+ *         H5Pset_deflate(self.id, level)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Pset_deflate(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_base.id, __pyx_v_level); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 679; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py.h5p.PropDCID.set_deflate", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5p_8PropDCID_39set_fletcher32(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5p_8PropDCID_38set_fletcher32[] = "()\n\n        Enable Fletcher32 error correction on this list.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5p_8PropDCID_39set_fletcher32(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("set_fletcher32 (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5p_8PropDCID_38set_fletcher32(((struct __pyx_obj_4h5py_3h5p_PropDCID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5p.pyx":682
+ * 
+ * 
+ *     def set_fletcher32(self):             # <<<<<<<<<<<<<<
+ *         """()
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5p_8PropDCID_38set_fletcher32(struct __pyx_obj_4h5py_3h5p_PropDCID *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("set_fletcher32", 0);
+
+  /* "h5py/h5p.pyx":687
+ *         Enable Fletcher32 error correction on this list.
+ *         """
+ *         H5Pset_fletcher32(self.id)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Pset_fletcher32(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 687; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py.h5p.PropDCID.set_fletcher32", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5p_8PropDCID_41set_shuffle(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5p_8PropDCID_40set_shuffle[] = "()\n\n        Enable to use of the shuffle filter.  Use this immediately before\n        the deflate filter to increase the compression ratio.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5p_8PropDCID_41set_shuffle(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("set_shuffle (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5p_8PropDCID_40set_shuffle(((struct __pyx_obj_4h5py_3h5p_PropDCID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5p.pyx":690
+ * 
+ * 
+ *     def set_shuffle(self):             # <<<<<<<<<<<<<<
+ *         """()
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5p_8PropDCID_40set_shuffle(struct __pyx_obj_4h5py_3h5p_PropDCID *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("set_shuffle", 0);
+
+  /* "h5py/h5p.pyx":696
+ *         the deflate filter to increase the compression ratio.
+ *         """
+ *         H5Pset_shuffle(self.id)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Pset_shuffle(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 696; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py.h5p.PropDCID.set_shuffle", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5p_8PropDCID_43set_szip(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_4h5py_3h5p_8PropDCID_42set_szip[] = "(UINT options, UINT pixels_per_block)\n\n        Enable SZIP compression.  See the HDF5 docs for argument meanings,\n        and general restrictions on use of the SZIP format.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5p_8PropDCID_43set_szip(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  unsigned int __pyx_v_options;
+  unsigned int __pyx_v_pixels_per_block;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("set_szip (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__options,&__pyx_n_s__pixels_per_block,0};
+    PyObject* values[2] = {0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__options)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__pixels_per_block)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("set_szip", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 699; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_szip") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 699; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+    }
+    __pyx_v_options = __Pyx_PyInt_AsUnsignedInt(values[0]); if (unlikely((__pyx_v_options == (unsigned int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 699; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_pixels_per_block = __Pyx_PyInt_AsUnsignedInt(values[1]); if (unlikely((__pyx_v_pixels_per_block == (unsigned int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 699; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("set_szip", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 699; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5p.PropDCID.set_szip", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_3h5p_8PropDCID_42set_szip(((struct __pyx_obj_4h5py_3h5p_PropDCID *)__pyx_v_self), __pyx_v_options, __pyx_v_pixels_per_block);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5p.pyx":699
+ * 
+ * 
+ *     def set_szip(self, unsigned int options, unsigned int pixels_per_block):             # <<<<<<<<<<<<<<
+ *         """(UINT options, UINT pixels_per_block)
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5p_8PropDCID_42set_szip(struct __pyx_obj_4h5py_3h5p_PropDCID *__pyx_v_self, unsigned int __pyx_v_options, unsigned int __pyx_v_pixels_per_block) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("set_szip", 0);
+
+  /* "h5py/h5p.pyx":705
+ *         and general restrictions on use of the SZIP format.
+ *         """
+ *         H5Pset_szip(self.id, options, pixels_per_block)             # <<<<<<<<<<<<<<
+ * 
+ *     def set_scaleoffset(self, H5Z_SO_scale_type_t scale_type, int scale_factor):
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Pset_szip(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_base.id, __pyx_v_options, __pyx_v_pixels_per_block); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 705; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py.h5p.PropDCID.set_szip", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5p_8PropDCID_45set_scaleoffset(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_4h5py_3h5p_8PropDCID_44set_scaleoffset[] = "(H5Z_SO_scale_type_t scale_type, INT scale_factor)\n\n        Enable scale/offset (usually lossy) compression; lossless (e.g. gzip)\n        compression and other filters may be applied on top of this.\n\n        Note that error detection (i.e. fletcher32) cannot precede this in\n        the filter chain, or else all reads on lossily-compressed data will\n        fail.";
+static PyObject *__pyx_pw_4h5py_3h5p_8PropDCID_45set_scaleoffset(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  enum H5Z_SO_scale_type_t __pyx_v_scale_type;
+  int __pyx_v_scale_factor;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("set_scaleoffset (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__scale_type,&__pyx_n_s__scale_factor,0};
+    PyObject* values[2] = {0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__scale_type)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__scale_factor)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("set_scaleoffset", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 707; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_scaleoffset") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 707; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+    }
+    __pyx_v_scale_type = ((enum H5Z_SO_scale_type_t)PyInt_AsLong(values[0])); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 707; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_scale_factor = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_scale_factor == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 707; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("set_scaleoffset", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 707; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5p.PropDCID.set_scaleoffset", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_3h5p_8PropDCID_44set_scaleoffset(((struct __pyx_obj_4h5py_3h5p_PropDCID *)__pyx_v_self), __pyx_v_scale_type, __pyx_v_scale_factor);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5p.pyx":707
+ *         H5Pset_szip(self.id, options, pixels_per_block)
+ * 
+ *     def set_scaleoffset(self, H5Z_SO_scale_type_t scale_type, int scale_factor):             # <<<<<<<<<<<<<<
+ *         '''(H5Z_SO_scale_type_t scale_type, INT scale_factor)
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5p_8PropDCID_44set_scaleoffset(struct __pyx_obj_4h5py_3h5p_PropDCID *__pyx_v_self, enum H5Z_SO_scale_type_t __pyx_v_scale_type, int __pyx_v_scale_factor) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("set_scaleoffset", 0);
+
+  /* "h5py/h5p.pyx":716
+ *         the filter chain, or else all reads on lossily-compressed data will
+ *         fail.'''
+ *         H5Pset_scaleoffset(self.id, scale_type, scale_factor)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Pset_scaleoffset(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_base.id, __pyx_v_scale_type, __pyx_v_scale_factor); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 716; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py.h5p.PropDCID.set_scaleoffset", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5p_8PropFAID_1set_fclose_degree(PyObject *__pyx_v_self, PyObject *__pyx_arg_close_degree); /*proto*/
+static char __pyx_doc_4h5py_3h5p_8PropFAID_set_fclose_degree[] = "(INT close_degree)\n\n        Set the file-close degree, which determines library behavior when\n        a file is closed when objects are still open.  Legal values:\n\n        * h5f.CLOSE_WEAK\n        * h5f.CLOSE_SEMI\n        * h5f.CLOSE_STRONG\n        * h5f.CLOSE_DEFAULT\n        ";
+static PyObject *__pyx_pw_4h5py_3h5p_8PropFAID_1set_fclose_degree(PyObject *__pyx_v_self, PyObject *__pyx_arg_close_degree) {
+  int __pyx_v_close_degree;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("set_fclose_degree (wrapper)", 0);
+  assert(__pyx_arg_close_degree); {
+    __pyx_v_close_degree = __Pyx_PyInt_AsInt(__pyx_arg_close_degree); if (unlikely((__pyx_v_close_degree == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 727; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5p.PropFAID.set_fclose_degree", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_3h5p_8PropFAID_set_fclose_degree(((struct __pyx_obj_4h5py_3h5p_PropFAID *)__pyx_v_self), ((int)__pyx_v_close_degree));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5p.pyx":727
+ * 
+ * 
+ *     def set_fclose_degree(self, int close_degree):             # <<<<<<<<<<<<<<
+ *         """(INT close_degree)
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5p_8PropFAID_set_fclose_degree(struct __pyx_obj_4h5py_3h5p_PropFAID *__pyx_v_self, int __pyx_v_close_degree) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("set_fclose_degree", 0);
+
+  /* "h5py/h5p.pyx":738
+ *         * h5f.CLOSE_DEFAULT
+ *         """
+ *         H5Pset_fclose_degree(self.id, <H5F_close_degree_t>close_degree)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Pset_fclose_degree(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.id, ((enum H5F_close_degree_t)__pyx_v_close_degree)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 738; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py.h5p.PropFAID.set_fclose_degree", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5p_8PropFAID_3get_fclose_degree(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5p_8PropFAID_2get_fclose_degree[] = "() => INT close_degree\n        - h5fd.\n        Get the file-close degree, which determines library behavior when\n        a file is closed when objects are still open.  Legal values:\n\n        * h5f.CLOSE_WEAK\n        * h5f.CLOSE_SEMI\n        * h5f.CLOSE_STRONG\n        * h5f.CLOSE_DEFAULT\n        ";
+static PyObject *__pyx_pw_4h5py_3h5p_8PropFAID_3get_fclose_degree(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_fclose_degree (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5p_8PropFAID_2get_fclose_degree(((struct __pyx_obj_4h5py_3h5p_PropFAID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5p.pyx":741
+ * 
+ * 
+ *     def get_fclose_degree(self):             # <<<<<<<<<<<<<<
+ *         """() => INT close_degree
+ *         - h5fd.
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5p_8PropFAID_2get_fclose_degree(struct __pyx_obj_4h5py_3h5p_PropFAID *__pyx_v_self) {
+  enum H5F_close_degree_t __pyx_v_deg;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_fclose_degree", 0);
+
+  /* "h5py/h5p.pyx":753
+ *         """
+ *         cdef H5F_close_degree_t deg
+ *         H5Pget_fclose_degree(self.id, &deg)             # <<<<<<<<<<<<<<
+ *         return deg
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Pget_fclose_degree(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.id, (&__pyx_v_deg)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 753; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5p.pyx":754
+ *         cdef H5F_close_degree_t deg
+ *         H5Pget_fclose_degree(self.id, &deg)
+ *         return deg             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_2 = PyInt_FromLong(__pyx_v_deg); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 754; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5p.PropFAID.get_fclose_degree", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5p_8PropFAID_5set_fapl_core(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_4h5py_3h5p_8PropFAID_4set_fapl_core[] = "(UINT increment=64k, BOOL backing_store=True)\n\n        Use the h5fd.CORE (memory-resident) file driver.\n\n        increment\n            Chunk size for new memory requests (default 1 meg)\n\n        backing_store\n            If True (default), memory contents are associated with an\n            on-disk file, which is updated when the file is closed.\n            Set to False for a purely in-memory file.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5p_8PropFAID_5set_fapl_core(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  size_t __pyx_v_block_size;
+  hbool_t __pyx_v_backing_store;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("set_fapl_core (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__block_size,&__pyx_n_s__backing_store,0};
+    PyObject* values[2] = {0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__block_size);
+          if (value) { values[0] = value; kw_args--; }
+        }
+        case  1:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__backing_store);
+          if (value) { values[1] = value; kw_args--; }
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_fapl_core") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 757; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else {
+      switch (PyTuple_GET_SIZE(__pyx_args)) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+    }
+    if (values[0]) {
+      __pyx_v_block_size = __Pyx_PyInt_AsSize_t(values[0]); if (unlikely((__pyx_v_block_size == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 757; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    } else {
+      __pyx_v_block_size = ((size_t)65536);
+    }
+    if (values[1]) {
+      __pyx_v_backing_store = __Pyx_PyInt_from_py_hbool_t(values[1]); if (unlikely((__pyx_v_backing_store == (hbool_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 757; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    } else {
+      __pyx_v_backing_store = ((hbool_t)1);
+    }
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("set_fapl_core", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 757; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5p.PropFAID.set_fapl_core", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_3h5p_8PropFAID_4set_fapl_core(((struct __pyx_obj_4h5py_3h5p_PropFAID *)__pyx_v_self), __pyx_v_block_size, __pyx_v_backing_store);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5p.pyx":757
+ * 
+ * 
+ *     def set_fapl_core(self, size_t block_size=64*1024, hbool_t backing_store=1):             # <<<<<<<<<<<<<<
+ *         """(UINT increment=64k, BOOL backing_store=True)
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5p_8PropFAID_4set_fapl_core(struct __pyx_obj_4h5py_3h5p_PropFAID *__pyx_v_self, size_t __pyx_v_block_size, hbool_t __pyx_v_backing_store) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("set_fapl_core", 0);
+
+  /* "h5py/h5p.pyx":770
+ *             Set to False for a purely in-memory file.
+ *         """
+ *         H5Pset_fapl_core(self.id, block_size, backing_store)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Pset_fapl_core(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.id, __pyx_v_block_size, __pyx_v_backing_store); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 770; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py.h5p.PropFAID.set_fapl_core", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5p_8PropFAID_7get_fapl_core(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5p_8PropFAID_6get_fapl_core[] = "() => TUPLE core_settings\n\n        Determine settings for the h5fd.CORE (memory-resident) file driver.\n        Tuple elements are:\n\n        0. UINT \"increment\": Chunk size for new memory requests\n        1. BOOL \"backing_store\": If True, write the memory contents to\n           disk when the file is closed.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5p_8PropFAID_7get_fapl_core(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_fapl_core (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5p_8PropFAID_6get_fapl_core(((struct __pyx_obj_4h5py_3h5p_PropFAID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5p.pyx":773
+ * 
+ * 
+ *     def get_fapl_core(self):             # <<<<<<<<<<<<<<
+ *         """() => TUPLE core_settings
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5p_8PropFAID_6get_fapl_core(struct __pyx_obj_4h5py_3h5p_PropFAID *__pyx_v_self) {
+  size_t __pyx_v_increment;
+  hbool_t __pyx_v_backing_store;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_fapl_core", 0);
+
+  /* "h5py/h5p.pyx":785
+ *         cdef size_t increment
+ *         cdef hbool_t backing_store
+ *         H5Pget_fapl_core(self.id, &increment, &backing_store)             # <<<<<<<<<<<<<<
+ *         return (increment, <bint>(backing_store))
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Pget_fapl_core(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.id, (&__pyx_v_increment), (&__pyx_v_backing_store)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 785; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5p.pyx":786
+ *         cdef hbool_t backing_store
+ *         H5Pget_fapl_core(self.id, &increment, &backing_store)
+ *         return (increment, <bint>(backing_store))             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_2 = __Pyx_PyInt_FromSize_t(__pyx_v_increment); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 786; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = __Pyx_PyBool_FromLong(((int)__pyx_v_backing_store)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 786; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 786; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2);
+  __Pyx_GIVEREF(__pyx_t_2);
+  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_3);
+  __pyx_t_2 = 0;
+  __pyx_t_3 = 0;
+  __pyx_r = ((PyObject *)__pyx_t_4);
+  __pyx_t_4 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("h5py.h5p.PropFAID.get_fapl_core", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5p_8PropFAID_9set_fapl_family(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_4h5py_3h5p_8PropFAID_8set_fapl_family[] = "(UINT memb_size=2**31-1, PropFAID memb_fapl=None)\n\n        Set up the family driver.\n\n        memb_size\n            Member file size\n\n        memb_fapl\n            File access property list for each member access\n        ";
+static PyObject *__pyx_pw_4h5py_3h5p_8PropFAID_9set_fapl_family(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  hsize_t __pyx_v_memb_size;
+  struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_memb_fapl = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("set_fapl_family (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__memb_size,&__pyx_n_s__memb_fapl,0};
+    PyObject* values[2] = {0,0};
+
+    /* "h5py/h5p.pyx":789
+ * 
+ * 
+ *     def set_fapl_family(self, hsize_t memb_size=2147483647, PropID memb_fapl=None):             # <<<<<<<<<<<<<<
+ *         """(UINT memb_size=2**31-1, PropFAID memb_fapl=None)
+ * 
+ */
+    values[1] = (PyObject *)((struct __pyx_obj_4h5py_3h5p_PropID *)Py_None);
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__memb_size);
+          if (value) { values[0] = value; kw_args--; }
+        }
+        case  1:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__memb_fapl);
+          if (value) { values[1] = value; kw_args--; }
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_fapl_family") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 789; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else {
+      switch (PyTuple_GET_SIZE(__pyx_args)) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+    }
+    if (values[0]) {
+      __pyx_v_memb_size = __Pyx_PyInt_from_py_hsize_t(values[0]); if (unlikely((__pyx_v_memb_size == (hsize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 789; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    } else {
+      __pyx_v_memb_size = ((hsize_t)2147483647);
+    }
+    __pyx_v_memb_fapl = ((struct __pyx_obj_4h5py_3h5p_PropID *)values[1]);
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("set_fapl_family", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 789; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5p.PropFAID.set_fapl_family", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_memb_fapl), __pyx_ptype_4h5py_3h5p_PropID, 1, "memb_fapl", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 789; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_pf_4h5py_3h5p_8PropFAID_8set_fapl_family(((struct __pyx_obj_4h5py_3h5p_PropFAID *)__pyx_v_self), __pyx_v_memb_size, __pyx_v_memb_fapl);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_4h5py_3h5p_8PropFAID_8set_fapl_family(struct __pyx_obj_4h5py_3h5p_PropFAID *__pyx_v_self, hsize_t __pyx_v_memb_size, struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_memb_fapl) {
+  hid_t __pyx_v_plist_id;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("set_fapl_family", 0);
+
+  /* "h5py/h5p.pyx":801
+ *         """
+ *         cdef hid_t plist_id
+ *         plist_id = pdefault(memb_fapl)             # <<<<<<<<<<<<<<
+ *         H5Pset_fapl_family(self.id, memb_size, plist_id)
+ * 
+ */
+  __pyx_v_plist_id = __pyx_f_4h5py_3h5p_pdefault(__pyx_v_memb_fapl);
+
+  /* "h5py/h5p.pyx":802
+ *         cdef hid_t plist_id
+ *         plist_id = pdefault(memb_fapl)
+ *         H5Pset_fapl_family(self.id, memb_size, plist_id)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Pset_fapl_family(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.id, __pyx_v_memb_size, __pyx_v_plist_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 802; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py.h5p.PropFAID.set_fapl_family", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5p_8PropFAID_11get_fapl_family(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5p_8PropFAID_10get_fapl_family[] = "() => TUPLE info\n\n        Determine family driver settings. Tuple values are:\n\n        0. UINT memb_size\n        1. PropFAID memb_fapl or None\n        ";
+static PyObject *__pyx_pw_4h5py_3h5p_8PropFAID_11get_fapl_family(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_fapl_family (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5p_8PropFAID_10get_fapl_family(((struct __pyx_obj_4h5py_3h5p_PropFAID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5p.pyx":805
+ * 
+ * 
+ *     def get_fapl_family(self):             # <<<<<<<<<<<<<<
+ *         """() => TUPLE info
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5p_8PropFAID_10get_fapl_family(struct __pyx_obj_4h5py_3h5p_PropFAID *__pyx_v_self) {
+  hid_t __pyx_v_mfapl_id;
+  hsize_t __pyx_v_msize;
+  struct __pyx_obj_4h5py_3h5p_PropFAID *__pyx_v_plist = 0;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  int __pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_fapl_family", 0);
+
+  /* "h5py/h5p.pyx":816
+ *         cdef hsize_t msize
+ *         cdef PropFAID plist
+ *         plist = None             # <<<<<<<<<<<<<<
+ * 
+ *         H5Pget_fapl_family(self.id, &msize, &mfapl_id)
+ */
+  __Pyx_INCREF(Py_None);
+  __pyx_v_plist = ((struct __pyx_obj_4h5py_3h5p_PropFAID *)Py_None);
+
+  /* "h5py/h5p.pyx":818
+ *         plist = None
+ * 
+ *         H5Pget_fapl_family(self.id, &msize, &mfapl_id)             # <<<<<<<<<<<<<<
+ * 
+ *         if mfapl_id > 0:
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Pget_fapl_family(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.id, (&__pyx_v_msize), (&__pyx_v_mfapl_id)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 818; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5p.pyx":820
+ *         H5Pget_fapl_family(self.id, &msize, &mfapl_id)
+ * 
+ *         if mfapl_id > 0:             # <<<<<<<<<<<<<<
+ *             plist = PropFAID.open(mfapl_id)
+ * 
+ */
+  __pyx_t_2 = (__pyx_v_mfapl_id > 0);
+  if (__pyx_t_2) {
+
+    /* "h5py/h5p.pyx":821
+ * 
+ *         if mfapl_id > 0:
+ *             plist = PropFAID.open(mfapl_id)             # <<<<<<<<<<<<<<
+ * 
+ *         return (msize, plist)
+ */
+    __pyx_t_3 = PyObject_GetAttr(((PyObject *)((PyObject*)__pyx_ptype_4h5py_3h5p_PropFAID)), __pyx_n_s__open); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 821; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = __Pyx_PyInt_to_py_hid_t(__pyx_v_mfapl_id); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 821; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 821; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_5);
+    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4);
+    __Pyx_GIVEREF(__pyx_t_4);
+    __pyx_t_4 = 0;
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 821; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
+    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_4h5py_3h5p_PropFAID))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 821; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_DECREF(((PyObject *)__pyx_v_plist));
+    __pyx_v_plist = ((struct __pyx_obj_4h5py_3h5p_PropFAID *)__pyx_t_4);
+    __pyx_t_4 = 0;
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  /* "h5py/h5p.pyx":823
+ *             plist = PropFAID.open(mfapl_id)
+ * 
+ *         return (msize, plist)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_4 = __Pyx_PyInt_to_py_hsize_t(__pyx_v_msize); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 823; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 823; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4);
+  __Pyx_GIVEREF(__pyx_t_4);
+  __Pyx_INCREF(((PyObject *)__pyx_v_plist));
+  PyTuple_SET_ITEM(__pyx_t_5, 1, ((PyObject *)__pyx_v_plist));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_plist));
+  __pyx_t_4 = 0;
+  __pyx_r = ((PyObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_AddTraceback("h5py.h5p.PropFAID.get_fapl_family", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_plist);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5p_8PropFAID_13set_fapl_log(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_4h5py_3h5p_8PropFAID_12set_fapl_log[] = "(STRING logfile, UINT flags, UINT buf_size)\n\n        Enable the use of the logging driver.  See the HDF5 documentation\n        for details.  Flag constants are stored in module h5fd.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5p_8PropFAID_13set_fapl_log(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  char *__pyx_v_logfile;
+  unsigned int __pyx_v_flags;
+  size_t __pyx_v_buf_size;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("set_fapl_log (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__logfile,&__pyx_n_s__flags,&__pyx_n_s__buf_size,0};
+    PyObject* values[3] = {0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__logfile)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__flags)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("set_fapl_log", 1, 3, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 826; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+        case  2:
+        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__buf_size)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("set_fapl_log", 1, 3, 3, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 826; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_fapl_log") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 826; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+    }
+    __pyx_v_logfile = PyBytes_AsString(values[0]); if (unlikely((!__pyx_v_logfile) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 826; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_flags = __Pyx_PyInt_AsUnsignedInt(values[1]); if (unlikely((__pyx_v_flags == (unsigned int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 826; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_buf_size = __Pyx_PyInt_AsSize_t(values[2]); if (unlikely((__pyx_v_buf_size == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 826; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("set_fapl_log", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 826; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5p.PropFAID.set_fapl_log", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_3h5p_8PropFAID_12set_fapl_log(((struct __pyx_obj_4h5py_3h5p_PropFAID *)__pyx_v_self), __pyx_v_logfile, __pyx_v_flags, __pyx_v_buf_size);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5p.pyx":826
+ * 
+ * 
+ *     def set_fapl_log(self, char* logfile, unsigned int flags, size_t buf_size):             # <<<<<<<<<<<<<<
+ *         """(STRING logfile, UINT flags, UINT buf_size)
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5p_8PropFAID_12set_fapl_log(struct __pyx_obj_4h5py_3h5p_PropFAID *__pyx_v_self, char *__pyx_v_logfile, unsigned int __pyx_v_flags, size_t __pyx_v_buf_size) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("set_fapl_log", 0);
+
+  /* "h5py/h5p.pyx":832
+ *         for details.  Flag constants are stored in module h5fd.
+ *         """
+ *         H5Pset_fapl_log(self.id, logfile, flags, buf_size)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Pset_fapl_log(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.id, __pyx_v_logfile, __pyx_v_flags, __pyx_v_buf_size); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 832; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py.h5p.PropFAID.set_fapl_log", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5p_8PropFAID_15set_fapl_sec2(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5p_8PropFAID_14set_fapl_sec2[] = "()\n\n        Select the \"section-2\" driver (h5fd.SEC2).\n        ";
+static PyObject *__pyx_pw_4h5py_3h5p_8PropFAID_15set_fapl_sec2(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("set_fapl_sec2 (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5p_8PropFAID_14set_fapl_sec2(((struct __pyx_obj_4h5py_3h5p_PropFAID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5p.pyx":835
+ * 
+ * 
+ *     def set_fapl_sec2(self):             # <<<<<<<<<<<<<<
+ *         """()
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5p_8PropFAID_14set_fapl_sec2(struct __pyx_obj_4h5py_3h5p_PropFAID *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("set_fapl_sec2", 0);
+
+  /* "h5py/h5p.pyx":840
+ *         Select the "section-2" driver (h5fd.SEC2).
+ *         """
+ *         H5Pset_fapl_sec2(self.id)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Pset_fapl_sec2(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 840; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py.h5p.PropFAID.set_fapl_sec2", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5p_8PropFAID_17set_fapl_stdio(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5p_8PropFAID_16set_fapl_stdio[] = "()\n\n        Select the \"stdio\" driver (h5fd.STDIO)\n        ";
+static PyObject *__pyx_pw_4h5py_3h5p_8PropFAID_17set_fapl_stdio(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("set_fapl_stdio (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5p_8PropFAID_16set_fapl_stdio(((struct __pyx_obj_4h5py_3h5p_PropFAID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5p.pyx":843
+ * 
+ * 
+ *     def set_fapl_stdio(self):             # <<<<<<<<<<<<<<
+ *         """()
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5p_8PropFAID_16set_fapl_stdio(struct __pyx_obj_4h5py_3h5p_PropFAID *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("set_fapl_stdio", 0);
+
+  /* "h5py/h5p.pyx":848
+ *         Select the "stdio" driver (h5fd.STDIO)
+ *         """
+ *         H5Pset_fapl_stdio(self.id)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Pset_fapl_stdio(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 848; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py.h5p.PropFAID.set_fapl_stdio", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5p_8PropFAID_19get_driver(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5p_8PropFAID_18get_driver[] = "() => INT driver code\n\n        Return an integer identifier for the driver used by this list.\n        Although HDF5 implements these as full-fledged objects, they are\n        treated as integers by Python.  Built-in drivers identifiers are\n        listed in module h5fd; they are:\n\n        - h5fd.CORE\n        - h5fd.FAMILY\n        - h5fd.LOG\n        - h5fd.MPIO\n        - h5fd.MULTI\n        - h5fd.SEC2\n        - h5fd [...]
+static PyObject *__pyx_pw_4h5py_3h5p_8PropFAID_19get_driver(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_driver (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5p_8PropFAID_18get_driver(((struct __pyx_obj_4h5py_3h5p_PropFAID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5p.pyx":851
+ * 
+ * 
+ *     def get_driver(self):             # <<<<<<<<<<<<<<
+ *         """() => INT driver code
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5p_8PropFAID_18get_driver(struct __pyx_obj_4h5py_3h5p_PropFAID *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  hid_t __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_driver", 0);
+
+  /* "h5py/h5p.pyx":867
+ *         - h5fd.STDIO
+ *         """
+ *         return H5Pget_driver(self.id)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Pget_driver(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 867; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyInt_to_py_hid_t(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 867; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5p.PropFAID.get_driver", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5p_8PropFAID_21set_cache(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_4h5py_3h5p_8PropFAID_20set_cache[] = "(INT mdc, INT rdcc, UINT rdcc_nbytes, DOUBLE rdcc_w0)\n\n        Set the metadata (mdc) and raw data chunk (rdcc) cache properties.\n        See the HDF5 docs for a full explanation.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5p_8PropFAID_21set_cache(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  int __pyx_v_mdc;
+  int __pyx_v_rdcc;
+  size_t __pyx_v_rdcc_nbytes;
+  double __pyx_v_rdcc_w0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("set_cache (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__mdc,&__pyx_n_s__rdcc,&__pyx_n_s__rdcc_nbytes,&__pyx_n_s__rdcc_w0,0};
+    PyObject* values[4] = {0,0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__mdc)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__rdcc)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("set_cache", 1, 4, 4, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 870; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+        case  2:
+        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__rdcc_nbytes)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("set_cache", 1, 4, 4, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 870; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+        case  3:
+        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__rdcc_w0)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("set_cache", 1, 4, 4, 3); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 870; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_cache") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 870; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+    }
+    __pyx_v_mdc = __Pyx_PyInt_AsInt(values[0]); if (unlikely((__pyx_v_mdc == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 870; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_rdcc = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_rdcc == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 870; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_rdcc_nbytes = __Pyx_PyInt_AsSize_t(values[2]); if (unlikely((__pyx_v_rdcc_nbytes == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 870; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_rdcc_w0 = __pyx_PyFloat_AsDouble(values[3]); if (unlikely((__pyx_v_rdcc_w0 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 870; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("set_cache", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 870; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5p.PropFAID.set_cache", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_3h5p_8PropFAID_20set_cache(((struct __pyx_obj_4h5py_3h5p_PropFAID *)__pyx_v_self), __pyx_v_mdc, __pyx_v_rdcc, __pyx_v_rdcc_nbytes, __pyx_v_rdcc_w0);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5p.pyx":870
+ * 
+ * 
+ *     def set_cache(self, int mdc, int rdcc, size_t rdcc_nbytes, double rdcc_w0):             # <<<<<<<<<<<<<<
+ *         """(INT mdc, INT rdcc, UINT rdcc_nbytes, DOUBLE rdcc_w0)
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5p_8PropFAID_20set_cache(struct __pyx_obj_4h5py_3h5p_PropFAID *__pyx_v_self, int __pyx_v_mdc, int __pyx_v_rdcc, size_t __pyx_v_rdcc_nbytes, double __pyx_v_rdcc_w0) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("set_cache", 0);
+
+  /* "h5py/h5p.pyx":876
+ *         See the HDF5 docs for a full explanation.
+ *         """
+ *         H5Pset_cache(self.id, mdc, rdcc, rdcc_nbytes, rdcc_w0)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Pset_cache(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.id, __pyx_v_mdc, __pyx_v_rdcc, __pyx_v_rdcc_nbytes, __pyx_v_rdcc_w0); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 876; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py.h5p.PropFAID.set_cache", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5p_8PropFAID_23get_cache(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5p_8PropFAID_22get_cache[] = "() => TUPLE cache info\n\n        Get the metadata and raw data chunk cache settings.  See the HDF5\n        docs for element definitions.  Return is a 4-tuple with entries:\n\n        1. INT mdc:              Number of metadata objects\n        2. INT rdcc:             Number of raw data chunks\n        3. UINT rdcc_nbytes:     Size of raw data cache\n        4. DOUBLE rdcc_w0:       Preemption policy for data cache.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5p_8PropFAID_23get_cache(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_cache (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5p_8PropFAID_22get_cache(((struct __pyx_obj_4h5py_3h5p_PropFAID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5p.pyx":879
+ * 
+ * 
+ *     def get_cache(self):             # <<<<<<<<<<<<<<
+ *         """() => TUPLE cache info
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5p_8PropFAID_22get_cache(struct __pyx_obj_4h5py_3h5p_PropFAID *__pyx_v_self) {
+  int __pyx_v_mdc;
+  int __pyx_v_rdcc;
+  size_t __pyx_v_rdcc_nbytes;
+  double __pyx_v_w0;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_cache", 0);
+
+  /* "h5py/h5p.pyx":894
+ *         cdef double w0
+ * 
+ *         H5Pget_cache(self.id, &mdc, &rdcc, &rdcc_nbytes, &w0)             # <<<<<<<<<<<<<<
+ *         return (mdc, rdcc, rdcc_nbytes, w0)
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Pget_cache(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.id, (&__pyx_v_mdc), (&__pyx_v_rdcc), (&__pyx_v_rdcc_nbytes), (&__pyx_v_w0)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 894; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5p.pyx":895
+ * 
+ *         H5Pget_cache(self.id, &mdc, &rdcc, &rdcc_nbytes, &w0)
+ *         return (mdc, rdcc, rdcc_nbytes, w0)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_2 = PyInt_FromLong(__pyx_v_mdc); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 895; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = PyInt_FromLong(__pyx_v_rdcc); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 895; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_v_rdcc_nbytes); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 895; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = PyFloat_FromDouble(__pyx_v_w0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 895; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_6 = PyTuple_New(4); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 895; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_6);
+  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_2);
+  __Pyx_GIVEREF(__pyx_t_2);
+  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_3);
+  PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_t_4);
+  __Pyx_GIVEREF(__pyx_t_4);
+  PyTuple_SET_ITEM(__pyx_t_6, 3, __pyx_t_5);
+  __Pyx_GIVEREF(__pyx_t_5);
+  __pyx_t_2 = 0;
+  __pyx_t_3 = 0;
+  __pyx_t_4 = 0;
+  __pyx_t_5 = 0;
+  __pyx_r = ((PyObject *)__pyx_t_6);
+  __pyx_t_6 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_AddTraceback("h5py.h5p.PropFAID.get_cache", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5p_8PropFAID_25set_sieve_buf_size(PyObject *__pyx_v_self, PyObject *__pyx_arg_size); /*proto*/
+static char __pyx_doc_4h5py_3h5p_8PropFAID_24set_sieve_buf_size[] = " (UINT size)\n\n        Set the maximum size of the data sieve buffer (in bytes).  This\n        buffer can improve I/O performance for hyperslab I/O, by combining\n        reads and writes into blocks of the given size.  The default is 64k.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5p_8PropFAID_25set_sieve_buf_size(PyObject *__pyx_v_self, PyObject *__pyx_arg_size) {
+  size_t __pyx_v_size;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("set_sieve_buf_size (wrapper)", 0);
+  assert(__pyx_arg_size); {
+    __pyx_v_size = __Pyx_PyInt_AsSize_t(__pyx_arg_size); if (unlikely((__pyx_v_size == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 898; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5p.PropFAID.set_sieve_buf_size", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_3h5p_8PropFAID_24set_sieve_buf_size(((struct __pyx_obj_4h5py_3h5p_PropFAID *)__pyx_v_self), ((size_t)__pyx_v_size));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5p.pyx":898
+ * 
+ * 
+ *     def set_sieve_buf_size(self, size_t size):             # <<<<<<<<<<<<<<
+ *         """ (UINT size)
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5p_8PropFAID_24set_sieve_buf_size(struct __pyx_obj_4h5py_3h5p_PropFAID *__pyx_v_self, size_t __pyx_v_size) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("set_sieve_buf_size", 0);
+
+  /* "h5py/h5p.pyx":905
+ *         reads and writes into blocks of the given size.  The default is 64k.
+ *         """
+ *         H5Pset_sieve_buf_size(self.id, size)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Pset_sieve_buf_size(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.id, __pyx_v_size); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 905; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py.h5p.PropFAID.set_sieve_buf_size", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5p_8PropFAID_27get_sieve_buf_size(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5p_8PropFAID_26get_sieve_buf_size[] = " () => UINT size\n\n        Get the current maximum size of the data sieve buffer (in bytes).\n        ";
+static PyObject *__pyx_pw_4h5py_3h5p_8PropFAID_27get_sieve_buf_size(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_sieve_buf_size (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5p_8PropFAID_26get_sieve_buf_size(((struct __pyx_obj_4h5py_3h5p_PropFAID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5p.pyx":908
+ * 
+ * 
+ *     def get_sieve_buf_size(self):             # <<<<<<<<<<<<<<
+ *         """ () => UINT size
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5p_8PropFAID_26get_sieve_buf_size(struct __pyx_obj_4h5py_3h5p_PropFAID *__pyx_v_self) {
+  size_t __pyx_v_size;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_sieve_buf_size", 0);
+
+  /* "h5py/h5p.pyx":914
+ *         """
+ *         cdef size_t size
+ *         H5Pget_sieve_buf_size(self.id, &size)             # <<<<<<<<<<<<<<
+ *         return size
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Pget_sieve_buf_size(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.id, (&__pyx_v_size)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 914; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5p.pyx":915
+ *         cdef size_t size
+ *         H5Pget_sieve_buf_size(self.id, &size)
+ *         return size             # <<<<<<<<<<<<<<
+ * 
+ *     def set_libver_bounds(self, int low, int high):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_2 = __Pyx_PyInt_FromSize_t(__pyx_v_size); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 915; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5p.PropFAID.get_sieve_buf_size", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5p_8PropFAID_29set_libver_bounds(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_4h5py_3h5p_8PropFAID_28set_libver_bounds[] = " (INT low, INT high)\n\n        Set the compatibility level for file format.  Legal values are:\n\n        - h5f.LIBVER_EARLIEST\n        - h5f.LIBVER_LATEST\n        ";
+static PyObject *__pyx_pw_4h5py_3h5p_8PropFAID_29set_libver_bounds(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  int __pyx_v_low;
+  int __pyx_v_high;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("set_libver_bounds (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__low,&__pyx_n_s__high,0};
+    PyObject* values[2] = {0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__low)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__high)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("set_libver_bounds", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 917; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_libver_bounds") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 917; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+    }
+    __pyx_v_low = __Pyx_PyInt_AsInt(values[0]); if (unlikely((__pyx_v_low == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 917; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_high = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_high == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 917; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("set_libver_bounds", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 917; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5p.PropFAID.set_libver_bounds", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_3h5p_8PropFAID_28set_libver_bounds(((struct __pyx_obj_4h5py_3h5p_PropFAID *)__pyx_v_self), __pyx_v_low, __pyx_v_high);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5p.pyx":917
+ *         return size
+ * 
+ *     def set_libver_bounds(self, int low, int high):             # <<<<<<<<<<<<<<
+ *         """ (INT low, INT high)
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5p_8PropFAID_28set_libver_bounds(struct __pyx_obj_4h5py_3h5p_PropFAID *__pyx_v_self, int __pyx_v_low, int __pyx_v_high) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("set_libver_bounds", 0);
+
+  /* "h5py/h5p.pyx":925
+ *         - h5f.LIBVER_LATEST
+ *         """
+ *         H5Pset_libver_bounds(self.id, <H5F_libver_t>low, <H5F_libver_t>high)             # <<<<<<<<<<<<<<
+ * 
+ *     def get_libver_bounds(self):
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Pset_libver_bounds(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.id, ((H5F_libver_t)__pyx_v_low), ((H5F_libver_t)__pyx_v_high)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 925; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py.h5p.PropFAID.set_libver_bounds", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5p_8PropFAID_31get_libver_bounds(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5p_8PropFAID_30get_libver_bounds[] = " () => (INT low, INT high)\n\n        Get the compatibility level for file format. Returned values are from:\n\n        - h5f.LIBVER_EARLIEST\n        - h5f.LIBVER_LATEST\n        ";
+static PyObject *__pyx_pw_4h5py_3h5p_8PropFAID_31get_libver_bounds(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_libver_bounds (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5p_8PropFAID_30get_libver_bounds(((struct __pyx_obj_4h5py_3h5p_PropFAID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5p.pyx":927
+ *         H5Pset_libver_bounds(self.id, <H5F_libver_t>low, <H5F_libver_t>high)
+ * 
+ *     def get_libver_bounds(self):             # <<<<<<<<<<<<<<
+ *         """ () => (INT low, INT high)
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5p_8PropFAID_30get_libver_bounds(struct __pyx_obj_4h5py_3h5p_PropFAID *__pyx_v_self) {
+  H5F_libver_t __pyx_v_low;
+  H5F_libver_t __pyx_v_high;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_libver_bounds", 0);
+
+  /* "h5py/h5p.pyx":937
+ *         cdef H5F_libver_t low
+ *         cdef H5F_libver_t high
+ *         H5Pget_libver_bounds(self.id, &low, &high)             # <<<<<<<<<<<<<<
+ * 
+ *         return (<int>low, <int>high)
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Pget_libver_bounds(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.id, (&__pyx_v_low), (&__pyx_v_high)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 937; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5p.pyx":939
+ *         H5Pget_libver_bounds(self.id, &low, &high)
+ * 
+ *         return (<int>low, <int>high)             # <<<<<<<<<<<<<<
+ * 
+ *     IF MPI:
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_2 = PyInt_FromLong(((int)__pyx_v_low)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 939; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = PyInt_FromLong(((int)__pyx_v_high)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 939; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 939; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2);
+  __Pyx_GIVEREF(__pyx_t_2);
+  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_3);
+  __pyx_t_2 = 0;
+  __pyx_t_3 = 0;
+  __pyx_r = ((PyObject *)__pyx_t_4);
+  __pyx_t_4 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("h5py.h5p.PropFAID.get_libver_bounds", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5p_8PropFAID_33get_mdc_config(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5p_8PropFAID_32get_mdc_config[] = "() => CacheConfig\n        Returns an object that stores all the information about the meta-data cache\n        configuration\n        ";
+static PyObject *__pyx_pw_4h5py_3h5p_8PropFAID_33get_mdc_config(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_mdc_config (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5p_8PropFAID_32get_mdc_config(((struct __pyx_obj_4h5py_3h5p_PropFAID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5p.pyx":963
+ *             H5Pset_fapl_mpiposix(self.id, comm.ob_mpi, use_gpfs_hints)
+ * 
+ *     def get_mdc_config(self):             # <<<<<<<<<<<<<<
+ *         """() => CacheConfig
+ *         Returns an object that stores all the information about the meta-data cache
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5p_8PropFAID_32get_mdc_config(struct __pyx_obj_4h5py_3h5p_PropFAID *__pyx_v_self) {
+  struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_config = 0;
+  herr_t __pyx_v_err;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  herr_t __pyx_t_2;
+  int __pyx_t_3;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_mdc_config", 0);
+
+  /* "h5py/h5p.pyx":969
+ *         """
+ * 
+ *         cdef CacheConfig config = CacheConfig()             # <<<<<<<<<<<<<<
+ * 
+ *         cdef herr_t  err
+ */
+  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4h5py_4h5ac_CacheConfig)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 969; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_config = ((struct __pyx_obj_4h5py_4h5ac_CacheConfig *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "h5py/h5p.pyx":972
+ * 
+ *         cdef herr_t  err
+ *         err = H5Fget_mdc_config(self.id, &config.cache_config)             # <<<<<<<<<<<<<<
+ *         if err < 0:
+ *             raise RuntimeError("Failed to get hit rate")
+ */
+  __pyx_t_2 = __pyx_f_4h5py_4defs_H5Fget_mdc_config(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.id, (&__pyx_v_config->cache_config)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 972; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v_err = __pyx_t_2;
+
+  /* "h5py/h5p.pyx":973
+ *         cdef herr_t  err
+ *         err = H5Fget_mdc_config(self.id, &config.cache_config)
+ *         if err < 0:             # <<<<<<<<<<<<<<
+ *             raise RuntimeError("Failed to get hit rate")
+ * 
+ */
+  __pyx_t_3 = (__pyx_v_err < 0);
+  if (__pyx_t_3) {
+
+    /* "h5py/h5p.pyx":974
+ *         err = H5Fget_mdc_config(self.id, &config.cache_config)
+ *         if err < 0:
+ *             raise RuntimeError("Failed to get hit rate")             # <<<<<<<<<<<<<<
+ * 
+ *         return config
+ */
+    __pyx_t_1 = PyObject_Call(__pyx_builtin_RuntimeError, ((PyObject *)__pyx_k_tuple_8), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 974; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 974; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  /* "h5py/h5p.pyx":976
+ *             raise RuntimeError("Failed to get hit rate")
+ * 
+ *         return config             # <<<<<<<<<<<<<<
+ * 
+ *     def set_mdc_config(self, CacheConfig config not None):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(((PyObject *)__pyx_v_config));
+  __pyx_r = ((PyObject *)__pyx_v_config);
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py.h5p.PropFAID.get_mdc_config", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_config);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5p_8PropFAID_35set_mdc_config(PyObject *__pyx_v_self, PyObject *__pyx_v_config); /*proto*/
+static char __pyx_doc_4h5py_3h5p_8PropFAID_34set_mdc_config[] = "(CacheConfig) => None\n        Returns an object that stores all the information about the meta-data cache\n        configuration\n        ";
+static PyObject *__pyx_pw_4h5py_3h5p_8PropFAID_35set_mdc_config(PyObject *__pyx_v_self, PyObject *__pyx_v_config) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("set_mdc_config (wrapper)", 0);
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_config), __pyx_ptype_4h5py_4h5ac_CacheConfig, 0, "config", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 978; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_pf_4h5py_3h5p_8PropFAID_34set_mdc_config(((struct __pyx_obj_4h5py_3h5p_PropFAID *)__pyx_v_self), ((struct __pyx_obj_4h5py_4h5ac_CacheConfig *)__pyx_v_config));
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5p.pyx":978
+ *         return config
+ * 
+ *     def set_mdc_config(self, CacheConfig config not None):             # <<<<<<<<<<<<<<
+ *         """(CacheConfig) => None
+ *         Returns an object that stores all the information about the meta-data cache
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5p_8PropFAID_34set_mdc_config(struct __pyx_obj_4h5py_3h5p_PropFAID *__pyx_v_self, struct __pyx_obj_4h5py_4h5ac_CacheConfig *__pyx_v_config) {
+  herr_t __pyx_v_err;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  int __pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("set_mdc_config", 0);
+
+  /* "h5py/h5p.pyx":985
+ *         # I feel this should have some sanity checking to make sure that
+ *         cdef herr_t  err
+ *         err = H5Fset_mdc_config(self.id, &config.cache_config)             # <<<<<<<<<<<<<<
+ *         if err < 0:
+ *             raise RuntimeError("Failed to get hit rate")
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Fset_mdc_config(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.id, (&__pyx_v_config->cache_config)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 985; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v_err = __pyx_t_1;
+
+  /* "h5py/h5p.pyx":986
+ *         cdef herr_t  err
+ *         err = H5Fset_mdc_config(self.id, &config.cache_config)
+ *         if err < 0:             # <<<<<<<<<<<<<<
+ *             raise RuntimeError("Failed to get hit rate")
+ * 
+ */
+  __pyx_t_2 = (__pyx_v_err < 0);
+  if (__pyx_t_2) {
+
+    /* "h5py/h5p.pyx":987
+ *         err = H5Fset_mdc_config(self.id, &config.cache_config)
+ *         if err < 0:
+ *             raise RuntimeError("Failed to get hit rate")             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+    __pyx_t_3 = PyObject_Call(__pyx_builtin_RuntimeError, ((PyObject *)__pyx_k_tuple_9), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 987; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 987; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("h5py.h5p.PropFAID.set_mdc_config", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5p_8PropLCID_1set_char_encoding(PyObject *__pyx_v_self, PyObject *__pyx_arg_encoding); /*proto*/
+static char __pyx_doc_4h5py_3h5p_8PropLCID_set_char_encoding[] = " (INT encoding)\n\n        Set the character encoding for link names.  Legal values are:\n\n        - h5t.CSET_ASCII\n        - h5t.CSET_UTF8\n        ";
+static PyObject *__pyx_pw_4h5py_3h5p_8PropLCID_1set_char_encoding(PyObject *__pyx_v_self, PyObject *__pyx_arg_encoding) {
+  int __pyx_v_encoding;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("set_char_encoding (wrapper)", 0);
+  assert(__pyx_arg_encoding); {
+    __pyx_v_encoding = __Pyx_PyInt_AsInt(__pyx_arg_encoding); if (unlikely((__pyx_v_encoding == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 995; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5p.PropLCID.set_char_encoding", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_3h5p_8PropLCID_set_char_encoding(((struct __pyx_obj_4h5py_3h5p_PropLCID *)__pyx_v_self), ((int)__pyx_v_encoding));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5p.pyx":995
+ *     """ Link creation property list """
+ * 
+ *     def set_char_encoding(self, int encoding):             # <<<<<<<<<<<<<<
+ *         """ (INT encoding)
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5p_8PropLCID_set_char_encoding(struct __pyx_obj_4h5py_3h5p_PropLCID *__pyx_v_self, int __pyx_v_encoding) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("set_char_encoding", 0);
+
+  /* "h5py/h5p.pyx":1003
+ *         - h5t.CSET_UTF8
+ *         """
+ *         H5Pset_char_encoding(self.id, <H5T_cset_t>encoding)             # <<<<<<<<<<<<<<
+ * 
+ *     def get_char_encoding(self):
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Pset_char_encoding(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base.id, ((H5T_cset_t)__pyx_v_encoding)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1003; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py.h5p.PropLCID.set_char_encoding", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5p_8PropLCID_3get_char_encoding(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5p_8PropLCID_2get_char_encoding[] = " () => INT encoding\n\n        Get the character encoding for link names.  Legal values are:\n\n        - h5t.CSET_ASCII\n        - h5t.CSET_UTF8\n        ";
+static PyObject *__pyx_pw_4h5py_3h5p_8PropLCID_3get_char_encoding(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_char_encoding (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5p_8PropLCID_2get_char_encoding(((struct __pyx_obj_4h5py_3h5p_PropLCID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5p.pyx":1005
+ *         H5Pset_char_encoding(self.id, <H5T_cset_t>encoding)
+ * 
+ *     def get_char_encoding(self):             # <<<<<<<<<<<<<<
+ *         """ () => INT encoding
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5p_8PropLCID_2get_char_encoding(struct __pyx_obj_4h5py_3h5p_PropLCID *__pyx_v_self) {
+  H5T_cset_t __pyx_v_encoding;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_char_encoding", 0);
+
+  /* "h5py/h5p.pyx":1014
+ *         """
+ *         cdef H5T_cset_t encoding
+ *         H5Pget_char_encoding(self.id, &encoding)             # <<<<<<<<<<<<<<
+ *         return <int>encoding
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Pget_char_encoding(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base.id, (&__pyx_v_encoding)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1014; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5p.pyx":1015
+ *         cdef H5T_cset_t encoding
+ *         H5Pget_char_encoding(self.id, &encoding)
+ *         return <int>encoding             # <<<<<<<<<<<<<<
+ * 
+ *     def set_create_intermediate_group(self, bint create):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_2 = PyInt_FromLong(((int)__pyx_v_encoding)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1015; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5p.PropLCID.get_char_encoding", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5p_8PropLCID_5set_create_intermediate_group(PyObject *__pyx_v_self, PyObject *__pyx_arg_create); /*proto*/
+static char __pyx_doc_4h5py_3h5p_8PropLCID_4set_create_intermediate_group[] = "(BOOL create)\n\n        Set whether missing intermediate groups are automatically created.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5p_8PropLCID_5set_create_intermediate_group(PyObject *__pyx_v_self, PyObject *__pyx_arg_create) {
+  int __pyx_v_create;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("set_create_intermediate_group (wrapper)", 0);
+  assert(__pyx_arg_create); {
+    __pyx_v_create = __Pyx_PyObject_IsTrue(__pyx_arg_create); if (unlikely((__pyx_v_create == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1017; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5p.PropLCID.set_create_intermediate_group", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_3h5p_8PropLCID_4set_create_intermediate_group(((struct __pyx_obj_4h5py_3h5p_PropLCID *)__pyx_v_self), ((int)__pyx_v_create));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5p.pyx":1017
+ *         return <int>encoding
+ * 
+ *     def set_create_intermediate_group(self, bint create):             # <<<<<<<<<<<<<<
+ *         """(BOOL create)
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5p_8PropLCID_4set_create_intermediate_group(struct __pyx_obj_4h5py_3h5p_PropLCID *__pyx_v_self, int __pyx_v_create) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("set_create_intermediate_group", 0);
+
+  /* "h5py/h5p.pyx":1022
+ *         Set whether missing intermediate groups are automatically created.
+ *         """
+ *         H5Pset_create_intermediate_group(self.id, create)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Pset_create_intermediate_group(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base.id, __pyx_v_create); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1022; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py.h5p.PropLCID.set_create_intermediate_group", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5p_8PropLCID_7get_create_intermediate_group(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5p_8PropLCID_6get_create_intermediate_group[] = "() => BOOL\n\n        Determine if missing intermediate groups are automatically created.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5p_8PropLCID_7get_create_intermediate_group(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_create_intermediate_group (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5p_8PropLCID_6get_create_intermediate_group(((struct __pyx_obj_4h5py_3h5p_PropLCID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5p.pyx":1025
+ * 
+ * 
+ *     def get_create_intermediate_group(self):             # <<<<<<<<<<<<<<
+ *         """() => BOOL
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5p_8PropLCID_6get_create_intermediate_group(struct __pyx_obj_4h5py_3h5p_PropLCID *__pyx_v_self) {
+  unsigned int __pyx_v_create;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_create_intermediate_group", 0);
+
+  /* "h5py/h5p.pyx":1031
+ *         """
+ *         cdef unsigned int create
+ *         H5Pget_create_intermediate_group(self.id, &create)             # <<<<<<<<<<<<<<
+ *         return <bint>create
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Pget_create_intermediate_group(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base.id, (&__pyx_v_create)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5p.pyx":1032
+ *         cdef unsigned int create
+ *         H5Pget_create_intermediate_group(self.id, &create)
+ *         return <bint>create             # <<<<<<<<<<<<<<
+ * 
+ * # Link access
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_2 = __Pyx_PyBool_FromLong(((int)__pyx_v_create)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1032; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5p.PropLCID.get_create_intermediate_group", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static int __pyx_pw_4h5py_3h5p_8PropLAID_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_4h5py_3h5p_8PropLAID_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  CYTHON_UNUSED PyObject *__pyx_v_args = 0;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
+  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;
+  __Pyx_INCREF(__pyx_args);
+  __pyx_v_args = __pyx_args;
+  __pyx_r = __pyx_pf_4h5py_3h5p_8PropLAID___cinit__(((struct __pyx_obj_4h5py_3h5p_PropLAID *)__pyx_v_self), __pyx_v_args);
+  __Pyx_XDECREF(__pyx_v_args);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5p.pyx":1039
+ *     """ Link access property list """
+ * 
+ *     def __cinit__(self, *args):             # <<<<<<<<<<<<<<
+ *         self._buf = NULL
+ * 
+ */
+
+static int __pyx_pf_4h5py_3h5p_8PropLAID___cinit__(struct __pyx_obj_4h5py_3h5p_PropLAID *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_args) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__cinit__", 0);
+
+  /* "h5py/h5p.pyx":1040
+ * 
+ *     def __cinit__(self, *args):
+ *         self._buf = NULL             # <<<<<<<<<<<<<<
+ * 
+ *     def __dealloc__(self):
+ */
+  __pyx_v_self->_buf = NULL;
+
+  __pyx_r = 0;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static void __pyx_pw_4h5py_3h5p_8PropLAID_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
+static void __pyx_pw_4h5py_3h5p_8PropLAID_3__dealloc__(PyObject *__pyx_v_self) {
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
+  __pyx_pf_4h5py_3h5p_8PropLAID_2__dealloc__(((struct __pyx_obj_4h5py_3h5p_PropLAID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+}
+
+/* "h5py/h5p.pyx":1042
+ *         self._buf = NULL
+ * 
+ *     def __dealloc__(self):             # <<<<<<<<<<<<<<
+ *         efree(self._buf)
+ * 
+ */
+
+static void __pyx_pf_4h5py_3h5p_8PropLAID_2__dealloc__(struct __pyx_obj_4h5py_3h5p_PropLAID *__pyx_v_self) {
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__dealloc__", 0);
+
+  /* "h5py/h5p.pyx":1043
+ * 
+ *     def __dealloc__(self):
+ *         efree(self._buf)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_f_4h5py_5utils_efree(__pyx_v_self->_buf);
+
+  __Pyx_RefNannyFinishContext();
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5p_8PropLAID_5set_nlinks(PyObject *__pyx_v_self, PyObject *__pyx_arg_nlinks); /*proto*/
+static char __pyx_doc_4h5py_3h5p_8PropLAID_4set_nlinks[] = "(UINT nlinks)\n\n        Set the maximum traversal depth for soft links\n        ";
+static PyObject *__pyx_pw_4h5py_3h5p_8PropLAID_5set_nlinks(PyObject *__pyx_v_self, PyObject *__pyx_arg_nlinks) {
+  size_t __pyx_v_nlinks;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("set_nlinks (wrapper)", 0);
+  assert(__pyx_arg_nlinks); {
+    __pyx_v_nlinks = __Pyx_PyInt_AsSize_t(__pyx_arg_nlinks); if (unlikely((__pyx_v_nlinks == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1046; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5p.PropLAID.set_nlinks", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_3h5p_8PropLAID_4set_nlinks(((struct __pyx_obj_4h5py_3h5p_PropLAID *)__pyx_v_self), ((size_t)__pyx_v_nlinks));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5p.pyx":1046
+ * 
+ * 
+ *     def set_nlinks(self, size_t nlinks):             # <<<<<<<<<<<<<<
+ *         """(UINT nlinks)
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5p_8PropLAID_4set_nlinks(struct __pyx_obj_4h5py_3h5p_PropLAID *__pyx_v_self, size_t __pyx_v_nlinks) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("set_nlinks", 0);
+
+  /* "h5py/h5p.pyx":1051
+ *         Set the maximum traversal depth for soft links
+ *         """
+ *         H5Pset_nlinks(self.id, nlinks)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Pset_nlinks(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.id, __pyx_v_nlinks); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1051; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py.h5p.PropLAID.set_nlinks", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5p_8PropLAID_7get_nlinks(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5p_8PropLAID_6get_nlinks[] = "() => UINT\n\n        Get the maximum traversal depth for soft links\n        ";
+static PyObject *__pyx_pw_4h5py_3h5p_8PropLAID_7get_nlinks(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_nlinks (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5p_8PropLAID_6get_nlinks(((struct __pyx_obj_4h5py_3h5p_PropLAID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5p.pyx":1054
+ * 
+ * 
+ *     def get_nlinks(self):             # <<<<<<<<<<<<<<
+ *         """() => UINT
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5p_8PropLAID_6get_nlinks(struct __pyx_obj_4h5py_3h5p_PropLAID *__pyx_v_self) {
+  size_t __pyx_v_nlinks;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_nlinks", 0);
+
+  /* "h5py/h5p.pyx":1060
+ *         """
+ *         cdef size_t nlinks
+ *         H5Pget_nlinks(self.id, &nlinks)             # <<<<<<<<<<<<<<
+ *         return nlinks
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Pget_nlinks(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.id, (&__pyx_v_nlinks)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1060; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5p.pyx":1061
+ *         cdef size_t nlinks
+ *         H5Pget_nlinks(self.id, &nlinks)
+ *         return nlinks             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_2 = __Pyx_PyInt_FromSize_t(__pyx_v_nlinks); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1061; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5p.PropLAID.get_nlinks", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5p_8PropLAID_9set_elink_prefix(PyObject *__pyx_v_self, PyObject *__pyx_arg_prefix); /*proto*/
+static char __pyx_doc_4h5py_3h5p_8PropLAID_8set_elink_prefix[] = "(STRING prefix)\n\n        Set the external link prefix.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5p_8PropLAID_9set_elink_prefix(PyObject *__pyx_v_self, PyObject *__pyx_arg_prefix) {
+  char *__pyx_v_prefix;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("set_elink_prefix (wrapper)", 0);
+  assert(__pyx_arg_prefix); {
+    __pyx_v_prefix = PyBytes_AsString(__pyx_arg_prefix); if (unlikely((!__pyx_v_prefix) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1064; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5p.PropLAID.set_elink_prefix", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_3h5p_8PropLAID_8set_elink_prefix(((struct __pyx_obj_4h5py_3h5p_PropLAID *)__pyx_v_self), ((char *)__pyx_v_prefix));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5p.pyx":1064
+ * 
+ * 
+ *     def set_elink_prefix(self, char* prefix):             # <<<<<<<<<<<<<<
+ *         """(STRING prefix)
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5p_8PropLAID_8set_elink_prefix(struct __pyx_obj_4h5py_3h5p_PropLAID *__pyx_v_self, char *__pyx_v_prefix) {
+  size_t __pyx_v_size;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  void *__pyx_t_1;
+  herr_t __pyx_t_2;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("set_elink_prefix", 0);
+
+  /* "h5py/h5p.pyx":1072
+ * 
+ *         # HDF5 requires that we hang on to this buffer
+ *         efree(self._buf)             # <<<<<<<<<<<<<<
+ *         size = strlen(prefix)
+ *         self._buf = <char*>emalloc(size+1)
+ */
+  __pyx_f_4h5py_5utils_efree(__pyx_v_self->_buf);
+
+  /* "h5py/h5p.pyx":1073
+ *         # HDF5 requires that we hang on to this buffer
+ *         efree(self._buf)
+ *         size = strlen(prefix)             # <<<<<<<<<<<<<<
+ *         self._buf = <char*>emalloc(size+1)
+ *         strcpy(self._buf, prefix)
+ */
+  __pyx_v_size = strlen(__pyx_v_prefix);
+
+  /* "h5py/h5p.pyx":1074
+ *         efree(self._buf)
+ *         size = strlen(prefix)
+ *         self._buf = <char*>emalloc(size+1)             # <<<<<<<<<<<<<<
+ *         strcpy(self._buf, prefix)
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_5utils_emalloc((__pyx_v_size + 1)); if (unlikely(__pyx_t_1 == NULL && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1074; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v_self->_buf = ((char *)__pyx_t_1);
+
+  /* "h5py/h5p.pyx":1075
+ *         size = strlen(prefix)
+ *         self._buf = <char*>emalloc(size+1)
+ *         strcpy(self._buf, prefix)             # <<<<<<<<<<<<<<
+ * 
+ *         H5Pset_elink_prefix(self.id, self._buf)
+ */
+  strcpy(__pyx_v_self->_buf, __pyx_v_prefix);
+
+  /* "h5py/h5p.pyx":1077
+ *         strcpy(self._buf, prefix)
+ * 
+ *         H5Pset_elink_prefix(self.id, self._buf)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_2 = __pyx_f_4h5py_4defs_H5Pset_elink_prefix(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.id, __pyx_v_self->_buf); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1077; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py.h5p.PropLAID.set_elink_prefix", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5p_8PropLAID_11get_elink_prefix(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5p_8PropLAID_10get_elink_prefix[] = "() => STRING prefix\n\n        Get the external link prefix\n        ";
+static PyObject *__pyx_pw_4h5py_3h5p_8PropLAID_11get_elink_prefix(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_elink_prefix (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5p_8PropLAID_10get_elink_prefix(((struct __pyx_obj_4h5py_3h5p_PropLAID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5p.pyx":1080
+ * 
+ * 
+ *     def get_elink_prefix(self):             # <<<<<<<<<<<<<<
+ *         """() => STRING prefix
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5p_8PropLAID_10get_elink_prefix(struct __pyx_obj_4h5py_3h5p_PropLAID *__pyx_v_self) {
+  char *__pyx_v_buf;
+  Py_ssize_t __pyx_v_size;
+  char *__pyx_v_pstr;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  Py_ssize_t __pyx_t_1;
+  void *__pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_elink_prefix", 0);
+
+  /* "h5py/h5p.pyx":1085
+ *         Get the external link prefix
+ *         """
+ *         cdef char* buf = NULL             # <<<<<<<<<<<<<<
+ *         cdef ssize_t size
+ * 
+ */
+  __pyx_v_buf = NULL;
+
+  /* "h5py/h5p.pyx":1088
+ *         cdef ssize_t size
+ * 
+ *         size = H5Pget_elink_prefix(self.id, NULL, 0)             # <<<<<<<<<<<<<<
+ *         buf = <char*>emalloc(size+1)
+ *         try:
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Pget_elink_prefix(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.id, NULL, 0); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1088; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v_size = __pyx_t_1;
+
+  /* "h5py/h5p.pyx":1089
+ * 
+ *         size = H5Pget_elink_prefix(self.id, NULL, 0)
+ *         buf = <char*>emalloc(size+1)             # <<<<<<<<<<<<<<
+ *         try:
+ *             H5Pget_elink_prefix(self.id, buf, size+1)
+ */
+  __pyx_t_2 = __pyx_f_4h5py_5utils_emalloc((__pyx_v_size + 1)); if (unlikely(__pyx_t_2 == NULL && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1089; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v_buf = ((char *)__pyx_t_2);
+
+  /* "h5py/h5p.pyx":1090
+ *         size = H5Pget_elink_prefix(self.id, NULL, 0)
+ *         buf = <char*>emalloc(size+1)
+ *         try:             # <<<<<<<<<<<<<<
+ *             H5Pget_elink_prefix(self.id, buf, size+1)
+ *             pstr = buf
+ */
+  /*try:*/ {
+
+    /* "h5py/h5p.pyx":1091
+ *         buf = <char*>emalloc(size+1)
+ *         try:
+ *             H5Pget_elink_prefix(self.id, buf, size+1)             # <<<<<<<<<<<<<<
+ *             pstr = buf
+ *         finally:
+ */
+    __pyx_t_1 = __pyx_f_4h5py_4defs_H5Pget_elink_prefix(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.id, __pyx_v_buf, (__pyx_v_size + 1)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1091; __pyx_clineno = __LINE__; goto __pyx_L4;}
+
+    /* "h5py/h5p.pyx":1092
+ *         try:
+ *             H5Pget_elink_prefix(self.id, buf, size+1)
+ *             pstr = buf             # <<<<<<<<<<<<<<
+ *         finally:
+ *             efree(buf)
+ */
+    __pyx_v_pstr = __pyx_v_buf;
+  }
+
+  /* "h5py/h5p.pyx":1094
+ *             pstr = buf
+ *         finally:
+ *             efree(buf)             # <<<<<<<<<<<<<<
+ * 
+ *         return pstr
+ */
+  /*finally:*/ {
+    int __pyx_why;
+    PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb;
+    int __pyx_exc_lineno;
+    __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
+    __pyx_why = 0; goto __pyx_L5;
+    __pyx_L4: {
+      __pyx_why = 4;
+      __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb);
+      __pyx_exc_lineno = __pyx_lineno;
+      goto __pyx_L5;
+    }
+    __pyx_L5:;
+    __pyx_f_4h5py_5utils_efree(__pyx_v_buf);
+    switch (__pyx_why) {
+      case 4: {
+        __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb);
+        __pyx_lineno = __pyx_exc_lineno;
+        __pyx_exc_type = 0;
+        __pyx_exc_value = 0;
+        __pyx_exc_tb = 0;
+        goto __pyx_L1_error;
+      }
+    }
+  }
+
+  /* "h5py/h5p.pyx":1096
+ *             efree(buf)
+ * 
+ *         return pstr             # <<<<<<<<<<<<<<
+ * 
+ *     def set_elink_fapl(self, PropID fapl not None):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_3 = PyBytes_FromString(__pyx_v_pstr); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1096; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(((PyObject *)__pyx_t_3));
+  __pyx_r = ((PyObject *)__pyx_t_3);
+  __pyx_t_3 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("h5py.h5p.PropLAID.get_elink_prefix", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5p_8PropLAID_13set_elink_fapl(PyObject *__pyx_v_self, PyObject *__pyx_v_fapl); /*proto*/
+static char __pyx_doc_4h5py_3h5p_8PropLAID_12set_elink_fapl[] = " (PropFAID fapl)\n\n        Set the file access property list used when opening external files.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5p_8PropLAID_13set_elink_fapl(PyObject *__pyx_v_self, PyObject *__pyx_v_fapl) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("set_elink_fapl (wrapper)", 0);
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_fapl), __pyx_ptype_4h5py_3h5p_PropID, 0, "fapl", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1098; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_pf_4h5py_3h5p_8PropLAID_12set_elink_fapl(((struct __pyx_obj_4h5py_3h5p_PropLAID *)__pyx_v_self), ((struct __pyx_obj_4h5py_3h5p_PropID *)__pyx_v_fapl));
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5p.pyx":1098
+ *         return pstr
+ * 
+ *     def set_elink_fapl(self, PropID fapl not None):             # <<<<<<<<<<<<<<
+ *         """ (PropFAID fapl)
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5p_8PropLAID_12set_elink_fapl(struct __pyx_obj_4h5py_3h5p_PropLAID *__pyx_v_self, struct __pyx_obj_4h5py_3h5p_PropID *__pyx_v_fapl) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("set_elink_fapl", 0);
+
+  /* "h5py/h5p.pyx":1103
+ *         Set the file access property list used when opening external files.
+ *         """
+ *         H5Pset_elink_fapl(self.id, fapl.id)             # <<<<<<<<<<<<<<
+ * 
+ *     def get_elink_fapl(self):
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Pset_elink_fapl(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.id, __pyx_v_fapl->__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py.h5p.PropLAID.set_elink_fapl", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5p_8PropLAID_15get_elink_fapl(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5p_8PropLAID_14get_elink_fapl[] = " () => PropFAID fapl\n\n        Get the file access property list used when opening external files.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5p_8PropLAID_15get_elink_fapl(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_elink_fapl (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5p_8PropLAID_14get_elink_fapl(((struct __pyx_obj_4h5py_3h5p_PropLAID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5p.pyx":1105
+ *         H5Pset_elink_fapl(self.id, fapl.id)
+ * 
+ *     def get_elink_fapl(self):             # <<<<<<<<<<<<<<
+ *         """ () => PropFAID fapl
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5p_8PropLAID_14get_elink_fapl(struct __pyx_obj_4h5py_3h5p_PropLAID *__pyx_v_self) {
+  hid_t __pyx_v_fid;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  hid_t __pyx_t_1;
+  int __pyx_t_2;
+  int __pyx_t_3;
+  PyObject *__pyx_t_4 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_elink_fapl", 0);
+
+  /* "h5py/h5p.pyx":1111
+ *         """
+ *         cdef hid_t fid
+ *         fid = H5Pget_elink_fapl(self.id)             # <<<<<<<<<<<<<<
+ *         if H5Iget_ref(fid) > 1:
+ *             H5Idec_ref(fid)
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Pget_elink_fapl(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v_fid = __pyx_t_1;
+
+  /* "h5py/h5p.pyx":1112
+ *         cdef hid_t fid
+ *         fid = H5Pget_elink_fapl(self.id)
+ *         if H5Iget_ref(fid) > 1:             # <<<<<<<<<<<<<<
+ *             H5Idec_ref(fid)
+ *         return propwrap(fid)
+ */
+  __pyx_t_2 = __pyx_f_4h5py_4defs_H5Iget_ref(__pyx_v_fid); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = (__pyx_t_2 > 1);
+  if (__pyx_t_3) {
+
+    /* "h5py/h5p.pyx":1113
+ *         fid = H5Pget_elink_fapl(self.id)
+ *         if H5Iget_ref(fid) > 1:
+ *             H5Idec_ref(fid)             # <<<<<<<<<<<<<<
+ *         return propwrap(fid)
+ * 
+ */
+    __pyx_t_2 = __pyx_f_4h5py_4defs_H5Idec_ref(__pyx_v_fid); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  /* "h5py/h5p.pyx":1114
+ *         if H5Iget_ref(fid) > 1:
+ *             H5Idec_ref(fid)
+ *         return propwrap(fid)             # <<<<<<<<<<<<<<
+ * 
+ * # Group creation
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_4 = __pyx_f_4h5py_3h5p_propwrap(__pyx_v_fid); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_r = __pyx_t_4;
+  __pyx_t_4 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("h5py.h5p.PropLAID.get_elink_fapl", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5p_8PropGCID_1set_link_creation_order(PyObject *__pyx_v_self, PyObject *__pyx_arg_flags); /*proto*/
+static char __pyx_doc_4h5py_3h5p_8PropGCID_set_link_creation_order[] = " (UINT flags)\n\n        Set tracking and indexing of creation order for links added to this group\n\n        flags -- h5p.CRT_ORDER_TRACKED, h5p.CRT_ORDER_INDEXED\n        ";
+static PyObject *__pyx_pw_4h5py_3h5p_8PropGCID_1set_link_creation_order(PyObject *__pyx_v_self, PyObject *__pyx_arg_flags) {
+  unsigned int __pyx_v_flags;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("set_link_creation_order (wrapper)", 0);
+  assert(__pyx_arg_flags); {
+    __pyx_v_flags = __Pyx_PyInt_AsUnsignedInt(__pyx_arg_flags); if (unlikely((__pyx_v_flags == (unsigned int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1120; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5p.PropGCID.set_link_creation_order", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_3h5p_8PropGCID_set_link_creation_order(((struct __pyx_obj_4h5py_3h5p_PropGCID *)__pyx_v_self), ((unsigned int)__pyx_v_flags));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5p.pyx":1120
+ *     """ Group creation property list """
+ * 
+ *     def set_link_creation_order(self, unsigned int flags):             # <<<<<<<<<<<<<<
+ *         """ (UINT flags)
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5p_8PropGCID_set_link_creation_order(struct __pyx_obj_4h5py_3h5p_PropGCID *__pyx_v_self, unsigned int __pyx_v_flags) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("set_link_creation_order", 0);
+
+  /* "h5py/h5p.pyx":1127
+ *         flags -- h5p.CRT_ORDER_TRACKED, h5p.CRT_ORDER_INDEXED
+ *         """
+ *         H5Pset_link_creation_order(self.id, flags)             # <<<<<<<<<<<<<<
+ * 
+ *     def get_link_creation_order(self):
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Pset_link_creation_order(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_base.id, __pyx_v_flags); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py.h5p.PropGCID.set_link_creation_order", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5p_8PropGCID_3get_link_creation_order(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5p_8PropGCID_2get_link_creation_order[] = " () -> UINT flags\n\n        Get tracking and indexing of creation order for links added to this group\n        ";
+static PyObject *__pyx_pw_4h5py_3h5p_8PropGCID_3get_link_creation_order(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_link_creation_order (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5p_8PropGCID_2get_link_creation_order(((struct __pyx_obj_4h5py_3h5p_PropGCID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5p.pyx":1129
+ *         H5Pset_link_creation_order(self.id, flags)
+ * 
+ *     def get_link_creation_order(self):             # <<<<<<<<<<<<<<
+ *         """ () -> UINT flags
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5p_8PropGCID_2get_link_creation_order(struct __pyx_obj_4h5py_3h5p_PropGCID *__pyx_v_self) {
+  unsigned int __pyx_v_flags;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_link_creation_order", 0);
+
+  /* "h5py/h5p.pyx":1135
+ *         """
+ *         cdef unsigned int flags
+ *         H5Pget_link_creation_order(self.id, &flags)             # <<<<<<<<<<<<<<
+ *         return flags
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Pget_link_creation_order(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_base.id, (&__pyx_v_flags)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5p.pyx":1136
+ *         cdef unsigned int flags
+ *         H5Pget_link_creation_order(self.id, &flags)
+ *         return flags             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_2 = PyLong_FromUnsignedLong(__pyx_v_flags); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5p.PropGCID.get_link_creation_order", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5p_8PropOCID_1set_obj_track_times(PyObject *__pyx_v_self, PyObject *__pyx_v_track_times); /*proto*/
+static char __pyx_doc_4h5py_3h5p_8PropOCID_set_obj_track_times[] = "Sets the recording of times associated with an object.";
+static PyObject *__pyx_pw_4h5py_3h5p_8PropOCID_1set_obj_track_times(PyObject *__pyx_v_self, PyObject *__pyx_v_track_times) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("set_obj_track_times (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5p_8PropOCID_set_obj_track_times(((struct __pyx_obj_4h5py_3h5p_PropOCID *)__pyx_v_self), ((PyObject *)__pyx_v_track_times));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5p.pyx":1148
+ *     The documentation is somewhat hazy
+ *     """
+ *     def set_obj_track_times(self,track_times):             # <<<<<<<<<<<<<<
+ *         """Sets the recording of times associated with an object."""
+ *         H5Pset_obj_track_times(self.id,track_times)
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5p_8PropOCID_set_obj_track_times(struct __pyx_obj_4h5py_3h5p_PropOCID *__pyx_v_self, PyObject *__pyx_v_track_times) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  hbool_t __pyx_t_1;
+  herr_t __pyx_t_2;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("set_obj_track_times", 0);
+
+  /* "h5py/h5p.pyx":1150
+ *     def set_obj_track_times(self,track_times):
+ *         """Sets the recording of times associated with an object."""
+ *         H5Pset_obj_track_times(self.id,track_times)             # <<<<<<<<<<<<<<
+ * 
+ *     def get_obj_track_times(self):
+ */
+  __pyx_t_1 = __Pyx_PyInt_from_py_hbool_t(__pyx_v_track_times); if (unlikely((__pyx_t_1 == (hbool_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __pyx_f_4h5py_4defs_H5Pset_obj_track_times(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base.id, __pyx_t_1); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py.h5p.PropOCID.set_obj_track_times", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5p_8PropOCID_3get_obj_track_times(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5p_8PropOCID_2get_obj_track_times[] = "\n        Determines whether times associated with an object are being recorded.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5p_8PropOCID_3get_obj_track_times(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_obj_track_times (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5p_8PropOCID_2get_obj_track_times(((struct __pyx_obj_4h5py_3h5p_PropOCID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5p.pyx":1152
+ *         H5Pset_obj_track_times(self.id,track_times)
+ * 
+ *     def get_obj_track_times(self):             # <<<<<<<<<<<<<<
+ *         """
+ *         Determines whether times associated with an object are being recorded.
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5p_8PropOCID_2get_obj_track_times(struct __pyx_obj_4h5py_3h5p_PropOCID *__pyx_v_self) {
+  hbool_t __pyx_v_track_times;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_obj_track_times", 0);
+
+  /* "h5py/h5p.pyx":1159
+ *         cdef hbool_t track_times
+ * 
+ *         H5Pget_obj_track_times(self.id,&track_times)             # <<<<<<<<<<<<<<
+ * 
+ *         return track_times
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Pget_obj_track_times(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.__pyx_base.id, (&__pyx_v_track_times)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1159; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5p.pyx":1161
+ *         H5Pget_obj_track_times(self.id,&track_times)
+ * 
+ *         return track_times             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_2 = __Pyx_PyInt_to_py_hbool_t(__pyx_v_track_times); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5p.PropOCID.get_obj_track_times", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5p_8PropDAID_1set_chunk_cache(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_4h5py_3h5p_8PropDAID_set_chunk_cache[] = "(size_t rdcc_nslots,size_t rdcc_nbytes, double rdcc_w0)\n\n        Sets the raw data chunk cache parameters.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5p_8PropDAID_1set_chunk_cache(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  size_t __pyx_v_rdcc_nslots;
+  size_t __pyx_v_rdcc_nbytes;
+  double __pyx_v_rdcc_w0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("set_chunk_cache (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__rdcc_nslots,&__pyx_n_s__rdcc_nbytes,&__pyx_n_s__rdcc_w0,0};
+    PyObject* values[3] = {0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__rdcc_nslots)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__rdcc_nbytes)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("set_chunk_cache", 1, 3, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1169; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+        case  2:
+        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__rdcc_w0)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("set_chunk_cache", 1, 3, 3, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1169; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_chunk_cache") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1169; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+    }
+    __pyx_v_rdcc_nslots = __Pyx_PyInt_AsSize_t(values[0]); if (unlikely((__pyx_v_rdcc_nslots == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1169; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_rdcc_nbytes = __Pyx_PyInt_AsSize_t(values[1]); if (unlikely((__pyx_v_rdcc_nbytes == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1169; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_rdcc_w0 = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_rdcc_w0 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1169; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("set_chunk_cache", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1169; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5p.PropDAID.set_chunk_cache", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_3h5p_8PropDAID_set_chunk_cache(((struct __pyx_obj_4h5py_3h5p_PropDAID *)__pyx_v_self), __pyx_v_rdcc_nslots, __pyx_v_rdcc_nbytes, __pyx_v_rdcc_w0);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5p.pyx":1169
+ *     """ Dataset access property list """
+ * 
+ *     def set_chunk_cache(self, size_t rdcc_nslots,size_t rdcc_nbytes, double rdcc_w0):             # <<<<<<<<<<<<<<
+ *         """(size_t rdcc_nslots,size_t rdcc_nbytes, double rdcc_w0)
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5p_8PropDAID_set_chunk_cache(struct __pyx_obj_4h5py_3h5p_PropDAID *__pyx_v_self, size_t __pyx_v_rdcc_nslots, size_t __pyx_v_rdcc_nbytes, double __pyx_v_rdcc_w0) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("set_chunk_cache", 0);
+
+  /* "h5py/h5p.pyx":1174
+ *         Sets the raw data chunk cache parameters.
+ *         """
+ *         H5Pset_chunk_cache(self.id,rdcc_nslots,rdcc_nbytes,rdcc_w0)             # <<<<<<<<<<<<<<
+ * 
+ *     def get_chunk_cache(self):
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Pset_chunk_cache(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.id, __pyx_v_rdcc_nslots, __pyx_v_rdcc_nbytes, __pyx_v_rdcc_w0); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py.h5p.PropDAID.set_chunk_cache", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5p_8PropDAID_3get_chunk_cache(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5p_8PropDAID_2get_chunk_cache[] = "() => TUPLE chunk cache info\n\n        Get the metadata and raw data chunk cache settings.  See the HDF5\n        docs for element definitions.  Return is a 3-tuple with entries:\n\n        0. size_t rdcc_nslots: Number of chunk slots in the raw data chunk cache hash table.\n        1. size_t rdcc_nbytes: Total size of the raw data chunk cache, in bytes.\n        2. DOUBLE rdcc_w0:     Preemption policy.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5p_8PropDAID_3get_chunk_cache(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_chunk_cache (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5p_8PropDAID_2get_chunk_cache(((struct __pyx_obj_4h5py_3h5p_PropDAID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5p.pyx":1176
+ *         H5Pset_chunk_cache(self.id,rdcc_nslots,rdcc_nbytes,rdcc_w0)
+ * 
+ *     def get_chunk_cache(self):             # <<<<<<<<<<<<<<
+ *         """() => TUPLE chunk cache info
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5p_8PropDAID_2get_chunk_cache(struct __pyx_obj_4h5py_3h5p_PropDAID *__pyx_v_self) {
+  size_t __pyx_v_rdcc_nslots;
+  size_t __pyx_v_rdcc_nbytes;
+  double __pyx_v_rdcc_w0;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_chunk_cache", 0);
+
+  /* "h5py/h5p.pyx":1190
+ *         cdef double rdcc_w0
+ * 
+ *         H5Pget_chunk_cache(self.id, &rdcc_nslots, &rdcc_nbytes, &rdcc_w0 )             # <<<<<<<<<<<<<<
+ *         return (rdcc_nslots,rdcc_nbytes,rdcc_w0)
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Pget_chunk_cache(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.id, (&__pyx_v_rdcc_nslots), (&__pyx_v_rdcc_nbytes), (&__pyx_v_rdcc_w0)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5p.pyx":1191
+ * 
+ *         H5Pget_chunk_cache(self.id, &rdcc_nslots, &rdcc_nbytes, &rdcc_w0 )
+ *         return (rdcc_nslots,rdcc_nbytes,rdcc_w0)             # <<<<<<<<<<<<<<
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_2 = __Pyx_PyInt_FromSize_t(__pyx_v_rdcc_nslots); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1191; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_rdcc_nbytes); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1191; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_4 = PyFloat_FromDouble(__pyx_v_rdcc_w0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1191; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1191; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2);
+  __Pyx_GIVEREF(__pyx_t_2);
+  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_3);
+  PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_t_4);
+  __Pyx_GIVEREF(__pyx_t_4);
+  __pyx_t_2 = 0;
+  __pyx_t_3 = 0;
+  __pyx_t_4 = 0;
+  __pyx_r = ((PyObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_AddTraceback("h5py.h5p.PropDAID.get_chunk_cache", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_tp_new_4h5py_3h5p_PropID(PyTypeObject *t, PyObject *a, PyObject *k) {
+  PyObject *o = __pyx_ptype_4h5py_8_objects_ObjectID->tp_new(t, a, k);
+  if (!o) return 0;
+  return o;
+}
+
+static void __pyx_tp_dealloc_4h5py_3h5p_PropID(PyObject *o) {
+  PyObject_GC_UnTrack(o);
+  PyObject_GC_Track(o);
+  if (likely(__pyx_ptype_4h5py_8_objects_ObjectID)) __pyx_ptype_4h5py_8_objects_ObjectID->tp_dealloc(o); else __Pyx_call_next_tp_dealloc(o, __pyx_tp_dealloc_4h5py_3h5p_PropID);
+}
+
+static int __pyx_tp_traverse_4h5py_3h5p_PropID(PyObject *o, visitproc v, void *a) {
+  int e;
+  e = ((likely(__pyx_ptype_4h5py_8_objects_ObjectID)) ? ((__pyx_ptype_4h5py_8_objects_ObjectID->tp_traverse) ? __pyx_ptype_4h5py_8_objects_ObjectID->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_4h5py_3h5p_PropID)); if (e) return e;
+  return 0;
+}
+
+static int __pyx_tp_clear_4h5py_3h5p_PropID(PyObject *o) {
+  if (likely(__pyx_ptype_4h5py_8_objects_ObjectID)) { if (__pyx_ptype_4h5py_8_objects_ObjectID->tp_clear) __pyx_ptype_4h5py_8_objects_ObjectID->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_4h5py_3h5p_PropID);
+  return 0;
+}
+
+static PyMethodDef __pyx_methods_4h5py_3h5p_PropID[] = {
+  {__Pyx_NAMESTR("equal"), (PyCFunction)__pyx_pw_4h5py_3h5p_6PropID_1equal, METH_O, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5p_6PropID_equal)},
+  {0, 0, 0, 0}
+};
+
+static PyNumberMethods __pyx_tp_as_number_PropID = {
+  0, /*nb_add*/
+  0, /*nb_subtract*/
+  0, /*nb_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_divide*/
+  #endif
+  0, /*nb_remainder*/
+  0, /*nb_divmod*/
+  0, /*nb_power*/
+  0, /*nb_negative*/
+  0, /*nb_positive*/
+  0, /*nb_absolute*/
+  0, /*nb_nonzero*/
+  0, /*nb_invert*/
+  0, /*nb_lshift*/
+  0, /*nb_rshift*/
+  0, /*nb_and*/
+  0, /*nb_xor*/
+  0, /*nb_or*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_coerce*/
+  #endif
+  0, /*nb_int*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_long*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*nb_float*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_oct*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_hex*/
+  #endif
+  0, /*nb_inplace_add*/
+  0, /*nb_inplace_subtract*/
+  0, /*nb_inplace_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_inplace_divide*/
+  #endif
+  0, /*nb_inplace_remainder*/
+  0, /*nb_inplace_power*/
+  0, /*nb_inplace_lshift*/
+  0, /*nb_inplace_rshift*/
+  0, /*nb_inplace_and*/
+  0, /*nb_inplace_xor*/
+  0, /*nb_inplace_or*/
+  0, /*nb_floor_divide*/
+  0, /*nb_true_divide*/
+  0, /*nb_inplace_floor_divide*/
+  0, /*nb_inplace_true_divide*/
+  #if PY_VERSION_HEX >= 0x02050000
+  0, /*nb_index*/
+  #endif
+};
+
+static PySequenceMethods __pyx_tp_as_sequence_PropID = {
+  0, /*sq_length*/
+  0, /*sq_concat*/
+  0, /*sq_repeat*/
+  0, /*sq_item*/
+  0, /*sq_slice*/
+  0, /*sq_ass_item*/
+  0, /*sq_ass_slice*/
+  0, /*sq_contains*/
+  0, /*sq_inplace_concat*/
+  0, /*sq_inplace_repeat*/
+};
+
+static PyMappingMethods __pyx_tp_as_mapping_PropID = {
+  0, /*mp_length*/
+  0, /*mp_subscript*/
+  0, /*mp_ass_subscript*/
+};
+
+static PyBufferProcs __pyx_tp_as_buffer_PropID = {
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getreadbuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getwritebuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getsegcount*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getcharbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_getbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_releasebuffer*/
+  #endif
+};
+
+static PyTypeObject __pyx_type_4h5py_3h5p_PropID = {
+  PyVarObject_HEAD_INIT(0, 0)
+  __Pyx_NAMESTR("h5py.h5p.PropID"), /*tp_name*/
+  sizeof(struct __pyx_obj_4h5py_3h5p_PropID), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_4h5py_3h5p_PropID, /*tp_dealloc*/
+  0, /*tp_print*/
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*tp_repr*/
+  &__pyx_tp_as_number_PropID, /*tp_as_number*/
+  &__pyx_tp_as_sequence_PropID, /*tp_as_sequence*/
+  &__pyx_tp_as_mapping_PropID, /*tp_as_mapping*/
+  __pyx_pw_4h5py_3h5p_6PropID_5__hash__, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  &__pyx_tp_as_buffer_PropID, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+  __Pyx_DOCSTR("\n        Base class for all property lists and classes\n    "), /*tp_doc*/
+  __pyx_tp_traverse_4h5py_3h5p_PropID, /*tp_traverse*/
+  __pyx_tp_clear_4h5py_3h5p_PropID, /*tp_clear*/
+  __pyx_pw_4h5py_3h5p_6PropID_3__richcmp__, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_4h5py_3h5p_PropID, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  0, /*tp_dictoffset*/
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_4h5py_3h5p_PropID, /*tp_new*/
+  0, /*tp_free*/
+  0, /*tp_is_gc*/
+  0, /*tp_bases*/
+  0, /*tp_mro*/
+  0, /*tp_cache*/
+  0, /*tp_subclasses*/
+  0, /*tp_weaklist*/
+  0, /*tp_del*/
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*tp_version_tag*/
+  #endif
+};
+
+static PyObject *__pyx_tp_new_4h5py_3h5p_PropClassID(PyTypeObject *t, PyObject *a, PyObject *k) {
+  PyObject *o = __pyx_tp_new_4h5py_3h5p_PropID(t, a, k);
+  if (!o) return 0;
+  return o;
+}
+
+static PyMethodDef __pyx_methods_4h5py_3h5p_PropClassID[] = {
+  {0, 0, 0, 0}
+};
+
+static PyNumberMethods __pyx_tp_as_number_PropClassID = {
+  0, /*nb_add*/
+  0, /*nb_subtract*/
+  0, /*nb_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_divide*/
+  #endif
+  0, /*nb_remainder*/
+  0, /*nb_divmod*/
+  0, /*nb_power*/
+  0, /*nb_negative*/
+  0, /*nb_positive*/
+  0, /*nb_absolute*/
+  0, /*nb_nonzero*/
+  0, /*nb_invert*/
+  0, /*nb_lshift*/
+  0, /*nb_rshift*/
+  0, /*nb_and*/
+  0, /*nb_xor*/
+  0, /*nb_or*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_coerce*/
+  #endif
+  0, /*nb_int*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_long*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*nb_float*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_oct*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_hex*/
+  #endif
+  0, /*nb_inplace_add*/
+  0, /*nb_inplace_subtract*/
+  0, /*nb_inplace_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_inplace_divide*/
+  #endif
+  0, /*nb_inplace_remainder*/
+  0, /*nb_inplace_power*/
+  0, /*nb_inplace_lshift*/
+  0, /*nb_inplace_rshift*/
+  0, /*nb_inplace_and*/
+  0, /*nb_inplace_xor*/
+  0, /*nb_inplace_or*/
+  0, /*nb_floor_divide*/
+  0, /*nb_true_divide*/
+  0, /*nb_inplace_floor_divide*/
+  0, /*nb_inplace_true_divide*/
+  #if PY_VERSION_HEX >= 0x02050000
+  0, /*nb_index*/
+  #endif
+};
+
+static PySequenceMethods __pyx_tp_as_sequence_PropClassID = {
+  0, /*sq_length*/
+  0, /*sq_concat*/
+  0, /*sq_repeat*/
+  0, /*sq_item*/
+  0, /*sq_slice*/
+  0, /*sq_ass_item*/
+  0, /*sq_ass_slice*/
+  0, /*sq_contains*/
+  0, /*sq_inplace_concat*/
+  0, /*sq_inplace_repeat*/
+};
+
+static PyMappingMethods __pyx_tp_as_mapping_PropClassID = {
+  0, /*mp_length*/
+  0, /*mp_subscript*/
+  0, /*mp_ass_subscript*/
+};
+
+static PyBufferProcs __pyx_tp_as_buffer_PropClassID = {
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getreadbuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getwritebuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getsegcount*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getcharbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_getbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_releasebuffer*/
+  #endif
+};
+
+static PyTypeObject __pyx_type_4h5py_3h5p_PropClassID = {
+  PyVarObject_HEAD_INIT(0, 0)
+  __Pyx_NAMESTR("h5py.h5p.PropClassID"), /*tp_name*/
+  sizeof(struct __pyx_obj_4h5py_3h5p_PropClassID), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_4h5py_3h5p_PropID, /*tp_dealloc*/
+  0, /*tp_print*/
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*tp_repr*/
+  &__pyx_tp_as_number_PropClassID, /*tp_as_number*/
+  &__pyx_tp_as_sequence_PropClassID, /*tp_as_sequence*/
+  &__pyx_tp_as_mapping_PropClassID, /*tp_as_mapping*/
+  __pyx_pw_4h5py_3h5p_11PropClassID_3__hash__, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  &__pyx_tp_as_buffer_PropClassID, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+  __Pyx_DOCSTR("\n        An HDF5 property list class.\n\n        * Hashable: Yes, by identifier\n        * Equality: Logical H5P comparison\n    "), /*tp_doc*/
+  __pyx_tp_traverse_4h5py_3h5p_PropID, /*tp_traverse*/
+  __pyx_tp_clear_4h5py_3h5p_PropID, /*tp_clear*/
+  __pyx_pw_4h5py_3h5p_11PropClassID_1__richcmp__, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_4h5py_3h5p_PropClassID, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  0, /*tp_dictoffset*/
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_4h5py_3h5p_PropClassID, /*tp_new*/
+  0, /*tp_free*/
+  0, /*tp_is_gc*/
+  0, /*tp_bases*/
+  0, /*tp_mro*/
+  0, /*tp_cache*/
+  0, /*tp_subclasses*/
+  0, /*tp_weaklist*/
+  0, /*tp_del*/
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*tp_version_tag*/
+  #endif
+};
+
+static PyObject *__pyx_tp_new_4h5py_3h5p_PropInstanceID(PyTypeObject *t, PyObject *a, PyObject *k) {
+  PyObject *o = __pyx_tp_new_4h5py_3h5p_PropID(t, a, k);
+  if (!o) return 0;
+  return o;
+}
+
+static PyMethodDef __pyx_methods_4h5py_3h5p_PropInstanceID[] = {
+  {__Pyx_NAMESTR("copy"), (PyCFunction)__pyx_pw_4h5py_3h5p_14PropInstanceID_1copy, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5p_14PropInstanceID_copy)},
+  {__Pyx_NAMESTR("_close"), (PyCFunction)__pyx_pw_4h5py_3h5p_14PropInstanceID_3_close, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5p_14PropInstanceID_2_close)},
+  {__Pyx_NAMESTR("get_class"), (PyCFunction)__pyx_pw_4h5py_3h5p_14PropInstanceID_5get_class, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5p_14PropInstanceID_4get_class)},
+  {0, 0, 0, 0}
+};
+
+static PyNumberMethods __pyx_tp_as_number_PropInstanceID = {
+  0, /*nb_add*/
+  0, /*nb_subtract*/
+  0, /*nb_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_divide*/
+  #endif
+  0, /*nb_remainder*/
+  0, /*nb_divmod*/
+  0, /*nb_power*/
+  0, /*nb_negative*/
+  0, /*nb_positive*/
+  0, /*nb_absolute*/
+  0, /*nb_nonzero*/
+  0, /*nb_invert*/
+  0, /*nb_lshift*/
+  0, /*nb_rshift*/
+  0, /*nb_and*/
+  0, /*nb_xor*/
+  0, /*nb_or*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_coerce*/
+  #endif
+  0, /*nb_int*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_long*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*nb_float*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_oct*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_hex*/
+  #endif
+  0, /*nb_inplace_add*/
+  0, /*nb_inplace_subtract*/
+  0, /*nb_inplace_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_inplace_divide*/
+  #endif
+  0, /*nb_inplace_remainder*/
+  0, /*nb_inplace_power*/
+  0, /*nb_inplace_lshift*/
+  0, /*nb_inplace_rshift*/
+  0, /*nb_inplace_and*/
+  0, /*nb_inplace_xor*/
+  0, /*nb_inplace_or*/
+  0, /*nb_floor_divide*/
+  0, /*nb_true_divide*/
+  0, /*nb_inplace_floor_divide*/
+  0, /*nb_inplace_true_divide*/
+  #if PY_VERSION_HEX >= 0x02050000
+  0, /*nb_index*/
+  #endif
+};
+
+static PySequenceMethods __pyx_tp_as_sequence_PropInstanceID = {
+  0, /*sq_length*/
+  0, /*sq_concat*/
+  0, /*sq_repeat*/
+  0, /*sq_item*/
+  0, /*sq_slice*/
+  0, /*sq_ass_item*/
+  0, /*sq_ass_slice*/
+  0, /*sq_contains*/
+  0, /*sq_inplace_concat*/
+  0, /*sq_inplace_repeat*/
+};
+
+static PyMappingMethods __pyx_tp_as_mapping_PropInstanceID = {
+  0, /*mp_length*/
+  0, /*mp_subscript*/
+  0, /*mp_ass_subscript*/
+};
+
+static PyBufferProcs __pyx_tp_as_buffer_PropInstanceID = {
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getreadbuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getwritebuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getsegcount*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getcharbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_getbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_releasebuffer*/
+  #endif
+};
+
+static PyTypeObject __pyx_type_4h5py_3h5p_PropInstanceID = {
+  PyVarObject_HEAD_INIT(0, 0)
+  __Pyx_NAMESTR("h5py.h5p.PropInstanceID"), /*tp_name*/
+  sizeof(struct __pyx_obj_4h5py_3h5p_PropInstanceID), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_4h5py_3h5p_PropID, /*tp_dealloc*/
+  0, /*tp_print*/
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*tp_repr*/
+  &__pyx_tp_as_number_PropInstanceID, /*tp_as_number*/
+  &__pyx_tp_as_sequence_PropInstanceID, /*tp_as_sequence*/
+  &__pyx_tp_as_mapping_PropInstanceID, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  &__pyx_tp_as_buffer_PropInstanceID, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+  __Pyx_DOCSTR("\n        Base class for property list instance objects.  Provides methods which\n        are common across all HDF5 property list classes.\n\n        * Hashable: No\n        * Equality: Logical H5P comparison\n    "), /*tp_doc*/
+  __pyx_tp_traverse_4h5py_3h5p_PropID, /*tp_traverse*/
+  __pyx_tp_clear_4h5py_3h5p_PropID, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_4h5py_3h5p_PropInstanceID, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  0, /*tp_dictoffset*/
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_4h5py_3h5p_PropInstanceID, /*tp_new*/
+  0, /*tp_free*/
+  0, /*tp_is_gc*/
+  0, /*tp_bases*/
+  0, /*tp_mro*/
+  0, /*tp_cache*/
+  0, /*tp_subclasses*/
+  0, /*tp_weaklist*/
+  0, /*tp_del*/
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*tp_version_tag*/
+  #endif
+};
+
+static PyObject *__pyx_tp_new_4h5py_3h5p_PropCreateID(PyTypeObject *t, PyObject *a, PyObject *k) {
+  PyObject *o = __pyx_tp_new_4h5py_3h5p_PropID(t, a, k);
+  if (!o) return 0;
+  return o;
+}
+
+static PyMethodDef __pyx_methods_4h5py_3h5p_PropCreateID[] = {
+  {0, 0, 0, 0}
+};
+
+static PyNumberMethods __pyx_tp_as_number_PropCreateID = {
+  0, /*nb_add*/
+  0, /*nb_subtract*/
+  0, /*nb_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_divide*/
+  #endif
+  0, /*nb_remainder*/
+  0, /*nb_divmod*/
+  0, /*nb_power*/
+  0, /*nb_negative*/
+  0, /*nb_positive*/
+  0, /*nb_absolute*/
+  0, /*nb_nonzero*/
+  0, /*nb_invert*/
+  0, /*nb_lshift*/
+  0, /*nb_rshift*/
+  0, /*nb_and*/
+  0, /*nb_xor*/
+  0, /*nb_or*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_coerce*/
+  #endif
+  0, /*nb_int*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_long*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*nb_float*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_oct*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_hex*/
+  #endif
+  0, /*nb_inplace_add*/
+  0, /*nb_inplace_subtract*/
+  0, /*nb_inplace_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_inplace_divide*/
+  #endif
+  0, /*nb_inplace_remainder*/
+  0, /*nb_inplace_power*/
+  0, /*nb_inplace_lshift*/
+  0, /*nb_inplace_rshift*/
+  0, /*nb_inplace_and*/
+  0, /*nb_inplace_xor*/
+  0, /*nb_inplace_or*/
+  0, /*nb_floor_divide*/
+  0, /*nb_true_divide*/
+  0, /*nb_inplace_floor_divide*/
+  0, /*nb_inplace_true_divide*/
+  #if PY_VERSION_HEX >= 0x02050000
+  0, /*nb_index*/
+  #endif
+};
+
+static PySequenceMethods __pyx_tp_as_sequence_PropCreateID = {
+  0, /*sq_length*/
+  0, /*sq_concat*/
+  0, /*sq_repeat*/
+  0, /*sq_item*/
+  0, /*sq_slice*/
+  0, /*sq_ass_item*/
+  0, /*sq_ass_slice*/
+  0, /*sq_contains*/
+  0, /*sq_inplace_concat*/
+  0, /*sq_inplace_repeat*/
+};
+
+static PyMappingMethods __pyx_tp_as_mapping_PropCreateID = {
+  0, /*mp_length*/
+  0, /*mp_subscript*/
+  0, /*mp_ass_subscript*/
+};
+
+static PyBufferProcs __pyx_tp_as_buffer_PropCreateID = {
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getreadbuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getwritebuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getsegcount*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getcharbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_getbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_releasebuffer*/
+  #endif
+};
+
+static PyTypeObject __pyx_type_4h5py_3h5p_PropCreateID = {
+  PyVarObject_HEAD_INIT(0, 0)
+  __Pyx_NAMESTR("h5py.h5p.PropCreateID"), /*tp_name*/
+  sizeof(struct __pyx_obj_4h5py_3h5p_PropCreateID), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_4h5py_3h5p_PropID, /*tp_dealloc*/
+  0, /*tp_print*/
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*tp_repr*/
+  &__pyx_tp_as_number_PropCreateID, /*tp_as_number*/
+  &__pyx_tp_as_sequence_PropCreateID, /*tp_as_sequence*/
+  &__pyx_tp_as_mapping_PropCreateID, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  &__pyx_tp_as_buffer_PropCreateID, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+  __Pyx_DOCSTR("\n        Generic object creation property list.\n    "), /*tp_doc*/
+  __pyx_tp_traverse_4h5py_3h5p_PropID, /*tp_traverse*/
+  __pyx_tp_clear_4h5py_3h5p_PropID, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_4h5py_3h5p_PropCreateID, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  0, /*tp_dictoffset*/
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_4h5py_3h5p_PropCreateID, /*tp_new*/
+  0, /*tp_free*/
+  0, /*tp_is_gc*/
+  0, /*tp_bases*/
+  0, /*tp_mro*/
+  0, /*tp_cache*/
+  0, /*tp_subclasses*/
+  0, /*tp_weaklist*/
+  0, /*tp_del*/
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*tp_version_tag*/
+  #endif
+};
+
+static PyObject *__pyx_tp_new_4h5py_3h5p_PropCopyID(PyTypeObject *t, PyObject *a, PyObject *k) {
+  PyObject *o = __pyx_tp_new_4h5py_3h5p_PropID(t, a, k);
+  if (!o) return 0;
+  return o;
+}
+
+static PyMethodDef __pyx_methods_4h5py_3h5p_PropCopyID[] = {
+  {__Pyx_NAMESTR("set_copy_object"), (PyCFunction)__pyx_pw_4h5py_3h5p_10PropCopyID_1set_copy_object, METH_O, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5p_10PropCopyID_set_copy_object)},
+  {__Pyx_NAMESTR("get_copy_object"), (PyCFunction)__pyx_pw_4h5py_3h5p_10PropCopyID_3get_copy_object, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5p_10PropCopyID_2get_copy_object)},
+  {0, 0, 0, 0}
+};
+
+static PyNumberMethods __pyx_tp_as_number_PropCopyID = {
+  0, /*nb_add*/
+  0, /*nb_subtract*/
+  0, /*nb_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_divide*/
+  #endif
+  0, /*nb_remainder*/
+  0, /*nb_divmod*/
+  0, /*nb_power*/
+  0, /*nb_negative*/
+  0, /*nb_positive*/
+  0, /*nb_absolute*/
+  0, /*nb_nonzero*/
+  0, /*nb_invert*/
+  0, /*nb_lshift*/
+  0, /*nb_rshift*/
+  0, /*nb_and*/
+  0, /*nb_xor*/
+  0, /*nb_or*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_coerce*/
+  #endif
+  0, /*nb_int*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_long*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*nb_float*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_oct*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_hex*/
+  #endif
+  0, /*nb_inplace_add*/
+  0, /*nb_inplace_subtract*/
+  0, /*nb_inplace_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_inplace_divide*/
+  #endif
+  0, /*nb_inplace_remainder*/
+  0, /*nb_inplace_power*/
+  0, /*nb_inplace_lshift*/
+  0, /*nb_inplace_rshift*/
+  0, /*nb_inplace_and*/
+  0, /*nb_inplace_xor*/
+  0, /*nb_inplace_or*/
+  0, /*nb_floor_divide*/
+  0, /*nb_true_divide*/
+  0, /*nb_inplace_floor_divide*/
+  0, /*nb_inplace_true_divide*/
+  #if PY_VERSION_HEX >= 0x02050000
+  0, /*nb_index*/
+  #endif
+};
+
+static PySequenceMethods __pyx_tp_as_sequence_PropCopyID = {
+  0, /*sq_length*/
+  0, /*sq_concat*/
+  0, /*sq_repeat*/
+  0, /*sq_item*/
+  0, /*sq_slice*/
+  0, /*sq_ass_item*/
+  0, /*sq_ass_slice*/
+  0, /*sq_contains*/
+  0, /*sq_inplace_concat*/
+  0, /*sq_inplace_repeat*/
+};
+
+static PyMappingMethods __pyx_tp_as_mapping_PropCopyID = {
+  0, /*mp_length*/
+  0, /*mp_subscript*/
+  0, /*mp_ass_subscript*/
+};
+
+static PyBufferProcs __pyx_tp_as_buffer_PropCopyID = {
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getreadbuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getwritebuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getsegcount*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getcharbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_getbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_releasebuffer*/
+  #endif
+};
+
+static PyTypeObject __pyx_type_4h5py_3h5p_PropCopyID = {
+  PyVarObject_HEAD_INIT(0, 0)
+  __Pyx_NAMESTR("h5py.h5p.PropCopyID"), /*tp_name*/
+  sizeof(struct __pyx_obj_4h5py_3h5p_PropCopyID), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_4h5py_3h5p_PropID, /*tp_dealloc*/
+  0, /*tp_print*/
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*tp_repr*/
+  &__pyx_tp_as_number_PropCopyID, /*tp_as_number*/
+  &__pyx_tp_as_sequence_PropCopyID, /*tp_as_sequence*/
+  &__pyx_tp_as_mapping_PropCopyID, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  &__pyx_tp_as_buffer_PropCopyID, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+  __Pyx_DOCSTR("\n        Generic object copy property list\n    "), /*tp_doc*/
+  __pyx_tp_traverse_4h5py_3h5p_PropID, /*tp_traverse*/
+  __pyx_tp_clear_4h5py_3h5p_PropID, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_4h5py_3h5p_PropCopyID, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  0, /*tp_dictoffset*/
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_4h5py_3h5p_PropCopyID, /*tp_new*/
+  0, /*tp_free*/
+  0, /*tp_is_gc*/
+  0, /*tp_bases*/
+  0, /*tp_mro*/
+  0, /*tp_cache*/
+  0, /*tp_subclasses*/
+  0, /*tp_weaklist*/
+  0, /*tp_del*/
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*tp_version_tag*/
+  #endif
+};
+
+static PyObject *__pyx_tp_new_4h5py_3h5p_PropOCID(PyTypeObject *t, PyObject *a, PyObject *k) {
+  PyObject *o = __pyx_tp_new_4h5py_3h5p_PropID(t, a, k);
+  if (!o) return 0;
+  return o;
+}
+
+static PyMethodDef __pyx_methods_4h5py_3h5p_PropOCID[] = {
+  {__Pyx_NAMESTR("set_obj_track_times"), (PyCFunction)__pyx_pw_4h5py_3h5p_8PropOCID_1set_obj_track_times, METH_O, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5p_8PropOCID_set_obj_track_times)},
+  {__Pyx_NAMESTR("get_obj_track_times"), (PyCFunction)__pyx_pw_4h5py_3h5p_8PropOCID_3get_obj_track_times, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5p_8PropOCID_2get_obj_track_times)},
+  {0, 0, 0, 0}
+};
+
+static PyNumberMethods __pyx_tp_as_number_PropOCID = {
+  0, /*nb_add*/
+  0, /*nb_subtract*/
+  0, /*nb_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_divide*/
+  #endif
+  0, /*nb_remainder*/
+  0, /*nb_divmod*/
+  0, /*nb_power*/
+  0, /*nb_negative*/
+  0, /*nb_positive*/
+  0, /*nb_absolute*/
+  0, /*nb_nonzero*/
+  0, /*nb_invert*/
+  0, /*nb_lshift*/
+  0, /*nb_rshift*/
+  0, /*nb_and*/
+  0, /*nb_xor*/
+  0, /*nb_or*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_coerce*/
+  #endif
+  0, /*nb_int*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_long*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*nb_float*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_oct*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_hex*/
+  #endif
+  0, /*nb_inplace_add*/
+  0, /*nb_inplace_subtract*/
+  0, /*nb_inplace_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_inplace_divide*/
+  #endif
+  0, /*nb_inplace_remainder*/
+  0, /*nb_inplace_power*/
+  0, /*nb_inplace_lshift*/
+  0, /*nb_inplace_rshift*/
+  0, /*nb_inplace_and*/
+  0, /*nb_inplace_xor*/
+  0, /*nb_inplace_or*/
+  0, /*nb_floor_divide*/
+  0, /*nb_true_divide*/
+  0, /*nb_inplace_floor_divide*/
+  0, /*nb_inplace_true_divide*/
+  #if PY_VERSION_HEX >= 0x02050000
+  0, /*nb_index*/
+  #endif
+};
+
+static PySequenceMethods __pyx_tp_as_sequence_PropOCID = {
+  0, /*sq_length*/
+  0, /*sq_concat*/
+  0, /*sq_repeat*/
+  0, /*sq_item*/
+  0, /*sq_slice*/
+  0, /*sq_ass_item*/
+  0, /*sq_ass_slice*/
+  0, /*sq_contains*/
+  0, /*sq_inplace_concat*/
+  0, /*sq_inplace_repeat*/
+};
+
+static PyMappingMethods __pyx_tp_as_mapping_PropOCID = {
+  0, /*mp_length*/
+  0, /*mp_subscript*/
+  0, /*mp_ass_subscript*/
+};
+
+static PyBufferProcs __pyx_tp_as_buffer_PropOCID = {
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getreadbuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getwritebuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getsegcount*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getcharbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_getbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_releasebuffer*/
+  #endif
+};
+
+static PyTypeObject __pyx_type_4h5py_3h5p_PropOCID = {
+  PyVarObject_HEAD_INIT(0, 0)
+  __Pyx_NAMESTR("h5py.h5p.PropOCID"), /*tp_name*/
+  sizeof(struct __pyx_obj_4h5py_3h5p_PropOCID), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_4h5py_3h5p_PropID, /*tp_dealloc*/
+  0, /*tp_print*/
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*tp_repr*/
+  &__pyx_tp_as_number_PropOCID, /*tp_as_number*/
+  &__pyx_tp_as_sequence_PropOCID, /*tp_as_sequence*/
+  &__pyx_tp_as_mapping_PropOCID, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  &__pyx_tp_as_buffer_PropOCID, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+  __Pyx_DOCSTR(" Object creation property list\n\n    This seems to be a super class for dataset creation property list\n    and group creation property list.\n\n    The documentation is somewhat hazy\n    "), /*tp_doc*/
+  __pyx_tp_traverse_4h5py_3h5p_PropID, /*tp_traverse*/
+  __pyx_tp_clear_4h5py_3h5p_PropID, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_4h5py_3h5p_PropOCID, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  0, /*tp_dictoffset*/
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_4h5py_3h5p_PropOCID, /*tp_new*/
+  0, /*tp_free*/
+  0, /*tp_is_gc*/
+  0, /*tp_bases*/
+  0, /*tp_mro*/
+  0, /*tp_cache*/
+  0, /*tp_subclasses*/
+  0, /*tp_weaklist*/
+  0, /*tp_del*/
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*tp_version_tag*/
+  #endif
+};
+
+static PyObject *__pyx_tp_new_4h5py_3h5p_PropDCID(PyTypeObject *t, PyObject *a, PyObject *k) {
+  PyObject *o = __pyx_tp_new_4h5py_3h5p_PropID(t, a, k);
+  if (!o) return 0;
+  return o;
+}
+
+static PyMethodDef __pyx_methods_4h5py_3h5p_PropDCID[] = {
+  {__Pyx_NAMESTR("set_layout"), (PyCFunction)__pyx_pw_4h5py_3h5p_8PropDCID_1set_layout, METH_O, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5p_8PropDCID_set_layout)},
+  {__Pyx_NAMESTR("get_layout"), (PyCFunction)__pyx_pw_4h5py_3h5p_8PropDCID_3get_layout, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5p_8PropDCID_2get_layout)},
+  {__Pyx_NAMESTR("set_chunk"), (PyCFunction)__pyx_pw_4h5py_3h5p_8PropDCID_5set_chunk, METH_O, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5p_8PropDCID_4set_chunk)},
+  {__Pyx_NAMESTR("get_chunk"), (PyCFunction)__pyx_pw_4h5py_3h5p_8PropDCID_7get_chunk, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5p_8PropDCID_6get_chunk)},
+  {__Pyx_NAMESTR("set_fill_value"), (PyCFunction)__pyx_pw_4h5py_3h5p_8PropDCID_9set_fill_value, METH_O, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5p_8PropDCID_8set_fill_value)},
+  {__Pyx_NAMESTR("get_fill_value"), (PyCFunction)__pyx_pw_4h5py_3h5p_8PropDCID_11get_fill_value, METH_O, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5p_8PropDCID_10get_fill_value)},
+  {__Pyx_NAMESTR("fill_value_defined"), (PyCFunction)__pyx_pw_4h5py_3h5p_8PropDCID_13fill_value_defined, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5p_8PropDCID_12fill_value_defined)},
+  {__Pyx_NAMESTR("set_fill_time"), (PyCFunction)__pyx_pw_4h5py_3h5p_8PropDCID_15set_fill_time, METH_O, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5p_8PropDCID_14set_fill_time)},
+  {__Pyx_NAMESTR("get_fill_time"), (PyCFunction)__pyx_pw_4h5py_3h5p_8PropDCID_17get_fill_time, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5p_8PropDCID_16get_fill_time)},
+  {__Pyx_NAMESTR("set_alloc_time"), (PyCFunction)__pyx_pw_4h5py_3h5p_8PropDCID_19set_alloc_time, METH_O, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5p_8PropDCID_18set_alloc_time)},
+  {__Pyx_NAMESTR("get_alloc_time"), (PyCFunction)__pyx_pw_4h5py_3h5p_8PropDCID_21get_alloc_time, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5p_8PropDCID_20get_alloc_time)},
+  {__Pyx_NAMESTR("set_filter"), (PyCFunction)__pyx_pw_4h5py_3h5p_8PropDCID_23set_filter, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5p_8PropDCID_22set_filter)},
+  {__Pyx_NAMESTR("all_filters_avail"), (PyCFunction)__pyx_pw_4h5py_3h5p_8PropDCID_25all_filters_avail, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5p_8PropDCID_24all_filters_avail)},
+  {__Pyx_NAMESTR("get_nfilters"), (PyCFunction)__pyx_pw_4h5py_3h5p_8PropDCID_27get_nfilters, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5p_8PropDCID_26get_nfilters)},
+  {__Pyx_NAMESTR("get_filter"), (PyCFunction)__pyx_pw_4h5py_3h5p_8PropDCID_29get_filter, METH_O, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5p_8PropDCID_28get_filter)},
+  {__Pyx_NAMESTR("_has_filter"), (PyCFunction)__pyx_pw_4h5py_3h5p_8PropDCID_31_has_filter, METH_O, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5p_8PropDCID_30_has_filter)},
+  {__Pyx_NAMESTR("get_filter_by_id"), (PyCFunction)__pyx_pw_4h5py_3h5p_8PropDCID_33get_filter_by_id, METH_O, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5p_8PropDCID_32get_filter_by_id)},
+  {__Pyx_NAMESTR("remove_filter"), (PyCFunction)__pyx_pw_4h5py_3h5p_8PropDCID_35remove_filter, METH_O, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5p_8PropDCID_34remove_filter)},
+  {__Pyx_NAMESTR("set_deflate"), (PyCFunction)__pyx_pw_4h5py_3h5p_8PropDCID_37set_deflate, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5p_8PropDCID_36set_deflate)},
+  {__Pyx_NAMESTR("set_fletcher32"), (PyCFunction)__pyx_pw_4h5py_3h5p_8PropDCID_39set_fletcher32, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5p_8PropDCID_38set_fletcher32)},
+  {__Pyx_NAMESTR("set_shuffle"), (PyCFunction)__pyx_pw_4h5py_3h5p_8PropDCID_41set_shuffle, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5p_8PropDCID_40set_shuffle)},
+  {__Pyx_NAMESTR("set_szip"), (PyCFunction)__pyx_pw_4h5py_3h5p_8PropDCID_43set_szip, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5p_8PropDCID_42set_szip)},
+  {__Pyx_NAMESTR("set_scaleoffset"), (PyCFunction)__pyx_pw_4h5py_3h5p_8PropDCID_45set_scaleoffset, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5p_8PropDCID_44set_scaleoffset)},
+  {0, 0, 0, 0}
+};
+
+static PyNumberMethods __pyx_tp_as_number_PropDCID = {
+  0, /*nb_add*/
+  0, /*nb_subtract*/
+  0, /*nb_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_divide*/
+  #endif
+  0, /*nb_remainder*/
+  0, /*nb_divmod*/
+  0, /*nb_power*/
+  0, /*nb_negative*/
+  0, /*nb_positive*/
+  0, /*nb_absolute*/
+  0, /*nb_nonzero*/
+  0, /*nb_invert*/
+  0, /*nb_lshift*/
+  0, /*nb_rshift*/
+  0, /*nb_and*/
+  0, /*nb_xor*/
+  0, /*nb_or*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_coerce*/
+  #endif
+  0, /*nb_int*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_long*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*nb_float*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_oct*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_hex*/
+  #endif
+  0, /*nb_inplace_add*/
+  0, /*nb_inplace_subtract*/
+  0, /*nb_inplace_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_inplace_divide*/
+  #endif
+  0, /*nb_inplace_remainder*/
+  0, /*nb_inplace_power*/
+  0, /*nb_inplace_lshift*/
+  0, /*nb_inplace_rshift*/
+  0, /*nb_inplace_and*/
+  0, /*nb_inplace_xor*/
+  0, /*nb_inplace_or*/
+  0, /*nb_floor_divide*/
+  0, /*nb_true_divide*/
+  0, /*nb_inplace_floor_divide*/
+  0, /*nb_inplace_true_divide*/
+  #if PY_VERSION_HEX >= 0x02050000
+  0, /*nb_index*/
+  #endif
+};
+
+static PySequenceMethods __pyx_tp_as_sequence_PropDCID = {
+  0, /*sq_length*/
+  0, /*sq_concat*/
+  0, /*sq_repeat*/
+  0, /*sq_item*/
+  0, /*sq_slice*/
+  0, /*sq_ass_item*/
+  0, /*sq_ass_slice*/
+  0, /*sq_contains*/
+  0, /*sq_inplace_concat*/
+  0, /*sq_inplace_repeat*/
+};
+
+static PyMappingMethods __pyx_tp_as_mapping_PropDCID = {
+  0, /*mp_length*/
+  0, /*mp_subscript*/
+  0, /*mp_ass_subscript*/
+};
+
+static PyBufferProcs __pyx_tp_as_buffer_PropDCID = {
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getreadbuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getwritebuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getsegcount*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getcharbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_getbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_releasebuffer*/
+  #endif
+};
+
+static PyTypeObject __pyx_type_4h5py_3h5p_PropDCID = {
+  PyVarObject_HEAD_INIT(0, 0)
+  __Pyx_NAMESTR("h5py.h5p.PropDCID"), /*tp_name*/
+  sizeof(struct __pyx_obj_4h5py_3h5p_PropDCID), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_4h5py_3h5p_PropID, /*tp_dealloc*/
+  0, /*tp_print*/
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*tp_repr*/
+  &__pyx_tp_as_number_PropDCID, /*tp_as_number*/
+  &__pyx_tp_as_sequence_PropDCID, /*tp_as_sequence*/
+  &__pyx_tp_as_mapping_PropDCID, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  &__pyx_tp_as_buffer_PropDCID, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+  __Pyx_DOCSTR("\n        Dataset creation property list.\n    "), /*tp_doc*/
+  __pyx_tp_traverse_4h5py_3h5p_PropID, /*tp_traverse*/
+  __pyx_tp_clear_4h5py_3h5p_PropID, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_4h5py_3h5p_PropDCID, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  0, /*tp_dictoffset*/
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_4h5py_3h5p_PropDCID, /*tp_new*/
+  0, /*tp_free*/
+  0, /*tp_is_gc*/
+  0, /*tp_bases*/
+  0, /*tp_mro*/
+  0, /*tp_cache*/
+  0, /*tp_subclasses*/
+  0, /*tp_weaklist*/
+  0, /*tp_del*/
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*tp_version_tag*/
+  #endif
+};
+
+static PyObject *__pyx_tp_new_4h5py_3h5p_PropFCID(PyTypeObject *t, PyObject *a, PyObject *k) {
+  PyObject *o = __pyx_tp_new_4h5py_3h5p_PropID(t, a, k);
+  if (!o) return 0;
+  return o;
+}
+
+static PyMethodDef __pyx_methods_4h5py_3h5p_PropFCID[] = {
+  {__Pyx_NAMESTR("get_version"), (PyCFunction)__pyx_pw_4h5py_3h5p_8PropFCID_1get_version, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5p_8PropFCID_get_version)},
+  {__Pyx_NAMESTR("set_userblock"), (PyCFunction)__pyx_pw_4h5py_3h5p_8PropFCID_3set_userblock, METH_O, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5p_8PropFCID_2set_userblock)},
+  {__Pyx_NAMESTR("get_userblock"), (PyCFunction)__pyx_pw_4h5py_3h5p_8PropFCID_5get_userblock, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5p_8PropFCID_4get_userblock)},
+  {__Pyx_NAMESTR("set_sizes"), (PyCFunction)__pyx_pw_4h5py_3h5p_8PropFCID_7set_sizes, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5p_8PropFCID_6set_sizes)},
+  {__Pyx_NAMESTR("get_sizes"), (PyCFunction)__pyx_pw_4h5py_3h5p_8PropFCID_9get_sizes, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5p_8PropFCID_8get_sizes)},
+  {__Pyx_NAMESTR("set_link_creation_order"), (PyCFunction)__pyx_pw_4h5py_3h5p_8PropFCID_11set_link_creation_order, METH_O, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5p_8PropFCID_10set_link_creation_order)},
+  {__Pyx_NAMESTR("get_link_creation_order"), (PyCFunction)__pyx_pw_4h5py_3h5p_8PropFCID_13get_link_creation_order, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5p_8PropFCID_12get_link_creation_order)},
+  {0, 0, 0, 0}
+};
+
+static PyNumberMethods __pyx_tp_as_number_PropFCID = {
+  0, /*nb_add*/
+  0, /*nb_subtract*/
+  0, /*nb_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_divide*/
+  #endif
+  0, /*nb_remainder*/
+  0, /*nb_divmod*/
+  0, /*nb_power*/
+  0, /*nb_negative*/
+  0, /*nb_positive*/
+  0, /*nb_absolute*/
+  0, /*nb_nonzero*/
+  0, /*nb_invert*/
+  0, /*nb_lshift*/
+  0, /*nb_rshift*/
+  0, /*nb_and*/
+  0, /*nb_xor*/
+  0, /*nb_or*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_coerce*/
+  #endif
+  0, /*nb_int*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_long*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*nb_float*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_oct*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_hex*/
+  #endif
+  0, /*nb_inplace_add*/
+  0, /*nb_inplace_subtract*/
+  0, /*nb_inplace_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_inplace_divide*/
+  #endif
+  0, /*nb_inplace_remainder*/
+  0, /*nb_inplace_power*/
+  0, /*nb_inplace_lshift*/
+  0, /*nb_inplace_rshift*/
+  0, /*nb_inplace_and*/
+  0, /*nb_inplace_xor*/
+  0, /*nb_inplace_or*/
+  0, /*nb_floor_divide*/
+  0, /*nb_true_divide*/
+  0, /*nb_inplace_floor_divide*/
+  0, /*nb_inplace_true_divide*/
+  #if PY_VERSION_HEX >= 0x02050000
+  0, /*nb_index*/
+  #endif
+};
+
+static PySequenceMethods __pyx_tp_as_sequence_PropFCID = {
+  0, /*sq_length*/
+  0, /*sq_concat*/
+  0, /*sq_repeat*/
+  0, /*sq_item*/
+  0, /*sq_slice*/
+  0, /*sq_ass_item*/
+  0, /*sq_ass_slice*/
+  0, /*sq_contains*/
+  0, /*sq_inplace_concat*/
+  0, /*sq_inplace_repeat*/
+};
+
+static PyMappingMethods __pyx_tp_as_mapping_PropFCID = {
+  0, /*mp_length*/
+  0, /*mp_subscript*/
+  0, /*mp_ass_subscript*/
+};
+
+static PyBufferProcs __pyx_tp_as_buffer_PropFCID = {
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getreadbuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getwritebuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getsegcount*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getcharbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_getbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_releasebuffer*/
+  #endif
+};
+
+static PyTypeObject __pyx_type_4h5py_3h5p_PropFCID = {
+  PyVarObject_HEAD_INIT(0, 0)
+  __Pyx_NAMESTR("h5py.h5p.PropFCID"), /*tp_name*/
+  sizeof(struct __pyx_obj_4h5py_3h5p_PropFCID), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_4h5py_3h5p_PropID, /*tp_dealloc*/
+  0, /*tp_print*/
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*tp_repr*/
+  &__pyx_tp_as_number_PropFCID, /*tp_as_number*/
+  &__pyx_tp_as_sequence_PropFCID, /*tp_as_sequence*/
+  &__pyx_tp_as_mapping_PropFCID, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  &__pyx_tp_as_buffer_PropFCID, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+  __Pyx_DOCSTR("\n        File creation property list.\n    "), /*tp_doc*/
+  __pyx_tp_traverse_4h5py_3h5p_PropID, /*tp_traverse*/
+  __pyx_tp_clear_4h5py_3h5p_PropID, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_4h5py_3h5p_PropFCID, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  0, /*tp_dictoffset*/
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_4h5py_3h5p_PropFCID, /*tp_new*/
+  0, /*tp_free*/
+  0, /*tp_is_gc*/
+  0, /*tp_bases*/
+  0, /*tp_mro*/
+  0, /*tp_cache*/
+  0, /*tp_subclasses*/
+  0, /*tp_weaklist*/
+  0, /*tp_del*/
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*tp_version_tag*/
+  #endif
+};
+
+static PyObject *__pyx_tp_new_4h5py_3h5p_PropFAID(PyTypeObject *t, PyObject *a, PyObject *k) {
+  PyObject *o = __pyx_tp_new_4h5py_3h5p_PropID(t, a, k);
+  if (!o) return 0;
+  return o;
+}
+
+static PyMethodDef __pyx_methods_4h5py_3h5p_PropFAID[] = {
+  {__Pyx_NAMESTR("set_fclose_degree"), (PyCFunction)__pyx_pw_4h5py_3h5p_8PropFAID_1set_fclose_degree, METH_O, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5p_8PropFAID_set_fclose_degree)},
+  {__Pyx_NAMESTR("get_fclose_degree"), (PyCFunction)__pyx_pw_4h5py_3h5p_8PropFAID_3get_fclose_degree, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5p_8PropFAID_2get_fclose_degree)},
+  {__Pyx_NAMESTR("set_fapl_core"), (PyCFunction)__pyx_pw_4h5py_3h5p_8PropFAID_5set_fapl_core, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5p_8PropFAID_4set_fapl_core)},
+  {__Pyx_NAMESTR("get_fapl_core"), (PyCFunction)__pyx_pw_4h5py_3h5p_8PropFAID_7get_fapl_core, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5p_8PropFAID_6get_fapl_core)},
+  {__Pyx_NAMESTR("set_fapl_family"), (PyCFunction)__pyx_pw_4h5py_3h5p_8PropFAID_9set_fapl_family, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5p_8PropFAID_8set_fapl_family)},
+  {__Pyx_NAMESTR("get_fapl_family"), (PyCFunction)__pyx_pw_4h5py_3h5p_8PropFAID_11get_fapl_family, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5p_8PropFAID_10get_fapl_family)},
+  {__Pyx_NAMESTR("set_fapl_log"), (PyCFunction)__pyx_pw_4h5py_3h5p_8PropFAID_13set_fapl_log, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5p_8PropFAID_12set_fapl_log)},
+  {__Pyx_NAMESTR("set_fapl_sec2"), (PyCFunction)__pyx_pw_4h5py_3h5p_8PropFAID_15set_fapl_sec2, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5p_8PropFAID_14set_fapl_sec2)},
+  {__Pyx_NAMESTR("set_fapl_stdio"), (PyCFunction)__pyx_pw_4h5py_3h5p_8PropFAID_17set_fapl_stdio, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5p_8PropFAID_16set_fapl_stdio)},
+  {__Pyx_NAMESTR("get_driver"), (PyCFunction)__pyx_pw_4h5py_3h5p_8PropFAID_19get_driver, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5p_8PropFAID_18get_driver)},
+  {__Pyx_NAMESTR("set_cache"), (PyCFunction)__pyx_pw_4h5py_3h5p_8PropFAID_21set_cache, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5p_8PropFAID_20set_cache)},
+  {__Pyx_NAMESTR("get_cache"), (PyCFunction)__pyx_pw_4h5py_3h5p_8PropFAID_23get_cache, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5p_8PropFAID_22get_cache)},
+  {__Pyx_NAMESTR("set_sieve_buf_size"), (PyCFunction)__pyx_pw_4h5py_3h5p_8PropFAID_25set_sieve_buf_size, METH_O, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5p_8PropFAID_24set_sieve_buf_size)},
+  {__Pyx_NAMESTR("get_sieve_buf_size"), (PyCFunction)__pyx_pw_4h5py_3h5p_8PropFAID_27get_sieve_buf_size, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5p_8PropFAID_26get_sieve_buf_size)},
+  {__Pyx_NAMESTR("set_libver_bounds"), (PyCFunction)__pyx_pw_4h5py_3h5p_8PropFAID_29set_libver_bounds, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5p_8PropFAID_28set_libver_bounds)},
+  {__Pyx_NAMESTR("get_libver_bounds"), (PyCFunction)__pyx_pw_4h5py_3h5p_8PropFAID_31get_libver_bounds, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5p_8PropFAID_30get_libver_bounds)},
+  {__Pyx_NAMESTR("get_mdc_config"), (PyCFunction)__pyx_pw_4h5py_3h5p_8PropFAID_33get_mdc_config, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5p_8PropFAID_32get_mdc_config)},
+  {__Pyx_NAMESTR("set_mdc_config"), (PyCFunction)__pyx_pw_4h5py_3h5p_8PropFAID_35set_mdc_config, METH_O, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5p_8PropFAID_34set_mdc_config)},
+  {0, 0, 0, 0}
+};
+
+static PyNumberMethods __pyx_tp_as_number_PropFAID = {
+  0, /*nb_add*/
+  0, /*nb_subtract*/
+  0, /*nb_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_divide*/
+  #endif
+  0, /*nb_remainder*/
+  0, /*nb_divmod*/
+  0, /*nb_power*/
+  0, /*nb_negative*/
+  0, /*nb_positive*/
+  0, /*nb_absolute*/
+  0, /*nb_nonzero*/
+  0, /*nb_invert*/
+  0, /*nb_lshift*/
+  0, /*nb_rshift*/
+  0, /*nb_and*/
+  0, /*nb_xor*/
+  0, /*nb_or*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_coerce*/
+  #endif
+  0, /*nb_int*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_long*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*nb_float*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_oct*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_hex*/
+  #endif
+  0, /*nb_inplace_add*/
+  0, /*nb_inplace_subtract*/
+  0, /*nb_inplace_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_inplace_divide*/
+  #endif
+  0, /*nb_inplace_remainder*/
+  0, /*nb_inplace_power*/
+  0, /*nb_inplace_lshift*/
+  0, /*nb_inplace_rshift*/
+  0, /*nb_inplace_and*/
+  0, /*nb_inplace_xor*/
+  0, /*nb_inplace_or*/
+  0, /*nb_floor_divide*/
+  0, /*nb_true_divide*/
+  0, /*nb_inplace_floor_divide*/
+  0, /*nb_inplace_true_divide*/
+  #if PY_VERSION_HEX >= 0x02050000
+  0, /*nb_index*/
+  #endif
+};
+
+static PySequenceMethods __pyx_tp_as_sequence_PropFAID = {
+  0, /*sq_length*/
+  0, /*sq_concat*/
+  0, /*sq_repeat*/
+  0, /*sq_item*/
+  0, /*sq_slice*/
+  0, /*sq_ass_item*/
+  0, /*sq_ass_slice*/
+  0, /*sq_contains*/
+  0, /*sq_inplace_concat*/
+  0, /*sq_inplace_repeat*/
+};
+
+static PyMappingMethods __pyx_tp_as_mapping_PropFAID = {
+  0, /*mp_length*/
+  0, /*mp_subscript*/
+  0, /*mp_ass_subscript*/
+};
+
+static PyBufferProcs __pyx_tp_as_buffer_PropFAID = {
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getreadbuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getwritebuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getsegcount*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getcharbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_getbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_releasebuffer*/
+  #endif
+};
+
+static PyTypeObject __pyx_type_4h5py_3h5p_PropFAID = {
+  PyVarObject_HEAD_INIT(0, 0)
+  __Pyx_NAMESTR("h5py.h5p.PropFAID"), /*tp_name*/
+  sizeof(struct __pyx_obj_4h5py_3h5p_PropFAID), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_4h5py_3h5p_PropID, /*tp_dealloc*/
+  0, /*tp_print*/
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*tp_repr*/
+  &__pyx_tp_as_number_PropFAID, /*tp_as_number*/
+  &__pyx_tp_as_sequence_PropFAID, /*tp_as_sequence*/
+  &__pyx_tp_as_mapping_PropFAID, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  &__pyx_tp_as_buffer_PropFAID, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+  __Pyx_DOCSTR("\n        File access property list\n    "), /*tp_doc*/
+  __pyx_tp_traverse_4h5py_3h5p_PropID, /*tp_traverse*/
+  __pyx_tp_clear_4h5py_3h5p_PropID, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_4h5py_3h5p_PropFAID, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  0, /*tp_dictoffset*/
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_4h5py_3h5p_PropFAID, /*tp_new*/
+  0, /*tp_free*/
+  0, /*tp_is_gc*/
+  0, /*tp_bases*/
+  0, /*tp_mro*/
+  0, /*tp_cache*/
+  0, /*tp_subclasses*/
+  0, /*tp_weaklist*/
+  0, /*tp_del*/
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*tp_version_tag*/
+  #endif
+};
+
+static PyObject *__pyx_tp_new_4h5py_3h5p_PropDXID(PyTypeObject *t, PyObject *a, PyObject *k) {
+  PyObject *o = __pyx_tp_new_4h5py_3h5p_PropID(t, a, k);
+  if (!o) return 0;
+  return o;
+}
+
+static PyMethodDef __pyx_methods_4h5py_3h5p_PropDXID[] = {
+  {0, 0, 0, 0}
+};
+
+static PyNumberMethods __pyx_tp_as_number_PropDXID = {
+  0, /*nb_add*/
+  0, /*nb_subtract*/
+  0, /*nb_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_divide*/
+  #endif
+  0, /*nb_remainder*/
+  0, /*nb_divmod*/
+  0, /*nb_power*/
+  0, /*nb_negative*/
+  0, /*nb_positive*/
+  0, /*nb_absolute*/
+  0, /*nb_nonzero*/
+  0, /*nb_invert*/
+  0, /*nb_lshift*/
+  0, /*nb_rshift*/
+  0, /*nb_and*/
+  0, /*nb_xor*/
+  0, /*nb_or*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_coerce*/
+  #endif
+  0, /*nb_int*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_long*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*nb_float*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_oct*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_hex*/
+  #endif
+  0, /*nb_inplace_add*/
+  0, /*nb_inplace_subtract*/
+  0, /*nb_inplace_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_inplace_divide*/
+  #endif
+  0, /*nb_inplace_remainder*/
+  0, /*nb_inplace_power*/
+  0, /*nb_inplace_lshift*/
+  0, /*nb_inplace_rshift*/
+  0, /*nb_inplace_and*/
+  0, /*nb_inplace_xor*/
+  0, /*nb_inplace_or*/
+  0, /*nb_floor_divide*/
+  0, /*nb_true_divide*/
+  0, /*nb_inplace_floor_divide*/
+  0, /*nb_inplace_true_divide*/
+  #if PY_VERSION_HEX >= 0x02050000
+  0, /*nb_index*/
+  #endif
+};
+
+static PySequenceMethods __pyx_tp_as_sequence_PropDXID = {
+  0, /*sq_length*/
+  0, /*sq_concat*/
+  0, /*sq_repeat*/
+  0, /*sq_item*/
+  0, /*sq_slice*/
+  0, /*sq_ass_item*/
+  0, /*sq_ass_slice*/
+  0, /*sq_contains*/
+  0, /*sq_inplace_concat*/
+  0, /*sq_inplace_repeat*/
+};
+
+static PyMappingMethods __pyx_tp_as_mapping_PropDXID = {
+  0, /*mp_length*/
+  0, /*mp_subscript*/
+  0, /*mp_ass_subscript*/
+};
+
+static PyBufferProcs __pyx_tp_as_buffer_PropDXID = {
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getreadbuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getwritebuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getsegcount*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getcharbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_getbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_releasebuffer*/
+  #endif
+};
+
+static PyTypeObject __pyx_type_4h5py_3h5p_PropDXID = {
+  PyVarObject_HEAD_INIT(0, 0)
+  __Pyx_NAMESTR("h5py.h5p.PropDXID"), /*tp_name*/
+  sizeof(struct __pyx_obj_4h5py_3h5p_PropDXID), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_4h5py_3h5p_PropID, /*tp_dealloc*/
+  0, /*tp_print*/
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*tp_repr*/
+  &__pyx_tp_as_number_PropDXID, /*tp_as_number*/
+  &__pyx_tp_as_sequence_PropDXID, /*tp_as_sequence*/
+  &__pyx_tp_as_mapping_PropDXID, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  &__pyx_tp_as_buffer_PropDXID, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+  __Pyx_DOCSTR(" Dataset transfer property list "), /*tp_doc*/
+  __pyx_tp_traverse_4h5py_3h5p_PropID, /*tp_traverse*/
+  __pyx_tp_clear_4h5py_3h5p_PropID, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_4h5py_3h5p_PropDXID, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  0, /*tp_dictoffset*/
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_4h5py_3h5p_PropDXID, /*tp_new*/
+  0, /*tp_free*/
+  0, /*tp_is_gc*/
+  0, /*tp_bases*/
+  0, /*tp_mro*/
+  0, /*tp_cache*/
+  0, /*tp_subclasses*/
+  0, /*tp_weaklist*/
+  0, /*tp_del*/
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*tp_version_tag*/
+  #endif
+};
+
+static PyObject *__pyx_tp_new_4h5py_3h5p_PropLCID(PyTypeObject *t, PyObject *a, PyObject *k) {
+  PyObject *o = __pyx_tp_new_4h5py_3h5p_PropID(t, a, k);
+  if (!o) return 0;
+  return o;
+}
+
+static PyMethodDef __pyx_methods_4h5py_3h5p_PropLCID[] = {
+  {__Pyx_NAMESTR("set_char_encoding"), (PyCFunction)__pyx_pw_4h5py_3h5p_8PropLCID_1set_char_encoding, METH_O, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5p_8PropLCID_set_char_encoding)},
+  {__Pyx_NAMESTR("get_char_encoding"), (PyCFunction)__pyx_pw_4h5py_3h5p_8PropLCID_3get_char_encoding, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5p_8PropLCID_2get_char_encoding)},
+  {__Pyx_NAMESTR("set_create_intermediate_group"), (PyCFunction)__pyx_pw_4h5py_3h5p_8PropLCID_5set_create_intermediate_group, METH_O, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5p_8PropLCID_4set_create_intermediate_group)},
+  {__Pyx_NAMESTR("get_create_intermediate_group"), (PyCFunction)__pyx_pw_4h5py_3h5p_8PropLCID_7get_create_intermediate_group, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5p_8PropLCID_6get_create_intermediate_group)},
+  {0, 0, 0, 0}
+};
+
+static PyNumberMethods __pyx_tp_as_number_PropLCID = {
+  0, /*nb_add*/
+  0, /*nb_subtract*/
+  0, /*nb_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_divide*/
+  #endif
+  0, /*nb_remainder*/
+  0, /*nb_divmod*/
+  0, /*nb_power*/
+  0, /*nb_negative*/
+  0, /*nb_positive*/
+  0, /*nb_absolute*/
+  0, /*nb_nonzero*/
+  0, /*nb_invert*/
+  0, /*nb_lshift*/
+  0, /*nb_rshift*/
+  0, /*nb_and*/
+  0, /*nb_xor*/
+  0, /*nb_or*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_coerce*/
+  #endif
+  0, /*nb_int*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_long*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*nb_float*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_oct*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_hex*/
+  #endif
+  0, /*nb_inplace_add*/
+  0, /*nb_inplace_subtract*/
+  0, /*nb_inplace_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_inplace_divide*/
+  #endif
+  0, /*nb_inplace_remainder*/
+  0, /*nb_inplace_power*/
+  0, /*nb_inplace_lshift*/
+  0, /*nb_inplace_rshift*/
+  0, /*nb_inplace_and*/
+  0, /*nb_inplace_xor*/
+  0, /*nb_inplace_or*/
+  0, /*nb_floor_divide*/
+  0, /*nb_true_divide*/
+  0, /*nb_inplace_floor_divide*/
+  0, /*nb_inplace_true_divide*/
+  #if PY_VERSION_HEX >= 0x02050000
+  0, /*nb_index*/
+  #endif
+};
+
+static PySequenceMethods __pyx_tp_as_sequence_PropLCID = {
+  0, /*sq_length*/
+  0, /*sq_concat*/
+  0, /*sq_repeat*/
+  0, /*sq_item*/
+  0, /*sq_slice*/
+  0, /*sq_ass_item*/
+  0, /*sq_ass_slice*/
+  0, /*sq_contains*/
+  0, /*sq_inplace_concat*/
+  0, /*sq_inplace_repeat*/
+};
+
+static PyMappingMethods __pyx_tp_as_mapping_PropLCID = {
+  0, /*mp_length*/
+  0, /*mp_subscript*/
+  0, /*mp_ass_subscript*/
+};
+
+static PyBufferProcs __pyx_tp_as_buffer_PropLCID = {
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getreadbuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getwritebuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getsegcount*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getcharbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_getbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_releasebuffer*/
+  #endif
+};
+
+static PyTypeObject __pyx_type_4h5py_3h5p_PropLCID = {
+  PyVarObject_HEAD_INIT(0, 0)
+  __Pyx_NAMESTR("h5py.h5p.PropLCID"), /*tp_name*/
+  sizeof(struct __pyx_obj_4h5py_3h5p_PropLCID), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_4h5py_3h5p_PropID, /*tp_dealloc*/
+  0, /*tp_print*/
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*tp_repr*/
+  &__pyx_tp_as_number_PropLCID, /*tp_as_number*/
+  &__pyx_tp_as_sequence_PropLCID, /*tp_as_sequence*/
+  &__pyx_tp_as_mapping_PropLCID, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  &__pyx_tp_as_buffer_PropLCID, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+  __Pyx_DOCSTR(" Link creation property list "), /*tp_doc*/
+  __pyx_tp_traverse_4h5py_3h5p_PropID, /*tp_traverse*/
+  __pyx_tp_clear_4h5py_3h5p_PropID, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_4h5py_3h5p_PropLCID, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  0, /*tp_dictoffset*/
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_4h5py_3h5p_PropLCID, /*tp_new*/
+  0, /*tp_free*/
+  0, /*tp_is_gc*/
+  0, /*tp_bases*/
+  0, /*tp_mro*/
+  0, /*tp_cache*/
+  0, /*tp_subclasses*/
+  0, /*tp_weaklist*/
+  0, /*tp_del*/
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*tp_version_tag*/
+  #endif
+};
+
+static PyObject *__pyx_tp_new_4h5py_3h5p_PropLAID(PyTypeObject *t, PyObject *a, PyObject *k) {
+  PyObject *o = __pyx_tp_new_4h5py_3h5p_PropID(t, a, k);
+  if (!o) return 0;
+  if (__pyx_pw_4h5py_3h5p_8PropLAID_1__cinit__(o, a, k) < 0) {
+    Py_DECREF(o); o = 0;
+  }
+  return o;
+}
+
+static void __pyx_tp_dealloc_4h5py_3h5p_PropLAID(PyObject *o) {
+  PyObject_GC_UnTrack(o);
+  {
+    PyObject *etype, *eval, *etb;
+    PyErr_Fetch(&etype, &eval, &etb);
+    ++Py_REFCNT(o);
+    __pyx_pw_4h5py_3h5p_8PropLAID_3__dealloc__(o);
+    if (PyErr_Occurred()) PyErr_WriteUnraisable(o);
+    --Py_REFCNT(o);
+    PyErr_Restore(etype, eval, etb);
+  }
+  PyObject_GC_Track(o);
+  __pyx_tp_dealloc_4h5py_3h5p_PropID(o);
+}
+
+static PyMethodDef __pyx_methods_4h5py_3h5p_PropLAID[] = {
+  {__Pyx_NAMESTR("set_nlinks"), (PyCFunction)__pyx_pw_4h5py_3h5p_8PropLAID_5set_nlinks, METH_O, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5p_8PropLAID_4set_nlinks)},
+  {__Pyx_NAMESTR("get_nlinks"), (PyCFunction)__pyx_pw_4h5py_3h5p_8PropLAID_7get_nlinks, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5p_8PropLAID_6get_nlinks)},
+  {__Pyx_NAMESTR("set_elink_prefix"), (PyCFunction)__pyx_pw_4h5py_3h5p_8PropLAID_9set_elink_prefix, METH_O, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5p_8PropLAID_8set_elink_prefix)},
+  {__Pyx_NAMESTR("get_elink_prefix"), (PyCFunction)__pyx_pw_4h5py_3h5p_8PropLAID_11get_elink_prefix, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5p_8PropLAID_10get_elink_prefix)},
+  {__Pyx_NAMESTR("set_elink_fapl"), (PyCFunction)__pyx_pw_4h5py_3h5p_8PropLAID_13set_elink_fapl, METH_O, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5p_8PropLAID_12set_elink_fapl)},
+  {__Pyx_NAMESTR("get_elink_fapl"), (PyCFunction)__pyx_pw_4h5py_3h5p_8PropLAID_15get_elink_fapl, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5p_8PropLAID_14get_elink_fapl)},
+  {0, 0, 0, 0}
+};
+
+static PyNumberMethods __pyx_tp_as_number_PropLAID = {
+  0, /*nb_add*/
+  0, /*nb_subtract*/
+  0, /*nb_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_divide*/
+  #endif
+  0, /*nb_remainder*/
+  0, /*nb_divmod*/
+  0, /*nb_power*/
+  0, /*nb_negative*/
+  0, /*nb_positive*/
+  0, /*nb_absolute*/
+  0, /*nb_nonzero*/
+  0, /*nb_invert*/
+  0, /*nb_lshift*/
+  0, /*nb_rshift*/
+  0, /*nb_and*/
+  0, /*nb_xor*/
+  0, /*nb_or*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_coerce*/
+  #endif
+  0, /*nb_int*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_long*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*nb_float*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_oct*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_hex*/
+  #endif
+  0, /*nb_inplace_add*/
+  0, /*nb_inplace_subtract*/
+  0, /*nb_inplace_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_inplace_divide*/
+  #endif
+  0, /*nb_inplace_remainder*/
+  0, /*nb_inplace_power*/
+  0, /*nb_inplace_lshift*/
+  0, /*nb_inplace_rshift*/
+  0, /*nb_inplace_and*/
+  0, /*nb_inplace_xor*/
+  0, /*nb_inplace_or*/
+  0, /*nb_floor_divide*/
+  0, /*nb_true_divide*/
+  0, /*nb_inplace_floor_divide*/
+  0, /*nb_inplace_true_divide*/
+  #if PY_VERSION_HEX >= 0x02050000
+  0, /*nb_index*/
+  #endif
+};
+
+static PySequenceMethods __pyx_tp_as_sequence_PropLAID = {
+  0, /*sq_length*/
+  0, /*sq_concat*/
+  0, /*sq_repeat*/
+  0, /*sq_item*/
+  0, /*sq_slice*/
+  0, /*sq_ass_item*/
+  0, /*sq_ass_slice*/
+  0, /*sq_contains*/
+  0, /*sq_inplace_concat*/
+  0, /*sq_inplace_repeat*/
+};
+
+static PyMappingMethods __pyx_tp_as_mapping_PropLAID = {
+  0, /*mp_length*/
+  0, /*mp_subscript*/
+  0, /*mp_ass_subscript*/
+};
+
+static PyBufferProcs __pyx_tp_as_buffer_PropLAID = {
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getreadbuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getwritebuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getsegcount*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getcharbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_getbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_releasebuffer*/
+  #endif
+};
+
+static PyTypeObject __pyx_type_4h5py_3h5p_PropLAID = {
+  PyVarObject_HEAD_INIT(0, 0)
+  __Pyx_NAMESTR("h5py.h5p.PropLAID"), /*tp_name*/
+  sizeof(struct __pyx_obj_4h5py_3h5p_PropLAID), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_4h5py_3h5p_PropLAID, /*tp_dealloc*/
+  0, /*tp_print*/
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*tp_repr*/
+  &__pyx_tp_as_number_PropLAID, /*tp_as_number*/
+  &__pyx_tp_as_sequence_PropLAID, /*tp_as_sequence*/
+  &__pyx_tp_as_mapping_PropLAID, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  &__pyx_tp_as_buffer_PropLAID, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+  __Pyx_DOCSTR(" Link access property list "), /*tp_doc*/
+  __pyx_tp_traverse_4h5py_3h5p_PropID, /*tp_traverse*/
+  __pyx_tp_clear_4h5py_3h5p_PropID, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_4h5py_3h5p_PropLAID, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  0, /*tp_dictoffset*/
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_4h5py_3h5p_PropLAID, /*tp_new*/
+  0, /*tp_free*/
+  0, /*tp_is_gc*/
+  0, /*tp_bases*/
+  0, /*tp_mro*/
+  0, /*tp_cache*/
+  0, /*tp_subclasses*/
+  0, /*tp_weaklist*/
+  0, /*tp_del*/
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*tp_version_tag*/
+  #endif
+};
+
+static PyObject *__pyx_tp_new_4h5py_3h5p_PropGCID(PyTypeObject *t, PyObject *a, PyObject *k) {
+  PyObject *o = __pyx_tp_new_4h5py_3h5p_PropID(t, a, k);
+  if (!o) return 0;
+  return o;
+}
+
+static PyMethodDef __pyx_methods_4h5py_3h5p_PropGCID[] = {
+  {__Pyx_NAMESTR("set_link_creation_order"), (PyCFunction)__pyx_pw_4h5py_3h5p_8PropGCID_1set_link_creation_order, METH_O, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5p_8PropGCID_set_link_creation_order)},
+  {__Pyx_NAMESTR("get_link_creation_order"), (PyCFunction)__pyx_pw_4h5py_3h5p_8PropGCID_3get_link_creation_order, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5p_8PropGCID_2get_link_creation_order)},
+  {0, 0, 0, 0}
+};
+
+static PyNumberMethods __pyx_tp_as_number_PropGCID = {
+  0, /*nb_add*/
+  0, /*nb_subtract*/
+  0, /*nb_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_divide*/
+  #endif
+  0, /*nb_remainder*/
+  0, /*nb_divmod*/
+  0, /*nb_power*/
+  0, /*nb_negative*/
+  0, /*nb_positive*/
+  0, /*nb_absolute*/
+  0, /*nb_nonzero*/
+  0, /*nb_invert*/
+  0, /*nb_lshift*/
+  0, /*nb_rshift*/
+  0, /*nb_and*/
+  0, /*nb_xor*/
+  0, /*nb_or*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_coerce*/
+  #endif
+  0, /*nb_int*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_long*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*nb_float*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_oct*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_hex*/
+  #endif
+  0, /*nb_inplace_add*/
+  0, /*nb_inplace_subtract*/
+  0, /*nb_inplace_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_inplace_divide*/
+  #endif
+  0, /*nb_inplace_remainder*/
+  0, /*nb_inplace_power*/
+  0, /*nb_inplace_lshift*/
+  0, /*nb_inplace_rshift*/
+  0, /*nb_inplace_and*/
+  0, /*nb_inplace_xor*/
+  0, /*nb_inplace_or*/
+  0, /*nb_floor_divide*/
+  0, /*nb_true_divide*/
+  0, /*nb_inplace_floor_divide*/
+  0, /*nb_inplace_true_divide*/
+  #if PY_VERSION_HEX >= 0x02050000
+  0, /*nb_index*/
+  #endif
+};
+
+static PySequenceMethods __pyx_tp_as_sequence_PropGCID = {
+  0, /*sq_length*/
+  0, /*sq_concat*/
+  0, /*sq_repeat*/
+  0, /*sq_item*/
+  0, /*sq_slice*/
+  0, /*sq_ass_item*/
+  0, /*sq_ass_slice*/
+  0, /*sq_contains*/
+  0, /*sq_inplace_concat*/
+  0, /*sq_inplace_repeat*/
+};
+
+static PyMappingMethods __pyx_tp_as_mapping_PropGCID = {
+  0, /*mp_length*/
+  0, /*mp_subscript*/
+  0, /*mp_ass_subscript*/
+};
+
+static PyBufferProcs __pyx_tp_as_buffer_PropGCID = {
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getreadbuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getwritebuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getsegcount*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getcharbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_getbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_releasebuffer*/
+  #endif
+};
+
+static PyTypeObject __pyx_type_4h5py_3h5p_PropGCID = {
+  PyVarObject_HEAD_INIT(0, 0)
+  __Pyx_NAMESTR("h5py.h5p.PropGCID"), /*tp_name*/
+  sizeof(struct __pyx_obj_4h5py_3h5p_PropGCID), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_4h5py_3h5p_PropID, /*tp_dealloc*/
+  0, /*tp_print*/
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*tp_repr*/
+  &__pyx_tp_as_number_PropGCID, /*tp_as_number*/
+  &__pyx_tp_as_sequence_PropGCID, /*tp_as_sequence*/
+  &__pyx_tp_as_mapping_PropGCID, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  &__pyx_tp_as_buffer_PropGCID, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+  __Pyx_DOCSTR(" Group creation property list "), /*tp_doc*/
+  __pyx_tp_traverse_4h5py_3h5p_PropID, /*tp_traverse*/
+  __pyx_tp_clear_4h5py_3h5p_PropID, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_4h5py_3h5p_PropGCID, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  0, /*tp_dictoffset*/
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_4h5py_3h5p_PropGCID, /*tp_new*/
+  0, /*tp_free*/
+  0, /*tp_is_gc*/
+  0, /*tp_bases*/
+  0, /*tp_mro*/
+  0, /*tp_cache*/
+  0, /*tp_subclasses*/
+  0, /*tp_weaklist*/
+  0, /*tp_del*/
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*tp_version_tag*/
+  #endif
+};
+
+static PyObject *__pyx_tp_new_4h5py_3h5p_PropDAID(PyTypeObject *t, PyObject *a, PyObject *k) {
+  PyObject *o = __pyx_tp_new_4h5py_3h5p_PropID(t, a, k);
+  if (!o) return 0;
+  return o;
+}
+
+static PyMethodDef __pyx_methods_4h5py_3h5p_PropDAID[] = {
+  {__Pyx_NAMESTR("set_chunk_cache"), (PyCFunction)__pyx_pw_4h5py_3h5p_8PropDAID_1set_chunk_cache, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5p_8PropDAID_set_chunk_cache)},
+  {__Pyx_NAMESTR("get_chunk_cache"), (PyCFunction)__pyx_pw_4h5py_3h5p_8PropDAID_3get_chunk_cache, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5p_8PropDAID_2get_chunk_cache)},
+  {0, 0, 0, 0}
+};
+
+static PyNumberMethods __pyx_tp_as_number_PropDAID = {
+  0, /*nb_add*/
+  0, /*nb_subtract*/
+  0, /*nb_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_divide*/
+  #endif
+  0, /*nb_remainder*/
+  0, /*nb_divmod*/
+  0, /*nb_power*/
+  0, /*nb_negative*/
+  0, /*nb_positive*/
+  0, /*nb_absolute*/
+  0, /*nb_nonzero*/
+  0, /*nb_invert*/
+  0, /*nb_lshift*/
+  0, /*nb_rshift*/
+  0, /*nb_and*/
+  0, /*nb_xor*/
+  0, /*nb_or*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_coerce*/
+  #endif
+  0, /*nb_int*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_long*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*nb_float*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_oct*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_hex*/
+  #endif
+  0, /*nb_inplace_add*/
+  0, /*nb_inplace_subtract*/
+  0, /*nb_inplace_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_inplace_divide*/
+  #endif
+  0, /*nb_inplace_remainder*/
+  0, /*nb_inplace_power*/
+  0, /*nb_inplace_lshift*/
+  0, /*nb_inplace_rshift*/
+  0, /*nb_inplace_and*/
+  0, /*nb_inplace_xor*/
+  0, /*nb_inplace_or*/
+  0, /*nb_floor_divide*/
+  0, /*nb_true_divide*/
+  0, /*nb_inplace_floor_divide*/
+  0, /*nb_inplace_true_divide*/
+  #if PY_VERSION_HEX >= 0x02050000
+  0, /*nb_index*/
+  #endif
+};
+
+static PySequenceMethods __pyx_tp_as_sequence_PropDAID = {
+  0, /*sq_length*/
+  0, /*sq_concat*/
+  0, /*sq_repeat*/
+  0, /*sq_item*/
+  0, /*sq_slice*/
+  0, /*sq_ass_item*/
+  0, /*sq_ass_slice*/
+  0, /*sq_contains*/
+  0, /*sq_inplace_concat*/
+  0, /*sq_inplace_repeat*/
+};
+
+static PyMappingMethods __pyx_tp_as_mapping_PropDAID = {
+  0, /*mp_length*/
+  0, /*mp_subscript*/
+  0, /*mp_ass_subscript*/
+};
+
+static PyBufferProcs __pyx_tp_as_buffer_PropDAID = {
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getreadbuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getwritebuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getsegcount*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getcharbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_getbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_releasebuffer*/
+  #endif
+};
+
+static PyTypeObject __pyx_type_4h5py_3h5p_PropDAID = {
+  PyVarObject_HEAD_INIT(0, 0)
+  __Pyx_NAMESTR("h5py.h5p.PropDAID"), /*tp_name*/
+  sizeof(struct __pyx_obj_4h5py_3h5p_PropDAID), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_4h5py_3h5p_PropID, /*tp_dealloc*/
+  0, /*tp_print*/
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*tp_repr*/
+  &__pyx_tp_as_number_PropDAID, /*tp_as_number*/
+  &__pyx_tp_as_sequence_PropDAID, /*tp_as_sequence*/
+  &__pyx_tp_as_mapping_PropDAID, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  &__pyx_tp_as_buffer_PropDAID, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+  __Pyx_DOCSTR(" Dataset access property list "), /*tp_doc*/
+  __pyx_tp_traverse_4h5py_3h5p_PropID, /*tp_traverse*/
+  __pyx_tp_clear_4h5py_3h5p_PropID, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_4h5py_3h5p_PropDAID, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  0, /*tp_dictoffset*/
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_4h5py_3h5p_PropDAID, /*tp_new*/
+  0, /*tp_free*/
+  0, /*tp_is_gc*/
+  0, /*tp_bases*/
+  0, /*tp_mro*/
+  0, /*tp_cache*/
+  0, /*tp_subclasses*/
+  0, /*tp_weaklist*/
+  0, /*tp_del*/
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*tp_version_tag*/
+  #endif
+};
+
+static PyMethodDef __pyx_methods[] = {
+  {0, 0, 0, 0}
+};
+
+#if PY_MAJOR_VERSION >= 3
+static struct PyModuleDef __pyx_moduledef = {
+  #if PY_VERSION_HEX < 0x03020000
+    { PyObject_HEAD_INIT(NULL) NULL, 0, NULL },
+  #else
+    PyModuleDef_HEAD_INIT,
+  #endif
+    __Pyx_NAMESTR("h5p"),
+    __Pyx_DOCSTR(__pyx_k_10), /* m_doc */
+    -1, /* m_size */
+    __pyx_methods /* m_methods */,
+    NULL, /* m_reload */
+    NULL, /* m_traverse */
+    NULL, /* m_clear */
+    NULL /* m_free */
+};
+#endif
+
+static __Pyx_StringTabEntry __pyx_string_tab[] = {
+  {&__pyx_kp_s_1, __pyx_k_1, sizeof(__pyx_k_1), 0, 0, 1, 0},
+  {&__pyx_kp_s_13, __pyx_k_13, sizeof(__pyx_k_13), 0, 0, 1, 0},
+  {&__pyx_n_s_14, __pyx_k_14, sizeof(__pyx_k_14), 0, 0, 1, 1},
+  {&__pyx_kp_s_2, __pyx_k_2, sizeof(__pyx_k_2), 0, 0, 1, 0},
+  {&__pyx_kp_s_5, __pyx_k_5, sizeof(__pyx_k_5), 0, 0, 1, 0},
+  {&__pyx_kp_s_7, __pyx_k_7, sizeof(__pyx_k_7), 0, 0, 1, 0},
+  {&__pyx_n_s__CRT_ORDER_INDEXED, __pyx_k__CRT_ORDER_INDEXED, sizeof(__pyx_k__CRT_ORDER_INDEXED), 0, 0, 1, 1},
+  {&__pyx_n_s__CRT_ORDER_TRACKED, __pyx_k__CRT_ORDER_TRACKED, sizeof(__pyx_k__CRT_ORDER_TRACKED), 0, 0, 1, 1},
+  {&__pyx_n_s__DATASET_ACCESS, __pyx_k__DATASET_ACCESS, sizeof(__pyx_k__DATASET_ACCESS), 0, 0, 1, 1},
+  {&__pyx_n_s__DATASET_CREATE, __pyx_k__DATASET_CREATE, sizeof(__pyx_k__DATASET_CREATE), 0, 0, 1, 1},
+  {&__pyx_n_s__DATASET_XFER, __pyx_k__DATASET_XFER, sizeof(__pyx_k__DATASET_XFER), 0, 0, 1, 1},
+  {&__pyx_n_s__DEFAULT, __pyx_k__DEFAULT, sizeof(__pyx_k__DEFAULT), 0, 0, 1, 1},
+  {&__pyx_n_s__FILE_ACCESS, __pyx_k__FILE_ACCESS, sizeof(__pyx_k__FILE_ACCESS), 0, 0, 1, 1},
+  {&__pyx_n_s__FILE_CREATE, __pyx_k__FILE_CREATE, sizeof(__pyx_k__FILE_CREATE), 0, 0, 1, 1},
+  {&__pyx_n_s__GROUP_CREATE, __pyx_k__GROUP_CREATE, sizeof(__pyx_k__GROUP_CREATE), 0, 0, 1, 1},
+  {&__pyx_n_s__LINK_ACCESS, __pyx_k__LINK_ACCESS, sizeof(__pyx_k__LINK_ACCESS), 0, 0, 1, 1},
+  {&__pyx_n_s__LINK_CREATE, __pyx_k__LINK_CREATE, sizeof(__pyx_k__LINK_CREATE), 0, 0, 1, 1},
+  {&__pyx_n_s__NO_CLASS, __pyx_k__NO_CLASS, sizeof(__pyx_k__NO_CLASS), 0, 0, 1, 1},
+  {&__pyx_n_s__NotImplemented, __pyx_k__NotImplemented, sizeof(__pyx_k__NotImplemented), 0, 0, 1, 1},
+  {&__pyx_n_s__OBJECT_COPY, __pyx_k__OBJECT_COPY, sizeof(__pyx_k__OBJECT_COPY), 0, 0, 1, 1},
+  {&__pyx_n_s__OBJECT_CREATE, __pyx_k__OBJECT_CREATE, sizeof(__pyx_k__OBJECT_CREATE), 0, 0, 1, 1},
+  {&__pyx_n_s__RuntimeError, __pyx_k__RuntimeError, sizeof(__pyx_k__RuntimeError), 0, 0, 1, 1},
+  {&__pyx_n_s__TypeError, __pyx_k__TypeError, sizeof(__pyx_k__TypeError), 0, 0, 1, 1},
+  {&__pyx_n_s__ValueError, __pyx_k__ValueError, sizeof(__pyx_k__ValueError), 0, 0, 1, 1},
+  {&__pyx_n_s____enter__, __pyx_k____enter__, sizeof(__pyx_k____enter__), 0, 0, 1, 1},
+  {&__pyx_n_s____exit__, __pyx_k____exit__, sizeof(__pyx_k____exit__), 0, 0, 1, 1},
+  {&__pyx_n_s____main__, __pyx_k____main__, sizeof(__pyx_k____main__), 0, 0, 1, 1},
+  {&__pyx_n_s____richcmp__, __pyx_k____richcmp__, sizeof(__pyx_k____richcmp__), 0, 0, 1, 1},
+  {&__pyx_n_s____test__, __pyx_k____test__, sizeof(__pyx_k____test__), 0, 0, 1, 1},
+  {&__pyx_n_s___has_filter, __pyx_k___has_filter, sizeof(__pyx_k___has_filter), 0, 0, 1, 1},
+  {&__pyx_n_s___objects, __pyx_k___objects, sizeof(__pyx_k___objects), 0, 0, 1, 1},
+  {&__pyx_n_s__addr, __pyx_k__addr, sizeof(__pyx_k__addr), 0, 0, 1, 1},
+  {&__pyx_n_s__backing_store, __pyx_k__backing_store, sizeof(__pyx_k__backing_store), 0, 0, 1, 1},
+  {&__pyx_n_s__block_size, __pyx_k__block_size, sizeof(__pyx_k__block_size), 0, 0, 1, 1},
+  {&__pyx_n_s__buf_size, __pyx_k__buf_size, sizeof(__pyx_k__buf_size), 0, 0, 1, 1},
+  {&__pyx_n_s__cls, __pyx_k__cls, sizeof(__pyx_k__cls), 0, 0, 1, 1},
+  {&__pyx_n_s__create, __pyx_k__create, sizeof(__pyx_k__create), 0, 0, 1, 1},
+  {&__pyx_n_s__dtype, __pyx_k__dtype, sizeof(__pyx_k__dtype), 0, 0, 1, 1},
+  {&__pyx_n_s__equal, __pyx_k__equal, sizeof(__pyx_k__equal), 0, 0, 1, 1},
+  {&__pyx_n_s__filter_code, __pyx_k__filter_code, sizeof(__pyx_k__filter_code), 0, 0, 1, 1},
+  {&__pyx_n_s__flags, __pyx_k__flags, sizeof(__pyx_k__flags), 0, 0, 1, 1},
+  {&__pyx_n_s__get_filter, __pyx_k__get_filter, sizeof(__pyx_k__get_filter), 0, 0, 1, 1},
+  {&__pyx_n_s__get_nfilters, __pyx_k__get_nfilters, sizeof(__pyx_k__get_nfilters), 0, 0, 1, 1},
+  {&__pyx_n_s__h5py, __pyx_k__h5py, sizeof(__pyx_k__h5py), 0, 0, 1, 1},
+  {&__pyx_n_s__high, __pyx_k__high, sizeof(__pyx_k__high), 0, 0, 1, 1},
+  {&__pyx_n_s__level, __pyx_k__level, sizeof(__pyx_k__level), 0, 0, 1, 1},
+  {&__pyx_n_s__lock, __pyx_k__lock, sizeof(__pyx_k__lock), 0, 0, 1, 1},
+  {&__pyx_n_s__logfile, __pyx_k__logfile, sizeof(__pyx_k__logfile), 0, 0, 1, 1},
+  {&__pyx_n_s__low, __pyx_k__low, sizeof(__pyx_k__low), 0, 0, 1, 1},
+  {&__pyx_n_s__mdc, __pyx_k__mdc, sizeof(__pyx_k__mdc), 0, 0, 1, 1},
+  {&__pyx_n_s__memb_fapl, __pyx_k__memb_fapl, sizeof(__pyx_k__memb_fapl), 0, 0, 1, 1},
+  {&__pyx_n_s__memb_size, __pyx_k__memb_size, sizeof(__pyx_k__memb_size), 0, 0, 1, 1},
+  {&__pyx_n_s__newid, __pyx_k__newid, sizeof(__pyx_k__newid), 0, 0, 1, 1},
+  {&__pyx_n_s__open, __pyx_k__open, sizeof(__pyx_k__open), 0, 0, 1, 1},
+  {&__pyx_n_s__options, __pyx_k__options, sizeof(__pyx_k__options), 0, 0, 1, 1},
+  {&__pyx_n_s__pixels_per_block, __pyx_k__pixels_per_block, sizeof(__pyx_k__pixels_per_block), 0, 0, 1, 1},
+  {&__pyx_n_s__rdcc, __pyx_k__rdcc, sizeof(__pyx_k__rdcc), 0, 0, 1, 1},
+  {&__pyx_n_s__rdcc_nbytes, __pyx_k__rdcc_nbytes, sizeof(__pyx_k__rdcc_nbytes), 0, 0, 1, 1},
+  {&__pyx_n_s__rdcc_nslots, __pyx_k__rdcc_nslots, sizeof(__pyx_k__rdcc_nslots), 0, 0, 1, 1},
+  {&__pyx_n_s__rdcc_w0, __pyx_k__rdcc_w0, sizeof(__pyx_k__rdcc_w0), 0, 0, 1, 1},
+  {&__pyx_n_s__registry, __pyx_k__registry, sizeof(__pyx_k__registry), 0, 0, 1, 1},
+  {&__pyx_n_s__scale_factor, __pyx_k__scale_factor, sizeof(__pyx_k__scale_factor), 0, 0, 1, 1},
+  {&__pyx_n_s__scale_type, __pyx_k__scale_type, sizeof(__pyx_k__scale_type), 0, 0, 1, 1},
+  {&__pyx_n_s__size, __pyx_k__size, sizeof(__pyx_k__size), 0, 0, 1, 1},
+  {&__pyx_n_s__valid, __pyx_k__valid, sizeof(__pyx_k__valid), 0, 0, 1, 1},
+  {&__pyx_n_s__values, __pyx_k__values, sizeof(__pyx_k__values), 0, 0, 1, 1},
+  {0, 0, 0, 0, 0, 0, 0}
+};
+static int __Pyx_InitCachedBuiltins(void) {
+  __pyx_builtin_ValueError = __Pyx_GetName(__pyx_b, __pyx_n_s__ValueError); if (!__pyx_builtin_ValueError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_builtin_NotImplemented = __Pyx_GetName(__pyx_b, __pyx_n_s__NotImplemented); if (!__pyx_builtin_NotImplemented) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_builtin_TypeError = __Pyx_GetName(__pyx_b, __pyx_n_s__TypeError); if (!__pyx_builtin_TypeError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 154; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_builtin_RuntimeError = __Pyx_GetName(__pyx_b, __pyx_n_s__RuntimeError); if (!__pyx_builtin_RuntimeError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 974; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  return 0;
+  __pyx_L1_error:;
+  return -1;
+}
+
+static int __Pyx_InitCachedConstants(void) {
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0);
+
+  /* "h5py/h5p.pyx":154
+ * 
+ *     def __hash__(self):
+ *         raise TypeError("Property lists are unhashable")             # <<<<<<<<<<<<<<
+ * 
+ * cdef class PropClassID(PropID):
+ */
+  __pyx_k_tuple_3 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_2)); if (unlikely(!__pyx_k_tuple_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 154; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_3);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_3));
+
+  /* "h5py/h5p.pyx":200
+ *         their Python wrappers are freed.
+ *         """
+ *         with _objects.registry.lock:             # <<<<<<<<<<<<<<
+ *             H5Pclose(self.id)
+ *             if not self.valid:
+ */
+  __pyx_k_tuple_4 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 200; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_4);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_4));
+
+  /* "h5py/h5p.pyx":599
+ * 
+ *         if filter_idx < 0:
+ *             raise ValueError("Filter index must be a non-negative integer")             # <<<<<<<<<<<<<<
+ * 
+ *         filter_code = <int>H5Pget_filter(self.id, filter_idx, &flags,
+ */
+  __pyx_k_tuple_6 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_5)); if (unlikely(!__pyx_k_tuple_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 599; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_6);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_6));
+
+  /* "h5py/h5p.pyx":974
+ *         err = H5Fget_mdc_config(self.id, &config.cache_config)
+ *         if err < 0:
+ *             raise RuntimeError("Failed to get hit rate")             # <<<<<<<<<<<<<<
+ * 
+ *         return config
+ */
+  __pyx_k_tuple_8 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_7)); if (unlikely(!__pyx_k_tuple_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 974; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_8);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_8));
+
+  /* "h5py/h5p.pyx":987
+ *         err = H5Fset_mdc_config(self.id, &config.cache_config)
+ *         if err < 0:
+ *             raise RuntimeError("Failed to get hit rate")             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_k_tuple_9 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_7)); if (unlikely(!__pyx_k_tuple_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 987; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_9);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_9));
+
+  /* "h5py/h5p.pyx":106
+ * # === Property list functional API ============================================
+ * 
+ * def create(PropClassID cls not None):             # <<<<<<<<<<<<<<
+ *     """(PropClassID cls) => PropID
+ * 
+ */
+  __pyx_k_tuple_11 = PyTuple_Pack(2, ((PyObject *)__pyx_n_s__cls), ((PyObject *)__pyx_n_s__newid)); if (unlikely(!__pyx_k_tuple_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_11);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_11));
+  __pyx_k_codeobj_12 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_11, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_13, __pyx_n_s__create, 106, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_RefNannyFinishContext();
+  return 0;
+  __pyx_L1_error:;
+  __Pyx_RefNannyFinishContext();
+  return -1;
+}
+
+static int __Pyx_InitGlobals(void) {
+  if (__Pyx_InitStrings(__pyx_string_tab) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  return 0;
+  __pyx_L1_error:;
+  return -1;
+}
+
+#if PY_MAJOR_VERSION < 3
+PyMODINIT_FUNC inith5p(void); /*proto*/
+PyMODINIT_FUNC inith5p(void)
+#else
+PyMODINIT_FUNC PyInit_h5p(void); /*proto*/
+PyMODINIT_FUNC PyInit_h5p(void)
+#endif
+{
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  __Pyx_RefNannyDeclarations
+  #if CYTHON_REFNANNY
+  __Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny");
+  if (!__Pyx_RefNanny) {
+      PyErr_Clear();
+      __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny");
+      if (!__Pyx_RefNanny)
+          Py_FatalError("failed to import 'refnanny' module");
+  }
+  #endif
+  __Pyx_RefNannySetupContext("PyMODINIT_FUNC PyInit_h5p(void)", 0);
+  if ( __Pyx_check_binary_version() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #ifdef __Pyx_CyFunction_USED
+  if (__Pyx_CyFunction_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #endif
+  #ifdef __Pyx_FusedFunction_USED
+  if (__pyx_FusedFunction_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #endif
+  #ifdef __Pyx_Generator_USED
+  if (__pyx_Generator_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #endif
+  /*--- Library function declarations ---*/
+  /*--- Threads initialization code ---*/
+  #if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS
+  #ifdef WITH_THREAD /* Python build with threading support? */
+  PyEval_InitThreads();
+  #endif
+  #endif
+  /*--- Module creation code ---*/
+  #if PY_MAJOR_VERSION < 3
+  __pyx_m = Py_InitModule4(__Pyx_NAMESTR("h5p"), __pyx_methods, __Pyx_DOCSTR(__pyx_k_10), 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m);
+  #else
+  __pyx_m = PyModule_Create(&__pyx_moduledef);
+  #endif
+  if (unlikely(!__pyx_m)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #if PY_MAJOR_VERSION >= 3
+  {
+    PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (!PyDict_GetItemString(modules, "h5py.h5p")) {
+      if (unlikely(PyDict_SetItemString(modules, "h5py.h5p", __pyx_m) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    }
+  }
+  #endif
+  __pyx_b = PyImport_AddModule(__Pyx_NAMESTR(__Pyx_BUILTIN_MODULE_NAME)); if (unlikely(!__pyx_b)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #if CYTHON_COMPILING_IN_PYPY
+  Py_INCREF(__pyx_b);
+  #endif
+  if (__Pyx_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  /*--- Initialize various global constants etc. ---*/
+  if (unlikely(__Pyx_InitGlobals() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__pyx_module_is_main_h5py__h5p) {
+    if (__Pyx_SetAttrString(__pyx_m, "__name__", __pyx_n_s____main__) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  }
+  /*--- Builtin init code ---*/
+  if (unlikely(__Pyx_InitCachedBuiltins() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  /*--- Constants init code ---*/
+  if (unlikely(__Pyx_InitCachedConstants() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  /*--- Global init code ---*/
+  /*--- Variable export code ---*/
+  /*--- Function export code ---*/
+  if (__Pyx_ExportFunction("pdefault", (void (*)(void))__pyx_f_4h5py_3h5p_pdefault, "hid_t (struct __pyx_obj_4h5py_3h5p_PropID *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("propwrap", (void (*)(void))__pyx_f_4h5py_3h5p_propwrap, "PyObject *(hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  /*--- Type init code ---*/
+  __pyx_ptype_4h5py_8_objects_ObjectID = __Pyx_ImportType("h5py._objects", "ObjectID", sizeof(struct __pyx_obj_4h5py_8_objects_ObjectID), 1); if (unlikely(!__pyx_ptype_4h5py_8_objects_ObjectID)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_type_4h5py_3h5p_PropID.tp_base = __pyx_ptype_4h5py_8_objects_ObjectID;
+  if (PyType_Ready(&__pyx_type_4h5py_3h5p_PropID) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetAttrString(__pyx_m, "PropID", (PyObject *)&__pyx_type_4h5py_3h5p_PropID) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__pyx_type_4h5py_3h5p_PropID.tp_weaklistoffset == 0) __pyx_type_4h5py_3h5p_PropID.tp_weaklistoffset = offsetof(struct __pyx_obj_4h5py_3h5p_PropID, __pyx_base.__weakref__);
+  __pyx_ptype_4h5py_3h5p_PropID = &__pyx_type_4h5py_3h5p_PropID;
+  __pyx_type_4h5py_3h5p_PropClassID.tp_base = __pyx_ptype_4h5py_3h5p_PropID;
+  if (PyType_Ready(&__pyx_type_4h5py_3h5p_PropClassID) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #if CYTHON_COMPILING_IN_CPYTHON
+  {
+    PyObject *wrapper = __Pyx_GetAttrString((PyObject *)&__pyx_type_4h5py_3h5p_PropClassID, "__hash__"); if (unlikely(!wrapper)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
+      __pyx_wrapperbase_4h5py_3h5p_11PropClassID_2__hash__ = *((PyWrapperDescrObject *)wrapper)->d_base;
+      __pyx_wrapperbase_4h5py_3h5p_11PropClassID_2__hash__.doc = __pyx_doc_4h5py_3h5p_11PropClassID_2__hash__;
+      ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_4h5py_3h5p_11PropClassID_2__hash__;
+    }
+  }
+  #endif
+  if (__Pyx_SetAttrString(__pyx_m, "PropClassID", (PyObject *)&__pyx_type_4h5py_3h5p_PropClassID) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__pyx_type_4h5py_3h5p_PropClassID.tp_weaklistoffset == 0) __pyx_type_4h5py_3h5p_PropClassID.tp_weaklistoffset = offsetof(struct __pyx_obj_4h5py_3h5p_PropClassID, __pyx_base.__pyx_base.__weakref__);
+  __pyx_ptype_4h5py_3h5p_PropClassID = &__pyx_type_4h5py_3h5p_PropClassID;
+  __pyx_type_4h5py_3h5p_PropInstanceID.tp_base = __pyx_ptype_4h5py_3h5p_PropID;
+  if (PyType_Ready(&__pyx_type_4h5py_3h5p_PropInstanceID) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetAttrString(__pyx_m, "PropInstanceID", (PyObject *)&__pyx_type_4h5py_3h5p_PropInstanceID) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__pyx_type_4h5py_3h5p_PropInstanceID.tp_weaklistoffset == 0) __pyx_type_4h5py_3h5p_PropInstanceID.tp_weaklistoffset = offsetof(struct __pyx_obj_4h5py_3h5p_PropInstanceID, __pyx_base.__pyx_base.__weakref__);
+  __pyx_ptype_4h5py_3h5p_PropInstanceID = &__pyx_type_4h5py_3h5p_PropInstanceID;
+  __pyx_type_4h5py_3h5p_PropCreateID.tp_base = __pyx_ptype_4h5py_3h5p_PropInstanceID;
+  if (PyType_Ready(&__pyx_type_4h5py_3h5p_PropCreateID) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 213; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetAttrString(__pyx_m, "PropCreateID", (PyObject *)&__pyx_type_4h5py_3h5p_PropCreateID) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 213; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__pyx_type_4h5py_3h5p_PropCreateID.tp_weaklistoffset == 0) __pyx_type_4h5py_3h5p_PropCreateID.tp_weaklistoffset = offsetof(struct __pyx_obj_4h5py_3h5p_PropCreateID, __pyx_base.__pyx_base.__pyx_base.__weakref__);
+  __pyx_ptype_4h5py_3h5p_PropCreateID = &__pyx_type_4h5py_3h5p_PropCreateID;
+  __pyx_type_4h5py_3h5p_PropCopyID.tp_base = __pyx_ptype_4h5py_3h5p_PropInstanceID;
+  if (PyType_Ready(&__pyx_type_4h5py_3h5p_PropCopyID) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 220; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetAttrString(__pyx_m, "PropCopyID", (PyObject *)&__pyx_type_4h5py_3h5p_PropCopyID) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 220; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__pyx_type_4h5py_3h5p_PropCopyID.tp_weaklistoffset == 0) __pyx_type_4h5py_3h5p_PropCopyID.tp_weaklistoffset = offsetof(struct __pyx_obj_4h5py_3h5p_PropCopyID, __pyx_base.__pyx_base.__pyx_base.__weakref__);
+  __pyx_ptype_4h5py_3h5p_PropCopyID = &__pyx_type_4h5py_3h5p_PropCopyID;
+  __pyx_type_4h5py_3h5p_PropOCID.tp_base = __pyx_ptype_4h5py_3h5p_PropCreateID;
+  if (PyType_Ready(&__pyx_type_4h5py_3h5p_PropOCID) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1140; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetAttrString(__pyx_m, "PropOCID", (PyObject *)&__pyx_type_4h5py_3h5p_PropOCID) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1140; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__pyx_type_4h5py_3h5p_PropOCID.tp_weaklistoffset == 0) __pyx_type_4h5py_3h5p_PropOCID.tp_weaklistoffset = offsetof(struct __pyx_obj_4h5py_3h5p_PropOCID, __pyx_base.__pyx_base.__pyx_base.__pyx_base.__weakref__);
+  __pyx_ptype_4h5py_3h5p_PropOCID = &__pyx_type_4h5py_3h5p_PropOCID;
+  __pyx_type_4h5py_3h5p_PropDCID.tp_base = __pyx_ptype_4h5py_3h5p_PropOCID;
+  if (PyType_Ready(&__pyx_type_4h5py_3h5p_PropDCID) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 356; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetAttrString(__pyx_m, "PropDCID", (PyObject *)&__pyx_type_4h5py_3h5p_PropDCID) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 356; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__pyx_type_4h5py_3h5p_PropDCID.tp_weaklistoffset == 0) __pyx_type_4h5py_3h5p_PropDCID.tp_weaklistoffset = offsetof(struct __pyx_obj_4h5py_3h5p_PropDCID, __pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_base.__weakref__);
+  __pyx_ptype_4h5py_3h5p_PropDCID = &__pyx_type_4h5py_3h5p_PropDCID;
+  __pyx_type_4h5py_3h5p_PropFCID.tp_base = __pyx_ptype_4h5py_3h5p_PropCreateID;
+  if (PyType_Ready(&__pyx_type_4h5py_3h5p_PropFCID) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 265; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetAttrString(__pyx_m, "PropFCID", (PyObject *)&__pyx_type_4h5py_3h5p_PropFCID) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 265; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__pyx_type_4h5py_3h5p_PropFCID.tp_weaklistoffset == 0) __pyx_type_4h5py_3h5p_PropFCID.tp_weaklistoffset = offsetof(struct __pyx_obj_4h5py_3h5p_PropFCID, __pyx_base.__pyx_base.__pyx_base.__pyx_base.__weakref__);
+  __pyx_ptype_4h5py_3h5p_PropFCID = &__pyx_type_4h5py_3h5p_PropFCID;
+  __pyx_type_4h5py_3h5p_PropFAID.tp_base = __pyx_ptype_4h5py_3h5p_PropInstanceID;
+  if (PyType_Ready(&__pyx_type_4h5py_3h5p_PropFAID) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 720; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetAttrString(__pyx_m, "PropFAID", (PyObject *)&__pyx_type_4h5py_3h5p_PropFAID) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 720; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__pyx_type_4h5py_3h5p_PropFAID.tp_weaklistoffset == 0) __pyx_type_4h5py_3h5p_PropFAID.tp_weaklistoffset = offsetof(struct __pyx_obj_4h5py_3h5p_PropFAID, __pyx_base.__pyx_base.__pyx_base.__weakref__);
+  __pyx_ptype_4h5py_3h5p_PropFAID = &__pyx_type_4h5py_3h5p_PropFAID;
+  __pyx_type_4h5py_3h5p_PropDXID.tp_base = __pyx_ptype_4h5py_3h5p_PropInstanceID;
+  if (PyType_Ready(&__pyx_type_4h5py_3h5p_PropDXID) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetAttrString(__pyx_m, "PropDXID", (PyObject *)&__pyx_type_4h5py_3h5p_PropDXID) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__pyx_type_4h5py_3h5p_PropDXID.tp_weaklistoffset == 0) __pyx_type_4h5py_3h5p_PropDXID.tp_weaklistoffset = offsetof(struct __pyx_obj_4h5py_3h5p_PropDXID, __pyx_base.__pyx_base.__pyx_base.__weakref__);
+  __pyx_ptype_4h5py_3h5p_PropDXID = &__pyx_type_4h5py_3h5p_PropDXID;
+  __pyx_type_4h5py_3h5p_PropLCID.tp_base = __pyx_ptype_4h5py_3h5p_PropCreateID;
+  if (PyType_Ready(&__pyx_type_4h5py_3h5p_PropLCID) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 991; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetAttrString(__pyx_m, "PropLCID", (PyObject *)&__pyx_type_4h5py_3h5p_PropLCID) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 991; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__pyx_type_4h5py_3h5p_PropLCID.tp_weaklistoffset == 0) __pyx_type_4h5py_3h5p_PropLCID.tp_weaklistoffset = offsetof(struct __pyx_obj_4h5py_3h5p_PropLCID, __pyx_base.__pyx_base.__pyx_base.__pyx_base.__weakref__);
+  __pyx_ptype_4h5py_3h5p_PropLCID = &__pyx_type_4h5py_3h5p_PropLCID;
+  __pyx_type_4h5py_3h5p_PropLAID.tp_base = __pyx_ptype_4h5py_3h5p_PropInstanceID;
+  if (PyType_Ready(&__pyx_type_4h5py_3h5p_PropLAID) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1035; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetAttrString(__pyx_m, "PropLAID", (PyObject *)&__pyx_type_4h5py_3h5p_PropLAID) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1035; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__pyx_type_4h5py_3h5p_PropLAID.tp_weaklistoffset == 0) __pyx_type_4h5py_3h5p_PropLAID.tp_weaklistoffset = offsetof(struct __pyx_obj_4h5py_3h5p_PropLAID, __pyx_base.__pyx_base.__pyx_base.__weakref__);
+  __pyx_ptype_4h5py_3h5p_PropLAID = &__pyx_type_4h5py_3h5p_PropLAID;
+  __pyx_type_4h5py_3h5p_PropGCID.tp_base = __pyx_ptype_4h5py_3h5p_PropOCID;
+  if (PyType_Ready(&__pyx_type_4h5py_3h5p_PropGCID) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetAttrString(__pyx_m, "PropGCID", (PyObject *)&__pyx_type_4h5py_3h5p_PropGCID) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__pyx_type_4h5py_3h5p_PropGCID.tp_weaklistoffset == 0) __pyx_type_4h5py_3h5p_PropGCID.tp_weaklistoffset = offsetof(struct __pyx_obj_4h5py_3h5p_PropGCID, __pyx_base.__pyx_base.__pyx_base.__pyx_base.__pyx_base.__weakref__);
+  __pyx_ptype_4h5py_3h5p_PropGCID = &__pyx_type_4h5py_3h5p_PropGCID;
+  __pyx_type_4h5py_3h5p_PropDAID.tp_base = __pyx_ptype_4h5py_3h5p_PropInstanceID;
+  if (PyType_Ready(&__pyx_type_4h5py_3h5p_PropDAID) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1165; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetAttrString(__pyx_m, "PropDAID", (PyObject *)&__pyx_type_4h5py_3h5p_PropDAID) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1165; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__pyx_type_4h5py_3h5p_PropDAID.tp_weaklistoffset == 0) __pyx_type_4h5py_3h5p_PropDAID.tp_weaklistoffset = offsetof(struct __pyx_obj_4h5py_3h5p_PropDAID, __pyx_base.__pyx_base.__pyx_base.__weakref__);
+  __pyx_ptype_4h5py_3h5p_PropDAID = &__pyx_type_4h5py_3h5p_PropDAID;
+  /*--- Type import code ---*/
+  __pyx_ptype_4h5py_5numpy_dtype = __Pyx_ImportType("numpy", "dtype", sizeof(PyArray_Descr), 0); if (unlikely(!__pyx_ptype_4h5py_5numpy_dtype)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_5numpy_ndarray = __Pyx_ImportType("numpy", "ndarray", sizeof(PyArrayObject), 0); if (unlikely(!__pyx_ptype_4h5py_5numpy_ndarray)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5t_TypeID = __Pyx_ImportType("h5py.h5t", "TypeID", sizeof(struct __pyx_obj_4h5py_3h5t_TypeID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5t_TypeID)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_vtabptr_4h5py_3h5t_TypeID = (struct __pyx_vtabstruct_4h5py_3h5t_TypeID*)__Pyx_GetVtable(__pyx_ptype_4h5py_3h5t_TypeID->tp_dict); if (unlikely(!__pyx_vtabptr_4h5py_3h5t_TypeID)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5t_TypeArrayID = __Pyx_ImportType("h5py.h5t", "TypeArrayID", sizeof(struct __pyx_obj_4h5py_3h5t_TypeArrayID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5t_TypeArrayID)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_vtabptr_4h5py_3h5t_TypeArrayID = (struct __pyx_vtabstruct_4h5py_3h5t_TypeArrayID*)__Pyx_GetVtable(__pyx_ptype_4h5py_3h5t_TypeArrayID->tp_dict); if (unlikely(!__pyx_vtabptr_4h5py_3h5t_TypeArrayID)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5t_TypeOpaqueID = __Pyx_ImportType("h5py.h5t", "TypeOpaqueID", sizeof(struct __pyx_obj_4h5py_3h5t_TypeOpaqueID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5t_TypeOpaqueID)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_vtabptr_4h5py_3h5t_TypeOpaqueID = (struct __pyx_vtabstruct_4h5py_3h5t_TypeOpaqueID*)__Pyx_GetVtable(__pyx_ptype_4h5py_3h5t_TypeOpaqueID->tp_dict); if (unlikely(!__pyx_vtabptr_4h5py_3h5t_TypeOpaqueID)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5t_TypeStringID = __Pyx_ImportType("h5py.h5t", "TypeStringID", sizeof(struct __pyx_obj_4h5py_3h5t_TypeStringID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5t_TypeStringID)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_vtabptr_4h5py_3h5t_TypeStringID = (struct __pyx_vtabstruct_4h5py_3h5t_TypeStringID*)__Pyx_GetVtable(__pyx_ptype_4h5py_3h5t_TypeStringID->tp_dict); if (unlikely(!__pyx_vtabptr_4h5py_3h5t_TypeStringID)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5t_TypeVlenID = __Pyx_ImportType("h5py.h5t", "TypeVlenID", sizeof(struct __pyx_obj_4h5py_3h5t_TypeVlenID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5t_TypeVlenID)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_vtabptr_4h5py_3h5t_TypeVlenID = (struct __pyx_vtabstruct_4h5py_3h5t_TypeVlenID*)__Pyx_GetVtable(__pyx_ptype_4h5py_3h5t_TypeVlenID->tp_dict); if (unlikely(!__pyx_vtabptr_4h5py_3h5t_TypeVlenID)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5t_TypeTimeID = __Pyx_ImportType("h5py.h5t", "TypeTimeID", sizeof(struct __pyx_obj_4h5py_3h5t_TypeTimeID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5t_TypeTimeID)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_vtabptr_4h5py_3h5t_TypeTimeID = (struct __pyx_vtabstruct_4h5py_3h5t_TypeTimeID*)__Pyx_GetVtable(__pyx_ptype_4h5py_3h5t_TypeTimeID->tp_dict); if (unlikely(!__pyx_vtabptr_4h5py_3h5t_TypeTimeID)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5t_TypeBitfieldID = __Pyx_ImportType("h5py.h5t", "TypeBitfieldID", sizeof(struct __pyx_obj_4h5py_3h5t_TypeBitfieldID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5t_TypeBitfieldID)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_vtabptr_4h5py_3h5t_TypeBitfieldID = (struct __pyx_vtabstruct_4h5py_3h5t_TypeBitfieldID*)__Pyx_GetVtable(__pyx_ptype_4h5py_3h5t_TypeBitfieldID->tp_dict); if (unlikely(!__pyx_vtabptr_4h5py_3h5t_TypeBitfieldID)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5t_TypeReferenceID = __Pyx_ImportType("h5py.h5t", "TypeReferenceID", sizeof(struct __pyx_obj_4h5py_3h5t_TypeReferenceID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5t_TypeReferenceID)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_vtabptr_4h5py_3h5t_TypeReferenceID = (struct __pyx_vtabstruct_4h5py_3h5t_TypeReferenceID*)__Pyx_GetVtable(__pyx_ptype_4h5py_3h5t_TypeReferenceID->tp_dict); if (unlikely(!__pyx_vtabptr_4h5py_3h5t_TypeReferenceID)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5t_TypeAtomicID = __Pyx_ImportType("h5py.h5t", "TypeAtomicID", sizeof(struct __pyx_obj_4h5py_3h5t_TypeAtomicID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5t_TypeAtomicID)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_vtabptr_4h5py_3h5t_TypeAtomicID = (struct __pyx_vtabstruct_4h5py_3h5t_TypeAtomicID*)__Pyx_GetVtable(__pyx_ptype_4h5py_3h5t_TypeAtomicID->tp_dict); if (unlikely(!__pyx_vtabptr_4h5py_3h5t_TypeAtomicID)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5t_TypeIntegerID = __Pyx_ImportType("h5py.h5t", "TypeIntegerID", sizeof(struct __pyx_obj_4h5py_3h5t_TypeIntegerID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5t_TypeIntegerID)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_vtabptr_4h5py_3h5t_TypeIntegerID = (struct __pyx_vtabstruct_4h5py_3h5t_TypeIntegerID*)__Pyx_GetVtable(__pyx_ptype_4h5py_3h5t_TypeIntegerID->tp_dict); if (unlikely(!__pyx_vtabptr_4h5py_3h5t_TypeIntegerID)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5t_TypeFloatID = __Pyx_ImportType("h5py.h5t", "TypeFloatID", sizeof(struct __pyx_obj_4h5py_3h5t_TypeFloatID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5t_TypeFloatID)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_vtabptr_4h5py_3h5t_TypeFloatID = (struct __pyx_vtabstruct_4h5py_3h5t_TypeFloatID*)__Pyx_GetVtable(__pyx_ptype_4h5py_3h5t_TypeFloatID->tp_dict); if (unlikely(!__pyx_vtabptr_4h5py_3h5t_TypeFloatID)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5t_TypeCompositeID = __Pyx_ImportType("h5py.h5t", "TypeCompositeID", sizeof(struct __pyx_obj_4h5py_3h5t_TypeCompositeID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5t_TypeCompositeID)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_vtabptr_4h5py_3h5t_TypeCompositeID = (struct __pyx_vtabstruct_4h5py_3h5t_TypeCompositeID*)__Pyx_GetVtable(__pyx_ptype_4h5py_3h5t_TypeCompositeID->tp_dict); if (unlikely(!__pyx_vtabptr_4h5py_3h5t_TypeCompositeID)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5t_TypeEnumID = __Pyx_ImportType("h5py.h5t", "TypeEnumID", sizeof(struct __pyx_obj_4h5py_3h5t_TypeEnumID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5t_TypeEnumID)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_vtabptr_4h5py_3h5t_TypeEnumID = (struct __pyx_vtabstruct_4h5py_3h5t_TypeEnumID*)__Pyx_GetVtable(__pyx_ptype_4h5py_3h5t_TypeEnumID->tp_dict); if (unlikely(!__pyx_vtabptr_4h5py_3h5t_TypeEnumID)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5t_TypeCompoundID = __Pyx_ImportType("h5py.h5t", "TypeCompoundID", sizeof(struct __pyx_obj_4h5py_3h5t_TypeCompoundID), 1); if (unlikely(!__pyx_ptype_4h5py_3h5t_TypeCompoundID)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_vtabptr_4h5py_3h5t_TypeCompoundID = (struct __pyx_vtabstruct_4h5py_3h5t_TypeCompoundID*)__Pyx_GetVtable(__pyx_ptype_4h5py_3h5t_TypeCompoundID->tp_dict); if (unlikely(!__pyx_vtabptr_4h5py_3h5t_TypeCompoundID)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_4h5ac_CacheConfig = __Pyx_ImportType("h5py.h5ac", "CacheConfig", sizeof(struct __pyx_obj_4h5py_4h5ac_CacheConfig), 1); if (unlikely(!__pyx_ptype_4h5py_4h5ac_CacheConfig)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  /*--- Variable import code ---*/
+  /*--- Function import code ---*/
+  __pyx_t_1 = __Pyx_ImportModule("h5py.defs"); if (!__pyx_t_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Fget_mdc_config", (void (**)(void))&__pyx_f_4h5py_4defs_H5Fget_mdc_config, "herr_t (hid_t, H5AC_cache_config_t *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Fset_mdc_config", (void (**)(void))&__pyx_f_4h5py_4defs_H5Fset_mdc_config, "herr_t (hid_t, H5AC_cache_config_t *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Idec_ref", (void (**)(void))&__pyx_f_4h5py_4defs_H5Idec_ref, "int (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Iget_ref", (void (**)(void))&__pyx_f_4h5py_4defs_H5Iget_ref, "int (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Pcreate", (void (**)(void))&__pyx_f_4h5py_4defs_H5Pcreate, "hid_t (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Pcopy", (void (**)(void))&__pyx_f_4h5py_4defs_H5Pcopy, "hid_t (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Pget_class", (void (**)(void))&__pyx_f_4h5py_4defs_H5Pget_class, "int (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Pclose", (void (**)(void))&__pyx_f_4h5py_4defs_H5Pclose, "herr_t (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Pequal", (void (**)(void))&__pyx_f_4h5py_4defs_H5Pequal, "htri_t (hid_t, hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Pclose_class", (void (**)(void))&__pyx_f_4h5py_4defs_H5Pclose_class, "herr_t (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Pget_version", (void (**)(void))&__pyx_f_4h5py_4defs_H5Pget_version, "herr_t (hid_t, unsigned int *, unsigned int *, unsigned int *, unsigned int *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Pset_userblock", (void (**)(void))&__pyx_f_4h5py_4defs_H5Pset_userblock, "herr_t (hid_t, hsize_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Pget_userblock", (void (**)(void))&__pyx_f_4h5py_4defs_H5Pget_userblock, "herr_t (hid_t, hsize_t *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Pset_sizes", (void (**)(void))&__pyx_f_4h5py_4defs_H5Pset_sizes, "herr_t (hid_t, size_t, size_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Pget_sizes", (void (**)(void))&__pyx_f_4h5py_4defs_H5Pget_sizes, "herr_t (hid_t, size_t *, size_t *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Pset_fclose_degree", (void (**)(void))&__pyx_f_4h5py_4defs_H5Pset_fclose_degree, "herr_t (hid_t, enum H5F_close_degree_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Pget_fclose_degree", (void (**)(void))&__pyx_f_4h5py_4defs_H5Pget_fclose_degree, "herr_t (hid_t, enum H5F_close_degree_t *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Pset_fapl_core", (void (**)(void))&__pyx_f_4h5py_4defs_H5Pset_fapl_core, "herr_t (hid_t, size_t, hbool_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Pget_fapl_core", (void (**)(void))&__pyx_f_4h5py_4defs_H5Pget_fapl_core, "herr_t (hid_t, size_t *, hbool_t *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Pset_fapl_family", (void (**)(void))&__pyx_f_4h5py_4defs_H5Pset_fapl_family, "herr_t (hid_t, hsize_t, hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Pget_fapl_family", (void (**)(void))&__pyx_f_4h5py_4defs_H5Pget_fapl_family, "herr_t (hid_t, hsize_t *, hid_t *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Pset_fapl_log", (void (**)(void))&__pyx_f_4h5py_4defs_H5Pset_fapl_log, "herr_t (hid_t, char *, unsigned int, size_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Pset_cache", (void (**)(void))&__pyx_f_4h5py_4defs_H5Pset_cache, "herr_t (hid_t, int, int, size_t, double)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Pget_cache", (void (**)(void))&__pyx_f_4h5py_4defs_H5Pget_cache, "herr_t (hid_t, int *, int *, size_t *, double *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Pset_fapl_sec2", (void (**)(void))&__pyx_f_4h5py_4defs_H5Pset_fapl_sec2, "herr_t (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Pset_fapl_stdio", (void (**)(void))&__pyx_f_4h5py_4defs_H5Pset_fapl_stdio, "herr_t (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Pget_driver", (void (**)(void))&__pyx_f_4h5py_4defs_H5Pget_driver, "hid_t (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Pset_layout", (void (**)(void))&__pyx_f_4h5py_4defs_H5Pset_layout, "herr_t (hid_t, int)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Pget_layout", (void (**)(void))&__pyx_f_4h5py_4defs_H5Pget_layout, "H5D_layout_t (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Pset_chunk", (void (**)(void))&__pyx_f_4h5py_4defs_H5Pset_chunk, "herr_t (hid_t, int, hsize_t *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Pget_chunk", (void (**)(void))&__pyx_f_4h5py_4defs_H5Pget_chunk, "int (hid_t, int, hsize_t *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Pset_deflate", (void (**)(void))&__pyx_f_4h5py_4defs_H5Pset_deflate, "herr_t (hid_t, int)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Pset_fill_value", (void (**)(void))&__pyx_f_4h5py_4defs_H5Pset_fill_value, "herr_t (hid_t, hid_t, void *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Pget_fill_value", (void (**)(void))&__pyx_f_4h5py_4defs_H5Pget_fill_value, "herr_t (hid_t, hid_t, void *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Pfill_value_defined", (void (**)(void))&__pyx_f_4h5py_4defs_H5Pfill_value_defined, "herr_t (hid_t, H5D_fill_value_t *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Pset_fill_time", (void (**)(void))&__pyx_f_4h5py_4defs_H5Pset_fill_time, "herr_t (hid_t, H5D_fill_time_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Pget_fill_time", (void (**)(void))&__pyx_f_4h5py_4defs_H5Pget_fill_time, "herr_t (hid_t, H5D_fill_time_t *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Pset_alloc_time", (void (**)(void))&__pyx_f_4h5py_4defs_H5Pset_alloc_time, "herr_t (hid_t, H5D_alloc_time_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Pget_alloc_time", (void (**)(void))&__pyx_f_4h5py_4defs_H5Pget_alloc_time, "herr_t (hid_t, H5D_alloc_time_t *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Pset_filter", (void (**)(void))&__pyx_f_4h5py_4defs_H5Pset_filter, "herr_t (hid_t, H5Z_filter_t, unsigned int, size_t, unsigned int *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Pall_filters_avail", (void (**)(void))&__pyx_f_4h5py_4defs_H5Pall_filters_avail, "htri_t (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Pget_nfilters", (void (**)(void))&__pyx_f_4h5py_4defs_H5Pget_nfilters, "int (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Pget_filter", (void (**)(void))&__pyx_f_4h5py_4defs_H5Pget_filter, "H5Z_filter_t (hid_t, unsigned int, unsigned int *, size_t *, unsigned int *, size_t, char *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Pget_filter_by_id", (void (**)(void))&__pyx_f_4h5py_4defs_H5Pget_filter_by_id, "herr_t (hid_t, H5Z_filter_t, unsigned int *, size_t *, unsigned int *, size_t, char *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Premove_filter", (void (**)(void))&__pyx_f_4h5py_4defs_H5Premove_filter, "herr_t (hid_t, H5Z_filter_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Pset_fletcher32", (void (**)(void))&__pyx_f_4h5py_4defs_H5Pset_fletcher32, "herr_t (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Pset_shuffle", (void (**)(void))&__pyx_f_4h5py_4defs_H5Pset_shuffle, "herr_t (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Pset_szip", (void (**)(void))&__pyx_f_4h5py_4defs_H5Pset_szip, "herr_t (hid_t, unsigned int, unsigned int)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Pset_scaleoffset", (void (**)(void))&__pyx_f_4h5py_4defs_H5Pset_scaleoffset, "herr_t (hid_t, enum H5Z_SO_scale_type_t, int)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Pset_chunk_cache", (void (**)(void))&__pyx_f_4h5py_4defs_H5Pset_chunk_cache, "herr_t (hid_t, size_t, size_t, double)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Pget_chunk_cache", (void (**)(void))&__pyx_f_4h5py_4defs_H5Pget_chunk_cache, "herr_t (hid_t, size_t *, size_t *, double *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Pset_sieve_buf_size", (void (**)(void))&__pyx_f_4h5py_4defs_H5Pset_sieve_buf_size, "herr_t (hid_t, size_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Pget_sieve_buf_size", (void (**)(void))&__pyx_f_4h5py_4defs_H5Pget_sieve_buf_size, "herr_t (hid_t, size_t *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Pset_nlinks", (void (**)(void))&__pyx_f_4h5py_4defs_H5Pset_nlinks, "herr_t (hid_t, size_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Pget_nlinks", (void (**)(void))&__pyx_f_4h5py_4defs_H5Pget_nlinks, "herr_t (hid_t, size_t *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Pset_elink_prefix", (void (**)(void))&__pyx_f_4h5py_4defs_H5Pset_elink_prefix, "herr_t (hid_t, char *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Pget_elink_prefix", (void (**)(void))&__pyx_f_4h5py_4defs_H5Pget_elink_prefix, "Py_ssize_t (hid_t, char *, size_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Pget_elink_fapl", (void (**)(void))&__pyx_f_4h5py_4defs_H5Pget_elink_fapl, "hid_t (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Pset_elink_fapl", (void (**)(void))&__pyx_f_4h5py_4defs_H5Pset_elink_fapl, "herr_t (hid_t, hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Pset_create_intermediate_group", (void (**)(void))&__pyx_f_4h5py_4defs_H5Pset_create_intermediate_group, "herr_t (hid_t, unsigned int)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Pget_create_intermediate_group", (void (**)(void))&__pyx_f_4h5py_4defs_H5Pget_create_intermediate_group, "herr_t (hid_t, unsigned int *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Pset_copy_object", (void (**)(void))&__pyx_f_4h5py_4defs_H5Pset_copy_object, "herr_t (hid_t, unsigned int)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Pget_copy_object", (void (**)(void))&__pyx_f_4h5py_4defs_H5Pget_copy_object, "herr_t (hid_t, unsigned int *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Pset_char_encoding", (void (**)(void))&__pyx_f_4h5py_4defs_H5Pset_char_encoding, "herr_t (hid_t, H5T_cset_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Pget_char_encoding", (void (**)(void))&__pyx_f_4h5py_4defs_H5Pget_char_encoding, "herr_t (hid_t, H5T_cset_t *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Pset_obj_track_times", (void (**)(void))&__pyx_f_4h5py_4defs_H5Pset_obj_track_times, "herr_t (hid_t, hbool_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Pget_obj_track_times", (void (**)(void))&__pyx_f_4h5py_4defs_H5Pget_obj_track_times, "herr_t (hid_t, hbool_t *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Pset_link_creation_order", (void (**)(void))&__pyx_f_4h5py_4defs_H5Pset_link_creation_order, "herr_t (hid_t, unsigned int)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Pget_link_creation_order", (void (**)(void))&__pyx_f_4h5py_4defs_H5Pget_link_creation_order, "herr_t (hid_t, unsigned int *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Pset_libver_bounds", (void (**)(void))&__pyx_f_4h5py_4defs_H5Pset_libver_bounds, "herr_t (hid_t, H5F_libver_t, H5F_libver_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Pget_libver_bounds", (void (**)(void))&__pyx_f_4h5py_4defs_H5Pget_libver_bounds, "herr_t (hid_t, H5F_libver_t *, H5F_libver_t *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  Py_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_2 = __Pyx_ImportModule("h5py.utils"); if (!__pyx_t_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_2, "emalloc", (void (**)(void))&__pyx_f_4h5py_5utils_emalloc, "void *(size_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_2, "efree", (void (**)(void))&__pyx_f_4h5py_5utils_efree, "void (void *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_2, "check_numpy_read", (void (**)(void))&__pyx_f_4h5py_5utils_check_numpy_read, "int (PyArrayObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_4h5py_5utils_check_numpy_read *__pyx_optional_args)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_2, "check_numpy_write", (void (**)(void))&__pyx_f_4h5py_5utils_check_numpy_write, "int (PyArrayObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_4h5py_5utils_check_numpy_write *__pyx_optional_args)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_2, "convert_tuple", (void (**)(void))&__pyx_f_4h5py_5utils_convert_tuple, "int (PyObject *, hsize_t *, hsize_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_2, "convert_dims", (void (**)(void))&__pyx_f_4h5py_5utils_convert_dims, "PyObject *(hsize_t *, hsize_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_2, "require_tuple", (void (**)(void))&__pyx_f_4h5py_5utils_require_tuple, "int (PyObject *, int, int, char *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  Py_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_3 = __Pyx_ImportModule("h5py.h5t"); if (!__pyx_t_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_3, "py_create", (void (**)(void))&__pyx_f_4h5py_3h5t_py_create, "struct __pyx_obj_4h5py_3h5t_TypeID *(PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_4h5py_3h5t_py_create *__pyx_optional_args)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  Py_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  /*--- Execution code ---*/
+
+  /* "h5py/h5p.pyx":23
+ * from h5t cimport TypeID, py_create
+ * from h5ac cimport CacheConfig
+ * from h5py import _objects             # <<<<<<<<<<<<<<
+ * 
+ * # Initialization
+ */
+  __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_INCREF(((PyObject *)__pyx_n_s___objects));
+  PyList_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_n_s___objects));
+  __Pyx_GIVEREF(((PyObject *)__pyx_n_s___objects));
+  __pyx_t_5 = __Pyx_Import(((PyObject *)__pyx_n_s__h5py), ((PyObject *)__pyx_t_4), -1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
+  __pyx_t_4 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s___objects);
+  if (__pyx_t_4 == NULL) {
+    if (PyErr_ExceptionMatches(PyExc_AttributeError)) __Pyx_RaiseImportError(__pyx_n_s___objects);
+    if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  }
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s___objects, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+  /* "h5py/h5p.pyx":26
+ * 
+ * # Initialization
+ * import_array()             # <<<<<<<<<<<<<<
+ * 
+ * # === C API ===================================================================
+ */
+  import_array();
+
+  /* "h5py/h5p.pyx":81
+ * 
+ * 
+ * NO_CLASS       = lockcls(H5P_NO_CLASS)             # <<<<<<<<<<<<<<
+ * FILE_CREATE    = lockcls(H5P_FILE_CREATE)
+ * FILE_ACCESS    = lockcls(H5P_FILE_ACCESS)
+ */
+  __pyx_t_5 = __pyx_f_4h5py_3h5p_lockcls(H5P_NO_CLASS); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__NO_CLASS, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+  /* "h5py/h5p.pyx":82
+ * 
+ * NO_CLASS       = lockcls(H5P_NO_CLASS)
+ * FILE_CREATE    = lockcls(H5P_FILE_CREATE)             # <<<<<<<<<<<<<<
+ * FILE_ACCESS    = lockcls(H5P_FILE_ACCESS)
+ * DATASET_CREATE = lockcls(H5P_DATASET_CREATE)
+ */
+  __pyx_t_5 = __pyx_f_4h5py_3h5p_lockcls(H5P_FILE_CREATE); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 82; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__FILE_CREATE, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 82; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+  /* "h5py/h5p.pyx":83
+ * NO_CLASS       = lockcls(H5P_NO_CLASS)
+ * FILE_CREATE    = lockcls(H5P_FILE_CREATE)
+ * FILE_ACCESS    = lockcls(H5P_FILE_ACCESS)             # <<<<<<<<<<<<<<
+ * DATASET_CREATE = lockcls(H5P_DATASET_CREATE)
+ * DATASET_XFER   = lockcls(H5P_DATASET_XFER)
+ */
+  __pyx_t_5 = __pyx_f_4h5py_3h5p_lockcls(H5P_FILE_ACCESS); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__FILE_ACCESS, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+  /* "h5py/h5p.pyx":84
+ * FILE_CREATE    = lockcls(H5P_FILE_CREATE)
+ * FILE_ACCESS    = lockcls(H5P_FILE_ACCESS)
+ * DATASET_CREATE = lockcls(H5P_DATASET_CREATE)             # <<<<<<<<<<<<<<
+ * DATASET_XFER   = lockcls(H5P_DATASET_XFER)
+ * DATASET_ACCESS = lockcls(H5P_DATASET_ACCESS)
+ */
+  __pyx_t_5 = __pyx_f_4h5py_3h5p_lockcls(H5P_DATASET_CREATE); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__DATASET_CREATE, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+  /* "h5py/h5p.pyx":85
+ * FILE_ACCESS    = lockcls(H5P_FILE_ACCESS)
+ * DATASET_CREATE = lockcls(H5P_DATASET_CREATE)
+ * DATASET_XFER   = lockcls(H5P_DATASET_XFER)             # <<<<<<<<<<<<<<
+ * DATASET_ACCESS = lockcls(H5P_DATASET_ACCESS)
+ * 
+ */
+  __pyx_t_5 = __pyx_f_4h5py_3h5p_lockcls(H5P_DATASET_XFER); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__DATASET_XFER, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+  /* "h5py/h5p.pyx":86
+ * DATASET_CREATE = lockcls(H5P_DATASET_CREATE)
+ * DATASET_XFER   = lockcls(H5P_DATASET_XFER)
+ * DATASET_ACCESS = lockcls(H5P_DATASET_ACCESS)             # <<<<<<<<<<<<<<
+ * 
+ * OBJECT_COPY = lockcls(H5P_OBJECT_COPY)
+ */
+  __pyx_t_5 = __pyx_f_4h5py_3h5p_lockcls(H5P_DATASET_ACCESS); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__DATASET_ACCESS, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+  /* "h5py/h5p.pyx":88
+ * DATASET_ACCESS = lockcls(H5P_DATASET_ACCESS)
+ * 
+ * OBJECT_COPY = lockcls(H5P_OBJECT_COPY)             # <<<<<<<<<<<<<<
+ * 
+ * LINK_CREATE = lockcls(H5P_LINK_CREATE)
+ */
+  __pyx_t_5 = __pyx_f_4h5py_3h5p_lockcls(H5P_OBJECT_COPY); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__OBJECT_COPY, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+  /* "h5py/h5p.pyx":90
+ * OBJECT_COPY = lockcls(H5P_OBJECT_COPY)
+ * 
+ * LINK_CREATE = lockcls(H5P_LINK_CREATE)             # <<<<<<<<<<<<<<
+ * LINK_ACCESS = lockcls(H5P_LINK_ACCESS)
+ * GROUP_CREATE = lockcls(H5P_GROUP_CREATE)
+ */
+  __pyx_t_5 = __pyx_f_4h5py_3h5p_lockcls(H5P_LINK_CREATE); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__LINK_CREATE, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+  /* "h5py/h5p.pyx":91
+ * 
+ * LINK_CREATE = lockcls(H5P_LINK_CREATE)
+ * LINK_ACCESS = lockcls(H5P_LINK_ACCESS)             # <<<<<<<<<<<<<<
+ * GROUP_CREATE = lockcls(H5P_GROUP_CREATE)
+ * OBJECT_CREATE = lockcls(H5P_OBJECT_CREATE)
+ */
+  __pyx_t_5 = __pyx_f_4h5py_3h5p_lockcls(H5P_LINK_ACCESS); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__LINK_ACCESS, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+  /* "h5py/h5p.pyx":92
+ * LINK_CREATE = lockcls(H5P_LINK_CREATE)
+ * LINK_ACCESS = lockcls(H5P_LINK_ACCESS)
+ * GROUP_CREATE = lockcls(H5P_GROUP_CREATE)             # <<<<<<<<<<<<<<
+ * OBJECT_CREATE = lockcls(H5P_OBJECT_CREATE)
+ * 
+ */
+  __pyx_t_5 = __pyx_f_4h5py_3h5p_lockcls(H5P_GROUP_CREATE); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 92; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__GROUP_CREATE, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 92; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+  /* "h5py/h5p.pyx":93
+ * LINK_ACCESS = lockcls(H5P_LINK_ACCESS)
+ * GROUP_CREATE = lockcls(H5P_GROUP_CREATE)
+ * OBJECT_CREATE = lockcls(H5P_OBJECT_CREATE)             # <<<<<<<<<<<<<<
+ * 
+ * CRT_ORDER_TRACKED = H5P_CRT_ORDER_TRACKED
+ */
+  __pyx_t_5 = __pyx_f_4h5py_3h5p_lockcls(H5P_OBJECT_CREATE); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__OBJECT_CREATE, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+  /* "h5py/h5p.pyx":95
+ * OBJECT_CREATE = lockcls(H5P_OBJECT_CREATE)
+ * 
+ * CRT_ORDER_TRACKED = H5P_CRT_ORDER_TRACKED             # <<<<<<<<<<<<<<
+ * CRT_ORDER_INDEXED = H5P_CRT_ORDER_INDEXED
+ * 
+ */
+  __pyx_t_5 = __Pyx_PyInt_to_py_hid_t(H5P_CRT_ORDER_TRACKED); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__CRT_ORDER_TRACKED, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+  /* "h5py/h5p.pyx":96
+ * 
+ * CRT_ORDER_TRACKED = H5P_CRT_ORDER_TRACKED
+ * CRT_ORDER_INDEXED = H5P_CRT_ORDER_INDEXED             # <<<<<<<<<<<<<<
+ * 
+ * DEFAULT = None   # In the HDF5 header files this is actually 0, which is an
+ */
+  __pyx_t_5 = __Pyx_PyInt_to_py_hid_t(H5P_CRT_ORDER_INDEXED); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__CRT_ORDER_INDEXED, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+  /* "h5py/h5p.pyx":98
+ * CRT_ORDER_INDEXED = H5P_CRT_ORDER_INDEXED
+ * 
+ * DEFAULT = None   # In the HDF5 header files this is actually 0, which is an             # <<<<<<<<<<<<<<
+ *                  # invalid identifier.  The new strategy for default options
+ *                  # is to make them all None, to better match the Python style
+ */
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__DEFAULT, Py_None) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 98; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5p.pyx":106
+ * # === Property list functional API ============================================
+ * 
+ * def create(PropClassID cls not None):             # <<<<<<<<<<<<<<
+ *     """(PropClassID cls) => PropID
+ * 
+ */
+  __pyx_t_5 = PyCFunction_NewEx(&__pyx_mdef_4h5py_3h5p_1create, NULL, __pyx_n_s_14); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__create, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+  /* "h5py/h5p.pyx":1
+ * # This file is part of h5py, a Python interface to the HDF5 library.             # <<<<<<<<<<<<<<
+ * #
+ * # http://www.h5py.org
+ */
+  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(((PyObject *)__pyx_t_5));
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s____test__, ((PyObject *)__pyx_t_5)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  if (__pyx_m) {
+    __Pyx_AddTraceback("init h5py.h5p", __pyx_clineno, __pyx_lineno, __pyx_filename);
+    Py_DECREF(__pyx_m); __pyx_m = 0;
+  } else if (!PyErr_Occurred()) {
+    PyErr_SetString(PyExc_ImportError, "init h5py.h5p");
+  }
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  #if PY_MAJOR_VERSION < 3
+  return;
+  #else
+  return __pyx_m;
+  #endif
+}
+
+/* Runtime support code */
+#if CYTHON_REFNANNY
+static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) {
+    PyObject *m = NULL, *p = NULL;
+    void *r = NULL;
+    m = PyImport_ImportModule((char *)modname);
+    if (!m) goto end;
+    p = PyObject_GetAttrString(m, (char *)"RefNannyAPI");
+    if (!p) goto end;
+    r = PyLong_AsVoidPtr(p);
+end:
+    Py_XDECREF(p);
+    Py_XDECREF(m);
+    return (__Pyx_RefNannyAPIStruct *)r;
+}
+#endif /* CYTHON_REFNANNY */
+
+static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name) {
+    PyObject *result;
+    result = PyObject_GetAttr(dict, name);
+    if (!result) {
+        if (dict != __pyx_b) {
+            PyErr_Clear();
+            result = PyObject_GetAttr(__pyx_b, name);
+        }
+        if (!result) {
+            PyErr_SetObject(PyExc_NameError, name);
+        }
+    }
+    return result;
+}
+
+static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb) {
+#if CYTHON_COMPILING_IN_CPYTHON
+    PyObject *tmp_type, *tmp_value, *tmp_tb;
+    PyThreadState *tstate = PyThreadState_GET();
+    tmp_type = tstate->curexc_type;
+    tmp_value = tstate->curexc_value;
+    tmp_tb = tstate->curexc_traceback;
+    tstate->curexc_type = type;
+    tstate->curexc_value = value;
+    tstate->curexc_traceback = tb;
+    Py_XDECREF(tmp_type);
+    Py_XDECREF(tmp_value);
+    Py_XDECREF(tmp_tb);
+#else
+    PyErr_Restore(type, value, tb);
+#endif
+}
+static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb) {
+#if CYTHON_COMPILING_IN_CPYTHON
+    PyThreadState *tstate = PyThreadState_GET();
+    *type = tstate->curexc_type;
+    *value = tstate->curexc_value;
+    *tb = tstate->curexc_traceback;
+    tstate->curexc_type = 0;
+    tstate->curexc_value = 0;
+    tstate->curexc_traceback = 0;
+#else
+    PyErr_Fetch(type, value, tb);
+#endif
+}
+
+#if PY_MAJOR_VERSION < 3
+static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb,
+                        CYTHON_UNUSED PyObject *cause) {
+    Py_XINCREF(type);
+    if (!value || value == Py_None)
+        value = NULL;
+    else
+        Py_INCREF(value);
+    if (!tb || tb == Py_None)
+        tb = NULL;
+    else {
+        Py_INCREF(tb);
+        if (!PyTraceBack_Check(tb)) {
+            PyErr_SetString(PyExc_TypeError,
+                "raise: arg 3 must be a traceback or None");
+            goto raise_error;
+        }
+    }
+    #if PY_VERSION_HEX < 0x02050000
+    if (PyClass_Check(type)) {
+    #else
+    if (PyType_Check(type)) {
+    #endif
+#if CYTHON_COMPILING_IN_PYPY
+        if (!value) {
+            Py_INCREF(Py_None);
+            value = Py_None;
+        }
+#endif
+        PyErr_NormalizeException(&type, &value, &tb);
+    } else {
+        if (value) {
+            PyErr_SetString(PyExc_TypeError,
+                "instance exception may not have a separate value");
+            goto raise_error;
+        }
+        value = type;
+        #if PY_VERSION_HEX < 0x02050000
+            if (PyInstance_Check(type)) {
+                type = (PyObject*) ((PyInstanceObject*)type)->in_class;
+                Py_INCREF(type);
+            }
+            else {
+                type = 0;
+                PyErr_SetString(PyExc_TypeError,
+                    "raise: exception must be an old-style class or instance");
+                goto raise_error;
+            }
+        #else
+            type = (PyObject*) Py_TYPE(type);
+            Py_INCREF(type);
+            if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) {
+                PyErr_SetString(PyExc_TypeError,
+                    "raise: exception class must be a subclass of BaseException");
+                goto raise_error;
+            }
+        #endif
+    }
+    __Pyx_ErrRestore(type, value, tb);
+    return;
+raise_error:
+    Py_XDECREF(value);
+    Py_XDECREF(type);
+    Py_XDECREF(tb);
+    return;
+}
+#else /* Python 3+ */
+static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) {
+    PyObject* owned_instance = NULL;
+    if (tb == Py_None) {
+        tb = 0;
+    } else if (tb && !PyTraceBack_Check(tb)) {
+        PyErr_SetString(PyExc_TypeError,
+            "raise: arg 3 must be a traceback or None");
+        goto bad;
+    }
+    if (value == Py_None)
+        value = 0;
+    if (PyExceptionInstance_Check(type)) {
+        if (value) {
+            PyErr_SetString(PyExc_TypeError,
+                "instance exception may not have a separate value");
+            goto bad;
+        }
+        value = type;
+        type = (PyObject*) Py_TYPE(value);
+    } else if (PyExceptionClass_Check(type)) {
+        PyObject *args;
+        if (!value)
+            args = PyTuple_New(0);
+        else if (PyTuple_Check(value)) {
+            Py_INCREF(value);
+            args = value;
+        }
+        else
+            args = PyTuple_Pack(1, value);
+        if (!args)
+            goto bad;
+        owned_instance = PyEval_CallObject(type, args);
+        Py_DECREF(args);
+        if (!owned_instance)
+            goto bad;
+        value = owned_instance;
+        if (!PyExceptionInstance_Check(value)) {
+            PyErr_Format(PyExc_TypeError,
+                         "calling %R should have returned an instance of "
+                         "BaseException, not %R",
+                         type, Py_TYPE(value));
+            goto bad;
+        }
+    } else {
+        PyErr_SetString(PyExc_TypeError,
+            "raise: exception class must be a subclass of BaseException");
+        goto bad;
+    }
+    if (cause && cause != Py_None) {
+        PyObject *fixed_cause;
+        if (PyExceptionClass_Check(cause)) {
+            fixed_cause = PyObject_CallObject(cause, NULL);
+            if (fixed_cause == NULL)
+                goto bad;
+        }
+        else if (PyExceptionInstance_Check(cause)) {
+            fixed_cause = cause;
+            Py_INCREF(fixed_cause);
+        }
+        else {
+            PyErr_SetString(PyExc_TypeError,
+                            "exception causes must derive from "
+                            "BaseException");
+            goto bad;
+        }
+        PyException_SetCause(value, fixed_cause);
+    }
+    PyErr_SetObject(type, value);
+    if (tb) {
+        PyThreadState *tstate = PyThreadState_GET();
+        PyObject* tmp_tb = tstate->curexc_traceback;
+        if (tb != tmp_tb) {
+            Py_INCREF(tb);
+            tstate->curexc_traceback = tb;
+            Py_XDECREF(tmp_tb);
+        }
+    }
+bad:
+    Py_XDECREF(owned_instance);
+    return;
+}
+#endif
+
+static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) {
+    if (unlikely(!type)) {
+        PyErr_Format(PyExc_SystemError, "Missing type object");
+        return 0;
+    }
+    if (likely(PyObject_TypeCheck(obj, type)))
+        return 1;
+    PyErr_Format(PyExc_TypeError, "Cannot convert %.200s to %.200s",
+                 Py_TYPE(obj)->tp_name, type->tp_name);
+    return 0;
+}
+
+static int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, int none_allowed,
+    const char *name, int exact)
+{
+    if (!type) {
+        PyErr_Format(PyExc_SystemError, "Missing type object");
+        return 0;
+    }
+    if (none_allowed && obj == Py_None) return 1;
+    else if (exact) {
+        if (Py_TYPE(obj) == type) return 1;
+    }
+    else {
+        if (PyObject_TypeCheck(obj, type)) return 1;
+    }
+    PyErr_Format(PyExc_TypeError,
+        "Argument '%s' has incorrect type (expected %s, got %s)",
+        name, type->tp_name, Py_TYPE(obj)->tp_name);
+    return 0;
+}
+
+static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) {
+    PyObject *local_type, *local_value, *local_tb;
+#if CYTHON_COMPILING_IN_CPYTHON
+    PyObject *tmp_type, *tmp_value, *tmp_tb;
+    PyThreadState *tstate = PyThreadState_GET();
+    local_type = tstate->curexc_type;
+    local_value = tstate->curexc_value;
+    local_tb = tstate->curexc_traceback;
+    tstate->curexc_type = 0;
+    tstate->curexc_value = 0;
+    tstate->curexc_traceback = 0;
+#else
+    PyErr_Fetch(&local_type, &local_value, &local_tb);
+#endif
+    PyErr_NormalizeException(&local_type, &local_value, &local_tb);
+#if CYTHON_COMPILING_IN_CPYTHON
+    if (unlikely(tstate->curexc_type))
+#else
+    if (unlikely(PyErr_Occurred()))
+#endif
+        goto bad;
+    #if PY_MAJOR_VERSION >= 3
+    if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0))
+        goto bad;
+    #endif
+    Py_INCREF(local_type);
+    Py_INCREF(local_value);
+    Py_INCREF(local_tb);
+    *type = local_type;
+    *value = local_value;
+    *tb = local_tb;
+#if CYTHON_COMPILING_IN_CPYTHON
+    tmp_type = tstate->exc_type;
+    tmp_value = tstate->exc_value;
+    tmp_tb = tstate->exc_traceback;
+    tstate->exc_type = local_type;
+    tstate->exc_value = local_value;
+    tstate->exc_traceback = local_tb;
+    /* Make sure tstate is in a consistent state when we XDECREF
+       these objects (DECREF may run arbitrary code). */
+    Py_XDECREF(tmp_type);
+    Py_XDECREF(tmp_value);
+    Py_XDECREF(tmp_tb);
+#else
+    PyErr_SetExcInfo(local_type, local_value, local_tb);
+#endif
+    return 0;
+bad:
+    *type = 0;
+    *value = 0;
+    *tb = 0;
+    Py_XDECREF(local_type);
+    Py_XDECREF(local_value);
+    Py_XDECREF(local_tb);
+    return -1;
+}
+
+static void __Pyx_RaiseArgtupleInvalid(
+    const char* func_name,
+    int exact,
+    Py_ssize_t num_min,
+    Py_ssize_t num_max,
+    Py_ssize_t num_found)
+{
+    Py_ssize_t num_expected;
+    const char *more_or_less;
+    if (num_found < num_min) {
+        num_expected = num_min;
+        more_or_less = "at least";
+    } else {
+        num_expected = num_max;
+        more_or_less = "at most";
+    }
+    if (exact) {
+        more_or_less = "exactly";
+    }
+    PyErr_Format(PyExc_TypeError,
+                 "%s() takes %s %" CYTHON_FORMAT_SSIZE_T "d positional argument%s (%" CYTHON_FORMAT_SSIZE_T "d given)",
+                 func_name, more_or_less, num_expected,
+                 (num_expected == 1) ? "" : "s", num_found);
+}
+
+static void __Pyx_RaiseDoubleKeywordsError(
+    const char* func_name,
+    PyObject* kw_name)
+{
+    PyErr_Format(PyExc_TypeError,
+        #if PY_MAJOR_VERSION >= 3
+        "%s() got multiple values for keyword argument '%U'", func_name, kw_name);
+        #else
+        "%s() got multiple values for keyword argument '%s'", func_name,
+        PyString_AsString(kw_name));
+        #endif
+}
+
+static int __Pyx_ParseOptionalKeywords(
+    PyObject *kwds,
+    PyObject **argnames[],
+    PyObject *kwds2,
+    PyObject *values[],
+    Py_ssize_t num_pos_args,
+    const char* function_name)
+{
+    PyObject *key = 0, *value = 0;
+    Py_ssize_t pos = 0;
+    PyObject*** name;
+    PyObject*** first_kw_arg = argnames + num_pos_args;
+    while (PyDict_Next(kwds, &pos, &key, &value)) {
+        name = first_kw_arg;
+        while (*name && (**name != key)) name++;
+        if (*name) {
+            values[name-argnames] = value;
+            continue;
+        }
+        name = first_kw_arg;
+        #if PY_MAJOR_VERSION < 3
+        if (likely(PyString_CheckExact(key)) || likely(PyString_Check(key))) {
+            while (*name) {
+                if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key))
+                        && _PyString_Eq(**name, key)) {
+                    values[name-argnames] = value;
+                    break;
+                }
+                name++;
+            }
+            if (*name) continue;
+            else {
+                PyObject*** argname = argnames;
+                while (argname != first_kw_arg) {
+                    if ((**argname == key) || (
+                            (CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**argname) == PyString_GET_SIZE(key))
+                             && _PyString_Eq(**argname, key))) {
+                        goto arg_passed_twice;
+                    }
+                    argname++;
+                }
+            }
+        } else
+        #endif
+        if (likely(PyUnicode_Check(key))) {
+            while (*name) {
+                int cmp = (**name == key) ? 0 :
+                #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
+                    (PyUnicode_GET_SIZE(**name) != PyUnicode_GET_SIZE(key)) ? 1 :
+                #endif
+                    PyUnicode_Compare(**name, key);
+                if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
+                if (cmp == 0) {
+                    values[name-argnames] = value;
+                    break;
+                }
+                name++;
+            }
+            if (*name) continue;
+            else {
+                PyObject*** argname = argnames;
+                while (argname != first_kw_arg) {
+                    int cmp = (**argname == key) ? 0 :
+                    #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
+                        (PyUnicode_GET_SIZE(**argname) != PyUnicode_GET_SIZE(key)) ? 1 :
+                    #endif
+                        PyUnicode_Compare(**argname, key);
+                    if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
+                    if (cmp == 0) goto arg_passed_twice;
+                    argname++;
+                }
+            }
+        } else
+            goto invalid_keyword_type;
+        if (kwds2) {
+            if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad;
+        } else {
+            goto invalid_keyword;
+        }
+    }
+    return 0;
+arg_passed_twice:
+    __Pyx_RaiseDoubleKeywordsError(function_name, key);
+    goto bad;
+invalid_keyword_type:
+    PyErr_Format(PyExc_TypeError,
+        "%s() keywords must be strings", function_name);
+    goto bad;
+invalid_keyword:
+    PyErr_Format(PyExc_TypeError,
+    #if PY_MAJOR_VERSION < 3
+        "%s() got an unexpected keyword argument '%s'",
+        function_name, PyString_AsString(key));
+    #else
+        "%s() got an unexpected keyword argument '%U'",
+        function_name, key);
+    #endif
+bad:
+    return -1;
+}
+
+static CYTHON_INLINE int __Pyx_CheckKeywordStrings(
+    PyObject *kwdict,
+    const char* function_name,
+    int kw_allowed)
+{
+    PyObject* key = 0;
+    Py_ssize_t pos = 0;
+#if CPYTHON_COMPILING_IN_PYPY
+    if (!kw_allowed && PyDict_Next(kwdict, &pos, &key, 0))
+        goto invalid_keyword;
+    return 1;
+#else
+    while (PyDict_Next(kwdict, &pos, &key, 0)) {
+        #if PY_MAJOR_VERSION < 3
+        if (unlikely(!PyString_CheckExact(key)) && unlikely(!PyString_Check(key)))
+        #endif
+            if (unlikely(!PyUnicode_Check(key)))
+                goto invalid_keyword_type;
+    }
+    if ((!kw_allowed) && unlikely(key))
+        goto invalid_keyword;
+    return 1;
+invalid_keyword_type:
+    PyErr_Format(PyExc_TypeError,
+        "%s() keywords must be strings", function_name);
+    return 0;
+#endif
+invalid_keyword:
+    PyErr_Format(PyExc_TypeError,
+    #if PY_MAJOR_VERSION < 3
+        "%s() got an unexpected keyword argument '%s'",
+        function_name, PyString_AsString(key));
+    #else
+        "%s() got an unexpected keyword argument '%U'",
+        function_name, key);
+    #endif
+    return 0;
+}
+
+static void __Pyx_call_next_tp_dealloc(PyObject* obj, destructor current_tp_dealloc) {
+    PyTypeObject* type = Py_TYPE(obj);
+    while (type && type->tp_dealloc != current_tp_dealloc)
+        type = type->tp_base;
+    while (type && type->tp_dealloc == current_tp_dealloc)
+        type = type->tp_base;
+    if (type)
+        type->tp_dealloc(obj);
+}
+
+static int __Pyx_call_next_tp_traverse(PyObject* obj, visitproc v, void *a, traverseproc current_tp_traverse) {
+    PyTypeObject* type = Py_TYPE(obj);
+    while (type && type->tp_traverse != current_tp_traverse)
+        type = type->tp_base;
+    while (type && type->tp_traverse == current_tp_traverse)
+        type = type->tp_base;
+    if (type && type->tp_traverse)
+        return type->tp_traverse(obj, v, a);
+    return 0;
+}
+
+static void __Pyx_call_next_tp_clear(PyObject* obj, inquiry current_tp_clear) {
+    PyTypeObject* type = Py_TYPE(obj);
+    while (type && type->tp_clear != current_tp_clear)
+        type = type->tp_base;
+    while (type && type->tp_clear == current_tp_clear)
+        type = type->tp_base;
+    if (type && type->tp_clear)
+        type->tp_clear(obj);
+}
+
+static CYTHON_INLINE void __Pyx_ExceptionSave(PyObject **type, PyObject **value, PyObject **tb) {
+#if CYTHON_COMPILING_IN_CPYTHON
+    PyThreadState *tstate = PyThreadState_GET();
+    *type = tstate->exc_type;
+    *value = tstate->exc_value;
+    *tb = tstate->exc_traceback;
+    Py_XINCREF(*type);
+    Py_XINCREF(*value);
+    Py_XINCREF(*tb);
+#else
+    PyErr_GetExcInfo(type, value, tb);
+#endif
+}
+static void __Pyx_ExceptionReset(PyObject *type, PyObject *value, PyObject *tb) {
+#if CYTHON_COMPILING_IN_CPYTHON
+    PyObject *tmp_type, *tmp_value, *tmp_tb;
+    PyThreadState *tstate = PyThreadState_GET();
+    tmp_type = tstate->exc_type;
+    tmp_value = tstate->exc_value;
+    tmp_tb = tstate->exc_traceback;
+    tstate->exc_type = type;
+    tstate->exc_value = value;
+    tstate->exc_traceback = tb;
+    Py_XDECREF(tmp_type);
+    Py_XDECREF(tmp_value);
+    Py_XDECREF(tmp_tb);
+#else
+    PyErr_SetExcInfo(type, value, tb);
+#endif
+}
+
+static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) {
+    PyObject *empty_list = 0;
+    PyObject *module = 0;
+    PyObject *global_dict = 0;
+    PyObject *empty_dict = 0;
+    PyObject *list;
+    #if PY_VERSION_HEX < 0x03030000
+    PyObject *py_import = 0;
+    py_import = __Pyx_GetAttrString(__pyx_b, "__import__");
+    if (!py_import)
+        goto bad;
+    #endif
+    if (from_list)
+        list = from_list;
+    else {
+        empty_list = PyList_New(0);
+        if (!empty_list)
+            goto bad;
+        list = empty_list;
+    }
+    global_dict = PyModule_GetDict(__pyx_m);
+    if (!global_dict)
+        goto bad;
+    empty_dict = PyDict_New();
+    if (!empty_dict)
+        goto bad;
+    #if PY_VERSION_HEX >= 0x02050000
+    {
+        #if PY_MAJOR_VERSION >= 3
+        if (level == -1) {
+            if (strchr(__Pyx_MODULE_NAME, '.')) {
+                #if PY_VERSION_HEX < 0x03030000
+                PyObject *py_level = PyInt_FromLong(1);
+                if (!py_level)
+                    goto bad;
+                module = PyObject_CallFunctionObjArgs(py_import,
+                    name, global_dict, empty_dict, list, py_level, NULL);
+                Py_DECREF(py_level);
+                #else
+                module = PyImport_ImportModuleLevelObject(
+                    name, global_dict, empty_dict, list, 1);
+                #endif
+                if (!module) {
+                    if (!PyErr_ExceptionMatches(PyExc_ImportError))
+                        goto bad;
+                    PyErr_Clear();
+                }
+            }
+            level = 0; /* try absolute import on failure */
+        }
+        #endif
+        if (!module) {
+            #if PY_VERSION_HEX < 0x03030000
+            PyObject *py_level = PyInt_FromLong(level);
+            if (!py_level)
+                goto bad;
+            module = PyObject_CallFunctionObjArgs(py_import,
+                name, global_dict, empty_dict, list, py_level, NULL);
+            Py_DECREF(py_level);
+            #else
+            module = PyImport_ImportModuleLevelObject(
+                name, global_dict, empty_dict, list, level);
+            #endif
+        }
+    }
+    #else
+    if (level>0) {
+        PyErr_SetString(PyExc_RuntimeError, "Relative import is not supported for Python <=2.4.");
+        goto bad;
+    }
+    module = PyObject_CallFunctionObjArgs(py_import,
+        name, global_dict, empty_dict, list, NULL);
+    #endif
+bad:
+    #if PY_VERSION_HEX < 0x03030000
+    Py_XDECREF(py_import);
+    #endif
+    Py_XDECREF(empty_list);
+    Py_XDECREF(empty_dict);
+    return module;
+}
+
+static CYTHON_INLINE void __Pyx_RaiseImportError(PyObject *name) {
+#if PY_MAJOR_VERSION < 3
+    PyErr_Format(PyExc_ImportError, "cannot import name %.230s",
+                 PyString_AsString(name));
+#else
+    PyErr_Format(PyExc_ImportError, "cannot import name %S", name);
+#endif
+}
+
+static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_hid_t(hid_t val) {
+    const hid_t neg_one = (hid_t)-1, const_zero = (hid_t)0;
+    const int is_unsigned = const_zero < neg_one;
+    if ((sizeof(hid_t) == sizeof(char))  ||
+        (sizeof(hid_t) == sizeof(short))) {
+        return PyInt_FromLong((long)val);
+    } else if ((sizeof(hid_t) == sizeof(int)) ||
+               (sizeof(hid_t) == sizeof(long))) {
+        if (is_unsigned)
+            return PyLong_FromUnsignedLong((unsigned long)val);
+        else
+            return PyInt_FromLong((long)val);
+    } else if (sizeof(hid_t) == sizeof(PY_LONG_LONG)) {
+        if (is_unsigned)
+            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG)val);
+        else
+            return PyLong_FromLongLong((PY_LONG_LONG)val);
+    } else {
+        int one = 1; int little = (int)*(unsigned char *)&one;
+        unsigned char *bytes = (unsigned char *)&val;
+        return _PyLong_FromByteArray(bytes, sizeof(hid_t),
+                                     little, !is_unsigned);
+    }
+}
+
+static CYTHON_INLINE hsize_t __Pyx_PyInt_from_py_hsize_t(PyObject* x) {
+    const hsize_t neg_one = (hsize_t)-1, const_zero = (hsize_t)0;
+    const int is_unsigned = const_zero < neg_one;
+    if (sizeof(hsize_t) == sizeof(char)) {
+        if (is_unsigned)
+            return (hsize_t)__Pyx_PyInt_AsUnsignedChar(x);
+        else
+            return (hsize_t)__Pyx_PyInt_AsSignedChar(x);
+    } else if (sizeof(hsize_t) == sizeof(short)) {
+        if (is_unsigned)
+            return (hsize_t)__Pyx_PyInt_AsUnsignedShort(x);
+        else
+            return (hsize_t)__Pyx_PyInt_AsSignedShort(x);
+    } else if (sizeof(hsize_t) == sizeof(int)) {
+        if (is_unsigned)
+            return (hsize_t)__Pyx_PyInt_AsUnsignedInt(x);
+        else
+            return (hsize_t)__Pyx_PyInt_AsSignedInt(x);
+    } else if (sizeof(hsize_t) == sizeof(long)) {
+        if (is_unsigned)
+            return (hsize_t)__Pyx_PyInt_AsUnsignedLong(x);
+        else
+            return (hsize_t)__Pyx_PyInt_AsSignedLong(x);
+    } else if (sizeof(hsize_t) == sizeof(PY_LONG_LONG)) {
+        if (is_unsigned)
+            return (hsize_t)__Pyx_PyInt_AsUnsignedLongLong(x);
+        else
+            return (hsize_t)__Pyx_PyInt_AsSignedLongLong(x);
+    }  else {
+        #if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
+        PyErr_SetString(PyExc_RuntimeError,
+                        "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
+        #else
+        hsize_t val;
+        PyObject *v = __Pyx_PyNumber_Int(x);
+        #if PY_VERSION_HEX < 0x03000000
+        if (likely(v) && !PyLong_Check(v)) {
+            PyObject *tmp = v;
+            v = PyNumber_Long(tmp);
+            Py_DECREF(tmp);
+        }
+        #endif
+        if (likely(v)) {
+            int one = 1; int is_little = (int)*(unsigned char *)&one;
+            unsigned char *bytes = (unsigned char *)&val;
+            int ret = _PyLong_AsByteArray((PyLongObject *)v,
+                                          bytes, sizeof(val),
+                                          is_little, !is_unsigned);
+            Py_DECREF(v);
+            if (likely(!ret))
+                return val;
+        }
+        #endif
+        return (hsize_t)-1;
+    }
+}
+
+static CYTHON_INLINE hbool_t __Pyx_PyInt_from_py_hbool_t(PyObject* x) {
+    const hbool_t neg_one = (hbool_t)-1, const_zero = (hbool_t)0;
+    const int is_unsigned = const_zero < neg_one;
+    if (sizeof(hbool_t) == sizeof(char)) {
+        if (is_unsigned)
+            return (hbool_t)__Pyx_PyInt_AsUnsignedChar(x);
+        else
+            return (hbool_t)__Pyx_PyInt_AsSignedChar(x);
+    } else if (sizeof(hbool_t) == sizeof(short)) {
+        if (is_unsigned)
+            return (hbool_t)__Pyx_PyInt_AsUnsignedShort(x);
+        else
+            return (hbool_t)__Pyx_PyInt_AsSignedShort(x);
+    } else if (sizeof(hbool_t) == sizeof(int)) {
+        if (is_unsigned)
+            return (hbool_t)__Pyx_PyInt_AsUnsignedInt(x);
+        else
+            return (hbool_t)__Pyx_PyInt_AsSignedInt(x);
+    } else if (sizeof(hbool_t) == sizeof(long)) {
+        if (is_unsigned)
+            return (hbool_t)__Pyx_PyInt_AsUnsignedLong(x);
+        else
+            return (hbool_t)__Pyx_PyInt_AsSignedLong(x);
+    } else if (sizeof(hbool_t) == sizeof(PY_LONG_LONG)) {
+        if (is_unsigned)
+            return (hbool_t)__Pyx_PyInt_AsUnsignedLongLong(x);
+        else
+            return (hbool_t)__Pyx_PyInt_AsSignedLongLong(x);
+    }  else {
+        #if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
+        PyErr_SetString(PyExc_RuntimeError,
+                        "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
+        #else
+        hbool_t val;
+        PyObject *v = __Pyx_PyNumber_Int(x);
+        #if PY_VERSION_HEX < 0x03000000
+        if (likely(v) && !PyLong_Check(v)) {
+            PyObject *tmp = v;
+            v = PyNumber_Long(tmp);
+            Py_DECREF(tmp);
+        }
+        #endif
+        if (likely(v)) {
+            int one = 1; int is_little = (int)*(unsigned char *)&one;
+            unsigned char *bytes = (unsigned char *)&val;
+            int ret = _PyLong_AsByteArray((PyLongObject *)v,
+                                          bytes, sizeof(val),
+                                          is_little, !is_unsigned);
+            Py_DECREF(v);
+            if (likely(!ret))
+                return val;
+        }
+        #endif
+        return (hbool_t)-1;
+    }
+}
+
+static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_hsize_t(hsize_t val) {
+    const hsize_t neg_one = (hsize_t)-1, const_zero = (hsize_t)0;
+    const int is_unsigned = const_zero < neg_one;
+    if ((sizeof(hsize_t) == sizeof(char))  ||
+        (sizeof(hsize_t) == sizeof(short))) {
+        return PyInt_FromLong((long)val);
+    } else if ((sizeof(hsize_t) == sizeof(int)) ||
+               (sizeof(hsize_t) == sizeof(long))) {
+        if (is_unsigned)
+            return PyLong_FromUnsignedLong((unsigned long)val);
+        else
+            return PyInt_FromLong((long)val);
+    } else if (sizeof(hsize_t) == sizeof(PY_LONG_LONG)) {
+        if (is_unsigned)
+            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG)val);
+        else
+            return PyLong_FromLongLong((PY_LONG_LONG)val);
+    } else {
+        int one = 1; int little = (int)*(unsigned char *)&one;
+        unsigned char *bytes = (unsigned char *)&val;
+        return _PyLong_FromByteArray(bytes, sizeof(hsize_t),
+                                     little, !is_unsigned);
+    }
+}
+
+static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_hbool_t(hbool_t val) {
+    const hbool_t neg_one = (hbool_t)-1, const_zero = (hbool_t)0;
+    const int is_unsigned = const_zero < neg_one;
+    if ((sizeof(hbool_t) == sizeof(char))  ||
+        (sizeof(hbool_t) == sizeof(short))) {
+        return PyInt_FromLong((long)val);
+    } else if ((sizeof(hbool_t) == sizeof(int)) ||
+               (sizeof(hbool_t) == sizeof(long))) {
+        if (is_unsigned)
+            return PyLong_FromUnsignedLong((unsigned long)val);
+        else
+            return PyInt_FromLong((long)val);
+    } else if (sizeof(hbool_t) == sizeof(PY_LONG_LONG)) {
+        if (is_unsigned)
+            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG)val);
+        else
+            return PyLong_FromLongLong((PY_LONG_LONG)val);
+    } else {
+        int one = 1; int little = (int)*(unsigned char *)&one;
+        unsigned char *bytes = (unsigned char *)&val;
+        return _PyLong_FromByteArray(bytes, sizeof(hbool_t),
+                                     little, !is_unsigned);
+    }
+}
+
+static CYTHON_INLINE unsigned char __Pyx_PyInt_AsUnsignedChar(PyObject* x) {
+    const unsigned char neg_one = (unsigned char)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(unsigned char) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(unsigned char)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to unsigned char" :
+                    "value too large to convert to unsigned char");
+            }
+            return (unsigned char)-1;
+        }
+        return (unsigned char)val;
+    }
+    return (unsigned char)__Pyx_PyInt_AsUnsignedLong(x);
+}
+
+static CYTHON_INLINE unsigned short __Pyx_PyInt_AsUnsignedShort(PyObject* x) {
+    const unsigned short neg_one = (unsigned short)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(unsigned short) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(unsigned short)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to unsigned short" :
+                    "value too large to convert to unsigned short");
+            }
+            return (unsigned short)-1;
+        }
+        return (unsigned short)val;
+    }
+    return (unsigned short)__Pyx_PyInt_AsUnsignedLong(x);
+}
+
+static CYTHON_INLINE unsigned int __Pyx_PyInt_AsUnsignedInt(PyObject* x) {
+    const unsigned int neg_one = (unsigned int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(unsigned int) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(unsigned int)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to unsigned int" :
+                    "value too large to convert to unsigned int");
+            }
+            return (unsigned int)-1;
+        }
+        return (unsigned int)val;
+    }
+    return (unsigned int)__Pyx_PyInt_AsUnsignedLong(x);
+}
+
+static CYTHON_INLINE char __Pyx_PyInt_AsChar(PyObject* x) {
+    const char neg_one = (char)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(char) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(char)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to char" :
+                    "value too large to convert to char");
+            }
+            return (char)-1;
+        }
+        return (char)val;
+    }
+    return (char)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE short __Pyx_PyInt_AsShort(PyObject* x) {
+    const short neg_one = (short)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(short) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(short)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to short" :
+                    "value too large to convert to short");
+            }
+            return (short)-1;
+        }
+        return (short)val;
+    }
+    return (short)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE int __Pyx_PyInt_AsInt(PyObject* x) {
+    const int neg_one = (int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(int) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(int)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to int" :
+                    "value too large to convert to int");
+            }
+            return (int)-1;
+        }
+        return (int)val;
+    }
+    return (int)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE signed char __Pyx_PyInt_AsSignedChar(PyObject* x) {
+    const signed char neg_one = (signed char)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(signed char) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(signed char)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to signed char" :
+                    "value too large to convert to signed char");
+            }
+            return (signed char)-1;
+        }
+        return (signed char)val;
+    }
+    return (signed char)__Pyx_PyInt_AsSignedLong(x);
+}
+
+static CYTHON_INLINE signed short __Pyx_PyInt_AsSignedShort(PyObject* x) {
+    const signed short neg_one = (signed short)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(signed short) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(signed short)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to signed short" :
+                    "value too large to convert to signed short");
+            }
+            return (signed short)-1;
+        }
+        return (signed short)val;
+    }
+    return (signed short)__Pyx_PyInt_AsSignedLong(x);
+}
+
+static CYTHON_INLINE signed int __Pyx_PyInt_AsSignedInt(PyObject* x) {
+    const signed int neg_one = (signed int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(signed int) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(signed int)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to signed int" :
+                    "value too large to convert to signed int");
+            }
+            return (signed int)-1;
+        }
+        return (signed int)val;
+    }
+    return (signed int)__Pyx_PyInt_AsSignedLong(x);
+}
+
+static CYTHON_INLINE int __Pyx_PyInt_AsLongDouble(PyObject* x) {
+    const int neg_one = (int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(int) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(int)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to int" :
+                    "value too large to convert to int");
+            }
+            return (int)-1;
+        }
+        return (int)val;
+    }
+    return (int)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE unsigned long __Pyx_PyInt_AsUnsignedLong(PyObject* x) {
+    const unsigned long neg_one = (unsigned long)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to unsigned long");
+            return (unsigned long)-1;
+        }
+        return (unsigned long)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to unsigned long");
+                return (unsigned long)-1;
+            }
+            return (unsigned long)PyLong_AsUnsignedLong(x);
+        } else {
+            return (unsigned long)PyLong_AsLong(x);
+        }
+    } else {
+        unsigned long val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (unsigned long)-1;
+        val = __Pyx_PyInt_AsUnsignedLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE unsigned PY_LONG_LONG __Pyx_PyInt_AsUnsignedLongLong(PyObject* x) {
+    const unsigned PY_LONG_LONG neg_one = (unsigned PY_LONG_LONG)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to unsigned PY_LONG_LONG");
+            return (unsigned PY_LONG_LONG)-1;
+        }
+        return (unsigned PY_LONG_LONG)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to unsigned PY_LONG_LONG");
+                return (unsigned PY_LONG_LONG)-1;
+            }
+            return (unsigned PY_LONG_LONG)PyLong_AsUnsignedLongLong(x);
+        } else {
+            return (unsigned PY_LONG_LONG)PyLong_AsLongLong(x);
+        }
+    } else {
+        unsigned PY_LONG_LONG val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (unsigned PY_LONG_LONG)-1;
+        val = __Pyx_PyInt_AsUnsignedLongLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE long __Pyx_PyInt_AsLong(PyObject* x) {
+    const long neg_one = (long)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to long");
+            return (long)-1;
+        }
+        return (long)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to long");
+                return (long)-1;
+            }
+            return (long)PyLong_AsUnsignedLong(x);
+        } else {
+            return (long)PyLong_AsLong(x);
+        }
+    } else {
+        long val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (long)-1;
+        val = __Pyx_PyInt_AsLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE PY_LONG_LONG __Pyx_PyInt_AsLongLong(PyObject* x) {
+    const PY_LONG_LONG neg_one = (PY_LONG_LONG)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to PY_LONG_LONG");
+            return (PY_LONG_LONG)-1;
+        }
+        return (PY_LONG_LONG)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to PY_LONG_LONG");
+                return (PY_LONG_LONG)-1;
+            }
+            return (PY_LONG_LONG)PyLong_AsUnsignedLongLong(x);
+        } else {
+            return (PY_LONG_LONG)PyLong_AsLongLong(x);
+        }
+    } else {
+        PY_LONG_LONG val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (PY_LONG_LONG)-1;
+        val = __Pyx_PyInt_AsLongLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE signed long __Pyx_PyInt_AsSignedLong(PyObject* x) {
+    const signed long neg_one = (signed long)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to signed long");
+            return (signed long)-1;
+        }
+        return (signed long)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to signed long");
+                return (signed long)-1;
+            }
+            return (signed long)PyLong_AsUnsignedLong(x);
+        } else {
+            return (signed long)PyLong_AsLong(x);
+        }
+    } else {
+        signed long val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (signed long)-1;
+        val = __Pyx_PyInt_AsSignedLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE signed PY_LONG_LONG __Pyx_PyInt_AsSignedLongLong(PyObject* x) {
+    const signed PY_LONG_LONG neg_one = (signed PY_LONG_LONG)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to signed PY_LONG_LONG");
+            return (signed PY_LONG_LONG)-1;
+        }
+        return (signed PY_LONG_LONG)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to signed PY_LONG_LONG");
+                return (signed PY_LONG_LONG)-1;
+            }
+            return (signed PY_LONG_LONG)PyLong_AsUnsignedLongLong(x);
+        } else {
+            return (signed PY_LONG_LONG)PyLong_AsLongLong(x);
+        }
+    } else {
+        signed PY_LONG_LONG val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (signed PY_LONG_LONG)-1;
+        val = __Pyx_PyInt_AsSignedLongLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static int __Pyx_check_binary_version(void) {
+    char ctversion[4], rtversion[4];
+    PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION);
+    PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion());
+    if (ctversion[0] != rtversion[0] || ctversion[2] != rtversion[2]) {
+        char message[200];
+        PyOS_snprintf(message, sizeof(message),
+                      "compiletime version %s of module '%.100s' "
+                      "does not match runtime version %s",
+                      ctversion, __Pyx_MODULE_NAME, rtversion);
+        #if PY_VERSION_HEX < 0x02050000
+        return PyErr_Warn(NULL, message);
+        #else
+        return PyErr_WarnEx(NULL, message, 1);
+        #endif
+    }
+    return 0;
+}
+
+static int __Pyx_ExportFunction(const char *name, void (*f)(void), const char *sig) {
+    PyObject *d = 0;
+    PyObject *cobj = 0;
+    union {
+        void (*fp)(void);
+        void *p;
+    } tmp;
+    d = PyObject_GetAttrString(__pyx_m, (char *)"__pyx_capi__");
+    if (!d) {
+        PyErr_Clear();
+        d = PyDict_New();
+        if (!d)
+            goto bad;
+        Py_INCREF(d);
+        if (PyModule_AddObject(__pyx_m, (char *)"__pyx_capi__", d) < 0)
+            goto bad;
+    }
+    tmp.fp = f;
+#if PY_VERSION_HEX >= 0x02070000 && !(PY_MAJOR_VERSION==3&&PY_MINOR_VERSION==0)
+    cobj = PyCapsule_New(tmp.p, sig, 0);
+#else
+    cobj = PyCObject_FromVoidPtrAndDesc(tmp.p, (void *)sig, 0);
+#endif
+    if (!cobj)
+        goto bad;
+    if (PyDict_SetItemString(d, name, cobj) < 0)
+        goto bad;
+    Py_DECREF(cobj);
+    Py_DECREF(d);
+    return 0;
+bad:
+    Py_XDECREF(cobj);
+    Py_XDECREF(d);
+    return -1;
+}
+
+#ifndef __PYX_HAVE_RT_ImportModule
+#define __PYX_HAVE_RT_ImportModule
+static PyObject *__Pyx_ImportModule(const char *name) {
+    PyObject *py_name = 0;
+    PyObject *py_module = 0;
+    py_name = __Pyx_PyIdentifier_FromString(name);
+    if (!py_name)
+        goto bad;
+    py_module = PyImport_Import(py_name);
+    Py_DECREF(py_name);
+    return py_module;
+bad:
+    Py_XDECREF(py_name);
+    return 0;
+}
+#endif
+
+#ifndef __PYX_HAVE_RT_ImportType
+#define __PYX_HAVE_RT_ImportType
+static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name,
+    size_t size, int strict)
+{
+    PyObject *py_module = 0;
+    PyObject *result = 0;
+    PyObject *py_name = 0;
+    char warning[200];
+    Py_ssize_t basicsize;
+#ifdef Py_LIMITED_API
+    PyObject *py_basicsize;
+#endif
+    py_module = __Pyx_ImportModule(module_name);
+    if (!py_module)
+        goto bad;
+    py_name = __Pyx_PyIdentifier_FromString(class_name);
+    if (!py_name)
+        goto bad;
+    result = PyObject_GetAttr(py_module, py_name);
+    Py_DECREF(py_name);
+    py_name = 0;
+    Py_DECREF(py_module);
+    py_module = 0;
+    if (!result)
+        goto bad;
+    if (!PyType_Check(result)) {
+        PyErr_Format(PyExc_TypeError,
+            "%s.%s is not a type object",
+            module_name, class_name);
+        goto bad;
+    }
+#ifndef Py_LIMITED_API
+    basicsize = ((PyTypeObject *)result)->tp_basicsize;
+#else
+    py_basicsize = PyObject_GetAttrString(result, "__basicsize__");
+    if (!py_basicsize)
+        goto bad;
+    basicsize = PyLong_AsSsize_t(py_basicsize);
+    Py_DECREF(py_basicsize);
+    py_basicsize = 0;
+    if (basicsize == (Py_ssize_t)-1 && PyErr_Occurred())
+        goto bad;
+#endif
+    if (!strict && (size_t)basicsize > size) {
+        PyOS_snprintf(warning, sizeof(warning),
+            "%s.%s size changed, may indicate binary incompatibility",
+            module_name, class_name);
+        #if PY_VERSION_HEX < 0x02050000
+        if (PyErr_Warn(NULL, warning) < 0) goto bad;
+        #else
+        if (PyErr_WarnEx(NULL, warning, 0) < 0) goto bad;
+        #endif
+    }
+    else if ((size_t)basicsize != size) {
+        PyErr_Format(PyExc_ValueError,
+            "%s.%s has the wrong size, try recompiling",
+            module_name, class_name);
+        goto bad;
+    }
+    return (PyTypeObject *)result;
+bad:
+    Py_XDECREF(py_module);
+    Py_XDECREF(result);
+    return NULL;
+}
+#endif
+
+static void* __Pyx_GetVtable(PyObject *dict) {
+    void* ptr;
+    PyObject *ob = PyMapping_GetItemString(dict, (char *)"__pyx_vtable__");
+    if (!ob)
+        goto bad;
+#if PY_VERSION_HEX >= 0x02070000 && !(PY_MAJOR_VERSION==3&&PY_MINOR_VERSION==0)
+    ptr = PyCapsule_GetPointer(ob, 0);
+#else
+    ptr = PyCObject_AsVoidPtr(ob);
+#endif
+    if (!ptr && !PyErr_Occurred())
+        PyErr_SetString(PyExc_RuntimeError, "invalid vtable found for imported type");
+    Py_DECREF(ob);
+    return ptr;
+bad:
+    Py_XDECREF(ob);
+    return NULL;
+}
+
+#ifndef __PYX_HAVE_RT_ImportFunction
+#define __PYX_HAVE_RT_ImportFunction
+static int __Pyx_ImportFunction(PyObject *module, const char *funcname, void (**f)(void), const char *sig) {
+    PyObject *d = 0;
+    PyObject *cobj = 0;
+    union {
+        void (*fp)(void);
+        void *p;
+    } tmp;
+    d = PyObject_GetAttrString(module, (char *)"__pyx_capi__");
+    if (!d)
+        goto bad;
+    cobj = PyDict_GetItemString(d, funcname);
+    if (!cobj) {
+        PyErr_Format(PyExc_ImportError,
+            "%s does not export expected C function %s",
+                PyModule_GetName(module), funcname);
+        goto bad;
+    }
+#if PY_VERSION_HEX >= 0x02070000 && !(PY_MAJOR_VERSION==3 && PY_MINOR_VERSION==0)
+    if (!PyCapsule_IsValid(cobj, sig)) {
+        PyErr_Format(PyExc_TypeError,
+            "C function %s.%s has wrong signature (expected %s, got %s)",
+             PyModule_GetName(module), funcname, sig, PyCapsule_GetName(cobj));
+        goto bad;
+    }
+    tmp.p = PyCapsule_GetPointer(cobj, sig);
+#else
+    {const char *desc, *s1, *s2;
+    desc = (const char *)PyCObject_GetDesc(cobj);
+    if (!desc)
+        goto bad;
+    s1 = desc; s2 = sig;
+    while (*s1 != '\0' && *s1 == *s2) { s1++; s2++; }
+    if (*s1 != *s2) {
+        PyErr_Format(PyExc_TypeError,
+            "C function %s.%s has wrong signature (expected %s, got %s)",
+             PyModule_GetName(module), funcname, sig, desc);
+        goto bad;
+    }
+    tmp.p = PyCObject_AsVoidPtr(cobj);}
+#endif
+    *f = tmp.fp;
+    if (!(*f))
+        goto bad;
+    Py_DECREF(d);
+    return 0;
+bad:
+    Py_XDECREF(d);
+    return -1;
+}
+#endif
+
+static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) {
+    int start = 0, mid = 0, end = count - 1;
+    if (end >= 0 && code_line > entries[end].code_line) {
+        return count;
+    }
+    while (start < end) {
+        mid = (start + end) / 2;
+        if (code_line < entries[mid].code_line) {
+            end = mid;
+        } else if (code_line > entries[mid].code_line) {
+             start = mid + 1;
+        } else {
+            return mid;
+        }
+    }
+    if (code_line <= entries[mid].code_line) {
+        return mid;
+    } else {
+        return mid + 1;
+    }
+}
+static PyCodeObject *__pyx_find_code_object(int code_line) {
+    PyCodeObject* code_object;
+    int pos;
+    if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) {
+        return NULL;
+    }
+    pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
+    if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) {
+        return NULL;
+    }
+    code_object = __pyx_code_cache.entries[pos].code_object;
+    Py_INCREF(code_object);
+    return code_object;
+}
+static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) {
+    int pos, i;
+    __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries;
+    if (unlikely(!code_line)) {
+        return;
+    }
+    if (unlikely(!entries)) {
+        entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry));
+        if (likely(entries)) {
+            __pyx_code_cache.entries = entries;
+            __pyx_code_cache.max_count = 64;
+            __pyx_code_cache.count = 1;
+            entries[0].code_line = code_line;
+            entries[0].code_object = code_object;
+            Py_INCREF(code_object);
+        }
+        return;
+    }
+    pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
+    if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) {
+        PyCodeObject* tmp = entries[pos].code_object;
+        entries[pos].code_object = code_object;
+        Py_DECREF(tmp);
+        return;
+    }
+    if (__pyx_code_cache.count == __pyx_code_cache.max_count) {
+        int new_max = __pyx_code_cache.max_count + 64;
+        entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc(
+            __pyx_code_cache.entries, new_max*sizeof(__Pyx_CodeObjectCacheEntry));
+        if (unlikely(!entries)) {
+            return;
+        }
+        __pyx_code_cache.entries = entries;
+        __pyx_code_cache.max_count = new_max;
+    }
+    for (i=__pyx_code_cache.count; i>pos; i--) {
+        entries[i] = entries[i-1];
+    }
+    entries[pos].code_line = code_line;
+    entries[pos].code_object = code_object;
+    __pyx_code_cache.count++;
+    Py_INCREF(code_object);
+}
+
+#include "compile.h"
+#include "frameobject.h"
+#include "traceback.h"
+static PyCodeObject* __Pyx_CreateCodeObjectForTraceback(
+            const char *funcname, int c_line,
+            int py_line, const char *filename) {
+    PyCodeObject *py_code = 0;
+    PyObject *py_srcfile = 0;
+    PyObject *py_funcname = 0;
+    #if PY_MAJOR_VERSION < 3
+    py_srcfile = PyString_FromString(filename);
+    #else
+    py_srcfile = PyUnicode_FromString(filename);
+    #endif
+    if (!py_srcfile) goto bad;
+    if (c_line) {
+        #if PY_MAJOR_VERSION < 3
+        py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
+        #else
+        py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
+        #endif
+    }
+    else {
+        #if PY_MAJOR_VERSION < 3
+        py_funcname = PyString_FromString(funcname);
+        #else
+        py_funcname = PyUnicode_FromString(funcname);
+        #endif
+    }
+    if (!py_funcname) goto bad;
+    py_code = __Pyx_PyCode_New(
+        0,            /*int argcount,*/
+        0,            /*int kwonlyargcount,*/
+        0,            /*int nlocals,*/
+        0,            /*int stacksize,*/
+        0,            /*int flags,*/
+        __pyx_empty_bytes, /*PyObject *code,*/
+        __pyx_empty_tuple, /*PyObject *consts,*/
+        __pyx_empty_tuple, /*PyObject *names,*/
+        __pyx_empty_tuple, /*PyObject *varnames,*/
+        __pyx_empty_tuple, /*PyObject *freevars,*/
+        __pyx_empty_tuple, /*PyObject *cellvars,*/
+        py_srcfile,   /*PyObject *filename,*/
+        py_funcname,  /*PyObject *name,*/
+        py_line,      /*int firstlineno,*/
+        __pyx_empty_bytes  /*PyObject *lnotab*/
+    );
+    Py_DECREF(py_srcfile);
+    Py_DECREF(py_funcname);
+    return py_code;
+bad:
+    Py_XDECREF(py_srcfile);
+    Py_XDECREF(py_funcname);
+    return NULL;
+}
+static void __Pyx_AddTraceback(const char *funcname, int c_line,
+                               int py_line, const char *filename) {
+    PyCodeObject *py_code = 0;
+    PyObject *py_globals = 0;
+    PyFrameObject *py_frame = 0;
+    py_code = __pyx_find_code_object(c_line ? c_line : py_line);
+    if (!py_code) {
+        py_code = __Pyx_CreateCodeObjectForTraceback(
+            funcname, c_line, py_line, filename);
+        if (!py_code) goto bad;
+        __pyx_insert_code_object(c_line ? c_line : py_line, py_code);
+    }
+    py_globals = PyModule_GetDict(__pyx_m);
+    if (!py_globals) goto bad;
+    py_frame = PyFrame_New(
+        PyThreadState_GET(), /*PyThreadState *tstate,*/
+        py_code,             /*PyCodeObject *code,*/
+        py_globals,          /*PyObject *globals,*/
+        0                    /*PyObject *locals*/
+    );
+    if (!py_frame) goto bad;
+    py_frame->f_lineno = py_line;
+    PyTraceBack_Here(py_frame);
+bad:
+    Py_XDECREF(py_code);
+    Py_XDECREF(py_frame);
+}
+
+static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
+    while (t->p) {
+        #if PY_MAJOR_VERSION < 3
+        if (t->is_unicode) {
+            *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL);
+        } else if (t->intern) {
+            *t->p = PyString_InternFromString(t->s);
+        } else {
+            *t->p = PyString_FromStringAndSize(t->s, t->n - 1);
+        }
+        #else  /* Python 3+ has unicode identifiers */
+        if (t->is_unicode | t->is_str) {
+            if (t->intern) {
+                *t->p = PyUnicode_InternFromString(t->s);
+            } else if (t->encoding) {
+                *t->p = PyUnicode_Decode(t->s, t->n - 1, t->encoding, NULL);
+            } else {
+                *t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1);
+            }
+        } else {
+            *t->p = PyBytes_FromStringAndSize(t->s, t->n - 1);
+        }
+        #endif
+        if (!*t->p)
+            return -1;
+        ++t;
+    }
+    return 0;
+}
+
+static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) {
+   int is_true = x == Py_True;
+   if (is_true | (x == Py_False) | (x == Py_None)) return is_true;
+   else return PyObject_IsTrue(x);
+}
+static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x) {
+  PyNumberMethods *m;
+  const char *name = NULL;
+  PyObject *res = NULL;
+#if PY_VERSION_HEX < 0x03000000
+  if (PyInt_Check(x) || PyLong_Check(x))
+#else
+  if (PyLong_Check(x))
+#endif
+    return Py_INCREF(x), x;
+  m = Py_TYPE(x)->tp_as_number;
+#if PY_VERSION_HEX < 0x03000000
+  if (m && m->nb_int) {
+    name = "int";
+    res = PyNumber_Int(x);
+  }
+  else if (m && m->nb_long) {
+    name = "long";
+    res = PyNumber_Long(x);
+  }
+#else
+  if (m && m->nb_int) {
+    name = "int";
+    res = PyNumber_Long(x);
+  }
+#endif
+  if (res) {
+#if PY_VERSION_HEX < 0x03000000
+    if (!PyInt_Check(res) && !PyLong_Check(res)) {
+#else
+    if (!PyLong_Check(res)) {
+#endif
+      PyErr_Format(PyExc_TypeError,
+                   "__%s__ returned non-%s (type %.200s)",
+                   name, name, Py_TYPE(res)->tp_name);
+      Py_DECREF(res);
+      return NULL;
+    }
+  }
+  else if (!PyErr_Occurred()) {
+    PyErr_SetString(PyExc_TypeError,
+                    "an integer is required");
+  }
+  return res;
+}
+static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
+  Py_ssize_t ival;
+  PyObject* x = PyNumber_Index(b);
+  if (!x) return -1;
+  ival = PyInt_AsSsize_t(x);
+  Py_DECREF(x);
+  return ival;
+}
+static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) {
+#if PY_VERSION_HEX < 0x02050000
+   if (ival <= LONG_MAX)
+       return PyInt_FromLong((long)ival);
+   else {
+       unsigned char *bytes = (unsigned char *) &ival;
+       int one = 1; int little = (int)*(unsigned char*)&one;
+       return _PyLong_FromByteArray(bytes, sizeof(size_t), little, 0);
+   }
+#else
+   return PyInt_FromSize_t(ival);
+#endif
+}
+static CYTHON_INLINE size_t __Pyx_PyInt_AsSize_t(PyObject* x) {
+   unsigned PY_LONG_LONG val = __Pyx_PyInt_AsUnsignedLongLong(x);
+   if (unlikely(val == (unsigned PY_LONG_LONG)-1 && PyErr_Occurred())) {
+       return (size_t)-1;
+   } else if (unlikely(val != (unsigned PY_LONG_LONG)(size_t)val)) {
+       PyErr_SetString(PyExc_OverflowError,
+                       "value too large to convert to size_t");
+       return (size_t)-1;
+   }
+   return (size_t)val;
+}
+
+
+#endif /* Py_PYTHON_H */
diff --git a/h5py/h5p.pxd b/h5py/h5p.pxd
new file mode 100644
index 0000000..50804a7
--- /dev/null
+++ b/h5py/h5p.pxd
@@ -0,0 +1,83 @@
+# This file is part of h5py, a Python interface to the HDF5 library.
+#
+# http://www.h5py.org
+#
+# Copyright 2008-2013 Andrew Collette and contributors
+#
+# License:  Standard 3-clause BSD; see "license.txt" for full license terms
+#           and contributor agreement.
+
+from defs cimport *
+
+from _objects cimport ObjectID
+
+# --- Base classes ---
+
+cdef class PropID(ObjectID):
+    """ Base class for all property lists """
+    pass
+
+cdef class PropClassID(PropID):
+    """ Represents an HDF5 property list class.  These can be either (locked)
+        library-defined classes or user-created classes.
+    """
+    pass
+
+cdef class PropInstanceID(PropID):
+    """ Represents an instance of a property list class (i.e. an actual list
+        which can be passed on to other API functions).
+    """
+    pass
+
+cdef class PropCreateID(PropInstanceID):
+    """ Base class for all object creation lists.
+
+        Also includes string character set methods.
+    """
+    pass
+
+cdef class PropCopyID(PropInstanceID):
+    """ Property list for copying objects (as in h5o.copy) """
+
+# --- Object creation ---
+
+cdef class PropOCID(PropCreateID):
+    """ Object creation property list """
+    pass
+
+cdef class PropDCID(PropOCID):
+    """ Dataset creation property list """
+    pass
+
+cdef class PropFCID(PropCreateID):
+    """ File creation property list """
+    pass
+
+
+# --- Object access ---
+
+cdef class PropFAID(PropInstanceID):
+    """ File access property list """
+    pass
+
+cdef class PropDXID(PropInstanceID):
+    """ Dataset transfer property list """
+    pass
+
+
+# --- New in 1.8 ---
+
+cdef class PropLCID(PropCreateID):
+    """ Link creation property list """
+    pass
+
+cdef class PropLAID(PropInstanceID):
+    """ Link access property list """
+    cdef char* _buf
+
+cdef class PropGCID(PropOCID):
+    """ Group creation property list """
+    pass
+
+cdef hid_t pdefault(PropID pid)
+cdef object propwrap(hid_t id_in)
diff --git a/h5py/h5p.pyx b/h5py/h5p.pyx
new file mode 100644
index 0000000..421670d
--- /dev/null
+++ b/h5py/h5p.pyx
@@ -0,0 +1,1191 @@
+# This file is part of h5py, a Python interface to the HDF5 library.
+#
+# http://www.h5py.org
+#
+# Copyright 2008-2013 Andrew Collette and contributors
+#
+# License:  Standard 3-clause BSD; see "license.txt" for full license terms
+#           and contributor agreement.
+
+"""
+    HDF5 property list interface.
+"""
+
+include "config.pxi"
+
+# Compile-time imports
+from utils cimport  require_tuple, convert_dims, convert_tuple, \
+                    emalloc, efree, \
+                    check_numpy_write, check_numpy_read
+from numpy cimport ndarray, import_array
+from h5t cimport TypeID, py_create
+from h5ac cimport CacheConfig
+from h5py import _objects
+
+# Initialization
+import_array()
+
+# === C API ===================================================================
+
+cdef hid_t pdefault(PropID pid):
+
+    if pid is None:
+        return <hid_t>H5P_DEFAULT
+    return pid.id
+
+cdef object propwrap(hid_t id_in):
+
+    clsid = H5Pget_class(id_in)
+    try:
+        if H5Pequal(clsid, H5P_FILE_CREATE):
+            pcls = PropFCID
+        elif H5Pequal(clsid, H5P_FILE_ACCESS):
+            pcls = PropFAID
+        elif H5Pequal(clsid, H5P_DATASET_CREATE):
+            pcls = PropDCID
+        elif H5Pequal(clsid, H5P_DATASET_XFER):
+            pcls = PropDXID
+        elif H5Pequal(clsid, H5P_OBJECT_COPY):
+            pcls = PropCopyID
+        elif H5Pequal(clsid, H5P_LINK_CREATE):
+            pcls = PropLCID
+        elif H5Pequal(clsid, H5P_LINK_ACCESS):
+            pcls = PropLAID
+        elif H5Pequal(clsid, H5P_GROUP_CREATE):
+            pcls = PropGCID
+        elif H5Pequal(clsid, H5P_DATASET_ACCESS):
+            pcls = PropDAID
+        elif H5Pequal(clsid, H5P_OBJECT_CREATE):
+            pcls = PropOCID
+
+        else:
+            raise ValueError("No class found for ID %d" % id_in)
+
+        return pcls.open(id_in)
+    finally:
+        H5Pclose_class(clsid)
+
+cdef object lockcls(hid_t id_in):
+    cdef PropClassID pid
+    pid = PropClassID.open(id_in)
+    pid.locked = 1
+    return pid
+
+
+# === Public constants and data structures ====================================
+
+# Property list classes
+# These need to be locked, as the library won't let you close them.
+
+
+NO_CLASS       = lockcls(H5P_NO_CLASS)
+FILE_CREATE    = lockcls(H5P_FILE_CREATE)
+FILE_ACCESS    = lockcls(H5P_FILE_ACCESS)
+DATASET_CREATE = lockcls(H5P_DATASET_CREATE)
+DATASET_XFER   = lockcls(H5P_DATASET_XFER)
+DATASET_ACCESS = lockcls(H5P_DATASET_ACCESS)
+
+OBJECT_COPY = lockcls(H5P_OBJECT_COPY)
+
+LINK_CREATE = lockcls(H5P_LINK_CREATE)
+LINK_ACCESS = lockcls(H5P_LINK_ACCESS)
+GROUP_CREATE = lockcls(H5P_GROUP_CREATE)
+OBJECT_CREATE = lockcls(H5P_OBJECT_CREATE)
+
+CRT_ORDER_TRACKED = H5P_CRT_ORDER_TRACKED
+CRT_ORDER_INDEXED = H5P_CRT_ORDER_INDEXED
+
+DEFAULT = None   # In the HDF5 header files this is actually 0, which is an
+                 # invalid identifier.  The new strategy for default options
+                 # is to make them all None, to better match the Python style
+                 # for keyword arguments.
+
+
+# === Property list functional API ============================================
+
+def create(PropClassID cls not None):
+    """(PropClassID cls) => PropID
+
+    Create a new property list as an instance of a class; classes are:
+
+    - FILE_CREATE
+    - FILE_ACCESS
+    - DATASET_CREATE
+    - DATASET_XFER
+    - DATASET_ACCESS
+    - LINK_CREATE
+    - LINK_ACCESS
+    - GROUP_CREATE
+    - OBJECT_COPY
+    - OBJECT_CREATE
+    """
+    cdef hid_t newid
+    newid = H5Pcreate(cls.id)
+    return propwrap(newid)
+
+# === Class API ===============================================================
+
+cdef class PropID(ObjectID):
+
+    """
+        Base class for all property lists and classes
+    """
+
+
+    def equal(self, PropID plist not None):
+        """(PropID plist) => BOOL
+
+        Compare this property list (or class) to another for equality.
+        """
+        return <bint>(H5Pequal(self.id, plist.id))
+
+    def __richcmp__(self, object other, int how):
+        cdef bint truthval = 0
+        if how != 2 and how != 3:
+            return NotImplemented
+        if type(self) == type(other):
+            truthval = self.equal(other)
+
+        if how == 2:
+            return truthval
+        return not truthval
+
+    def __hash__(self):
+        raise TypeError("Property lists are unhashable")
+
+cdef class PropClassID(PropID):
+
+    """
+        An HDF5 property list class.
+
+        * Hashable: Yes, by identifier
+        * Equality: Logical H5P comparison
+    """
+
+    def __richcmp__(self, object other, int how):
+        return PropID.__richcmp__(self, other, how)
+
+    def __hash__(self):
+        """ Since classes are library-created and immutable, they are uniquely
+            identified by their HDF5 identifiers.
+        """
+        return hash(self.id)
+
+cdef class PropInstanceID(PropID):
+
+    """
+        Base class for property list instance objects.  Provides methods which
+        are common across all HDF5 property list classes.
+
+        * Hashable: No
+        * Equality: Logical H5P comparison
+    """
+
+
+    def copy(self):
+        """() => PropList newid
+
+         Create a new copy of an existing property list object.
+        """
+        return type(self)(H5Pcopy(self.id))
+
+
+    def _close(self):
+        """()
+
+        Terminate access through this identifier.  You shouldn't have to
+        do this manually, as propery lists are automatically deleted when
+        their Python wrappers are freed.
+        """
+        with _objects.registry.lock:
+            H5Pclose(self.id)
+            if not self.valid:
+                del _objects.registry[self.id]
+
+
+    def get_class(self):
+        """() => PropClassID
+
+        Determine the class of a property list object.
+        """
+        return PropClassID.open(H5Pget_class(self.id))
+
+cdef class PropCreateID(PropInstanceID):
+
+    """
+        Generic object creation property list.
+    """
+    pass
+
+cdef class PropCopyID(PropInstanceID):
+
+    """
+        Generic object copy property list
+    """
+
+
+    def set_copy_object(self, unsigned int flags):
+        """(UINT flags)
+
+        Set flags for object copying process.  Legal flags are
+        from the h5o.COPY* family:
+
+        h5o.COPY_SHALLOW_HIERARCHY_FLAG
+            Copy only immediate members of a group.
+
+        h5o.COPY_EXPAND_SOFT_LINK_FLAG
+            Expand soft links into new objects.
+
+        h5o.COPY_EXPAND_EXT_LINK_FLAG
+            Expand external link into new objects.
+
+        h5o.COPY_EXPAND_REFERENCE_FLAG
+            Copy objects that are pointed to by references.
+
+        h5o.COPY_WITHOUT_ATTR_FLAG
+            Copy object without copying attributes.
+        """
+        H5Pset_copy_object(self.id, flags)
+
+
+    def get_copy_object(self):
+        """() => UINT flags
+
+        Get copy process flags. Legal flags are h5o.COPY*.
+        """
+        cdef unsigned int flags
+        H5Pget_copy_object(self.id, &flags)
+        return flags
+
+
+# === Concrete list implementations ===========================================
+
+# File creation
+
+cdef class PropFCID(PropCreateID):
+
+    """
+        File creation property list.
+    """
+
+
+    def get_version(self):
+        """() => TUPLE version_info
+
+        Determine version information of various file attributes.
+        Elements are:
+
+        0.  UINT Super block version number
+        1.  UINT Freelist version number
+        2.  UINT Symbol table version number
+        3.  UINT Shared object header version number
+        """
+        cdef herr_t retval
+        cdef unsigned int super_
+        cdef unsigned int freelist
+        cdef unsigned int stab
+        cdef unsigned int shhdr
+
+        H5Pget_version(self.id, &super_, &freelist, &stab, &shhdr)
+
+        return (super_, freelist, stab, shhdr)
+
+
+    def set_userblock(self, hsize_t size):
+        """(INT/LONG size)
+
+        Set the file user block size, in bytes.
+        Must be a power of 2, and at least 512.
+        """
+        H5Pset_userblock(self.id, size)
+
+
+    def get_userblock(self):
+        """() => LONG size
+
+        Determine the user block size, in bytes.
+        """
+        cdef hsize_t size
+        H5Pget_userblock(self.id, &size)
+        return size
+
+
+    def set_sizes(self, size_t addr, size_t size):
+        """(UINT addr, UINT size)
+
+        Set the addressing offsets and lengths for objects
+        in an HDF5 file, in bytes.
+        """
+        H5Pset_sizes(self.id, addr, size)
+
+
+    def get_sizes(self):
+        """() => TUPLE sizes
+
+        Determine addressing offsets and lengths for objects in an
+        HDF5 file, in bytes.  Return value is a 2-tuple with values:
+
+        0.  UINT Address offsets
+        1.  UINT Lengths
+        """
+        cdef size_t addr
+        cdef size_t size
+        H5Pget_sizes(self.id, &addr, &size)
+        return (addr, size)
+
+    def set_link_creation_order(self, unsigned int flags):
+        """ (UINT flags)
+
+        Set tracking and indexing of creation order for links added to this group
+
+        flags -- h5p.CRT_ORDER_TRACKED, h5p.CRT_ORDER_INDEXED
+        """
+        H5Pset_link_creation_order(self.id, flags)
+
+    def get_link_creation_order(self):
+        """ () -> UINT flags
+
+        Get tracking and indexing of creation order for links added to this group
+        """
+        cdef unsigned int flags
+        H5Pget_link_creation_order(self.id, &flags)
+        return flags
+
+
+# Dataset creation
+cdef class PropDCID(PropOCID):
+
+    """
+        Dataset creation property list.
+    """
+
+
+    def set_layout(self, int layout_code):
+        """(INT layout_code)
+
+        Set dataset storage strategy; legal values are:
+
+        - h5d.COMPACT
+        - h5d.CONTIGUOUS
+        - h5d.CHUNKED
+        """
+        H5Pset_layout(self.id, layout_code)
+
+
+    def get_layout(self):
+        """() => INT layout_code
+
+        Determine the storage strategy of a dataset; legal values are:
+
+        - h5d.COMPACT
+        - h5d.CONTIGUOUS
+        - h5d.CHUNKED
+        """
+        return <int>H5Pget_layout(self.id)
+
+
+    def set_chunk(self, object chunksize):
+        """(TUPLE chunksize)
+
+        Set the dataset chunk size.  It's up to you to provide
+        values which are compatible with your dataset.
+        """
+        cdef int rank
+        cdef hsize_t* dims
+        dims = NULL
+
+        require_tuple(chunksize, 0, -1, "chunksize")
+        rank = len(chunksize)
+
+        dims = <hsize_t*>emalloc(sizeof(hsize_t)*rank)
+        try:
+            convert_tuple(chunksize, dims, rank)
+            H5Pset_chunk(self.id, rank, dims)
+        finally:
+            efree(dims)
+
+
+    def get_chunk(self):
+        """() => TUPLE chunk_dimensions
+
+        Obtain the dataset chunk size, as a tuple.
+        """
+        cdef int rank
+        cdef hsize_t *dims
+
+        rank = H5Pget_chunk(self.id, 0, NULL)
+        assert rank >= 0
+        dims = <hsize_t*>emalloc(sizeof(hsize_t)*rank)
+
+        try:
+            H5Pget_chunk(self.id, rank, dims)
+            tpl = convert_dims(dims, rank)
+            return tpl
+        finally:
+            efree(dims)
+
+
+    def set_fill_value(self, ndarray value not None):
+        """(NDARRAY value)
+
+        Set the dataset fill value.  The object provided should be an
+        0-dimensional NumPy array; otherwise, the value will be read from
+        the first element.
+        """
+        cdef TypeID tid
+
+        check_numpy_read(value, -1)
+        tid = py_create(value.dtype)
+        H5Pset_fill_value(self.id, tid.id, value.data)
+
+
+    def get_fill_value(self, ndarray value not None):
+        """(NDARRAY value)
+
+        Read the dataset fill value into a NumPy array.  It will be
+        converted to match the array dtype.  If the array has nonzero
+        rank, only the first element will contain the value.
+        """
+        cdef TypeID tid
+
+        check_numpy_write(value, -1)
+        tid = py_create(value.dtype)
+        H5Pget_fill_value(self.id, tid.id, value.data)
+
+
+    def fill_value_defined(self):
+        """() => INT fill_status
+
+        Determine the status of the dataset fill value.  Return values are:
+
+        - h5d.FILL_VALUE_UNDEFINED
+        - h5d.FILL_VALUE_DEFAULT
+        - h5d.FILL_VALUE_USER_DEFINED
+        """
+        cdef H5D_fill_value_t val
+        H5Pfill_value_defined(self.id, &val)
+        return <int>val
+
+
+    def set_fill_time(self, int fill_time):
+        """(INT fill_time)
+
+        Define when fill values are written to the dataset.  Legal
+        values (defined in module h5d) are:
+
+        - h5d.FILL_TIME_ALLOC
+        - h5d.FILL_TIME_NEVER
+        - h5d.FILL_TIME_IFSET
+        """
+        H5Pset_fill_time(self.id, <H5D_fill_time_t>fill_time)
+
+
+    def get_fill_time(self):
+        """ () => INT
+
+        Determine when fill values are written to the dataset.  Legal
+        values (defined in module h5d) are:
+
+        - h5d.FILL_TIME_ALLOC
+        - h5d.FILL_TIME_NEVER
+        - h5d.FILL_TIME_IFSET
+        """
+        cdef H5D_fill_time_t fill_time
+        H5Pget_fill_time(self.id, &fill_time)
+        return <int>fill_time
+
+
+    def set_alloc_time(self, int alloc_time):
+        """(INT alloc_time)
+
+        Set the storage space allocation time.  One of h5d.ALLOC_TIME*.
+        """
+        H5Pset_alloc_time(self.id, <H5D_alloc_time_t>alloc_time)
+
+
+    def get_alloc_time(self):
+        """() => INT alloc_time
+
+        Get the storage space allocation time.  One of h5d.ALLOC_TIME*.
+        """
+        cdef H5D_alloc_time_t alloc_time
+        H5Pget_alloc_time(self.id, &alloc_time)
+        return <int>alloc_time
+
+
+    # === Filter functions ====================================================
+
+
+    def set_filter(self, int filter_code, unsigned int flags=0, object values=None):
+        """(INT filter_code, UINT flags=0, TUPLE values=None)
+
+        Set a filter in the pipeline.  Params are:
+
+        filter_code
+            One of the following:
+
+            - h5z.FILTER_DEFLATE
+            - h5z.FILTER_SHUFFLE
+            - h5z.FILTER_FLETCHER32
+            - h5z.FILTER_SZIP
+
+        flags
+            Bit flags (h5z.FLAG*) setting filter properties
+
+        values
+            TUPLE of UINTs giving auxiliary data for the filter
+        """
+        cdef size_t nelements
+        cdef unsigned int *cd_values
+        cdef int i
+        cd_values = NULL
+
+        require_tuple(values, 1, -1, "values")
+
+        try:
+            if values is None or len(values) == 0:
+                nelements = 0
+                cd_values = NULL
+            else:
+                nelements = len(values)
+                cd_values = <unsigned int*>emalloc(sizeof(unsigned int)*nelements)
+
+                for i from 0<=i<nelements:
+                    cd_values[i] = int(values[i])
+
+            H5Pset_filter(self.id, <H5Z_filter_t>filter_code, flags, nelements, cd_values)
+        finally:
+            efree(cd_values)
+
+
+    def all_filters_avail(self):
+        """() => BOOL
+
+        Determine if all the filters in the pipelist are available to
+        the library.
+        """
+        return <bint>(H5Pall_filters_avail(self.id))
+
+
+    def get_nfilters(self):
+        """() => INT
+
+        Determine the number of filters in the pipeline.
+        """
+        return H5Pget_nfilters(self.id)
+
+
+    def get_filter(self, int filter_idx):
+        """(UINT filter_idx) => TUPLE filter_info
+
+        Get information about a filter, identified by its index.  Tuple
+        elements are:
+
+        0. INT filter code (h5z.FILTER*)
+        1. UINT flags (h5z.FLAG*)
+        2. TUPLE of UINT values; filter aux data (16 values max)
+        3. STRING name of filter (256 chars max)
+        """
+        cdef list vlist
+        cdef int filter_code
+        cdef unsigned int flags
+        cdef size_t nelements
+        cdef unsigned int cd_values[16]
+        cdef char name[257]
+        cdef int i
+        nelements = 16 # HDF5 library actually complains if this is too big.
+
+        if filter_idx < 0:
+            raise ValueError("Filter index must be a non-negative integer")
+
+        filter_code = <int>H5Pget_filter(self.id, filter_idx, &flags,
+                                         &nelements, cd_values, 256, name)
+        name[256] = c'\0'  # in case it's > 256 chars
+
+        vlist = []
+        for i from 0<=i<nelements:
+            vlist.append(cd_values[i])
+
+        return (filter_code, flags, tuple(vlist), name)
+
+
+    def _has_filter(self, int filter_code):
+        """(INT filter_code)
+
+        Slow & stupid method to determine if a filter is used in this
+        property list.  Used because the HDF5 function H5Pget_filter_by_id
+        is broken.
+        """
+        cdef int nfilters
+        nfilters = self.get_nfilters()
+        for i from 0<=i<nfilters:
+            if self.get_filter(i)[0] == filter_code:
+                return True
+        return False
+
+
+    def get_filter_by_id(self, int filter_code):
+        """(INT filter_code) => TUPLE filter_info or None
+
+        Get information about a filter, identified by its code (one
+        of h5z.FILTER*).  If the filter doesn't exist, returns None.
+        Tuple elements are:
+
+        0. UINT flags (h5z.FLAG*)
+        1. TUPLE of UINT values; filter aux data (16 values max)
+        2. STRING name of filter (256 chars max)
+        """
+        cdef list vlist
+        cdef unsigned int flags
+        cdef size_t nelements
+        cdef unsigned int cd_values[16]
+        cdef char name[257]
+        cdef herr_t retval
+        cdef int i
+        nelements = 16 # HDF5 library actually complains if this is too big.
+
+        if not self._has_filter(filter_code):
+            # Avoid library segfault
+            return None
+
+        retval = H5Pget_filter_by_id(self.id, <H5Z_filter_t>filter_code,
+                                     &flags, &nelements, cd_values, 256, name)
+        assert nelements <= 16
+
+        name[256] = c'\0'  # In case HDF5 doesn't terminate it properly
+
+        vlist = []
+        for i from 0<=i<nelements:
+            vlist.append(cd_values[i])
+
+        return (flags, tuple(vlist), name)
+
+
+    def remove_filter(self, int filter_class):
+        """(INT filter_class)
+
+        Remove a filter from the pipeline.  The class code is one of
+        h5z.FILTER*.
+        """
+        H5Premove_filter(self.id, <H5Z_filter_t>filter_class)
+
+
+    def set_deflate(self, unsigned int level=5):
+        """(UINT level=5)
+
+        Enable deflate (gzip) compression, at the given level.
+        Valid levels are 0-9, default is 5.
+        """
+        H5Pset_deflate(self.id, level)
+
+
+    def set_fletcher32(self):
+        """()
+
+        Enable Fletcher32 error correction on this list.
+        """
+        H5Pset_fletcher32(self.id)
+
+
+    def set_shuffle(self):
+        """()
+
+        Enable to use of the shuffle filter.  Use this immediately before
+        the deflate filter to increase the compression ratio.
+        """
+        H5Pset_shuffle(self.id)
+
+
+    def set_szip(self, unsigned int options, unsigned int pixels_per_block):
+        """(UINT options, UINT pixels_per_block)
+
+        Enable SZIP compression.  See the HDF5 docs for argument meanings,
+        and general restrictions on use of the SZIP format.
+        """
+        H5Pset_szip(self.id, options, pixels_per_block)
+
+    def set_scaleoffset(self, H5Z_SO_scale_type_t scale_type, int scale_factor):
+        '''(H5Z_SO_scale_type_t scale_type, INT scale_factor)
+
+        Enable scale/offset (usually lossy) compression; lossless (e.g. gzip)
+        compression and other filters may be applied on top of this.
+
+        Note that error detection (i.e. fletcher32) cannot precede this in
+        the filter chain, or else all reads on lossily-compressed data will
+        fail.'''
+        H5Pset_scaleoffset(self.id, scale_type, scale_factor)
+
+
+# File access
+cdef class PropFAID(PropInstanceID):
+
+    """
+        File access property list
+    """
+
+
+    def set_fclose_degree(self, int close_degree):
+        """(INT close_degree)
+
+        Set the file-close degree, which determines library behavior when
+        a file is closed when objects are still open.  Legal values:
+
+        * h5f.CLOSE_WEAK
+        * h5f.CLOSE_SEMI
+        * h5f.CLOSE_STRONG
+        * h5f.CLOSE_DEFAULT
+        """
+        H5Pset_fclose_degree(self.id, <H5F_close_degree_t>close_degree)
+
+
+    def get_fclose_degree(self):
+        """() => INT close_degree
+        - h5fd.
+        Get the file-close degree, which determines library behavior when
+        a file is closed when objects are still open.  Legal values:
+
+        * h5f.CLOSE_WEAK
+        * h5f.CLOSE_SEMI
+        * h5f.CLOSE_STRONG
+        * h5f.CLOSE_DEFAULT
+        """
+        cdef H5F_close_degree_t deg
+        H5Pget_fclose_degree(self.id, &deg)
+        return deg
+
+
+    def set_fapl_core(self, size_t block_size=64*1024, hbool_t backing_store=1):
+        """(UINT increment=64k, BOOL backing_store=True)
+
+        Use the h5fd.CORE (memory-resident) file driver.
+
+        increment
+            Chunk size for new memory requests (default 1 meg)
+
+        backing_store
+            If True (default), memory contents are associated with an
+            on-disk file, which is updated when the file is closed.
+            Set to False for a purely in-memory file.
+        """
+        H5Pset_fapl_core(self.id, block_size, backing_store)
+
+
+    def get_fapl_core(self):
+        """() => TUPLE core_settings
+
+        Determine settings for the h5fd.CORE (memory-resident) file driver.
+        Tuple elements are:
+
+        0. UINT "increment": Chunk size for new memory requests
+        1. BOOL "backing_store": If True, write the memory contents to
+           disk when the file is closed.
+        """
+        cdef size_t increment
+        cdef hbool_t backing_store
+        H5Pget_fapl_core(self.id, &increment, &backing_store)
+        return (increment, <bint>(backing_store))
+
+
+    def set_fapl_family(self, hsize_t memb_size=2147483647, PropID memb_fapl=None):
+        """(UINT memb_size=2**31-1, PropFAID memb_fapl=None)
+
+        Set up the family driver.
+
+        memb_size
+            Member file size
+
+        memb_fapl
+            File access property list for each member access
+        """
+        cdef hid_t plist_id
+        plist_id = pdefault(memb_fapl)
+        H5Pset_fapl_family(self.id, memb_size, plist_id)
+
+
+    def get_fapl_family(self):
+        """() => TUPLE info
+
+        Determine family driver settings. Tuple values are:
+
+        0. UINT memb_size
+        1. PropFAID memb_fapl or None
+        """
+        cdef hid_t mfapl_id
+        cdef hsize_t msize
+        cdef PropFAID plist
+        plist = None
+
+        H5Pget_fapl_family(self.id, &msize, &mfapl_id)
+
+        if mfapl_id > 0:
+            plist = PropFAID.open(mfapl_id)
+
+        return (msize, plist)
+
+
+    def set_fapl_log(self, char* logfile, unsigned int flags, size_t buf_size):
+        """(STRING logfile, UINT flags, UINT buf_size)
+
+        Enable the use of the logging driver.  See the HDF5 documentation
+        for details.  Flag constants are stored in module h5fd.
+        """
+        H5Pset_fapl_log(self.id, logfile, flags, buf_size)
+
+
+    def set_fapl_sec2(self):
+        """()
+
+        Select the "section-2" driver (h5fd.SEC2).
+        """
+        H5Pset_fapl_sec2(self.id)
+
+
+    def set_fapl_stdio(self):
+        """()
+
+        Select the "stdio" driver (h5fd.STDIO)
+        """
+        H5Pset_fapl_stdio(self.id)
+
+
+    def get_driver(self):
+        """() => INT driver code
+
+        Return an integer identifier for the driver used by this list.
+        Although HDF5 implements these as full-fledged objects, they are
+        treated as integers by Python.  Built-in drivers identifiers are
+        listed in module h5fd; they are:
+
+        - h5fd.CORE
+        - h5fd.FAMILY
+        - h5fd.LOG
+        - h5fd.MPIO
+        - h5fd.MULTI
+        - h5fd.SEC2
+        - h5fd.STDIO
+        """
+        return H5Pget_driver(self.id)
+
+
+    def set_cache(self, int mdc, int rdcc, size_t rdcc_nbytes, double rdcc_w0):
+        """(INT mdc, INT rdcc, UINT rdcc_nbytes, DOUBLE rdcc_w0)
+
+        Set the metadata (mdc) and raw data chunk (rdcc) cache properties.
+        See the HDF5 docs for a full explanation.
+        """
+        H5Pset_cache(self.id, mdc, rdcc, rdcc_nbytes, rdcc_w0)
+
+
+    def get_cache(self):
+        """() => TUPLE cache info
+
+        Get the metadata and raw data chunk cache settings.  See the HDF5
+        docs for element definitions.  Return is a 4-tuple with entries:
+
+        1. INT mdc:              Number of metadata objects
+        2. INT rdcc:             Number of raw data chunks
+        3. UINT rdcc_nbytes:     Size of raw data cache
+        4. DOUBLE rdcc_w0:       Preemption policy for data cache.
+        """
+        cdef int mdc, rdcc
+        cdef size_t rdcc_nbytes
+        cdef double w0
+
+        H5Pget_cache(self.id, &mdc, &rdcc, &rdcc_nbytes, &w0)
+        return (mdc, rdcc, rdcc_nbytes, w0)
+
+
+    def set_sieve_buf_size(self, size_t size):
+        """ (UINT size)
+
+        Set the maximum size of the data sieve buffer (in bytes).  This
+        buffer can improve I/O performance for hyperslab I/O, by combining
+        reads and writes into blocks of the given size.  The default is 64k.
+        """
+        H5Pset_sieve_buf_size(self.id, size)
+
+
+    def get_sieve_buf_size(self):
+        """ () => UINT size
+
+        Get the current maximum size of the data sieve buffer (in bytes).
+        """
+        cdef size_t size
+        H5Pget_sieve_buf_size(self.id, &size)
+        return size
+
+    def set_libver_bounds(self, int low, int high):
+        """ (INT low, INT high)
+
+        Set the compatibility level for file format.  Legal values are:
+
+        - h5f.LIBVER_EARLIEST
+        - h5f.LIBVER_LATEST
+        """
+        H5Pset_libver_bounds(self.id, <H5F_libver_t>low, <H5F_libver_t>high)
+
+    def get_libver_bounds(self):
+        """ () => (INT low, INT high)
+
+        Get the compatibility level for file format. Returned values are from:
+
+        - h5f.LIBVER_EARLIEST
+        - h5f.LIBVER_LATEST
+        """
+        cdef H5F_libver_t low
+        cdef H5F_libver_t high
+        H5Pget_libver_bounds(self.id, &low, &high)
+
+        return (<int>low, <int>high)
+
+    IF MPI:
+        def set_fapl_mpio(self, Comm comm not None, Info info not None):
+            """ (Comm comm, Info info)
+
+            Set MPI-I/O Parallel HDF5 driver.
+
+            Comm: An mpi4py.MPI.Comm instance
+            Info: An mpi4py.MPI.Info instance
+            """
+            H5Pset_fapl_mpio(self.id, comm.ob_mpi, info.ob_mpi) 
+
+
+        def set_fapl_mpiposix(self, Comm comm not None, bint use_gpfs_hints=0):
+            """ (Comm comm, BOOL use_gpfs_hints=0)
+
+            Set MPI-POSIX driver.
+
+            Comm: An mpi4py.MPI.Comm instance
+            use_gpfs_hints: Enable internal hints for GPFS file system
+            """
+            H5Pset_fapl_mpiposix(self.id, comm.ob_mpi, use_gpfs_hints)
+
+    def get_mdc_config(self):
+        """() => CacheConfig
+        Returns an object that stores all the information about the meta-data cache
+        configuration
+        """
+
+        cdef CacheConfig config = CacheConfig()
+
+        cdef herr_t  err
+        err = H5Fget_mdc_config(self.id, &config.cache_config)
+        if err < 0:
+            raise RuntimeError("Failed to get hit rate")
+
+        return config
+
+    def set_mdc_config(self, CacheConfig config not None):
+        """(CacheConfig) => None
+        Returns an object that stores all the information about the meta-data cache
+        configuration
+        """
+        # I feel this should have some sanity checking to make sure that
+        cdef herr_t  err
+        err = H5Fset_mdc_config(self.id, &config.cache_config)
+        if err < 0:
+            raise RuntimeError("Failed to get hit rate")
+
+
+# Link creation
+cdef class PropLCID(PropCreateID):
+
+    """ Link creation property list """
+
+    def set_char_encoding(self, int encoding):
+        """ (INT encoding)
+
+        Set the character encoding for link names.  Legal values are:
+
+        - h5t.CSET_ASCII
+        - h5t.CSET_UTF8
+        """
+        H5Pset_char_encoding(self.id, <H5T_cset_t>encoding)
+
+    def get_char_encoding(self):
+        """ () => INT encoding
+
+        Get the character encoding for link names.  Legal values are:
+
+        - h5t.CSET_ASCII
+        - h5t.CSET_UTF8
+        """
+        cdef H5T_cset_t encoding
+        H5Pget_char_encoding(self.id, &encoding)
+        return <int>encoding
+
+    def set_create_intermediate_group(self, bint create):
+        """(BOOL create)
+
+        Set whether missing intermediate groups are automatically created.
+        """
+        H5Pset_create_intermediate_group(self.id, create)
+
+
+    def get_create_intermediate_group(self):
+        """() => BOOL
+
+        Determine if missing intermediate groups are automatically created.
+        """
+        cdef unsigned int create
+        H5Pget_create_intermediate_group(self.id, &create)
+        return <bint>create
+
+# Link access
+cdef class PropLAID(PropInstanceID):
+
+    """ Link access property list """
+
+    def __cinit__(self, *args):
+        self._buf = NULL
+
+    def __dealloc__(self):
+        efree(self._buf)
+
+
+    def set_nlinks(self, size_t nlinks):
+        """(UINT nlinks)
+
+        Set the maximum traversal depth for soft links
+        """
+        H5Pset_nlinks(self.id, nlinks)
+
+
+    def get_nlinks(self):
+        """() => UINT
+
+        Get the maximum traversal depth for soft links
+        """
+        cdef size_t nlinks
+        H5Pget_nlinks(self.id, &nlinks)
+        return nlinks
+
+
+    def set_elink_prefix(self, char* prefix):
+        """(STRING prefix)
+
+        Set the external link prefix.
+        """
+        cdef size_t size
+
+        # HDF5 requires that we hang on to this buffer
+        efree(self._buf)
+        size = strlen(prefix)
+        self._buf = <char*>emalloc(size+1)
+        strcpy(self._buf, prefix)
+
+        H5Pset_elink_prefix(self.id, self._buf)
+
+
+    def get_elink_prefix(self):
+        """() => STRING prefix
+
+        Get the external link prefix
+        """
+        cdef char* buf = NULL
+        cdef ssize_t size
+
+        size = H5Pget_elink_prefix(self.id, NULL, 0)
+        buf = <char*>emalloc(size+1)
+        try:
+            H5Pget_elink_prefix(self.id, buf, size+1)
+            pstr = buf
+        finally:
+            efree(buf)
+
+        return pstr
+
+    def set_elink_fapl(self, PropID fapl not None):
+        """ (PropFAID fapl)
+
+        Set the file access property list used when opening external files.
+        """
+        H5Pset_elink_fapl(self.id, fapl.id)
+
+    def get_elink_fapl(self):
+        """ () => PropFAID fapl
+
+        Get the file access property list used when opening external files.
+        """
+        cdef hid_t fid
+        fid = H5Pget_elink_fapl(self.id)
+        if H5Iget_ref(fid) > 1:
+            H5Idec_ref(fid)
+        return propwrap(fid)
+
+# Group creation
+cdef class PropGCID(PropOCID):
+    """ Group creation property list """
+
+    def set_link_creation_order(self, unsigned int flags):
+        """ (UINT flags)
+
+        Set tracking and indexing of creation order for links added to this group
+
+        flags -- h5p.CRT_ORDER_TRACKED, h5p.CRT_ORDER_INDEXED
+        """
+        H5Pset_link_creation_order(self.id, flags)
+
+    def get_link_creation_order(self):
+        """ () -> UINT flags
+
+        Get tracking and indexing of creation order for links added to this group
+        """
+        cdef unsigned int flags
+        H5Pget_link_creation_order(self.id, &flags)
+        return flags
+
+
+# Object creation property list
+cdef class PropOCID(PropCreateID):
+    """ Object creation property list
+
+    This seems to be a super class for dataset creation property list
+    and group creation property list.
+
+    The documentation is somewhat hazy
+    """
+    def set_obj_track_times(self,track_times):
+        """Sets the recording of times associated with an object."""
+        H5Pset_obj_track_times(self.id,track_times)
+
+    def get_obj_track_times(self):
+        """
+        Determines whether times associated with an object are being recorded.
+        """
+
+        cdef hbool_t track_times
+
+        H5Pget_obj_track_times(self.id,&track_times)
+
+        return track_times
+
+
+# Dataset access
+cdef class PropDAID(PropInstanceID):
+
+    """ Dataset access property list """
+
+    def set_chunk_cache(self, size_t rdcc_nslots,size_t rdcc_nbytes, double rdcc_w0):
+        """(size_t rdcc_nslots,size_t rdcc_nbytes, double rdcc_w0)
+
+        Sets the raw data chunk cache parameters.
+        """
+        H5Pset_chunk_cache(self.id,rdcc_nslots,rdcc_nbytes,rdcc_w0)
+
+    def get_chunk_cache(self):
+        """() => TUPLE chunk cache info
+
+        Get the metadata and raw data chunk cache settings.  See the HDF5
+        docs for element definitions.  Return is a 3-tuple with entries:
+
+        0. size_t rdcc_nslots: Number of chunk slots in the raw data chunk cache hash table.
+        1. size_t rdcc_nbytes: Total size of the raw data chunk cache, in bytes.
+        2. DOUBLE rdcc_w0:     Preemption policy.
+        """
+        cdef size_t rdcc_nslots
+        cdef size_t rdcc_nbytes
+        cdef double rdcc_w0
+
+        H5Pget_chunk_cache(self.id, &rdcc_nslots, &rdcc_nbytes, &rdcc_w0 )
+        return (rdcc_nslots,rdcc_nbytes,rdcc_w0)
diff --git a/h5py/h5r.c b/h5py/h5r.c
new file mode 100644
index 0000000..679b4e8
--- /dev/null
+++ b/h5py/h5r.c
@@ -0,0 +1,4111 @@
+/* Generated by Cython 0.18 on Mon Dec  9 16:00:33 2013 */
+
+#define PY_SSIZE_T_CLEAN
+#include "Python.h"
+#ifndef Py_PYTHON_H
+    #error Python headers needed to compile C extensions, please install development version of Python.
+#elif PY_VERSION_HEX < 0x02040000
+    #error Cython requires Python 2.4+.
+#else
+#include <stddef.h> /* For offsetof */
+#ifndef offsetof
+#define offsetof(type, member) ( (size_t) & ((type*)0) -> member )
+#endif
+#if !defined(WIN32) && !defined(MS_WINDOWS)
+  #ifndef __stdcall
+    #define __stdcall
+  #endif
+  #ifndef __cdecl
+    #define __cdecl
+  #endif
+  #ifndef __fastcall
+    #define __fastcall
+  #endif
+#endif
+#ifndef DL_IMPORT
+  #define DL_IMPORT(t) t
+#endif
+#ifndef DL_EXPORT
+  #define DL_EXPORT(t) t
+#endif
+#ifndef PY_LONG_LONG
+  #define PY_LONG_LONG LONG_LONG
+#endif
+#ifndef Py_HUGE_VAL
+  #define Py_HUGE_VAL HUGE_VAL
+#endif
+#ifdef PYPY_VERSION
+#define CYTHON_COMPILING_IN_PYPY 1
+#define CYTHON_COMPILING_IN_CPYTHON 0
+#else
+#define CYTHON_COMPILING_IN_PYPY 0
+#define CYTHON_COMPILING_IN_CPYTHON 1
+#endif
+#if PY_VERSION_HEX < 0x02050000
+  typedef int Py_ssize_t;
+  #define PY_SSIZE_T_MAX INT_MAX
+  #define PY_SSIZE_T_MIN INT_MIN
+  #define PY_FORMAT_SIZE_T ""
+  #define CYTHON_FORMAT_SSIZE_T ""
+  #define PyInt_FromSsize_t(z) PyInt_FromLong(z)
+  #define PyInt_AsSsize_t(o)   __Pyx_PyInt_AsInt(o)
+  #define PyNumber_Index(o)    ((PyNumber_Check(o) && !PyFloat_Check(o)) ? PyNumber_Int(o) : \
+                                (PyErr_Format(PyExc_TypeError, \
+                                              "expected index value, got %.200s", Py_TYPE(o)->tp_name), \
+                                 (PyObject*)0))
+  #define __Pyx_PyIndex_Check(o) (PyNumber_Check(o) && !PyFloat_Check(o) && \
+                                  !PyComplex_Check(o))
+  #define PyIndex_Check __Pyx_PyIndex_Check
+  #define PyErr_WarnEx(category, message, stacklevel) PyErr_Warn(category, message)
+  #define __PYX_BUILD_PY_SSIZE_T "i"
+#else
+  #define __PYX_BUILD_PY_SSIZE_T "n"
+  #define CYTHON_FORMAT_SSIZE_T "z"
+  #define __Pyx_PyIndex_Check PyIndex_Check
+#endif
+#if PY_VERSION_HEX < 0x02060000
+  #define Py_REFCNT(ob) (((PyObject*)(ob))->ob_refcnt)
+  #define Py_TYPE(ob)   (((PyObject*)(ob))->ob_type)
+  #define Py_SIZE(ob)   (((PyVarObject*)(ob))->ob_size)
+  #define PyVarObject_HEAD_INIT(type, size) \
+          PyObject_HEAD_INIT(type) size,
+  #define PyType_Modified(t)
+  typedef struct {
+     void *buf;
+     PyObject *obj;
+     Py_ssize_t len;
+     Py_ssize_t itemsize;
+     int readonly;
+     int ndim;
+     char *format;
+     Py_ssize_t *shape;
+     Py_ssize_t *strides;
+     Py_ssize_t *suboffsets;
+     void *internal;
+  } Py_buffer;
+  #define PyBUF_SIMPLE 0
+  #define PyBUF_WRITABLE 0x0001
+  #define PyBUF_FORMAT 0x0004
+  #define PyBUF_ND 0x0008
+  #define PyBUF_STRIDES (0x0010 | PyBUF_ND)
+  #define PyBUF_C_CONTIGUOUS (0x0020 | PyBUF_STRIDES)
+  #define PyBUF_F_CONTIGUOUS (0x0040 | PyBUF_STRIDES)
+  #define PyBUF_ANY_CONTIGUOUS (0x0080 | PyBUF_STRIDES)
+  #define PyBUF_INDIRECT (0x0100 | PyBUF_STRIDES)
+  #define PyBUF_RECORDS (PyBUF_STRIDES | PyBUF_FORMAT | PyBUF_WRITABLE)
+  #define PyBUF_FULL (PyBUF_INDIRECT | PyBUF_FORMAT | PyBUF_WRITABLE)
+  typedef int (*getbufferproc)(PyObject *, Py_buffer *, int);
+  typedef void (*releasebufferproc)(PyObject *, Py_buffer *);
+#endif
+#if PY_MAJOR_VERSION < 3
+  #define __Pyx_BUILTIN_MODULE_NAME "__builtin__"
+  #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) \
+          PyCode_New(a, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
+#else
+  #define __Pyx_BUILTIN_MODULE_NAME "builtins"
+  #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) \
+          PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
+#endif
+#if PY_MAJOR_VERSION < 3 && PY_MINOR_VERSION < 6
+  #define PyUnicode_FromString(s) PyUnicode_Decode(s, strlen(s), "UTF-8", "strict")
+#endif
+#if PY_MAJOR_VERSION >= 3
+  #define Py_TPFLAGS_CHECKTYPES 0
+  #define Py_TPFLAGS_HAVE_INDEX 0
+#endif
+#if (PY_VERSION_HEX < 0x02060000) || (PY_MAJOR_VERSION >= 3)
+  #define Py_TPFLAGS_HAVE_NEWBUFFER 0
+#endif
+#if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND)
+  #define CYTHON_PEP393_ENABLED 1
+  #define __Pyx_PyUnicode_READY(op)       (likely(PyUnicode_IS_READY(op)) ? \
+                                              0 : _PyUnicode_Ready((PyObject *)(op)))
+  #define __Pyx_PyUnicode_GET_LENGTH(u)   PyUnicode_GET_LENGTH(u)
+  #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i)
+  #define __Pyx_PyUnicode_READ(k, d, i)   PyUnicode_READ(k, d, i)
+#else
+  #define CYTHON_PEP393_ENABLED 0
+  #define __Pyx_PyUnicode_READY(op)       (0)
+  #define __Pyx_PyUnicode_GET_LENGTH(u)   PyUnicode_GET_SIZE(u)
+  #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i]))
+  #define __Pyx_PyUnicode_READ(k, d, i)   ((k=k), (Py_UCS4)(((Py_UNICODE*)d)[i]))
+#endif
+#if PY_MAJOR_VERSION >= 3
+  #define PyBaseString_Type            PyUnicode_Type
+  #define PyStringObject               PyUnicodeObject
+  #define PyString_Type                PyUnicode_Type
+  #define PyString_Check               PyUnicode_Check
+  #define PyString_CheckExact          PyUnicode_CheckExact
+#endif
+#if PY_VERSION_HEX < 0x02060000
+  #define PyBytesObject                PyStringObject
+  #define PyBytes_Type                 PyString_Type
+  #define PyBytes_Check                PyString_Check
+  #define PyBytes_CheckExact           PyString_CheckExact
+  #define PyBytes_FromString           PyString_FromString
+  #define PyBytes_FromStringAndSize    PyString_FromStringAndSize
+  #define PyBytes_FromFormat           PyString_FromFormat
+  #define PyBytes_DecodeEscape         PyString_DecodeEscape
+  #define PyBytes_AsString             PyString_AsString
+  #define PyBytes_AsStringAndSize      PyString_AsStringAndSize
+  #define PyBytes_Size                 PyString_Size
+  #define PyBytes_AS_STRING            PyString_AS_STRING
+  #define PyBytes_GET_SIZE             PyString_GET_SIZE
+  #define PyBytes_Repr                 PyString_Repr
+  #define PyBytes_Concat               PyString_Concat
+  #define PyBytes_ConcatAndDel         PyString_ConcatAndDel
+#endif
+#if PY_VERSION_HEX < 0x02060000
+  #define PySet_Check(obj)             PyObject_TypeCheck(obj, &PySet_Type)
+  #define PyFrozenSet_Check(obj)       PyObject_TypeCheck(obj, &PyFrozenSet_Type)
+#endif
+#ifndef PySet_CheckExact
+  #define PySet_CheckExact(obj)        (Py_TYPE(obj) == &PySet_Type)
+#endif
+#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type)
+#if PY_MAJOR_VERSION >= 3
+  #define PyIntObject                  PyLongObject
+  #define PyInt_Type                   PyLong_Type
+  #define PyInt_Check(op)              PyLong_Check(op)
+  #define PyInt_CheckExact(op)         PyLong_CheckExact(op)
+  #define PyInt_FromString             PyLong_FromString
+  #define PyInt_FromUnicode            PyLong_FromUnicode
+  #define PyInt_FromLong               PyLong_FromLong
+  #define PyInt_FromSize_t             PyLong_FromSize_t
+  #define PyInt_FromSsize_t            PyLong_FromSsize_t
+  #define PyInt_AsLong                 PyLong_AsLong
+  #define PyInt_AS_LONG                PyLong_AS_LONG
+  #define PyInt_AsSsize_t              PyLong_AsSsize_t
+  #define PyInt_AsUnsignedLongMask     PyLong_AsUnsignedLongMask
+  #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask
+#endif
+#if PY_MAJOR_VERSION >= 3
+  #define PyBoolObject                 PyLongObject
+#endif
+#if PY_VERSION_HEX < 0x03020000
+  typedef long Py_hash_t;
+  #define __Pyx_PyInt_FromHash_t PyInt_FromLong
+  #define __Pyx_PyInt_AsHash_t   PyInt_AsLong
+#else
+  #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t
+  #define __Pyx_PyInt_AsHash_t   PyInt_AsSsize_t
+#endif
+#if (PY_MAJOR_VERSION < 3) || (PY_VERSION_HEX >= 0x03010300)
+  #define __Pyx_PySequence_GetSlice(obj, a, b) PySequence_GetSlice(obj, a, b)
+  #define __Pyx_PySequence_SetSlice(obj, a, b, value) PySequence_SetSlice(obj, a, b, value)
+  #define __Pyx_PySequence_DelSlice(obj, a, b) PySequence_DelSlice(obj, a, b)
+#else
+  #define __Pyx_PySequence_GetSlice(obj, a, b) (unlikely(!(obj)) ? \
+        (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), (PyObject*)0) : \
+        (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_GetSlice(obj, a, b)) : \
+            (PyErr_Format(PyExc_TypeError, "'%.200s' object is unsliceable", (obj)->ob_type->tp_name), (PyObject*)0)))
+  #define __Pyx_PySequence_SetSlice(obj, a, b, value) (unlikely(!(obj)) ? \
+        (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), -1) : \
+        (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_SetSlice(obj, a, b, value)) : \
+            (PyErr_Format(PyExc_TypeError, "'%.200s' object doesn't support slice assignment", (obj)->ob_type->tp_name), -1)))
+  #define __Pyx_PySequence_DelSlice(obj, a, b) (unlikely(!(obj)) ? \
+        (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), -1) : \
+        (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_DelSlice(obj, a, b)) : \
+            (PyErr_Format(PyExc_TypeError, "'%.200s' object doesn't support slice deletion", (obj)->ob_type->tp_name), -1)))
+#endif
+#if PY_MAJOR_VERSION >= 3
+  #define PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, self) : PyInstanceMethod_New(func))
+#endif
+#if PY_VERSION_HEX < 0x02050000
+  #define __Pyx_GetAttrString(o,n)   PyObject_GetAttrString((o),((char *)(n)))
+  #define __Pyx_SetAttrString(o,n,a) PyObject_SetAttrString((o),((char *)(n)),(a))
+  #define __Pyx_DelAttrString(o,n)   PyObject_DelAttrString((o),((char *)(n)))
+#else
+  #define __Pyx_GetAttrString(o,n)   PyObject_GetAttrString((o),(n))
+  #define __Pyx_SetAttrString(o,n,a) PyObject_SetAttrString((o),(n),(a))
+  #define __Pyx_DelAttrString(o,n)   PyObject_DelAttrString((o),(n))
+#endif
+#if PY_VERSION_HEX < 0x02050000
+  #define __Pyx_NAMESTR(n) ((char *)(n))
+  #define __Pyx_DOCSTR(n)  ((char *)(n))
+#else
+  #define __Pyx_NAMESTR(n) (n)
+  #define __Pyx_DOCSTR(n)  (n)
+#endif
+
+
+#if PY_MAJOR_VERSION >= 3
+  #define __Pyx_PyNumber_Divide(x,y)         PyNumber_TrueDivide(x,y)
+  #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceTrueDivide(x,y)
+#else
+  #define __Pyx_PyNumber_Divide(x,y)         PyNumber_Divide(x,y)
+  #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceDivide(x,y)
+#endif
+
+#ifndef __PYX_EXTERN_C
+  #ifdef __cplusplus
+    #define __PYX_EXTERN_C extern "C"
+  #else
+    #define __PYX_EXTERN_C extern
+  #endif
+#endif
+
+#if defined(WIN32) || defined(MS_WINDOWS)
+#define _USE_MATH_DEFINES
+#endif
+#include <math.h>
+#define __PYX_HAVE__h5py__h5r
+#define __PYX_HAVE_API__h5py__h5r
+#include "stdlib.h"
+#include "string.h"
+#include "time.h"
+#include "unistd.h"
+#include "stdint.h"
+#include "api_compat.h"
+#include "lzf_filter.h"
+#include "hdf5.h"
+#include "H5Cpublic.h"
+#include "hdf5_hl.h"
+#ifdef _OPENMP
+#include <omp.h>
+#endif /* _OPENMP */
+
+#ifdef PYREX_WITHOUT_ASSERTIONS
+#define CYTHON_WITHOUT_ASSERTIONS
+#endif
+
+#ifndef CYTHON_INLINE
+  #if defined(__GNUC__)
+    #define CYTHON_INLINE __inline__
+  #elif defined(_MSC_VER)
+    #define CYTHON_INLINE __inline
+  #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+    #define CYTHON_INLINE inline
+  #else
+    #define CYTHON_INLINE
+  #endif
+#endif
+#ifndef CYTHON_UNUSED
+# if defined(__GNUC__)
+#   if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
+#     define CYTHON_UNUSED __attribute__ ((__unused__))
+#   else
+#     define CYTHON_UNUSED
+#   endif
+# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER))
+#   define CYTHON_UNUSED __attribute__ ((__unused__))
+# else
+#   define CYTHON_UNUSED
+# endif
+#endif
+typedef struct {PyObject **p; char *s; const long n; const char* encoding; const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; /*proto*/
+
+#define __Pyx_PyBytes_FromUString(s) PyBytes_FromString((char*)s)
+#define __Pyx_PyBytes_AsUString(s)   ((unsigned char*) PyBytes_AsString(s))
+#define __Pyx_Owned_Py_None(b) (Py_INCREF(Py_None), Py_None)
+#define __Pyx_PyBool_FromLong(b) ((b) ? (Py_INCREF(Py_True), Py_True) : (Py_INCREF(Py_False), Py_False))
+static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*);
+static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x);
+static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*);
+static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t);
+static CYTHON_INLINE size_t __Pyx_PyInt_AsSize_t(PyObject*);
+#if CYTHON_COMPILING_IN_CPYTHON
+#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x))
+#else
+#define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x)
+#endif
+#define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x))
+
+
+#ifdef __GNUC__
+  /* Test for GCC > 2.95 */
+  #if __GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))
+    #define likely(x)   __builtin_expect(!!(x), 1)
+    #define unlikely(x) __builtin_expect(!!(x), 0)
+  #else /* __GNUC__ > 2 ... */
+    #define likely(x)   (x)
+    #define unlikely(x) (x)
+  #endif /* __GNUC__ > 2 ... */
+#else /* __GNUC__ */
+  #define likely(x)   (x)
+  #define unlikely(x) (x)
+#endif /* __GNUC__ */
+    
+static PyObject *__pyx_m;
+static PyObject *__pyx_b;
+static PyObject *__pyx_empty_tuple;
+static PyObject *__pyx_empty_bytes;
+static int __pyx_lineno;
+static int __pyx_clineno = 0;
+static const char * __pyx_cfilenm= __FILE__;
+static const char *__pyx_filename;
+
+
+static const char *__pyx_f[] = {
+  "h5r.pyx",
+  "h5r.pxd",
+  "_objects.pxd",
+};
+
+/*--- Type declarations ---*/
+struct __pyx_obj_4h5py_3h5r_Reference;
+struct __pyx_obj_4h5py_8_objects_ObjectID;
+struct __pyx_obj_4h5py_3h5r_RegionReference;
+union __pyx_t_4h5py_3h5r_ref_u;
+
+/* "h5py/h5r.pxd":17
+ *   ctypedef unsigned char hdset_reg_ref_t[12]
+ * 
+ * cdef union ref_u:             # <<<<<<<<<<<<<<
+ *     hobj_ref_t         obj_ref
+ *     hdset_reg_ref_t    reg_ref
+ */
+union __pyx_t_4h5py_3h5r_ref_u {
+  hobj_ref_t obj_ref;
+  hdset_reg_ref_t reg_ref;
+};
+
+/* "h5py/h5r.pxd":21
+ *     hdset_reg_ref_t    reg_ref
+ * 
+ * cdef class Reference:             # <<<<<<<<<<<<<<
+ * 
+ *     cdef ref_u ref
+ */
+struct __pyx_obj_4h5py_3h5r_Reference {
+  PyObject_HEAD
+  union __pyx_t_4h5py_3h5r_ref_u ref;
+  int typecode;
+  size_t typesize;
+};
+
+
+/* "_objects.pxd":12
+ * from defs cimport *
+ * 
+ * cdef class ObjectID:             # <<<<<<<<<<<<<<
+ * 
+ *     cdef object __weakref__
+ */
+struct __pyx_obj_4h5py_8_objects_ObjectID {
+  PyObject_HEAD
+  PyObject *__weakref__;
+  hid_t id;
+  int locked;
+  PyObject *_hash;
+};
+
+
+/* "h5py/h5r.pxd":27
+ *     cdef readonly size_t typesize
+ * 
+ * cdef class RegionReference(Reference):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+struct __pyx_obj_4h5py_3h5r_RegionReference {
+  struct __pyx_obj_4h5py_3h5r_Reference __pyx_base;
+};
+
+#ifndef CYTHON_REFNANNY
+  #define CYTHON_REFNANNY 0
+#endif
+#if CYTHON_REFNANNY
+  typedef struct {
+    void (*INCREF)(void*, PyObject*, int);
+    void (*DECREF)(void*, PyObject*, int);
+    void (*GOTREF)(void*, PyObject*, int);
+    void (*GIVEREF)(void*, PyObject*, int);
+    void* (*SetupContext)(const char*, int, const char*);
+    void (*FinishContext)(void**);
+  } __Pyx_RefNannyAPIStruct;
+  static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL;
+  static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); /*proto*/
+  #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL;
+#ifdef WITH_THREAD
+  #define __Pyx_RefNannySetupContext(name, acquire_gil) \
+          if (acquire_gil) { \
+              PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); \
+              __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__); \
+              PyGILState_Release(__pyx_gilstate_save); \
+          } else { \
+              __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__); \
+          }
+#else
+  #define __Pyx_RefNannySetupContext(name, acquire_gil) \
+          __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__)
+#endif
+  #define __Pyx_RefNannyFinishContext() \
+          __Pyx_RefNanny->FinishContext(&__pyx_refnanny)
+  #define __Pyx_INCREF(r)  __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_DECREF(r)  __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_GOTREF(r)  __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_XINCREF(r)  do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0)
+  #define __Pyx_XDECREF(r)  do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0)
+  #define __Pyx_XGOTREF(r)  do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0)
+  #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0)
+#else
+  #define __Pyx_RefNannyDeclarations
+  #define __Pyx_RefNannySetupContext(name, acquire_gil)
+  #define __Pyx_RefNannyFinishContext()
+  #define __Pyx_INCREF(r) Py_INCREF(r)
+  #define __Pyx_DECREF(r) Py_DECREF(r)
+  #define __Pyx_GOTREF(r)
+  #define __Pyx_GIVEREF(r)
+  #define __Pyx_XINCREF(r) Py_XINCREF(r)
+  #define __Pyx_XDECREF(r) Py_XDECREF(r)
+  #define __Pyx_XGOTREF(r)
+  #define __Pyx_XGIVEREF(r)
+#endif /* CYTHON_REFNANNY */
+#define __Pyx_CLEAR(r)    do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0)
+#define __Pyx_XCLEAR(r)   do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0)
+
+static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name); /*proto*/
+
+static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact,
+    Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); /*proto*/
+
+static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name); /*proto*/
+
+static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[], \
+    PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args, \
+    const char* function_name); /*proto*/
+
+static int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, int none_allowed,
+    const char *name, int exact); /*proto*/
+
+static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb); /*proto*/
+static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb); /*proto*/
+
+static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause); /*proto*/
+
+static CYTHON_INLINE int __Pyx_CheckKeywordStrings(PyObject *kwdict, const char* function_name, int kw_allowed); /*proto*/
+
+static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level); /*proto*/
+
+static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_hid_t(hid_t);
+
+static CYTHON_INLINE unsigned char __Pyx_PyInt_AsUnsignedChar(PyObject *);
+
+static CYTHON_INLINE unsigned short __Pyx_PyInt_AsUnsignedShort(PyObject *);
+
+static CYTHON_INLINE unsigned int __Pyx_PyInt_AsUnsignedInt(PyObject *);
+
+static CYTHON_INLINE char __Pyx_PyInt_AsChar(PyObject *);
+
+static CYTHON_INLINE short __Pyx_PyInt_AsShort(PyObject *);
+
+static CYTHON_INLINE int __Pyx_PyInt_AsInt(PyObject *);
+
+static CYTHON_INLINE signed char __Pyx_PyInt_AsSignedChar(PyObject *);
+
+static CYTHON_INLINE signed short __Pyx_PyInt_AsSignedShort(PyObject *);
+
+static CYTHON_INLINE signed int __Pyx_PyInt_AsSignedInt(PyObject *);
+
+static CYTHON_INLINE int __Pyx_PyInt_AsLongDouble(PyObject *);
+
+static CYTHON_INLINE unsigned long __Pyx_PyInt_AsUnsignedLong(PyObject *);
+
+static CYTHON_INLINE unsigned PY_LONG_LONG __Pyx_PyInt_AsUnsignedLongLong(PyObject *);
+
+static CYTHON_INLINE long __Pyx_PyInt_AsLong(PyObject *);
+
+static CYTHON_INLINE PY_LONG_LONG __Pyx_PyInt_AsLongLong(PyObject *);
+
+static CYTHON_INLINE signed long __Pyx_PyInt_AsSignedLong(PyObject *);
+
+static CYTHON_INLINE signed PY_LONG_LONG __Pyx_PyInt_AsSignedLongLong(PyObject *);
+
+static int __Pyx_check_binary_version(void);
+
+#if !defined(__Pyx_PyIdentifier_FromString)
+#if PY_MAJOR_VERSION < 3
+  #define __Pyx_PyIdentifier_FromString(s) PyString_FromString(s)
+#else
+  #define __Pyx_PyIdentifier_FromString(s) PyUnicode_FromString(s)
+#endif
+#endif
+
+static PyObject *__Pyx_ImportModule(const char *name); /*proto*/
+
+static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name, size_t size, int strict);  /*proto*/
+
+static int __Pyx_ImportFunction(PyObject *module, const char *funcname, void (**f)(void), const char *sig); /*proto*/
+
+typedef struct {
+    int code_line;
+    PyCodeObject* code_object;
+} __Pyx_CodeObjectCacheEntry;
+struct __Pyx_CodeObjectCache {
+    int count;
+    int max_count;
+    __Pyx_CodeObjectCacheEntry* entries;
+};
+static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL};
+static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line);
+static PyCodeObject *__pyx_find_code_object(int code_line);
+static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object);
+
+static void __Pyx_AddTraceback(const char *funcname, int c_line,
+                               int py_line, const char *filename); /*proto*/
+
+static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); /*proto*/
+
+
+/* Module declarations from 'h5py.api_types_ext' */
+
+/* Module declarations from 'h5py.api_types_hdf5' */
+
+/* Module declarations from 'h5py.defs' */
+static herr_t (*__pyx_f_4h5py_4defs_H5Rcreate)(void *, hid_t, char *, H5R_type_t, hid_t); /*proto*/
+static hid_t (*__pyx_f_4h5py_4defs_H5Rdereference)(hid_t, H5R_type_t, void *); /*proto*/
+static hid_t (*__pyx_f_4h5py_4defs_H5Rget_region)(hid_t, H5R_type_t, void *); /*proto*/
+static enum H5G_obj_t (*__pyx_f_4h5py_4defs_H5Rget_obj_type)(hid_t, H5R_type_t, void *); /*proto*/
+static Py_ssize_t (*__pyx_f_4h5py_4defs_H5Rget_name)(hid_t, H5R_type_t, void *, char *, size_t); /*proto*/
+
+/* Module declarations from 'h5py._objects' */
+static PyTypeObject *__pyx_ptype_4h5py_8_objects_ObjectID = 0;
+
+/* Module declarations from 'h5py.h5r' */
+static PyTypeObject *__pyx_ptype_4h5py_3h5r_Reference = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5r_RegionReference = 0;
+#define __Pyx_MODULE_NAME "h5py.h5r"
+int __pyx_module_is_main_h5py__h5r = 0;
+
+/* Implementation of 'h5py.h5r' */
+static PyObject *__pyx_builtin_ValueError;
+static PyObject *__pyx_pf_4h5py_3h5r_create(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_loc, char *__pyx_v_name, int __pyx_v_ref_type, struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_space); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5r_2dereference(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_3h5r_Reference *__pyx_v_ref, struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_id); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5r_4get_region(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_3h5r_RegionReference *__pyx_v_ref, struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_id); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5r_6get_obj_type(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_3h5r_Reference *__pyx_v_ref, struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_id); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5r_8get_name(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_3h5r_Reference *__pyx_v_ref, struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_loc); /* proto */
+static int __pyx_pf_4h5py_3h5r_9Reference___cinit__(struct __pyx_obj_4h5py_3h5r_Reference *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_args, CYTHON_UNUSED PyObject *__pyx_v_kwds); /* proto */
+static int __pyx_pf_4h5py_3h5r_9Reference_2__nonzero__(struct __pyx_obj_4h5py_3h5r_Reference *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5r_9Reference_4__repr__(struct __pyx_obj_4h5py_3h5r_Reference *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5r_9Reference_8typecode___get__(struct __pyx_obj_4h5py_3h5r_Reference *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5r_9Reference_8typesize___get__(struct __pyx_obj_4h5py_3h5r_Reference *__pyx_v_self); /* proto */
+static int __pyx_pf_4h5py_3h5r_15RegionReference___cinit__(struct __pyx_obj_4h5py_3h5r_RegionReference *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_args, CYTHON_UNUSED PyObject *__pyx_v_kwds); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5r_15RegionReference_2__repr__(struct __pyx_obj_4h5py_3h5r_RegionReference *__pyx_v_self); /* proto */
+static char __pyx_k_1[] = "Dataspace required for region reference";
+static char __pyx_k_3[] = "Unknown reference typecode";
+static char __pyx_k_5[] = "<HDF5 object reference%s>";
+static char __pyx_k_6[] = "";
+static char __pyx_k_7[] = " (null)";
+static char __pyx_k_8[] = "<HDF5 region reference%s>";
+static char __pyx_k_9[] = " (null";
+static char __pyx_k_10[] = "\n    H5R API for object and region references.\n";
+static char __pyx_k_13[] = "/home/computer/h5py/h5py/h5r.pyx";
+static char __pyx_k_14[] = "h5py.h5r";
+static char __pyx_k__id[] = "id";
+static char __pyx_k__h5i[] = "h5i";
+static char __pyx_k__h5s[] = "h5s";
+static char __pyx_k__loc[] = "loc";
+static char __pyx_k__ref[] = "ref";
+static char __pyx_k__name[] = "name";
+static char __pyx_k__open[] = "open";
+static char __pyx_k__space[] = "space";
+static char __pyx_k__OBJECT[] = "OBJECT";
+static char __pyx_k__create[] = "create";
+static char __pyx_k__SpaceID[] = "SpaceID";
+static char __pyx_k__namebuf[] = "namebuf";
+static char __pyx_k____main__[] = "__main__";
+static char __pyx_k____test__[] = "__test__";
+static char __pyx_k__get_name[] = "get_name";
+static char __pyx_k__namesize[] = "namesize";
+static char __pyx_k__ref_type[] = "ref_type";
+static char __pyx_k__space_id[] = "space_id";
+static char __pyx_k__ValueError[] = "ValueError";
+static char __pyx_k__get_region[] = "get_region";
+static char __pyx_k__dereference[] = "dereference";
+static char __pyx_k__get_obj_type[] = "get_obj_type";
+static char __pyx_k__DATASET_REGION[] = "DATASET_REGION";
+static char __pyx_k__wrap_identifier[] = "wrap_identifier";
+static PyObject *__pyx_kp_s_1;
+static PyObject *__pyx_kp_s_13;
+static PyObject *__pyx_n_s_14;
+static PyObject *__pyx_kp_s_3;
+static PyObject *__pyx_kp_s_5;
+static PyObject *__pyx_kp_s_6;
+static PyObject *__pyx_kp_s_7;
+static PyObject *__pyx_kp_s_8;
+static PyObject *__pyx_kp_s_9;
+static PyObject *__pyx_n_s__DATASET_REGION;
+static PyObject *__pyx_n_s__OBJECT;
+static PyObject *__pyx_n_s__SpaceID;
+static PyObject *__pyx_n_s__ValueError;
+static PyObject *__pyx_n_s____main__;
+static PyObject *__pyx_n_s____test__;
+static PyObject *__pyx_n_s__create;
+static PyObject *__pyx_n_s__dereference;
+static PyObject *__pyx_n_s__get_name;
+static PyObject *__pyx_n_s__get_obj_type;
+static PyObject *__pyx_n_s__get_region;
+static PyObject *__pyx_n_s__h5i;
+static PyObject *__pyx_n_s__h5s;
+static PyObject *__pyx_n_s__id;
+static PyObject *__pyx_n_s__loc;
+static PyObject *__pyx_n_s__name;
+static PyObject *__pyx_n_s__namebuf;
+static PyObject *__pyx_n_s__namesize;
+static PyObject *__pyx_n_s__open;
+static PyObject *__pyx_n_s__ref;
+static PyObject *__pyx_n_s__ref_type;
+static PyObject *__pyx_n_s__space;
+static PyObject *__pyx_n_s__space_id;
+static PyObject *__pyx_n_s__wrap_identifier;
+static PyObject *__pyx_k_tuple_2;
+static PyObject *__pyx_k_tuple_4;
+static PyObject *__pyx_k_tuple_11;
+static PyObject *__pyx_k_tuple_15;
+static PyObject *__pyx_k_tuple_17;
+static PyObject *__pyx_k_tuple_19;
+static PyObject *__pyx_k_tuple_21;
+static PyObject *__pyx_k_codeobj_12;
+static PyObject *__pyx_k_codeobj_16;
+static PyObject *__pyx_k_codeobj_18;
+static PyObject *__pyx_k_codeobj_20;
+static PyObject *__pyx_k_codeobj_22;
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5r_1create(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_4h5py_3h5r_create[] = "(ObjectID loc, STRING name, INT ref_type, SpaceID space=None)\n    => ReferenceObject ref\n\n    Create a new reference. The value of ref_type detemines the kind\n    of reference created:\n\n    OBJECT\n        Reference to an object in an HDF5 file.  Parameters \"loc\"\n        and \"name\" identify the object; \"space\" is unused.\n\n    DATASET_REGION\n        Reference to a dataset region.  Parameters \"loc\" and\n        \"name\" identif [...]
+static PyMethodDef __pyx_mdef_4h5py_3h5r_1create = {__Pyx_NAMESTR("create"), (PyCFunction)__pyx_pw_4h5py_3h5r_1create, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5r_create)};
+static PyObject *__pyx_pw_4h5py_3h5r_1create(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_loc = 0;
+  char *__pyx_v_name;
+  int __pyx_v_ref_type;
+  struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_space = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("create (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__loc,&__pyx_n_s__name,&__pyx_n_s__ref_type,&__pyx_n_s__space,0};
+    PyObject* values[4] = {0,0,0,0};
+
+    /* "h5py/h5r.pyx":25
+ * 
+ * 
+ * def create(ObjectID loc not None, char* name, int ref_type, ObjectID space=None):             # <<<<<<<<<<<<<<
+ *     """(ObjectID loc, STRING name, INT ref_type, SpaceID space=None)
+ *     => ReferenceObject ref
+ */
+    values[3] = (PyObject *)((struct __pyx_obj_4h5py_8_objects_ObjectID *)Py_None);
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__loc)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__name)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("create", 0, 3, 4, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+        case  2:
+        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__ref_type)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("create", 0, 3, 4, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+        case  3:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__space);
+          if (value) { values[3] = value; kw_args--; }
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "create") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else {
+      switch (PyTuple_GET_SIZE(__pyx_args)) {
+        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+    }
+    __pyx_v_loc = ((struct __pyx_obj_4h5py_8_objects_ObjectID *)values[0]);
+    __pyx_v_name = PyBytes_AsString(values[1]); if (unlikely((!__pyx_v_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_ref_type = __Pyx_PyInt_AsInt(values[2]); if (unlikely((__pyx_v_ref_type == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_space = ((struct __pyx_obj_4h5py_8_objects_ObjectID *)values[3]);
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("create", 0, 3, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5r.create", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_loc), __pyx_ptype_4h5py_8_objects_ObjectID, 0, "loc", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_space), __pyx_ptype_4h5py_8_objects_ObjectID, 1, "space", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_pf_4h5py_3h5r_create(__pyx_self, __pyx_v_loc, __pyx_v_name, __pyx_v_ref_type, __pyx_v_space);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_4h5py_3h5r_create(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_loc, char *__pyx_v_name, int __pyx_v_ref_type, struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_space) {
+  hid_t __pyx_v_space_id;
+  struct __pyx_obj_4h5py_3h5r_Reference *__pyx_v_ref = 0;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  hid_t __pyx_t_3;
+  herr_t __pyx_t_4;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("create", 0);
+
+  /* "h5py/h5r.pyx":43
+ *     cdef hid_t space_id
+ *     cdef Reference ref
+ *     if ref_type == H5R_OBJECT:             # <<<<<<<<<<<<<<
+ *         ref = Reference()
+ *     elif ref_type == H5R_DATASET_REGION:
+ */
+  __pyx_t_1 = (__pyx_v_ref_type == H5R_OBJECT);
+  if (__pyx_t_1) {
+
+    /* "h5py/h5r.pyx":44
+ *     cdef Reference ref
+ *     if ref_type == H5R_OBJECT:
+ *         ref = Reference()             # <<<<<<<<<<<<<<
+ *     elif ref_type == H5R_DATASET_REGION:
+ *         if space is None:   # work around segfault in HDF5
+ */
+    __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4h5py_3h5r_Reference)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_v_ref = ((struct __pyx_obj_4h5py_3h5r_Reference *)__pyx_t_2);
+    __pyx_t_2 = 0;
+    goto __pyx_L3;
+  }
+
+  /* "h5py/h5r.pyx":45
+ *     if ref_type == H5R_OBJECT:
+ *         ref = Reference()
+ *     elif ref_type == H5R_DATASET_REGION:             # <<<<<<<<<<<<<<
+ *         if space is None:   # work around segfault in HDF5
+ *             raise ValueError("Dataspace required for region reference")
+ */
+  __pyx_t_1 = (__pyx_v_ref_type == H5R_DATASET_REGION);
+  if (__pyx_t_1) {
+
+    /* "h5py/h5r.pyx":46
+ *         ref = Reference()
+ *     elif ref_type == H5R_DATASET_REGION:
+ *         if space is None:   # work around segfault in HDF5             # <<<<<<<<<<<<<<
+ *             raise ValueError("Dataspace required for region reference")
+ *         ref = RegionReference()
+ */
+    __pyx_t_1 = (((PyObject *)__pyx_v_space) == Py_None);
+    if (__pyx_t_1) {
+
+      /* "h5py/h5r.pyx":47
+ *     elif ref_type == H5R_DATASET_REGION:
+ *         if space is None:   # work around segfault in HDF5
+ *             raise ValueError("Dataspace required for region reference")             # <<<<<<<<<<<<<<
+ *         ref = RegionReference()
+ *     else:
+ */
+      __pyx_t_2 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_2), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_2);
+      __Pyx_Raise(__pyx_t_2, 0, 0, 0);
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      goto __pyx_L4;
+    }
+    __pyx_L4:;
+
+    /* "h5py/h5r.pyx":48
+ *         if space is None:   # work around segfault in HDF5
+ *             raise ValueError("Dataspace required for region reference")
+ *         ref = RegionReference()             # <<<<<<<<<<<<<<
+ *     else:
+ *         raise ValueError("Unknown reference typecode")
+ */
+    __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4h5py_3h5r_RegionReference)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_v_ref = ((struct __pyx_obj_4h5py_3h5r_Reference *)__pyx_t_2);
+    __pyx_t_2 = 0;
+    goto __pyx_L3;
+  }
+  /*else*/ {
+
+    /* "h5py/h5r.pyx":50
+ *         ref = RegionReference()
+ *     else:
+ *         raise ValueError("Unknown reference typecode")             # <<<<<<<<<<<<<<
+ * 
+ *     if space is None:
+ */
+    __pyx_t_2 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_4), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  }
+  __pyx_L3:;
+
+  /* "h5py/h5r.pyx":52
+ *         raise ValueError("Unknown reference typecode")
+ * 
+ *     if space is None:             # <<<<<<<<<<<<<<
+ *         space_id = -1
+ *     else:
+ */
+  __pyx_t_1 = (((PyObject *)__pyx_v_space) == Py_None);
+  if (__pyx_t_1) {
+
+    /* "h5py/h5r.pyx":53
+ * 
+ *     if space is None:
+ *         space_id = -1             # <<<<<<<<<<<<<<
+ *     else:
+ *         space_id = space.id
+ */
+    __pyx_v_space_id = -1;
+    goto __pyx_L5;
+  }
+  /*else*/ {
+
+    /* "h5py/h5r.pyx":55
+ *         space_id = -1
+ *     else:
+ *         space_id = space.id             # <<<<<<<<<<<<<<
+ * 
+ *     H5Rcreate(&ref.ref, loc.id, name, <H5R_type_t>ref_type, space_id)
+ */
+    __pyx_t_3 = __pyx_v_space->id;
+    __pyx_v_space_id = __pyx_t_3;
+  }
+  __pyx_L5:;
+
+  /* "h5py/h5r.pyx":57
+ *         space_id = space.id
+ * 
+ *     H5Rcreate(&ref.ref, loc.id, name, <H5R_type_t>ref_type, space_id)             # <<<<<<<<<<<<<<
+ * 
+ *     return ref
+ */
+  __pyx_t_4 = __pyx_f_4h5py_4defs_H5Rcreate((&__pyx_v_ref->ref), __pyx_v_loc->id, __pyx_v_name, ((H5R_type_t)__pyx_v_ref_type), __pyx_v_space_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5r.pyx":59
+ *     H5Rcreate(&ref.ref, loc.id, name, <H5R_type_t>ref_type, space_id)
+ * 
+ *     return ref             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(((PyObject *)__pyx_v_ref));
+  __pyx_r = ((PyObject *)__pyx_v_ref);
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5r.create", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_ref);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5r_3dereference(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_4h5py_3h5r_2dereference[] = "(Reference ref, ObjectID id) => ObjectID or None\n\n    Open the object pointed to by the reference and return its\n    identifier.  The file identifier (or the identifier for any object\n    in the file) must also be provided.  Returns None if the reference\n    is zero-filled.\n\n    The reference may be either Reference or RegionReference.\n    ";
+static PyMethodDef __pyx_mdef_4h5py_3h5r_3dereference = {__Pyx_NAMESTR("dereference"), (PyCFunction)__pyx_pw_4h5py_3h5r_3dereference, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5r_2dereference)};
+static PyObject *__pyx_pw_4h5py_3h5r_3dereference(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  struct __pyx_obj_4h5py_3h5r_Reference *__pyx_v_ref = 0;
+  struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_id = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("dereference (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__ref,&__pyx_n_s__id,0};
+    PyObject* values[2] = {0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__ref)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__id)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("dereference", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "dereference") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+    }
+    __pyx_v_ref = ((struct __pyx_obj_4h5py_3h5r_Reference *)values[0]);
+    __pyx_v_id = ((struct __pyx_obj_4h5py_8_objects_ObjectID *)values[1]);
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("dereference", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5r.dereference", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_ref), __pyx_ptype_4h5py_3h5r_Reference, 0, "ref", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_id), __pyx_ptype_4h5py_8_objects_ObjectID, 0, "id", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_pf_4h5py_3h5r_2dereference(__pyx_self, __pyx_v_ref, __pyx_v_id);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5r.pyx":62
+ * 
+ * 
+ * def dereference(Reference ref not None, ObjectID id not None):             # <<<<<<<<<<<<<<
+ *     """(Reference ref, ObjectID id) => ObjectID or None
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5r_2dereference(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_3h5r_Reference *__pyx_v_ref, struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_id) {
+  PyObject *__pyx_v_h5i = NULL;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_t_2;
+  int __pyx_t_3;
+  hid_t __pyx_t_4;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("dereference", 0);
+
+  /* "h5py/h5r.pyx":72
+ *     The reference may be either Reference or RegionReference.
+ *     """
+ *     import h5i             # <<<<<<<<<<<<<<
+ *     if not ref:
+ *         return None
+ */
+  __pyx_t_1 = __Pyx_Import(((PyObject *)__pyx_n_s__h5i), 0, -1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_h5i = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+  /* "h5py/h5r.pyx":73
+ *     """
+ *     import h5i
+ *     if not ref:             # <<<<<<<<<<<<<<
+ *         return None
+ *     return h5i.wrap_identifier(H5Rdereference(id.id, <H5R_type_t>ref.typecode, &ref.ref))
+ */
+  __pyx_t_2 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_v_ref)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = (!__pyx_t_2);
+  if (__pyx_t_3) {
+
+    /* "h5py/h5r.pyx":74
+ *     import h5i
+ *     if not ref:
+ *         return None             # <<<<<<<<<<<<<<
+ *     return h5i.wrap_identifier(H5Rdereference(id.id, <H5R_type_t>ref.typecode, &ref.ref))
+ * 
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __Pyx_INCREF(Py_None);
+    __pyx_r = Py_None;
+    goto __pyx_L0;
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  /* "h5py/h5r.pyx":75
+ *     if not ref:
+ *         return None
+ *     return h5i.wrap_identifier(H5Rdereference(id.id, <H5R_type_t>ref.typecode, &ref.ref))             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyObject_GetAttr(__pyx_v_h5i, __pyx_n_s__wrap_identifier); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_4 = __pyx_f_4h5py_4defs_H5Rdereference(__pyx_v_id->id, ((H5R_type_t)__pyx_v_ref->typecode), (&__pyx_v_ref->ref)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = __Pyx_PyInt_to_py_hid_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_6);
+  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5);
+  __Pyx_GIVEREF(__pyx_t_5);
+  __pyx_t_5 = 0;
+  __pyx_t_5 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
+  __pyx_r = __pyx_t_5;
+  __pyx_t_5 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_AddTraceback("h5py.h5r.dereference", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_h5i);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5r_5get_region(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_4h5py_3h5r_4get_region[] = "(Reference ref, ObjectID id) => SpaceID or None\n\n    Retrieve the dataspace selection pointed to by the reference.\n    Returns a copy of the dataset's dataspace, with the appropriate\n    elements selected.  The file identifier or the identifier of any\n    object in the file (including the dataset itself) must also be\n    provided.\n\n    The reference object must be a RegionReference.  If it is zero-filled,\n    returns None.\n    ";
+static PyMethodDef __pyx_mdef_4h5py_3h5r_5get_region = {__Pyx_NAMESTR("get_region"), (PyCFunction)__pyx_pw_4h5py_3h5r_5get_region, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5r_4get_region)};
+static PyObject *__pyx_pw_4h5py_3h5r_5get_region(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  struct __pyx_obj_4h5py_3h5r_RegionReference *__pyx_v_ref = 0;
+  struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_id = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_region (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__ref,&__pyx_n_s__id,0};
+    PyObject* values[2] = {0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__ref)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__id)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("get_region", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_region") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+    }
+    __pyx_v_ref = ((struct __pyx_obj_4h5py_3h5r_RegionReference *)values[0]);
+    __pyx_v_id = ((struct __pyx_obj_4h5py_8_objects_ObjectID *)values[1]);
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("get_region", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5r.get_region", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_ref), __pyx_ptype_4h5py_3h5r_RegionReference, 0, "ref", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_id), __pyx_ptype_4h5py_8_objects_ObjectID, 0, "id", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_pf_4h5py_3h5r_4get_region(__pyx_self, __pyx_v_ref, __pyx_v_id);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5r.pyx":78
+ * 
+ * 
+ * def get_region(RegionReference ref not None, ObjectID id not None):             # <<<<<<<<<<<<<<
+ *     """(Reference ref, ObjectID id) => SpaceID or None
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5r_4get_region(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_3h5r_RegionReference *__pyx_v_ref, struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_id) {
+  PyObject *__pyx_v_h5s = NULL;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_t_2;
+  int __pyx_t_3;
+  int __pyx_t_4;
+  PyObject *__pyx_t_5 = NULL;
+  hid_t __pyx_t_6;
+  PyObject *__pyx_t_7 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_region", 0);
+
+  /* "h5py/h5r.pyx":90
+ *     returns None.
+ *     """
+ *     import h5s             # <<<<<<<<<<<<<<
+ *     if ref.typecode != H5R_DATASET_REGION or not ref:
+ *         return None
+ */
+  __pyx_t_1 = __Pyx_Import(((PyObject *)__pyx_n_s__h5s), 0, -1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_h5s = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+  /* "h5py/h5r.pyx":91
+ *     """
+ *     import h5s
+ *     if ref.typecode != H5R_DATASET_REGION or not ref:             # <<<<<<<<<<<<<<
+ *         return None
+ *     return h5s.SpaceID.open(H5Rget_region(id.id, <H5R_type_t>ref.typecode, &ref.ref))
+ */
+  __pyx_t_2 = (__pyx_v_ref->__pyx_base.typecode != H5R_DATASET_REGION);
+  if (!__pyx_t_2) {
+    __pyx_t_3 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_v_ref)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = (!__pyx_t_3);
+    __pyx_t_3 = __pyx_t_4;
+  } else {
+    __pyx_t_3 = __pyx_t_2;
+  }
+  if (__pyx_t_3) {
+
+    /* "h5py/h5r.pyx":92
+ *     import h5s
+ *     if ref.typecode != H5R_DATASET_REGION or not ref:
+ *         return None             # <<<<<<<<<<<<<<
+ *     return h5s.SpaceID.open(H5Rget_region(id.id, <H5R_type_t>ref.typecode, &ref.ref))
+ * 
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __Pyx_INCREF(Py_None);
+    __pyx_r = Py_None;
+    goto __pyx_L0;
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  /* "h5py/h5r.pyx":93
+ *     if ref.typecode != H5R_DATASET_REGION or not ref:
+ *         return None
+ *     return h5s.SpaceID.open(H5Rget_region(id.id, <H5R_type_t>ref.typecode, &ref.ref))             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyObject_GetAttr(__pyx_v_h5s, __pyx_n_s__SpaceID); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_5 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__open); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_6 = __pyx_f_4h5py_4defs_H5Rget_region(__pyx_v_id->id, ((H5R_type_t)__pyx_v_ref->__pyx_base.typecode), (&__pyx_v_ref->__pyx_base.ref)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyInt_to_py_hid_t(__pyx_t_6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_7);
+  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_t_7), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __Pyx_DECREF(((PyObject *)__pyx_t_7)); __pyx_t_7 = 0;
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_AddTraceback("h5py.h5r.get_region", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_h5s);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5r_7get_obj_type(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_4h5py_3h5r_6get_obj_type[] = "(Reference ref, ObjectID id) => INT obj_code or None\n\n    Determine what type of object the reference points to.  The\n    reference may be a Reference or RegionReference.  The file\n    identifier or the identifier of any object in the file must also\n    be provided.\n\n    The return value is one of:\n\n    - h5g.LINK\n    - h5g.GROUP\n    - h5g.DATASET\n    - h5g.TYPE\n\n    If the reference is zero-filled, returns None.\n    ";
+static PyMethodDef __pyx_mdef_4h5py_3h5r_7get_obj_type = {__Pyx_NAMESTR("get_obj_type"), (PyCFunction)__pyx_pw_4h5py_3h5r_7get_obj_type, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5r_6get_obj_type)};
+static PyObject *__pyx_pw_4h5py_3h5r_7get_obj_type(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  struct __pyx_obj_4h5py_3h5r_Reference *__pyx_v_ref = 0;
+  struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_id = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_obj_type (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__ref,&__pyx_n_s__id,0};
+    PyObject* values[2] = {0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__ref)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__id)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("get_obj_type", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_obj_type") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+    }
+    __pyx_v_ref = ((struct __pyx_obj_4h5py_3h5r_Reference *)values[0]);
+    __pyx_v_id = ((struct __pyx_obj_4h5py_8_objects_ObjectID *)values[1]);
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("get_obj_type", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5r.get_obj_type", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_ref), __pyx_ptype_4h5py_3h5r_Reference, 0, "ref", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_id), __pyx_ptype_4h5py_8_objects_ObjectID, 0, "id", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_pf_4h5py_3h5r_6get_obj_type(__pyx_self, __pyx_v_ref, __pyx_v_id);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5r.pyx":96
+ * 
+ * 
+ * def get_obj_type(Reference ref not None, ObjectID id not None):             # <<<<<<<<<<<<<<
+ *     """(Reference ref, ObjectID id) => INT obj_code or None
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5r_6get_obj_type(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_3h5r_Reference *__pyx_v_ref, struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_id) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  int __pyx_t_2;
+  enum H5G_obj_t __pyx_t_3;
+  PyObject *__pyx_t_4 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_obj_type", 0);
+
+  /* "h5py/h5r.pyx":113
+ *     If the reference is zero-filled, returns None.
+ *     """
+ *     if not ref:             # <<<<<<<<<<<<<<
+ *         return None
+ *     return <int>H5Rget_obj_type(id.id, <H5R_type_t>ref.typecode, &ref.ref)
+ */
+  __pyx_t_1 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_v_ref)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = (!__pyx_t_1);
+  if (__pyx_t_2) {
+
+    /* "h5py/h5r.pyx":114
+ *     """
+ *     if not ref:
+ *         return None             # <<<<<<<<<<<<<<
+ *     return <int>H5Rget_obj_type(id.id, <H5R_type_t>ref.typecode, &ref.ref)
+ * 
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __Pyx_INCREF(Py_None);
+    __pyx_r = Py_None;
+    goto __pyx_L0;
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  /* "h5py/h5r.pyx":115
+ *     if not ref:
+ *         return None
+ *     return <int>H5Rget_obj_type(id.id, <H5R_type_t>ref.typecode, &ref.ref)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_3 = __pyx_f_4h5py_4defs_H5Rget_obj_type(__pyx_v_id->id, ((H5R_type_t)__pyx_v_ref->typecode), (&__pyx_v_ref->ref)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = PyInt_FromLong(((int)__pyx_t_3)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_r = __pyx_t_4;
+  __pyx_t_4 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("h5py.h5r.get_obj_type", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5r_9get_name(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_4h5py_3h5r_8get_name[] = "(Reference ref, ObjectID loc) => STRING name\n\n    Determine the name of the object pointed to by this reference.\n    Requires the HDF5 1.8 API.\n    ";
+static PyMethodDef __pyx_mdef_4h5py_3h5r_9get_name = {__Pyx_NAMESTR("get_name"), (PyCFunction)__pyx_pw_4h5py_3h5r_9get_name, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5r_8get_name)};
+static PyObject *__pyx_pw_4h5py_3h5r_9get_name(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  struct __pyx_obj_4h5py_3h5r_Reference *__pyx_v_ref = 0;
+  struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_loc = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_name (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__ref,&__pyx_n_s__loc,0};
+    PyObject* values[2] = {0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__ref)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__loc)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("get_name", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_name") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+    }
+    __pyx_v_ref = ((struct __pyx_obj_4h5py_3h5r_Reference *)values[0]);
+    __pyx_v_loc = ((struct __pyx_obj_4h5py_8_objects_ObjectID *)values[1]);
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("get_name", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5r.get_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_ref), __pyx_ptype_4h5py_3h5r_Reference, 0, "ref", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_loc), __pyx_ptype_4h5py_8_objects_ObjectID, 0, "loc", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_pf_4h5py_3h5r_8get_name(__pyx_self, __pyx_v_ref, __pyx_v_loc);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5r.pyx":118
+ * 
+ * 
+ * def get_name(Reference ref not None, ObjectID loc not None):             # <<<<<<<<<<<<<<
+ *     """(Reference ref, ObjectID loc) => STRING name
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5r_8get_name(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_3h5r_Reference *__pyx_v_ref, struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_loc) {
+  Py_ssize_t __pyx_v_namesize;
+  char *__pyx_v_namebuf;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  Py_ssize_t __pyx_t_1;
+  int __pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_name", 0);
+
+  /* "h5py/h5r.pyx":124
+ *     Requires the HDF5 1.8 API.
+ *     """
+ *     cdef ssize_t namesize = 0             # <<<<<<<<<<<<<<
+ *     cdef char* namebuf = NULL
+ * 
+ */
+  __pyx_v_namesize = 0;
+
+  /* "h5py/h5r.pyx":125
+ *     """
+ *     cdef ssize_t namesize = 0
+ *     cdef char* namebuf = NULL             # <<<<<<<<<<<<<<
+ * 
+ *     namesize = H5Rget_name(loc.id, <H5R_type_t>ref.typecode, &ref.ref, NULL, 0)
+ */
+  __pyx_v_namebuf = NULL;
+
+  /* "h5py/h5r.pyx":127
+ *     cdef char* namebuf = NULL
+ * 
+ *     namesize = H5Rget_name(loc.id, <H5R_type_t>ref.typecode, &ref.ref, NULL, 0)             # <<<<<<<<<<<<<<
+ *     if namesize > 0:
+ *         namebuf = <char*>malloc(namesize+1)
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Rget_name(__pyx_v_loc->id, ((H5R_type_t)__pyx_v_ref->typecode), (&__pyx_v_ref->ref), NULL, 0); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v_namesize = __pyx_t_1;
+
+  /* "h5py/h5r.pyx":128
+ * 
+ *     namesize = H5Rget_name(loc.id, <H5R_type_t>ref.typecode, &ref.ref, NULL, 0)
+ *     if namesize > 0:             # <<<<<<<<<<<<<<
+ *         namebuf = <char*>malloc(namesize+1)
+ *         try:
+ */
+  __pyx_t_2 = (__pyx_v_namesize > 0);
+  if (__pyx_t_2) {
+
+    /* "h5py/h5r.pyx":129
+ *     namesize = H5Rget_name(loc.id, <H5R_type_t>ref.typecode, &ref.ref, NULL, 0)
+ *     if namesize > 0:
+ *         namebuf = <char*>malloc(namesize+1)             # <<<<<<<<<<<<<<
+ *         try:
+ *             namesize = H5Rget_name(loc.id, <H5R_type_t>ref.typecode, &ref.ref, namebuf, namesize+1)
+ */
+    __pyx_v_namebuf = ((char *)malloc((__pyx_v_namesize + 1)));
+
+    /* "h5py/h5r.pyx":130
+ *     if namesize > 0:
+ *         namebuf = <char*>malloc(namesize+1)
+ *         try:             # <<<<<<<<<<<<<<
+ *             namesize = H5Rget_name(loc.id, <H5R_type_t>ref.typecode, &ref.ref, namebuf, namesize+1)
+ *             return namebuf
+ */
+    /*try:*/ {
+
+      /* "h5py/h5r.pyx":131
+ *         namebuf = <char*>malloc(namesize+1)
+ *         try:
+ *             namesize = H5Rget_name(loc.id, <H5R_type_t>ref.typecode, &ref.ref, namebuf, namesize+1)             # <<<<<<<<<<<<<<
+ *             return namebuf
+ *         finally:
+ */
+      __pyx_t_1 = __pyx_f_4h5py_4defs_H5Rget_name(__pyx_v_loc->id, ((H5R_type_t)__pyx_v_ref->typecode), (&__pyx_v_ref->ref), __pyx_v_namebuf, (__pyx_v_namesize + 1)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L5;}
+      __pyx_v_namesize = __pyx_t_1;
+
+      /* "h5py/h5r.pyx":132
+ *         try:
+ *             namesize = H5Rget_name(loc.id, <H5R_type_t>ref.typecode, &ref.ref, namebuf, namesize+1)
+ *             return namebuf             # <<<<<<<<<<<<<<
+ *         finally:
+ *             free(namebuf)
+ */
+      __Pyx_XDECREF(__pyx_r);
+      __pyx_t_3 = PyBytes_FromString(__pyx_v_namebuf); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L5;}
+      __Pyx_GOTREF(((PyObject *)__pyx_t_3));
+      __pyx_r = ((PyObject *)__pyx_t_3);
+      __pyx_t_3 = 0;
+      goto __pyx_L4;
+    }
+
+    /* "h5py/h5r.pyx":134
+ *             return namebuf
+ *         finally:
+ *             free(namebuf)             # <<<<<<<<<<<<<<
+ * 
+ * cdef class Reference:
+ */
+    /*finally:*/ {
+      int __pyx_why;
+      PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb;
+      int __pyx_exc_lineno;
+      __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
+      __pyx_why = 0; goto __pyx_L6;
+      __pyx_L4: __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
+      __pyx_why = 3; goto __pyx_L6;
+      __pyx_L5: {
+        __pyx_why = 4;
+        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb);
+        __pyx_exc_lineno = __pyx_lineno;
+        goto __pyx_L6;
+      }
+      __pyx_L6:;
+      free(__pyx_v_namebuf);
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+        case 4: {
+          __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb);
+          __pyx_lineno = __pyx_exc_lineno;
+          __pyx_exc_type = 0;
+          __pyx_exc_value = 0;
+          __pyx_exc_tb = 0;
+          goto __pyx_L1_error;
+        }
+      }
+    }
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("h5py.h5r.get_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static int __pyx_pw_4h5py_3h5r_9Reference_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_4h5py_3h5r_9Reference_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  CYTHON_UNUSED PyObject *__pyx_v_args = 0;
+  CYTHON_UNUSED PyObject *__pyx_v_kwds = 0;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
+  if (unlikely(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 1))) return -1;
+  __pyx_v_kwds = (__pyx_kwds) ? PyDict_Copy(__pyx_kwds) : PyDict_New();
+  if (unlikely(!__pyx_v_kwds)) return -1;
+  __Pyx_GOTREF(__pyx_v_kwds);
+  __Pyx_INCREF(__pyx_args);
+  __pyx_v_args = __pyx_args;
+  __pyx_r = __pyx_pf_4h5py_3h5r_9Reference___cinit__(((struct __pyx_obj_4h5py_3h5r_Reference *)__pyx_v_self), __pyx_v_args, __pyx_v_kwds);
+  __Pyx_XDECREF(__pyx_v_args);
+  __Pyx_XDECREF(__pyx_v_kwds);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5r.pyx":151
+ *     """
+ * 
+ *     def __cinit__(self, *args, **kwds):             # <<<<<<<<<<<<<<
+ *         self.typecode = H5R_OBJECT
+ *         self.typesize = sizeof(hobj_ref_t)
+ */
+
+static int __pyx_pf_4h5py_3h5r_9Reference___cinit__(struct __pyx_obj_4h5py_3h5r_Reference *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_args, CYTHON_UNUSED PyObject *__pyx_v_kwds) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__cinit__", 0);
+
+  /* "h5py/h5r.pyx":152
+ * 
+ *     def __cinit__(self, *args, **kwds):
+ *         self.typecode = H5R_OBJECT             # <<<<<<<<<<<<<<
+ *         self.typesize = sizeof(hobj_ref_t)
+ * 
+ */
+  __pyx_v_self->typecode = H5R_OBJECT;
+
+  /* "h5py/h5r.pyx":153
+ *     def __cinit__(self, *args, **kwds):
+ *         self.typecode = H5R_OBJECT
+ *         self.typesize = sizeof(hobj_ref_t)             # <<<<<<<<<<<<<<
+ * 
+ *     def __nonzero__(self):
+ */
+  __pyx_v_self->typesize = (sizeof(hobj_ref_t));
+
+  __pyx_r = 0;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static int __pyx_pw_4h5py_3h5r_9Reference_3__nonzero__(PyObject *__pyx_v_self); /*proto*/
+static int __pyx_pw_4h5py_3h5r_9Reference_3__nonzero__(PyObject *__pyx_v_self) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__nonzero__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5r_9Reference_2__nonzero__(((struct __pyx_obj_4h5py_3h5r_Reference *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5r.pyx":155
+ *         self.typesize = sizeof(hobj_ref_t)
+ * 
+ *     def __nonzero__(self):             # <<<<<<<<<<<<<<
+ *         cdef int i
+ *         for i from 0<=i<self.typesize:
+ */
+
+static int __pyx_pf_4h5py_3h5r_9Reference_2__nonzero__(struct __pyx_obj_4h5py_3h5r_Reference *__pyx_v_self) {
+  int __pyx_v_i;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  size_t __pyx_t_1;
+  int __pyx_t_2;
+  __Pyx_RefNannySetupContext("__nonzero__", 0);
+
+  /* "h5py/h5r.pyx":157
+ *     def __nonzero__(self):
+ *         cdef int i
+ *         for i from 0<=i<self.typesize:             # <<<<<<<<<<<<<<
+ *             if (<unsigned char*>&self.ref)[i] != 0: return True
+ *         return False
+ */
+  __pyx_t_1 = __pyx_v_self->typesize;
+  for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_1; __pyx_v_i++) {
+
+    /* "h5py/h5r.pyx":158
+ *         cdef int i
+ *         for i from 0<=i<self.typesize:
+ *             if (<unsigned char*>&self.ref)[i] != 0: return True             # <<<<<<<<<<<<<<
+ *         return False
+ * 
+ */
+    __pyx_t_2 = ((((unsigned char *)(&__pyx_v_self->ref))[__pyx_v_i]) != 0);
+    if (__pyx_t_2) {
+      __pyx_r = 1;
+      goto __pyx_L0;
+      goto __pyx_L5;
+    }
+    __pyx_L5:;
+  }
+
+  /* "h5py/h5r.pyx":159
+ *         for i from 0<=i<self.typesize:
+ *             if (<unsigned char*>&self.ref)[i] != 0: return True
+ *         return False             # <<<<<<<<<<<<<<
+ * 
+ *     def __repr__(self):
+ */
+  __pyx_r = 0;
+  goto __pyx_L0;
+
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5r_9Reference_5__repr__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4h5py_3h5r_9Reference_5__repr__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5r_9Reference_4__repr__(((struct __pyx_obj_4h5py_3h5r_Reference *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5r.pyx":161
+ *         return False
+ * 
+ *     def __repr__(self):             # <<<<<<<<<<<<<<
+ *         return "<HDF5 object reference%s>" % ("" if self else " (null)")
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5r_9Reference_4__repr__(struct __pyx_obj_4h5py_3h5r_Reference *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__repr__", 0);
+
+  /* "h5py/h5r.pyx":162
+ * 
+ *     def __repr__(self):
+ *         return "<HDF5 object reference%s>" % ("" if self else " (null)")             # <<<<<<<<<<<<<<
+ * 
+ * cdef class RegionReference(Reference):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_2 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_v_self)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__pyx_t_2) {
+    __Pyx_INCREF(((PyObject *)__pyx_kp_s_6));
+    __pyx_t_1 = __pyx_kp_s_6;
+  } else {
+    __Pyx_INCREF(((PyObject *)__pyx_kp_s_7));
+    __pyx_t_1 = __pyx_kp_s_7;
+  }
+  __pyx_t_3 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_5), ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(((PyObject *)__pyx_t_3));
+  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
+  __pyx_r = ((PyObject *)__pyx_t_3);
+  __pyx_t_3 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("h5py.h5r.Reference.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5r_9Reference_8typecode_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4h5py_3h5r_9Reference_8typecode_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5r_9Reference_8typecode___get__(((struct __pyx_obj_4h5py_3h5r_Reference *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5r.pxd":24
+ * 
+ *     cdef ref_u ref
+ *     cdef readonly int typecode             # <<<<<<<<<<<<<<
+ *     cdef readonly size_t typesize
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5r_9Reference_8typecode___get__(struct __pyx_obj_4h5py_3h5r_Reference *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyInt_FromLong(__pyx_v_self->typecode); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py.h5r.Reference.typecode.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5r_9Reference_8typesize_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4h5py_3h5r_9Reference_8typesize_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5r_9Reference_8typesize___get__(((struct __pyx_obj_4h5py_3h5r_Reference *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5r.pxd":25
+ *     cdef ref_u ref
+ *     cdef readonly int typecode
+ *     cdef readonly size_t typesize             # <<<<<<<<<<<<<<
+ * 
+ * cdef class RegionReference(Reference):
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5r_9Reference_8typesize___get__(struct __pyx_obj_4h5py_3h5r_Reference *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_self->typesize); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py.h5r.Reference.typesize.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static int __pyx_pw_4h5py_3h5r_15RegionReference_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_4h5py_3h5r_15RegionReference_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  CYTHON_UNUSED PyObject *__pyx_v_args = 0;
+  CYTHON_UNUSED PyObject *__pyx_v_kwds = 0;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
+  if (unlikely(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 1))) return -1;
+  __pyx_v_kwds = (__pyx_kwds) ? PyDict_Copy(__pyx_kwds) : PyDict_New();
+  if (unlikely(!__pyx_v_kwds)) return -1;
+  __Pyx_GOTREF(__pyx_v_kwds);
+  __Pyx_INCREF(__pyx_args);
+  __pyx_v_args = __pyx_args;
+  __pyx_r = __pyx_pf_4h5py_3h5r_15RegionReference___cinit__(((struct __pyx_obj_4h5py_3h5r_RegionReference *)__pyx_v_self), __pyx_v_args, __pyx_v_kwds);
+  __Pyx_XDECREF(__pyx_v_args);
+  __Pyx_XDECREF(__pyx_v_kwds);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5r.pyx":173
+ *     """
+ * 
+ *     def __cinit__(self, *args, **kwds):             # <<<<<<<<<<<<<<
+ *         self.typecode = H5R_DATASET_REGION
+ *         self.typesize = sizeof(hdset_reg_ref_t)
+ */
+
+static int __pyx_pf_4h5py_3h5r_15RegionReference___cinit__(struct __pyx_obj_4h5py_3h5r_RegionReference *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_args, CYTHON_UNUSED PyObject *__pyx_v_kwds) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__cinit__", 0);
+
+  /* "h5py/h5r.pyx":174
+ * 
+ *     def __cinit__(self, *args, **kwds):
+ *         self.typecode = H5R_DATASET_REGION             # <<<<<<<<<<<<<<
+ *         self.typesize = sizeof(hdset_reg_ref_t)
+ * 
+ */
+  __pyx_v_self->__pyx_base.typecode = H5R_DATASET_REGION;
+
+  /* "h5py/h5r.pyx":175
+ *     def __cinit__(self, *args, **kwds):
+ *         self.typecode = H5R_DATASET_REGION
+ *         self.typesize = sizeof(hdset_reg_ref_t)             # <<<<<<<<<<<<<<
+ * 
+ *     def __repr__(self):
+ */
+  __pyx_v_self->__pyx_base.typesize = (sizeof(hdset_reg_ref_t));
+
+  __pyx_r = 0;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5r_15RegionReference_3__repr__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4h5py_3h5r_15RegionReference_3__repr__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5r_15RegionReference_2__repr__(((struct __pyx_obj_4h5py_3h5r_RegionReference *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5r.pyx":177
+ *         self.typesize = sizeof(hdset_reg_ref_t)
+ * 
+ *     def __repr__(self):             # <<<<<<<<<<<<<<
+ *         return "<HDF5 region reference%s>" % ("" if self else " (null")
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5r_15RegionReference_2__repr__(struct __pyx_obj_4h5py_3h5r_RegionReference *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__repr__", 0);
+
+  /* "h5py/h5r.pyx":178
+ * 
+ *     def __repr__(self):
+ *         return "<HDF5 region reference%s>" % ("" if self else " (null")             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_2 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_v_self)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 178; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__pyx_t_2) {
+    __Pyx_INCREF(((PyObject *)__pyx_kp_s_6));
+    __pyx_t_1 = __pyx_kp_s_6;
+  } else {
+    __Pyx_INCREF(((PyObject *)__pyx_kp_s_9));
+    __pyx_t_1 = __pyx_kp_s_9;
+  }
+  __pyx_t_3 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_8), ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 178; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(((PyObject *)__pyx_t_3));
+  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
+  __pyx_r = ((PyObject *)__pyx_t_3);
+  __pyx_t_3 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("h5py.h5r.RegionReference.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_tp_new_4h5py_3h5r_Reference(PyTypeObject *t, PyObject *a, PyObject *k) {
+  PyObject *o = (*t->tp_alloc)(t, 0);
+  if (!o) return 0;
+  if (__pyx_pw_4h5py_3h5r_9Reference_1__cinit__(o, a, k) < 0) {
+    Py_DECREF(o); o = 0;
+  }
+  return o;
+}
+
+static void __pyx_tp_dealloc_4h5py_3h5r_Reference(PyObject *o) {
+  (*Py_TYPE(o)->tp_free)(o);
+}
+
+static PyObject *__pyx_getprop_4h5py_3h5r_9Reference_typecode(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_4h5py_3h5r_9Reference_8typecode_1__get__(o);
+}
+
+static PyObject *__pyx_getprop_4h5py_3h5r_9Reference_typesize(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_4h5py_3h5r_9Reference_8typesize_1__get__(o);
+}
+
+static PyMethodDef __pyx_methods_4h5py_3h5r_Reference[] = {
+  {0, 0, 0, 0}
+};
+
+static struct PyGetSetDef __pyx_getsets_4h5py_3h5r_Reference[] = {
+  {(char *)"typecode", __pyx_getprop_4h5py_3h5r_9Reference_typecode, 0, 0, 0},
+  {(char *)"typesize", __pyx_getprop_4h5py_3h5r_9Reference_typesize, 0, 0, 0},
+  {0, 0, 0, 0, 0}
+};
+
+static PyNumberMethods __pyx_tp_as_number_Reference = {
+  0, /*nb_add*/
+  0, /*nb_subtract*/
+  0, /*nb_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_divide*/
+  #endif
+  0, /*nb_remainder*/
+  0, /*nb_divmod*/
+  0, /*nb_power*/
+  0, /*nb_negative*/
+  0, /*nb_positive*/
+  0, /*nb_absolute*/
+  __pyx_pw_4h5py_3h5r_9Reference_3__nonzero__, /*nb_nonzero*/
+  0, /*nb_invert*/
+  0, /*nb_lshift*/
+  0, /*nb_rshift*/
+  0, /*nb_and*/
+  0, /*nb_xor*/
+  0, /*nb_or*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_coerce*/
+  #endif
+  0, /*nb_int*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_long*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*nb_float*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_oct*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_hex*/
+  #endif
+  0, /*nb_inplace_add*/
+  0, /*nb_inplace_subtract*/
+  0, /*nb_inplace_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_inplace_divide*/
+  #endif
+  0, /*nb_inplace_remainder*/
+  0, /*nb_inplace_power*/
+  0, /*nb_inplace_lshift*/
+  0, /*nb_inplace_rshift*/
+  0, /*nb_inplace_and*/
+  0, /*nb_inplace_xor*/
+  0, /*nb_inplace_or*/
+  0, /*nb_floor_divide*/
+  0, /*nb_true_divide*/
+  0, /*nb_inplace_floor_divide*/
+  0, /*nb_inplace_true_divide*/
+  #if PY_VERSION_HEX >= 0x02050000
+  0, /*nb_index*/
+  #endif
+};
+
+static PySequenceMethods __pyx_tp_as_sequence_Reference = {
+  0, /*sq_length*/
+  0, /*sq_concat*/
+  0, /*sq_repeat*/
+  0, /*sq_item*/
+  0, /*sq_slice*/
+  0, /*sq_ass_item*/
+  0, /*sq_ass_slice*/
+  0, /*sq_contains*/
+  0, /*sq_inplace_concat*/
+  0, /*sq_inplace_repeat*/
+};
+
+static PyMappingMethods __pyx_tp_as_mapping_Reference = {
+  0, /*mp_length*/
+  0, /*mp_subscript*/
+  0, /*mp_ass_subscript*/
+};
+
+static PyBufferProcs __pyx_tp_as_buffer_Reference = {
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getreadbuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getwritebuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getsegcount*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getcharbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_getbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_releasebuffer*/
+  #endif
+};
+
+static PyTypeObject __pyx_type_4h5py_3h5r_Reference = {
+  PyVarObject_HEAD_INIT(0, 0)
+  __Pyx_NAMESTR("h5py.h5r.Reference"), /*tp_name*/
+  sizeof(struct __pyx_obj_4h5py_3h5r_Reference), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_4h5py_3h5r_Reference, /*tp_dealloc*/
+  0, /*tp_print*/
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #else
+  0, /*reserved*/
+  #endif
+  __pyx_pw_4h5py_3h5r_9Reference_5__repr__, /*tp_repr*/
+  &__pyx_tp_as_number_Reference, /*tp_as_number*/
+  &__pyx_tp_as_sequence_Reference, /*tp_as_sequence*/
+  &__pyx_tp_as_mapping_Reference, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  &__pyx_tp_as_buffer_Reference, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
+  __Pyx_DOCSTR("\n        Opaque representation of an HDF5 reference.\n\n        Objects of this class are created exclusively by the library and\n        cannot be modified.  The read-only attribute \"typecode\" determines\n        whether the reference is to an object in an HDF5 file (OBJECT)\n        or a dataset region (DATASET_REGION).\n\n        The object's truth value indicates whether it contains a nonzero\n        reference.  This does not guarantee that is valid, but is useful [...]
+  0, /*tp_traverse*/
+  0, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_4h5py_3h5r_Reference, /*tp_methods*/
+  0, /*tp_members*/
+  __pyx_getsets_4h5py_3h5r_Reference, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  0, /*tp_dictoffset*/
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_4h5py_3h5r_Reference, /*tp_new*/
+  0, /*tp_free*/
+  0, /*tp_is_gc*/
+  0, /*tp_bases*/
+  0, /*tp_mro*/
+  0, /*tp_cache*/
+  0, /*tp_subclasses*/
+  0, /*tp_weaklist*/
+  0, /*tp_del*/
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*tp_version_tag*/
+  #endif
+};
+
+static PyObject *__pyx_tp_new_4h5py_3h5r_RegionReference(PyTypeObject *t, PyObject *a, PyObject *k) {
+  PyObject *o = __pyx_tp_new_4h5py_3h5r_Reference(t, a, k);
+  if (!o) return 0;
+  if (__pyx_pw_4h5py_3h5r_15RegionReference_1__cinit__(o, a, k) < 0) {
+    Py_DECREF(o); o = 0;
+  }
+  return o;
+}
+
+static PyMethodDef __pyx_methods_4h5py_3h5r_RegionReference[] = {
+  {0, 0, 0, 0}
+};
+
+static PyNumberMethods __pyx_tp_as_number_RegionReference = {
+  0, /*nb_add*/
+  0, /*nb_subtract*/
+  0, /*nb_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_divide*/
+  #endif
+  0, /*nb_remainder*/
+  0, /*nb_divmod*/
+  0, /*nb_power*/
+  0, /*nb_negative*/
+  0, /*nb_positive*/
+  0, /*nb_absolute*/
+  #if CYTHON_COMPILING_IN_PYPY
+  __pyx_pw_4h5py_3h5r_9Reference_3__nonzero__, /*nb_nonzero*/
+  #else
+  0, /*nb_nonzero*/
+  #endif
+  0, /*nb_invert*/
+  0, /*nb_lshift*/
+  0, /*nb_rshift*/
+  0, /*nb_and*/
+  0, /*nb_xor*/
+  0, /*nb_or*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_coerce*/
+  #endif
+  0, /*nb_int*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_long*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*nb_float*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_oct*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_hex*/
+  #endif
+  0, /*nb_inplace_add*/
+  0, /*nb_inplace_subtract*/
+  0, /*nb_inplace_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_inplace_divide*/
+  #endif
+  0, /*nb_inplace_remainder*/
+  0, /*nb_inplace_power*/
+  0, /*nb_inplace_lshift*/
+  0, /*nb_inplace_rshift*/
+  0, /*nb_inplace_and*/
+  0, /*nb_inplace_xor*/
+  0, /*nb_inplace_or*/
+  0, /*nb_floor_divide*/
+  0, /*nb_true_divide*/
+  0, /*nb_inplace_floor_divide*/
+  0, /*nb_inplace_true_divide*/
+  #if PY_VERSION_HEX >= 0x02050000
+  0, /*nb_index*/
+  #endif
+};
+
+static PySequenceMethods __pyx_tp_as_sequence_RegionReference = {
+  0, /*sq_length*/
+  0, /*sq_concat*/
+  0, /*sq_repeat*/
+  0, /*sq_item*/
+  0, /*sq_slice*/
+  0, /*sq_ass_item*/
+  0, /*sq_ass_slice*/
+  0, /*sq_contains*/
+  0, /*sq_inplace_concat*/
+  0, /*sq_inplace_repeat*/
+};
+
+static PyMappingMethods __pyx_tp_as_mapping_RegionReference = {
+  0, /*mp_length*/
+  0, /*mp_subscript*/
+  0, /*mp_ass_subscript*/
+};
+
+static PyBufferProcs __pyx_tp_as_buffer_RegionReference = {
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getreadbuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getwritebuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getsegcount*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getcharbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_getbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_releasebuffer*/
+  #endif
+};
+
+static PyTypeObject __pyx_type_4h5py_3h5r_RegionReference = {
+  PyVarObject_HEAD_INIT(0, 0)
+  __Pyx_NAMESTR("h5py.h5r.RegionReference"), /*tp_name*/
+  sizeof(struct __pyx_obj_4h5py_3h5r_RegionReference), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_4h5py_3h5r_Reference, /*tp_dealloc*/
+  0, /*tp_print*/
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #else
+  0, /*reserved*/
+  #endif
+  __pyx_pw_4h5py_3h5r_15RegionReference_3__repr__, /*tp_repr*/
+  &__pyx_tp_as_number_RegionReference, /*tp_as_number*/
+  &__pyx_tp_as_sequence_RegionReference, /*tp_as_sequence*/
+  &__pyx_tp_as_mapping_RegionReference, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  &__pyx_tp_as_buffer_RegionReference, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
+  __Pyx_DOCSTR("\n        Opaque representation of an HDF5 region reference.\n\n        This is a subclass of Reference which exists mainly for programming\n        convenience.\n    "), /*tp_doc*/
+  0, /*tp_traverse*/
+  0, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_4h5py_3h5r_RegionReference, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  0, /*tp_dictoffset*/
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_4h5py_3h5r_RegionReference, /*tp_new*/
+  0, /*tp_free*/
+  0, /*tp_is_gc*/
+  0, /*tp_bases*/
+  0, /*tp_mro*/
+  0, /*tp_cache*/
+  0, /*tp_subclasses*/
+  0, /*tp_weaklist*/
+  0, /*tp_del*/
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*tp_version_tag*/
+  #endif
+};
+
+static PyMethodDef __pyx_methods[] = {
+  {0, 0, 0, 0}
+};
+
+#if PY_MAJOR_VERSION >= 3
+static struct PyModuleDef __pyx_moduledef = {
+  #if PY_VERSION_HEX < 0x03020000
+    { PyObject_HEAD_INIT(NULL) NULL, 0, NULL },
+  #else
+    PyModuleDef_HEAD_INIT,
+  #endif
+    __Pyx_NAMESTR("h5r"),
+    __Pyx_DOCSTR(__pyx_k_10), /* m_doc */
+    -1, /* m_size */
+    __pyx_methods /* m_methods */,
+    NULL, /* m_reload */
+    NULL, /* m_traverse */
+    NULL, /* m_clear */
+    NULL /* m_free */
+};
+#endif
+
+static __Pyx_StringTabEntry __pyx_string_tab[] = {
+  {&__pyx_kp_s_1, __pyx_k_1, sizeof(__pyx_k_1), 0, 0, 1, 0},
+  {&__pyx_kp_s_13, __pyx_k_13, sizeof(__pyx_k_13), 0, 0, 1, 0},
+  {&__pyx_n_s_14, __pyx_k_14, sizeof(__pyx_k_14), 0, 0, 1, 1},
+  {&__pyx_kp_s_3, __pyx_k_3, sizeof(__pyx_k_3), 0, 0, 1, 0},
+  {&__pyx_kp_s_5, __pyx_k_5, sizeof(__pyx_k_5), 0, 0, 1, 0},
+  {&__pyx_kp_s_6, __pyx_k_6, sizeof(__pyx_k_6), 0, 0, 1, 0},
+  {&__pyx_kp_s_7, __pyx_k_7, sizeof(__pyx_k_7), 0, 0, 1, 0},
+  {&__pyx_kp_s_8, __pyx_k_8, sizeof(__pyx_k_8), 0, 0, 1, 0},
+  {&__pyx_kp_s_9, __pyx_k_9, sizeof(__pyx_k_9), 0, 0, 1, 0},
+  {&__pyx_n_s__DATASET_REGION, __pyx_k__DATASET_REGION, sizeof(__pyx_k__DATASET_REGION), 0, 0, 1, 1},
+  {&__pyx_n_s__OBJECT, __pyx_k__OBJECT, sizeof(__pyx_k__OBJECT), 0, 0, 1, 1},
+  {&__pyx_n_s__SpaceID, __pyx_k__SpaceID, sizeof(__pyx_k__SpaceID), 0, 0, 1, 1},
+  {&__pyx_n_s__ValueError, __pyx_k__ValueError, sizeof(__pyx_k__ValueError), 0, 0, 1, 1},
+  {&__pyx_n_s____main__, __pyx_k____main__, sizeof(__pyx_k____main__), 0, 0, 1, 1},
+  {&__pyx_n_s____test__, __pyx_k____test__, sizeof(__pyx_k____test__), 0, 0, 1, 1},
+  {&__pyx_n_s__create, __pyx_k__create, sizeof(__pyx_k__create), 0, 0, 1, 1},
+  {&__pyx_n_s__dereference, __pyx_k__dereference, sizeof(__pyx_k__dereference), 0, 0, 1, 1},
+  {&__pyx_n_s__get_name, __pyx_k__get_name, sizeof(__pyx_k__get_name), 0, 0, 1, 1},
+  {&__pyx_n_s__get_obj_type, __pyx_k__get_obj_type, sizeof(__pyx_k__get_obj_type), 0, 0, 1, 1},
+  {&__pyx_n_s__get_region, __pyx_k__get_region, sizeof(__pyx_k__get_region), 0, 0, 1, 1},
+  {&__pyx_n_s__h5i, __pyx_k__h5i, sizeof(__pyx_k__h5i), 0, 0, 1, 1},
+  {&__pyx_n_s__h5s, __pyx_k__h5s, sizeof(__pyx_k__h5s), 0, 0, 1, 1},
+  {&__pyx_n_s__id, __pyx_k__id, sizeof(__pyx_k__id), 0, 0, 1, 1},
+  {&__pyx_n_s__loc, __pyx_k__loc, sizeof(__pyx_k__loc), 0, 0, 1, 1},
+  {&__pyx_n_s__name, __pyx_k__name, sizeof(__pyx_k__name), 0, 0, 1, 1},
+  {&__pyx_n_s__namebuf, __pyx_k__namebuf, sizeof(__pyx_k__namebuf), 0, 0, 1, 1},
+  {&__pyx_n_s__namesize, __pyx_k__namesize, sizeof(__pyx_k__namesize), 0, 0, 1, 1},
+  {&__pyx_n_s__open, __pyx_k__open, sizeof(__pyx_k__open), 0, 0, 1, 1},
+  {&__pyx_n_s__ref, __pyx_k__ref, sizeof(__pyx_k__ref), 0, 0, 1, 1},
+  {&__pyx_n_s__ref_type, __pyx_k__ref_type, sizeof(__pyx_k__ref_type), 0, 0, 1, 1},
+  {&__pyx_n_s__space, __pyx_k__space, sizeof(__pyx_k__space), 0, 0, 1, 1},
+  {&__pyx_n_s__space_id, __pyx_k__space_id, sizeof(__pyx_k__space_id), 0, 0, 1, 1},
+  {&__pyx_n_s__wrap_identifier, __pyx_k__wrap_identifier, sizeof(__pyx_k__wrap_identifier), 0, 0, 1, 1},
+  {0, 0, 0, 0, 0, 0, 0}
+};
+static int __Pyx_InitCachedBuiltins(void) {
+  __pyx_builtin_ValueError = __Pyx_GetName(__pyx_b, __pyx_n_s__ValueError); if (!__pyx_builtin_ValueError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  return 0;
+  __pyx_L1_error:;
+  return -1;
+}
+
+static int __Pyx_InitCachedConstants(void) {
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0);
+
+  /* "h5py/h5r.pyx":47
+ *     elif ref_type == H5R_DATASET_REGION:
+ *         if space is None:   # work around segfault in HDF5
+ *             raise ValueError("Dataspace required for region reference")             # <<<<<<<<<<<<<<
+ *         ref = RegionReference()
+ *     else:
+ */
+  __pyx_k_tuple_2 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_1)); if (unlikely(!__pyx_k_tuple_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_2);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_2));
+
+  /* "h5py/h5r.pyx":50
+ *         ref = RegionReference()
+ *     else:
+ *         raise ValueError("Unknown reference typecode")             # <<<<<<<<<<<<<<
+ * 
+ *     if space is None:
+ */
+  __pyx_k_tuple_4 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_3)); if (unlikely(!__pyx_k_tuple_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_4);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_4));
+
+  /* "h5py/h5r.pyx":25
+ * 
+ * 
+ * def create(ObjectID loc not None, char* name, int ref_type, ObjectID space=None):             # <<<<<<<<<<<<<<
+ *     """(ObjectID loc, STRING name, INT ref_type, SpaceID space=None)
+ *     => ReferenceObject ref
+ */
+  __pyx_k_tuple_11 = PyTuple_Pack(6, ((PyObject *)__pyx_n_s__loc), ((PyObject *)__pyx_n_s__name), ((PyObject *)__pyx_n_s__ref_type), ((PyObject *)__pyx_n_s__space), ((PyObject *)__pyx_n_s__space_id), ((PyObject *)__pyx_n_s__ref)); if (unlikely(!__pyx_k_tuple_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_11);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_11));
+  __pyx_k_codeobj_12 = (PyObject*)__Pyx_PyCode_New(4, 0, 6, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_11, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_13, __pyx_n_s__create, 25, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5r.pyx":62
+ * 
+ * 
+ * def dereference(Reference ref not None, ObjectID id not None):             # <<<<<<<<<<<<<<
+ *     """(Reference ref, ObjectID id) => ObjectID or None
+ * 
+ */
+  __pyx_k_tuple_15 = PyTuple_Pack(3, ((PyObject *)__pyx_n_s__ref), ((PyObject *)__pyx_n_s__id), ((PyObject *)__pyx_n_s__h5i)); if (unlikely(!__pyx_k_tuple_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_15);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_15));
+  __pyx_k_codeobj_16 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_15, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_13, __pyx_n_s__dereference, 62, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5r.pyx":78
+ * 
+ * 
+ * def get_region(RegionReference ref not None, ObjectID id not None):             # <<<<<<<<<<<<<<
+ *     """(Reference ref, ObjectID id) => SpaceID or None
+ * 
+ */
+  __pyx_k_tuple_17 = PyTuple_Pack(3, ((PyObject *)__pyx_n_s__ref), ((PyObject *)__pyx_n_s__id), ((PyObject *)__pyx_n_s__h5s)); if (unlikely(!__pyx_k_tuple_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_17);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_17));
+  __pyx_k_codeobj_18 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_17, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_13, __pyx_n_s__get_region, 78, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_18)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5r.pyx":96
+ * 
+ * 
+ * def get_obj_type(Reference ref not None, ObjectID id not None):             # <<<<<<<<<<<<<<
+ *     """(Reference ref, ObjectID id) => INT obj_code or None
+ * 
+ */
+  __pyx_k_tuple_19 = PyTuple_Pack(2, ((PyObject *)__pyx_n_s__ref), ((PyObject *)__pyx_n_s__id)); if (unlikely(!__pyx_k_tuple_19)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_19);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_19));
+  __pyx_k_codeobj_20 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_19, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_13, __pyx_n_s__get_obj_type, 96, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_20)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5r.pyx":118
+ * 
+ * 
+ * def get_name(Reference ref not None, ObjectID loc not None):             # <<<<<<<<<<<<<<
+ *     """(Reference ref, ObjectID loc) => STRING name
+ * 
+ */
+  __pyx_k_tuple_21 = PyTuple_Pack(4, ((PyObject *)__pyx_n_s__ref), ((PyObject *)__pyx_n_s__loc), ((PyObject *)__pyx_n_s__namesize), ((PyObject *)__pyx_n_s__namebuf)); if (unlikely(!__pyx_k_tuple_21)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_21);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_21));
+  __pyx_k_codeobj_22 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_13, __pyx_n_s__get_name, 118, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_22)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_RefNannyFinishContext();
+  return 0;
+  __pyx_L1_error:;
+  __Pyx_RefNannyFinishContext();
+  return -1;
+}
+
+static int __Pyx_InitGlobals(void) {
+  if (__Pyx_InitStrings(__pyx_string_tab) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  return 0;
+  __pyx_L1_error:;
+  return -1;
+}
+
+#if PY_MAJOR_VERSION < 3
+PyMODINIT_FUNC inith5r(void); /*proto*/
+PyMODINIT_FUNC inith5r(void)
+#else
+PyMODINIT_FUNC PyInit_h5r(void); /*proto*/
+PyMODINIT_FUNC PyInit_h5r(void)
+#endif
+{
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  __Pyx_RefNannyDeclarations
+  #if CYTHON_REFNANNY
+  __Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny");
+  if (!__Pyx_RefNanny) {
+      PyErr_Clear();
+      __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny");
+      if (!__Pyx_RefNanny)
+          Py_FatalError("failed to import 'refnanny' module");
+  }
+  #endif
+  __Pyx_RefNannySetupContext("PyMODINIT_FUNC PyInit_h5r(void)", 0);
+  if ( __Pyx_check_binary_version() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #ifdef __Pyx_CyFunction_USED
+  if (__Pyx_CyFunction_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #endif
+  #ifdef __Pyx_FusedFunction_USED
+  if (__pyx_FusedFunction_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #endif
+  #ifdef __Pyx_Generator_USED
+  if (__pyx_Generator_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #endif
+  /*--- Library function declarations ---*/
+  /*--- Threads initialization code ---*/
+  #if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS
+  #ifdef WITH_THREAD /* Python build with threading support? */
+  PyEval_InitThreads();
+  #endif
+  #endif
+  /*--- Module creation code ---*/
+  #if PY_MAJOR_VERSION < 3
+  __pyx_m = Py_InitModule4(__Pyx_NAMESTR("h5r"), __pyx_methods, __Pyx_DOCSTR(__pyx_k_10), 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m);
+  #else
+  __pyx_m = PyModule_Create(&__pyx_moduledef);
+  #endif
+  if (unlikely(!__pyx_m)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #if PY_MAJOR_VERSION >= 3
+  {
+    PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (!PyDict_GetItemString(modules, "h5py.h5r")) {
+      if (unlikely(PyDict_SetItemString(modules, "h5py.h5r", __pyx_m) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    }
+  }
+  #endif
+  __pyx_b = PyImport_AddModule(__Pyx_NAMESTR(__Pyx_BUILTIN_MODULE_NAME)); if (unlikely(!__pyx_b)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #if CYTHON_COMPILING_IN_PYPY
+  Py_INCREF(__pyx_b);
+  #endif
+  if (__Pyx_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  /*--- Initialize various global constants etc. ---*/
+  if (unlikely(__Pyx_InitGlobals() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__pyx_module_is_main_h5py__h5r) {
+    if (__Pyx_SetAttrString(__pyx_m, "__name__", __pyx_n_s____main__) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  }
+  /*--- Builtin init code ---*/
+  if (unlikely(__Pyx_InitCachedBuiltins() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  /*--- Constants init code ---*/
+  if (unlikely(__Pyx_InitCachedConstants() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  /*--- Global init code ---*/
+  /*--- Variable export code ---*/
+  /*--- Function export code ---*/
+  /*--- Type init code ---*/
+  if (PyType_Ready(&__pyx_type_4h5py_3h5r_Reference) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetAttrString(__pyx_m, "Reference", (PyObject *)&__pyx_type_4h5py_3h5r_Reference) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5r_Reference = &__pyx_type_4h5py_3h5r_Reference;
+  __pyx_type_4h5py_3h5r_RegionReference.tp_base = __pyx_ptype_4h5py_3h5r_Reference;
+  if (PyType_Ready(&__pyx_type_4h5py_3h5r_RegionReference) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 164; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetAttrString(__pyx_m, "RegionReference", (PyObject *)&__pyx_type_4h5py_3h5r_RegionReference) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 164; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5r_RegionReference = &__pyx_type_4h5py_3h5r_RegionReference;
+  /*--- Type import code ---*/
+  __pyx_ptype_4h5py_8_objects_ObjectID = __Pyx_ImportType("h5py._objects", "ObjectID", sizeof(struct __pyx_obj_4h5py_8_objects_ObjectID), 1); if (unlikely(!__pyx_ptype_4h5py_8_objects_ObjectID)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 12; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  /*--- Variable import code ---*/
+  /*--- Function import code ---*/
+  __pyx_t_1 = __Pyx_ImportModule("h5py.defs"); if (!__pyx_t_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Rcreate", (void (**)(void))&__pyx_f_4h5py_4defs_H5Rcreate, "herr_t (void *, hid_t, char *, H5R_type_t, hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Rdereference", (void (**)(void))&__pyx_f_4h5py_4defs_H5Rdereference, "hid_t (hid_t, H5R_type_t, void *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Rget_region", (void (**)(void))&__pyx_f_4h5py_4defs_H5Rget_region, "hid_t (hid_t, H5R_type_t, void *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Rget_obj_type", (void (**)(void))&__pyx_f_4h5py_4defs_H5Rget_obj_type, "enum H5G_obj_t (hid_t, H5R_type_t, void *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Rget_name", (void (**)(void))&__pyx_f_4h5py_4defs_H5Rget_name, "Py_ssize_t (hid_t, H5R_type_t, void *, char *, size_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  Py_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  /*--- Execution code ---*/
+
+  /* "h5py/h5r.pyx":19
+ * # === Public constants and data structures ====================================
+ * 
+ * OBJECT = H5R_OBJECT             # <<<<<<<<<<<<<<
+ * DATASET_REGION = H5R_DATASET_REGION
+ * 
+ */
+  __pyx_t_2 = PyInt_FromLong(H5R_OBJECT); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__OBJECT, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/h5r.pyx":20
+ * 
+ * OBJECT = H5R_OBJECT
+ * DATASET_REGION = H5R_DATASET_REGION             # <<<<<<<<<<<<<<
+ * 
+ * # === Reference API ===========================================================
+ */
+  __pyx_t_2 = PyInt_FromLong(H5R_DATASET_REGION); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__DATASET_REGION, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/h5r.pyx":25
+ * 
+ * 
+ * def create(ObjectID loc not None, char* name, int ref_type, ObjectID space=None):             # <<<<<<<<<<<<<<
+ *     """(ObjectID loc, STRING name, INT ref_type, SpaceID space=None)
+ *     => ReferenceObject ref
+ */
+  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_4h5py_3h5r_1create, NULL, __pyx_n_s_14); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__create, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/h5r.pyx":62
+ * 
+ * 
+ * def dereference(Reference ref not None, ObjectID id not None):             # <<<<<<<<<<<<<<
+ *     """(Reference ref, ObjectID id) => ObjectID or None
+ * 
+ */
+  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_4h5py_3h5r_3dereference, NULL, __pyx_n_s_14); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__dereference, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/h5r.pyx":78
+ * 
+ * 
+ * def get_region(RegionReference ref not None, ObjectID id not None):             # <<<<<<<<<<<<<<
+ *     """(Reference ref, ObjectID id) => SpaceID or None
+ * 
+ */
+  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_4h5py_3h5r_5get_region, NULL, __pyx_n_s_14); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__get_region, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/h5r.pyx":96
+ * 
+ * 
+ * def get_obj_type(Reference ref not None, ObjectID id not None):             # <<<<<<<<<<<<<<
+ *     """(Reference ref, ObjectID id) => INT obj_code or None
+ * 
+ */
+  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_4h5py_3h5r_7get_obj_type, NULL, __pyx_n_s_14); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__get_obj_type, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/h5r.pyx":118
+ * 
+ * 
+ * def get_name(Reference ref not None, ObjectID loc not None):             # <<<<<<<<<<<<<<
+ *     """(Reference ref, ObjectID loc) => STRING name
+ * 
+ */
+  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_4h5py_3h5r_9get_name, NULL, __pyx_n_s_14); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__get_name, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/h5r.pyx":1
+ * # This file is part of h5py, a Python interface to the HDF5 library.             # <<<<<<<<<<<<<<
+ * #
+ * # http://www.h5py.org
+ */
+  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s____test__, ((PyObject *)__pyx_t_2)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  if (__pyx_m) {
+    __Pyx_AddTraceback("init h5py.h5r", __pyx_clineno, __pyx_lineno, __pyx_filename);
+    Py_DECREF(__pyx_m); __pyx_m = 0;
+  } else if (!PyErr_Occurred()) {
+    PyErr_SetString(PyExc_ImportError, "init h5py.h5r");
+  }
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  #if PY_MAJOR_VERSION < 3
+  return;
+  #else
+  return __pyx_m;
+  #endif
+}
+
+/* Runtime support code */
+#if CYTHON_REFNANNY
+static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) {
+    PyObject *m = NULL, *p = NULL;
+    void *r = NULL;
+    m = PyImport_ImportModule((char *)modname);
+    if (!m) goto end;
+    p = PyObject_GetAttrString(m, (char *)"RefNannyAPI");
+    if (!p) goto end;
+    r = PyLong_AsVoidPtr(p);
+end:
+    Py_XDECREF(p);
+    Py_XDECREF(m);
+    return (__Pyx_RefNannyAPIStruct *)r;
+}
+#endif /* CYTHON_REFNANNY */
+
+static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name) {
+    PyObject *result;
+    result = PyObject_GetAttr(dict, name);
+    if (!result) {
+        if (dict != __pyx_b) {
+            PyErr_Clear();
+            result = PyObject_GetAttr(__pyx_b, name);
+        }
+        if (!result) {
+            PyErr_SetObject(PyExc_NameError, name);
+        }
+    }
+    return result;
+}
+
+static void __Pyx_RaiseArgtupleInvalid(
+    const char* func_name,
+    int exact,
+    Py_ssize_t num_min,
+    Py_ssize_t num_max,
+    Py_ssize_t num_found)
+{
+    Py_ssize_t num_expected;
+    const char *more_or_less;
+    if (num_found < num_min) {
+        num_expected = num_min;
+        more_or_less = "at least";
+    } else {
+        num_expected = num_max;
+        more_or_less = "at most";
+    }
+    if (exact) {
+        more_or_less = "exactly";
+    }
+    PyErr_Format(PyExc_TypeError,
+                 "%s() takes %s %" CYTHON_FORMAT_SSIZE_T "d positional argument%s (%" CYTHON_FORMAT_SSIZE_T "d given)",
+                 func_name, more_or_less, num_expected,
+                 (num_expected == 1) ? "" : "s", num_found);
+}
+
+static void __Pyx_RaiseDoubleKeywordsError(
+    const char* func_name,
+    PyObject* kw_name)
+{
+    PyErr_Format(PyExc_TypeError,
+        #if PY_MAJOR_VERSION >= 3
+        "%s() got multiple values for keyword argument '%U'", func_name, kw_name);
+        #else
+        "%s() got multiple values for keyword argument '%s'", func_name,
+        PyString_AsString(kw_name));
+        #endif
+}
+
+static int __Pyx_ParseOptionalKeywords(
+    PyObject *kwds,
+    PyObject **argnames[],
+    PyObject *kwds2,
+    PyObject *values[],
+    Py_ssize_t num_pos_args,
+    const char* function_name)
+{
+    PyObject *key = 0, *value = 0;
+    Py_ssize_t pos = 0;
+    PyObject*** name;
+    PyObject*** first_kw_arg = argnames + num_pos_args;
+    while (PyDict_Next(kwds, &pos, &key, &value)) {
+        name = first_kw_arg;
+        while (*name && (**name != key)) name++;
+        if (*name) {
+            values[name-argnames] = value;
+            continue;
+        }
+        name = first_kw_arg;
+        #if PY_MAJOR_VERSION < 3
+        if (likely(PyString_CheckExact(key)) || likely(PyString_Check(key))) {
+            while (*name) {
+                if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key))
+                        && _PyString_Eq(**name, key)) {
+                    values[name-argnames] = value;
+                    break;
+                }
+                name++;
+            }
+            if (*name) continue;
+            else {
+                PyObject*** argname = argnames;
+                while (argname != first_kw_arg) {
+                    if ((**argname == key) || (
+                            (CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**argname) == PyString_GET_SIZE(key))
+                             && _PyString_Eq(**argname, key))) {
+                        goto arg_passed_twice;
+                    }
+                    argname++;
+                }
+            }
+        } else
+        #endif
+        if (likely(PyUnicode_Check(key))) {
+            while (*name) {
+                int cmp = (**name == key) ? 0 :
+                #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
+                    (PyUnicode_GET_SIZE(**name) != PyUnicode_GET_SIZE(key)) ? 1 :
+                #endif
+                    PyUnicode_Compare(**name, key);
+                if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
+                if (cmp == 0) {
+                    values[name-argnames] = value;
+                    break;
+                }
+                name++;
+            }
+            if (*name) continue;
+            else {
+                PyObject*** argname = argnames;
+                while (argname != first_kw_arg) {
+                    int cmp = (**argname == key) ? 0 :
+                    #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
+                        (PyUnicode_GET_SIZE(**argname) != PyUnicode_GET_SIZE(key)) ? 1 :
+                    #endif
+                        PyUnicode_Compare(**argname, key);
+                    if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
+                    if (cmp == 0) goto arg_passed_twice;
+                    argname++;
+                }
+            }
+        } else
+            goto invalid_keyword_type;
+        if (kwds2) {
+            if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad;
+        } else {
+            goto invalid_keyword;
+        }
+    }
+    return 0;
+arg_passed_twice:
+    __Pyx_RaiseDoubleKeywordsError(function_name, key);
+    goto bad;
+invalid_keyword_type:
+    PyErr_Format(PyExc_TypeError,
+        "%s() keywords must be strings", function_name);
+    goto bad;
+invalid_keyword:
+    PyErr_Format(PyExc_TypeError,
+    #if PY_MAJOR_VERSION < 3
+        "%s() got an unexpected keyword argument '%s'",
+        function_name, PyString_AsString(key));
+    #else
+        "%s() got an unexpected keyword argument '%U'",
+        function_name, key);
+    #endif
+bad:
+    return -1;
+}
+
+static int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, int none_allowed,
+    const char *name, int exact)
+{
+    if (!type) {
+        PyErr_Format(PyExc_SystemError, "Missing type object");
+        return 0;
+    }
+    if (none_allowed && obj == Py_None) return 1;
+    else if (exact) {
+        if (Py_TYPE(obj) == type) return 1;
+    }
+    else {
+        if (PyObject_TypeCheck(obj, type)) return 1;
+    }
+    PyErr_Format(PyExc_TypeError,
+        "Argument '%s' has incorrect type (expected %s, got %s)",
+        name, type->tp_name, Py_TYPE(obj)->tp_name);
+    return 0;
+}
+
+static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb) {
+#if CYTHON_COMPILING_IN_CPYTHON
+    PyObject *tmp_type, *tmp_value, *tmp_tb;
+    PyThreadState *tstate = PyThreadState_GET();
+    tmp_type = tstate->curexc_type;
+    tmp_value = tstate->curexc_value;
+    tmp_tb = tstate->curexc_traceback;
+    tstate->curexc_type = type;
+    tstate->curexc_value = value;
+    tstate->curexc_traceback = tb;
+    Py_XDECREF(tmp_type);
+    Py_XDECREF(tmp_value);
+    Py_XDECREF(tmp_tb);
+#else
+    PyErr_Restore(type, value, tb);
+#endif
+}
+static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb) {
+#if CYTHON_COMPILING_IN_CPYTHON
+    PyThreadState *tstate = PyThreadState_GET();
+    *type = tstate->curexc_type;
+    *value = tstate->curexc_value;
+    *tb = tstate->curexc_traceback;
+    tstate->curexc_type = 0;
+    tstate->curexc_value = 0;
+    tstate->curexc_traceback = 0;
+#else
+    PyErr_Fetch(type, value, tb);
+#endif
+}
+
+#if PY_MAJOR_VERSION < 3
+static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb,
+                        CYTHON_UNUSED PyObject *cause) {
+    Py_XINCREF(type);
+    if (!value || value == Py_None)
+        value = NULL;
+    else
+        Py_INCREF(value);
+    if (!tb || tb == Py_None)
+        tb = NULL;
+    else {
+        Py_INCREF(tb);
+        if (!PyTraceBack_Check(tb)) {
+            PyErr_SetString(PyExc_TypeError,
+                "raise: arg 3 must be a traceback or None");
+            goto raise_error;
+        }
+    }
+    #if PY_VERSION_HEX < 0x02050000
+    if (PyClass_Check(type)) {
+    #else
+    if (PyType_Check(type)) {
+    #endif
+#if CYTHON_COMPILING_IN_PYPY
+        if (!value) {
+            Py_INCREF(Py_None);
+            value = Py_None;
+        }
+#endif
+        PyErr_NormalizeException(&type, &value, &tb);
+    } else {
+        if (value) {
+            PyErr_SetString(PyExc_TypeError,
+                "instance exception may not have a separate value");
+            goto raise_error;
+        }
+        value = type;
+        #if PY_VERSION_HEX < 0x02050000
+            if (PyInstance_Check(type)) {
+                type = (PyObject*) ((PyInstanceObject*)type)->in_class;
+                Py_INCREF(type);
+            }
+            else {
+                type = 0;
+                PyErr_SetString(PyExc_TypeError,
+                    "raise: exception must be an old-style class or instance");
+                goto raise_error;
+            }
+        #else
+            type = (PyObject*) Py_TYPE(type);
+            Py_INCREF(type);
+            if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) {
+                PyErr_SetString(PyExc_TypeError,
+                    "raise: exception class must be a subclass of BaseException");
+                goto raise_error;
+            }
+        #endif
+    }
+    __Pyx_ErrRestore(type, value, tb);
+    return;
+raise_error:
+    Py_XDECREF(value);
+    Py_XDECREF(type);
+    Py_XDECREF(tb);
+    return;
+}
+#else /* Python 3+ */
+static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) {
+    PyObject* owned_instance = NULL;
+    if (tb == Py_None) {
+        tb = 0;
+    } else if (tb && !PyTraceBack_Check(tb)) {
+        PyErr_SetString(PyExc_TypeError,
+            "raise: arg 3 must be a traceback or None");
+        goto bad;
+    }
+    if (value == Py_None)
+        value = 0;
+    if (PyExceptionInstance_Check(type)) {
+        if (value) {
+            PyErr_SetString(PyExc_TypeError,
+                "instance exception may not have a separate value");
+            goto bad;
+        }
+        value = type;
+        type = (PyObject*) Py_TYPE(value);
+    } else if (PyExceptionClass_Check(type)) {
+        PyObject *args;
+        if (!value)
+            args = PyTuple_New(0);
+        else if (PyTuple_Check(value)) {
+            Py_INCREF(value);
+            args = value;
+        }
+        else
+            args = PyTuple_Pack(1, value);
+        if (!args)
+            goto bad;
+        owned_instance = PyEval_CallObject(type, args);
+        Py_DECREF(args);
+        if (!owned_instance)
+            goto bad;
+        value = owned_instance;
+        if (!PyExceptionInstance_Check(value)) {
+            PyErr_Format(PyExc_TypeError,
+                         "calling %R should have returned an instance of "
+                         "BaseException, not %R",
+                         type, Py_TYPE(value));
+            goto bad;
+        }
+    } else {
+        PyErr_SetString(PyExc_TypeError,
+            "raise: exception class must be a subclass of BaseException");
+        goto bad;
+    }
+    if (cause && cause != Py_None) {
+        PyObject *fixed_cause;
+        if (PyExceptionClass_Check(cause)) {
+            fixed_cause = PyObject_CallObject(cause, NULL);
+            if (fixed_cause == NULL)
+                goto bad;
+        }
+        else if (PyExceptionInstance_Check(cause)) {
+            fixed_cause = cause;
+            Py_INCREF(fixed_cause);
+        }
+        else {
+            PyErr_SetString(PyExc_TypeError,
+                            "exception causes must derive from "
+                            "BaseException");
+            goto bad;
+        }
+        PyException_SetCause(value, fixed_cause);
+    }
+    PyErr_SetObject(type, value);
+    if (tb) {
+        PyThreadState *tstate = PyThreadState_GET();
+        PyObject* tmp_tb = tstate->curexc_traceback;
+        if (tb != tmp_tb) {
+            Py_INCREF(tb);
+            tstate->curexc_traceback = tb;
+            Py_XDECREF(tmp_tb);
+        }
+    }
+bad:
+    Py_XDECREF(owned_instance);
+    return;
+}
+#endif
+
+static CYTHON_INLINE int __Pyx_CheckKeywordStrings(
+    PyObject *kwdict,
+    const char* function_name,
+    int kw_allowed)
+{
+    PyObject* key = 0;
+    Py_ssize_t pos = 0;
+#if CPYTHON_COMPILING_IN_PYPY
+    if (!kw_allowed && PyDict_Next(kwdict, &pos, &key, 0))
+        goto invalid_keyword;
+    return 1;
+#else
+    while (PyDict_Next(kwdict, &pos, &key, 0)) {
+        #if PY_MAJOR_VERSION < 3
+        if (unlikely(!PyString_CheckExact(key)) && unlikely(!PyString_Check(key)))
+        #endif
+            if (unlikely(!PyUnicode_Check(key)))
+                goto invalid_keyword_type;
+    }
+    if ((!kw_allowed) && unlikely(key))
+        goto invalid_keyword;
+    return 1;
+invalid_keyword_type:
+    PyErr_Format(PyExc_TypeError,
+        "%s() keywords must be strings", function_name);
+    return 0;
+#endif
+invalid_keyword:
+    PyErr_Format(PyExc_TypeError,
+    #if PY_MAJOR_VERSION < 3
+        "%s() got an unexpected keyword argument '%s'",
+        function_name, PyString_AsString(key));
+    #else
+        "%s() got an unexpected keyword argument '%U'",
+        function_name, key);
+    #endif
+    return 0;
+}
+
+static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) {
+    PyObject *empty_list = 0;
+    PyObject *module = 0;
+    PyObject *global_dict = 0;
+    PyObject *empty_dict = 0;
+    PyObject *list;
+    #if PY_VERSION_HEX < 0x03030000
+    PyObject *py_import = 0;
+    py_import = __Pyx_GetAttrString(__pyx_b, "__import__");
+    if (!py_import)
+        goto bad;
+    #endif
+    if (from_list)
+        list = from_list;
+    else {
+        empty_list = PyList_New(0);
+        if (!empty_list)
+            goto bad;
+        list = empty_list;
+    }
+    global_dict = PyModule_GetDict(__pyx_m);
+    if (!global_dict)
+        goto bad;
+    empty_dict = PyDict_New();
+    if (!empty_dict)
+        goto bad;
+    #if PY_VERSION_HEX >= 0x02050000
+    {
+        #if PY_MAJOR_VERSION >= 3
+        if (level == -1) {
+            if (strchr(__Pyx_MODULE_NAME, '.')) {
+                #if PY_VERSION_HEX < 0x03030000
+                PyObject *py_level = PyInt_FromLong(1);
+                if (!py_level)
+                    goto bad;
+                module = PyObject_CallFunctionObjArgs(py_import,
+                    name, global_dict, empty_dict, list, py_level, NULL);
+                Py_DECREF(py_level);
+                #else
+                module = PyImport_ImportModuleLevelObject(
+                    name, global_dict, empty_dict, list, 1);
+                #endif
+                if (!module) {
+                    if (!PyErr_ExceptionMatches(PyExc_ImportError))
+                        goto bad;
+                    PyErr_Clear();
+                }
+            }
+            level = 0; /* try absolute import on failure */
+        }
+        #endif
+        if (!module) {
+            #if PY_VERSION_HEX < 0x03030000
+            PyObject *py_level = PyInt_FromLong(level);
+            if (!py_level)
+                goto bad;
+            module = PyObject_CallFunctionObjArgs(py_import,
+                name, global_dict, empty_dict, list, py_level, NULL);
+            Py_DECREF(py_level);
+            #else
+            module = PyImport_ImportModuleLevelObject(
+                name, global_dict, empty_dict, list, level);
+            #endif
+        }
+    }
+    #else
+    if (level>0) {
+        PyErr_SetString(PyExc_RuntimeError, "Relative import is not supported for Python <=2.4.");
+        goto bad;
+    }
+    module = PyObject_CallFunctionObjArgs(py_import,
+        name, global_dict, empty_dict, list, NULL);
+    #endif
+bad:
+    #if PY_VERSION_HEX < 0x03030000
+    Py_XDECREF(py_import);
+    #endif
+    Py_XDECREF(empty_list);
+    Py_XDECREF(empty_dict);
+    return module;
+}
+
+static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_hid_t(hid_t val) {
+    const hid_t neg_one = (hid_t)-1, const_zero = (hid_t)0;
+    const int is_unsigned = const_zero < neg_one;
+    if ((sizeof(hid_t) == sizeof(char))  ||
+        (sizeof(hid_t) == sizeof(short))) {
+        return PyInt_FromLong((long)val);
+    } else if ((sizeof(hid_t) == sizeof(int)) ||
+               (sizeof(hid_t) == sizeof(long))) {
+        if (is_unsigned)
+            return PyLong_FromUnsignedLong((unsigned long)val);
+        else
+            return PyInt_FromLong((long)val);
+    } else if (sizeof(hid_t) == sizeof(PY_LONG_LONG)) {
+        if (is_unsigned)
+            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG)val);
+        else
+            return PyLong_FromLongLong((PY_LONG_LONG)val);
+    } else {
+        int one = 1; int little = (int)*(unsigned char *)&one;
+        unsigned char *bytes = (unsigned char *)&val;
+        return _PyLong_FromByteArray(bytes, sizeof(hid_t),
+                                     little, !is_unsigned);
+    }
+}
+
+static CYTHON_INLINE unsigned char __Pyx_PyInt_AsUnsignedChar(PyObject* x) {
+    const unsigned char neg_one = (unsigned char)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(unsigned char) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(unsigned char)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to unsigned char" :
+                    "value too large to convert to unsigned char");
+            }
+            return (unsigned char)-1;
+        }
+        return (unsigned char)val;
+    }
+    return (unsigned char)__Pyx_PyInt_AsUnsignedLong(x);
+}
+
+static CYTHON_INLINE unsigned short __Pyx_PyInt_AsUnsignedShort(PyObject* x) {
+    const unsigned short neg_one = (unsigned short)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(unsigned short) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(unsigned short)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to unsigned short" :
+                    "value too large to convert to unsigned short");
+            }
+            return (unsigned short)-1;
+        }
+        return (unsigned short)val;
+    }
+    return (unsigned short)__Pyx_PyInt_AsUnsignedLong(x);
+}
+
+static CYTHON_INLINE unsigned int __Pyx_PyInt_AsUnsignedInt(PyObject* x) {
+    const unsigned int neg_one = (unsigned int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(unsigned int) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(unsigned int)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to unsigned int" :
+                    "value too large to convert to unsigned int");
+            }
+            return (unsigned int)-1;
+        }
+        return (unsigned int)val;
+    }
+    return (unsigned int)__Pyx_PyInt_AsUnsignedLong(x);
+}
+
+static CYTHON_INLINE char __Pyx_PyInt_AsChar(PyObject* x) {
+    const char neg_one = (char)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(char) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(char)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to char" :
+                    "value too large to convert to char");
+            }
+            return (char)-1;
+        }
+        return (char)val;
+    }
+    return (char)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE short __Pyx_PyInt_AsShort(PyObject* x) {
+    const short neg_one = (short)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(short) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(short)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to short" :
+                    "value too large to convert to short");
+            }
+            return (short)-1;
+        }
+        return (short)val;
+    }
+    return (short)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE int __Pyx_PyInt_AsInt(PyObject* x) {
+    const int neg_one = (int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(int) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(int)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to int" :
+                    "value too large to convert to int");
+            }
+            return (int)-1;
+        }
+        return (int)val;
+    }
+    return (int)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE signed char __Pyx_PyInt_AsSignedChar(PyObject* x) {
+    const signed char neg_one = (signed char)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(signed char) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(signed char)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to signed char" :
+                    "value too large to convert to signed char");
+            }
+            return (signed char)-1;
+        }
+        return (signed char)val;
+    }
+    return (signed char)__Pyx_PyInt_AsSignedLong(x);
+}
+
+static CYTHON_INLINE signed short __Pyx_PyInt_AsSignedShort(PyObject* x) {
+    const signed short neg_one = (signed short)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(signed short) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(signed short)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to signed short" :
+                    "value too large to convert to signed short");
+            }
+            return (signed short)-1;
+        }
+        return (signed short)val;
+    }
+    return (signed short)__Pyx_PyInt_AsSignedLong(x);
+}
+
+static CYTHON_INLINE signed int __Pyx_PyInt_AsSignedInt(PyObject* x) {
+    const signed int neg_one = (signed int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(signed int) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(signed int)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to signed int" :
+                    "value too large to convert to signed int");
+            }
+            return (signed int)-1;
+        }
+        return (signed int)val;
+    }
+    return (signed int)__Pyx_PyInt_AsSignedLong(x);
+}
+
+static CYTHON_INLINE int __Pyx_PyInt_AsLongDouble(PyObject* x) {
+    const int neg_one = (int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(int) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(int)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to int" :
+                    "value too large to convert to int");
+            }
+            return (int)-1;
+        }
+        return (int)val;
+    }
+    return (int)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE unsigned long __Pyx_PyInt_AsUnsignedLong(PyObject* x) {
+    const unsigned long neg_one = (unsigned long)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to unsigned long");
+            return (unsigned long)-1;
+        }
+        return (unsigned long)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to unsigned long");
+                return (unsigned long)-1;
+            }
+            return (unsigned long)PyLong_AsUnsignedLong(x);
+        } else {
+            return (unsigned long)PyLong_AsLong(x);
+        }
+    } else {
+        unsigned long val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (unsigned long)-1;
+        val = __Pyx_PyInt_AsUnsignedLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE unsigned PY_LONG_LONG __Pyx_PyInt_AsUnsignedLongLong(PyObject* x) {
+    const unsigned PY_LONG_LONG neg_one = (unsigned PY_LONG_LONG)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to unsigned PY_LONG_LONG");
+            return (unsigned PY_LONG_LONG)-1;
+        }
+        return (unsigned PY_LONG_LONG)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to unsigned PY_LONG_LONG");
+                return (unsigned PY_LONG_LONG)-1;
+            }
+            return (unsigned PY_LONG_LONG)PyLong_AsUnsignedLongLong(x);
+        } else {
+            return (unsigned PY_LONG_LONG)PyLong_AsLongLong(x);
+        }
+    } else {
+        unsigned PY_LONG_LONG val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (unsigned PY_LONG_LONG)-1;
+        val = __Pyx_PyInt_AsUnsignedLongLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE long __Pyx_PyInt_AsLong(PyObject* x) {
+    const long neg_one = (long)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to long");
+            return (long)-1;
+        }
+        return (long)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to long");
+                return (long)-1;
+            }
+            return (long)PyLong_AsUnsignedLong(x);
+        } else {
+            return (long)PyLong_AsLong(x);
+        }
+    } else {
+        long val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (long)-1;
+        val = __Pyx_PyInt_AsLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE PY_LONG_LONG __Pyx_PyInt_AsLongLong(PyObject* x) {
+    const PY_LONG_LONG neg_one = (PY_LONG_LONG)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to PY_LONG_LONG");
+            return (PY_LONG_LONG)-1;
+        }
+        return (PY_LONG_LONG)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to PY_LONG_LONG");
+                return (PY_LONG_LONG)-1;
+            }
+            return (PY_LONG_LONG)PyLong_AsUnsignedLongLong(x);
+        } else {
+            return (PY_LONG_LONG)PyLong_AsLongLong(x);
+        }
+    } else {
+        PY_LONG_LONG val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (PY_LONG_LONG)-1;
+        val = __Pyx_PyInt_AsLongLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE signed long __Pyx_PyInt_AsSignedLong(PyObject* x) {
+    const signed long neg_one = (signed long)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to signed long");
+            return (signed long)-1;
+        }
+        return (signed long)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to signed long");
+                return (signed long)-1;
+            }
+            return (signed long)PyLong_AsUnsignedLong(x);
+        } else {
+            return (signed long)PyLong_AsLong(x);
+        }
+    } else {
+        signed long val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (signed long)-1;
+        val = __Pyx_PyInt_AsSignedLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE signed PY_LONG_LONG __Pyx_PyInt_AsSignedLongLong(PyObject* x) {
+    const signed PY_LONG_LONG neg_one = (signed PY_LONG_LONG)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to signed PY_LONG_LONG");
+            return (signed PY_LONG_LONG)-1;
+        }
+        return (signed PY_LONG_LONG)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to signed PY_LONG_LONG");
+                return (signed PY_LONG_LONG)-1;
+            }
+            return (signed PY_LONG_LONG)PyLong_AsUnsignedLongLong(x);
+        } else {
+            return (signed PY_LONG_LONG)PyLong_AsLongLong(x);
+        }
+    } else {
+        signed PY_LONG_LONG val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (signed PY_LONG_LONG)-1;
+        val = __Pyx_PyInt_AsSignedLongLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static int __Pyx_check_binary_version(void) {
+    char ctversion[4], rtversion[4];
+    PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION);
+    PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion());
+    if (ctversion[0] != rtversion[0] || ctversion[2] != rtversion[2]) {
+        char message[200];
+        PyOS_snprintf(message, sizeof(message),
+                      "compiletime version %s of module '%.100s' "
+                      "does not match runtime version %s",
+                      ctversion, __Pyx_MODULE_NAME, rtversion);
+        #if PY_VERSION_HEX < 0x02050000
+        return PyErr_Warn(NULL, message);
+        #else
+        return PyErr_WarnEx(NULL, message, 1);
+        #endif
+    }
+    return 0;
+}
+
+#ifndef __PYX_HAVE_RT_ImportModule
+#define __PYX_HAVE_RT_ImportModule
+static PyObject *__Pyx_ImportModule(const char *name) {
+    PyObject *py_name = 0;
+    PyObject *py_module = 0;
+    py_name = __Pyx_PyIdentifier_FromString(name);
+    if (!py_name)
+        goto bad;
+    py_module = PyImport_Import(py_name);
+    Py_DECREF(py_name);
+    return py_module;
+bad:
+    Py_XDECREF(py_name);
+    return 0;
+}
+#endif
+
+#ifndef __PYX_HAVE_RT_ImportType
+#define __PYX_HAVE_RT_ImportType
+static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name,
+    size_t size, int strict)
+{
+    PyObject *py_module = 0;
+    PyObject *result = 0;
+    PyObject *py_name = 0;
+    char warning[200];
+    Py_ssize_t basicsize;
+#ifdef Py_LIMITED_API
+    PyObject *py_basicsize;
+#endif
+    py_module = __Pyx_ImportModule(module_name);
+    if (!py_module)
+        goto bad;
+    py_name = __Pyx_PyIdentifier_FromString(class_name);
+    if (!py_name)
+        goto bad;
+    result = PyObject_GetAttr(py_module, py_name);
+    Py_DECREF(py_name);
+    py_name = 0;
+    Py_DECREF(py_module);
+    py_module = 0;
+    if (!result)
+        goto bad;
+    if (!PyType_Check(result)) {
+        PyErr_Format(PyExc_TypeError,
+            "%s.%s is not a type object",
+            module_name, class_name);
+        goto bad;
+    }
+#ifndef Py_LIMITED_API
+    basicsize = ((PyTypeObject *)result)->tp_basicsize;
+#else
+    py_basicsize = PyObject_GetAttrString(result, "__basicsize__");
+    if (!py_basicsize)
+        goto bad;
+    basicsize = PyLong_AsSsize_t(py_basicsize);
+    Py_DECREF(py_basicsize);
+    py_basicsize = 0;
+    if (basicsize == (Py_ssize_t)-1 && PyErr_Occurred())
+        goto bad;
+#endif
+    if (!strict && (size_t)basicsize > size) {
+        PyOS_snprintf(warning, sizeof(warning),
+            "%s.%s size changed, may indicate binary incompatibility",
+            module_name, class_name);
+        #if PY_VERSION_HEX < 0x02050000
+        if (PyErr_Warn(NULL, warning) < 0) goto bad;
+        #else
+        if (PyErr_WarnEx(NULL, warning, 0) < 0) goto bad;
+        #endif
+    }
+    else if ((size_t)basicsize != size) {
+        PyErr_Format(PyExc_ValueError,
+            "%s.%s has the wrong size, try recompiling",
+            module_name, class_name);
+        goto bad;
+    }
+    return (PyTypeObject *)result;
+bad:
+    Py_XDECREF(py_module);
+    Py_XDECREF(result);
+    return NULL;
+}
+#endif
+
+#ifndef __PYX_HAVE_RT_ImportFunction
+#define __PYX_HAVE_RT_ImportFunction
+static int __Pyx_ImportFunction(PyObject *module, const char *funcname, void (**f)(void), const char *sig) {
+    PyObject *d = 0;
+    PyObject *cobj = 0;
+    union {
+        void (*fp)(void);
+        void *p;
+    } tmp;
+    d = PyObject_GetAttrString(module, (char *)"__pyx_capi__");
+    if (!d)
+        goto bad;
+    cobj = PyDict_GetItemString(d, funcname);
+    if (!cobj) {
+        PyErr_Format(PyExc_ImportError,
+            "%s does not export expected C function %s",
+                PyModule_GetName(module), funcname);
+        goto bad;
+    }
+#if PY_VERSION_HEX >= 0x02070000 && !(PY_MAJOR_VERSION==3 && PY_MINOR_VERSION==0)
+    if (!PyCapsule_IsValid(cobj, sig)) {
+        PyErr_Format(PyExc_TypeError,
+            "C function %s.%s has wrong signature (expected %s, got %s)",
+             PyModule_GetName(module), funcname, sig, PyCapsule_GetName(cobj));
+        goto bad;
+    }
+    tmp.p = PyCapsule_GetPointer(cobj, sig);
+#else
+    {const char *desc, *s1, *s2;
+    desc = (const char *)PyCObject_GetDesc(cobj);
+    if (!desc)
+        goto bad;
+    s1 = desc; s2 = sig;
+    while (*s1 != '\0' && *s1 == *s2) { s1++; s2++; }
+    if (*s1 != *s2) {
+        PyErr_Format(PyExc_TypeError,
+            "C function %s.%s has wrong signature (expected %s, got %s)",
+             PyModule_GetName(module), funcname, sig, desc);
+        goto bad;
+    }
+    tmp.p = PyCObject_AsVoidPtr(cobj);}
+#endif
+    *f = tmp.fp;
+    if (!(*f))
+        goto bad;
+    Py_DECREF(d);
+    return 0;
+bad:
+    Py_XDECREF(d);
+    return -1;
+}
+#endif
+
+static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) {
+    int start = 0, mid = 0, end = count - 1;
+    if (end >= 0 && code_line > entries[end].code_line) {
+        return count;
+    }
+    while (start < end) {
+        mid = (start + end) / 2;
+        if (code_line < entries[mid].code_line) {
+            end = mid;
+        } else if (code_line > entries[mid].code_line) {
+             start = mid + 1;
+        } else {
+            return mid;
+        }
+    }
+    if (code_line <= entries[mid].code_line) {
+        return mid;
+    } else {
+        return mid + 1;
+    }
+}
+static PyCodeObject *__pyx_find_code_object(int code_line) {
+    PyCodeObject* code_object;
+    int pos;
+    if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) {
+        return NULL;
+    }
+    pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
+    if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) {
+        return NULL;
+    }
+    code_object = __pyx_code_cache.entries[pos].code_object;
+    Py_INCREF(code_object);
+    return code_object;
+}
+static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) {
+    int pos, i;
+    __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries;
+    if (unlikely(!code_line)) {
+        return;
+    }
+    if (unlikely(!entries)) {
+        entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry));
+        if (likely(entries)) {
+            __pyx_code_cache.entries = entries;
+            __pyx_code_cache.max_count = 64;
+            __pyx_code_cache.count = 1;
+            entries[0].code_line = code_line;
+            entries[0].code_object = code_object;
+            Py_INCREF(code_object);
+        }
+        return;
+    }
+    pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
+    if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) {
+        PyCodeObject* tmp = entries[pos].code_object;
+        entries[pos].code_object = code_object;
+        Py_DECREF(tmp);
+        return;
+    }
+    if (__pyx_code_cache.count == __pyx_code_cache.max_count) {
+        int new_max = __pyx_code_cache.max_count + 64;
+        entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc(
+            __pyx_code_cache.entries, new_max*sizeof(__Pyx_CodeObjectCacheEntry));
+        if (unlikely(!entries)) {
+            return;
+        }
+        __pyx_code_cache.entries = entries;
+        __pyx_code_cache.max_count = new_max;
+    }
+    for (i=__pyx_code_cache.count; i>pos; i--) {
+        entries[i] = entries[i-1];
+    }
+    entries[pos].code_line = code_line;
+    entries[pos].code_object = code_object;
+    __pyx_code_cache.count++;
+    Py_INCREF(code_object);
+}
+
+#include "compile.h"
+#include "frameobject.h"
+#include "traceback.h"
+static PyCodeObject* __Pyx_CreateCodeObjectForTraceback(
+            const char *funcname, int c_line,
+            int py_line, const char *filename) {
+    PyCodeObject *py_code = 0;
+    PyObject *py_srcfile = 0;
+    PyObject *py_funcname = 0;
+    #if PY_MAJOR_VERSION < 3
+    py_srcfile = PyString_FromString(filename);
+    #else
+    py_srcfile = PyUnicode_FromString(filename);
+    #endif
+    if (!py_srcfile) goto bad;
+    if (c_line) {
+        #if PY_MAJOR_VERSION < 3
+        py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
+        #else
+        py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
+        #endif
+    }
+    else {
+        #if PY_MAJOR_VERSION < 3
+        py_funcname = PyString_FromString(funcname);
+        #else
+        py_funcname = PyUnicode_FromString(funcname);
+        #endif
+    }
+    if (!py_funcname) goto bad;
+    py_code = __Pyx_PyCode_New(
+        0,            /*int argcount,*/
+        0,            /*int kwonlyargcount,*/
+        0,            /*int nlocals,*/
+        0,            /*int stacksize,*/
+        0,            /*int flags,*/
+        __pyx_empty_bytes, /*PyObject *code,*/
+        __pyx_empty_tuple, /*PyObject *consts,*/
+        __pyx_empty_tuple, /*PyObject *names,*/
+        __pyx_empty_tuple, /*PyObject *varnames,*/
+        __pyx_empty_tuple, /*PyObject *freevars,*/
+        __pyx_empty_tuple, /*PyObject *cellvars,*/
+        py_srcfile,   /*PyObject *filename,*/
+        py_funcname,  /*PyObject *name,*/
+        py_line,      /*int firstlineno,*/
+        __pyx_empty_bytes  /*PyObject *lnotab*/
+    );
+    Py_DECREF(py_srcfile);
+    Py_DECREF(py_funcname);
+    return py_code;
+bad:
+    Py_XDECREF(py_srcfile);
+    Py_XDECREF(py_funcname);
+    return NULL;
+}
+static void __Pyx_AddTraceback(const char *funcname, int c_line,
+                               int py_line, const char *filename) {
+    PyCodeObject *py_code = 0;
+    PyObject *py_globals = 0;
+    PyFrameObject *py_frame = 0;
+    py_code = __pyx_find_code_object(c_line ? c_line : py_line);
+    if (!py_code) {
+        py_code = __Pyx_CreateCodeObjectForTraceback(
+            funcname, c_line, py_line, filename);
+        if (!py_code) goto bad;
+        __pyx_insert_code_object(c_line ? c_line : py_line, py_code);
+    }
+    py_globals = PyModule_GetDict(__pyx_m);
+    if (!py_globals) goto bad;
+    py_frame = PyFrame_New(
+        PyThreadState_GET(), /*PyThreadState *tstate,*/
+        py_code,             /*PyCodeObject *code,*/
+        py_globals,          /*PyObject *globals,*/
+        0                    /*PyObject *locals*/
+    );
+    if (!py_frame) goto bad;
+    py_frame->f_lineno = py_line;
+    PyTraceBack_Here(py_frame);
+bad:
+    Py_XDECREF(py_code);
+    Py_XDECREF(py_frame);
+}
+
+static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
+    while (t->p) {
+        #if PY_MAJOR_VERSION < 3
+        if (t->is_unicode) {
+            *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL);
+        } else if (t->intern) {
+            *t->p = PyString_InternFromString(t->s);
+        } else {
+            *t->p = PyString_FromStringAndSize(t->s, t->n - 1);
+        }
+        #else  /* Python 3+ has unicode identifiers */
+        if (t->is_unicode | t->is_str) {
+            if (t->intern) {
+                *t->p = PyUnicode_InternFromString(t->s);
+            } else if (t->encoding) {
+                *t->p = PyUnicode_Decode(t->s, t->n - 1, t->encoding, NULL);
+            } else {
+                *t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1);
+            }
+        } else {
+            *t->p = PyBytes_FromStringAndSize(t->s, t->n - 1);
+        }
+        #endif
+        if (!*t->p)
+            return -1;
+        ++t;
+    }
+    return 0;
+}
+
+static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) {
+   int is_true = x == Py_True;
+   if (is_true | (x == Py_False) | (x == Py_None)) return is_true;
+   else return PyObject_IsTrue(x);
+}
+static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x) {
+  PyNumberMethods *m;
+  const char *name = NULL;
+  PyObject *res = NULL;
+#if PY_VERSION_HEX < 0x03000000
+  if (PyInt_Check(x) || PyLong_Check(x))
+#else
+  if (PyLong_Check(x))
+#endif
+    return Py_INCREF(x), x;
+  m = Py_TYPE(x)->tp_as_number;
+#if PY_VERSION_HEX < 0x03000000
+  if (m && m->nb_int) {
+    name = "int";
+    res = PyNumber_Int(x);
+  }
+  else if (m && m->nb_long) {
+    name = "long";
+    res = PyNumber_Long(x);
+  }
+#else
+  if (m && m->nb_int) {
+    name = "int";
+    res = PyNumber_Long(x);
+  }
+#endif
+  if (res) {
+#if PY_VERSION_HEX < 0x03000000
+    if (!PyInt_Check(res) && !PyLong_Check(res)) {
+#else
+    if (!PyLong_Check(res)) {
+#endif
+      PyErr_Format(PyExc_TypeError,
+                   "__%s__ returned non-%s (type %.200s)",
+                   name, name, Py_TYPE(res)->tp_name);
+      Py_DECREF(res);
+      return NULL;
+    }
+  }
+  else if (!PyErr_Occurred()) {
+    PyErr_SetString(PyExc_TypeError,
+                    "an integer is required");
+  }
+  return res;
+}
+static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
+  Py_ssize_t ival;
+  PyObject* x = PyNumber_Index(b);
+  if (!x) return -1;
+  ival = PyInt_AsSsize_t(x);
+  Py_DECREF(x);
+  return ival;
+}
+static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) {
+#if PY_VERSION_HEX < 0x02050000
+   if (ival <= LONG_MAX)
+       return PyInt_FromLong((long)ival);
+   else {
+       unsigned char *bytes = (unsigned char *) &ival;
+       int one = 1; int little = (int)*(unsigned char*)&one;
+       return _PyLong_FromByteArray(bytes, sizeof(size_t), little, 0);
+   }
+#else
+   return PyInt_FromSize_t(ival);
+#endif
+}
+static CYTHON_INLINE size_t __Pyx_PyInt_AsSize_t(PyObject* x) {
+   unsigned PY_LONG_LONG val = __Pyx_PyInt_AsUnsignedLongLong(x);
+   if (unlikely(val == (unsigned PY_LONG_LONG)-1 && PyErr_Occurred())) {
+       return (size_t)-1;
+   } else if (unlikely(val != (unsigned PY_LONG_LONG)(size_t)val)) {
+       PyErr_SetString(PyExc_OverflowError,
+                       "value too large to convert to size_t");
+       return (size_t)-1;
+   }
+   return (size_t)val;
+}
+
+
+#endif /* Py_PYTHON_H */
diff --git a/h5py/h5r.pxd b/h5py/h5r.pxd
new file mode 100644
index 0000000..a5deed4
--- /dev/null
+++ b/h5py/h5r.pxd
@@ -0,0 +1,29 @@
+# This file is part of h5py, a Python interface to the HDF5 library.
+#
+# http://www.h5py.org
+#
+# Copyright 2008-2013 Andrew Collette and contributors
+#
+# License:  Standard 3-clause BSD; see "license.txt" for full license terms
+#           and contributor agreement.
+
+from defs cimport *
+
+cdef extern from "hdf5.h":
+
+  ctypedef haddr_t hobj_ref_t
+  ctypedef unsigned char hdset_reg_ref_t[12]
+
+cdef union ref_u:
+    hobj_ref_t         obj_ref
+    hdset_reg_ref_t    reg_ref
+
+cdef class Reference:
+
+    cdef ref_u ref
+    cdef readonly int typecode
+    cdef readonly size_t typesize
+
+cdef class RegionReference(Reference):
+    pass
+
diff --git a/h5py/h5r.pyx b/h5py/h5r.pyx
new file mode 100644
index 0000000..5a49533
--- /dev/null
+++ b/h5py/h5r.pyx
@@ -0,0 +1,188 @@
+# This file is part of h5py, a Python interface to the HDF5 library.
+#
+# http://www.h5py.org
+#
+# Copyright 2008-2013 Andrew Collette and contributors
+#
+# License:  Standard 3-clause BSD; see "license.txt" for full license terms
+#           and contributor agreement.
+
+"""
+    H5R API for object and region references.
+"""
+
+# Pyrex compile-time imports
+from _objects cimport ObjectID
+
+# === Public constants and data structures ====================================
+
+OBJECT = H5R_OBJECT
+DATASET_REGION = H5R_DATASET_REGION
+
+# === Reference API ===========================================================
+
+
+def create(ObjectID loc not None, char* name, int ref_type, ObjectID space=None):
+    """(ObjectID loc, STRING name, INT ref_type, SpaceID space=None)
+    => ReferenceObject ref
+
+    Create a new reference. The value of ref_type detemines the kind
+    of reference created:
+
+    OBJECT
+        Reference to an object in an HDF5 file.  Parameters "loc"
+        and "name" identify the object; "space" is unused.
+
+    DATASET_REGION
+        Reference to a dataset region.  Parameters "loc" and
+        "name" identify the dataset; the selection on "space"
+        identifies the region.
+    """
+    cdef hid_t space_id
+    cdef Reference ref
+    if ref_type == H5R_OBJECT:
+        ref = Reference()
+    elif ref_type == H5R_DATASET_REGION:
+        if space is None:   # work around segfault in HDF5
+            raise ValueError("Dataspace required for region reference")
+        ref = RegionReference()
+    else:
+        raise ValueError("Unknown reference typecode")
+
+    if space is None:
+        space_id = -1
+    else:
+        space_id = space.id
+
+    H5Rcreate(&ref.ref, loc.id, name, <H5R_type_t>ref_type, space_id)
+
+    return ref
+
+
+def dereference(Reference ref not None, ObjectID id not None):
+    """(Reference ref, ObjectID id) => ObjectID or None
+
+    Open the object pointed to by the reference and return its
+    identifier.  The file identifier (or the identifier for any object
+    in the file) must also be provided.  Returns None if the reference
+    is zero-filled.
+
+    The reference may be either Reference or RegionReference.
+    """
+    import h5i
+    if not ref:
+        return None
+    return h5i.wrap_identifier(H5Rdereference(id.id, <H5R_type_t>ref.typecode, &ref.ref))
+
+
+def get_region(RegionReference ref not None, ObjectID id not None):
+    """(Reference ref, ObjectID id) => SpaceID or None
+
+    Retrieve the dataspace selection pointed to by the reference.
+    Returns a copy of the dataset's dataspace, with the appropriate
+    elements selected.  The file identifier or the identifier of any
+    object in the file (including the dataset itself) must also be
+    provided.
+
+    The reference object must be a RegionReference.  If it is zero-filled,
+    returns None.
+    """
+    import h5s
+    if ref.typecode != H5R_DATASET_REGION or not ref:
+        return None
+    return h5s.SpaceID.open(H5Rget_region(id.id, <H5R_type_t>ref.typecode, &ref.ref))
+
+
+def get_obj_type(Reference ref not None, ObjectID id not None):
+    """(Reference ref, ObjectID id) => INT obj_code or None
+
+    Determine what type of object the reference points to.  The
+    reference may be a Reference or RegionReference.  The file
+    identifier or the identifier of any object in the file must also
+    be provided.
+
+    The return value is one of:
+
+    - h5g.LINK
+    - h5g.GROUP
+    - h5g.DATASET
+    - h5g.TYPE
+
+    If the reference is zero-filled, returns None.
+    """
+    if not ref:
+        return None
+    return <int>H5Rget_obj_type(id.id, <H5R_type_t>ref.typecode, &ref.ref)
+
+
+def get_name(Reference ref not None, ObjectID loc not None):
+    """(Reference ref, ObjectID loc) => STRING name
+
+    Determine the name of the object pointed to by this reference.
+    Requires the HDF5 1.8 API.
+    """
+    cdef ssize_t namesize = 0
+    cdef char* namebuf = NULL
+
+    namesize = H5Rget_name(loc.id, <H5R_type_t>ref.typecode, &ref.ref, NULL, 0)
+    if namesize > 0:
+        namebuf = <char*>malloc(namesize+1)
+        try:
+            namesize = H5Rget_name(loc.id, <H5R_type_t>ref.typecode, &ref.ref, namebuf, namesize+1)
+            return namebuf
+        finally:
+            free(namebuf)
+
+cdef class Reference:
+
+    """
+        Opaque representation of an HDF5 reference.
+
+        Objects of this class are created exclusively by the library and
+        cannot be modified.  The read-only attribute "typecode" determines
+        whether the reference is to an object in an HDF5 file (OBJECT)
+        or a dataset region (DATASET_REGION).
+
+        The object's truth value indicates whether it contains a nonzero
+        reference.  This does not guarantee that is valid, but is useful
+        for rejecting "background" elements in a dataset.
+    """
+
+    def __cinit__(self, *args, **kwds):
+        self.typecode = H5R_OBJECT
+        self.typesize = sizeof(hobj_ref_t)
+
+    def __nonzero__(self):
+        cdef int i
+        for i from 0<=i<self.typesize:
+            if (<unsigned char*>&self.ref)[i] != 0: return True
+        return False
+
+    def __repr__(self):
+        return "<HDF5 object reference%s>" % ("" if self else " (null)")
+
+cdef class RegionReference(Reference):
+
+    """
+        Opaque representation of an HDF5 region reference.
+
+        This is a subclass of Reference which exists mainly for programming
+        convenience.
+    """
+
+    def __cinit__(self, *args, **kwds):
+        self.typecode = H5R_DATASET_REGION
+        self.typesize = sizeof(hdset_reg_ref_t)
+
+    def __repr__(self):
+        return "<HDF5 region reference%s>" % ("" if self else " (null")
+
+
+
+
+
+
+
+
+
+
diff --git a/h5py/h5s.c b/h5py/h5s.c
new file mode 100644
index 0000000..e07c2d5
--- /dev/null
+++ b/h5py/h5s.c
@@ -0,0 +1,6842 @@
+/* Generated by Cython 0.18 on Mon Dec  9 16:00:33 2013 */
+
+#define PY_SSIZE_T_CLEAN
+#include "Python.h"
+#ifndef Py_PYTHON_H
+    #error Python headers needed to compile C extensions, please install development version of Python.
+#elif PY_VERSION_HEX < 0x02040000
+    #error Cython requires Python 2.4+.
+#else
+#include <stddef.h> /* For offsetof */
+#ifndef offsetof
+#define offsetof(type, member) ( (size_t) & ((type*)0) -> member )
+#endif
+#if !defined(WIN32) && !defined(MS_WINDOWS)
+  #ifndef __stdcall
+    #define __stdcall
+  #endif
+  #ifndef __cdecl
+    #define __cdecl
+  #endif
+  #ifndef __fastcall
+    #define __fastcall
+  #endif
+#endif
+#ifndef DL_IMPORT
+  #define DL_IMPORT(t) t
+#endif
+#ifndef DL_EXPORT
+  #define DL_EXPORT(t) t
+#endif
+#ifndef PY_LONG_LONG
+  #define PY_LONG_LONG LONG_LONG
+#endif
+#ifndef Py_HUGE_VAL
+  #define Py_HUGE_VAL HUGE_VAL
+#endif
+#ifdef PYPY_VERSION
+#define CYTHON_COMPILING_IN_PYPY 1
+#define CYTHON_COMPILING_IN_CPYTHON 0
+#else
+#define CYTHON_COMPILING_IN_PYPY 0
+#define CYTHON_COMPILING_IN_CPYTHON 1
+#endif
+#if PY_VERSION_HEX < 0x02050000
+  typedef int Py_ssize_t;
+  #define PY_SSIZE_T_MAX INT_MAX
+  #define PY_SSIZE_T_MIN INT_MIN
+  #define PY_FORMAT_SIZE_T ""
+  #define CYTHON_FORMAT_SSIZE_T ""
+  #define PyInt_FromSsize_t(z) PyInt_FromLong(z)
+  #define PyInt_AsSsize_t(o)   __Pyx_PyInt_AsInt(o)
+  #define PyNumber_Index(o)    ((PyNumber_Check(o) && !PyFloat_Check(o)) ? PyNumber_Int(o) : \
+                                (PyErr_Format(PyExc_TypeError, \
+                                              "expected index value, got %.200s", Py_TYPE(o)->tp_name), \
+                                 (PyObject*)0))
+  #define __Pyx_PyIndex_Check(o) (PyNumber_Check(o) && !PyFloat_Check(o) && \
+                                  !PyComplex_Check(o))
+  #define PyIndex_Check __Pyx_PyIndex_Check
+  #define PyErr_WarnEx(category, message, stacklevel) PyErr_Warn(category, message)
+  #define __PYX_BUILD_PY_SSIZE_T "i"
+#else
+  #define __PYX_BUILD_PY_SSIZE_T "n"
+  #define CYTHON_FORMAT_SSIZE_T "z"
+  #define __Pyx_PyIndex_Check PyIndex_Check
+#endif
+#if PY_VERSION_HEX < 0x02060000
+  #define Py_REFCNT(ob) (((PyObject*)(ob))->ob_refcnt)
+  #define Py_TYPE(ob)   (((PyObject*)(ob))->ob_type)
+  #define Py_SIZE(ob)   (((PyVarObject*)(ob))->ob_size)
+  #define PyVarObject_HEAD_INIT(type, size) \
+          PyObject_HEAD_INIT(type) size,
+  #define PyType_Modified(t)
+  typedef struct {
+     void *buf;
+     PyObject *obj;
+     Py_ssize_t len;
+     Py_ssize_t itemsize;
+     int readonly;
+     int ndim;
+     char *format;
+     Py_ssize_t *shape;
+     Py_ssize_t *strides;
+     Py_ssize_t *suboffsets;
+     void *internal;
+  } Py_buffer;
+  #define PyBUF_SIMPLE 0
+  #define PyBUF_WRITABLE 0x0001
+  #define PyBUF_FORMAT 0x0004
+  #define PyBUF_ND 0x0008
+  #define PyBUF_STRIDES (0x0010 | PyBUF_ND)
+  #define PyBUF_C_CONTIGUOUS (0x0020 | PyBUF_STRIDES)
+  #define PyBUF_F_CONTIGUOUS (0x0040 | PyBUF_STRIDES)
+  #define PyBUF_ANY_CONTIGUOUS (0x0080 | PyBUF_STRIDES)
+  #define PyBUF_INDIRECT (0x0100 | PyBUF_STRIDES)
+  #define PyBUF_RECORDS (PyBUF_STRIDES | PyBUF_FORMAT | PyBUF_WRITABLE)
+  #define PyBUF_FULL (PyBUF_INDIRECT | PyBUF_FORMAT | PyBUF_WRITABLE)
+  typedef int (*getbufferproc)(PyObject *, Py_buffer *, int);
+  typedef void (*releasebufferproc)(PyObject *, Py_buffer *);
+#endif
+#if PY_MAJOR_VERSION < 3
+  #define __Pyx_BUILTIN_MODULE_NAME "__builtin__"
+  #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) \
+          PyCode_New(a, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
+#else
+  #define __Pyx_BUILTIN_MODULE_NAME "builtins"
+  #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) \
+          PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
+#endif
+#if PY_MAJOR_VERSION < 3 && PY_MINOR_VERSION < 6
+  #define PyUnicode_FromString(s) PyUnicode_Decode(s, strlen(s), "UTF-8", "strict")
+#endif
+#if PY_MAJOR_VERSION >= 3
+  #define Py_TPFLAGS_CHECKTYPES 0
+  #define Py_TPFLAGS_HAVE_INDEX 0
+#endif
+#if (PY_VERSION_HEX < 0x02060000) || (PY_MAJOR_VERSION >= 3)
+  #define Py_TPFLAGS_HAVE_NEWBUFFER 0
+#endif
+#if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND)
+  #define CYTHON_PEP393_ENABLED 1
+  #define __Pyx_PyUnicode_READY(op)       (likely(PyUnicode_IS_READY(op)) ? \
+                                              0 : _PyUnicode_Ready((PyObject *)(op)))
+  #define __Pyx_PyUnicode_GET_LENGTH(u)   PyUnicode_GET_LENGTH(u)
+  #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i)
+  #define __Pyx_PyUnicode_READ(k, d, i)   PyUnicode_READ(k, d, i)
+#else
+  #define CYTHON_PEP393_ENABLED 0
+  #define __Pyx_PyUnicode_READY(op)       (0)
+  #define __Pyx_PyUnicode_GET_LENGTH(u)   PyUnicode_GET_SIZE(u)
+  #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i]))
+  #define __Pyx_PyUnicode_READ(k, d, i)   ((k=k), (Py_UCS4)(((Py_UNICODE*)d)[i]))
+#endif
+#if PY_MAJOR_VERSION >= 3
+  #define PyBaseString_Type            PyUnicode_Type
+  #define PyStringObject               PyUnicodeObject
+  #define PyString_Type                PyUnicode_Type
+  #define PyString_Check               PyUnicode_Check
+  #define PyString_CheckExact          PyUnicode_CheckExact
+#endif
+#if PY_VERSION_HEX < 0x02060000
+  #define PyBytesObject                PyStringObject
+  #define PyBytes_Type                 PyString_Type
+  #define PyBytes_Check                PyString_Check
+  #define PyBytes_CheckExact           PyString_CheckExact
+  #define PyBytes_FromString           PyString_FromString
+  #define PyBytes_FromStringAndSize    PyString_FromStringAndSize
+  #define PyBytes_FromFormat           PyString_FromFormat
+  #define PyBytes_DecodeEscape         PyString_DecodeEscape
+  #define PyBytes_AsString             PyString_AsString
+  #define PyBytes_AsStringAndSize      PyString_AsStringAndSize
+  #define PyBytes_Size                 PyString_Size
+  #define PyBytes_AS_STRING            PyString_AS_STRING
+  #define PyBytes_GET_SIZE             PyString_GET_SIZE
+  #define PyBytes_Repr                 PyString_Repr
+  #define PyBytes_Concat               PyString_Concat
+  #define PyBytes_ConcatAndDel         PyString_ConcatAndDel
+#endif
+#if PY_VERSION_HEX < 0x02060000
+  #define PySet_Check(obj)             PyObject_TypeCheck(obj, &PySet_Type)
+  #define PyFrozenSet_Check(obj)       PyObject_TypeCheck(obj, &PyFrozenSet_Type)
+#endif
+#ifndef PySet_CheckExact
+  #define PySet_CheckExact(obj)        (Py_TYPE(obj) == &PySet_Type)
+#endif
+#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type)
+#if PY_MAJOR_VERSION >= 3
+  #define PyIntObject                  PyLongObject
+  #define PyInt_Type                   PyLong_Type
+  #define PyInt_Check(op)              PyLong_Check(op)
+  #define PyInt_CheckExact(op)         PyLong_CheckExact(op)
+  #define PyInt_FromString             PyLong_FromString
+  #define PyInt_FromUnicode            PyLong_FromUnicode
+  #define PyInt_FromLong               PyLong_FromLong
+  #define PyInt_FromSize_t             PyLong_FromSize_t
+  #define PyInt_FromSsize_t            PyLong_FromSsize_t
+  #define PyInt_AsLong                 PyLong_AsLong
+  #define PyInt_AS_LONG                PyLong_AS_LONG
+  #define PyInt_AsSsize_t              PyLong_AsSsize_t
+  #define PyInt_AsUnsignedLongMask     PyLong_AsUnsignedLongMask
+  #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask
+#endif
+#if PY_MAJOR_VERSION >= 3
+  #define PyBoolObject                 PyLongObject
+#endif
+#if PY_VERSION_HEX < 0x03020000
+  typedef long Py_hash_t;
+  #define __Pyx_PyInt_FromHash_t PyInt_FromLong
+  #define __Pyx_PyInt_AsHash_t   PyInt_AsLong
+#else
+  #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t
+  #define __Pyx_PyInt_AsHash_t   PyInt_AsSsize_t
+#endif
+#if (PY_MAJOR_VERSION < 3) || (PY_VERSION_HEX >= 0x03010300)
+  #define __Pyx_PySequence_GetSlice(obj, a, b) PySequence_GetSlice(obj, a, b)
+  #define __Pyx_PySequence_SetSlice(obj, a, b, value) PySequence_SetSlice(obj, a, b, value)
+  #define __Pyx_PySequence_DelSlice(obj, a, b) PySequence_DelSlice(obj, a, b)
+#else
+  #define __Pyx_PySequence_GetSlice(obj, a, b) (unlikely(!(obj)) ? \
+        (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), (PyObject*)0) : \
+        (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_GetSlice(obj, a, b)) : \
+            (PyErr_Format(PyExc_TypeError, "'%.200s' object is unsliceable", (obj)->ob_type->tp_name), (PyObject*)0)))
+  #define __Pyx_PySequence_SetSlice(obj, a, b, value) (unlikely(!(obj)) ? \
+        (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), -1) : \
+        (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_SetSlice(obj, a, b, value)) : \
+            (PyErr_Format(PyExc_TypeError, "'%.200s' object doesn't support slice assignment", (obj)->ob_type->tp_name), -1)))
+  #define __Pyx_PySequence_DelSlice(obj, a, b) (unlikely(!(obj)) ? \
+        (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), -1) : \
+        (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_DelSlice(obj, a, b)) : \
+            (PyErr_Format(PyExc_TypeError, "'%.200s' object doesn't support slice deletion", (obj)->ob_type->tp_name), -1)))
+#endif
+#if PY_MAJOR_VERSION >= 3
+  #define PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, self) : PyInstanceMethod_New(func))
+#endif
+#if PY_VERSION_HEX < 0x02050000
+  #define __Pyx_GetAttrString(o,n)   PyObject_GetAttrString((o),((char *)(n)))
+  #define __Pyx_SetAttrString(o,n,a) PyObject_SetAttrString((o),((char *)(n)),(a))
+  #define __Pyx_DelAttrString(o,n)   PyObject_DelAttrString((o),((char *)(n)))
+#else
+  #define __Pyx_GetAttrString(o,n)   PyObject_GetAttrString((o),(n))
+  #define __Pyx_SetAttrString(o,n,a) PyObject_SetAttrString((o),(n),(a))
+  #define __Pyx_DelAttrString(o,n)   PyObject_DelAttrString((o),(n))
+#endif
+#if PY_VERSION_HEX < 0x02050000
+  #define __Pyx_NAMESTR(n) ((char *)(n))
+  #define __Pyx_DOCSTR(n)  ((char *)(n))
+#else
+  #define __Pyx_NAMESTR(n) (n)
+  #define __Pyx_DOCSTR(n)  (n)
+#endif
+
+
+#if PY_MAJOR_VERSION >= 3
+  #define __Pyx_PyNumber_Divide(x,y)         PyNumber_TrueDivide(x,y)
+  #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceTrueDivide(x,y)
+#else
+  #define __Pyx_PyNumber_Divide(x,y)         PyNumber_Divide(x,y)
+  #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceDivide(x,y)
+#endif
+
+#ifndef __PYX_EXTERN_C
+  #ifdef __cplusplus
+    #define __PYX_EXTERN_C extern "C"
+  #else
+    #define __PYX_EXTERN_C extern
+  #endif
+#endif
+
+#if defined(WIN32) || defined(MS_WINDOWS)
+#define _USE_MATH_DEFINES
+#endif
+#include <math.h>
+#define __PYX_HAVE__h5py__h5s
+#define __PYX_HAVE_API__h5py__h5s
+#include "stdlib.h"
+#include "string.h"
+#include "time.h"
+#include "unistd.h"
+#include "stdint.h"
+#include "api_compat.h"
+#include "lzf_filter.h"
+#include "hdf5.h"
+#include "H5Cpublic.h"
+#include "hdf5_hl.h"
+#include "numpy/arrayobject.h"
+#ifdef _OPENMP
+#include <omp.h>
+#endif /* _OPENMP */
+
+#ifdef PYREX_WITHOUT_ASSERTIONS
+#define CYTHON_WITHOUT_ASSERTIONS
+#endif
+
+#ifndef CYTHON_INLINE
+  #if defined(__GNUC__)
+    #define CYTHON_INLINE __inline__
+  #elif defined(_MSC_VER)
+    #define CYTHON_INLINE __inline
+  #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+    #define CYTHON_INLINE inline
+  #else
+    #define CYTHON_INLINE
+  #endif
+#endif
+#ifndef CYTHON_UNUSED
+# if defined(__GNUC__)
+#   if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
+#     define CYTHON_UNUSED __attribute__ ((__unused__))
+#   else
+#     define CYTHON_UNUSED
+#   endif
+# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER))
+#   define CYTHON_UNUSED __attribute__ ((__unused__))
+# else
+#   define CYTHON_UNUSED
+# endif
+#endif
+typedef struct {PyObject **p; char *s; const long n; const char* encoding; const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; /*proto*/
+
+#define __Pyx_PyBytes_FromUString(s) PyBytes_FromString((char*)s)
+#define __Pyx_PyBytes_AsUString(s)   ((unsigned char*) PyBytes_AsString(s))
+#define __Pyx_Owned_Py_None(b) (Py_INCREF(Py_None), Py_None)
+#define __Pyx_PyBool_FromLong(b) ((b) ? (Py_INCREF(Py_True), Py_True) : (Py_INCREF(Py_False), Py_False))
+static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*);
+static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x);
+static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*);
+static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t);
+static CYTHON_INLINE size_t __Pyx_PyInt_AsSize_t(PyObject*);
+#if CYTHON_COMPILING_IN_CPYTHON
+#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x))
+#else
+#define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x)
+#endif
+#define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x))
+
+
+#ifdef __GNUC__
+  /* Test for GCC > 2.95 */
+  #if __GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))
+    #define likely(x)   __builtin_expect(!!(x), 1)
+    #define unlikely(x) __builtin_expect(!!(x), 0)
+  #else /* __GNUC__ > 2 ... */
+    #define likely(x)   (x)
+    #define unlikely(x) (x)
+  #endif /* __GNUC__ > 2 ... */
+#else /* __GNUC__ */
+  #define likely(x)   (x)
+  #define unlikely(x) (x)
+#endif /* __GNUC__ */
+    
+static PyObject *__pyx_m;
+static PyObject *__pyx_b;
+static PyObject *__pyx_empty_tuple;
+static PyObject *__pyx_empty_bytes;
+static int __pyx_lineno;
+static int __pyx_clineno = 0;
+static const char * __pyx_cfilenm= __FILE__;
+static const char *__pyx_filename;
+
+
+static const char *__pyx_f[] = {
+  "h5s.pyx",
+  "numpy.pxd",
+};
+
+/*--- Type declarations ---*/
+struct __pyx_obj_4h5py_8_objects_ObjectID;
+struct __pyx_obj_4h5py_3h5s_SpaceID;
+struct __pyx_opt_args_4h5py_5utils_check_numpy_read;
+struct __pyx_opt_args_4h5py_5utils_check_numpy_write;
+
+/* "utils.pxd":17
+ * cdef void efree(void* ptr)
+ * 
+ * cpdef int check_numpy_read(ndarray arr, hid_t space_id=*) except -1             # <<<<<<<<<<<<<<
+ * cpdef int check_numpy_write(ndarray arr, hid_t space_id=*) except -1
+ * 
+ */
+struct __pyx_opt_args_4h5py_5utils_check_numpy_read {
+  int __pyx_n;
+  hid_t space_id;
+};
+
+/* "utils.pxd":18
+ * 
+ * cpdef int check_numpy_read(ndarray arr, hid_t space_id=*) except -1
+ * cpdef int check_numpy_write(ndarray arr, hid_t space_id=*) except -1             # <<<<<<<<<<<<<<
+ * 
+ * cdef int convert_tuple(object tuple, hsize_t *dims, hsize_t rank) except -1
+ */
+struct __pyx_opt_args_4h5py_5utils_check_numpy_write {
+  int __pyx_n;
+  hid_t space_id;
+};
+
+/* "_objects.pxd":12
+ * from defs cimport *
+ * 
+ * cdef class ObjectID:             # <<<<<<<<<<<<<<
+ * 
+ *     cdef object __weakref__
+ */
+struct __pyx_obj_4h5py_8_objects_ObjectID {
+  PyObject_HEAD
+  PyObject *__weakref__;
+  hid_t id;
+  int locked;
+  PyObject *_hash;
+};
+
+
+/* "h5py/h5s.pxd":14
+ * from _objects cimport class ObjectID
+ * 
+ * cdef class SpaceID(ObjectID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+struct __pyx_obj_4h5py_3h5s_SpaceID {
+  struct __pyx_obj_4h5py_8_objects_ObjectID __pyx_base;
+};
+
+#ifndef CYTHON_REFNANNY
+  #define CYTHON_REFNANNY 0
+#endif
+#if CYTHON_REFNANNY
+  typedef struct {
+    void (*INCREF)(void*, PyObject*, int);
+    void (*DECREF)(void*, PyObject*, int);
+    void (*GOTREF)(void*, PyObject*, int);
+    void (*GIVEREF)(void*, PyObject*, int);
+    void* (*SetupContext)(const char*, int, const char*);
+    void (*FinishContext)(void**);
+  } __Pyx_RefNannyAPIStruct;
+  static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL;
+  static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); /*proto*/
+  #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL;
+#ifdef WITH_THREAD
+  #define __Pyx_RefNannySetupContext(name, acquire_gil) \
+          if (acquire_gil) { \
+              PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); \
+              __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__); \
+              PyGILState_Release(__pyx_gilstate_save); \
+          } else { \
+              __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__); \
+          }
+#else
+  #define __Pyx_RefNannySetupContext(name, acquire_gil) \
+          __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__)
+#endif
+  #define __Pyx_RefNannyFinishContext() \
+          __Pyx_RefNanny->FinishContext(&__pyx_refnanny)
+  #define __Pyx_INCREF(r)  __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_DECREF(r)  __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_GOTREF(r)  __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_XINCREF(r)  do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0)
+  #define __Pyx_XDECREF(r)  do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0)
+  #define __Pyx_XGOTREF(r)  do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0)
+  #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0)
+#else
+  #define __Pyx_RefNannyDeclarations
+  #define __Pyx_RefNannySetupContext(name, acquire_gil)
+  #define __Pyx_RefNannyFinishContext()
+  #define __Pyx_INCREF(r) Py_INCREF(r)
+  #define __Pyx_DECREF(r) Py_DECREF(r)
+  #define __Pyx_GOTREF(r)
+  #define __Pyx_GIVEREF(r)
+  #define __Pyx_XINCREF(r) Py_XINCREF(r)
+  #define __Pyx_XDECREF(r) Py_XDECREF(r)
+  #define __Pyx_XGOTREF(r)
+  #define __Pyx_XGIVEREF(r)
+#endif /* CYTHON_REFNANNY */
+#define __Pyx_CLEAR(r)    do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0)
+#define __Pyx_XCLEAR(r)   do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0)
+
+static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name); /*proto*/
+
+static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type); /*proto*/
+
+static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name); /*proto*/
+
+static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[], \
+    PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args, \
+    const char* function_name); /*proto*/
+
+static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact,
+    Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); /*proto*/
+
+static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb); /*proto*/
+static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb); /*proto*/
+
+#define __Pyx_DelItemInt(o, i, size, to_py_func) (((size) <= sizeof(Py_ssize_t)) ? \
+                                                    __Pyx_DelItemInt_Fast(o, i) : \
+                                                    __Pyx_DelItem_Generic(o, to_py_func(i)))
+static CYTHON_INLINE int __Pyx_DelItem_Generic(PyObject *o, PyObject *j) {
+    int r;
+    if (!j) return -1;
+    r = PyObject_DelItem(o, j);
+    Py_DECREF(j);
+    return r;
+}
+static CYTHON_INLINE int __Pyx_DelItemInt_Fast(PyObject *o, Py_ssize_t i) {
+#if CYTHON_COMPILING_IN_PYPY
+    if (PySequence_Check(o)) {
+        return PySequence_DelItem(o, i);
+    }
+#else
+    PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence;
+    if (likely(m && m->sq_ass_item)) {
+        if (unlikely(i < 0) && likely(m->sq_length)) {
+            Py_ssize_t l = m->sq_length(o);
+            if (unlikely(l < 0)) return -1;
+            i += l;
+        }
+        return m->sq_ass_item(o, i, (PyObject *)NULL);
+    }
+#endif
+    return __Pyx_DelItem_Generic(o, PyInt_FromSsize_t(i));
+}
+
+static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb); /*proto*/
+
+static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause); /*proto*/
+
+static int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, int none_allowed,
+    const char *name, int exact); /*proto*/
+
+static void __Pyx_call_next_tp_dealloc(PyObject* obj, destructor current_tp_dealloc);
+
+static int __Pyx_call_next_tp_traverse(PyObject* obj, visitproc v, void *a, traverseproc current_tp_traverse);
+
+static void __Pyx_call_next_tp_clear(PyObject* obj, inquiry current_tp_dealloc);
+
+static CYTHON_INLINE void __Pyx_ExceptionSave(PyObject **type, PyObject **value, PyObject **tb); /*proto*/
+static void __Pyx_ExceptionReset(PyObject *type, PyObject *value, PyObject *tb); /*proto*/
+
+static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level); /*proto*/
+
+static CYTHON_INLINE void __Pyx_RaiseImportError(PyObject *name);
+
+static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_hsize_t(hsize_t);
+
+static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_hid_t(hid_t);
+
+static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_hssize_t(hssize_t);
+
+static CYTHON_INLINE unsigned char __Pyx_PyInt_AsUnsignedChar(PyObject *);
+
+static CYTHON_INLINE unsigned short __Pyx_PyInt_AsUnsignedShort(PyObject *);
+
+static CYTHON_INLINE unsigned int __Pyx_PyInt_AsUnsignedInt(PyObject *);
+
+static CYTHON_INLINE char __Pyx_PyInt_AsChar(PyObject *);
+
+static CYTHON_INLINE short __Pyx_PyInt_AsShort(PyObject *);
+
+static CYTHON_INLINE int __Pyx_PyInt_AsInt(PyObject *);
+
+static CYTHON_INLINE signed char __Pyx_PyInt_AsSignedChar(PyObject *);
+
+static CYTHON_INLINE signed short __Pyx_PyInt_AsSignedShort(PyObject *);
+
+static CYTHON_INLINE signed int __Pyx_PyInt_AsSignedInt(PyObject *);
+
+static CYTHON_INLINE int __Pyx_PyInt_AsLongDouble(PyObject *);
+
+static CYTHON_INLINE unsigned long __Pyx_PyInt_AsUnsignedLong(PyObject *);
+
+static CYTHON_INLINE unsigned PY_LONG_LONG __Pyx_PyInt_AsUnsignedLongLong(PyObject *);
+
+static CYTHON_INLINE long __Pyx_PyInt_AsLong(PyObject *);
+
+static CYTHON_INLINE PY_LONG_LONG __Pyx_PyInt_AsLongLong(PyObject *);
+
+static CYTHON_INLINE signed long __Pyx_PyInt_AsSignedLong(PyObject *);
+
+static CYTHON_INLINE signed PY_LONG_LONG __Pyx_PyInt_AsSignedLongLong(PyObject *);
+
+static int __Pyx_check_binary_version(void);
+
+#if !defined(__Pyx_PyIdentifier_FromString)
+#if PY_MAJOR_VERSION < 3
+  #define __Pyx_PyIdentifier_FromString(s) PyString_FromString(s)
+#else
+  #define __Pyx_PyIdentifier_FromString(s) PyUnicode_FromString(s)
+#endif
+#endif
+
+static PyObject *__Pyx_ImportModule(const char *name); /*proto*/
+
+static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name, size_t size, int strict);  /*proto*/
+
+static int __Pyx_ImportFunction(PyObject *module, const char *funcname, void (**f)(void), const char *sig); /*proto*/
+
+typedef struct {
+    int code_line;
+    PyCodeObject* code_object;
+} __Pyx_CodeObjectCacheEntry;
+struct __Pyx_CodeObjectCache {
+    int count;
+    int max_count;
+    __Pyx_CodeObjectCacheEntry* entries;
+};
+static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL};
+static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line);
+static PyCodeObject *__pyx_find_code_object(int code_line);
+static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object);
+
+static void __Pyx_AddTraceback(const char *funcname, int c_line,
+                               int py_line, const char *filename); /*proto*/
+
+static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); /*proto*/
+
+
+/* Module declarations from 'h5py.api_types_ext' */
+
+/* Module declarations from 'h5py.api_types_hdf5' */
+
+/* Module declarations from 'h5py.defs' */
+static hid_t (*__pyx_f_4h5py_4defs_H5Screate)(H5S_class_t); /*proto*/
+static hid_t (*__pyx_f_4h5py_4defs_H5Scopy)(hid_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Sclose)(hid_t); /*proto*/
+static hid_t (*__pyx_f_4h5py_4defs_H5Screate_simple)(int, hsize_t *, hsize_t *); /*proto*/
+static htri_t (*__pyx_f_4h5py_4defs_H5Sis_simple)(hid_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Soffset_simple)(hid_t, hssize_t *); /*proto*/
+static int (*__pyx_f_4h5py_4defs_H5Sget_simple_extent_ndims)(hid_t); /*proto*/
+static int (*__pyx_f_4h5py_4defs_H5Sget_simple_extent_dims)(hid_t, hsize_t *, hsize_t *); /*proto*/
+static hssize_t (*__pyx_f_4h5py_4defs_H5Sget_simple_extent_npoints)(hid_t); /*proto*/
+static H5S_class_t (*__pyx_f_4h5py_4defs_H5Sget_simple_extent_type)(hid_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Sextent_copy)(hid_t, hid_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Sset_extent_simple)(hid_t, int, hsize_t *, hsize_t *); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Sset_extent_none)(hid_t); /*proto*/
+static H5S_sel_type (*__pyx_f_4h5py_4defs_H5Sget_select_type)(hid_t); /*proto*/
+static hssize_t (*__pyx_f_4h5py_4defs_H5Sget_select_npoints)(hid_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Sget_select_bounds)(hid_t, hsize_t *, hsize_t *); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Sselect_all)(hid_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Sselect_none)(hid_t); /*proto*/
+static htri_t (*__pyx_f_4h5py_4defs_H5Sselect_valid)(hid_t); /*proto*/
+static hssize_t (*__pyx_f_4h5py_4defs_H5Sget_select_elem_npoints)(hid_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Sget_select_elem_pointlist)(hid_t, hsize_t, hsize_t, hsize_t *); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Sselect_elements)(hid_t, H5S_seloper_t, size_t, hsize_t **); /*proto*/
+static hssize_t (*__pyx_f_4h5py_4defs_H5Sget_select_hyper_nblocks)(hid_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Sget_select_hyper_blocklist)(hid_t, hsize_t, hsize_t, hsize_t *); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Sselect_hyperslab)(hid_t, H5S_seloper_t, hsize_t *, hsize_t *, hsize_t *, hsize_t *); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Sencode)(hid_t, void *, size_t *); /*proto*/
+static hid_t (*__pyx_f_4h5py_4defs_H5Sdecode)(void *); /*proto*/
+
+/* Module declarations from 'h5py._objects' */
+static PyTypeObject *__pyx_ptype_4h5py_8_objects_ObjectID = 0;
+
+/* Module declarations from 'numpy' */
+
+/* Module declarations from 'h5py.numpy' */
+static PyTypeObject *__pyx_ptype_4h5py_5numpy_dtype = 0;
+static PyTypeObject *__pyx_ptype_4h5py_5numpy_ndarray = 0;
+
+/* Module declarations from 'h5py.utils' */
+static void *(*__pyx_f_4h5py_5utils_emalloc)(size_t); /*proto*/
+static void (*__pyx_f_4h5py_5utils_efree)(void *); /*proto*/
+static int (*__pyx_f_4h5py_5utils_convert_tuple)(PyObject *, hsize_t *, hsize_t); /*proto*/
+static PyObject *(*__pyx_f_4h5py_5utils_convert_dims)(hsize_t *, hsize_t); /*proto*/
+static int (*__pyx_f_4h5py_5utils_require_tuple)(PyObject *, int, int, char *); /*proto*/
+static PyObject *(*__pyx_f_4h5py_5utils_create_numpy_hsize)(int, hsize_t *); /*proto*/
+static PyObject *(*__pyx_f_4h5py_5utils_create_hsize_array)(PyObject *); /*proto*/
+
+/* Module declarations from 'h5py.h5s' */
+static PyTypeObject *__pyx_ptype_4h5py_3h5s_SpaceID = 0;
+static PyObject *__pyx_f_4h5py_3h5s_lockid(hid_t); /*proto*/
+#define __Pyx_MODULE_NAME "h5py.h5s"
+int __pyx_module_is_main_h5py__h5s = 0;
+
+/* Implementation of 'h5py.h5s' */
+static PyObject *__pyx_builtin_ValueError;
+static PyObject *__pyx_pf_4h5py_3h5s_create(CYTHON_UNUSED PyObject *__pyx_self, int __pyx_v_class_code); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5s_2create_simple(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_dims_tpl, PyObject *__pyx_v_max_dims_tpl); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5s_4decode(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_buf); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5s_7SpaceID_5shape___get__(struct __pyx_obj_4h5py_3h5s_SpaceID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5s_7SpaceID__close(struct __pyx_obj_4h5py_3h5s_SpaceID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5s_7SpaceID_2copy(struct __pyx_obj_4h5py_3h5s_SpaceID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5s_7SpaceID_4encode(struct __pyx_obj_4h5py_3h5s_SpaceID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5s_7SpaceID_6__reduce__(struct __pyx_obj_4h5py_3h5s_SpaceID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5s_7SpaceID_8__setstate__(struct __pyx_obj_4h5py_3h5s_SpaceID *__pyx_v_self, PyObject *__pyx_v_state); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5s_7SpaceID_10is_simple(struct __pyx_obj_4h5py_3h5s_SpaceID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5s_7SpaceID_12offset_simple(struct __pyx_obj_4h5py_3h5s_SpaceID *__pyx_v_self, PyObject *__pyx_v_offset); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5s_7SpaceID_14get_simple_extent_ndims(struct __pyx_obj_4h5py_3h5s_SpaceID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5s_7SpaceID_16get_simple_extent_dims(struct __pyx_obj_4h5py_3h5s_SpaceID *__pyx_v_self, int __pyx_v_maxdims); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5s_7SpaceID_18get_simple_extent_npoints(struct __pyx_obj_4h5py_3h5s_SpaceID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5s_7SpaceID_20get_simple_extent_type(struct __pyx_obj_4h5py_3h5s_SpaceID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5s_7SpaceID_22extent_copy(struct __pyx_obj_4h5py_3h5s_SpaceID *__pyx_v_self, struct __pyx_obj_4h5py_3h5s_SpaceID *__pyx_v_source); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5s_7SpaceID_24set_extent_simple(struct __pyx_obj_4h5py_3h5s_SpaceID *__pyx_v_self, PyObject *__pyx_v_dims_tpl, PyObject *__pyx_v_max_dims_tpl); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5s_7SpaceID_26set_extent_none(struct __pyx_obj_4h5py_3h5s_SpaceID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5s_7SpaceID_28get_select_type(struct __pyx_obj_4h5py_3h5s_SpaceID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5s_7SpaceID_30get_select_npoints(struct __pyx_obj_4h5py_3h5s_SpaceID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5s_7SpaceID_32get_select_bounds(struct __pyx_obj_4h5py_3h5s_SpaceID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5s_7SpaceID_34select_all(struct __pyx_obj_4h5py_3h5s_SpaceID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5s_7SpaceID_36select_none(struct __pyx_obj_4h5py_3h5s_SpaceID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5s_7SpaceID_38select_valid(struct __pyx_obj_4h5py_3h5s_SpaceID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5s_7SpaceID_40get_select_elem_npoints(struct __pyx_obj_4h5py_3h5s_SpaceID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5s_7SpaceID_42get_select_elem_pointlist(struct __pyx_obj_4h5py_3h5s_SpaceID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5s_7SpaceID_44select_elements(struct __pyx_obj_4h5py_3h5s_SpaceID *__pyx_v_self, PyObject *__pyx_v_coords, int __pyx_v_op); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5s_7SpaceID_46get_select_hyper_nblocks(struct __pyx_obj_4h5py_3h5s_SpaceID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5s_7SpaceID_48get_select_hyper_blocklist(struct __pyx_obj_4h5py_3h5s_SpaceID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5s_7SpaceID_50select_hyperslab(struct __pyx_obj_4h5py_3h5s_SpaceID *__pyx_v_self, PyObject *__pyx_v_start, PyObject *__pyx_v_count, PyObject *__pyx_v_stride, PyObject *__pyx_v_block, int __pyx_v_op); /* proto */
+static char __pyx_k_1[] = "get_simple_extent_dims";
+static char __pyx_k_4[] = "%d is not a simple dataspace";
+static char __pyx_k_6[] = "Coordinate array must have shape (<npoints>, %d)";
+static char __pyx_k_7[] = "get_simple_extent_ndims";
+static char __pyx_k_9[] = " Numpy-style shape tuple representing dimensions.  () == scalar.\n        ";
+static char __pyx_k_10[] = "\n    Low-level interface to the \"H5S\" family of data-space functions.\n";
+static char __pyx_k_13[] = "/home/computer/h5py/h5py/h5s.pyx";
+static char __pyx_k_14[] = "h5py.h5s";
+static char __pyx_k_19[] = "SpaceID.select_elements (line 440)";
+static char __pyx_k_20[] = "(SEQUENCE coords, INT op=SELECT_SET)\n\n        Select elements by specifying coordinates points.  The argument\n        \"coords\" may be an ndarray or any nested sequence which can be\n        converted to an array of uints with the shape::\n\n            (<npoints>, <space rank>)\n\n        Examples::\n\n            >>> obj.shape\n            (10, 10)\n            >>> obj.select_elements([(1,2), (3,4), (5,9)])\n\n        A zero-length selection (i.e. shape  [...]
+static char __pyx_k__op[] = "op";
+static char __pyx_k__ALL[] = "ALL";
+static char __pyx_k__buf[] = "buf";
+static char __pyx_k__buf_[] = "buf_";
+static char __pyx_k__dims[] = "dims";
+static char __pyx_k__h5py[] = "h5py";
+static char __pyx_k__lock[] = "lock";
+static char __pyx_k__open[] = "open";
+static char __pyx_k__rank[] = "rank";
+static char __pyx_k___NULL[] = "_NULL";
+static char __pyx_k__block[] = "block";
+static char __pyx_k__count[] = "count";
+static char __pyx_k__start[] = "start";
+static char __pyx_k__valid[] = "valid";
+static char __pyx_k__SCALAR[] = "SCALAR";
+static char __pyx_k__SIMPLE[] = "SIMPLE";
+static char __pyx_k__coords[] = "coords";
+static char __pyx_k__create[] = "create";
+static char __pyx_k__decode[] = "decode";
+static char __pyx_k__encode[] = "encode";
+static char __pyx_k__offset[] = "offset";
+static char __pyx_k__stride[] = "stride";
+static char __pyx_k__SEL_ALL[] = "SEL_ALL";
+static char __pyx_k__maxdims[] = "maxdims";
+static char __pyx_k__NO_CLASS[] = "NO_CLASS";
+static char __pyx_k__SEL_NONE[] = "SEL_NONE";
+static char __pyx_k____exit__[] = "__exit__";
+static char __pyx_k____main__[] = "__main__";
+static char __pyx_k____test__[] = "__test__";
+static char __pyx_k___objects[] = "_objects";
+static char __pyx_k__dims_tpl[] = "dims_tpl";
+static char __pyx_k__max_dims[] = "max_dims";
+static char __pyx_k__registry[] = "registry";
+static char __pyx_k__SELECT_OR[] = "SELECT_OR";
+static char __pyx_k__SEL_ERROR[] = "SEL_ERROR";
+static char __pyx_k__UNLIMITED[] = "UNLIMITED";
+static char __pyx_k____enter__[] = "__enter__";
+static char __pyx_k__SELECT_AND[] = "SELECT_AND";
+static char __pyx_k__SELECT_SET[] = "SELECT_SET";
+static char __pyx_k__SELECT_XOR[] = "SELECT_XOR";
+static char __pyx_k__SEL_POINTS[] = "SEL_POINTS";
+static char __pyx_k__ValueError[] = "ValueError";
+static char __pyx_k__class_code[] = "class_code";
+static char __pyx_k__SELECT_NOOP[] = "SELECT_NOOP";
+static char __pyx_k__SELECT_NOTA[] = "SELECT_NOTA";
+static char __pyx_k__SELECT_NOTB[] = "SELECT_NOTB";
+static char __pyx_k__max_dims_tpl[] = "max_dims_tpl";
+static char __pyx_k__SELECT_APPEND[] = "SELECT_APPEND";
+static char __pyx_k__create_simple[] = "create_simple";
+static char __pyx_k__SELECT_INVALID[] = "SELECT_INVALID";
+static char __pyx_k__SELECT_PREPEND[] = "SELECT_PREPEND";
+static char __pyx_k__SEL_HYPERSLABS[] = "SEL_HYPERSLABS";
+static PyObject *__pyx_n_s_1;
+static PyObject *__pyx_kp_s_13;
+static PyObject *__pyx_n_s_14;
+static PyObject *__pyx_kp_u_19;
+static PyObject *__pyx_kp_u_20;
+static PyObject *__pyx_kp_s_4;
+static PyObject *__pyx_kp_s_6;
+static PyObject *__pyx_n_s_7;
+static PyObject *__pyx_n_s__ALL;
+static PyObject *__pyx_n_s__NO_CLASS;
+static PyObject *__pyx_n_s__SCALAR;
+static PyObject *__pyx_n_s__SELECT_AND;
+static PyObject *__pyx_n_s__SELECT_APPEND;
+static PyObject *__pyx_n_s__SELECT_INVALID;
+static PyObject *__pyx_n_s__SELECT_NOOP;
+static PyObject *__pyx_n_s__SELECT_NOTA;
+static PyObject *__pyx_n_s__SELECT_NOTB;
+static PyObject *__pyx_n_s__SELECT_OR;
+static PyObject *__pyx_n_s__SELECT_PREPEND;
+static PyObject *__pyx_n_s__SELECT_SET;
+static PyObject *__pyx_n_s__SELECT_XOR;
+static PyObject *__pyx_n_s__SEL_ALL;
+static PyObject *__pyx_n_s__SEL_ERROR;
+static PyObject *__pyx_n_s__SEL_HYPERSLABS;
+static PyObject *__pyx_n_s__SEL_NONE;
+static PyObject *__pyx_n_s__SEL_POINTS;
+static PyObject *__pyx_n_s__SIMPLE;
+static PyObject *__pyx_n_s__UNLIMITED;
+static PyObject *__pyx_n_s__ValueError;
+static PyObject *__pyx_n_s___NULL;
+static PyObject *__pyx_n_s____enter__;
+static PyObject *__pyx_n_s____exit__;
+static PyObject *__pyx_n_s____main__;
+static PyObject *__pyx_n_s____test__;
+static PyObject *__pyx_n_s___objects;
+static PyObject *__pyx_n_s__block;
+static PyObject *__pyx_n_s__buf;
+static PyObject *__pyx_n_s__buf_;
+static PyObject *__pyx_n_s__class_code;
+static PyObject *__pyx_n_s__coords;
+static PyObject *__pyx_n_s__count;
+static PyObject *__pyx_n_s__create;
+static PyObject *__pyx_n_s__create_simple;
+static PyObject *__pyx_n_s__decode;
+static PyObject *__pyx_n_s__dims;
+static PyObject *__pyx_n_s__dims_tpl;
+static PyObject *__pyx_n_s__encode;
+static PyObject *__pyx_n_s__h5py;
+static PyObject *__pyx_n_s__lock;
+static PyObject *__pyx_n_s__max_dims;
+static PyObject *__pyx_n_s__max_dims_tpl;
+static PyObject *__pyx_n_s__maxdims;
+static PyObject *__pyx_n_s__offset;
+static PyObject *__pyx_n_s__op;
+static PyObject *__pyx_n_s__open;
+static PyObject *__pyx_n_s__rank;
+static PyObject *__pyx_n_s__registry;
+static PyObject *__pyx_n_s__start;
+static PyObject *__pyx_n_s__stride;
+static PyObject *__pyx_n_s__valid;
+static PyObject *__pyx_int_neg_1;
+static int __pyx_k_5;
+static int __pyx_k_8;
+static PyObject *__pyx_k_tuple_2;
+static PyObject *__pyx_k_tuple_3;
+static PyObject *__pyx_k_tuple_11;
+static PyObject *__pyx_k_tuple_15;
+static PyObject *__pyx_k_tuple_17;
+static PyObject *__pyx_k_codeobj_12;
+static PyObject *__pyx_k_codeobj_16;
+static PyObject *__pyx_k_codeobj_18;
+
+/* "h5py/h5s.pyx":22
+ * 
+ * 
+ * cdef object lockid(hid_t id_):             # <<<<<<<<<<<<<<
+ *     cdef SpaceID space
+ *     space = SpaceID.open(id_)
+ */
+
+static PyObject *__pyx_f_4h5py_3h5s_lockid(hid_t __pyx_v_id_) {
+  struct __pyx_obj_4h5py_3h5s_SpaceID *__pyx_v_space = 0;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("lockid", 0);
+
+  /* "h5py/h5s.pyx":24
+ * cdef object lockid(hid_t id_):
+ *     cdef SpaceID space
+ *     space = SpaceID.open(id_)             # <<<<<<<<<<<<<<
+ *     space.locked = 1
+ *     return space
+ */
+  __pyx_t_1 = PyObject_GetAttr(((PyObject *)((PyObject*)__pyx_ptype_4h5py_3h5s_SpaceID)), __pyx_n_s__open); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyInt_to_py_hid_t(__pyx_v_id_); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2);
+  __Pyx_GIVEREF(__pyx_t_2);
+  __pyx_t_2 = 0;
+  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
+  if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_4h5py_3h5s_SpaceID))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v_space = ((struct __pyx_obj_4h5py_3h5s_SpaceID *)__pyx_t_2);
+  __pyx_t_2 = 0;
+
+  /* "h5py/h5s.pyx":25
+ *     cdef SpaceID space
+ *     space = SpaceID.open(id_)
+ *     space.locked = 1             # <<<<<<<<<<<<<<
+ *     return space
+ * 
+ */
+  __pyx_v_space->__pyx_base.locked = 1;
+
+  /* "h5py/h5s.pyx":26
+ *     space = SpaceID.open(id_)
+ *     space.locked = 1
+ *     return space             # <<<<<<<<<<<<<<
+ * 
+ * # === Public constants and data structures ====================================
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(((PyObject *)__pyx_v_space));
+  __pyx_r = ((PyObject *)__pyx_v_space);
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("h5py.h5s.lockid", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_space);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5s_1create(PyObject *__pyx_self, PyObject *__pyx_arg_class_code); /*proto*/
+static char __pyx_doc_4h5py_3h5s_create[] = "(INT class_code) => SpaceID\n\n    Create a new HDF5 dataspace object, of the given class.\n    Legal values are SCALAR and SIMPLE.\n    ";
+static PyMethodDef __pyx_mdef_4h5py_3h5s_1create = {__Pyx_NAMESTR("create"), (PyCFunction)__pyx_pw_4h5py_3h5s_1create, METH_O, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5s_create)};
+static PyObject *__pyx_pw_4h5py_3h5s_1create(PyObject *__pyx_self, PyObject *__pyx_arg_class_code) {
+  int __pyx_v_class_code;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("create (wrapper)", 0);
+  assert(__pyx_arg_class_code); {
+    __pyx_v_class_code = __Pyx_PyInt_AsInt(__pyx_arg_class_code); if (unlikely((__pyx_v_class_code == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5s.create", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_3h5s_create(__pyx_self, ((int)__pyx_v_class_code));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5s.pyx":62
+ * 
+ * 
+ * def create(int class_code):             # <<<<<<<<<<<<<<
+ *     """(INT class_code) => SpaceID
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5s_create(CYTHON_UNUSED PyObject *__pyx_self, int __pyx_v_class_code) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  hid_t __pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("create", 0);
+
+  /* "h5py/h5s.pyx":68
+ *     Legal values are SCALAR and SIMPLE.
+ *     """
+ *     return SpaceID.open(H5Screate(<H5S_class_t>class_code))             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyObject_GetAttr(((PyObject *)((PyObject*)__pyx_ptype_4h5py_3h5s_SpaceID)), __pyx_n_s__open); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __pyx_f_4h5py_4defs_H5Screate(((H5S_class_t)__pyx_v_class_code)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyInt_to_py_hid_t(__pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_3);
+  __pyx_t_3 = 0;
+  __pyx_t_3 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
+  __pyx_r = __pyx_t_3;
+  __pyx_t_3 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("h5py.h5s.create", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5s_3create_simple(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_4h5py_3h5s_2create_simple[] = "(TUPLE dims_tpl, TUPLE max_dims_tpl) => SpaceID\n\n    Create a simple (slab) dataspace from a tuple of dimensions.\n    Every element of dims_tpl must be a positive integer.\n\n    You can optionally specify the maximum dataspace size. The\n    special value UNLIMITED, as an element of max_dims, indicates\n    an unlimited dimension.\n    ";
+static PyMethodDef __pyx_mdef_4h5py_3h5s_3create_simple = {__Pyx_NAMESTR("create_simple"), (PyCFunction)__pyx_pw_4h5py_3h5s_3create_simple, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5s_2create_simple)};
+static PyObject *__pyx_pw_4h5py_3h5s_3create_simple(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_dims_tpl = 0;
+  PyObject *__pyx_v_max_dims_tpl = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("create_simple (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__dims_tpl,&__pyx_n_s__max_dims_tpl,0};
+    PyObject* values[2] = {0,0};
+
+    /* "h5py/h5s.pyx":71
+ * 
+ * 
+ * def create_simple(object dims_tpl, object max_dims_tpl=None):             # <<<<<<<<<<<<<<
+ *     """(TUPLE dims_tpl, TUPLE max_dims_tpl) => SpaceID
+ * 
+ */
+    values[1] = ((PyObject *)Py_None);
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__dims_tpl)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__max_dims_tpl);
+          if (value) { values[1] = value; kw_args--; }
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "create_simple") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else {
+      switch (PyTuple_GET_SIZE(__pyx_args)) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+    }
+    __pyx_v_dims_tpl = values[0];
+    __pyx_v_max_dims_tpl = values[1];
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("create_simple", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5s.create_simple", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_3h5s_2create_simple(__pyx_self, __pyx_v_dims_tpl, __pyx_v_max_dims_tpl);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_4h5py_3h5s_2create_simple(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_dims_tpl, PyObject *__pyx_v_max_dims_tpl) {
+  int __pyx_v_rank;
+  hsize_t *__pyx_v_dims;
+  hsize_t *__pyx_v_max_dims;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  Py_ssize_t __pyx_t_2;
+  void *__pyx_t_3;
+  int __pyx_t_4;
+  PyObject *__pyx_t_5 = NULL;
+  hid_t __pyx_t_6;
+  PyObject *__pyx_t_7 = NULL;
+  PyObject *__pyx_t_8 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("create_simple", 0);
+
+  /* "h5py/h5s.pyx":82
+ *     """
+ *     cdef int rank
+ *     cdef hsize_t* dims = NULL             # <<<<<<<<<<<<<<
+ *     cdef hsize_t* max_dims = NULL
+ * 
+ */
+  __pyx_v_dims = NULL;
+
+  /* "h5py/h5s.pyx":83
+ *     cdef int rank
+ *     cdef hsize_t* dims = NULL
+ *     cdef hsize_t* max_dims = NULL             # <<<<<<<<<<<<<<
+ * 
+ *     require_tuple(dims_tpl, 0, -1, "dims_tpl")
+ */
+  __pyx_v_max_dims = NULL;
+
+  /* "h5py/h5s.pyx":85
+ *     cdef hsize_t* max_dims = NULL
+ * 
+ *     require_tuple(dims_tpl, 0, -1, "dims_tpl")             # <<<<<<<<<<<<<<
+ *     rank = len(dims_tpl)
+ *     require_tuple(max_dims_tpl, 1, rank, "max_dims_tpl")
+ */
+  __pyx_t_1 = __pyx_f_4h5py_5utils_require_tuple(__pyx_v_dims_tpl, 0, -1, __pyx_k__dims_tpl); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5s.pyx":86
+ * 
+ *     require_tuple(dims_tpl, 0, -1, "dims_tpl")
+ *     rank = len(dims_tpl)             # <<<<<<<<<<<<<<
+ *     require_tuple(max_dims_tpl, 1, rank, "max_dims_tpl")
+ * 
+ */
+  __pyx_t_2 = PyObject_Length(__pyx_v_dims_tpl); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v_rank = __pyx_t_2;
+
+  /* "h5py/h5s.pyx":87
+ *     require_tuple(dims_tpl, 0, -1, "dims_tpl")
+ *     rank = len(dims_tpl)
+ *     require_tuple(max_dims_tpl, 1, rank, "max_dims_tpl")             # <<<<<<<<<<<<<<
+ * 
+ *     try:
+ */
+  __pyx_t_1 = __pyx_f_4h5py_5utils_require_tuple(__pyx_v_max_dims_tpl, 1, __pyx_v_rank, __pyx_k__max_dims_tpl); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5s.pyx":89
+ *     require_tuple(max_dims_tpl, 1, rank, "max_dims_tpl")
+ * 
+ *     try:             # <<<<<<<<<<<<<<
+ *         dims = <hsize_t*>emalloc(sizeof(hsize_t)*rank)
+ *         convert_tuple(dims_tpl, dims, rank)
+ */
+  /*try:*/ {
+
+    /* "h5py/h5s.pyx":90
+ * 
+ *     try:
+ *         dims = <hsize_t*>emalloc(sizeof(hsize_t)*rank)             # <<<<<<<<<<<<<<
+ *         convert_tuple(dims_tpl, dims, rank)
+ * 
+ */
+    __pyx_t_3 = __pyx_f_4h5py_5utils_emalloc(((sizeof(hsize_t)) * __pyx_v_rank)); if (unlikely(__pyx_t_3 == NULL && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L4;}
+    __pyx_v_dims = ((hsize_t *)__pyx_t_3);
+
+    /* "h5py/h5s.pyx":91
+ *     try:
+ *         dims = <hsize_t*>emalloc(sizeof(hsize_t)*rank)
+ *         convert_tuple(dims_tpl, dims, rank)             # <<<<<<<<<<<<<<
+ * 
+ *         if max_dims_tpl is not None:
+ */
+    __pyx_t_1 = __pyx_f_4h5py_5utils_convert_tuple(__pyx_v_dims_tpl, __pyx_v_dims, __pyx_v_rank); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L4;}
+
+    /* "h5py/h5s.pyx":93
+ *         convert_tuple(dims_tpl, dims, rank)
+ * 
+ *         if max_dims_tpl is not None:             # <<<<<<<<<<<<<<
+ *             max_dims = <hsize_t*>emalloc(sizeof(hsize_t)*rank)
+ *             convert_tuple(max_dims_tpl, max_dims, rank)
+ */
+    __pyx_t_4 = (__pyx_v_max_dims_tpl != Py_None);
+    if (__pyx_t_4) {
+
+      /* "h5py/h5s.pyx":94
+ * 
+ *         if max_dims_tpl is not None:
+ *             max_dims = <hsize_t*>emalloc(sizeof(hsize_t)*rank)             # <<<<<<<<<<<<<<
+ *             convert_tuple(max_dims_tpl, max_dims, rank)
+ * 
+ */
+      __pyx_t_3 = __pyx_f_4h5py_5utils_emalloc(((sizeof(hsize_t)) * __pyx_v_rank)); if (unlikely(__pyx_t_3 == NULL && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 94; __pyx_clineno = __LINE__; goto __pyx_L4;}
+      __pyx_v_max_dims = ((hsize_t *)__pyx_t_3);
+
+      /* "h5py/h5s.pyx":95
+ *         if max_dims_tpl is not None:
+ *             max_dims = <hsize_t*>emalloc(sizeof(hsize_t)*rank)
+ *             convert_tuple(max_dims_tpl, max_dims, rank)             # <<<<<<<<<<<<<<
+ * 
+ *         return SpaceID.open(H5Screate_simple(rank, dims, max_dims))
+ */
+      __pyx_t_1 = __pyx_f_4h5py_5utils_convert_tuple(__pyx_v_max_dims_tpl, __pyx_v_max_dims, __pyx_v_rank); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L4;}
+      goto __pyx_L6;
+    }
+    __pyx_L6:;
+
+    /* "h5py/h5s.pyx":97
+ *             convert_tuple(max_dims_tpl, max_dims, rank)
+ * 
+ *         return SpaceID.open(H5Screate_simple(rank, dims, max_dims))             # <<<<<<<<<<<<<<
+ * 
+ *     finally:
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_5 = PyObject_GetAttr(((PyObject *)((PyObject*)__pyx_ptype_4h5py_3h5s_SpaceID)), __pyx_n_s__open); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L4;}
+    __Pyx_GOTREF(__pyx_t_5);
+    __pyx_t_6 = __pyx_f_4h5py_4defs_H5Screate_simple(__pyx_v_rank, __pyx_v_dims, __pyx_v_max_dims); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L4;}
+    __pyx_t_7 = __Pyx_PyInt_to_py_hid_t(__pyx_t_6); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L4;}
+    __Pyx_GOTREF(__pyx_t_7);
+    __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L4;}
+    __Pyx_GOTREF(__pyx_t_8);
+    PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7);
+    __Pyx_GIVEREF(__pyx_t_7);
+    __pyx_t_7 = 0;
+    __pyx_t_7 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_t_8), NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L4;}
+    __Pyx_GOTREF(__pyx_t_7);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0;
+    __pyx_r = __pyx_t_7;
+    __pyx_t_7 = 0;
+    goto __pyx_L3;
+  }
+
+  /* "h5py/h5s.pyx":100
+ * 
+ *     finally:
+ *         efree(dims)             # <<<<<<<<<<<<<<
+ *         efree(max_dims)
+ * 
+ */
+  /*finally:*/ {
+    int __pyx_why;
+    PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb;
+    int __pyx_exc_lineno;
+    __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
+    __pyx_why = 0; goto __pyx_L5;
+    __pyx_L3: __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
+    __pyx_why = 3; goto __pyx_L5;
+    __pyx_L4: {
+      __pyx_why = 4;
+      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+      __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb);
+      __pyx_exc_lineno = __pyx_lineno;
+      goto __pyx_L5;
+    }
+    __pyx_L5:;
+    __pyx_f_4h5py_5utils_efree(__pyx_v_dims);
+
+    /* "h5py/h5s.pyx":101
+ *     finally:
+ *         efree(dims)
+ *         efree(max_dims)             # <<<<<<<<<<<<<<
+ * 
+ * def decode(buf):
+ */
+    __pyx_f_4h5py_5utils_efree(__pyx_v_max_dims);
+    switch (__pyx_why) {
+      case 3: goto __pyx_L0;
+      case 4: {
+        __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb);
+        __pyx_lineno = __pyx_exc_lineno;
+        __pyx_exc_type = 0;
+        __pyx_exc_value = 0;
+        __pyx_exc_tb = 0;
+        goto __pyx_L1_error;
+      }
+    }
+  }
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_XDECREF(__pyx_t_8);
+  __Pyx_AddTraceback("h5py.h5s.create_simple", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5s_5decode(PyObject *__pyx_self, PyObject *__pyx_v_buf); /*proto*/
+static char __pyx_doc_4h5py_3h5s_4decode[] = "(STRING buf) => SpaceID\n\n    Unserialize a dataspace.  Bear in mind you can also use the native\n    Python pickling machinery to do this.\n    ";
+static PyMethodDef __pyx_mdef_4h5py_3h5s_5decode = {__Pyx_NAMESTR("decode"), (PyCFunction)__pyx_pw_4h5py_3h5s_5decode, METH_O, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5s_4decode)};
+static PyObject *__pyx_pw_4h5py_3h5s_5decode(PyObject *__pyx_self, PyObject *__pyx_v_buf) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("decode (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5s_4decode(__pyx_self, ((PyObject *)__pyx_v_buf));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5s.pyx":103
+ *         efree(max_dims)
+ * 
+ * def decode(buf):             # <<<<<<<<<<<<<<
+ *     """(STRING buf) => SpaceID
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5s_4decode(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_buf) {
+  char *__pyx_v_buf_;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  char *__pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  hid_t __pyx_t_3;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("decode", 0);
+
+  /* "h5py/h5s.pyx":109
+ *     Python pickling machinery to do this.
+ *     """
+ *     cdef char* buf_ = buf             # <<<<<<<<<<<<<<
+ *     return SpaceID.open(H5Sdecode(buf_))
+ * 
+ */
+  __pyx_t_1 = PyBytes_AsString(__pyx_v_buf); if (unlikely((!__pyx_t_1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v_buf_ = __pyx_t_1;
+
+  /* "h5py/h5s.pyx":110
+ *     """
+ *     cdef char* buf_ = buf
+ *     return SpaceID.open(H5Sdecode(buf_))             # <<<<<<<<<<<<<<
+ * 
+ * # === H5S class API ===========================================================
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_2 = PyObject_GetAttr(((PyObject *)((PyObject*)__pyx_ptype_4h5py_3h5s_SpaceID)), __pyx_n_s__open); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = __pyx_f_4h5py_4defs_H5Sdecode(__pyx_v_buf_); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyInt_to_py_hid_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4);
+  __Pyx_GIVEREF(__pyx_t_4);
+  __pyx_t_4 = 0;
+  __pyx_t_4 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
+  __pyx_r = __pyx_t_4;
+  __pyx_t_4 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_AddTraceback("h5py.h5s.decode", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5s_7SpaceID_5shape_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4h5py_3h5s_7SpaceID_5shape_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5s_7SpaceID_5shape___get__(((struct __pyx_obj_4h5py_3h5s_SpaceID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5s.pyx":133
+ *         """ Numpy-style shape tuple representing dimensions.  () == scalar.
+ *         """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.get_simple_extent_dims()
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5s_7SpaceID_5shape___get__(struct __pyx_obj_4h5py_3h5s_SpaceID *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "h5py/h5s.pyx":134
+ *         """
+ *         def __get__(self):
+ *             return self.get_simple_extent_dims()             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 134; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 134; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5s.SpaceID.shape.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5s_7SpaceID_1_close(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5s_7SpaceID__close[] = "()\n\n        Terminate access through this identifier.  You shouldn't have to\n        call this manually; dataspace objects are automatically destroyed\n        when their Python wrappers are freed.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5s_7SpaceID_1_close(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("_close (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5s_7SpaceID__close(((struct __pyx_obj_4h5py_3h5s_SpaceID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5s.pyx":137
+ * 
+ * 
+ *     def _close(self):             # <<<<<<<<<<<<<<
+ *         """()
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5s_7SpaceID__close(struct __pyx_obj_4h5py_3h5s_SpaceID *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  herr_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_close", 0);
+
+  /* "h5py/h5s.pyx":144
+ *         when their Python wrappers are freed.
+ *         """
+ *         with _objects.registry.lock:             # <<<<<<<<<<<<<<
+ *             H5Sclose(self.id)
+ *             if not self.valid:
+ */
+  /*with:*/ {
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s___objects); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__registry); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __pyx_t_1 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__lock); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __pyx_t_3 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____exit__); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____enter__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_4 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    /*try:*/ {
+      {
+        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
+        __Pyx_XGOTREF(__pyx_t_5);
+        __Pyx_XGOTREF(__pyx_t_6);
+        __Pyx_XGOTREF(__pyx_t_7);
+        /*try:*/ {
+
+          /* "h5py/h5s.pyx":145
+ *         """
+ *         with _objects.registry.lock:
+ *             H5Sclose(self.id)             # <<<<<<<<<<<<<<
+ *             if not self.valid:
+ *                 del _objects.registry[self.id]
+ */
+          __pyx_t_8 = __pyx_f_4h5py_4defs_H5Sclose(__pyx_v_self->__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+
+          /* "h5py/h5s.pyx":146
+ *         with _objects.registry.lock:
+ *             H5Sclose(self.id)
+ *             if not self.valid:             # <<<<<<<<<<<<<<
+ *                 del _objects.registry[self.id]
+ * 
+ */
+          __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__valid); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __Pyx_GOTREF(__pyx_t_1);
+          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __pyx_t_10 = (!__pyx_t_9);
+          if (__pyx_t_10) {
+
+            /* "h5py/h5s.pyx":147
+ *             H5Sclose(self.id)
+ *             if not self.valid:
+ *                 del _objects.registry[self.id]             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+            __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s___objects); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 147; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            __Pyx_GOTREF(__pyx_t_1);
+            __pyx_t_4 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__registry); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 147; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            __Pyx_GOTREF(__pyx_t_4);
+            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+            if (__Pyx_DelItemInt(__pyx_t_4, __pyx_v_self->__pyx_base.id, sizeof(hid_t), __Pyx_PyInt_to_py_hid_t) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 147; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+        }
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        goto __pyx_L14_try_end;
+        __pyx_L7_error:;
+        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+        /* "h5py/h5s.pyx":144
+ *         when their Python wrappers are freed.
+ *         """
+ *         with _objects.registry.lock:             # <<<<<<<<<<<<<<
+ *             H5Sclose(self.id)
+ *             if not self.valid:
+ */
+        /*except:*/ {
+          __Pyx_AddTraceback("h5py.h5s.SpaceID._close", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_1, &__pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_GOTREF(__pyx_t_2);
+          __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_INCREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_4);
+          __Pyx_GIVEREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_1);
+          PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_1);
+          __Pyx_GIVEREF(__pyx_t_1);
+          __Pyx_INCREF(__pyx_t_2);
+          PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_2);
+          __Pyx_GIVEREF(__pyx_t_2);
+          __pyx_t_12 = PyObject_Call(__pyx_t_3, __pyx_t_11, NULL);
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __Pyx_GOTREF(__pyx_t_12);
+          __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_12);
+          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+          if (unlikely(__pyx_t_10 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+          __pyx_t_9 = (!__pyx_t_10);
+          if (__pyx_t_9) {
+            __Pyx_GIVEREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_1);
+            __Pyx_GIVEREF(__pyx_t_2);
+            __Pyx_ErrRestore(__pyx_t_4, __pyx_t_1, __pyx_t_2);
+            __pyx_t_4 = 0; __pyx_t_1 = 0; __pyx_t_2 = 0; 
+            {__pyx_filename = __pyx_f[0]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L9_except_error;}
+            goto __pyx_L18;
+          }
+          __pyx_L18:;
+          __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+          goto __pyx_L8_exception_handled;
+        }
+        __pyx_L9_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        goto __pyx_L1_error;
+        __pyx_L8_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_5);
+        __Pyx_XGIVEREF(__pyx_t_6);
+        __Pyx_XGIVEREF(__pyx_t_7);
+        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
+        __pyx_L14_try_end:;
+      }
+    }
+    /*finally:*/ {
+      if (__pyx_t_3) {
+        __pyx_t_7 = PyObject_Call(__pyx_t_3, __pyx_k_tuple_2, NULL);
+        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+        if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      }
+    }
+    goto __pyx_L19;
+    __pyx_L3_error:;
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    goto __pyx_L1_error;
+    __pyx_L19:;
+  }
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.h5s.SpaceID._close", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5s_7SpaceID_3copy(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5s_7SpaceID_2copy[] = "() => SpaceID\n\n        Create a new copy of this dataspace.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5s_7SpaceID_3copy(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("copy (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5s_7SpaceID_2copy(((struct __pyx_obj_4h5py_3h5s_SpaceID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5s.pyx":150
+ * 
+ * 
+ *     def copy(self):             # <<<<<<<<<<<<<<
+ *         """() => SpaceID
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5s_7SpaceID_2copy(struct __pyx_obj_4h5py_3h5s_SpaceID *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  hid_t __pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("copy", 0);
+
+  /* "h5py/h5s.pyx":155
+ *         Create a new copy of this dataspace.
+ *         """
+ *         return SpaceID.open(H5Scopy(self.id))             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyObject_GetAttr(((PyObject *)((PyObject*)__pyx_ptype_4h5py_3h5s_SpaceID)), __pyx_n_s__open); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 155; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __pyx_f_4h5py_4defs_H5Scopy(__pyx_v_self->__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 155; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyInt_to_py_hid_t(__pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 155; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 155; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_3);
+  __pyx_t_3 = 0;
+  __pyx_t_3 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 155; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
+  __pyx_r = __pyx_t_3;
+  __pyx_t_3 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("h5py.h5s.SpaceID.copy", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5s_7SpaceID_5encode(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5s_7SpaceID_4encode[] = "() => STRING\n\n        Serialize a dataspace, including its selection.  Bear in mind you\n        can also use the native Python pickling machinery to do this.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5s_7SpaceID_5encode(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("encode (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5s_7SpaceID_4encode(((struct __pyx_obj_4h5py_3h5s_SpaceID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5s.pyx":158
+ * 
+ * 
+ *     def encode(self):             # <<<<<<<<<<<<<<
+ *         """() => STRING
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5s_7SpaceID_4encode(struct __pyx_obj_4h5py_3h5s_SpaceID *__pyx_v_self) {
+  void *__pyx_v_buf;
+  size_t __pyx_v_nalloc;
+  PyObject *__pyx_v_pystr = NULL;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  void *__pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("encode", 0);
+
+  /* "h5py/h5s.pyx":164
+ *         can also use the native Python pickling machinery to do this.
+ *         """
+ *         cdef void* buf = NULL             # <<<<<<<<<<<<<<
+ *         cdef size_t nalloc = 0
+ * 
+ */
+  __pyx_v_buf = NULL;
+
+  /* "h5py/h5s.pyx":165
+ *         """
+ *         cdef void* buf = NULL
+ *         cdef size_t nalloc = 0             # <<<<<<<<<<<<<<
+ * 
+ *         H5Sencode(self.id, NULL, &nalloc)
+ */
+  __pyx_v_nalloc = 0;
+
+  /* "h5py/h5s.pyx":167
+ *         cdef size_t nalloc = 0
+ * 
+ *         H5Sencode(self.id, NULL, &nalloc)             # <<<<<<<<<<<<<<
+ *         buf = emalloc(nalloc)
+ *         try:
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Sencode(__pyx_v_self->__pyx_base.id, NULL, (&__pyx_v_nalloc)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5s.pyx":168
+ * 
+ *         H5Sencode(self.id, NULL, &nalloc)
+ *         buf = emalloc(nalloc)             # <<<<<<<<<<<<<<
+ *         try:
+ *             H5Sencode(self.id, buf, &nalloc)
+ */
+  __pyx_t_2 = __pyx_f_4h5py_5utils_emalloc(__pyx_v_nalloc); if (unlikely(__pyx_t_2 == NULL && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 168; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v_buf = __pyx_t_2;
+
+  /* "h5py/h5s.pyx":169
+ *         H5Sencode(self.id, NULL, &nalloc)
+ *         buf = emalloc(nalloc)
+ *         try:             # <<<<<<<<<<<<<<
+ *             H5Sencode(self.id, buf, &nalloc)
+ *             pystr = PyBytes_FromStringAndSize(<char*>buf, nalloc)
+ */
+  /*try:*/ {
+
+    /* "h5py/h5s.pyx":170
+ *         buf = emalloc(nalloc)
+ *         try:
+ *             H5Sencode(self.id, buf, &nalloc)             # <<<<<<<<<<<<<<
+ *             pystr = PyBytes_FromStringAndSize(<char*>buf, nalloc)
+ *         finally:
+ */
+    __pyx_t_1 = __pyx_f_4h5py_4defs_H5Sencode(__pyx_v_self->__pyx_base.id, __pyx_v_buf, (&__pyx_v_nalloc)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L4;}
+
+    /* "h5py/h5s.pyx":171
+ *         try:
+ *             H5Sencode(self.id, buf, &nalloc)
+ *             pystr = PyBytes_FromStringAndSize(<char*>buf, nalloc)             # <<<<<<<<<<<<<<
+ *         finally:
+ *             efree(buf)
+ */
+    __pyx_t_3 = PyBytes_FromStringAndSize(((char *)__pyx_v_buf), __pyx_v_nalloc); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 171; __pyx_clineno = __LINE__; goto __pyx_L4;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_v_pystr = __pyx_t_3;
+    __pyx_t_3 = 0;
+  }
+
+  /* "h5py/h5s.pyx":173
+ *             pystr = PyBytes_FromStringAndSize(<char*>buf, nalloc)
+ *         finally:
+ *             efree(buf)             # <<<<<<<<<<<<<<
+ * 
+ *         return pystr
+ */
+  /*finally:*/ {
+    int __pyx_why;
+    PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb;
+    int __pyx_exc_lineno;
+    __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
+    __pyx_why = 0; goto __pyx_L5;
+    __pyx_L4: {
+      __pyx_why = 4;
+      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb);
+      __pyx_exc_lineno = __pyx_lineno;
+      goto __pyx_L5;
+    }
+    __pyx_L5:;
+    __pyx_f_4h5py_5utils_efree(__pyx_v_buf);
+    switch (__pyx_why) {
+      case 4: {
+        __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb);
+        __pyx_lineno = __pyx_exc_lineno;
+        __pyx_exc_type = 0;
+        __pyx_exc_value = 0;
+        __pyx_exc_tb = 0;
+        goto __pyx_L1_error;
+      }
+    }
+  }
+
+  /* "h5py/h5s.pyx":175
+ *             efree(buf)
+ * 
+ *         return pystr             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_pystr);
+  __pyx_r = __pyx_v_pystr;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("h5py.h5s.SpaceID.encode", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_pystr);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5s_7SpaceID_7__reduce__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static PyObject *__pyx_pw_4h5py_3h5s_7SpaceID_7__reduce__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__reduce__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5s_7SpaceID_6__reduce__(((struct __pyx_obj_4h5py_3h5s_SpaceID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5s.pyx":178
+ * 
+ * 
+ *     def __reduce__(self):             # <<<<<<<<<<<<<<
+ *         return (type(self), (-1,), self.encode())
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5s_7SpaceID_6__reduce__(struct __pyx_obj_4h5py_3h5s_SpaceID *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__reduce__", 0);
+
+  /* "h5py/h5s.pyx":179
+ * 
+ *     def __reduce__(self):
+ *         return (type(self), (-1,), self.encode())             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__encode); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 179; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 179; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 179; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
+  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
+  __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
+  __Pyx_INCREF(((PyObject *)__pyx_k_tuple_3));
+  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_k_tuple_3));
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_3));
+  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_2);
+  __Pyx_GIVEREF(__pyx_t_2);
+  __pyx_t_2 = 0;
+  __pyx_r = ((PyObject *)__pyx_t_1);
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5s.SpaceID.__reduce__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5s_7SpaceID_9__setstate__(PyObject *__pyx_v_self, PyObject *__pyx_v_state); /*proto*/
+static PyObject *__pyx_pw_4h5py_3h5s_7SpaceID_9__setstate__(PyObject *__pyx_v_self, PyObject *__pyx_v_state) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__setstate__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5s_7SpaceID_8__setstate__(((struct __pyx_obj_4h5py_3h5s_SpaceID *)__pyx_v_self), ((PyObject *)__pyx_v_state));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5s.pyx":182
+ * 
+ * 
+ *     def __setstate__(self, state):             # <<<<<<<<<<<<<<
+ *         cdef char* buf = state
+ *         self.id = H5Sdecode(buf)
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5s_7SpaceID_8__setstate__(struct __pyx_obj_4h5py_3h5s_SpaceID *__pyx_v_self, PyObject *__pyx_v_state) {
+  char *__pyx_v_buf;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  char *__pyx_t_1;
+  hid_t __pyx_t_2;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__setstate__", 0);
+
+  /* "h5py/h5s.pyx":183
+ * 
+ *     def __setstate__(self, state):
+ *         cdef char* buf = state             # <<<<<<<<<<<<<<
+ *         self.id = H5Sdecode(buf)
+ * 
+ */
+  __pyx_t_1 = PyBytes_AsString(__pyx_v_state); if (unlikely((!__pyx_t_1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 183; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v_buf = __pyx_t_1;
+
+  /* "h5py/h5s.pyx":184
+ *     def __setstate__(self, state):
+ *         cdef char* buf = state
+ *         self.id = H5Sdecode(buf)             # <<<<<<<<<<<<<<
+ * 
+ *     # === Simple dataspaces ===================================================
+ */
+  __pyx_t_2 = __pyx_f_4h5py_4defs_H5Sdecode(__pyx_v_buf); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v_self->__pyx_base.id = __pyx_t_2;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py.h5s.SpaceID.__setstate__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5s_7SpaceID_11is_simple(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5s_7SpaceID_10is_simple[] = "() => BOOL is_simple\n\n        Determine if an existing dataspace is \"simple\" (including scalar\n        dataspaces). Currently all HDF5 dataspaces are simple.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5s_7SpaceID_11is_simple(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("is_simple (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5s_7SpaceID_10is_simple(((struct __pyx_obj_4h5py_3h5s_SpaceID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5s.pyx":189
+ * 
+ * 
+ *     def is_simple(self):             # <<<<<<<<<<<<<<
+ *         """() => BOOL is_simple
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5s_7SpaceID_10is_simple(struct __pyx_obj_4h5py_3h5s_SpaceID *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  htri_t __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("is_simple", 0);
+
+  /* "h5py/h5s.pyx":195
+ *         dataspaces). Currently all HDF5 dataspaces are simple.
+ *         """
+ *         return <bint>(H5Sis_simple(self.id))             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Sis_simple(__pyx_v_self->__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 195; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyBool_FromLong(((int)__pyx_t_1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 195; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5s.SpaceID.is_simple", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5s_7SpaceID_13offset_simple(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_4h5py_3h5s_7SpaceID_12offset_simple[] = "(TUPLE offset=None)\n\n        Set the offset of a dataspace.  The length of the given tuple must\n        match the rank of the dataspace. If None is provided (default),\n        the offsets on all axes will be set to 0.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5s_7SpaceID_13offset_simple(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_offset = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("offset_simple (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__offset,0};
+    PyObject* values[1] = {0};
+
+    /* "h5py/h5s.pyx":198
+ * 
+ * 
+ *     def offset_simple(self, object offset=None):             # <<<<<<<<<<<<<<
+ *         """(TUPLE offset=None)
+ * 
+ */
+    values[0] = ((PyObject *)Py_None);
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__offset);
+          if (value) { values[0] = value; kw_args--; }
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "offset_simple") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 198; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else {
+      switch (PyTuple_GET_SIZE(__pyx_args)) {
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+    }
+    __pyx_v_offset = values[0];
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("offset_simple", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 198; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5s.SpaceID.offset_simple", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_3h5s_7SpaceID_12offset_simple(((struct __pyx_obj_4h5py_3h5s_SpaceID *)__pyx_v_self), __pyx_v_offset);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_4h5py_3h5s_7SpaceID_12offset_simple(struct __pyx_obj_4h5py_3h5s_SpaceID *__pyx_v_self, PyObject *__pyx_v_offset) {
+  int __pyx_v_rank;
+  int __pyx_v_i;
+  hssize_t *__pyx_v_dims;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  htri_t __pyx_t_1;
+  int __pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  int __pyx_t_5;
+  void *__pyx_t_6;
+  herr_t __pyx_t_7;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("offset_simple", 0);
+
+  /* "h5py/h5s.pyx":207
+ *         cdef int rank
+ *         cdef int i
+ *         cdef hssize_t *dims = NULL             # <<<<<<<<<<<<<<
+ * 
+ *         try:
+ */
+  __pyx_v_dims = NULL;
+
+  /* "h5py/h5s.pyx":209
+ *         cdef hssize_t *dims = NULL
+ * 
+ *         try:             # <<<<<<<<<<<<<<
+ *             if not H5Sis_simple(self.id):
+ *                 raise ValueError("%d is not a simple dataspace" % self.id)
+ */
+  /*try:*/ {
+
+    /* "h5py/h5s.pyx":210
+ * 
+ *         try:
+ *             if not H5Sis_simple(self.id):             # <<<<<<<<<<<<<<
+ *                 raise ValueError("%d is not a simple dataspace" % self.id)
+ * 
+ */
+    __pyx_t_1 = __pyx_f_4h5py_4defs_H5Sis_simple(__pyx_v_self->__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L4;}
+    __pyx_t_2 = (!__pyx_t_1);
+    if (__pyx_t_2) {
+
+      /* "h5py/h5s.pyx":211
+ *         try:
+ *             if not H5Sis_simple(self.id):
+ *                 raise ValueError("%d is not a simple dataspace" % self.id)             # <<<<<<<<<<<<<<
+ * 
+ *             rank = H5Sget_simple_extent_ndims(self.id)
+ */
+      __pyx_t_3 = __Pyx_PyInt_to_py_hid_t(__pyx_v_self->__pyx_base.id); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 211; __pyx_clineno = __LINE__; goto __pyx_L4;}
+      __Pyx_GOTREF(__pyx_t_3);
+      __pyx_t_4 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_4), __pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 211; __pyx_clineno = __LINE__; goto __pyx_L4;}
+      __Pyx_GOTREF(((PyObject *)__pyx_t_4));
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 211; __pyx_clineno = __LINE__; goto __pyx_L4;}
+      __Pyx_GOTREF(__pyx_t_3);
+      PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_t_4));
+      __Pyx_GIVEREF(((PyObject *)__pyx_t_4));
+      __pyx_t_4 = 0;
+      __pyx_t_4 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 211; __pyx_clineno = __LINE__; goto __pyx_L4;}
+      __Pyx_GOTREF(__pyx_t_4);
+      __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
+      __Pyx_Raise(__pyx_t_4, 0, 0, 0);
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 211; __pyx_clineno = __LINE__; goto __pyx_L4;}
+      goto __pyx_L6;
+    }
+    __pyx_L6:;
+
+    /* "h5py/h5s.pyx":213
+ *                 raise ValueError("%d is not a simple dataspace" % self.id)
+ * 
+ *             rank = H5Sget_simple_extent_ndims(self.id)             # <<<<<<<<<<<<<<
+ * 
+ *             require_tuple(offset, 1, rank, "offset")
+ */
+    __pyx_t_5 = __pyx_f_4h5py_4defs_H5Sget_simple_extent_ndims(__pyx_v_self->__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 213; __pyx_clineno = __LINE__; goto __pyx_L4;}
+    __pyx_v_rank = __pyx_t_5;
+
+    /* "h5py/h5s.pyx":215
+ *             rank = H5Sget_simple_extent_ndims(self.id)
+ * 
+ *             require_tuple(offset, 1, rank, "offset")             # <<<<<<<<<<<<<<
+ *             dims = <hssize_t*>emalloc(sizeof(hssize_t)*rank)
+ *             if(offset is not None):
+ */
+    __pyx_t_5 = __pyx_f_4h5py_5utils_require_tuple(__pyx_v_offset, 1, __pyx_v_rank, __pyx_k__offset); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 215; __pyx_clineno = __LINE__; goto __pyx_L4;}
+
+    /* "h5py/h5s.pyx":216
+ * 
+ *             require_tuple(offset, 1, rank, "offset")
+ *             dims = <hssize_t*>emalloc(sizeof(hssize_t)*rank)             # <<<<<<<<<<<<<<
+ *             if(offset is not None):
+ *                 convert_tuple(offset, <hsize_t*>dims, rank)
+ */
+    __pyx_t_6 = __pyx_f_4h5py_5utils_emalloc(((sizeof(hssize_t)) * __pyx_v_rank)); if (unlikely(__pyx_t_6 == NULL && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 216; __pyx_clineno = __LINE__; goto __pyx_L4;}
+    __pyx_v_dims = ((hssize_t *)__pyx_t_6);
+
+    /* "h5py/h5s.pyx":217
+ *             require_tuple(offset, 1, rank, "offset")
+ *             dims = <hssize_t*>emalloc(sizeof(hssize_t)*rank)
+ *             if(offset is not None):             # <<<<<<<<<<<<<<
+ *                 convert_tuple(offset, <hsize_t*>dims, rank)
+ *             else:
+ */
+    __pyx_t_2 = (__pyx_v_offset != Py_None);
+    if (__pyx_t_2) {
+
+      /* "h5py/h5s.pyx":218
+ *             dims = <hssize_t*>emalloc(sizeof(hssize_t)*rank)
+ *             if(offset is not None):
+ *                 convert_tuple(offset, <hsize_t*>dims, rank)             # <<<<<<<<<<<<<<
+ *             else:
+ *                 # The HDF5 docs say passing in NULL resets the offset to 0.
+ */
+      __pyx_t_5 = __pyx_f_4h5py_5utils_convert_tuple(__pyx_v_offset, ((hsize_t *)__pyx_v_dims), __pyx_v_rank); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 218; __pyx_clineno = __LINE__; goto __pyx_L4;}
+      goto __pyx_L7;
+    }
+    /*else*/ {
+
+      /* "h5py/h5s.pyx":223
+ *                 # Instead it raises an exception.  Imagine my surprise. We'll
+ *                 # do this manually.
+ *                 for i from 0<=i<rank:             # <<<<<<<<<<<<<<
+ *                     dims[i] = 0
+ * 
+ */
+      __pyx_t_5 = __pyx_v_rank;
+      for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_5; __pyx_v_i++) {
+
+        /* "h5py/h5s.pyx":224
+ *                 # do this manually.
+ *                 for i from 0<=i<rank:
+ *                     dims[i] = 0             # <<<<<<<<<<<<<<
+ * 
+ *             H5Soffset_simple(self.id, dims)
+ */
+        (__pyx_v_dims[__pyx_v_i]) = 0;
+      }
+    }
+    __pyx_L7:;
+
+    /* "h5py/h5s.pyx":226
+ *                     dims[i] = 0
+ * 
+ *             H5Soffset_simple(self.id, dims)             # <<<<<<<<<<<<<<
+ * 
+ *         finally:
+ */
+    __pyx_t_7 = __pyx_f_4h5py_4defs_H5Soffset_simple(__pyx_v_self->__pyx_base.id, __pyx_v_dims); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 226; __pyx_clineno = __LINE__; goto __pyx_L4;}
+  }
+
+  /* "h5py/h5s.pyx":229
+ * 
+ *         finally:
+ *             efree(dims)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  /*finally:*/ {
+    int __pyx_why;
+    PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb;
+    int __pyx_exc_lineno;
+    __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
+    __pyx_why = 0; goto __pyx_L5;
+    __pyx_L4: {
+      __pyx_why = 4;
+      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb);
+      __pyx_exc_lineno = __pyx_lineno;
+      goto __pyx_L5;
+    }
+    __pyx_L5:;
+    __pyx_f_4h5py_5utils_efree(__pyx_v_dims);
+    switch (__pyx_why) {
+      case 4: {
+        __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb);
+        __pyx_lineno = __pyx_exc_lineno;
+        __pyx_exc_type = 0;
+        __pyx_exc_value = 0;
+        __pyx_exc_tb = 0;
+        goto __pyx_L1_error;
+      }
+    }
+  }
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("h5py.h5s.SpaceID.offset_simple", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5s_7SpaceID_15get_simple_extent_ndims(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5s_7SpaceID_14get_simple_extent_ndims[] = "() => INT rank\n\n        Determine the rank of a \"simple\" (slab) dataspace.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5s_7SpaceID_15get_simple_extent_ndims(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_simple_extent_ndims (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5s_7SpaceID_14get_simple_extent_ndims(((struct __pyx_obj_4h5py_3h5s_SpaceID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5s.pyx":232
+ * 
+ * 
+ *     def get_simple_extent_ndims(self):             # <<<<<<<<<<<<<<
+ *         """() => INT rank
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5s_7SpaceID_14get_simple_extent_ndims(struct __pyx_obj_4h5py_3h5s_SpaceID *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_simple_extent_ndims", 0);
+
+  /* "h5py/h5s.pyx":237
+ *         Determine the rank of a "simple" (slab) dataspace.
+ *         """
+ *         return H5Sget_simple_extent_ndims(self.id)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Sget_simple_extent_ndims(__pyx_v_self->__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 237; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyInt_FromLong(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 237; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5s.SpaceID.get_simple_extent_ndims", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5s_7SpaceID_17get_simple_extent_dims(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_4h5py_3h5s_7SpaceID_16get_simple_extent_dims[] = "(BOOL maxdims=False) => TUPLE shape\n\n        Determine the shape of a \"simple\" (slab) dataspace.  If \"maxdims\"\n        is True, retrieve the maximum dataspace size instead.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5s_7SpaceID_17get_simple_extent_dims(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  int __pyx_v_maxdims;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_simple_extent_dims (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__maxdims,0};
+    PyObject* values[1] = {0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__maxdims);
+          if (value) { values[0] = value; kw_args--; }
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_simple_extent_dims") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 240; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else {
+      switch (PyTuple_GET_SIZE(__pyx_args)) {
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+    }
+    if (values[0]) {
+      __pyx_v_maxdims = __Pyx_PyInt_AsInt(values[0]); if (unlikely((__pyx_v_maxdims == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 240; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    } else {
+      __pyx_v_maxdims = ((int)0);
+    }
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("get_simple_extent_dims", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 240; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5s.SpaceID.get_simple_extent_dims", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_3h5s_7SpaceID_16get_simple_extent_dims(((struct __pyx_obj_4h5py_3h5s_SpaceID *)__pyx_v_self), __pyx_v_maxdims);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5s.pyx":240
+ * 
+ * 
+ *     def get_simple_extent_dims(self, int maxdims=0):             # <<<<<<<<<<<<<<
+ *         """(BOOL maxdims=False) => TUPLE shape
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5s_7SpaceID_16get_simple_extent_dims(struct __pyx_obj_4h5py_3h5s_SpaceID *__pyx_v_self, int __pyx_v_maxdims) {
+  int __pyx_v_rank;
+  hsize_t *__pyx_v_dims;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  void *__pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_simple_extent_dims", 0);
+
+  /* "h5py/h5s.pyx":247
+ *         """
+ *         cdef int rank
+ *         cdef hsize_t* dims = NULL             # <<<<<<<<<<<<<<
+ * 
+ *         rank = H5Sget_simple_extent_dims(self.id, NULL, NULL)
+ */
+  __pyx_v_dims = NULL;
+
+  /* "h5py/h5s.pyx":249
+ *         cdef hsize_t* dims = NULL
+ * 
+ *         rank = H5Sget_simple_extent_dims(self.id, NULL, NULL)             # <<<<<<<<<<<<<<
+ * 
+ *         dims = <hsize_t*>emalloc(sizeof(hsize_t)*rank)
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Sget_simple_extent_dims(__pyx_v_self->__pyx_base.id, NULL, NULL); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v_rank = __pyx_t_1;
+
+  /* "h5py/h5s.pyx":251
+ *         rank = H5Sget_simple_extent_dims(self.id, NULL, NULL)
+ * 
+ *         dims = <hsize_t*>emalloc(sizeof(hsize_t)*rank)             # <<<<<<<<<<<<<<
+ *         try:
+ *             if maxdims:
+ */
+  __pyx_t_2 = __pyx_f_4h5py_5utils_emalloc(((sizeof(hsize_t)) * __pyx_v_rank)); if (unlikely(__pyx_t_2 == NULL && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v_dims = ((hsize_t *)__pyx_t_2);
+
+  /* "h5py/h5s.pyx":252
+ * 
+ *         dims = <hsize_t*>emalloc(sizeof(hsize_t)*rank)
+ *         try:             # <<<<<<<<<<<<<<
+ *             if maxdims:
+ *                 H5Sget_simple_extent_dims(self.id, NULL, dims)
+ */
+  /*try:*/ {
+
+    /* "h5py/h5s.pyx":253
+ *         dims = <hsize_t*>emalloc(sizeof(hsize_t)*rank)
+ *         try:
+ *             if maxdims:             # <<<<<<<<<<<<<<
+ *                 H5Sget_simple_extent_dims(self.id, NULL, dims)
+ *             else:
+ */
+    if (__pyx_v_maxdims) {
+
+      /* "h5py/h5s.pyx":254
+ *         try:
+ *             if maxdims:
+ *                 H5Sget_simple_extent_dims(self.id, NULL, dims)             # <<<<<<<<<<<<<<
+ *             else:
+ *                 H5Sget_simple_extent_dims(self.id, dims, NULL)
+ */
+      __pyx_t_1 = __pyx_f_4h5py_4defs_H5Sget_simple_extent_dims(__pyx_v_self->__pyx_base.id, NULL, __pyx_v_dims); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 254; __pyx_clineno = __LINE__; goto __pyx_L4;}
+      goto __pyx_L6;
+    }
+    /*else*/ {
+
+      /* "h5py/h5s.pyx":256
+ *                 H5Sget_simple_extent_dims(self.id, NULL, dims)
+ *             else:
+ *                 H5Sget_simple_extent_dims(self.id, dims, NULL)             # <<<<<<<<<<<<<<
+ * 
+ *             return convert_dims(dims, rank)
+ */
+      __pyx_t_1 = __pyx_f_4h5py_4defs_H5Sget_simple_extent_dims(__pyx_v_self->__pyx_base.id, __pyx_v_dims, NULL); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 256; __pyx_clineno = __LINE__; goto __pyx_L4;}
+    }
+    __pyx_L6:;
+
+    /* "h5py/h5s.pyx":258
+ *                 H5Sget_simple_extent_dims(self.id, dims, NULL)
+ * 
+ *             return convert_dims(dims, rank)             # <<<<<<<<<<<<<<
+ * 
+ *         finally:
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_3 = __pyx_f_4h5py_5utils_convert_dims(__pyx_v_dims, __pyx_v_rank); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 258; __pyx_clineno = __LINE__; goto __pyx_L4;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_r = __pyx_t_3;
+    __pyx_t_3 = 0;
+    goto __pyx_L3;
+  }
+
+  /* "h5py/h5s.pyx":261
+ * 
+ *         finally:
+ *             efree(dims)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  /*finally:*/ {
+    int __pyx_why;
+    PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb;
+    int __pyx_exc_lineno;
+    __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
+    __pyx_why = 0; goto __pyx_L5;
+    __pyx_L3: __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
+    __pyx_why = 3; goto __pyx_L5;
+    __pyx_L4: {
+      __pyx_why = 4;
+      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb);
+      __pyx_exc_lineno = __pyx_lineno;
+      goto __pyx_L5;
+    }
+    __pyx_L5:;
+    __pyx_f_4h5py_5utils_efree(__pyx_v_dims);
+    switch (__pyx_why) {
+      case 3: goto __pyx_L0;
+      case 4: {
+        __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb);
+        __pyx_lineno = __pyx_exc_lineno;
+        __pyx_exc_type = 0;
+        __pyx_exc_value = 0;
+        __pyx_exc_tb = 0;
+        goto __pyx_L1_error;
+      }
+    }
+  }
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("h5py.h5s.SpaceID.get_simple_extent_dims", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5s_7SpaceID_19get_simple_extent_npoints(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5s_7SpaceID_18get_simple_extent_npoints[] = "() => LONG npoints\n\n        Determine the total number of elements in a dataspace.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5s_7SpaceID_19get_simple_extent_npoints(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_simple_extent_npoints (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5s_7SpaceID_18get_simple_extent_npoints(((struct __pyx_obj_4h5py_3h5s_SpaceID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5s.pyx":264
+ * 
+ * 
+ *     def get_simple_extent_npoints(self):             # <<<<<<<<<<<<<<
+ *         """() => LONG npoints
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5s_7SpaceID_18get_simple_extent_npoints(struct __pyx_obj_4h5py_3h5s_SpaceID *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  hssize_t __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_simple_extent_npoints", 0);
+
+  /* "h5py/h5s.pyx":269
+ *         Determine the total number of elements in a dataspace.
+ *         """
+ *         return H5Sget_simple_extent_npoints(self.id)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Sget_simple_extent_npoints(__pyx_v_self->__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 269; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyInt_to_py_hssize_t(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 269; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5s.SpaceID.get_simple_extent_npoints", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5s_7SpaceID_21get_simple_extent_type(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5s_7SpaceID_20get_simple_extent_type[] = "() => INT class_code\n\n        Class code is either SCALAR or SIMPLE.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5s_7SpaceID_21get_simple_extent_type(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_simple_extent_type (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5s_7SpaceID_20get_simple_extent_type(((struct __pyx_obj_4h5py_3h5s_SpaceID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5s.pyx":272
+ * 
+ * 
+ *     def get_simple_extent_type(self):             # <<<<<<<<<<<<<<
+ *         """() => INT class_code
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5s_7SpaceID_20get_simple_extent_type(struct __pyx_obj_4h5py_3h5s_SpaceID *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  H5S_class_t __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_simple_extent_type", 0);
+
+  /* "h5py/h5s.pyx":277
+ *         Class code is either SCALAR or SIMPLE.
+ *         """
+ *         return <int>H5Sget_simple_extent_type(self.id)             # <<<<<<<<<<<<<<
+ * 
+ *     # === Extents =============================================================
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Sget_simple_extent_type(__pyx_v_self->__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 277; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyInt_FromLong(((int)__pyx_t_1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 277; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5s.SpaceID.get_simple_extent_type", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5s_7SpaceID_23extent_copy(PyObject *__pyx_v_self, PyObject *__pyx_v_source); /*proto*/
+static char __pyx_doc_4h5py_3h5s_7SpaceID_22extent_copy[] = "(SpaceID source)\n\n        Replace this dataspace's extent with another's, changing its\n        typecode if necessary.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5s_7SpaceID_23extent_copy(PyObject *__pyx_v_self, PyObject *__pyx_v_source) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("extent_copy (wrapper)", 0);
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_source), __pyx_ptype_4h5py_3h5s_SpaceID, 0, "source", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 282; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_pf_4h5py_3h5s_7SpaceID_22extent_copy(((struct __pyx_obj_4h5py_3h5s_SpaceID *)__pyx_v_self), ((struct __pyx_obj_4h5py_3h5s_SpaceID *)__pyx_v_source));
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5s.pyx":282
+ * 
+ * 
+ *     def extent_copy(self, SpaceID source not None):             # <<<<<<<<<<<<<<
+ *         """(SpaceID source)
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5s_7SpaceID_22extent_copy(struct __pyx_obj_4h5py_3h5s_SpaceID *__pyx_v_self, struct __pyx_obj_4h5py_3h5s_SpaceID *__pyx_v_source) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("extent_copy", 0);
+
+  /* "h5py/h5s.pyx":288
+ *         typecode if necessary.
+ *         """
+ *         H5Sextent_copy(self.id, source.id)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Sextent_copy(__pyx_v_self->__pyx_base.id, __pyx_v_source->__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py.h5s.SpaceID.extent_copy", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5s_7SpaceID_25set_extent_simple(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_4h5py_3h5s_7SpaceID_24set_extent_simple[] = "(TUPLE dims_tpl, TUPLE max_dims_tpl=None)\n\n        Reset the dataspace extent via a tuple of dimensions.\n        Every element of dims_tpl must be a positive integer.\n\n        You can optionally specify the maximum dataspace size. The\n        special value UNLIMITED, as an element of max_dims, indicates\n        an unlimited dimension.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5s_7SpaceID_25set_extent_simple(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_dims_tpl = 0;
+  PyObject *__pyx_v_max_dims_tpl = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("set_extent_simple (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__dims_tpl,&__pyx_n_s__max_dims_tpl,0};
+    PyObject* values[2] = {0,0};
+
+    /* "h5py/h5s.pyx":291
+ * 
+ * 
+ *     def set_extent_simple(self, object dims_tpl, object max_dims_tpl=None):             # <<<<<<<<<<<<<<
+ *         """(TUPLE dims_tpl, TUPLE max_dims_tpl=None)
+ * 
+ */
+    values[1] = ((PyObject *)Py_None);
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__dims_tpl)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__max_dims_tpl);
+          if (value) { values[1] = value; kw_args--; }
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_extent_simple") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 291; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else {
+      switch (PyTuple_GET_SIZE(__pyx_args)) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+    }
+    __pyx_v_dims_tpl = values[0];
+    __pyx_v_max_dims_tpl = values[1];
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("set_extent_simple", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 291; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5s.SpaceID.set_extent_simple", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_3h5s_7SpaceID_24set_extent_simple(((struct __pyx_obj_4h5py_3h5s_SpaceID *)__pyx_v_self), __pyx_v_dims_tpl, __pyx_v_max_dims_tpl);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_4h5py_3h5s_7SpaceID_24set_extent_simple(struct __pyx_obj_4h5py_3h5s_SpaceID *__pyx_v_self, PyObject *__pyx_v_dims_tpl, PyObject *__pyx_v_max_dims_tpl) {
+  int __pyx_v_rank;
+  hsize_t *__pyx_v_dims;
+  hsize_t *__pyx_v_max_dims;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  Py_ssize_t __pyx_t_2;
+  void *__pyx_t_3;
+  int __pyx_t_4;
+  herr_t __pyx_t_5;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("set_extent_simple", 0);
+
+  /* "h5py/h5s.pyx":302
+ *         """
+ *         cdef int rank
+ *         cdef hsize_t* dims = NULL             # <<<<<<<<<<<<<<
+ *         cdef hsize_t* max_dims = NULL
+ * 
+ */
+  __pyx_v_dims = NULL;
+
+  /* "h5py/h5s.pyx":303
+ *         cdef int rank
+ *         cdef hsize_t* dims = NULL
+ *         cdef hsize_t* max_dims = NULL             # <<<<<<<<<<<<<<
+ * 
+ *         require_tuple(dims_tpl, 0, -1, "dims_tpl")
+ */
+  __pyx_v_max_dims = NULL;
+
+  /* "h5py/h5s.pyx":305
+ *         cdef hsize_t* max_dims = NULL
+ * 
+ *         require_tuple(dims_tpl, 0, -1, "dims_tpl")             # <<<<<<<<<<<<<<
+ *         rank = len(dims_tpl)
+ *         require_tuple(max_dims_tpl, 1, rank, "max_dims_tpl")
+ */
+  __pyx_t_1 = __pyx_f_4h5py_5utils_require_tuple(__pyx_v_dims_tpl, 0, -1, __pyx_k__dims_tpl); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5s.pyx":306
+ * 
+ *         require_tuple(dims_tpl, 0, -1, "dims_tpl")
+ *         rank = len(dims_tpl)             # <<<<<<<<<<<<<<
+ *         require_tuple(max_dims_tpl, 1, rank, "max_dims_tpl")
+ * 
+ */
+  __pyx_t_2 = PyObject_Length(__pyx_v_dims_tpl); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 306; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v_rank = __pyx_t_2;
+
+  /* "h5py/h5s.pyx":307
+ *         require_tuple(dims_tpl, 0, -1, "dims_tpl")
+ *         rank = len(dims_tpl)
+ *         require_tuple(max_dims_tpl, 1, rank, "max_dims_tpl")             # <<<<<<<<<<<<<<
+ * 
+ *         try:
+ */
+  __pyx_t_1 = __pyx_f_4h5py_5utils_require_tuple(__pyx_v_max_dims_tpl, 1, __pyx_v_rank, __pyx_k__max_dims_tpl); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 307; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5s.pyx":309
+ *         require_tuple(max_dims_tpl, 1, rank, "max_dims_tpl")
+ * 
+ *         try:             # <<<<<<<<<<<<<<
+ *             dims = <hsize_t*>emalloc(sizeof(hsize_t)*rank)
+ *             convert_tuple(dims_tpl, dims, rank)
+ */
+  /*try:*/ {
+
+    /* "h5py/h5s.pyx":310
+ * 
+ *         try:
+ *             dims = <hsize_t*>emalloc(sizeof(hsize_t)*rank)             # <<<<<<<<<<<<<<
+ *             convert_tuple(dims_tpl, dims, rank)
+ * 
+ */
+    __pyx_t_3 = __pyx_f_4h5py_5utils_emalloc(((sizeof(hsize_t)) * __pyx_v_rank)); if (unlikely(__pyx_t_3 == NULL && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 310; __pyx_clineno = __LINE__; goto __pyx_L4;}
+    __pyx_v_dims = ((hsize_t *)__pyx_t_3);
+
+    /* "h5py/h5s.pyx":311
+ *         try:
+ *             dims = <hsize_t*>emalloc(sizeof(hsize_t)*rank)
+ *             convert_tuple(dims_tpl, dims, rank)             # <<<<<<<<<<<<<<
+ * 
+ *             if max_dims_tpl is not None:
+ */
+    __pyx_t_1 = __pyx_f_4h5py_5utils_convert_tuple(__pyx_v_dims_tpl, __pyx_v_dims, __pyx_v_rank); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 311; __pyx_clineno = __LINE__; goto __pyx_L4;}
+
+    /* "h5py/h5s.pyx":313
+ *             convert_tuple(dims_tpl, dims, rank)
+ * 
+ *             if max_dims_tpl is not None:             # <<<<<<<<<<<<<<
+ *                 max_dims = <hsize_t*>emalloc(sizeof(hsize_t)*rank)
+ *                 convert_tuple(max_dims_tpl, max_dims, rank)
+ */
+    __pyx_t_4 = (__pyx_v_max_dims_tpl != Py_None);
+    if (__pyx_t_4) {
+
+      /* "h5py/h5s.pyx":314
+ * 
+ *             if max_dims_tpl is not None:
+ *                 max_dims = <hsize_t*>emalloc(sizeof(hsize_t)*rank)             # <<<<<<<<<<<<<<
+ *                 convert_tuple(max_dims_tpl, max_dims, rank)
+ * 
+ */
+      __pyx_t_3 = __pyx_f_4h5py_5utils_emalloc(((sizeof(hsize_t)) * __pyx_v_rank)); if (unlikely(__pyx_t_3 == NULL && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 314; __pyx_clineno = __LINE__; goto __pyx_L4;}
+      __pyx_v_max_dims = ((hsize_t *)__pyx_t_3);
+
+      /* "h5py/h5s.pyx":315
+ *             if max_dims_tpl is not None:
+ *                 max_dims = <hsize_t*>emalloc(sizeof(hsize_t)*rank)
+ *                 convert_tuple(max_dims_tpl, max_dims, rank)             # <<<<<<<<<<<<<<
+ * 
+ *             H5Sset_extent_simple(self.id, rank, dims, max_dims)
+ */
+      __pyx_t_1 = __pyx_f_4h5py_5utils_convert_tuple(__pyx_v_max_dims_tpl, __pyx_v_max_dims, __pyx_v_rank); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 315; __pyx_clineno = __LINE__; goto __pyx_L4;}
+      goto __pyx_L6;
+    }
+    __pyx_L6:;
+
+    /* "h5py/h5s.pyx":317
+ *                 convert_tuple(max_dims_tpl, max_dims, rank)
+ * 
+ *             H5Sset_extent_simple(self.id, rank, dims, max_dims)             # <<<<<<<<<<<<<<
+ * 
+ *         finally:
+ */
+    __pyx_t_5 = __pyx_f_4h5py_4defs_H5Sset_extent_simple(__pyx_v_self->__pyx_base.id, __pyx_v_rank, __pyx_v_dims, __pyx_v_max_dims); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L4;}
+  }
+
+  /* "h5py/h5s.pyx":320
+ * 
+ *         finally:
+ *             efree(dims)             # <<<<<<<<<<<<<<
+ *             efree(max_dims)
+ * 
+ */
+  /*finally:*/ {
+    int __pyx_why;
+    PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb;
+    int __pyx_exc_lineno;
+    __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
+    __pyx_why = 0; goto __pyx_L5;
+    __pyx_L4: {
+      __pyx_why = 4;
+      __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb);
+      __pyx_exc_lineno = __pyx_lineno;
+      goto __pyx_L5;
+    }
+    __pyx_L5:;
+    __pyx_f_4h5py_5utils_efree(__pyx_v_dims);
+
+    /* "h5py/h5s.pyx":321
+ *         finally:
+ *             efree(dims)
+ *             efree(max_dims)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+    __pyx_f_4h5py_5utils_efree(__pyx_v_max_dims);
+    switch (__pyx_why) {
+      case 4: {
+        __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb);
+        __pyx_lineno = __pyx_exc_lineno;
+        __pyx_exc_type = 0;
+        __pyx_exc_value = 0;
+        __pyx_exc_tb = 0;
+        goto __pyx_L1_error;
+      }
+    }
+  }
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py.h5s.SpaceID.set_extent_simple", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5s_7SpaceID_27set_extent_none(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5s_7SpaceID_26set_extent_none[] = "()\n\n        Remove the dataspace extent; typecode changes to NO_CLASS.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5s_7SpaceID_27set_extent_none(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("set_extent_none (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5s_7SpaceID_26set_extent_none(((struct __pyx_obj_4h5py_3h5s_SpaceID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5s.pyx":324
+ * 
+ * 
+ *     def set_extent_none(self):             # <<<<<<<<<<<<<<
+ *         """()
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5s_7SpaceID_26set_extent_none(struct __pyx_obj_4h5py_3h5s_SpaceID *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("set_extent_none", 0);
+
+  /* "h5py/h5s.pyx":329
+ *         Remove the dataspace extent; typecode changes to NO_CLASS.
+ *         """
+ *         H5Sset_extent_none(self.id)             # <<<<<<<<<<<<<<
+ * 
+ *     # === General selection operations ========================================
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Sset_extent_none(__pyx_v_self->__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 329; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py.h5s.SpaceID.set_extent_none", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5s_7SpaceID_29get_select_type(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5s_7SpaceID_28get_select_type[] = " () => INT select_code\n\n            Determine selection type.  Return values are:\n\n            - SEL_NONE\n            - SEL_ALL\n            - SEL_POINTS\n            - SEL_HYPERSLABS\n        ";
+static PyObject *__pyx_pw_4h5py_3h5s_7SpaceID_29get_select_type(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_select_type (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5s_7SpaceID_28get_select_type(((struct __pyx_obj_4h5py_3h5s_SpaceID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5s.pyx":334
+ * 
+ * 
+ *     def get_select_type(self):             # <<<<<<<<<<<<<<
+ *         """ () => INT select_code
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5s_7SpaceID_28get_select_type(struct __pyx_obj_4h5py_3h5s_SpaceID *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  H5S_sel_type __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_select_type", 0);
+
+  /* "h5py/h5s.pyx":344
+ *             - SEL_HYPERSLABS
+ *         """
+ *         return <int>H5Sget_select_type(self.id)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Sget_select_type(__pyx_v_self->__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 344; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyInt_FromLong(((int)__pyx_t_1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 344; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5s.SpaceID.get_select_type", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5s_7SpaceID_31get_select_npoints(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5s_7SpaceID_30get_select_npoints[] = "() => LONG npoints\n\n        Determine the total number of points currently selected.\n        Works for all selection techniques.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5s_7SpaceID_31get_select_npoints(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_select_npoints (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5s_7SpaceID_30get_select_npoints(((struct __pyx_obj_4h5py_3h5s_SpaceID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5s.pyx":347
+ * 
+ * 
+ *     def get_select_npoints(self):             # <<<<<<<<<<<<<<
+ *         """() => LONG npoints
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5s_7SpaceID_30get_select_npoints(struct __pyx_obj_4h5py_3h5s_SpaceID *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  hssize_t __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_select_npoints", 0);
+
+  /* "h5py/h5s.pyx":353
+ *         Works for all selection techniques.
+ *         """
+ *         return H5Sget_select_npoints(self.id)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Sget_select_npoints(__pyx_v_self->__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 353; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyInt_to_py_hssize_t(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 353; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5s.SpaceID.get_select_npoints", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5s_7SpaceID_33get_select_bounds(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5s_7SpaceID_32get_select_bounds[] = "() => (TUPLE start, TUPLE end)\n\n        Determine the bounding box which exactly contains\n        the current selection.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5s_7SpaceID_33get_select_bounds(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_select_bounds (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5s_7SpaceID_32get_select_bounds(((struct __pyx_obj_4h5py_3h5s_SpaceID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5s.pyx":356
+ * 
+ * 
+ *     def get_select_bounds(self):             # <<<<<<<<<<<<<<
+ *         """() => (TUPLE start, TUPLE end)
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5s_7SpaceID_32get_select_bounds(struct __pyx_obj_4h5py_3h5s_SpaceID *__pyx_v_self) {
+  int __pyx_v_rank;
+  hsize_t *__pyx_v_start;
+  hsize_t *__pyx_v_end;
+  PyObject *__pyx_v_start_tpl = NULL;
+  PyObject *__pyx_v_end_tpl = NULL;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  hssize_t __pyx_t_2;
+  int __pyx_t_3;
+  void *__pyx_t_4;
+  herr_t __pyx_t_5;
+  PyObject *__pyx_t_6 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_select_bounds", 0);
+
+  /* "h5py/h5s.pyx":363
+ *         """
+ *         cdef int rank
+ *         cdef hsize_t *start = NULL             # <<<<<<<<<<<<<<
+ *         cdef hsize_t *end = NULL
+ * 
+ */
+  __pyx_v_start = NULL;
+
+  /* "h5py/h5s.pyx":364
+ *         cdef int rank
+ *         cdef hsize_t *start = NULL
+ *         cdef hsize_t *end = NULL             # <<<<<<<<<<<<<<
+ * 
+ *         rank = H5Sget_simple_extent_ndims(self.id)
+ */
+  __pyx_v_end = NULL;
+
+  /* "h5py/h5s.pyx":366
+ *         cdef hsize_t *end = NULL
+ * 
+ *         rank = H5Sget_simple_extent_ndims(self.id)             # <<<<<<<<<<<<<<
+ * 
+ *         if H5Sget_select_npoints(self.id) == 0:
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Sget_simple_extent_ndims(__pyx_v_self->__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 366; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v_rank = __pyx_t_1;
+
+  /* "h5py/h5s.pyx":368
+ *         rank = H5Sget_simple_extent_ndims(self.id)
+ * 
+ *         if H5Sget_select_npoints(self.id) == 0:             # <<<<<<<<<<<<<<
+ *             return None
+ * 
+ */
+  __pyx_t_2 = __pyx_f_4h5py_4defs_H5Sget_select_npoints(__pyx_v_self->__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 368; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = (__pyx_t_2 == 0);
+  if (__pyx_t_3) {
+
+    /* "h5py/h5s.pyx":369
+ * 
+ *         if H5Sget_select_npoints(self.id) == 0:
+ *             return None             # <<<<<<<<<<<<<<
+ * 
+ *         start = <hsize_t*>emalloc(sizeof(hsize_t)*rank)
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __Pyx_INCREF(Py_None);
+    __pyx_r = Py_None;
+    goto __pyx_L0;
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  /* "h5py/h5s.pyx":371
+ *             return None
+ * 
+ *         start = <hsize_t*>emalloc(sizeof(hsize_t)*rank)             # <<<<<<<<<<<<<<
+ *         end = <hsize_t*>emalloc(sizeof(hsize_t)*rank)
+ * 
+ */
+  __pyx_t_4 = __pyx_f_4h5py_5utils_emalloc(((sizeof(hsize_t)) * __pyx_v_rank)); if (unlikely(__pyx_t_4 == NULL && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 371; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v_start = ((hsize_t *)__pyx_t_4);
+
+  /* "h5py/h5s.pyx":372
+ * 
+ *         start = <hsize_t*>emalloc(sizeof(hsize_t)*rank)
+ *         end = <hsize_t*>emalloc(sizeof(hsize_t)*rank)             # <<<<<<<<<<<<<<
+ * 
+ *         try:
+ */
+  __pyx_t_4 = __pyx_f_4h5py_5utils_emalloc(((sizeof(hsize_t)) * __pyx_v_rank)); if (unlikely(__pyx_t_4 == NULL && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 372; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v_end = ((hsize_t *)__pyx_t_4);
+
+  /* "h5py/h5s.pyx":374
+ *         end = <hsize_t*>emalloc(sizeof(hsize_t)*rank)
+ * 
+ *         try:             # <<<<<<<<<<<<<<
+ *             H5Sget_select_bounds(self.id, start, end)
+ * 
+ */
+  /*try:*/ {
+
+    /* "h5py/h5s.pyx":375
+ * 
+ *         try:
+ *             H5Sget_select_bounds(self.id, start, end)             # <<<<<<<<<<<<<<
+ * 
+ *             start_tpl = convert_dims(start, rank)
+ */
+    __pyx_t_5 = __pyx_f_4h5py_4defs_H5Sget_select_bounds(__pyx_v_self->__pyx_base.id, __pyx_v_start, __pyx_v_end); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 375; __pyx_clineno = __LINE__; goto __pyx_L5;}
+
+    /* "h5py/h5s.pyx":377
+ *             H5Sget_select_bounds(self.id, start, end)
+ * 
+ *             start_tpl = convert_dims(start, rank)             # <<<<<<<<<<<<<<
+ *             end_tpl = convert_dims(end, rank)
+ *             return (start_tpl, end_tpl)
+ */
+    __pyx_t_6 = __pyx_f_4h5py_5utils_convert_dims(__pyx_v_start, __pyx_v_rank); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 377; __pyx_clineno = __LINE__; goto __pyx_L5;}
+    __Pyx_GOTREF(__pyx_t_6);
+    __pyx_v_start_tpl = __pyx_t_6;
+    __pyx_t_6 = 0;
+
+    /* "h5py/h5s.pyx":378
+ * 
+ *             start_tpl = convert_dims(start, rank)
+ *             end_tpl = convert_dims(end, rank)             # <<<<<<<<<<<<<<
+ *             return (start_tpl, end_tpl)
+ * 
+ */
+    __pyx_t_6 = __pyx_f_4h5py_5utils_convert_dims(__pyx_v_end, __pyx_v_rank); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 378; __pyx_clineno = __LINE__; goto __pyx_L5;}
+    __Pyx_GOTREF(__pyx_t_6);
+    __pyx_v_end_tpl = __pyx_t_6;
+    __pyx_t_6 = 0;
+
+    /* "h5py/h5s.pyx":379
+ *             start_tpl = convert_dims(start, rank)
+ *             end_tpl = convert_dims(end, rank)
+ *             return (start_tpl, end_tpl)             # <<<<<<<<<<<<<<
+ * 
+ *         finally:
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 379; __pyx_clineno = __LINE__; goto __pyx_L5;}
+    __Pyx_GOTREF(__pyx_t_6);
+    __Pyx_INCREF(__pyx_v_start_tpl);
+    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_start_tpl);
+    __Pyx_GIVEREF(__pyx_v_start_tpl);
+    __Pyx_INCREF(__pyx_v_end_tpl);
+    PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_v_end_tpl);
+    __Pyx_GIVEREF(__pyx_v_end_tpl);
+    __pyx_r = ((PyObject *)__pyx_t_6);
+    __pyx_t_6 = 0;
+    goto __pyx_L4;
+  }
+
+  /* "h5py/h5s.pyx":382
+ * 
+ *         finally:
+ *             efree(start)             # <<<<<<<<<<<<<<
+ *             efree(end)
+ * 
+ */
+  /*finally:*/ {
+    int __pyx_why;
+    PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb;
+    int __pyx_exc_lineno;
+    __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
+    __pyx_why = 0; goto __pyx_L6;
+    __pyx_L4: __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
+    __pyx_why = 3; goto __pyx_L6;
+    __pyx_L5: {
+      __pyx_why = 4;
+      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+      __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb);
+      __pyx_exc_lineno = __pyx_lineno;
+      goto __pyx_L6;
+    }
+    __pyx_L6:;
+    __pyx_f_4h5py_5utils_efree(__pyx_v_start);
+
+    /* "h5py/h5s.pyx":383
+ *         finally:
+ *             efree(start)
+ *             efree(end)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+    __pyx_f_4h5py_5utils_efree(__pyx_v_end);
+    switch (__pyx_why) {
+      case 3: goto __pyx_L0;
+      case 4: {
+        __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb);
+        __pyx_lineno = __pyx_exc_lineno;
+        __pyx_exc_type = 0;
+        __pyx_exc_value = 0;
+        __pyx_exc_tb = 0;
+        goto __pyx_L1_error;
+      }
+    }
+  }
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_AddTraceback("h5py.h5s.SpaceID.get_select_bounds", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_start_tpl);
+  __Pyx_XDECREF(__pyx_v_end_tpl);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5s_7SpaceID_35select_all(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5s_7SpaceID_34select_all[] = "()\n\n        Select all points in the dataspace.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5s_7SpaceID_35select_all(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("select_all (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5s_7SpaceID_34select_all(((struct __pyx_obj_4h5py_3h5s_SpaceID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5s.pyx":386
+ * 
+ * 
+ *     def select_all(self):             # <<<<<<<<<<<<<<
+ *         """()
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5s_7SpaceID_34select_all(struct __pyx_obj_4h5py_3h5s_SpaceID *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("select_all", 0);
+
+  /* "h5py/h5s.pyx":391
+ *         Select all points in the dataspace.
+ *         """
+ *         H5Sselect_all(self.id)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Sselect_all(__pyx_v_self->__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 391; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py.h5s.SpaceID.select_all", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5s_7SpaceID_37select_none(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5s_7SpaceID_36select_none[] = "()\n\n        Deselect entire dataspace.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5s_7SpaceID_37select_none(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("select_none (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5s_7SpaceID_36select_none(((struct __pyx_obj_4h5py_3h5s_SpaceID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5s.pyx":394
+ * 
+ * 
+ *     def select_none(self):             # <<<<<<<<<<<<<<
+ *         """()
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5s_7SpaceID_36select_none(struct __pyx_obj_4h5py_3h5s_SpaceID *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("select_none", 0);
+
+  /* "h5py/h5s.pyx":399
+ *         Deselect entire dataspace.
+ *         """
+ *         H5Sselect_none(self.id)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Sselect_none(__pyx_v_self->__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py.h5s.SpaceID.select_none", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5s_7SpaceID_39select_valid(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5s_7SpaceID_38select_valid[] = "() => BOOL\n\n        Determine if the current selection falls within\n        the dataspace extent.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5s_7SpaceID_39select_valid(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("select_valid (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5s_7SpaceID_38select_valid(((struct __pyx_obj_4h5py_3h5s_SpaceID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5s.pyx":402
+ * 
+ * 
+ *     def select_valid(self):             # <<<<<<<<<<<<<<
+ *         """() => BOOL
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5s_7SpaceID_38select_valid(struct __pyx_obj_4h5py_3h5s_SpaceID *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  htri_t __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("select_valid", 0);
+
+  /* "h5py/h5s.pyx":408
+ *         the dataspace extent.
+ *         """
+ *         return <bint>(H5Sselect_valid(self.id))             # <<<<<<<<<<<<<<
+ * 
+ *     # === Point selection functions ===========================================
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Sselect_valid(__pyx_v_self->__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 408; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyBool_FromLong(((int)__pyx_t_1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 408; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5s.SpaceID.select_valid", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5s_7SpaceID_41get_select_elem_npoints(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5s_7SpaceID_40get_select_elem_npoints[] = "() => LONG npoints\n\n        Determine the number of elements selected in point-selection mode.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5s_7SpaceID_41get_select_elem_npoints(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_select_elem_npoints (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5s_7SpaceID_40get_select_elem_npoints(((struct __pyx_obj_4h5py_3h5s_SpaceID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5s.pyx":413
+ * 
+ * 
+ *     def get_select_elem_npoints(self):             # <<<<<<<<<<<<<<
+ *         """() => LONG npoints
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5s_7SpaceID_40get_select_elem_npoints(struct __pyx_obj_4h5py_3h5s_SpaceID *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  hssize_t __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_select_elem_npoints", 0);
+
+  /* "h5py/h5s.pyx":418
+ *         Determine the number of elements selected in point-selection mode.
+ *         """
+ *         return H5Sget_select_elem_npoints(self.id)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Sget_select_elem_npoints(__pyx_v_self->__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 418; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyInt_to_py_hssize_t(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 418; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5s.SpaceID.get_select_elem_npoints", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5s_7SpaceID_43get_select_elem_pointlist(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5s_7SpaceID_42get_select_elem_pointlist[] = "() => NDARRAY\n\n        Get a list of all selected elements.  Return is a Numpy array of\n        unsigned ints, with shape ``(<npoints>, <space rank)``.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5s_7SpaceID_43get_select_elem_pointlist(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_select_elem_pointlist (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5s_7SpaceID_42get_select_elem_pointlist(((struct __pyx_obj_4h5py_3h5s_SpaceID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5s.pyx":421
+ * 
+ * 
+ *     def get_select_elem_pointlist(self):             # <<<<<<<<<<<<<<
+ *         """() => NDARRAY
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5s_7SpaceID_42get_select_elem_pointlist(struct __pyx_obj_4h5py_3h5s_SpaceID *__pyx_v_self) {
+  hsize_t __pyx_v_dims[2];
+  PyArrayObject *__pyx_v_buf = 0;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  hssize_t __pyx_t_1;
+  int __pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  herr_t __pyx_t_4;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_select_elem_pointlist", 0);
+
+  /* "h5py/h5s.pyx":430
+ *         cdef ndarray buf
+ * 
+ *         dims[0] = H5Sget_select_elem_npoints(self.id)             # <<<<<<<<<<<<<<
+ *         dims[1] = H5Sget_simple_extent_ndims(self.id)
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Sget_select_elem_npoints(__pyx_v_self->__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 430; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  (__pyx_v_dims[0]) = __pyx_t_1;
+
+  /* "h5py/h5s.pyx":431
+ * 
+ *         dims[0] = H5Sget_select_elem_npoints(self.id)
+ *         dims[1] = H5Sget_simple_extent_ndims(self.id)             # <<<<<<<<<<<<<<
+ * 
+ *         buf = create_numpy_hsize(2, dims)
+ */
+  __pyx_t_2 = __pyx_f_4h5py_4defs_H5Sget_simple_extent_ndims(__pyx_v_self->__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 431; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  (__pyx_v_dims[1]) = __pyx_t_2;
+
+  /* "h5py/h5s.pyx":433
+ *         dims[1] = H5Sget_simple_extent_ndims(self.id)
+ * 
+ *         buf = create_numpy_hsize(2, dims)             # <<<<<<<<<<<<<<
+ * 
+ *         H5Sget_select_elem_pointlist(self.id, 0, dims[0], <hsize_t*>buf.data)
+ */
+  __pyx_t_3 = __pyx_f_4h5py_5utils_create_numpy_hsize(2, __pyx_v_dims); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 433; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_4h5py_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 433; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v_buf = ((PyArrayObject *)__pyx_t_3);
+  __pyx_t_3 = 0;
+
+  /* "h5py/h5s.pyx":435
+ *         buf = create_numpy_hsize(2, dims)
+ * 
+ *         H5Sget_select_elem_pointlist(self.id, 0, dims[0], <hsize_t*>buf.data)             # <<<<<<<<<<<<<<
+ * 
+ *         return buf
+ */
+  __pyx_t_4 = __pyx_f_4h5py_4defs_H5Sget_select_elem_pointlist(__pyx_v_self->__pyx_base.id, 0, (__pyx_v_dims[0]), ((hsize_t *)__pyx_v_buf->data)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 435; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5s.pyx":437
+ *         H5Sget_select_elem_pointlist(self.id, 0, dims[0], <hsize_t*>buf.data)
+ * 
+ *         return buf             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(((PyObject *)__pyx_v_buf));
+  __pyx_r = ((PyObject *)__pyx_v_buf);
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("h5py.h5s.SpaceID.get_select_elem_pointlist", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_buf);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5s_7SpaceID_45select_elements(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_4h5py_3h5s_7SpaceID_44select_elements[] = "(SEQUENCE coords, INT op=SELECT_SET)\n\n        Select elements by specifying coordinates points.  The argument\n        \"coords\" may be an ndarray or any nested sequence which can be\n        converted to an array of uints with the shape::\n\n            (<npoints>, <space rank>)\n\n        Examples::\n\n            >>> obj.shape\n            (10, 10)\n            >>> obj.select_elements([(1,2), (3,4), (5,9)])\n\n        [...]
+static PyObject *__pyx_pw_4h5py_3h5s_7SpaceID_45select_elements(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_coords = 0;
+  int __pyx_v_op;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("select_elements (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__coords,&__pyx_n_s__op,0};
+    PyObject* values[2] = {0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__coords)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__op);
+          if (value) { values[1] = value; kw_args--; }
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "select_elements") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 440; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else {
+      switch (PyTuple_GET_SIZE(__pyx_args)) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+    }
+    __pyx_v_coords = values[0];
+    if (values[1]) {
+      __pyx_v_op = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_op == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 440; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    } else {
+      __pyx_v_op = __pyx_k_5;
+    }
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("select_elements", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 440; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5s.SpaceID.select_elements", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_3h5s_7SpaceID_44select_elements(((struct __pyx_obj_4h5py_3h5s_SpaceID *)__pyx_v_self), __pyx_v_coords, __pyx_v_op);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5s.pyx":440
+ * 
+ * 
+ *     def select_elements(self, object coords, int op=H5S_SELECT_SET):             # <<<<<<<<<<<<<<
+ *         """(SEQUENCE coords, INT op=SELECT_SET)
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5s_7SpaceID_44select_elements(struct __pyx_obj_4h5py_3h5s_SpaceID *__pyx_v_self, PyObject *__pyx_v_coords, int __pyx_v_op) {
+  PyArrayObject *__pyx_v_hcoords = 0;
+  size_t __pyx_v_nelements;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_t_2;
+  int __pyx_t_3;
+  int __pyx_t_4;
+  int __pyx_t_5;
+  PyObject *__pyx_t_6 = NULL;
+  herr_t __pyx_t_7;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("select_elements", 0);
+
+  /* "h5py/h5s.pyx":466
+ *         # a compatible type and initializing it to the input.
+ * 
+ *         hcoords = create_hsize_array(coords)             # <<<<<<<<<<<<<<
+ * 
+ *         if hcoords.nd != 2 or hcoords.dimensions[1] != H5Sget_simple_extent_ndims(self.id):
+ */
+  __pyx_t_1 = __pyx_f_4h5py_5utils_create_hsize_array(__pyx_v_coords); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 466; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_4h5py_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 466; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v_hcoords = ((PyArrayObject *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "h5py/h5s.pyx":468
+ *         hcoords = create_hsize_array(coords)
+ * 
+ *         if hcoords.nd != 2 or hcoords.dimensions[1] != H5Sget_simple_extent_ndims(self.id):             # <<<<<<<<<<<<<<
+ *             raise ValueError("Coordinate array must have shape (<npoints>, %d)" % self.get_simple_extent_ndims())
+ * 
+ */
+  __pyx_t_2 = (__pyx_v_hcoords->nd != 2);
+  if (!__pyx_t_2) {
+    __pyx_t_3 = __pyx_f_4h5py_4defs_H5Sget_simple_extent_ndims(__pyx_v_self->__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 468; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = ((__pyx_v_hcoords->dimensions[1]) != __pyx_t_3);
+    __pyx_t_5 = __pyx_t_4;
+  } else {
+    __pyx_t_5 = __pyx_t_2;
+  }
+  if (__pyx_t_5) {
+
+    /* "h5py/h5s.pyx":469
+ * 
+ *         if hcoords.nd != 2 or hcoords.dimensions[1] != H5Sget_simple_extent_ndims(self.id):
+ *             raise ValueError("Coordinate array must have shape (<npoints>, %d)" % self.get_simple_extent_ndims())             # <<<<<<<<<<<<<<
+ * 
+ *         nelements = hcoords.dimensions[0]
+ */
+    __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 469; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_6 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 469; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_6);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __pyx_t_1 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_6), __pyx_t_6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 469; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(((PyObject *)__pyx_t_1));
+    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+    __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 469; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_6);
+    PyTuple_SET_ITEM(__pyx_t_6, 0, ((PyObject *)__pyx_t_1));
+    __Pyx_GIVEREF(((PyObject *)__pyx_t_1));
+    __pyx_t_1 = 0;
+    __pyx_t_1 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 469; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
+    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 469; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  /* "h5py/h5s.pyx":471
+ *             raise ValueError("Coordinate array must have shape (<npoints>, %d)" % self.get_simple_extent_ndims())
+ * 
+ *         nelements = hcoords.dimensions[0]             # <<<<<<<<<<<<<<
+ * 
+ *         H5Sselect_elements(self.id, <H5S_seloper_t>op, nelements, <hsize_t**>hcoords.data)
+ */
+  __pyx_v_nelements = (__pyx_v_hcoords->dimensions[0]);
+
+  /* "h5py/h5s.pyx":473
+ *         nelements = hcoords.dimensions[0]
+ * 
+ *         H5Sselect_elements(self.id, <H5S_seloper_t>op, nelements, <hsize_t**>hcoords.data)             # <<<<<<<<<<<<<<
+ * 
+ *     # === Hyperslab selection functions =======================================
+ */
+  __pyx_t_7 = __pyx_f_4h5py_4defs_H5Sselect_elements(__pyx_v_self->__pyx_base.id, ((H5S_seloper_t)__pyx_v_op), __pyx_v_nelements, ((hsize_t **)__pyx_v_hcoords->data)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 473; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_AddTraceback("h5py.h5s.SpaceID.select_elements", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_hcoords);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5s_7SpaceID_47get_select_hyper_nblocks(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5s_7SpaceID_46get_select_hyper_nblocks[] = "() => LONG nblocks\n\n        Get the number of hyperslab blocks currently selected.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5s_7SpaceID_47get_select_hyper_nblocks(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_select_hyper_nblocks (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5s_7SpaceID_46get_select_hyper_nblocks(((struct __pyx_obj_4h5py_3h5s_SpaceID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5s.pyx":478
+ * 
+ * 
+ *     def get_select_hyper_nblocks(self):             # <<<<<<<<<<<<<<
+ *         """() => LONG nblocks
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5s_7SpaceID_46get_select_hyper_nblocks(struct __pyx_obj_4h5py_3h5s_SpaceID *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  hssize_t __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_select_hyper_nblocks", 0);
+
+  /* "h5py/h5s.pyx":483
+ *         Get the number of hyperslab blocks currently selected.
+ *         """
+ *         return H5Sget_select_hyper_nblocks(self.id)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Sget_select_hyper_nblocks(__pyx_v_self->__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 483; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyInt_to_py_hssize_t(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 483; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5s.SpaceID.get_select_hyper_nblocks", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5s_7SpaceID_49get_select_hyper_blocklist(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5s_7SpaceID_48get_select_hyper_blocklist[] = "() => NDARRAY\n\n        Get the current hyperslab selection.  The returned array has shape::\n\n            (<npoints>, 2, <rank>)\n\n        and can be interpreted as a nested sequence::\n\n            [ (corner_coordinate_1, opposite_coordinate_1), ... ]\n\n        with length equal to the total number of blocks.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5s_7SpaceID_49get_select_hyper_blocklist(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_select_hyper_blocklist (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5s_7SpaceID_48get_select_hyper_blocklist(((struct __pyx_obj_4h5py_3h5s_SpaceID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5s.pyx":486
+ * 
+ * 
+ *     def get_select_hyper_blocklist(self):             # <<<<<<<<<<<<<<
+ *         """() => NDARRAY
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5s_7SpaceID_48get_select_hyper_blocklist(struct __pyx_obj_4h5py_3h5s_SpaceID *__pyx_v_self) {
+  hsize_t __pyx_v_dims[3];
+  PyArrayObject *__pyx_v_buf = 0;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  hssize_t __pyx_t_1;
+  int __pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  herr_t __pyx_t_4;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_select_hyper_blocklist", 0);
+
+  /* "h5py/h5s.pyx":502
+ *         cdef ndarray buf
+ * 
+ *         dims[0] = H5Sget_select_hyper_nblocks(self.id)             # <<<<<<<<<<<<<<
+ *         dims[1] = 2
+ *         dims[2] = H5Sget_simple_extent_ndims(self.id)
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Sget_select_hyper_nblocks(__pyx_v_self->__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 502; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  (__pyx_v_dims[0]) = __pyx_t_1;
+
+  /* "h5py/h5s.pyx":503
+ * 
+ *         dims[0] = H5Sget_select_hyper_nblocks(self.id)
+ *         dims[1] = 2             # <<<<<<<<<<<<<<
+ *         dims[2] = H5Sget_simple_extent_ndims(self.id)
+ * 
+ */
+  (__pyx_v_dims[1]) = 2;
+
+  /* "h5py/h5s.pyx":504
+ *         dims[0] = H5Sget_select_hyper_nblocks(self.id)
+ *         dims[1] = 2
+ *         dims[2] = H5Sget_simple_extent_ndims(self.id)             # <<<<<<<<<<<<<<
+ * 
+ *         buf = create_numpy_hsize(3, dims)
+ */
+  __pyx_t_2 = __pyx_f_4h5py_4defs_H5Sget_simple_extent_ndims(__pyx_v_self->__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 504; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  (__pyx_v_dims[2]) = __pyx_t_2;
+
+  /* "h5py/h5s.pyx":506
+ *         dims[2] = H5Sget_simple_extent_ndims(self.id)
+ * 
+ *         buf = create_numpy_hsize(3, dims)             # <<<<<<<<<<<<<<
+ * 
+ *         H5Sget_select_hyper_blocklist(self.id, 0, dims[0], <hsize_t*>buf.data)
+ */
+  __pyx_t_3 = __pyx_f_4h5py_5utils_create_numpy_hsize(3, __pyx_v_dims); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 506; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_4h5py_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 506; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v_buf = ((PyArrayObject *)__pyx_t_3);
+  __pyx_t_3 = 0;
+
+  /* "h5py/h5s.pyx":508
+ *         buf = create_numpy_hsize(3, dims)
+ * 
+ *         H5Sget_select_hyper_blocklist(self.id, 0, dims[0], <hsize_t*>buf.data)             # <<<<<<<<<<<<<<
+ * 
+ *         return buf
+ */
+  __pyx_t_4 = __pyx_f_4h5py_4defs_H5Sget_select_hyper_blocklist(__pyx_v_self->__pyx_base.id, 0, (__pyx_v_dims[0]), ((hsize_t *)__pyx_v_buf->data)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 508; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5s.pyx":510
+ *         H5Sget_select_hyper_blocklist(self.id, 0, dims[0], <hsize_t*>buf.data)
+ * 
+ *         return buf             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(((PyObject *)__pyx_v_buf));
+  __pyx_r = ((PyObject *)__pyx_v_buf);
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("h5py.h5s.SpaceID.get_select_hyper_blocklist", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_buf);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5s_7SpaceID_51select_hyperslab(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_4h5py_3h5s_7SpaceID_50select_hyperslab[] = "(TUPLE start, TUPLE count, TUPLE stride=None, TUPLE block=None,\n             INT op=SELECT_SET)\n\n        Select a block region from an existing dataspace.  See the HDF5\n        documentation for the meaning of the \"block\" and \"op\" keywords.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5s_7SpaceID_51select_hyperslab(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_start = 0;
+  PyObject *__pyx_v_count = 0;
+  PyObject *__pyx_v_stride = 0;
+  PyObject *__pyx_v_block = 0;
+  int __pyx_v_op;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("select_hyperslab (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__start,&__pyx_n_s__count,&__pyx_n_s__stride,&__pyx_n_s__block,&__pyx_n_s__op,0};
+    PyObject* values[5] = {0,0,0,0,0};
+
+    /* "h5py/h5s.pyx":513
+ * 
+ * 
+ *     def select_hyperslab(self, object start, object count, object stride=None,             # <<<<<<<<<<<<<<
+ *                          object block=None, int op=H5S_SELECT_SET):
+ *         """(TUPLE start, TUPLE count, TUPLE stride=None, TUPLE block=None,
+ */
+    values[2] = ((PyObject *)Py_None);
+
+    /* "h5py/h5s.pyx":514
+ * 
+ *     def select_hyperslab(self, object start, object count, object stride=None,
+ *                          object block=None, int op=H5S_SELECT_SET):             # <<<<<<<<<<<<<<
+ *         """(TUPLE start, TUPLE count, TUPLE stride=None, TUPLE block=None,
+ *              INT op=SELECT_SET)
+ */
+    values[3] = ((PyObject *)Py_None);
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__start)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__count)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("select_hyperslab", 0, 2, 5, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 513; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+        case  2:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__stride);
+          if (value) { values[2] = value; kw_args--; }
+        }
+        case  3:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__block);
+          if (value) { values[3] = value; kw_args--; }
+        }
+        case  4:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__op);
+          if (value) { values[4] = value; kw_args--; }
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "select_hyperslab") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 513; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else {
+      switch (PyTuple_GET_SIZE(__pyx_args)) {
+        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+    }
+    __pyx_v_start = values[0];
+    __pyx_v_count = values[1];
+    __pyx_v_stride = values[2];
+    __pyx_v_block = values[3];
+    if (values[4]) {
+      __pyx_v_op = __Pyx_PyInt_AsInt(values[4]); if (unlikely((__pyx_v_op == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 514; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    } else {
+      __pyx_v_op = __pyx_k_8;
+    }
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("select_hyperslab", 0, 2, 5, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 513; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5s.SpaceID.select_hyperslab", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_3h5s_7SpaceID_50select_hyperslab(((struct __pyx_obj_4h5py_3h5s_SpaceID *)__pyx_v_self), __pyx_v_start, __pyx_v_count, __pyx_v_stride, __pyx_v_block, __pyx_v_op);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5s.pyx":513
+ * 
+ * 
+ *     def select_hyperslab(self, object start, object count, object stride=None,             # <<<<<<<<<<<<<<
+ *                          object block=None, int op=H5S_SELECT_SET):
+ *         """(TUPLE start, TUPLE count, TUPLE stride=None, TUPLE block=None,
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5s_7SpaceID_50select_hyperslab(struct __pyx_obj_4h5py_3h5s_SpaceID *__pyx_v_self, PyObject *__pyx_v_start, PyObject *__pyx_v_count, PyObject *__pyx_v_stride, PyObject *__pyx_v_block, int __pyx_v_op) {
+  int __pyx_v_rank;
+  hsize_t *__pyx_v_start_array;
+  hsize_t *__pyx_v_count_array;
+  hsize_t *__pyx_v_stride_array;
+  hsize_t *__pyx_v_block_array;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  void *__pyx_t_2;
+  int __pyx_t_3;
+  herr_t __pyx_t_4;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("select_hyperslab", 0);
+
+  /* "h5py/h5s.pyx":522
+ *         """
+ *         cdef int rank
+ *         cdef hsize_t* start_array = NULL             # <<<<<<<<<<<<<<
+ *         cdef hsize_t* count_array = NULL
+ *         cdef hsize_t* stride_array = NULL
+ */
+  __pyx_v_start_array = NULL;
+
+  /* "h5py/h5s.pyx":523
+ *         cdef int rank
+ *         cdef hsize_t* start_array = NULL
+ *         cdef hsize_t* count_array = NULL             # <<<<<<<<<<<<<<
+ *         cdef hsize_t* stride_array = NULL
+ *         cdef hsize_t* block_array = NULL
+ */
+  __pyx_v_count_array = NULL;
+
+  /* "h5py/h5s.pyx":524
+ *         cdef hsize_t* start_array = NULL
+ *         cdef hsize_t* count_array = NULL
+ *         cdef hsize_t* stride_array = NULL             # <<<<<<<<<<<<<<
+ *         cdef hsize_t* block_array = NULL
+ * 
+ */
+  __pyx_v_stride_array = NULL;
+
+  /* "h5py/h5s.pyx":525
+ *         cdef hsize_t* count_array = NULL
+ *         cdef hsize_t* stride_array = NULL
+ *         cdef hsize_t* block_array = NULL             # <<<<<<<<<<<<<<
+ * 
+ *         # Dataspace rank.  All provided tuples must match this.
+ */
+  __pyx_v_block_array = NULL;
+
+  /* "h5py/h5s.pyx":528
+ * 
+ *         # Dataspace rank.  All provided tuples must match this.
+ *         rank = H5Sget_simple_extent_ndims(self.id)             # <<<<<<<<<<<<<<
+ * 
+ *         require_tuple(start, 0, rank, "start")
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Sget_simple_extent_ndims(__pyx_v_self->__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 528; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v_rank = __pyx_t_1;
+
+  /* "h5py/h5s.pyx":530
+ *         rank = H5Sget_simple_extent_ndims(self.id)
+ * 
+ *         require_tuple(start, 0, rank, "start")             # <<<<<<<<<<<<<<
+ *         require_tuple(count, 0, rank, "count")
+ *         require_tuple(stride, 1, rank, "stride")
+ */
+  __pyx_t_1 = __pyx_f_4h5py_5utils_require_tuple(__pyx_v_start, 0, __pyx_v_rank, __pyx_k__start); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 530; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5s.pyx":531
+ * 
+ *         require_tuple(start, 0, rank, "start")
+ *         require_tuple(count, 0, rank, "count")             # <<<<<<<<<<<<<<
+ *         require_tuple(stride, 1, rank, "stride")
+ *         require_tuple(block, 1, rank, "block")
+ */
+  __pyx_t_1 = __pyx_f_4h5py_5utils_require_tuple(__pyx_v_count, 0, __pyx_v_rank, __pyx_k__count); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 531; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5s.pyx":532
+ *         require_tuple(start, 0, rank, "start")
+ *         require_tuple(count, 0, rank, "count")
+ *         require_tuple(stride, 1, rank, "stride")             # <<<<<<<<<<<<<<
+ *         require_tuple(block, 1, rank, "block")
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_5utils_require_tuple(__pyx_v_stride, 1, __pyx_v_rank, __pyx_k__stride); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 532; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5s.pyx":533
+ *         require_tuple(count, 0, rank, "count")
+ *         require_tuple(stride, 1, rank, "stride")
+ *         require_tuple(block, 1, rank, "block")             # <<<<<<<<<<<<<<
+ * 
+ *         try:
+ */
+  __pyx_t_1 = __pyx_f_4h5py_5utils_require_tuple(__pyx_v_block, 1, __pyx_v_rank, __pyx_k__block); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 533; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5s.pyx":535
+ *         require_tuple(block, 1, rank, "block")
+ * 
+ *         try:             # <<<<<<<<<<<<<<
+ *             start_array = <hsize_t*>emalloc(sizeof(hsize_t)*rank)
+ *             count_array = <hsize_t*>emalloc(sizeof(hsize_t)*rank)
+ */
+  /*try:*/ {
+
+    /* "h5py/h5s.pyx":536
+ * 
+ *         try:
+ *             start_array = <hsize_t*>emalloc(sizeof(hsize_t)*rank)             # <<<<<<<<<<<<<<
+ *             count_array = <hsize_t*>emalloc(sizeof(hsize_t)*rank)
+ *             convert_tuple(start, start_array, rank)
+ */
+    __pyx_t_2 = __pyx_f_4h5py_5utils_emalloc(((sizeof(hsize_t)) * __pyx_v_rank)); if (unlikely(__pyx_t_2 == NULL && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 536; __pyx_clineno = __LINE__; goto __pyx_L4;}
+    __pyx_v_start_array = ((hsize_t *)__pyx_t_2);
+
+    /* "h5py/h5s.pyx":537
+ *         try:
+ *             start_array = <hsize_t*>emalloc(sizeof(hsize_t)*rank)
+ *             count_array = <hsize_t*>emalloc(sizeof(hsize_t)*rank)             # <<<<<<<<<<<<<<
+ *             convert_tuple(start, start_array, rank)
+ *             convert_tuple(count, count_array, rank)
+ */
+    __pyx_t_2 = __pyx_f_4h5py_5utils_emalloc(((sizeof(hsize_t)) * __pyx_v_rank)); if (unlikely(__pyx_t_2 == NULL && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 537; __pyx_clineno = __LINE__; goto __pyx_L4;}
+    __pyx_v_count_array = ((hsize_t *)__pyx_t_2);
+
+    /* "h5py/h5s.pyx":538
+ *             start_array = <hsize_t*>emalloc(sizeof(hsize_t)*rank)
+ *             count_array = <hsize_t*>emalloc(sizeof(hsize_t)*rank)
+ *             convert_tuple(start, start_array, rank)             # <<<<<<<<<<<<<<
+ *             convert_tuple(count, count_array, rank)
+ * 
+ */
+    __pyx_t_1 = __pyx_f_4h5py_5utils_convert_tuple(__pyx_v_start, __pyx_v_start_array, __pyx_v_rank); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 538; __pyx_clineno = __LINE__; goto __pyx_L4;}
+
+    /* "h5py/h5s.pyx":539
+ *             count_array = <hsize_t*>emalloc(sizeof(hsize_t)*rank)
+ *             convert_tuple(start, start_array, rank)
+ *             convert_tuple(count, count_array, rank)             # <<<<<<<<<<<<<<
+ * 
+ *             if stride is not None:
+ */
+    __pyx_t_1 = __pyx_f_4h5py_5utils_convert_tuple(__pyx_v_count, __pyx_v_count_array, __pyx_v_rank); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 539; __pyx_clineno = __LINE__; goto __pyx_L4;}
+
+    /* "h5py/h5s.pyx":541
+ *             convert_tuple(count, count_array, rank)
+ * 
+ *             if stride is not None:             # <<<<<<<<<<<<<<
+ *                 stride_array = <hsize_t*>emalloc(sizeof(hsize_t)*rank)
+ *                 convert_tuple(stride, stride_array, rank)
+ */
+    __pyx_t_3 = (__pyx_v_stride != Py_None);
+    if (__pyx_t_3) {
+
+      /* "h5py/h5s.pyx":542
+ * 
+ *             if stride is not None:
+ *                 stride_array = <hsize_t*>emalloc(sizeof(hsize_t)*rank)             # <<<<<<<<<<<<<<
+ *                 convert_tuple(stride, stride_array, rank)
+ *             if block is not None:
+ */
+      __pyx_t_2 = __pyx_f_4h5py_5utils_emalloc(((sizeof(hsize_t)) * __pyx_v_rank)); if (unlikely(__pyx_t_2 == NULL && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 542; __pyx_clineno = __LINE__; goto __pyx_L4;}
+      __pyx_v_stride_array = ((hsize_t *)__pyx_t_2);
+
+      /* "h5py/h5s.pyx":543
+ *             if stride is not None:
+ *                 stride_array = <hsize_t*>emalloc(sizeof(hsize_t)*rank)
+ *                 convert_tuple(stride, stride_array, rank)             # <<<<<<<<<<<<<<
+ *             if block is not None:
+ *                 block_array = <hsize_t*>emalloc(sizeof(hsize_t)*rank)
+ */
+      __pyx_t_1 = __pyx_f_4h5py_5utils_convert_tuple(__pyx_v_stride, __pyx_v_stride_array, __pyx_v_rank); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 543; __pyx_clineno = __LINE__; goto __pyx_L4;}
+      goto __pyx_L6;
+    }
+    __pyx_L6:;
+
+    /* "h5py/h5s.pyx":544
+ *                 stride_array = <hsize_t*>emalloc(sizeof(hsize_t)*rank)
+ *                 convert_tuple(stride, stride_array, rank)
+ *             if block is not None:             # <<<<<<<<<<<<<<
+ *                 block_array = <hsize_t*>emalloc(sizeof(hsize_t)*rank)
+ *                 convert_tuple(block, block_array, rank)
+ */
+    __pyx_t_3 = (__pyx_v_block != Py_None);
+    if (__pyx_t_3) {
+
+      /* "h5py/h5s.pyx":545
+ *                 convert_tuple(stride, stride_array, rank)
+ *             if block is not None:
+ *                 block_array = <hsize_t*>emalloc(sizeof(hsize_t)*rank)             # <<<<<<<<<<<<<<
+ *                 convert_tuple(block, block_array, rank)
+ * 
+ */
+      __pyx_t_2 = __pyx_f_4h5py_5utils_emalloc(((sizeof(hsize_t)) * __pyx_v_rank)); if (unlikely(__pyx_t_2 == NULL && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 545; __pyx_clineno = __LINE__; goto __pyx_L4;}
+      __pyx_v_block_array = ((hsize_t *)__pyx_t_2);
+
+      /* "h5py/h5s.pyx":546
+ *             if block is not None:
+ *                 block_array = <hsize_t*>emalloc(sizeof(hsize_t)*rank)
+ *                 convert_tuple(block, block_array, rank)             # <<<<<<<<<<<<<<
+ * 
+ *             H5Sselect_hyperslab(self.id, <H5S_seloper_t>op, start_array,
+ */
+      __pyx_t_1 = __pyx_f_4h5py_5utils_convert_tuple(__pyx_v_block, __pyx_v_block_array, __pyx_v_rank); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 546; __pyx_clineno = __LINE__; goto __pyx_L4;}
+      goto __pyx_L7;
+    }
+    __pyx_L7:;
+
+    /* "h5py/h5s.pyx":549
+ * 
+ *             H5Sselect_hyperslab(self.id, <H5S_seloper_t>op, start_array,
+ *                                          stride_array, count_array, block_array)             # <<<<<<<<<<<<<<
+ * 
+ *         finally:
+ */
+    __pyx_t_4 = __pyx_f_4h5py_4defs_H5Sselect_hyperslab(__pyx_v_self->__pyx_base.id, ((H5S_seloper_t)__pyx_v_op), __pyx_v_start_array, __pyx_v_stride_array, __pyx_v_count_array, __pyx_v_block_array); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 548; __pyx_clineno = __LINE__; goto __pyx_L4;}
+  }
+
+  /* "h5py/h5s.pyx":552
+ * 
+ *         finally:
+ *             efree(start_array)             # <<<<<<<<<<<<<<
+ *             efree(count_array)
+ *             efree(stride_array)
+ */
+  /*finally:*/ {
+    int __pyx_why;
+    PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb;
+    int __pyx_exc_lineno;
+    __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
+    __pyx_why = 0; goto __pyx_L5;
+    __pyx_L4: {
+      __pyx_why = 4;
+      __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb);
+      __pyx_exc_lineno = __pyx_lineno;
+      goto __pyx_L5;
+    }
+    __pyx_L5:;
+    __pyx_f_4h5py_5utils_efree(__pyx_v_start_array);
+
+    /* "h5py/h5s.pyx":553
+ *         finally:
+ *             efree(start_array)
+ *             efree(count_array)             # <<<<<<<<<<<<<<
+ *             efree(stride_array)
+ *             efree(block_array)
+ */
+    __pyx_f_4h5py_5utils_efree(__pyx_v_count_array);
+
+    /* "h5py/h5s.pyx":554
+ *             efree(start_array)
+ *             efree(count_array)
+ *             efree(stride_array)             # <<<<<<<<<<<<<<
+ *             efree(block_array)
+ * 
+ */
+    __pyx_f_4h5py_5utils_efree(__pyx_v_stride_array);
+
+    /* "h5py/h5s.pyx":555
+ *             efree(count_array)
+ *             efree(stride_array)
+ *             efree(block_array)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+    __pyx_f_4h5py_5utils_efree(__pyx_v_block_array);
+    switch (__pyx_why) {
+      case 4: {
+        __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb);
+        __pyx_lineno = __pyx_exc_lineno;
+        __pyx_exc_type = 0;
+        __pyx_exc_value = 0;
+        __pyx_exc_tb = 0;
+        goto __pyx_L1_error;
+      }
+    }
+  }
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py.h5s.SpaceID.select_hyperslab", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_tp_new_4h5py_3h5s_SpaceID(PyTypeObject *t, PyObject *a, PyObject *k) {
+  PyObject *o = __pyx_ptype_4h5py_8_objects_ObjectID->tp_new(t, a, k);
+  if (!o) return 0;
+  return o;
+}
+
+static void __pyx_tp_dealloc_4h5py_3h5s_SpaceID(PyObject *o) {
+  PyObject_GC_UnTrack(o);
+  PyObject_GC_Track(o);
+  if (likely(__pyx_ptype_4h5py_8_objects_ObjectID)) __pyx_ptype_4h5py_8_objects_ObjectID->tp_dealloc(o); else __Pyx_call_next_tp_dealloc(o, __pyx_tp_dealloc_4h5py_3h5s_SpaceID);
+}
+
+static int __pyx_tp_traverse_4h5py_3h5s_SpaceID(PyObject *o, visitproc v, void *a) {
+  int e;
+  e = ((likely(__pyx_ptype_4h5py_8_objects_ObjectID)) ? ((__pyx_ptype_4h5py_8_objects_ObjectID->tp_traverse) ? __pyx_ptype_4h5py_8_objects_ObjectID->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_4h5py_3h5s_SpaceID)); if (e) return e;
+  return 0;
+}
+
+static int __pyx_tp_clear_4h5py_3h5s_SpaceID(PyObject *o) {
+  if (likely(__pyx_ptype_4h5py_8_objects_ObjectID)) { if (__pyx_ptype_4h5py_8_objects_ObjectID->tp_clear) __pyx_ptype_4h5py_8_objects_ObjectID->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_4h5py_3h5s_SpaceID);
+  return 0;
+}
+
+static PyObject *__pyx_getprop_4h5py_3h5s_7SpaceID_shape(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_4h5py_3h5s_7SpaceID_5shape_1__get__(o);
+}
+
+static PyMethodDef __pyx_methods_4h5py_3h5s_SpaceID[] = {
+  {__Pyx_NAMESTR("_close"), (PyCFunction)__pyx_pw_4h5py_3h5s_7SpaceID_1_close, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5s_7SpaceID__close)},
+  {__Pyx_NAMESTR("copy"), (PyCFunction)__pyx_pw_4h5py_3h5s_7SpaceID_3copy, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5s_7SpaceID_2copy)},
+  {__Pyx_NAMESTR("encode"), (PyCFunction)__pyx_pw_4h5py_3h5s_7SpaceID_5encode, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5s_7SpaceID_4encode)},
+  {__Pyx_NAMESTR("__reduce__"), (PyCFunction)__pyx_pw_4h5py_3h5s_7SpaceID_7__reduce__, METH_NOARGS, __Pyx_DOCSTR(0)},
+  {__Pyx_NAMESTR("__setstate__"), (PyCFunction)__pyx_pw_4h5py_3h5s_7SpaceID_9__setstate__, METH_O, __Pyx_DOCSTR(0)},
+  {__Pyx_NAMESTR("is_simple"), (PyCFunction)__pyx_pw_4h5py_3h5s_7SpaceID_11is_simple, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5s_7SpaceID_10is_simple)},
+  {__Pyx_NAMESTR("offset_simple"), (PyCFunction)__pyx_pw_4h5py_3h5s_7SpaceID_13offset_simple, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5s_7SpaceID_12offset_simple)},
+  {__Pyx_NAMESTR("get_simple_extent_ndims"), (PyCFunction)__pyx_pw_4h5py_3h5s_7SpaceID_15get_simple_extent_ndims, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5s_7SpaceID_14get_simple_extent_ndims)},
+  {__Pyx_NAMESTR("get_simple_extent_dims"), (PyCFunction)__pyx_pw_4h5py_3h5s_7SpaceID_17get_simple_extent_dims, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5s_7SpaceID_16get_simple_extent_dims)},
+  {__Pyx_NAMESTR("get_simple_extent_npoints"), (PyCFunction)__pyx_pw_4h5py_3h5s_7SpaceID_19get_simple_extent_npoints, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5s_7SpaceID_18get_simple_extent_npoints)},
+  {__Pyx_NAMESTR("get_simple_extent_type"), (PyCFunction)__pyx_pw_4h5py_3h5s_7SpaceID_21get_simple_extent_type, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5s_7SpaceID_20get_simple_extent_type)},
+  {__Pyx_NAMESTR("extent_copy"), (PyCFunction)__pyx_pw_4h5py_3h5s_7SpaceID_23extent_copy, METH_O, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5s_7SpaceID_22extent_copy)},
+  {__Pyx_NAMESTR("set_extent_simple"), (PyCFunction)__pyx_pw_4h5py_3h5s_7SpaceID_25set_extent_simple, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5s_7SpaceID_24set_extent_simple)},
+  {__Pyx_NAMESTR("set_extent_none"), (PyCFunction)__pyx_pw_4h5py_3h5s_7SpaceID_27set_extent_none, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5s_7SpaceID_26set_extent_none)},
+  {__Pyx_NAMESTR("get_select_type"), (PyCFunction)__pyx_pw_4h5py_3h5s_7SpaceID_29get_select_type, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5s_7SpaceID_28get_select_type)},
+  {__Pyx_NAMESTR("get_select_npoints"), (PyCFunction)__pyx_pw_4h5py_3h5s_7SpaceID_31get_select_npoints, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5s_7SpaceID_30get_select_npoints)},
+  {__Pyx_NAMESTR("get_select_bounds"), (PyCFunction)__pyx_pw_4h5py_3h5s_7SpaceID_33get_select_bounds, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5s_7SpaceID_32get_select_bounds)},
+  {__Pyx_NAMESTR("select_all"), (PyCFunction)__pyx_pw_4h5py_3h5s_7SpaceID_35select_all, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5s_7SpaceID_34select_all)},
+  {__Pyx_NAMESTR("select_none"), (PyCFunction)__pyx_pw_4h5py_3h5s_7SpaceID_37select_none, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5s_7SpaceID_36select_none)},
+  {__Pyx_NAMESTR("select_valid"), (PyCFunction)__pyx_pw_4h5py_3h5s_7SpaceID_39select_valid, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5s_7SpaceID_38select_valid)},
+  {__Pyx_NAMESTR("get_select_elem_npoints"), (PyCFunction)__pyx_pw_4h5py_3h5s_7SpaceID_41get_select_elem_npoints, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5s_7SpaceID_40get_select_elem_npoints)},
+  {__Pyx_NAMESTR("get_select_elem_pointlist"), (PyCFunction)__pyx_pw_4h5py_3h5s_7SpaceID_43get_select_elem_pointlist, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5s_7SpaceID_42get_select_elem_pointlist)},
+  {__Pyx_NAMESTR("select_elements"), (PyCFunction)__pyx_pw_4h5py_3h5s_7SpaceID_45select_elements, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5s_7SpaceID_44select_elements)},
+  {__Pyx_NAMESTR("get_select_hyper_nblocks"), (PyCFunction)__pyx_pw_4h5py_3h5s_7SpaceID_47get_select_hyper_nblocks, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5s_7SpaceID_46get_select_hyper_nblocks)},
+  {__Pyx_NAMESTR("get_select_hyper_blocklist"), (PyCFunction)__pyx_pw_4h5py_3h5s_7SpaceID_49get_select_hyper_blocklist, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5s_7SpaceID_48get_select_hyper_blocklist)},
+  {__Pyx_NAMESTR("select_hyperslab"), (PyCFunction)__pyx_pw_4h5py_3h5s_7SpaceID_51select_hyperslab, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5s_7SpaceID_50select_hyperslab)},
+  {0, 0, 0, 0}
+};
+
+static struct PyGetSetDef __pyx_getsets_4h5py_3h5s_SpaceID[] = {
+  {(char *)"shape", __pyx_getprop_4h5py_3h5s_7SpaceID_shape, 0, __Pyx_DOCSTR(__pyx_k_9), 0},
+  {0, 0, 0, 0, 0}
+};
+
+static PyNumberMethods __pyx_tp_as_number_SpaceID = {
+  0, /*nb_add*/
+  0, /*nb_subtract*/
+  0, /*nb_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_divide*/
+  #endif
+  0, /*nb_remainder*/
+  0, /*nb_divmod*/
+  0, /*nb_power*/
+  0, /*nb_negative*/
+  0, /*nb_positive*/
+  0, /*nb_absolute*/
+  0, /*nb_nonzero*/
+  0, /*nb_invert*/
+  0, /*nb_lshift*/
+  0, /*nb_rshift*/
+  0, /*nb_and*/
+  0, /*nb_xor*/
+  0, /*nb_or*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_coerce*/
+  #endif
+  0, /*nb_int*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_long*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*nb_float*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_oct*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_hex*/
+  #endif
+  0, /*nb_inplace_add*/
+  0, /*nb_inplace_subtract*/
+  0, /*nb_inplace_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_inplace_divide*/
+  #endif
+  0, /*nb_inplace_remainder*/
+  0, /*nb_inplace_power*/
+  0, /*nb_inplace_lshift*/
+  0, /*nb_inplace_rshift*/
+  0, /*nb_inplace_and*/
+  0, /*nb_inplace_xor*/
+  0, /*nb_inplace_or*/
+  0, /*nb_floor_divide*/
+  0, /*nb_true_divide*/
+  0, /*nb_inplace_floor_divide*/
+  0, /*nb_inplace_true_divide*/
+  #if PY_VERSION_HEX >= 0x02050000
+  0, /*nb_index*/
+  #endif
+};
+
+static PySequenceMethods __pyx_tp_as_sequence_SpaceID = {
+  0, /*sq_length*/
+  0, /*sq_concat*/
+  0, /*sq_repeat*/
+  0, /*sq_item*/
+  0, /*sq_slice*/
+  0, /*sq_ass_item*/
+  0, /*sq_ass_slice*/
+  0, /*sq_contains*/
+  0, /*sq_inplace_concat*/
+  0, /*sq_inplace_repeat*/
+};
+
+static PyMappingMethods __pyx_tp_as_mapping_SpaceID = {
+  0, /*mp_length*/
+  0, /*mp_subscript*/
+  0, /*mp_ass_subscript*/
+};
+
+static PyBufferProcs __pyx_tp_as_buffer_SpaceID = {
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getreadbuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getwritebuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getsegcount*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getcharbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_getbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_releasebuffer*/
+  #endif
+};
+
+static PyTypeObject __pyx_type_4h5py_3h5s_SpaceID = {
+  PyVarObject_HEAD_INIT(0, 0)
+  __Pyx_NAMESTR("h5py.h5s.SpaceID"), /*tp_name*/
+  sizeof(struct __pyx_obj_4h5py_3h5s_SpaceID), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_4h5py_3h5s_SpaceID, /*tp_dealloc*/
+  0, /*tp_print*/
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*tp_repr*/
+  &__pyx_tp_as_number_SpaceID, /*tp_as_number*/
+  &__pyx_tp_as_sequence_SpaceID, /*tp_as_sequence*/
+  &__pyx_tp_as_mapping_SpaceID, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  &__pyx_tp_as_buffer_SpaceID, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+  __Pyx_DOCSTR("\n        Represents a dataspace identifier.\n\n        Properties:\n\n        shape\n            Numpy-style shape tuple with dimensions.\n\n        * Hashable: No\n        * Equality: Unimplemented\n\n        Can be pickled if HDF5 1.8 is available.\n    "), /*tp_doc*/
+  __pyx_tp_traverse_4h5py_3h5s_SpaceID, /*tp_traverse*/
+  __pyx_tp_clear_4h5py_3h5s_SpaceID, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_4h5py_3h5s_SpaceID, /*tp_methods*/
+  0, /*tp_members*/
+  __pyx_getsets_4h5py_3h5s_SpaceID, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  0, /*tp_dictoffset*/
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_4h5py_3h5s_SpaceID, /*tp_new*/
+  0, /*tp_free*/
+  0, /*tp_is_gc*/
+  0, /*tp_bases*/
+  0, /*tp_mro*/
+  0, /*tp_cache*/
+  0, /*tp_subclasses*/
+  0, /*tp_weaklist*/
+  0, /*tp_del*/
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*tp_version_tag*/
+  #endif
+};
+
+static PyMethodDef __pyx_methods[] = {
+  {0, 0, 0, 0}
+};
+
+#if PY_MAJOR_VERSION >= 3
+static struct PyModuleDef __pyx_moduledef = {
+  #if PY_VERSION_HEX < 0x03020000
+    { PyObject_HEAD_INIT(NULL) NULL, 0, NULL },
+  #else
+    PyModuleDef_HEAD_INIT,
+  #endif
+    __Pyx_NAMESTR("h5s"),
+    __Pyx_DOCSTR(__pyx_k_10), /* m_doc */
+    -1, /* m_size */
+    __pyx_methods /* m_methods */,
+    NULL, /* m_reload */
+    NULL, /* m_traverse */
+    NULL, /* m_clear */
+    NULL /* m_free */
+};
+#endif
+
+static __Pyx_StringTabEntry __pyx_string_tab[] = {
+  {&__pyx_n_s_1, __pyx_k_1, sizeof(__pyx_k_1), 0, 0, 1, 1},
+  {&__pyx_kp_s_13, __pyx_k_13, sizeof(__pyx_k_13), 0, 0, 1, 0},
+  {&__pyx_n_s_14, __pyx_k_14, sizeof(__pyx_k_14), 0, 0, 1, 1},
+  {&__pyx_kp_u_19, __pyx_k_19, sizeof(__pyx_k_19), 0, 1, 0, 0},
+  {&__pyx_kp_u_20, __pyx_k_20, sizeof(__pyx_k_20), 0, 1, 0, 0},
+  {&__pyx_kp_s_4, __pyx_k_4, sizeof(__pyx_k_4), 0, 0, 1, 0},
+  {&__pyx_kp_s_6, __pyx_k_6, sizeof(__pyx_k_6), 0, 0, 1, 0},
+  {&__pyx_n_s_7, __pyx_k_7, sizeof(__pyx_k_7), 0, 0, 1, 1},
+  {&__pyx_n_s__ALL, __pyx_k__ALL, sizeof(__pyx_k__ALL), 0, 0, 1, 1},
+  {&__pyx_n_s__NO_CLASS, __pyx_k__NO_CLASS, sizeof(__pyx_k__NO_CLASS), 0, 0, 1, 1},
+  {&__pyx_n_s__SCALAR, __pyx_k__SCALAR, sizeof(__pyx_k__SCALAR), 0, 0, 1, 1},
+  {&__pyx_n_s__SELECT_AND, __pyx_k__SELECT_AND, sizeof(__pyx_k__SELECT_AND), 0, 0, 1, 1},
+  {&__pyx_n_s__SELECT_APPEND, __pyx_k__SELECT_APPEND, sizeof(__pyx_k__SELECT_APPEND), 0, 0, 1, 1},
+  {&__pyx_n_s__SELECT_INVALID, __pyx_k__SELECT_INVALID, sizeof(__pyx_k__SELECT_INVALID), 0, 0, 1, 1},
+  {&__pyx_n_s__SELECT_NOOP, __pyx_k__SELECT_NOOP, sizeof(__pyx_k__SELECT_NOOP), 0, 0, 1, 1},
+  {&__pyx_n_s__SELECT_NOTA, __pyx_k__SELECT_NOTA, sizeof(__pyx_k__SELECT_NOTA), 0, 0, 1, 1},
+  {&__pyx_n_s__SELECT_NOTB, __pyx_k__SELECT_NOTB, sizeof(__pyx_k__SELECT_NOTB), 0, 0, 1, 1},
+  {&__pyx_n_s__SELECT_OR, __pyx_k__SELECT_OR, sizeof(__pyx_k__SELECT_OR), 0, 0, 1, 1},
+  {&__pyx_n_s__SELECT_PREPEND, __pyx_k__SELECT_PREPEND, sizeof(__pyx_k__SELECT_PREPEND), 0, 0, 1, 1},
+  {&__pyx_n_s__SELECT_SET, __pyx_k__SELECT_SET, sizeof(__pyx_k__SELECT_SET), 0, 0, 1, 1},
+  {&__pyx_n_s__SELECT_XOR, __pyx_k__SELECT_XOR, sizeof(__pyx_k__SELECT_XOR), 0, 0, 1, 1},
+  {&__pyx_n_s__SEL_ALL, __pyx_k__SEL_ALL, sizeof(__pyx_k__SEL_ALL), 0, 0, 1, 1},
+  {&__pyx_n_s__SEL_ERROR, __pyx_k__SEL_ERROR, sizeof(__pyx_k__SEL_ERROR), 0, 0, 1, 1},
+  {&__pyx_n_s__SEL_HYPERSLABS, __pyx_k__SEL_HYPERSLABS, sizeof(__pyx_k__SEL_HYPERSLABS), 0, 0, 1, 1},
+  {&__pyx_n_s__SEL_NONE, __pyx_k__SEL_NONE, sizeof(__pyx_k__SEL_NONE), 0, 0, 1, 1},
+  {&__pyx_n_s__SEL_POINTS, __pyx_k__SEL_POINTS, sizeof(__pyx_k__SEL_POINTS), 0, 0, 1, 1},
+  {&__pyx_n_s__SIMPLE, __pyx_k__SIMPLE, sizeof(__pyx_k__SIMPLE), 0, 0, 1, 1},
+  {&__pyx_n_s__UNLIMITED, __pyx_k__UNLIMITED, sizeof(__pyx_k__UNLIMITED), 0, 0, 1, 1},
+  {&__pyx_n_s__ValueError, __pyx_k__ValueError, sizeof(__pyx_k__ValueError), 0, 0, 1, 1},
+  {&__pyx_n_s___NULL, __pyx_k___NULL, sizeof(__pyx_k___NULL), 0, 0, 1, 1},
+  {&__pyx_n_s____enter__, __pyx_k____enter__, sizeof(__pyx_k____enter__), 0, 0, 1, 1},
+  {&__pyx_n_s____exit__, __pyx_k____exit__, sizeof(__pyx_k____exit__), 0, 0, 1, 1},
+  {&__pyx_n_s____main__, __pyx_k____main__, sizeof(__pyx_k____main__), 0, 0, 1, 1},
+  {&__pyx_n_s____test__, __pyx_k____test__, sizeof(__pyx_k____test__), 0, 0, 1, 1},
+  {&__pyx_n_s___objects, __pyx_k___objects, sizeof(__pyx_k___objects), 0, 0, 1, 1},
+  {&__pyx_n_s__block, __pyx_k__block, sizeof(__pyx_k__block), 0, 0, 1, 1},
+  {&__pyx_n_s__buf, __pyx_k__buf, sizeof(__pyx_k__buf), 0, 0, 1, 1},
+  {&__pyx_n_s__buf_, __pyx_k__buf_, sizeof(__pyx_k__buf_), 0, 0, 1, 1},
+  {&__pyx_n_s__class_code, __pyx_k__class_code, sizeof(__pyx_k__class_code), 0, 0, 1, 1},
+  {&__pyx_n_s__coords, __pyx_k__coords, sizeof(__pyx_k__coords), 0, 0, 1, 1},
+  {&__pyx_n_s__count, __pyx_k__count, sizeof(__pyx_k__count), 0, 0, 1, 1},
+  {&__pyx_n_s__create, __pyx_k__create, sizeof(__pyx_k__create), 0, 0, 1, 1},
+  {&__pyx_n_s__create_simple, __pyx_k__create_simple, sizeof(__pyx_k__create_simple), 0, 0, 1, 1},
+  {&__pyx_n_s__decode, __pyx_k__decode, sizeof(__pyx_k__decode), 0, 0, 1, 1},
+  {&__pyx_n_s__dims, __pyx_k__dims, sizeof(__pyx_k__dims), 0, 0, 1, 1},
+  {&__pyx_n_s__dims_tpl, __pyx_k__dims_tpl, sizeof(__pyx_k__dims_tpl), 0, 0, 1, 1},
+  {&__pyx_n_s__encode, __pyx_k__encode, sizeof(__pyx_k__encode), 0, 0, 1, 1},
+  {&__pyx_n_s__h5py, __pyx_k__h5py, sizeof(__pyx_k__h5py), 0, 0, 1, 1},
+  {&__pyx_n_s__lock, __pyx_k__lock, sizeof(__pyx_k__lock), 0, 0, 1, 1},
+  {&__pyx_n_s__max_dims, __pyx_k__max_dims, sizeof(__pyx_k__max_dims), 0, 0, 1, 1},
+  {&__pyx_n_s__max_dims_tpl, __pyx_k__max_dims_tpl, sizeof(__pyx_k__max_dims_tpl), 0, 0, 1, 1},
+  {&__pyx_n_s__maxdims, __pyx_k__maxdims, sizeof(__pyx_k__maxdims), 0, 0, 1, 1},
+  {&__pyx_n_s__offset, __pyx_k__offset, sizeof(__pyx_k__offset), 0, 0, 1, 1},
+  {&__pyx_n_s__op, __pyx_k__op, sizeof(__pyx_k__op), 0, 0, 1, 1},
+  {&__pyx_n_s__open, __pyx_k__open, sizeof(__pyx_k__open), 0, 0, 1, 1},
+  {&__pyx_n_s__rank, __pyx_k__rank, sizeof(__pyx_k__rank), 0, 0, 1, 1},
+  {&__pyx_n_s__registry, __pyx_k__registry, sizeof(__pyx_k__registry), 0, 0, 1, 1},
+  {&__pyx_n_s__start, __pyx_k__start, sizeof(__pyx_k__start), 0, 0, 1, 1},
+  {&__pyx_n_s__stride, __pyx_k__stride, sizeof(__pyx_k__stride), 0, 0, 1, 1},
+  {&__pyx_n_s__valid, __pyx_k__valid, sizeof(__pyx_k__valid), 0, 0, 1, 1},
+  {0, 0, 0, 0, 0, 0, 0}
+};
+static int __Pyx_InitCachedBuiltins(void) {
+  __pyx_builtin_ValueError = __Pyx_GetName(__pyx_b, __pyx_n_s__ValueError); if (!__pyx_builtin_ValueError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 211; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  return 0;
+  __pyx_L1_error:;
+  return -1;
+}
+
+static int __Pyx_InitCachedConstants(void) {
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0);
+
+  /* "h5py/h5s.pyx":144
+ *         when their Python wrappers are freed.
+ *         """
+ *         with _objects.registry.lock:             # <<<<<<<<<<<<<<
+ *             H5Sclose(self.id)
+ *             if not self.valid:
+ */
+  __pyx_k_tuple_2 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_2);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_2));
+
+  /* "h5py/h5s.pyx":179
+ * 
+ *     def __reduce__(self):
+ *         return (type(self), (-1,), self.encode())             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_k_tuple_3 = PyTuple_Pack(1, __pyx_int_neg_1); if (unlikely(!__pyx_k_tuple_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 179; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_3);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_3));
+
+  /* "h5py/h5s.pyx":62
+ * 
+ * 
+ * def create(int class_code):             # <<<<<<<<<<<<<<
+ *     """(INT class_code) => SpaceID
+ * 
+ */
+  __pyx_k_tuple_11 = PyTuple_Pack(2, ((PyObject *)__pyx_n_s__class_code), ((PyObject *)__pyx_n_s__class_code)); if (unlikely(!__pyx_k_tuple_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_11);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_11));
+  __pyx_k_codeobj_12 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_11, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_13, __pyx_n_s__create, 62, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5s.pyx":71
+ * 
+ * 
+ * def create_simple(object dims_tpl, object max_dims_tpl=None):             # <<<<<<<<<<<<<<
+ *     """(TUPLE dims_tpl, TUPLE max_dims_tpl) => SpaceID
+ * 
+ */
+  __pyx_k_tuple_15 = PyTuple_Pack(5, ((PyObject *)__pyx_n_s__dims_tpl), ((PyObject *)__pyx_n_s__max_dims_tpl), ((PyObject *)__pyx_n_s__rank), ((PyObject *)__pyx_n_s__dims), ((PyObject *)__pyx_n_s__max_dims)); if (unlikely(!__pyx_k_tuple_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_15);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_15));
+  __pyx_k_codeobj_16 = (PyObject*)__Pyx_PyCode_New(2, 0, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_15, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_13, __pyx_n_s__create_simple, 71, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5s.pyx":103
+ *         efree(max_dims)
+ * 
+ * def decode(buf):             # <<<<<<<<<<<<<<
+ *     """(STRING buf) => SpaceID
+ * 
+ */
+  __pyx_k_tuple_17 = PyTuple_Pack(2, ((PyObject *)__pyx_n_s__buf), ((PyObject *)__pyx_n_s__buf_)); if (unlikely(!__pyx_k_tuple_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_17);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_17));
+  __pyx_k_codeobj_18 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_17, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_13, __pyx_n_s__decode, 103, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_18)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_RefNannyFinishContext();
+  return 0;
+  __pyx_L1_error:;
+  __Pyx_RefNannyFinishContext();
+  return -1;
+}
+
+static int __Pyx_InitGlobals(void) {
+  if (__Pyx_InitStrings(__pyx_string_tab) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  __pyx_int_neg_1 = PyInt_FromLong(-1); if (unlikely(!__pyx_int_neg_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  return 0;
+  __pyx_L1_error:;
+  return -1;
+}
+
+#if PY_MAJOR_VERSION < 3
+PyMODINIT_FUNC inith5s(void); /*proto*/
+PyMODINIT_FUNC inith5s(void)
+#else
+PyMODINIT_FUNC PyInit_h5s(void); /*proto*/
+PyMODINIT_FUNC PyInit_h5s(void)
+#endif
+{
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  __Pyx_RefNannyDeclarations
+  #if CYTHON_REFNANNY
+  __Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny");
+  if (!__Pyx_RefNanny) {
+      PyErr_Clear();
+      __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny");
+      if (!__Pyx_RefNanny)
+          Py_FatalError("failed to import 'refnanny' module");
+  }
+  #endif
+  __Pyx_RefNannySetupContext("PyMODINIT_FUNC PyInit_h5s(void)", 0);
+  if ( __Pyx_check_binary_version() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #ifdef __Pyx_CyFunction_USED
+  if (__Pyx_CyFunction_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #endif
+  #ifdef __Pyx_FusedFunction_USED
+  if (__pyx_FusedFunction_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #endif
+  #ifdef __Pyx_Generator_USED
+  if (__pyx_Generator_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #endif
+  /*--- Library function declarations ---*/
+  /*--- Threads initialization code ---*/
+  #if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS
+  #ifdef WITH_THREAD /* Python build with threading support? */
+  PyEval_InitThreads();
+  #endif
+  #endif
+  /*--- Module creation code ---*/
+  #if PY_MAJOR_VERSION < 3
+  __pyx_m = Py_InitModule4(__Pyx_NAMESTR("h5s"), __pyx_methods, __Pyx_DOCSTR(__pyx_k_10), 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m);
+  #else
+  __pyx_m = PyModule_Create(&__pyx_moduledef);
+  #endif
+  if (unlikely(!__pyx_m)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #if PY_MAJOR_VERSION >= 3
+  {
+    PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (!PyDict_GetItemString(modules, "h5py.h5s")) {
+      if (unlikely(PyDict_SetItemString(modules, "h5py.h5s", __pyx_m) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    }
+  }
+  #endif
+  __pyx_b = PyImport_AddModule(__Pyx_NAMESTR(__Pyx_BUILTIN_MODULE_NAME)); if (unlikely(!__pyx_b)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #if CYTHON_COMPILING_IN_PYPY
+  Py_INCREF(__pyx_b);
+  #endif
+  if (__Pyx_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  /*--- Initialize various global constants etc. ---*/
+  if (unlikely(__Pyx_InitGlobals() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__pyx_module_is_main_h5py__h5s) {
+    if (__Pyx_SetAttrString(__pyx_m, "__name__", __pyx_n_s____main__) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  }
+  /*--- Builtin init code ---*/
+  if (unlikely(__Pyx_InitCachedBuiltins() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  /*--- Constants init code ---*/
+  if (unlikely(__Pyx_InitCachedConstants() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  /*--- Global init code ---*/
+  /*--- Variable export code ---*/
+  /*--- Function export code ---*/
+  /*--- Type init code ---*/
+  __pyx_ptype_4h5py_8_objects_ObjectID = __Pyx_ImportType("h5py._objects", "ObjectID", sizeof(struct __pyx_obj_4h5py_8_objects_ObjectID), 1); if (unlikely(!__pyx_ptype_4h5py_8_objects_ObjectID)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_type_4h5py_3h5s_SpaceID.tp_base = __pyx_ptype_4h5py_8_objects_ObjectID;
+  if (PyType_Ready(&__pyx_type_4h5py_3h5s_SpaceID) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetAttrString(__pyx_m, "SpaceID", (PyObject *)&__pyx_type_4h5py_3h5s_SpaceID) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__pyx_type_4h5py_3h5s_SpaceID.tp_weaklistoffset == 0) __pyx_type_4h5py_3h5s_SpaceID.tp_weaklistoffset = offsetof(struct __pyx_obj_4h5py_3h5s_SpaceID, __pyx_base.__weakref__);
+  __pyx_ptype_4h5py_3h5s_SpaceID = &__pyx_type_4h5py_3h5s_SpaceID;
+  /*--- Type import code ---*/
+  __pyx_ptype_4h5py_5numpy_dtype = __Pyx_ImportType("numpy", "dtype", sizeof(PyArray_Descr), 0); if (unlikely(!__pyx_ptype_4h5py_5numpy_dtype)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_5numpy_ndarray = __Pyx_ImportType("numpy", "ndarray", sizeof(PyArrayObject), 0); if (unlikely(!__pyx_ptype_4h5py_5numpy_ndarray)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  /*--- Variable import code ---*/
+  /*--- Function import code ---*/
+  __pyx_t_1 = __Pyx_ImportModule("h5py.defs"); if (!__pyx_t_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Screate", (void (**)(void))&__pyx_f_4h5py_4defs_H5Screate, "hid_t (H5S_class_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Scopy", (void (**)(void))&__pyx_f_4h5py_4defs_H5Scopy, "hid_t (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Sclose", (void (**)(void))&__pyx_f_4h5py_4defs_H5Sclose, "herr_t (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Screate_simple", (void (**)(void))&__pyx_f_4h5py_4defs_H5Screate_simple, "hid_t (int, hsize_t *, hsize_t *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Sis_simple", (void (**)(void))&__pyx_f_4h5py_4defs_H5Sis_simple, "htri_t (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Soffset_simple", (void (**)(void))&__pyx_f_4h5py_4defs_H5Soffset_simple, "herr_t (hid_t, hssize_t *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Sget_simple_extent_ndims", (void (**)(void))&__pyx_f_4h5py_4defs_H5Sget_simple_extent_ndims, "int (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Sget_simple_extent_dims", (void (**)(void))&__pyx_f_4h5py_4defs_H5Sget_simple_extent_dims, "int (hid_t, hsize_t *, hsize_t *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Sget_simple_extent_npoints", (void (**)(void))&__pyx_f_4h5py_4defs_H5Sget_simple_extent_npoints, "hssize_t (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Sget_simple_extent_type", (void (**)(void))&__pyx_f_4h5py_4defs_H5Sget_simple_extent_type, "H5S_class_t (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Sextent_copy", (void (**)(void))&__pyx_f_4h5py_4defs_H5Sextent_copy, "herr_t (hid_t, hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Sset_extent_simple", (void (**)(void))&__pyx_f_4h5py_4defs_H5Sset_extent_simple, "herr_t (hid_t, int, hsize_t *, hsize_t *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Sset_extent_none", (void (**)(void))&__pyx_f_4h5py_4defs_H5Sset_extent_none, "herr_t (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Sget_select_type", (void (**)(void))&__pyx_f_4h5py_4defs_H5Sget_select_type, "H5S_sel_type (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Sget_select_npoints", (void (**)(void))&__pyx_f_4h5py_4defs_H5Sget_select_npoints, "hssize_t (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Sget_select_bounds", (void (**)(void))&__pyx_f_4h5py_4defs_H5Sget_select_bounds, "herr_t (hid_t, hsize_t *, hsize_t *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Sselect_all", (void (**)(void))&__pyx_f_4h5py_4defs_H5Sselect_all, "herr_t (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Sselect_none", (void (**)(void))&__pyx_f_4h5py_4defs_H5Sselect_none, "herr_t (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Sselect_valid", (void (**)(void))&__pyx_f_4h5py_4defs_H5Sselect_valid, "htri_t (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Sget_select_elem_npoints", (void (**)(void))&__pyx_f_4h5py_4defs_H5Sget_select_elem_npoints, "hssize_t (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Sget_select_elem_pointlist", (void (**)(void))&__pyx_f_4h5py_4defs_H5Sget_select_elem_pointlist, "herr_t (hid_t, hsize_t, hsize_t, hsize_t *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Sselect_elements", (void (**)(void))&__pyx_f_4h5py_4defs_H5Sselect_elements, "herr_t (hid_t, H5S_seloper_t, size_t, hsize_t **)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Sget_select_hyper_nblocks", (void (**)(void))&__pyx_f_4h5py_4defs_H5Sget_select_hyper_nblocks, "hssize_t (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Sget_select_hyper_blocklist", (void (**)(void))&__pyx_f_4h5py_4defs_H5Sget_select_hyper_blocklist, "herr_t (hid_t, hsize_t, hsize_t, hsize_t *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Sselect_hyperslab", (void (**)(void))&__pyx_f_4h5py_4defs_H5Sselect_hyperslab, "herr_t (hid_t, H5S_seloper_t, hsize_t *, hsize_t *, hsize_t *, hsize_t *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Sencode", (void (**)(void))&__pyx_f_4h5py_4defs_H5Sencode, "herr_t (hid_t, void *, size_t *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Sdecode", (void (**)(void))&__pyx_f_4h5py_4defs_H5Sdecode, "hid_t (void *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  Py_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_2 = __Pyx_ImportModule("h5py.utils"); if (!__pyx_t_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_2, "emalloc", (void (**)(void))&__pyx_f_4h5py_5utils_emalloc, "void *(size_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_2, "efree", (void (**)(void))&__pyx_f_4h5py_5utils_efree, "void (void *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_2, "convert_tuple", (void (**)(void))&__pyx_f_4h5py_5utils_convert_tuple, "int (PyObject *, hsize_t *, hsize_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_2, "convert_dims", (void (**)(void))&__pyx_f_4h5py_5utils_convert_dims, "PyObject *(hsize_t *, hsize_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_2, "require_tuple", (void (**)(void))&__pyx_f_4h5py_5utils_require_tuple, "int (PyObject *, int, int, char *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_2, "create_numpy_hsize", (void (**)(void))&__pyx_f_4h5py_5utils_create_numpy_hsize, "PyObject *(int, hsize_t *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_2, "create_hsize_array", (void (**)(void))&__pyx_f_4h5py_5utils_create_hsize_array, "PyObject *(PyObject *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  Py_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  /*--- Execution code ---*/
+
+  /* "h5py/h5s.pyx":19
+ * from numpy cimport ndarray
+ * 
+ * from h5py import _objects             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_INCREF(((PyObject *)__pyx_n_s___objects));
+  PyList_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_n_s___objects));
+  __Pyx_GIVEREF(((PyObject *)__pyx_n_s___objects));
+  __pyx_t_4 = __Pyx_Import(((PyObject *)__pyx_n_s__h5py), ((PyObject *)__pyx_t_3), -1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
+  __pyx_t_3 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s___objects);
+  if (__pyx_t_3 == NULL) {
+    if (PyErr_ExceptionMatches(PyExc_AttributeError)) __Pyx_RaiseImportError(__pyx_n_s___objects);
+    if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  }
+  __Pyx_GOTREF(__pyx_t_3);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s___objects, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5s.pyx":31
+ * 
+ * #enum H5S_seloper_t:
+ * SELECT_NOOP     = H5S_SELECT_NOOP             # <<<<<<<<<<<<<<
+ * SELECT_SET      = H5S_SELECT_SET
+ * SELECT_OR       = H5S_SELECT_OR
+ */
+  __pyx_t_4 = PyInt_FromLong(H5S_SELECT_NOOP); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__SELECT_NOOP, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5s.pyx":32
+ * #enum H5S_seloper_t:
+ * SELECT_NOOP     = H5S_SELECT_NOOP
+ * SELECT_SET      = H5S_SELECT_SET             # <<<<<<<<<<<<<<
+ * SELECT_OR       = H5S_SELECT_OR
+ * SELECT_AND      = H5S_SELECT_AND
+ */
+  __pyx_t_4 = PyInt_FromLong(H5S_SELECT_SET); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__SELECT_SET, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5s.pyx":33
+ * SELECT_NOOP     = H5S_SELECT_NOOP
+ * SELECT_SET      = H5S_SELECT_SET
+ * SELECT_OR       = H5S_SELECT_OR             # <<<<<<<<<<<<<<
+ * SELECT_AND      = H5S_SELECT_AND
+ * SELECT_XOR      = H5S_SELECT_XOR
+ */
+  __pyx_t_4 = PyInt_FromLong(H5S_SELECT_OR); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__SELECT_OR, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5s.pyx":34
+ * SELECT_SET      = H5S_SELECT_SET
+ * SELECT_OR       = H5S_SELECT_OR
+ * SELECT_AND      = H5S_SELECT_AND             # <<<<<<<<<<<<<<
+ * SELECT_XOR      = H5S_SELECT_XOR
+ * SELECT_NOTB     = H5S_SELECT_NOTB
+ */
+  __pyx_t_4 = PyInt_FromLong(H5S_SELECT_AND); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__SELECT_AND, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5s.pyx":35
+ * SELECT_OR       = H5S_SELECT_OR
+ * SELECT_AND      = H5S_SELECT_AND
+ * SELECT_XOR      = H5S_SELECT_XOR             # <<<<<<<<<<<<<<
+ * SELECT_NOTB     = H5S_SELECT_NOTB
+ * SELECT_NOTA     = H5S_SELECT_NOTA
+ */
+  __pyx_t_4 = PyInt_FromLong(H5S_SELECT_XOR); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__SELECT_XOR, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5s.pyx":36
+ * SELECT_AND      = H5S_SELECT_AND
+ * SELECT_XOR      = H5S_SELECT_XOR
+ * SELECT_NOTB     = H5S_SELECT_NOTB             # <<<<<<<<<<<<<<
+ * SELECT_NOTA     = H5S_SELECT_NOTA
+ * SELECT_APPEND   = H5S_SELECT_APPEND
+ */
+  __pyx_t_4 = PyInt_FromLong(H5S_SELECT_NOTB); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__SELECT_NOTB, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5s.pyx":37
+ * SELECT_XOR      = H5S_SELECT_XOR
+ * SELECT_NOTB     = H5S_SELECT_NOTB
+ * SELECT_NOTA     = H5S_SELECT_NOTA             # <<<<<<<<<<<<<<
+ * SELECT_APPEND   = H5S_SELECT_APPEND
+ * SELECT_PREPEND  = H5S_SELECT_PREPEND
+ */
+  __pyx_t_4 = PyInt_FromLong(H5S_SELECT_NOTA); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__SELECT_NOTA, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5s.pyx":38
+ * SELECT_NOTB     = H5S_SELECT_NOTB
+ * SELECT_NOTA     = H5S_SELECT_NOTA
+ * SELECT_APPEND   = H5S_SELECT_APPEND             # <<<<<<<<<<<<<<
+ * SELECT_PREPEND  = H5S_SELECT_PREPEND
+ * SELECT_INVALID  = H5S_SELECT_INVALID
+ */
+  __pyx_t_4 = PyInt_FromLong(H5S_SELECT_APPEND); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__SELECT_APPEND, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5s.pyx":39
+ * SELECT_NOTA     = H5S_SELECT_NOTA
+ * SELECT_APPEND   = H5S_SELECT_APPEND
+ * SELECT_PREPEND  = H5S_SELECT_PREPEND             # <<<<<<<<<<<<<<
+ * SELECT_INVALID  = H5S_SELECT_INVALID
+ * 
+ */
+  __pyx_t_4 = PyInt_FromLong(H5S_SELECT_PREPEND); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__SELECT_PREPEND, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5s.pyx":40
+ * SELECT_APPEND   = H5S_SELECT_APPEND
+ * SELECT_PREPEND  = H5S_SELECT_PREPEND
+ * SELECT_INVALID  = H5S_SELECT_INVALID             # <<<<<<<<<<<<<<
+ * 
+ * ALL = lockid(H5S_ALL)   # This is accepted in lieu of an actual identifier
+ */
+  __pyx_t_4 = PyInt_FromLong(H5S_SELECT_INVALID); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__SELECT_INVALID, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5s.pyx":42
+ * SELECT_INVALID  = H5S_SELECT_INVALID
+ * 
+ * ALL = lockid(H5S_ALL)   # This is accepted in lieu of an actual identifier             # <<<<<<<<<<<<<<
+ *                         # in functions like H5Dread, so wrap it.
+ * UNLIMITED = H5S_UNLIMITED
+ */
+  __pyx_t_4 = __pyx_f_4h5py_3h5s_lockid(H5S_ALL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 42; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ALL, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 42; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5s.pyx":44
+ * ALL = lockid(H5S_ALL)   # This is accepted in lieu of an actual identifier
+ *                         # in functions like H5Dread, so wrap it.
+ * UNLIMITED = H5S_UNLIMITED             # <<<<<<<<<<<<<<
+ * 
+ * #enum H5S_class_t
+ */
+  __pyx_t_4 = __Pyx_PyInt_to_py_hsize_t(H5S_UNLIMITED); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__UNLIMITED, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5s.pyx":47
+ * 
+ * #enum H5S_class_t
+ * NO_CLASS = H5S_NO_CLASS             # <<<<<<<<<<<<<<
+ * SCALAR   = H5S_SCALAR
+ * SIMPLE   = H5S_SIMPLE
+ */
+  __pyx_t_4 = PyInt_FromLong(H5S_NO_CLASS); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__NO_CLASS, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5s.pyx":48
+ * #enum H5S_class_t
+ * NO_CLASS = H5S_NO_CLASS
+ * SCALAR   = H5S_SCALAR             # <<<<<<<<<<<<<<
+ * SIMPLE   = H5S_SIMPLE
+ * _NULL = H5S_NULL
+ */
+  __pyx_t_4 = PyInt_FromLong(H5S_SCALAR); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__SCALAR, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5s.pyx":49
+ * NO_CLASS = H5S_NO_CLASS
+ * SCALAR   = H5S_SCALAR
+ * SIMPLE   = H5S_SIMPLE             # <<<<<<<<<<<<<<
+ * _NULL = H5S_NULL
+ * 
+ */
+  __pyx_t_4 = PyInt_FromLong(H5S_SIMPLE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__SIMPLE, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5s.pyx":50
+ * SCALAR   = H5S_SCALAR
+ * SIMPLE   = H5S_SIMPLE
+ * _NULL = H5S_NULL             # <<<<<<<<<<<<<<
+ * 
+ * #enum H5S_sel_type
+ */
+  __pyx_t_4 = PyInt_FromLong(H5S_NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s___NULL, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5s.pyx":53
+ * 
+ * #enum H5S_sel_type
+ * SEL_ERROR       = H5S_SEL_ERROR             # <<<<<<<<<<<<<<
+ * SEL_NONE        = H5S_SEL_NONE
+ * SEL_POINTS      = H5S_SEL_POINTS
+ */
+  __pyx_t_4 = PyInt_FromLong(H5S_SEL_ERROR); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__SEL_ERROR, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5s.pyx":54
+ * #enum H5S_sel_type
+ * SEL_ERROR       = H5S_SEL_ERROR
+ * SEL_NONE        = H5S_SEL_NONE             # <<<<<<<<<<<<<<
+ * SEL_POINTS      = H5S_SEL_POINTS
+ * SEL_HYPERSLABS  = H5S_SEL_HYPERSLABS
+ */
+  __pyx_t_4 = PyInt_FromLong(H5S_SEL_NONE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__SEL_NONE, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5s.pyx":55
+ * SEL_ERROR       = H5S_SEL_ERROR
+ * SEL_NONE        = H5S_SEL_NONE
+ * SEL_POINTS      = H5S_SEL_POINTS             # <<<<<<<<<<<<<<
+ * SEL_HYPERSLABS  = H5S_SEL_HYPERSLABS
+ * SEL_ALL         = H5S_SEL_ALL
+ */
+  __pyx_t_4 = PyInt_FromLong(H5S_SEL_POINTS); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__SEL_POINTS, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5s.pyx":56
+ * SEL_NONE        = H5S_SEL_NONE
+ * SEL_POINTS      = H5S_SEL_POINTS
+ * SEL_HYPERSLABS  = H5S_SEL_HYPERSLABS             # <<<<<<<<<<<<<<
+ * SEL_ALL         = H5S_SEL_ALL
+ * 
+ */
+  __pyx_t_4 = PyInt_FromLong(H5S_SEL_HYPERSLABS); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__SEL_HYPERSLABS, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5s.pyx":57
+ * SEL_POINTS      = H5S_SEL_POINTS
+ * SEL_HYPERSLABS  = H5S_SEL_HYPERSLABS
+ * SEL_ALL         = H5S_SEL_ALL             # <<<<<<<<<<<<<<
+ * 
+ * # === Basic dataspace operations ==============================================
+ */
+  __pyx_t_4 = PyInt_FromLong(H5S_SEL_ALL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__SEL_ALL, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5s.pyx":62
+ * 
+ * 
+ * def create(int class_code):             # <<<<<<<<<<<<<<
+ *     """(INT class_code) => SpaceID
+ * 
+ */
+  __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_4h5py_3h5s_1create, NULL, __pyx_n_s_14); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__create, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5s.pyx":71
+ * 
+ * 
+ * def create_simple(object dims_tpl, object max_dims_tpl=None):             # <<<<<<<<<<<<<<
+ *     """(TUPLE dims_tpl, TUPLE max_dims_tpl) => SpaceID
+ * 
+ */
+  __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_4h5py_3h5s_3create_simple, NULL, __pyx_n_s_14); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__create_simple, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5s.pyx":103
+ *         efree(max_dims)
+ * 
+ * def decode(buf):             # <<<<<<<<<<<<<<
+ *     """(STRING buf) => SpaceID
+ * 
+ */
+  __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_4h5py_3h5s_5decode, NULL, __pyx_n_s_14); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__decode, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5s.pyx":440
+ * 
+ * 
+ *     def select_elements(self, object coords, int op=H5S_SELECT_SET):             # <<<<<<<<<<<<<<
+ *         """(SEQUENCE coords, INT op=SELECT_SET)
+ * 
+ */
+  __pyx_k_5 = H5S_SELECT_SET;
+
+  /* "h5py/h5s.pyx":514
+ * 
+ *     def select_hyperslab(self, object start, object count, object stride=None,
+ *                          object block=None, int op=H5S_SELECT_SET):             # <<<<<<<<<<<<<<
+ *         """(TUPLE start, TUPLE count, TUPLE stride=None, TUPLE block=None,
+ *              INT op=SELECT_SET)
+ */
+  __pyx_k_8 = H5S_SELECT_SET;
+
+  /* "h5py/h5s.pyx":1
+ * # This file is part of h5py, a Python interface to the HDF5 library.             # <<<<<<<<<<<<<<
+ * #
+ * # http://www.h5py.org
+ */
+  __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(((PyObject *)__pyx_t_4));
+  if (PyDict_SetItem(__pyx_t_4, ((PyObject *)__pyx_kp_u_19), ((PyObject *)__pyx_kp_u_20)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s____test__, ((PyObject *)__pyx_t_4)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  if (__pyx_m) {
+    __Pyx_AddTraceback("init h5py.h5s", __pyx_clineno, __pyx_lineno, __pyx_filename);
+    Py_DECREF(__pyx_m); __pyx_m = 0;
+  } else if (!PyErr_Occurred()) {
+    PyErr_SetString(PyExc_ImportError, "init h5py.h5s");
+  }
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  #if PY_MAJOR_VERSION < 3
+  return;
+  #else
+  return __pyx_m;
+  #endif
+}
+
+/* Runtime support code */
+#if CYTHON_REFNANNY
+static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) {
+    PyObject *m = NULL, *p = NULL;
+    void *r = NULL;
+    m = PyImport_ImportModule((char *)modname);
+    if (!m) goto end;
+    p = PyObject_GetAttrString(m, (char *)"RefNannyAPI");
+    if (!p) goto end;
+    r = PyLong_AsVoidPtr(p);
+end:
+    Py_XDECREF(p);
+    Py_XDECREF(m);
+    return (__Pyx_RefNannyAPIStruct *)r;
+}
+#endif /* CYTHON_REFNANNY */
+
+static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name) {
+    PyObject *result;
+    result = PyObject_GetAttr(dict, name);
+    if (!result) {
+        if (dict != __pyx_b) {
+            PyErr_Clear();
+            result = PyObject_GetAttr(__pyx_b, name);
+        }
+        if (!result) {
+            PyErr_SetObject(PyExc_NameError, name);
+        }
+    }
+    return result;
+}
+
+static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) {
+    if (unlikely(!type)) {
+        PyErr_Format(PyExc_SystemError, "Missing type object");
+        return 0;
+    }
+    if (likely(PyObject_TypeCheck(obj, type)))
+        return 1;
+    PyErr_Format(PyExc_TypeError, "Cannot convert %.200s to %.200s",
+                 Py_TYPE(obj)->tp_name, type->tp_name);
+    return 0;
+}
+
+static void __Pyx_RaiseDoubleKeywordsError(
+    const char* func_name,
+    PyObject* kw_name)
+{
+    PyErr_Format(PyExc_TypeError,
+        #if PY_MAJOR_VERSION >= 3
+        "%s() got multiple values for keyword argument '%U'", func_name, kw_name);
+        #else
+        "%s() got multiple values for keyword argument '%s'", func_name,
+        PyString_AsString(kw_name));
+        #endif
+}
+
+static int __Pyx_ParseOptionalKeywords(
+    PyObject *kwds,
+    PyObject **argnames[],
+    PyObject *kwds2,
+    PyObject *values[],
+    Py_ssize_t num_pos_args,
+    const char* function_name)
+{
+    PyObject *key = 0, *value = 0;
+    Py_ssize_t pos = 0;
+    PyObject*** name;
+    PyObject*** first_kw_arg = argnames + num_pos_args;
+    while (PyDict_Next(kwds, &pos, &key, &value)) {
+        name = first_kw_arg;
+        while (*name && (**name != key)) name++;
+        if (*name) {
+            values[name-argnames] = value;
+            continue;
+        }
+        name = first_kw_arg;
+        #if PY_MAJOR_VERSION < 3
+        if (likely(PyString_CheckExact(key)) || likely(PyString_Check(key))) {
+            while (*name) {
+                if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key))
+                        && _PyString_Eq(**name, key)) {
+                    values[name-argnames] = value;
+                    break;
+                }
+                name++;
+            }
+            if (*name) continue;
+            else {
+                PyObject*** argname = argnames;
+                while (argname != first_kw_arg) {
+                    if ((**argname == key) || (
+                            (CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**argname) == PyString_GET_SIZE(key))
+                             && _PyString_Eq(**argname, key))) {
+                        goto arg_passed_twice;
+                    }
+                    argname++;
+                }
+            }
+        } else
+        #endif
+        if (likely(PyUnicode_Check(key))) {
+            while (*name) {
+                int cmp = (**name == key) ? 0 :
+                #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
+                    (PyUnicode_GET_SIZE(**name) != PyUnicode_GET_SIZE(key)) ? 1 :
+                #endif
+                    PyUnicode_Compare(**name, key);
+                if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
+                if (cmp == 0) {
+                    values[name-argnames] = value;
+                    break;
+                }
+                name++;
+            }
+            if (*name) continue;
+            else {
+                PyObject*** argname = argnames;
+                while (argname != first_kw_arg) {
+                    int cmp = (**argname == key) ? 0 :
+                    #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
+                        (PyUnicode_GET_SIZE(**argname) != PyUnicode_GET_SIZE(key)) ? 1 :
+                    #endif
+                        PyUnicode_Compare(**argname, key);
+                    if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
+                    if (cmp == 0) goto arg_passed_twice;
+                    argname++;
+                }
+            }
+        } else
+            goto invalid_keyword_type;
+        if (kwds2) {
+            if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad;
+        } else {
+            goto invalid_keyword;
+        }
+    }
+    return 0;
+arg_passed_twice:
+    __Pyx_RaiseDoubleKeywordsError(function_name, key);
+    goto bad;
+invalid_keyword_type:
+    PyErr_Format(PyExc_TypeError,
+        "%s() keywords must be strings", function_name);
+    goto bad;
+invalid_keyword:
+    PyErr_Format(PyExc_TypeError,
+    #if PY_MAJOR_VERSION < 3
+        "%s() got an unexpected keyword argument '%s'",
+        function_name, PyString_AsString(key));
+    #else
+        "%s() got an unexpected keyword argument '%U'",
+        function_name, key);
+    #endif
+bad:
+    return -1;
+}
+
+static void __Pyx_RaiseArgtupleInvalid(
+    const char* func_name,
+    int exact,
+    Py_ssize_t num_min,
+    Py_ssize_t num_max,
+    Py_ssize_t num_found)
+{
+    Py_ssize_t num_expected;
+    const char *more_or_less;
+    if (num_found < num_min) {
+        num_expected = num_min;
+        more_or_less = "at least";
+    } else {
+        num_expected = num_max;
+        more_or_less = "at most";
+    }
+    if (exact) {
+        more_or_less = "exactly";
+    }
+    PyErr_Format(PyExc_TypeError,
+                 "%s() takes %s %" CYTHON_FORMAT_SSIZE_T "d positional argument%s (%" CYTHON_FORMAT_SSIZE_T "d given)",
+                 func_name, more_or_less, num_expected,
+                 (num_expected == 1) ? "" : "s", num_found);
+}
+
+static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb) {
+#if CYTHON_COMPILING_IN_CPYTHON
+    PyObject *tmp_type, *tmp_value, *tmp_tb;
+    PyThreadState *tstate = PyThreadState_GET();
+    tmp_type = tstate->curexc_type;
+    tmp_value = tstate->curexc_value;
+    tmp_tb = tstate->curexc_traceback;
+    tstate->curexc_type = type;
+    tstate->curexc_value = value;
+    tstate->curexc_traceback = tb;
+    Py_XDECREF(tmp_type);
+    Py_XDECREF(tmp_value);
+    Py_XDECREF(tmp_tb);
+#else
+    PyErr_Restore(type, value, tb);
+#endif
+}
+static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb) {
+#if CYTHON_COMPILING_IN_CPYTHON
+    PyThreadState *tstate = PyThreadState_GET();
+    *type = tstate->curexc_type;
+    *value = tstate->curexc_value;
+    *tb = tstate->curexc_traceback;
+    tstate->curexc_type = 0;
+    tstate->curexc_value = 0;
+    tstate->curexc_traceback = 0;
+#else
+    PyErr_Fetch(type, value, tb);
+#endif
+}
+
+static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) {
+    PyObject *local_type, *local_value, *local_tb;
+#if CYTHON_COMPILING_IN_CPYTHON
+    PyObject *tmp_type, *tmp_value, *tmp_tb;
+    PyThreadState *tstate = PyThreadState_GET();
+    local_type = tstate->curexc_type;
+    local_value = tstate->curexc_value;
+    local_tb = tstate->curexc_traceback;
+    tstate->curexc_type = 0;
+    tstate->curexc_value = 0;
+    tstate->curexc_traceback = 0;
+#else
+    PyErr_Fetch(&local_type, &local_value, &local_tb);
+#endif
+    PyErr_NormalizeException(&local_type, &local_value, &local_tb);
+#if CYTHON_COMPILING_IN_CPYTHON
+    if (unlikely(tstate->curexc_type))
+#else
+    if (unlikely(PyErr_Occurred()))
+#endif
+        goto bad;
+    #if PY_MAJOR_VERSION >= 3
+    if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0))
+        goto bad;
+    #endif
+    Py_INCREF(local_type);
+    Py_INCREF(local_value);
+    Py_INCREF(local_tb);
+    *type = local_type;
+    *value = local_value;
+    *tb = local_tb;
+#if CYTHON_COMPILING_IN_CPYTHON
+    tmp_type = tstate->exc_type;
+    tmp_value = tstate->exc_value;
+    tmp_tb = tstate->exc_traceback;
+    tstate->exc_type = local_type;
+    tstate->exc_value = local_value;
+    tstate->exc_traceback = local_tb;
+    /* Make sure tstate is in a consistent state when we XDECREF
+       these objects (DECREF may run arbitrary code). */
+    Py_XDECREF(tmp_type);
+    Py_XDECREF(tmp_value);
+    Py_XDECREF(tmp_tb);
+#else
+    PyErr_SetExcInfo(local_type, local_value, local_tb);
+#endif
+    return 0;
+bad:
+    *type = 0;
+    *value = 0;
+    *tb = 0;
+    Py_XDECREF(local_type);
+    Py_XDECREF(local_value);
+    Py_XDECREF(local_tb);
+    return -1;
+}
+
+#if PY_MAJOR_VERSION < 3
+static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb,
+                        CYTHON_UNUSED PyObject *cause) {
+    Py_XINCREF(type);
+    if (!value || value == Py_None)
+        value = NULL;
+    else
+        Py_INCREF(value);
+    if (!tb || tb == Py_None)
+        tb = NULL;
+    else {
+        Py_INCREF(tb);
+        if (!PyTraceBack_Check(tb)) {
+            PyErr_SetString(PyExc_TypeError,
+                "raise: arg 3 must be a traceback or None");
+            goto raise_error;
+        }
+    }
+    #if PY_VERSION_HEX < 0x02050000
+    if (PyClass_Check(type)) {
+    #else
+    if (PyType_Check(type)) {
+    #endif
+#if CYTHON_COMPILING_IN_PYPY
+        if (!value) {
+            Py_INCREF(Py_None);
+            value = Py_None;
+        }
+#endif
+        PyErr_NormalizeException(&type, &value, &tb);
+    } else {
+        if (value) {
+            PyErr_SetString(PyExc_TypeError,
+                "instance exception may not have a separate value");
+            goto raise_error;
+        }
+        value = type;
+        #if PY_VERSION_HEX < 0x02050000
+            if (PyInstance_Check(type)) {
+                type = (PyObject*) ((PyInstanceObject*)type)->in_class;
+                Py_INCREF(type);
+            }
+            else {
+                type = 0;
+                PyErr_SetString(PyExc_TypeError,
+                    "raise: exception must be an old-style class or instance");
+                goto raise_error;
+            }
+        #else
+            type = (PyObject*) Py_TYPE(type);
+            Py_INCREF(type);
+            if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) {
+                PyErr_SetString(PyExc_TypeError,
+                    "raise: exception class must be a subclass of BaseException");
+                goto raise_error;
+            }
+        #endif
+    }
+    __Pyx_ErrRestore(type, value, tb);
+    return;
+raise_error:
+    Py_XDECREF(value);
+    Py_XDECREF(type);
+    Py_XDECREF(tb);
+    return;
+}
+#else /* Python 3+ */
+static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) {
+    PyObject* owned_instance = NULL;
+    if (tb == Py_None) {
+        tb = 0;
+    } else if (tb && !PyTraceBack_Check(tb)) {
+        PyErr_SetString(PyExc_TypeError,
+            "raise: arg 3 must be a traceback or None");
+        goto bad;
+    }
+    if (value == Py_None)
+        value = 0;
+    if (PyExceptionInstance_Check(type)) {
+        if (value) {
+            PyErr_SetString(PyExc_TypeError,
+                "instance exception may not have a separate value");
+            goto bad;
+        }
+        value = type;
+        type = (PyObject*) Py_TYPE(value);
+    } else if (PyExceptionClass_Check(type)) {
+        PyObject *args;
+        if (!value)
+            args = PyTuple_New(0);
+        else if (PyTuple_Check(value)) {
+            Py_INCREF(value);
+            args = value;
+        }
+        else
+            args = PyTuple_Pack(1, value);
+        if (!args)
+            goto bad;
+        owned_instance = PyEval_CallObject(type, args);
+        Py_DECREF(args);
+        if (!owned_instance)
+            goto bad;
+        value = owned_instance;
+        if (!PyExceptionInstance_Check(value)) {
+            PyErr_Format(PyExc_TypeError,
+                         "calling %R should have returned an instance of "
+                         "BaseException, not %R",
+                         type, Py_TYPE(value));
+            goto bad;
+        }
+    } else {
+        PyErr_SetString(PyExc_TypeError,
+            "raise: exception class must be a subclass of BaseException");
+        goto bad;
+    }
+    if (cause && cause != Py_None) {
+        PyObject *fixed_cause;
+        if (PyExceptionClass_Check(cause)) {
+            fixed_cause = PyObject_CallObject(cause, NULL);
+            if (fixed_cause == NULL)
+                goto bad;
+        }
+        else if (PyExceptionInstance_Check(cause)) {
+            fixed_cause = cause;
+            Py_INCREF(fixed_cause);
+        }
+        else {
+            PyErr_SetString(PyExc_TypeError,
+                            "exception causes must derive from "
+                            "BaseException");
+            goto bad;
+        }
+        PyException_SetCause(value, fixed_cause);
+    }
+    PyErr_SetObject(type, value);
+    if (tb) {
+        PyThreadState *tstate = PyThreadState_GET();
+        PyObject* tmp_tb = tstate->curexc_traceback;
+        if (tb != tmp_tb) {
+            Py_INCREF(tb);
+            tstate->curexc_traceback = tb;
+            Py_XDECREF(tmp_tb);
+        }
+    }
+bad:
+    Py_XDECREF(owned_instance);
+    return;
+}
+#endif
+
+static int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, int none_allowed,
+    const char *name, int exact)
+{
+    if (!type) {
+        PyErr_Format(PyExc_SystemError, "Missing type object");
+        return 0;
+    }
+    if (none_allowed && obj == Py_None) return 1;
+    else if (exact) {
+        if (Py_TYPE(obj) == type) return 1;
+    }
+    else {
+        if (PyObject_TypeCheck(obj, type)) return 1;
+    }
+    PyErr_Format(PyExc_TypeError,
+        "Argument '%s' has incorrect type (expected %s, got %s)",
+        name, type->tp_name, Py_TYPE(obj)->tp_name);
+    return 0;
+}
+
+static void __Pyx_call_next_tp_dealloc(PyObject* obj, destructor current_tp_dealloc) {
+    PyTypeObject* type = Py_TYPE(obj);
+    while (type && type->tp_dealloc != current_tp_dealloc)
+        type = type->tp_base;
+    while (type && type->tp_dealloc == current_tp_dealloc)
+        type = type->tp_base;
+    if (type)
+        type->tp_dealloc(obj);
+}
+
+static int __Pyx_call_next_tp_traverse(PyObject* obj, visitproc v, void *a, traverseproc current_tp_traverse) {
+    PyTypeObject* type = Py_TYPE(obj);
+    while (type && type->tp_traverse != current_tp_traverse)
+        type = type->tp_base;
+    while (type && type->tp_traverse == current_tp_traverse)
+        type = type->tp_base;
+    if (type && type->tp_traverse)
+        return type->tp_traverse(obj, v, a);
+    return 0;
+}
+
+static void __Pyx_call_next_tp_clear(PyObject* obj, inquiry current_tp_clear) {
+    PyTypeObject* type = Py_TYPE(obj);
+    while (type && type->tp_clear != current_tp_clear)
+        type = type->tp_base;
+    while (type && type->tp_clear == current_tp_clear)
+        type = type->tp_base;
+    if (type && type->tp_clear)
+        type->tp_clear(obj);
+}
+
+static CYTHON_INLINE void __Pyx_ExceptionSave(PyObject **type, PyObject **value, PyObject **tb) {
+#if CYTHON_COMPILING_IN_CPYTHON
+    PyThreadState *tstate = PyThreadState_GET();
+    *type = tstate->exc_type;
+    *value = tstate->exc_value;
+    *tb = tstate->exc_traceback;
+    Py_XINCREF(*type);
+    Py_XINCREF(*value);
+    Py_XINCREF(*tb);
+#else
+    PyErr_GetExcInfo(type, value, tb);
+#endif
+}
+static void __Pyx_ExceptionReset(PyObject *type, PyObject *value, PyObject *tb) {
+#if CYTHON_COMPILING_IN_CPYTHON
+    PyObject *tmp_type, *tmp_value, *tmp_tb;
+    PyThreadState *tstate = PyThreadState_GET();
+    tmp_type = tstate->exc_type;
+    tmp_value = tstate->exc_value;
+    tmp_tb = tstate->exc_traceback;
+    tstate->exc_type = type;
+    tstate->exc_value = value;
+    tstate->exc_traceback = tb;
+    Py_XDECREF(tmp_type);
+    Py_XDECREF(tmp_value);
+    Py_XDECREF(tmp_tb);
+#else
+    PyErr_SetExcInfo(type, value, tb);
+#endif
+}
+
+static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) {
+    PyObject *empty_list = 0;
+    PyObject *module = 0;
+    PyObject *global_dict = 0;
+    PyObject *empty_dict = 0;
+    PyObject *list;
+    #if PY_VERSION_HEX < 0x03030000
+    PyObject *py_import = 0;
+    py_import = __Pyx_GetAttrString(__pyx_b, "__import__");
+    if (!py_import)
+        goto bad;
+    #endif
+    if (from_list)
+        list = from_list;
+    else {
+        empty_list = PyList_New(0);
+        if (!empty_list)
+            goto bad;
+        list = empty_list;
+    }
+    global_dict = PyModule_GetDict(__pyx_m);
+    if (!global_dict)
+        goto bad;
+    empty_dict = PyDict_New();
+    if (!empty_dict)
+        goto bad;
+    #if PY_VERSION_HEX >= 0x02050000
+    {
+        #if PY_MAJOR_VERSION >= 3
+        if (level == -1) {
+            if (strchr(__Pyx_MODULE_NAME, '.')) {
+                #if PY_VERSION_HEX < 0x03030000
+                PyObject *py_level = PyInt_FromLong(1);
+                if (!py_level)
+                    goto bad;
+                module = PyObject_CallFunctionObjArgs(py_import,
+                    name, global_dict, empty_dict, list, py_level, NULL);
+                Py_DECREF(py_level);
+                #else
+                module = PyImport_ImportModuleLevelObject(
+                    name, global_dict, empty_dict, list, 1);
+                #endif
+                if (!module) {
+                    if (!PyErr_ExceptionMatches(PyExc_ImportError))
+                        goto bad;
+                    PyErr_Clear();
+                }
+            }
+            level = 0; /* try absolute import on failure */
+        }
+        #endif
+        if (!module) {
+            #if PY_VERSION_HEX < 0x03030000
+            PyObject *py_level = PyInt_FromLong(level);
+            if (!py_level)
+                goto bad;
+            module = PyObject_CallFunctionObjArgs(py_import,
+                name, global_dict, empty_dict, list, py_level, NULL);
+            Py_DECREF(py_level);
+            #else
+            module = PyImport_ImportModuleLevelObject(
+                name, global_dict, empty_dict, list, level);
+            #endif
+        }
+    }
+    #else
+    if (level>0) {
+        PyErr_SetString(PyExc_RuntimeError, "Relative import is not supported for Python <=2.4.");
+        goto bad;
+    }
+    module = PyObject_CallFunctionObjArgs(py_import,
+        name, global_dict, empty_dict, list, NULL);
+    #endif
+bad:
+    #if PY_VERSION_HEX < 0x03030000
+    Py_XDECREF(py_import);
+    #endif
+    Py_XDECREF(empty_list);
+    Py_XDECREF(empty_dict);
+    return module;
+}
+
+static CYTHON_INLINE void __Pyx_RaiseImportError(PyObject *name) {
+#if PY_MAJOR_VERSION < 3
+    PyErr_Format(PyExc_ImportError, "cannot import name %.230s",
+                 PyString_AsString(name));
+#else
+    PyErr_Format(PyExc_ImportError, "cannot import name %S", name);
+#endif
+}
+
+static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_hsize_t(hsize_t val) {
+    const hsize_t neg_one = (hsize_t)-1, const_zero = (hsize_t)0;
+    const int is_unsigned = const_zero < neg_one;
+    if ((sizeof(hsize_t) == sizeof(char))  ||
+        (sizeof(hsize_t) == sizeof(short))) {
+        return PyInt_FromLong((long)val);
+    } else if ((sizeof(hsize_t) == sizeof(int)) ||
+               (sizeof(hsize_t) == sizeof(long))) {
+        if (is_unsigned)
+            return PyLong_FromUnsignedLong((unsigned long)val);
+        else
+            return PyInt_FromLong((long)val);
+    } else if (sizeof(hsize_t) == sizeof(PY_LONG_LONG)) {
+        if (is_unsigned)
+            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG)val);
+        else
+            return PyLong_FromLongLong((PY_LONG_LONG)val);
+    } else {
+        int one = 1; int little = (int)*(unsigned char *)&one;
+        unsigned char *bytes = (unsigned char *)&val;
+        return _PyLong_FromByteArray(bytes, sizeof(hsize_t),
+                                     little, !is_unsigned);
+    }
+}
+
+static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_hid_t(hid_t val) {
+    const hid_t neg_one = (hid_t)-1, const_zero = (hid_t)0;
+    const int is_unsigned = const_zero < neg_one;
+    if ((sizeof(hid_t) == sizeof(char))  ||
+        (sizeof(hid_t) == sizeof(short))) {
+        return PyInt_FromLong((long)val);
+    } else if ((sizeof(hid_t) == sizeof(int)) ||
+               (sizeof(hid_t) == sizeof(long))) {
+        if (is_unsigned)
+            return PyLong_FromUnsignedLong((unsigned long)val);
+        else
+            return PyInt_FromLong((long)val);
+    } else if (sizeof(hid_t) == sizeof(PY_LONG_LONG)) {
+        if (is_unsigned)
+            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG)val);
+        else
+            return PyLong_FromLongLong((PY_LONG_LONG)val);
+    } else {
+        int one = 1; int little = (int)*(unsigned char *)&one;
+        unsigned char *bytes = (unsigned char *)&val;
+        return _PyLong_FromByteArray(bytes, sizeof(hid_t),
+                                     little, !is_unsigned);
+    }
+}
+
+static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_hssize_t(hssize_t val) {
+    const hssize_t neg_one = (hssize_t)-1, const_zero = (hssize_t)0;
+    const int is_unsigned = const_zero < neg_one;
+    if ((sizeof(hssize_t) == sizeof(char))  ||
+        (sizeof(hssize_t) == sizeof(short))) {
+        return PyInt_FromLong((long)val);
+    } else if ((sizeof(hssize_t) == sizeof(int)) ||
+               (sizeof(hssize_t) == sizeof(long))) {
+        if (is_unsigned)
+            return PyLong_FromUnsignedLong((unsigned long)val);
+        else
+            return PyInt_FromLong((long)val);
+    } else if (sizeof(hssize_t) == sizeof(PY_LONG_LONG)) {
+        if (is_unsigned)
+            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG)val);
+        else
+            return PyLong_FromLongLong((PY_LONG_LONG)val);
+    } else {
+        int one = 1; int little = (int)*(unsigned char *)&one;
+        unsigned char *bytes = (unsigned char *)&val;
+        return _PyLong_FromByteArray(bytes, sizeof(hssize_t),
+                                     little, !is_unsigned);
+    }
+}
+
+static CYTHON_INLINE unsigned char __Pyx_PyInt_AsUnsignedChar(PyObject* x) {
+    const unsigned char neg_one = (unsigned char)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(unsigned char) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(unsigned char)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to unsigned char" :
+                    "value too large to convert to unsigned char");
+            }
+            return (unsigned char)-1;
+        }
+        return (unsigned char)val;
+    }
+    return (unsigned char)__Pyx_PyInt_AsUnsignedLong(x);
+}
+
+static CYTHON_INLINE unsigned short __Pyx_PyInt_AsUnsignedShort(PyObject* x) {
+    const unsigned short neg_one = (unsigned short)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(unsigned short) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(unsigned short)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to unsigned short" :
+                    "value too large to convert to unsigned short");
+            }
+            return (unsigned short)-1;
+        }
+        return (unsigned short)val;
+    }
+    return (unsigned short)__Pyx_PyInt_AsUnsignedLong(x);
+}
+
+static CYTHON_INLINE unsigned int __Pyx_PyInt_AsUnsignedInt(PyObject* x) {
+    const unsigned int neg_one = (unsigned int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(unsigned int) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(unsigned int)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to unsigned int" :
+                    "value too large to convert to unsigned int");
+            }
+            return (unsigned int)-1;
+        }
+        return (unsigned int)val;
+    }
+    return (unsigned int)__Pyx_PyInt_AsUnsignedLong(x);
+}
+
+static CYTHON_INLINE char __Pyx_PyInt_AsChar(PyObject* x) {
+    const char neg_one = (char)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(char) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(char)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to char" :
+                    "value too large to convert to char");
+            }
+            return (char)-1;
+        }
+        return (char)val;
+    }
+    return (char)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE short __Pyx_PyInt_AsShort(PyObject* x) {
+    const short neg_one = (short)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(short) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(short)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to short" :
+                    "value too large to convert to short");
+            }
+            return (short)-1;
+        }
+        return (short)val;
+    }
+    return (short)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE int __Pyx_PyInt_AsInt(PyObject* x) {
+    const int neg_one = (int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(int) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(int)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to int" :
+                    "value too large to convert to int");
+            }
+            return (int)-1;
+        }
+        return (int)val;
+    }
+    return (int)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE signed char __Pyx_PyInt_AsSignedChar(PyObject* x) {
+    const signed char neg_one = (signed char)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(signed char) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(signed char)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to signed char" :
+                    "value too large to convert to signed char");
+            }
+            return (signed char)-1;
+        }
+        return (signed char)val;
+    }
+    return (signed char)__Pyx_PyInt_AsSignedLong(x);
+}
+
+static CYTHON_INLINE signed short __Pyx_PyInt_AsSignedShort(PyObject* x) {
+    const signed short neg_one = (signed short)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(signed short) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(signed short)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to signed short" :
+                    "value too large to convert to signed short");
+            }
+            return (signed short)-1;
+        }
+        return (signed short)val;
+    }
+    return (signed short)__Pyx_PyInt_AsSignedLong(x);
+}
+
+static CYTHON_INLINE signed int __Pyx_PyInt_AsSignedInt(PyObject* x) {
+    const signed int neg_one = (signed int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(signed int) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(signed int)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to signed int" :
+                    "value too large to convert to signed int");
+            }
+            return (signed int)-1;
+        }
+        return (signed int)val;
+    }
+    return (signed int)__Pyx_PyInt_AsSignedLong(x);
+}
+
+static CYTHON_INLINE int __Pyx_PyInt_AsLongDouble(PyObject* x) {
+    const int neg_one = (int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(int) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(int)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to int" :
+                    "value too large to convert to int");
+            }
+            return (int)-1;
+        }
+        return (int)val;
+    }
+    return (int)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE unsigned long __Pyx_PyInt_AsUnsignedLong(PyObject* x) {
+    const unsigned long neg_one = (unsigned long)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to unsigned long");
+            return (unsigned long)-1;
+        }
+        return (unsigned long)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to unsigned long");
+                return (unsigned long)-1;
+            }
+            return (unsigned long)PyLong_AsUnsignedLong(x);
+        } else {
+            return (unsigned long)PyLong_AsLong(x);
+        }
+    } else {
+        unsigned long val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (unsigned long)-1;
+        val = __Pyx_PyInt_AsUnsignedLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE unsigned PY_LONG_LONG __Pyx_PyInt_AsUnsignedLongLong(PyObject* x) {
+    const unsigned PY_LONG_LONG neg_one = (unsigned PY_LONG_LONG)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to unsigned PY_LONG_LONG");
+            return (unsigned PY_LONG_LONG)-1;
+        }
+        return (unsigned PY_LONG_LONG)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to unsigned PY_LONG_LONG");
+                return (unsigned PY_LONG_LONG)-1;
+            }
+            return (unsigned PY_LONG_LONG)PyLong_AsUnsignedLongLong(x);
+        } else {
+            return (unsigned PY_LONG_LONG)PyLong_AsLongLong(x);
+        }
+    } else {
+        unsigned PY_LONG_LONG val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (unsigned PY_LONG_LONG)-1;
+        val = __Pyx_PyInt_AsUnsignedLongLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE long __Pyx_PyInt_AsLong(PyObject* x) {
+    const long neg_one = (long)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to long");
+            return (long)-1;
+        }
+        return (long)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to long");
+                return (long)-1;
+            }
+            return (long)PyLong_AsUnsignedLong(x);
+        } else {
+            return (long)PyLong_AsLong(x);
+        }
+    } else {
+        long val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (long)-1;
+        val = __Pyx_PyInt_AsLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE PY_LONG_LONG __Pyx_PyInt_AsLongLong(PyObject* x) {
+    const PY_LONG_LONG neg_one = (PY_LONG_LONG)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to PY_LONG_LONG");
+            return (PY_LONG_LONG)-1;
+        }
+        return (PY_LONG_LONG)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to PY_LONG_LONG");
+                return (PY_LONG_LONG)-1;
+            }
+            return (PY_LONG_LONG)PyLong_AsUnsignedLongLong(x);
+        } else {
+            return (PY_LONG_LONG)PyLong_AsLongLong(x);
+        }
+    } else {
+        PY_LONG_LONG val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (PY_LONG_LONG)-1;
+        val = __Pyx_PyInt_AsLongLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE signed long __Pyx_PyInt_AsSignedLong(PyObject* x) {
+    const signed long neg_one = (signed long)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to signed long");
+            return (signed long)-1;
+        }
+        return (signed long)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to signed long");
+                return (signed long)-1;
+            }
+            return (signed long)PyLong_AsUnsignedLong(x);
+        } else {
+            return (signed long)PyLong_AsLong(x);
+        }
+    } else {
+        signed long val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (signed long)-1;
+        val = __Pyx_PyInt_AsSignedLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE signed PY_LONG_LONG __Pyx_PyInt_AsSignedLongLong(PyObject* x) {
+    const signed PY_LONG_LONG neg_one = (signed PY_LONG_LONG)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to signed PY_LONG_LONG");
+            return (signed PY_LONG_LONG)-1;
+        }
+        return (signed PY_LONG_LONG)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to signed PY_LONG_LONG");
+                return (signed PY_LONG_LONG)-1;
+            }
+            return (signed PY_LONG_LONG)PyLong_AsUnsignedLongLong(x);
+        } else {
+            return (signed PY_LONG_LONG)PyLong_AsLongLong(x);
+        }
+    } else {
+        signed PY_LONG_LONG val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (signed PY_LONG_LONG)-1;
+        val = __Pyx_PyInt_AsSignedLongLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static int __Pyx_check_binary_version(void) {
+    char ctversion[4], rtversion[4];
+    PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION);
+    PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion());
+    if (ctversion[0] != rtversion[0] || ctversion[2] != rtversion[2]) {
+        char message[200];
+        PyOS_snprintf(message, sizeof(message),
+                      "compiletime version %s of module '%.100s' "
+                      "does not match runtime version %s",
+                      ctversion, __Pyx_MODULE_NAME, rtversion);
+        #if PY_VERSION_HEX < 0x02050000
+        return PyErr_Warn(NULL, message);
+        #else
+        return PyErr_WarnEx(NULL, message, 1);
+        #endif
+    }
+    return 0;
+}
+
+#ifndef __PYX_HAVE_RT_ImportModule
+#define __PYX_HAVE_RT_ImportModule
+static PyObject *__Pyx_ImportModule(const char *name) {
+    PyObject *py_name = 0;
+    PyObject *py_module = 0;
+    py_name = __Pyx_PyIdentifier_FromString(name);
+    if (!py_name)
+        goto bad;
+    py_module = PyImport_Import(py_name);
+    Py_DECREF(py_name);
+    return py_module;
+bad:
+    Py_XDECREF(py_name);
+    return 0;
+}
+#endif
+
+#ifndef __PYX_HAVE_RT_ImportType
+#define __PYX_HAVE_RT_ImportType
+static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name,
+    size_t size, int strict)
+{
+    PyObject *py_module = 0;
+    PyObject *result = 0;
+    PyObject *py_name = 0;
+    char warning[200];
+    Py_ssize_t basicsize;
+#ifdef Py_LIMITED_API
+    PyObject *py_basicsize;
+#endif
+    py_module = __Pyx_ImportModule(module_name);
+    if (!py_module)
+        goto bad;
+    py_name = __Pyx_PyIdentifier_FromString(class_name);
+    if (!py_name)
+        goto bad;
+    result = PyObject_GetAttr(py_module, py_name);
+    Py_DECREF(py_name);
+    py_name = 0;
+    Py_DECREF(py_module);
+    py_module = 0;
+    if (!result)
+        goto bad;
+    if (!PyType_Check(result)) {
+        PyErr_Format(PyExc_TypeError,
+            "%s.%s is not a type object",
+            module_name, class_name);
+        goto bad;
+    }
+#ifndef Py_LIMITED_API
+    basicsize = ((PyTypeObject *)result)->tp_basicsize;
+#else
+    py_basicsize = PyObject_GetAttrString(result, "__basicsize__");
+    if (!py_basicsize)
+        goto bad;
+    basicsize = PyLong_AsSsize_t(py_basicsize);
+    Py_DECREF(py_basicsize);
+    py_basicsize = 0;
+    if (basicsize == (Py_ssize_t)-1 && PyErr_Occurred())
+        goto bad;
+#endif
+    if (!strict && (size_t)basicsize > size) {
+        PyOS_snprintf(warning, sizeof(warning),
+            "%s.%s size changed, may indicate binary incompatibility",
+            module_name, class_name);
+        #if PY_VERSION_HEX < 0x02050000
+        if (PyErr_Warn(NULL, warning) < 0) goto bad;
+        #else
+        if (PyErr_WarnEx(NULL, warning, 0) < 0) goto bad;
+        #endif
+    }
+    else if ((size_t)basicsize != size) {
+        PyErr_Format(PyExc_ValueError,
+            "%s.%s has the wrong size, try recompiling",
+            module_name, class_name);
+        goto bad;
+    }
+    return (PyTypeObject *)result;
+bad:
+    Py_XDECREF(py_module);
+    Py_XDECREF(result);
+    return NULL;
+}
+#endif
+
+#ifndef __PYX_HAVE_RT_ImportFunction
+#define __PYX_HAVE_RT_ImportFunction
+static int __Pyx_ImportFunction(PyObject *module, const char *funcname, void (**f)(void), const char *sig) {
+    PyObject *d = 0;
+    PyObject *cobj = 0;
+    union {
+        void (*fp)(void);
+        void *p;
+    } tmp;
+    d = PyObject_GetAttrString(module, (char *)"__pyx_capi__");
+    if (!d)
+        goto bad;
+    cobj = PyDict_GetItemString(d, funcname);
+    if (!cobj) {
+        PyErr_Format(PyExc_ImportError,
+            "%s does not export expected C function %s",
+                PyModule_GetName(module), funcname);
+        goto bad;
+    }
+#if PY_VERSION_HEX >= 0x02070000 && !(PY_MAJOR_VERSION==3 && PY_MINOR_VERSION==0)
+    if (!PyCapsule_IsValid(cobj, sig)) {
+        PyErr_Format(PyExc_TypeError,
+            "C function %s.%s has wrong signature (expected %s, got %s)",
+             PyModule_GetName(module), funcname, sig, PyCapsule_GetName(cobj));
+        goto bad;
+    }
+    tmp.p = PyCapsule_GetPointer(cobj, sig);
+#else
+    {const char *desc, *s1, *s2;
+    desc = (const char *)PyCObject_GetDesc(cobj);
+    if (!desc)
+        goto bad;
+    s1 = desc; s2 = sig;
+    while (*s1 != '\0' && *s1 == *s2) { s1++; s2++; }
+    if (*s1 != *s2) {
+        PyErr_Format(PyExc_TypeError,
+            "C function %s.%s has wrong signature (expected %s, got %s)",
+             PyModule_GetName(module), funcname, sig, desc);
+        goto bad;
+    }
+    tmp.p = PyCObject_AsVoidPtr(cobj);}
+#endif
+    *f = tmp.fp;
+    if (!(*f))
+        goto bad;
+    Py_DECREF(d);
+    return 0;
+bad:
+    Py_XDECREF(d);
+    return -1;
+}
+#endif
+
+static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) {
+    int start = 0, mid = 0, end = count - 1;
+    if (end >= 0 && code_line > entries[end].code_line) {
+        return count;
+    }
+    while (start < end) {
+        mid = (start + end) / 2;
+        if (code_line < entries[mid].code_line) {
+            end = mid;
+        } else if (code_line > entries[mid].code_line) {
+             start = mid + 1;
+        } else {
+            return mid;
+        }
+    }
+    if (code_line <= entries[mid].code_line) {
+        return mid;
+    } else {
+        return mid + 1;
+    }
+}
+static PyCodeObject *__pyx_find_code_object(int code_line) {
+    PyCodeObject* code_object;
+    int pos;
+    if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) {
+        return NULL;
+    }
+    pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
+    if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) {
+        return NULL;
+    }
+    code_object = __pyx_code_cache.entries[pos].code_object;
+    Py_INCREF(code_object);
+    return code_object;
+}
+static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) {
+    int pos, i;
+    __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries;
+    if (unlikely(!code_line)) {
+        return;
+    }
+    if (unlikely(!entries)) {
+        entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry));
+        if (likely(entries)) {
+            __pyx_code_cache.entries = entries;
+            __pyx_code_cache.max_count = 64;
+            __pyx_code_cache.count = 1;
+            entries[0].code_line = code_line;
+            entries[0].code_object = code_object;
+            Py_INCREF(code_object);
+        }
+        return;
+    }
+    pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
+    if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) {
+        PyCodeObject* tmp = entries[pos].code_object;
+        entries[pos].code_object = code_object;
+        Py_DECREF(tmp);
+        return;
+    }
+    if (__pyx_code_cache.count == __pyx_code_cache.max_count) {
+        int new_max = __pyx_code_cache.max_count + 64;
+        entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc(
+            __pyx_code_cache.entries, new_max*sizeof(__Pyx_CodeObjectCacheEntry));
+        if (unlikely(!entries)) {
+            return;
+        }
+        __pyx_code_cache.entries = entries;
+        __pyx_code_cache.max_count = new_max;
+    }
+    for (i=__pyx_code_cache.count; i>pos; i--) {
+        entries[i] = entries[i-1];
+    }
+    entries[pos].code_line = code_line;
+    entries[pos].code_object = code_object;
+    __pyx_code_cache.count++;
+    Py_INCREF(code_object);
+}
+
+#include "compile.h"
+#include "frameobject.h"
+#include "traceback.h"
+static PyCodeObject* __Pyx_CreateCodeObjectForTraceback(
+            const char *funcname, int c_line,
+            int py_line, const char *filename) {
+    PyCodeObject *py_code = 0;
+    PyObject *py_srcfile = 0;
+    PyObject *py_funcname = 0;
+    #if PY_MAJOR_VERSION < 3
+    py_srcfile = PyString_FromString(filename);
+    #else
+    py_srcfile = PyUnicode_FromString(filename);
+    #endif
+    if (!py_srcfile) goto bad;
+    if (c_line) {
+        #if PY_MAJOR_VERSION < 3
+        py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
+        #else
+        py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
+        #endif
+    }
+    else {
+        #if PY_MAJOR_VERSION < 3
+        py_funcname = PyString_FromString(funcname);
+        #else
+        py_funcname = PyUnicode_FromString(funcname);
+        #endif
+    }
+    if (!py_funcname) goto bad;
+    py_code = __Pyx_PyCode_New(
+        0,            /*int argcount,*/
+        0,            /*int kwonlyargcount,*/
+        0,            /*int nlocals,*/
+        0,            /*int stacksize,*/
+        0,            /*int flags,*/
+        __pyx_empty_bytes, /*PyObject *code,*/
+        __pyx_empty_tuple, /*PyObject *consts,*/
+        __pyx_empty_tuple, /*PyObject *names,*/
+        __pyx_empty_tuple, /*PyObject *varnames,*/
+        __pyx_empty_tuple, /*PyObject *freevars,*/
+        __pyx_empty_tuple, /*PyObject *cellvars,*/
+        py_srcfile,   /*PyObject *filename,*/
+        py_funcname,  /*PyObject *name,*/
+        py_line,      /*int firstlineno,*/
+        __pyx_empty_bytes  /*PyObject *lnotab*/
+    );
+    Py_DECREF(py_srcfile);
+    Py_DECREF(py_funcname);
+    return py_code;
+bad:
+    Py_XDECREF(py_srcfile);
+    Py_XDECREF(py_funcname);
+    return NULL;
+}
+static void __Pyx_AddTraceback(const char *funcname, int c_line,
+                               int py_line, const char *filename) {
+    PyCodeObject *py_code = 0;
+    PyObject *py_globals = 0;
+    PyFrameObject *py_frame = 0;
+    py_code = __pyx_find_code_object(c_line ? c_line : py_line);
+    if (!py_code) {
+        py_code = __Pyx_CreateCodeObjectForTraceback(
+            funcname, c_line, py_line, filename);
+        if (!py_code) goto bad;
+        __pyx_insert_code_object(c_line ? c_line : py_line, py_code);
+    }
+    py_globals = PyModule_GetDict(__pyx_m);
+    if (!py_globals) goto bad;
+    py_frame = PyFrame_New(
+        PyThreadState_GET(), /*PyThreadState *tstate,*/
+        py_code,             /*PyCodeObject *code,*/
+        py_globals,          /*PyObject *globals,*/
+        0                    /*PyObject *locals*/
+    );
+    if (!py_frame) goto bad;
+    py_frame->f_lineno = py_line;
+    PyTraceBack_Here(py_frame);
+bad:
+    Py_XDECREF(py_code);
+    Py_XDECREF(py_frame);
+}
+
+static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
+    while (t->p) {
+        #if PY_MAJOR_VERSION < 3
+        if (t->is_unicode) {
+            *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL);
+        } else if (t->intern) {
+            *t->p = PyString_InternFromString(t->s);
+        } else {
+            *t->p = PyString_FromStringAndSize(t->s, t->n - 1);
+        }
+        #else  /* Python 3+ has unicode identifiers */
+        if (t->is_unicode | t->is_str) {
+            if (t->intern) {
+                *t->p = PyUnicode_InternFromString(t->s);
+            } else if (t->encoding) {
+                *t->p = PyUnicode_Decode(t->s, t->n - 1, t->encoding, NULL);
+            } else {
+                *t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1);
+            }
+        } else {
+            *t->p = PyBytes_FromStringAndSize(t->s, t->n - 1);
+        }
+        #endif
+        if (!*t->p)
+            return -1;
+        ++t;
+    }
+    return 0;
+}
+
+static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) {
+   int is_true = x == Py_True;
+   if (is_true | (x == Py_False) | (x == Py_None)) return is_true;
+   else return PyObject_IsTrue(x);
+}
+static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x) {
+  PyNumberMethods *m;
+  const char *name = NULL;
+  PyObject *res = NULL;
+#if PY_VERSION_HEX < 0x03000000
+  if (PyInt_Check(x) || PyLong_Check(x))
+#else
+  if (PyLong_Check(x))
+#endif
+    return Py_INCREF(x), x;
+  m = Py_TYPE(x)->tp_as_number;
+#if PY_VERSION_HEX < 0x03000000
+  if (m && m->nb_int) {
+    name = "int";
+    res = PyNumber_Int(x);
+  }
+  else if (m && m->nb_long) {
+    name = "long";
+    res = PyNumber_Long(x);
+  }
+#else
+  if (m && m->nb_int) {
+    name = "int";
+    res = PyNumber_Long(x);
+  }
+#endif
+  if (res) {
+#if PY_VERSION_HEX < 0x03000000
+    if (!PyInt_Check(res) && !PyLong_Check(res)) {
+#else
+    if (!PyLong_Check(res)) {
+#endif
+      PyErr_Format(PyExc_TypeError,
+                   "__%s__ returned non-%s (type %.200s)",
+                   name, name, Py_TYPE(res)->tp_name);
+      Py_DECREF(res);
+      return NULL;
+    }
+  }
+  else if (!PyErr_Occurred()) {
+    PyErr_SetString(PyExc_TypeError,
+                    "an integer is required");
+  }
+  return res;
+}
+static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
+  Py_ssize_t ival;
+  PyObject* x = PyNumber_Index(b);
+  if (!x) return -1;
+  ival = PyInt_AsSsize_t(x);
+  Py_DECREF(x);
+  return ival;
+}
+static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) {
+#if PY_VERSION_HEX < 0x02050000
+   if (ival <= LONG_MAX)
+       return PyInt_FromLong((long)ival);
+   else {
+       unsigned char *bytes = (unsigned char *) &ival;
+       int one = 1; int little = (int)*(unsigned char*)&one;
+       return _PyLong_FromByteArray(bytes, sizeof(size_t), little, 0);
+   }
+#else
+   return PyInt_FromSize_t(ival);
+#endif
+}
+static CYTHON_INLINE size_t __Pyx_PyInt_AsSize_t(PyObject* x) {
+   unsigned PY_LONG_LONG val = __Pyx_PyInt_AsUnsignedLongLong(x);
+   if (unlikely(val == (unsigned PY_LONG_LONG)-1 && PyErr_Occurred())) {
+       return (size_t)-1;
+   } else if (unlikely(val != (unsigned PY_LONG_LONG)(size_t)val)) {
+       PyErr_SetString(PyExc_OverflowError,
+                       "value too large to convert to size_t");
+       return (size_t)-1;
+   }
+   return (size_t)val;
+}
+
+
+#endif /* Py_PYTHON_H */
diff --git a/h5py/h5s.pxd b/h5py/h5s.pxd
new file mode 100644
index 0000000..d547191
--- /dev/null
+++ b/h5py/h5s.pxd
@@ -0,0 +1,17 @@
+# This file is part of h5py, a Python interface to the HDF5 library.
+#
+# http://www.h5py.org
+#
+# Copyright 2008-2013 Andrew Collette and contributors
+#
+# License:  Standard 3-clause BSD; see "license.txt" for full license terms
+#           and contributor agreement.
+
+from defs cimport *
+
+from _objects cimport class ObjectID
+
+cdef class SpaceID(ObjectID):
+    pass
+
+
diff --git a/h5py/h5s.pyx b/h5py/h5s.pyx
new file mode 100644
index 0000000..f37a03d
--- /dev/null
+++ b/h5py/h5s.pyx
@@ -0,0 +1,561 @@
+# This file is part of h5py, a Python interface to the HDF5 library.
+#
+# http://www.h5py.org
+#
+# Copyright 2008-2013 Andrew Collette and contributors
+#
+# License:  Standard 3-clause BSD; see "license.txt" for full license terms
+#           and contributor agreement.
+
+"""
+    Low-level interface to the "H5S" family of data-space functions.
+"""
+
+# Pyrex compile-time imports
+from utils cimport  require_tuple, convert_dims, convert_tuple, \
+                    emalloc, efree, create_numpy_hsize, create_hsize_array
+from numpy cimport ndarray
+
+from h5py import _objects
+
+
+cdef object lockid(hid_t id_):
+    cdef SpaceID space
+    space = SpaceID.open(id_)
+    space.locked = 1
+    return space
+
+# === Public constants and data structures ====================================
+
+#enum H5S_seloper_t:
+SELECT_NOOP     = H5S_SELECT_NOOP
+SELECT_SET      = H5S_SELECT_SET
+SELECT_OR       = H5S_SELECT_OR
+SELECT_AND      = H5S_SELECT_AND
+SELECT_XOR      = H5S_SELECT_XOR
+SELECT_NOTB     = H5S_SELECT_NOTB
+SELECT_NOTA     = H5S_SELECT_NOTA
+SELECT_APPEND   = H5S_SELECT_APPEND
+SELECT_PREPEND  = H5S_SELECT_PREPEND
+SELECT_INVALID  = H5S_SELECT_INVALID
+
+ALL = lockid(H5S_ALL)   # This is accepted in lieu of an actual identifier
+                        # in functions like H5Dread, so wrap it.
+UNLIMITED = H5S_UNLIMITED
+
+#enum H5S_class_t
+NO_CLASS = H5S_NO_CLASS
+SCALAR   = H5S_SCALAR
+SIMPLE   = H5S_SIMPLE
+_NULL = H5S_NULL
+
+#enum H5S_sel_type
+SEL_ERROR       = H5S_SEL_ERROR
+SEL_NONE        = H5S_SEL_NONE
+SEL_POINTS      = H5S_SEL_POINTS
+SEL_HYPERSLABS  = H5S_SEL_HYPERSLABS
+SEL_ALL         = H5S_SEL_ALL
+
+# === Basic dataspace operations ==============================================
+
+
+def create(int class_code):
+    """(INT class_code) => SpaceID
+
+    Create a new HDF5 dataspace object, of the given class.
+    Legal values are SCALAR and SIMPLE.
+    """
+    return SpaceID.open(H5Screate(<H5S_class_t>class_code))
+
+
+def create_simple(object dims_tpl, object max_dims_tpl=None):
+    """(TUPLE dims_tpl, TUPLE max_dims_tpl) => SpaceID
+
+    Create a simple (slab) dataspace from a tuple of dimensions.
+    Every element of dims_tpl must be a positive integer.
+
+    You can optionally specify the maximum dataspace size. The
+    special value UNLIMITED, as an element of max_dims, indicates
+    an unlimited dimension.
+    """
+    cdef int rank
+    cdef hsize_t* dims = NULL
+    cdef hsize_t* max_dims = NULL
+
+    require_tuple(dims_tpl, 0, -1, "dims_tpl")
+    rank = len(dims_tpl)
+    require_tuple(max_dims_tpl, 1, rank, "max_dims_tpl")
+
+    try:
+        dims = <hsize_t*>emalloc(sizeof(hsize_t)*rank)
+        convert_tuple(dims_tpl, dims, rank)
+
+        if max_dims_tpl is not None:
+            max_dims = <hsize_t*>emalloc(sizeof(hsize_t)*rank)
+            convert_tuple(max_dims_tpl, max_dims, rank)
+
+        return SpaceID.open(H5Screate_simple(rank, dims, max_dims))
+
+    finally:
+        efree(dims)
+        efree(max_dims)
+
+def decode(buf):
+    """(STRING buf) => SpaceID
+
+    Unserialize a dataspace.  Bear in mind you can also use the native
+    Python pickling machinery to do this.
+    """
+    cdef char* buf_ = buf
+    return SpaceID.open(H5Sdecode(buf_))
+
+# === H5S class API ===========================================================
+
+cdef class SpaceID(ObjectID):
+
+    """
+        Represents a dataspace identifier.
+
+        Properties:
+
+        shape
+            Numpy-style shape tuple with dimensions.
+
+        * Hashable: No
+        * Equality: Unimplemented
+
+        Can be pickled if HDF5 1.8 is available.
+    """
+
+    property shape:
+        """ Numpy-style shape tuple representing dimensions.  () == scalar.
+        """
+        def __get__(self):
+            return self.get_simple_extent_dims()
+
+
+    def _close(self):
+        """()
+
+        Terminate access through this identifier.  You shouldn't have to
+        call this manually; dataspace objects are automatically destroyed
+        when their Python wrappers are freed.
+        """
+        with _objects.registry.lock:
+            H5Sclose(self.id)
+            if not self.valid:
+                del _objects.registry[self.id]
+
+
+    def copy(self):
+        """() => SpaceID
+
+        Create a new copy of this dataspace.
+        """
+        return SpaceID.open(H5Scopy(self.id))
+
+
+    def encode(self):
+        """() => STRING
+
+        Serialize a dataspace, including its selection.  Bear in mind you
+        can also use the native Python pickling machinery to do this.
+        """
+        cdef void* buf = NULL
+        cdef size_t nalloc = 0
+
+        H5Sencode(self.id, NULL, &nalloc)
+        buf = emalloc(nalloc)
+        try:
+            H5Sencode(self.id, buf, &nalloc)
+            pystr = PyBytes_FromStringAndSize(<char*>buf, nalloc)
+        finally:
+            efree(buf)
+
+        return pystr
+
+
+    def __reduce__(self):
+        return (type(self), (-1,), self.encode())
+
+
+    def __setstate__(self, state):
+        cdef char* buf = state
+        self.id = H5Sdecode(buf)
+
+    # === Simple dataspaces ===================================================
+
+
+    def is_simple(self):
+        """() => BOOL is_simple
+
+        Determine if an existing dataspace is "simple" (including scalar
+        dataspaces). Currently all HDF5 dataspaces are simple.
+        """
+        return <bint>(H5Sis_simple(self.id))
+
+
+    def offset_simple(self, object offset=None):
+        """(TUPLE offset=None)
+
+        Set the offset of a dataspace.  The length of the given tuple must
+        match the rank of the dataspace. If None is provided (default),
+        the offsets on all axes will be set to 0.
+        """
+        cdef int rank
+        cdef int i
+        cdef hssize_t *dims = NULL
+
+        try:
+            if not H5Sis_simple(self.id):
+                raise ValueError("%d is not a simple dataspace" % self.id)
+
+            rank = H5Sget_simple_extent_ndims(self.id)
+
+            require_tuple(offset, 1, rank, "offset")
+            dims = <hssize_t*>emalloc(sizeof(hssize_t)*rank)
+            if(offset is not None):
+                convert_tuple(offset, <hsize_t*>dims, rank)
+            else:
+                # The HDF5 docs say passing in NULL resets the offset to 0.
+                # Instead it raises an exception.  Imagine my surprise. We'll
+                # do this manually.
+                for i from 0<=i<rank:
+                    dims[i] = 0
+
+            H5Soffset_simple(self.id, dims)
+
+        finally:
+            efree(dims)
+
+
+    def get_simple_extent_ndims(self):
+        """() => INT rank
+
+        Determine the rank of a "simple" (slab) dataspace.
+        """
+        return H5Sget_simple_extent_ndims(self.id)
+
+
+    def get_simple_extent_dims(self, int maxdims=0):
+        """(BOOL maxdims=False) => TUPLE shape
+
+        Determine the shape of a "simple" (slab) dataspace.  If "maxdims"
+        is True, retrieve the maximum dataspace size instead.
+        """
+        cdef int rank
+        cdef hsize_t* dims = NULL
+
+        rank = H5Sget_simple_extent_dims(self.id, NULL, NULL)
+
+        dims = <hsize_t*>emalloc(sizeof(hsize_t)*rank)
+        try:
+            if maxdims:
+                H5Sget_simple_extent_dims(self.id, NULL, dims)
+            else:
+                H5Sget_simple_extent_dims(self.id, dims, NULL)
+
+            return convert_dims(dims, rank)
+
+        finally:
+            efree(dims)
+
+
+    def get_simple_extent_npoints(self):
+        """() => LONG npoints
+
+        Determine the total number of elements in a dataspace.
+        """
+        return H5Sget_simple_extent_npoints(self.id)
+
+
+    def get_simple_extent_type(self):
+        """() => INT class_code
+
+        Class code is either SCALAR or SIMPLE.
+        """
+        return <int>H5Sget_simple_extent_type(self.id)
+
+    # === Extents =============================================================
+
+
+    def extent_copy(self, SpaceID source not None):
+        """(SpaceID source)
+
+        Replace this dataspace's extent with another's, changing its
+        typecode if necessary.
+        """
+        H5Sextent_copy(self.id, source.id)
+
+
+    def set_extent_simple(self, object dims_tpl, object max_dims_tpl=None):
+        """(TUPLE dims_tpl, TUPLE max_dims_tpl=None)
+
+        Reset the dataspace extent via a tuple of dimensions.
+        Every element of dims_tpl must be a positive integer.
+
+        You can optionally specify the maximum dataspace size. The
+        special value UNLIMITED, as an element of max_dims, indicates
+        an unlimited dimension.
+        """
+        cdef int rank
+        cdef hsize_t* dims = NULL
+        cdef hsize_t* max_dims = NULL
+
+        require_tuple(dims_tpl, 0, -1, "dims_tpl")
+        rank = len(dims_tpl)
+        require_tuple(max_dims_tpl, 1, rank, "max_dims_tpl")
+
+        try:
+            dims = <hsize_t*>emalloc(sizeof(hsize_t)*rank)
+            convert_tuple(dims_tpl, dims, rank)
+
+            if max_dims_tpl is not None:
+                max_dims = <hsize_t*>emalloc(sizeof(hsize_t)*rank)
+                convert_tuple(max_dims_tpl, max_dims, rank)
+
+            H5Sset_extent_simple(self.id, rank, dims, max_dims)
+
+        finally:
+            efree(dims)
+            efree(max_dims)
+
+
+    def set_extent_none(self):
+        """()
+
+        Remove the dataspace extent; typecode changes to NO_CLASS.
+        """
+        H5Sset_extent_none(self.id)
+
+    # === General selection operations ========================================
+
+
+    def get_select_type(self):
+        """ () => INT select_code
+
+            Determine selection type.  Return values are:
+
+            - SEL_NONE
+            - SEL_ALL
+            - SEL_POINTS
+            - SEL_HYPERSLABS
+        """
+        return <int>H5Sget_select_type(self.id)
+
+
+    def get_select_npoints(self):
+        """() => LONG npoints
+
+        Determine the total number of points currently selected.
+        Works for all selection techniques.
+        """
+        return H5Sget_select_npoints(self.id)
+
+
+    def get_select_bounds(self):
+        """() => (TUPLE start, TUPLE end)
+
+        Determine the bounding box which exactly contains
+        the current selection.
+        """
+        cdef int rank
+        cdef hsize_t *start = NULL
+        cdef hsize_t *end = NULL
+
+        rank = H5Sget_simple_extent_ndims(self.id)
+
+        if H5Sget_select_npoints(self.id) == 0:
+            return None
+
+        start = <hsize_t*>emalloc(sizeof(hsize_t)*rank)
+        end = <hsize_t*>emalloc(sizeof(hsize_t)*rank)
+
+        try:
+            H5Sget_select_bounds(self.id, start, end)
+
+            start_tpl = convert_dims(start, rank)
+            end_tpl = convert_dims(end, rank)
+            return (start_tpl, end_tpl)
+
+        finally:
+            efree(start)
+            efree(end)
+
+
+    def select_all(self):
+        """()
+
+        Select all points in the dataspace.
+        """
+        H5Sselect_all(self.id)
+
+
+    def select_none(self):
+        """()
+
+        Deselect entire dataspace.
+        """
+        H5Sselect_none(self.id)
+
+
+    def select_valid(self):
+        """() => BOOL
+
+        Determine if the current selection falls within
+        the dataspace extent.
+        """
+        return <bint>(H5Sselect_valid(self.id))
+
+    # === Point selection functions ===========================================
+
+
+    def get_select_elem_npoints(self):
+        """() => LONG npoints
+
+        Determine the number of elements selected in point-selection mode.
+        """
+        return H5Sget_select_elem_npoints(self.id)
+
+
+    def get_select_elem_pointlist(self):
+        """() => NDARRAY
+
+        Get a list of all selected elements.  Return is a Numpy array of
+        unsigned ints, with shape ``(<npoints>, <space rank)``.
+        """
+        cdef hsize_t dims[2]
+        cdef ndarray buf
+
+        dims[0] = H5Sget_select_elem_npoints(self.id)
+        dims[1] = H5Sget_simple_extent_ndims(self.id)
+
+        buf = create_numpy_hsize(2, dims)
+
+        H5Sget_select_elem_pointlist(self.id, 0, dims[0], <hsize_t*>buf.data)
+
+        return buf
+
+
+    def select_elements(self, object coords, int op=H5S_SELECT_SET):
+        """(SEQUENCE coords, INT op=SELECT_SET)
+
+        Select elements by specifying coordinates points.  The argument
+        "coords" may be an ndarray or any nested sequence which can be
+        converted to an array of uints with the shape::
+
+            (<npoints>, <space rank>)
+
+        Examples::
+
+            >>> obj.shape
+            (10, 10)
+            >>> obj.select_elements([(1,2), (3,4), (5,9)])
+
+        A zero-length selection (i.e. shape ``(0, <rank>)``) is not allowed
+        by the HDF5 library.
+        """
+        cdef ndarray hcoords
+        cdef size_t nelements
+
+        # The docs say the selection list should be an hsize_t**, but it seems
+        # that HDF5 expects the coordinates to be a static, contiguous
+        # array.  We simulate that by creating a contiguous NumPy array of
+        # a compatible type and initializing it to the input.
+
+        hcoords = create_hsize_array(coords)
+
+        if hcoords.nd != 2 or hcoords.dimensions[1] != H5Sget_simple_extent_ndims(self.id):
+            raise ValueError("Coordinate array must have shape (<npoints>, %d)" % self.get_simple_extent_ndims())
+
+        nelements = hcoords.dimensions[0]
+
+        H5Sselect_elements(self.id, <H5S_seloper_t>op, nelements, <hsize_t**>hcoords.data)
+
+    # === Hyperslab selection functions =======================================
+
+
+    def get_select_hyper_nblocks(self):
+        """() => LONG nblocks
+
+        Get the number of hyperslab blocks currently selected.
+        """
+        return H5Sget_select_hyper_nblocks(self.id)
+
+
+    def get_select_hyper_blocklist(self):
+        """() => NDARRAY
+
+        Get the current hyperslab selection.  The returned array has shape::
+
+            (<npoints>, 2, <rank>)
+
+        and can be interpreted as a nested sequence::
+
+            [ (corner_coordinate_1, opposite_coordinate_1), ... ]
+
+        with length equal to the total number of blocks.
+        """
+        cdef hsize_t dims[3]  # 0=nblocks 1=(#2), 2=rank
+        cdef ndarray buf
+
+        dims[0] = H5Sget_select_hyper_nblocks(self.id)
+        dims[1] = 2
+        dims[2] = H5Sget_simple_extent_ndims(self.id)
+
+        buf = create_numpy_hsize(3, dims)
+
+        H5Sget_select_hyper_blocklist(self.id, 0, dims[0], <hsize_t*>buf.data)
+
+        return buf
+
+
+    def select_hyperslab(self, object start, object count, object stride=None,
+                         object block=None, int op=H5S_SELECT_SET):
+        """(TUPLE start, TUPLE count, TUPLE stride=None, TUPLE block=None,
+             INT op=SELECT_SET)
+
+        Select a block region from an existing dataspace.  See the HDF5
+        documentation for the meaning of the "block" and "op" keywords.
+        """
+        cdef int rank
+        cdef hsize_t* start_array = NULL
+        cdef hsize_t* count_array = NULL
+        cdef hsize_t* stride_array = NULL
+        cdef hsize_t* block_array = NULL
+
+        # Dataspace rank.  All provided tuples must match this.
+        rank = H5Sget_simple_extent_ndims(self.id)
+
+        require_tuple(start, 0, rank, "start")
+        require_tuple(count, 0, rank, "count")
+        require_tuple(stride, 1, rank, "stride")
+        require_tuple(block, 1, rank, "block")
+
+        try:
+            start_array = <hsize_t*>emalloc(sizeof(hsize_t)*rank)
+            count_array = <hsize_t*>emalloc(sizeof(hsize_t)*rank)
+            convert_tuple(start, start_array, rank)
+            convert_tuple(count, count_array, rank)
+
+            if stride is not None:
+                stride_array = <hsize_t*>emalloc(sizeof(hsize_t)*rank)
+                convert_tuple(stride, stride_array, rank)
+            if block is not None:
+                block_array = <hsize_t*>emalloc(sizeof(hsize_t)*rank)
+                convert_tuple(block, block_array, rank)
+
+            H5Sselect_hyperslab(self.id, <H5S_seloper_t>op, start_array,
+                                         stride_array, count_array, block_array)
+
+        finally:
+            efree(start_array)
+            efree(count_array)
+            efree(stride_array)
+            efree(block_array)
+
+
+
+
+
+
diff --git a/h5py/h5t.c b/h5py/h5t.c
new file mode 100644
index 0000000..963e41c
--- /dev/null
+++ b/h5py/h5t.c
@@ -0,0 +1,21701 @@
+/* Generated by Cython 0.18 on Mon Dec  9 16:00:33 2013 */
+
+#define PY_SSIZE_T_CLEAN
+#include "Python.h"
+#ifndef Py_PYTHON_H
+    #error Python headers needed to compile C extensions, please install development version of Python.
+#elif PY_VERSION_HEX < 0x02040000
+    #error Cython requires Python 2.4+.
+#else
+#include <stddef.h> /* For offsetof */
+#ifndef offsetof
+#define offsetof(type, member) ( (size_t) & ((type*)0) -> member )
+#endif
+#if !defined(WIN32) && !defined(MS_WINDOWS)
+  #ifndef __stdcall
+    #define __stdcall
+  #endif
+  #ifndef __cdecl
+    #define __cdecl
+  #endif
+  #ifndef __fastcall
+    #define __fastcall
+  #endif
+#endif
+#ifndef DL_IMPORT
+  #define DL_IMPORT(t) t
+#endif
+#ifndef DL_EXPORT
+  #define DL_EXPORT(t) t
+#endif
+#ifndef PY_LONG_LONG
+  #define PY_LONG_LONG LONG_LONG
+#endif
+#ifndef Py_HUGE_VAL
+  #define Py_HUGE_VAL HUGE_VAL
+#endif
+#ifdef PYPY_VERSION
+#define CYTHON_COMPILING_IN_PYPY 1
+#define CYTHON_COMPILING_IN_CPYTHON 0
+#else
+#define CYTHON_COMPILING_IN_PYPY 0
+#define CYTHON_COMPILING_IN_CPYTHON 1
+#endif
+#if PY_VERSION_HEX < 0x02050000
+  typedef int Py_ssize_t;
+  #define PY_SSIZE_T_MAX INT_MAX
+  #define PY_SSIZE_T_MIN INT_MIN
+  #define PY_FORMAT_SIZE_T ""
+  #define CYTHON_FORMAT_SSIZE_T ""
+  #define PyInt_FromSsize_t(z) PyInt_FromLong(z)
+  #define PyInt_AsSsize_t(o)   __Pyx_PyInt_AsInt(o)
+  #define PyNumber_Index(o)    ((PyNumber_Check(o) && !PyFloat_Check(o)) ? PyNumber_Int(o) : \
+                                (PyErr_Format(PyExc_TypeError, \
+                                              "expected index value, got %.200s", Py_TYPE(o)->tp_name), \
+                                 (PyObject*)0))
+  #define __Pyx_PyIndex_Check(o) (PyNumber_Check(o) && !PyFloat_Check(o) && \
+                                  !PyComplex_Check(o))
+  #define PyIndex_Check __Pyx_PyIndex_Check
+  #define PyErr_WarnEx(category, message, stacklevel) PyErr_Warn(category, message)
+  #define __PYX_BUILD_PY_SSIZE_T "i"
+#else
+  #define __PYX_BUILD_PY_SSIZE_T "n"
+  #define CYTHON_FORMAT_SSIZE_T "z"
+  #define __Pyx_PyIndex_Check PyIndex_Check
+#endif
+#if PY_VERSION_HEX < 0x02060000
+  #define Py_REFCNT(ob) (((PyObject*)(ob))->ob_refcnt)
+  #define Py_TYPE(ob)   (((PyObject*)(ob))->ob_type)
+  #define Py_SIZE(ob)   (((PyVarObject*)(ob))->ob_size)
+  #define PyVarObject_HEAD_INIT(type, size) \
+          PyObject_HEAD_INIT(type) size,
+  #define PyType_Modified(t)
+  typedef struct {
+     void *buf;
+     PyObject *obj;
+     Py_ssize_t len;
+     Py_ssize_t itemsize;
+     int readonly;
+     int ndim;
+     char *format;
+     Py_ssize_t *shape;
+     Py_ssize_t *strides;
+     Py_ssize_t *suboffsets;
+     void *internal;
+  } Py_buffer;
+  #define PyBUF_SIMPLE 0
+  #define PyBUF_WRITABLE 0x0001
+  #define PyBUF_FORMAT 0x0004
+  #define PyBUF_ND 0x0008
+  #define PyBUF_STRIDES (0x0010 | PyBUF_ND)
+  #define PyBUF_C_CONTIGUOUS (0x0020 | PyBUF_STRIDES)
+  #define PyBUF_F_CONTIGUOUS (0x0040 | PyBUF_STRIDES)
+  #define PyBUF_ANY_CONTIGUOUS (0x0080 | PyBUF_STRIDES)
+  #define PyBUF_INDIRECT (0x0100 | PyBUF_STRIDES)
+  #define PyBUF_RECORDS (PyBUF_STRIDES | PyBUF_FORMAT | PyBUF_WRITABLE)
+  #define PyBUF_FULL (PyBUF_INDIRECT | PyBUF_FORMAT | PyBUF_WRITABLE)
+  typedef int (*getbufferproc)(PyObject *, Py_buffer *, int);
+  typedef void (*releasebufferproc)(PyObject *, Py_buffer *);
+#endif
+#if PY_MAJOR_VERSION < 3
+  #define __Pyx_BUILTIN_MODULE_NAME "__builtin__"
+  #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) \
+          PyCode_New(a, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
+#else
+  #define __Pyx_BUILTIN_MODULE_NAME "builtins"
+  #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) \
+          PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
+#endif
+#if PY_MAJOR_VERSION < 3 && PY_MINOR_VERSION < 6
+  #define PyUnicode_FromString(s) PyUnicode_Decode(s, strlen(s), "UTF-8", "strict")
+#endif
+#if PY_MAJOR_VERSION >= 3
+  #define Py_TPFLAGS_CHECKTYPES 0
+  #define Py_TPFLAGS_HAVE_INDEX 0
+#endif
+#if (PY_VERSION_HEX < 0x02060000) || (PY_MAJOR_VERSION >= 3)
+  #define Py_TPFLAGS_HAVE_NEWBUFFER 0
+#endif
+#if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND)
+  #define CYTHON_PEP393_ENABLED 1
+  #define __Pyx_PyUnicode_READY(op)       (likely(PyUnicode_IS_READY(op)) ? \
+                                              0 : _PyUnicode_Ready((PyObject *)(op)))
+  #define __Pyx_PyUnicode_GET_LENGTH(u)   PyUnicode_GET_LENGTH(u)
+  #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i)
+  #define __Pyx_PyUnicode_READ(k, d, i)   PyUnicode_READ(k, d, i)
+#else
+  #define CYTHON_PEP393_ENABLED 0
+  #define __Pyx_PyUnicode_READY(op)       (0)
+  #define __Pyx_PyUnicode_GET_LENGTH(u)   PyUnicode_GET_SIZE(u)
+  #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i]))
+  #define __Pyx_PyUnicode_READ(k, d, i)   ((k=k), (Py_UCS4)(((Py_UNICODE*)d)[i]))
+#endif
+#if PY_MAJOR_VERSION >= 3
+  #define PyBaseString_Type            PyUnicode_Type
+  #define PyStringObject               PyUnicodeObject
+  #define PyString_Type                PyUnicode_Type
+  #define PyString_Check               PyUnicode_Check
+  #define PyString_CheckExact          PyUnicode_CheckExact
+#endif
+#if PY_VERSION_HEX < 0x02060000
+  #define PyBytesObject                PyStringObject
+  #define PyBytes_Type                 PyString_Type
+  #define PyBytes_Check                PyString_Check
+  #define PyBytes_CheckExact           PyString_CheckExact
+  #define PyBytes_FromString           PyString_FromString
+  #define PyBytes_FromStringAndSize    PyString_FromStringAndSize
+  #define PyBytes_FromFormat           PyString_FromFormat
+  #define PyBytes_DecodeEscape         PyString_DecodeEscape
+  #define PyBytes_AsString             PyString_AsString
+  #define PyBytes_AsStringAndSize      PyString_AsStringAndSize
+  #define PyBytes_Size                 PyString_Size
+  #define PyBytes_AS_STRING            PyString_AS_STRING
+  #define PyBytes_GET_SIZE             PyString_GET_SIZE
+  #define PyBytes_Repr                 PyString_Repr
+  #define PyBytes_Concat               PyString_Concat
+  #define PyBytes_ConcatAndDel         PyString_ConcatAndDel
+#endif
+#if PY_VERSION_HEX < 0x02060000
+  #define PySet_Check(obj)             PyObject_TypeCheck(obj, &PySet_Type)
+  #define PyFrozenSet_Check(obj)       PyObject_TypeCheck(obj, &PyFrozenSet_Type)
+#endif
+#ifndef PySet_CheckExact
+  #define PySet_CheckExact(obj)        (Py_TYPE(obj) == &PySet_Type)
+#endif
+#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type)
+#if PY_MAJOR_VERSION >= 3
+  #define PyIntObject                  PyLongObject
+  #define PyInt_Type                   PyLong_Type
+  #define PyInt_Check(op)              PyLong_Check(op)
+  #define PyInt_CheckExact(op)         PyLong_CheckExact(op)
+  #define PyInt_FromString             PyLong_FromString
+  #define PyInt_FromUnicode            PyLong_FromUnicode
+  #define PyInt_FromLong               PyLong_FromLong
+  #define PyInt_FromSize_t             PyLong_FromSize_t
+  #define PyInt_FromSsize_t            PyLong_FromSsize_t
+  #define PyInt_AsLong                 PyLong_AsLong
+  #define PyInt_AS_LONG                PyLong_AS_LONG
+  #define PyInt_AsSsize_t              PyLong_AsSsize_t
+  #define PyInt_AsUnsignedLongMask     PyLong_AsUnsignedLongMask
+  #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask
+#endif
+#if PY_MAJOR_VERSION >= 3
+  #define PyBoolObject                 PyLongObject
+#endif
+#if PY_VERSION_HEX < 0x03020000
+  typedef long Py_hash_t;
+  #define __Pyx_PyInt_FromHash_t PyInt_FromLong
+  #define __Pyx_PyInt_AsHash_t   PyInt_AsLong
+#else
+  #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t
+  #define __Pyx_PyInt_AsHash_t   PyInt_AsSsize_t
+#endif
+#if (PY_MAJOR_VERSION < 3) || (PY_VERSION_HEX >= 0x03010300)
+  #define __Pyx_PySequence_GetSlice(obj, a, b) PySequence_GetSlice(obj, a, b)
+  #define __Pyx_PySequence_SetSlice(obj, a, b, value) PySequence_SetSlice(obj, a, b, value)
+  #define __Pyx_PySequence_DelSlice(obj, a, b) PySequence_DelSlice(obj, a, b)
+#else
+  #define __Pyx_PySequence_GetSlice(obj, a, b) (unlikely(!(obj)) ? \
+        (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), (PyObject*)0) : \
+        (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_GetSlice(obj, a, b)) : \
+            (PyErr_Format(PyExc_TypeError, "'%.200s' object is unsliceable", (obj)->ob_type->tp_name), (PyObject*)0)))
+  #define __Pyx_PySequence_SetSlice(obj, a, b, value) (unlikely(!(obj)) ? \
+        (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), -1) : \
+        (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_SetSlice(obj, a, b, value)) : \
+            (PyErr_Format(PyExc_TypeError, "'%.200s' object doesn't support slice assignment", (obj)->ob_type->tp_name), -1)))
+  #define __Pyx_PySequence_DelSlice(obj, a, b) (unlikely(!(obj)) ? \
+        (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), -1) : \
+        (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_DelSlice(obj, a, b)) : \
+            (PyErr_Format(PyExc_TypeError, "'%.200s' object doesn't support slice deletion", (obj)->ob_type->tp_name), -1)))
+#endif
+#if PY_MAJOR_VERSION >= 3
+  #define PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, self) : PyInstanceMethod_New(func))
+#endif
+#if PY_VERSION_HEX < 0x02050000
+  #define __Pyx_GetAttrString(o,n)   PyObject_GetAttrString((o),((char *)(n)))
+  #define __Pyx_SetAttrString(o,n,a) PyObject_SetAttrString((o),((char *)(n)),(a))
+  #define __Pyx_DelAttrString(o,n)   PyObject_DelAttrString((o),((char *)(n)))
+#else
+  #define __Pyx_GetAttrString(o,n)   PyObject_GetAttrString((o),(n))
+  #define __Pyx_SetAttrString(o,n,a) PyObject_SetAttrString((o),(n),(a))
+  #define __Pyx_DelAttrString(o,n)   PyObject_DelAttrString((o),(n))
+#endif
+#if PY_VERSION_HEX < 0x02050000
+  #define __Pyx_NAMESTR(n) ((char *)(n))
+  #define __Pyx_DOCSTR(n)  ((char *)(n))
+#else
+  #define __Pyx_NAMESTR(n) (n)
+  #define __Pyx_DOCSTR(n)  (n)
+#endif
+
+
+#if PY_MAJOR_VERSION >= 3
+  #define __Pyx_PyNumber_Divide(x,y)         PyNumber_TrueDivide(x,y)
+  #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceTrueDivide(x,y)
+#else
+  #define __Pyx_PyNumber_Divide(x,y)         PyNumber_Divide(x,y)
+  #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceDivide(x,y)
+#endif
+
+#ifndef __PYX_EXTERN_C
+  #ifdef __cplusplus
+    #define __PYX_EXTERN_C extern "C"
+  #else
+    #define __PYX_EXTERN_C extern
+  #endif
+#endif
+
+#if defined(WIN32) || defined(MS_WINDOWS)
+#define _USE_MATH_DEFINES
+#endif
+#include <math.h>
+#define __PYX_HAVE__h5py__h5t
+#define __PYX_HAVE_API__h5py__h5t
+#include "stdlib.h"
+#include "string.h"
+#include "time.h"
+#include "unistd.h"
+#include "stdint.h"
+#include "api_compat.h"
+#include "lzf_filter.h"
+#include "hdf5.h"
+#include "H5Cpublic.h"
+#include "hdf5_hl.h"
+#include "numpy/arrayobject.h"
+#ifdef _OPENMP
+#include <omp.h>
+#endif /* _OPENMP */
+
+#ifdef PYREX_WITHOUT_ASSERTIONS
+#define CYTHON_WITHOUT_ASSERTIONS
+#endif
+
+#ifndef CYTHON_INLINE
+  #if defined(__GNUC__)
+    #define CYTHON_INLINE __inline__
+  #elif defined(_MSC_VER)
+    #define CYTHON_INLINE __inline
+  #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+    #define CYTHON_INLINE inline
+  #else
+    #define CYTHON_INLINE
+  #endif
+#endif
+#ifndef CYTHON_UNUSED
+# if defined(__GNUC__)
+#   if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
+#     define CYTHON_UNUSED __attribute__ ((__unused__))
+#   else
+#     define CYTHON_UNUSED
+#   endif
+# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER))
+#   define CYTHON_UNUSED __attribute__ ((__unused__))
+# else
+#   define CYTHON_UNUSED
+# endif
+#endif
+typedef struct {PyObject **p; char *s; const long n; const char* encoding; const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; /*proto*/
+
+#define __Pyx_PyBytes_FromUString(s) PyBytes_FromString((char*)s)
+#define __Pyx_PyBytes_AsUString(s)   ((unsigned char*) PyBytes_AsString(s))
+#define __Pyx_Owned_Py_None(b) (Py_INCREF(Py_None), Py_None)
+#define __Pyx_PyBool_FromLong(b) ((b) ? (Py_INCREF(Py_True), Py_True) : (Py_INCREF(Py_False), Py_False))
+static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*);
+static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x);
+static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*);
+static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t);
+static CYTHON_INLINE size_t __Pyx_PyInt_AsSize_t(PyObject*);
+#if CYTHON_COMPILING_IN_CPYTHON
+#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x))
+#else
+#define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x)
+#endif
+#define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x))
+
+
+#ifdef __GNUC__
+  /* Test for GCC > 2.95 */
+  #if __GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))
+    #define likely(x)   __builtin_expect(!!(x), 1)
+    #define unlikely(x) __builtin_expect(!!(x), 0)
+  #else /* __GNUC__ > 2 ... */
+    #define likely(x)   (x)
+    #define unlikely(x) (x)
+  #endif /* __GNUC__ > 2 ... */
+#else /* __GNUC__ */
+  #define likely(x)   (x)
+  #define unlikely(x) (x)
+#endif /* __GNUC__ */
+    
+static PyObject *__pyx_m;
+static PyObject *__pyx_b;
+static PyObject *__pyx_empty_tuple;
+static PyObject *__pyx_empty_bytes;
+static int __pyx_lineno;
+static int __pyx_clineno = 0;
+static const char * __pyx_cfilenm= __FILE__;
+static const char *__pyx_filename;
+
+
+static const char *__pyx_f[] = {
+  "h5t.pyx",
+  "numpy.pxd",
+  "h5r.pxd",
+};
+
+/*--- Type declarations ---*/
+struct __pyx_obj_4h5py_8_objects_ObjectID;
+struct __pyx_obj_4h5py_3h5t_TypeID;
+struct __pyx_obj_4h5py_3h5t_TypeTimeID;
+struct __pyx_obj_4h5py_3h5t_TypeReferenceID;
+struct __pyx_obj_4h5py_3h5t_TypeBitfieldID;
+struct __pyx_obj_4h5py_3h5t_TypeAtomicID;
+struct __pyx_obj_4h5py_3h5t_TypeIntegerID;
+struct __pyx_obj_4h5py_3h5t_TypeStringID;
+struct __pyx_obj_4h5py_3h5t_TypeOpaqueID;
+struct __pyx_obj_4h5py_3h5r_Reference;
+struct __pyx_obj_4h5py_3h5r_RegionReference;
+struct __pyx_obj_4h5py_3h5t_TypeCompositeID;
+struct __pyx_obj_4h5py_3h5t_TypeEnumID;
+struct __pyx_obj_4h5py_3h5t_TypeArrayID;
+struct __pyx_obj_4h5py_3h5t_TypeCompoundID;
+struct __pyx_obj_4h5py_3h5t_TypeFloatID;
+struct __pyx_obj_4h5py_3h5t_TypeVlenID;
+union __pyx_t_4h5py_3h5r_ref_u;
+
+/* "h5r.pxd":17
+ *   ctypedef unsigned char hdset_reg_ref_t[12]
+ * 
+ * cdef union ref_u:             # <<<<<<<<<<<<<<
+ *     hobj_ref_t         obj_ref
+ *     hdset_reg_ref_t    reg_ref
+ */
+union __pyx_t_4h5py_3h5r_ref_u {
+  hobj_ref_t obj_ref;
+  hdset_reg_ref_t reg_ref;
+};
+struct __pyx_opt_args_4h5py_5utils_check_numpy_read;
+struct __pyx_opt_args_4h5py_5utils_check_numpy_write;
+struct __pyx_opt_args_4h5py_5utils_check_numpy_read {
+  int __pyx_n;
+  hid_t space_id;
+};
+
+/* "utils.pxd":18
+ * 
+ * cpdef int check_numpy_read(ndarray arr, hid_t space_id=*) except -1
+ * cpdef int check_numpy_write(ndarray arr, hid_t space_id=*) except -1             # <<<<<<<<<<<<<<
+ * 
+ * cdef int convert_tuple(object tuple, hsize_t *dims, hsize_t rank) except -1
+ */
+struct __pyx_opt_args_4h5py_5utils_check_numpy_write {
+  int __pyx_n;
+  hid_t space_id;
+};
+struct __pyx_opt_args_4h5py_3h5t_py_create;
+
+/* "h5py/h5t.pxd":69
+ * 
+ * cpdef TypeID typewrap(hid_t id_)
+ * cpdef TypeID py_create(object dtype, bint logical=*)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+struct __pyx_opt_args_4h5py_3h5t_py_create {
+  int __pyx_n;
+  int logical;
+};
+
+/* "_objects.pxd":12
+ * from defs cimport *
+ * 
+ * cdef class ObjectID:             # <<<<<<<<<<<<<<
+ * 
+ *     cdef object __weakref__
+ */
+struct __pyx_obj_4h5py_8_objects_ObjectID {
+  PyObject_HEAD
+  PyObject *__weakref__;
+  hid_t id;
+  int locked;
+  PyObject *_hash;
+};
+
+
+/* "h5py/h5t.pxd":14
+ * from _objects cimport class ObjectID
+ * 
+ * cdef class TypeID(ObjectID):             # <<<<<<<<<<<<<<
+ * 
+ *     cdef object py_dtype(self)
+ */
+struct __pyx_obj_4h5py_3h5t_TypeID {
+  struct __pyx_obj_4h5py_8_objects_ObjectID __pyx_base;
+  struct __pyx_vtabstruct_4h5py_3h5t_TypeID *__pyx_vtab;
+};
+
+
+/* "h5py/h5t.pxd":34
+ *     pass
+ * 
+ * cdef class TypeTimeID(TypeID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+struct __pyx_obj_4h5py_3h5t_TypeTimeID {
+  struct __pyx_obj_4h5py_3h5t_TypeID __pyx_base;
+};
+
+
+/* "h5py/h5t.pxd":40
+ *     pass
+ * 
+ * cdef class TypeReferenceID(TypeID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+struct __pyx_obj_4h5py_3h5t_TypeReferenceID {
+  struct __pyx_obj_4h5py_3h5t_TypeID __pyx_base;
+};
+
+
+/* "h5py/h5t.pxd":37
+ *     pass
+ * 
+ * cdef class TypeBitfieldID(TypeID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+struct __pyx_obj_4h5py_3h5t_TypeBitfieldID {
+  struct __pyx_obj_4h5py_3h5t_TypeID __pyx_base;
+};
+
+
+/* "h5py/h5t.pxd":45
+ * # --- Numeric atomic types ---
+ * 
+ * cdef class TypeAtomicID(TypeID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+struct __pyx_obj_4h5py_3h5t_TypeAtomicID {
+  struct __pyx_obj_4h5py_3h5t_TypeID __pyx_base;
+};
+
+
+/* "h5py/h5t.pxd":48
+ *     pass
+ * 
+ * cdef class TypeIntegerID(TypeAtomicID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+struct __pyx_obj_4h5py_3h5t_TypeIntegerID {
+  struct __pyx_obj_4h5py_3h5t_TypeAtomicID __pyx_base;
+};
+
+
+/* "h5py/h5t.pxd":26
+ *     pass
+ * 
+ * cdef class TypeStringID(TypeID):             # <<<<<<<<<<<<<<
+ *     # Both vlen and fixed-len strings
+ *     pass
+ */
+struct __pyx_obj_4h5py_3h5t_TypeStringID {
+  struct __pyx_obj_4h5py_3h5t_TypeID __pyx_base;
+};
+
+
+/* "h5py/h5t.pxd":23
+ *     pass
+ * 
+ * cdef class TypeOpaqueID(TypeID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+struct __pyx_obj_4h5py_3h5t_TypeOpaqueID {
+  struct __pyx_obj_4h5py_3h5t_TypeID __pyx_base;
+};
+
+
+/* "h5r.pxd":21
+ *     hdset_reg_ref_t    reg_ref
+ * 
+ * cdef class Reference:             # <<<<<<<<<<<<<<
+ * 
+ *     cdef ref_u ref
+ */
+struct __pyx_obj_4h5py_3h5r_Reference {
+  PyObject_HEAD
+  union __pyx_t_4h5py_3h5r_ref_u ref;
+  int typecode;
+  size_t typesize;
+};
+
+
+/* "h5r.pxd":27
+ *     cdef readonly size_t typesize
+ * 
+ * cdef class RegionReference(Reference):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+struct __pyx_obj_4h5py_3h5r_RegionReference {
+  struct __pyx_obj_4h5py_3h5r_Reference __pyx_base;
+};
+
+
+/* "h5py/h5t.pxd":56
+ * # --- Enums & compound types ---
+ * 
+ * cdef class TypeCompositeID(TypeID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+struct __pyx_obj_4h5py_3h5t_TypeCompositeID {
+  struct __pyx_obj_4h5py_3h5t_TypeID __pyx_base;
+};
+
+
+/* "h5py/h5t.pxd":59
+ *     pass
+ * 
+ * cdef class TypeEnumID(TypeCompositeID):             # <<<<<<<<<<<<<<
+ * 
+ *     cdef int enum_convert(self, long long *buf, int reverse) except -1
+ */
+struct __pyx_obj_4h5py_3h5t_TypeEnumID {
+  struct __pyx_obj_4h5py_3h5t_TypeCompositeID __pyx_base;
+};
+
+
+/* "h5py/h5t.pxd":20
+ * # --- Top-level classes ---
+ * 
+ * cdef class TypeArrayID(TypeID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+struct __pyx_obj_4h5py_3h5t_TypeArrayID {
+  struct __pyx_obj_4h5py_3h5t_TypeID __pyx_base;
+};
+
+
+/* "h5py/h5t.pxd":63
+ *     cdef int enum_convert(self, long long *buf, int reverse) except -1
+ * 
+ * cdef class TypeCompoundID(TypeCompositeID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+struct __pyx_obj_4h5py_3h5t_TypeCompoundID {
+  struct __pyx_obj_4h5py_3h5t_TypeCompositeID __pyx_base;
+};
+
+
+/* "h5py/h5t.pxd":51
+ *     pass
+ * 
+ * cdef class TypeFloatID(TypeAtomicID):             # <<<<<<<<<<<<<<
+ *     pass
+ * 
+ */
+struct __pyx_obj_4h5py_3h5t_TypeFloatID {
+  struct __pyx_obj_4h5py_3h5t_TypeAtomicID __pyx_base;
+};
+
+
+/* "h5py/h5t.pxd":30
+ *     pass
+ * 
+ * cdef class TypeVlenID(TypeID):             # <<<<<<<<<<<<<<
+ *     # Non-string vlens
+ *     pass
+ */
+struct __pyx_obj_4h5py_3h5t_TypeVlenID {
+  struct __pyx_obj_4h5py_3h5t_TypeID __pyx_base;
+};
+
+
+
+/* "h5py/h5t.pyx":291
+ * # === Base type class =========================================================
+ * 
+ * cdef class TypeID(ObjectID):             # <<<<<<<<<<<<<<
+ * 
+ *     """
+ */
+
+struct __pyx_vtabstruct_4h5py_3h5t_TypeID {
+  PyObject *(*py_dtype)(struct __pyx_obj_4h5py_3h5t_TypeID *);
+};
+static struct __pyx_vtabstruct_4h5py_3h5t_TypeID *__pyx_vtabptr_4h5py_3h5t_TypeID;
+
+
+/* "h5py/h5t.pyx":904
+ * # === Composite types (enums and compound) ====================================
+ * 
+ * cdef class TypeCompositeID(TypeID):             # <<<<<<<<<<<<<<
+ * 
+ *     """
+ */
+
+struct __pyx_vtabstruct_4h5py_3h5t_TypeCompositeID {
+  struct __pyx_vtabstruct_4h5py_3h5t_TypeID __pyx_base;
+};
+static struct __pyx_vtabstruct_4h5py_3h5t_TypeCompositeID *__pyx_vtabptr_4h5py_3h5t_TypeCompositeID;
+
+
+/* "h5py/h5t.pyx":950
+ * 
+ * 
+ * cdef class TypeCompoundID(TypeCompositeID):             # <<<<<<<<<<<<<<
+ * 
+ *     """
+ */
+
+struct __pyx_vtabstruct_4h5py_3h5t_TypeCompoundID {
+  struct __pyx_vtabstruct_4h5py_3h5t_TypeCompositeID __pyx_base;
+};
+static struct __pyx_vtabstruct_4h5py_3h5t_TypeCompoundID *__pyx_vtabptr_4h5py_3h5t_TypeCompoundID;
+
+
+/* "h5py/h5t.pyx":511
+ * 
+ * 
+ * cdef class TypeOpaqueID(TypeID):             # <<<<<<<<<<<<<<
+ * 
+ *     """
+ */
+
+struct __pyx_vtabstruct_4h5py_3h5t_TypeOpaqueID {
+  struct __pyx_vtabstruct_4h5py_3h5t_TypeID __pyx_base;
+};
+static struct __pyx_vtabstruct_4h5py_3h5t_TypeOpaqueID *__pyx_vtabptr_4h5py_3h5t_TypeOpaqueID;
+
+
+/* "h5py/h5t.pyx":468
+ * # === Top-level classes (inherit directly from TypeID) ========================
+ * 
+ * cdef class TypeArrayID(TypeID):             # <<<<<<<<<<<<<<
+ * 
+ *     """
+ */
+
+struct __pyx_vtabstruct_4h5py_3h5t_TypeArrayID {
+  struct __pyx_vtabstruct_4h5py_3h5t_TypeID __pyx_base;
+};
+static struct __pyx_vtabstruct_4h5py_3h5t_TypeArrayID *__pyx_vtabptr_4h5py_3h5t_TypeArrayID;
+
+
+/* "h5py/h5t.pyx":660
+ * # === Numeric classes (integers and floats) ===================================
+ * 
+ * cdef class TypeAtomicID(TypeID):             # <<<<<<<<<<<<<<
+ * 
+ *     """
+ */
+
+struct __pyx_vtabstruct_4h5py_3h5t_TypeAtomicID {
+  struct __pyx_vtabstruct_4h5py_3h5t_TypeID __pyx_base;
+};
+static struct __pyx_vtabstruct_4h5py_3h5t_TypeAtomicID *__pyx_vtabptr_4h5py_3h5t_TypeAtomicID;
+
+
+/* "h5py/h5t.pyx":748
+ * 
+ * 
+ * cdef class TypeIntegerID(TypeAtomicID):             # <<<<<<<<<<<<<<
+ * 
+ *     """
+ */
+
+struct __pyx_vtabstruct_4h5py_3h5t_TypeIntegerID {
+  struct __pyx_vtabstruct_4h5py_3h5t_TypeAtomicID __pyx_base;
+};
+static struct __pyx_vtabstruct_4h5py_3h5t_TypeIntegerID *__pyx_vtabptr_4h5py_3h5t_TypeIntegerID;
+
+
+/* "h5py/h5t.pyx":643
+ *     pass
+ * 
+ * cdef class TypeReferenceID(TypeID):             # <<<<<<<<<<<<<<
+ * 
+ *     """
+ */
+
+struct __pyx_vtabstruct_4h5py_3h5t_TypeReferenceID {
+  struct __pyx_vtabstruct_4h5py_3h5t_TypeID __pyx_base;
+};
+static struct __pyx_vtabstruct_4h5py_3h5t_TypeReferenceID *__pyx_vtabptr_4h5py_3h5t_TypeReferenceID;
+
+
+/* "h5py/h5t.pyx":546
+ *         return dtype("|V" + str(self.get_size()))
+ * 
+ * cdef class TypeStringID(TypeID):             # <<<<<<<<<<<<<<
+ * 
+ *     """
+ */
+
+struct __pyx_vtabstruct_4h5py_3h5t_TypeStringID {
+  struct __pyx_vtabstruct_4h5py_3h5t_TypeID __pyx_base;
+};
+static struct __pyx_vtabstruct_4h5py_3h5t_TypeStringID *__pyx_vtabptr_4h5py_3h5t_TypeStringID;
+
+
+/* "h5py/h5t.pyx":788
+ * 
+ * 
+ * cdef class TypeFloatID(TypeAtomicID):             # <<<<<<<<<<<<<<
+ * 
+ *     """
+ */
+
+struct __pyx_vtabstruct_4h5py_3h5t_TypeFloatID {
+  struct __pyx_vtabstruct_4h5py_3h5t_TypeAtomicID __pyx_base;
+};
+static struct __pyx_vtabstruct_4h5py_3h5t_TypeFloatID *__pyx_vtabptr_4h5py_3h5t_TypeFloatID;
+
+
+/* "h5py/h5t.pyx":629
+ *     pass
+ * 
+ * cdef class TypeTimeID(TypeID):             # <<<<<<<<<<<<<<
+ * 
+ *     """
+ */
+
+struct __pyx_vtabstruct_4h5py_3h5t_TypeTimeID {
+  struct __pyx_vtabstruct_4h5py_3h5t_TypeID __pyx_base;
+};
+static struct __pyx_vtabstruct_4h5py_3h5t_TypeTimeID *__pyx_vtabptr_4h5py_3h5t_TypeTimeID;
+
+
+/* "h5py/h5t.pyx":636
+ *     pass
+ * 
+ * cdef class TypeBitfieldID(TypeID):             # <<<<<<<<<<<<<<
+ * 
+ *     """
+ */
+
+struct __pyx_vtabstruct_4h5py_3h5t_TypeBitfieldID {
+  struct __pyx_vtabstruct_4h5py_3h5t_TypeID __pyx_base;
+};
+static struct __pyx_vtabstruct_4h5py_3h5t_TypeBitfieldID *__pyx_vtabptr_4h5py_3h5t_TypeBitfieldID;
+
+
+/* "h5py/h5t.pyx":622
+ *         return dtype("|S" + str(self.get_size()))
+ * 
+ * cdef class TypeVlenID(TypeID):             # <<<<<<<<<<<<<<
+ * 
+ *     """
+ */
+
+struct __pyx_vtabstruct_4h5py_3h5t_TypeVlenID {
+  struct __pyx_vtabstruct_4h5py_3h5t_TypeID __pyx_base;
+};
+static struct __pyx_vtabstruct_4h5py_3h5t_TypeVlenID *__pyx_vtabptr_4h5py_3h5t_TypeVlenID;
+
+
+/* "h5py/h5t.pyx":1048
+ *         return typeobj
+ * 
+ * cdef class TypeEnumID(TypeCompositeID):             # <<<<<<<<<<<<<<
+ * 
+ *     """
+ */
+
+struct __pyx_vtabstruct_4h5py_3h5t_TypeEnumID {
+  struct __pyx_vtabstruct_4h5py_3h5t_TypeCompositeID __pyx_base;
+  int (*enum_convert)(struct __pyx_obj_4h5py_3h5t_TypeEnumID *, PY_LONG_LONG *, int);
+};
+static struct __pyx_vtabstruct_4h5py_3h5t_TypeEnumID *__pyx_vtabptr_4h5py_3h5t_TypeEnumID;
+#ifndef CYTHON_REFNANNY
+  #define CYTHON_REFNANNY 0
+#endif
+#if CYTHON_REFNANNY
+  typedef struct {
+    void (*INCREF)(void*, PyObject*, int);
+    void (*DECREF)(void*, PyObject*, int);
+    void (*GOTREF)(void*, PyObject*, int);
+    void (*GIVEREF)(void*, PyObject*, int);
+    void* (*SetupContext)(const char*, int, const char*);
+    void (*FinishContext)(void**);
+  } __Pyx_RefNannyAPIStruct;
+  static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL;
+  static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); /*proto*/
+  #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL;
+#ifdef WITH_THREAD
+  #define __Pyx_RefNannySetupContext(name, acquire_gil) \
+          if (acquire_gil) { \
+              PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); \
+              __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__); \
+              PyGILState_Release(__pyx_gilstate_save); \
+          } else { \
+              __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__); \
+          }
+#else
+  #define __Pyx_RefNannySetupContext(name, acquire_gil) \
+          __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__)
+#endif
+  #define __Pyx_RefNannyFinishContext() \
+          __Pyx_RefNanny->FinishContext(&__pyx_refnanny)
+  #define __Pyx_INCREF(r)  __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_DECREF(r)  __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_GOTREF(r)  __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_XINCREF(r)  do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0)
+  #define __Pyx_XDECREF(r)  do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0)
+  #define __Pyx_XGOTREF(r)  do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0)
+  #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0)
+#else
+  #define __Pyx_RefNannyDeclarations
+  #define __Pyx_RefNannySetupContext(name, acquire_gil)
+  #define __Pyx_RefNannyFinishContext()
+  #define __Pyx_INCREF(r) Py_INCREF(r)
+  #define __Pyx_DECREF(r) Py_DECREF(r)
+  #define __Pyx_GOTREF(r)
+  #define __Pyx_GIVEREF(r)
+  #define __Pyx_XINCREF(r) Py_XINCREF(r)
+  #define __Pyx_XDECREF(r) Py_XDECREF(r)
+  #define __Pyx_XGOTREF(r)
+  #define __Pyx_XGIVEREF(r)
+#endif /* CYTHON_REFNANNY */
+#define __Pyx_CLEAR(r)    do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0)
+#define __Pyx_XCLEAR(r)   do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0)
+
+static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name); /*proto*/
+
+static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type); /*proto*/
+
+static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact,
+    Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); /*proto*/
+
+static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name); /*proto*/
+
+static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[], \
+    PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args, \
+    const char* function_name); /*proto*/
+
+static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb); /*proto*/
+static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb); /*proto*/
+
+static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause); /*proto*/
+
+static int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, int none_allowed,
+    const char *name, int exact); /*proto*/
+
+static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb); /*proto*/
+
+#if PY_MAJOR_VERSION >= 3
+static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) {
+    PyObject *value;
+    value = PyDict_GetItemWithError(d, key);
+    if (unlikely(!value)) {
+        if (!PyErr_Occurred())
+            PyErr_SetObject(PyExc_KeyError, key);
+        return NULL;
+    }
+    Py_INCREF(value);
+    return value;
+}
+#else
+    #define __Pyx_PyDict_GetItem(d, key) PyObject_GetItem(d, key)
+#endif
+
+static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) {
+    PyObject *r;
+    if (!j) return NULL;
+    r = PyObject_GetItem(o, j);
+    Py_DECREF(j);
+    return r;
+}
+#define __Pyx_GetItemInt_List(o, i, size, to_py_func) (((size) <= sizeof(Py_ssize_t)) ? \
+                                                    __Pyx_GetItemInt_List_Fast(o, i) : \
+                                                    __Pyx_GetItemInt_Generic(o, to_py_func(i)))
+static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i) {
+#if CYTHON_COMPILING_IN_CPYTHON
+    if (likely((0 <= i) & (i < PyList_GET_SIZE(o)))) {
+        PyObject *r = PyList_GET_ITEM(o, i);
+        Py_INCREF(r);
+        return r;
+    }
+    else if ((-PyList_GET_SIZE(o) <= i) & (i < 0)) {
+        PyObject *r = PyList_GET_ITEM(o, PyList_GET_SIZE(o) + i);
+        Py_INCREF(r);
+        return r;
+    }
+    return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));
+#else
+    return PySequence_GetItem(o, i);
+#endif
+}
+#define __Pyx_GetItemInt_Tuple(o, i, size, to_py_func) (((size) <= sizeof(Py_ssize_t)) ? \
+                                                    __Pyx_GetItemInt_Tuple_Fast(o, i) : \
+                                                    __Pyx_GetItemInt_Generic(o, to_py_func(i)))
+static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i) {
+#if CYTHON_COMPILING_IN_CPYTHON
+    if (likely((0 <= i) & (i < PyTuple_GET_SIZE(o)))) {
+        PyObject *r = PyTuple_GET_ITEM(o, i);
+        Py_INCREF(r);
+        return r;
+    }
+    else if ((-PyTuple_GET_SIZE(o) <= i) & (i < 0)) {
+        PyObject *r = PyTuple_GET_ITEM(o, PyTuple_GET_SIZE(o) + i);
+        Py_INCREF(r);
+        return r;
+    }
+    return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));
+#else
+    return PySequence_GetItem(o, i);
+#endif
+}
+#define __Pyx_GetItemInt(o, i, size, to_py_func) (((size) <= sizeof(Py_ssize_t)) ? \
+                                                    __Pyx_GetItemInt_Fast(o, i) : \
+                                                    __Pyx_GetItemInt_Generic(o, to_py_func(i)))
+static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i) {
+#if CYTHON_COMPILING_IN_CPYTHON
+    if (PyList_CheckExact(o)) {
+        Py_ssize_t n = (likely(i >= 0)) ? i : i + PyList_GET_SIZE(o);
+        if (likely((n >= 0) & (n < PyList_GET_SIZE(o)))) {
+            PyObject *r = PyList_GET_ITEM(o, n);
+            Py_INCREF(r);
+            return r;
+        }
+    }
+    else if (PyTuple_CheckExact(o)) {
+        Py_ssize_t n = (likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o);
+        if (likely((n >= 0) & (n < PyTuple_GET_SIZE(o)))) {
+            PyObject *r = PyTuple_GET_ITEM(o, n);
+            Py_INCREF(r);
+            return r;
+        }
+    } else {  /* inlined PySequence_GetItem() */
+        PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence;
+        if (likely(m && m->sq_item)) {
+            if (unlikely(i < 0) && likely(m->sq_length)) {
+                Py_ssize_t l = m->sq_length(o);
+                if (unlikely(l < 0)) return NULL;
+                i += l;
+            }
+            return m->sq_item(o, i);
+        }
+    }
+#else
+    if (PySequence_Check(o)) {
+        return PySequence_GetItem(o, i);
+    }
+#endif
+    return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));
+}
+
+#if CYTHON_COMPILING_IN_CPYTHON
+static CYTHON_INLINE int __Pyx_PyList_Append(PyObject* list, PyObject* x) {
+    PyListObject* L = (PyListObject*) list;
+    Py_ssize_t len = Py_SIZE(list);
+    if (likely(L->allocated > len)) {
+        Py_INCREF(x);
+        PyList_SET_ITEM(list, len, x);
+        Py_SIZE(list) = len+1;
+        return 0;
+    }
+    return PyList_Append(list, x);
+}
+#else
+#define __Pyx_PyList_Append(L,x) PyList_Append(L,x)
+#endif
+
+static CYTHON_INLINE int __Pyx_IterFinish(void); /*proto*/
+
+static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected);
+
+static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index);
+
+static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void);
+
+static void __Pyx_UnpackTupleError(PyObject *, Py_ssize_t index); /*proto*/
+
+static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected); /*proto*/
+
+static CYTHON_INLINE int __Pyx_unpack_tuple2(PyObject* tuple, PyObject** value1, PyObject** value2,
+                                             int is_tuple, int has_known_size, int decref_tuple);
+
+static CYTHON_INLINE PyObject* __Pyx_dict_iterator(PyObject* dict, int is_dict, PyObject* method_name,
+                                                   Py_ssize_t* p_orig_length, int* p_is_dict);
+static CYTHON_INLINE int __Pyx_dict_iter_next(PyObject* dict_or_iter, Py_ssize_t orig_length, Py_ssize_t* ppos,
+                                              PyObject** pkey, PyObject** pvalue, PyObject** pitem, int is_dict);
+
+static CYTHON_INLINE int __Pyx_CheckKeywordStrings(PyObject *kwdict, const char* function_name, int kw_allowed); /*proto*/
+
+static CYTHON_INLINE int __Pyx_PySequence_Contains(PyObject* item, PyObject* seq, int eq) {
+    int result = PySequence_Contains(seq, item);
+    return unlikely(result < 0) ? result : (result == (eq == Py_EQ));
+}
+
+static void __Pyx_call_next_tp_dealloc(PyObject* obj, destructor current_tp_dealloc);
+
+static int __Pyx_call_next_tp_traverse(PyObject* obj, visitproc v, void *a, traverseproc current_tp_traverse);
+
+static void __Pyx_call_next_tp_clear(PyObject* obj, inquiry current_tp_dealloc);
+
+static CYTHON_INLINE void __Pyx_ExceptionSave(PyObject **type, PyObject **value, PyObject **tb); /*proto*/
+static void __Pyx_ExceptionReset(PyObject *type, PyObject *value, PyObject *tb); /*proto*/
+
+static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level); /*proto*/
+
+static CYTHON_INLINE void __Pyx_RaiseImportError(PyObject *name);
+
+static CYTHON_INLINE hid_t __Pyx_PyInt_from_py_hid_t(PyObject *);
+
+static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_hid_t(hid_t);
+
+static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_hsize_t(hsize_t);
+
+static CYTHON_INLINE unsigned char __Pyx_PyInt_AsUnsignedChar(PyObject *);
+
+static CYTHON_INLINE unsigned short __Pyx_PyInt_AsUnsignedShort(PyObject *);
+
+static CYTHON_INLINE unsigned int __Pyx_PyInt_AsUnsignedInt(PyObject *);
+
+static CYTHON_INLINE char __Pyx_PyInt_AsChar(PyObject *);
+
+static CYTHON_INLINE short __Pyx_PyInt_AsShort(PyObject *);
+
+static CYTHON_INLINE int __Pyx_PyInt_AsInt(PyObject *);
+
+static CYTHON_INLINE signed char __Pyx_PyInt_AsSignedChar(PyObject *);
+
+static CYTHON_INLINE signed short __Pyx_PyInt_AsSignedShort(PyObject *);
+
+static CYTHON_INLINE signed int __Pyx_PyInt_AsSignedInt(PyObject *);
+
+static CYTHON_INLINE int __Pyx_PyInt_AsLongDouble(PyObject *);
+
+static CYTHON_INLINE unsigned long __Pyx_PyInt_AsUnsignedLong(PyObject *);
+
+static CYTHON_INLINE unsigned PY_LONG_LONG __Pyx_PyInt_AsUnsignedLongLong(PyObject *);
+
+static CYTHON_INLINE long __Pyx_PyInt_AsLong(PyObject *);
+
+static CYTHON_INLINE PY_LONG_LONG __Pyx_PyInt_AsLongLong(PyObject *);
+
+static CYTHON_INLINE signed long __Pyx_PyInt_AsSignedLong(PyObject *);
+
+static CYTHON_INLINE signed PY_LONG_LONG __Pyx_PyInt_AsSignedLongLong(PyObject *);
+
+static int __Pyx_check_binary_version(void);
+
+static int __Pyx_ExportFunction(const char *name, void (*f)(void), const char *sig); /*proto*/
+
+#if !defined(__Pyx_PyIdentifier_FromString)
+#if PY_MAJOR_VERSION < 3
+  #define __Pyx_PyIdentifier_FromString(s) PyString_FromString(s)
+#else
+  #define __Pyx_PyIdentifier_FromString(s) PyUnicode_FromString(s)
+#endif
+#endif
+
+static PyObject *__Pyx_ImportModule(const char *name); /*proto*/
+
+static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name, size_t size, int strict);  /*proto*/
+
+static int __Pyx_SetVtable(PyObject *dict, void *vtable); /*proto*/
+
+static int __Pyx_ImportFunction(PyObject *module, const char *funcname, void (**f)(void), const char *sig); /*proto*/
+
+typedef struct {
+    int code_line;
+    PyCodeObject* code_object;
+} __Pyx_CodeObjectCacheEntry;
+struct __Pyx_CodeObjectCache {
+    int count;
+    int max_count;
+    __Pyx_CodeObjectCacheEntry* entries;
+};
+static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL};
+static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line);
+static PyCodeObject *__pyx_find_code_object(int code_line);
+static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object);
+
+static void __Pyx_AddTraceback(const char *funcname, int c_line,
+                               int py_line, const char *filename); /*proto*/
+
+static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); /*proto*/
+
+
+/* Module declarations from 'h5py.api_types_ext' */
+
+/* Module declarations from 'h5py.api_types_hdf5' */
+
+/* Module declarations from 'h5py.defs' */
+static hid_t (*__pyx_f_4h5py_4defs_H5Tcreate)(enum H5T_class_t, size_t); /*proto*/
+static hid_t (*__pyx_f_4h5py_4defs_H5Topen)(hid_t, char *); /*proto*/
+static htri_t (*__pyx_f_4h5py_4defs_H5Tcommitted)(hid_t); /*proto*/
+static hid_t (*__pyx_f_4h5py_4defs_H5Tcopy)(hid_t); /*proto*/
+static htri_t (*__pyx_f_4h5py_4defs_H5Tequal)(hid_t, hid_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Tlock)(hid_t); /*proto*/
+static enum H5T_class_t (*__pyx_f_4h5py_4defs_H5Tget_class)(hid_t); /*proto*/
+static size_t (*__pyx_f_4h5py_4defs_H5Tget_size)(hid_t); /*proto*/
+static hid_t (*__pyx_f_4h5py_4defs_H5Tget_super)(hid_t); /*proto*/
+static htri_t (*__pyx_f_4h5py_4defs_H5Tdetect_class)(hid_t, enum H5T_class_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Tclose)(hid_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Tconvert)(hid_t, hid_t, size_t, void *, void *, hid_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Tset_size)(hid_t, size_t); /*proto*/
+static H5T_order_t (*__pyx_f_4h5py_4defs_H5Tget_order)(hid_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Tset_order)(hid_t, H5T_order_t); /*proto*/
+static hsize_t (*__pyx_f_4h5py_4defs_H5Tget_precision)(hid_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Tset_precision)(hid_t, size_t); /*proto*/
+static int (*__pyx_f_4h5py_4defs_H5Tget_offset)(hid_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Tset_offset)(hid_t, size_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Tget_pad)(hid_t, H5T_pad_t *, H5T_pad_t *); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Tset_pad)(hid_t, H5T_pad_t, H5T_pad_t); /*proto*/
+static H5T_sign_t (*__pyx_f_4h5py_4defs_H5Tget_sign)(hid_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Tset_sign)(hid_t, H5T_sign_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Tget_fields)(hid_t, size_t *, size_t *, size_t *, size_t *, size_t *); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Tset_fields)(hid_t, size_t, size_t, size_t, size_t, size_t); /*proto*/
+static size_t (*__pyx_f_4h5py_4defs_H5Tget_ebias)(hid_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Tset_ebias)(hid_t, size_t); /*proto*/
+static H5T_norm_t (*__pyx_f_4h5py_4defs_H5Tget_norm)(hid_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Tset_norm)(hid_t, H5T_norm_t); /*proto*/
+static H5T_pad_t (*__pyx_f_4h5py_4defs_H5Tget_inpad)(hid_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Tset_inpad)(hid_t, H5T_pad_t); /*proto*/
+static H5T_cset_t (*__pyx_f_4h5py_4defs_H5Tget_cset)(hid_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Tset_cset)(hid_t, H5T_cset_t); /*proto*/
+static H5T_str_t (*__pyx_f_4h5py_4defs_H5Tget_strpad)(hid_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Tset_strpad)(hid_t, H5T_str_t); /*proto*/
+static hid_t (*__pyx_f_4h5py_4defs_H5Tvlen_create)(hid_t); /*proto*/
+static htri_t (*__pyx_f_4h5py_4defs_H5Tis_variable_str)(hid_t); /*proto*/
+static int (*__pyx_f_4h5py_4defs_H5Tget_nmembers)(hid_t); /*proto*/
+static enum H5T_class_t (*__pyx_f_4h5py_4defs_H5Tget_member_class)(hid_t, int); /*proto*/
+static char *(*__pyx_f_4h5py_4defs_H5Tget_member_name)(hid_t, unsigned int); /*proto*/
+static hid_t (*__pyx_f_4h5py_4defs_H5Tget_member_type)(hid_t, unsigned int); /*proto*/
+static int (*__pyx_f_4h5py_4defs_H5Tget_member_offset)(hid_t, int); /*proto*/
+static int (*__pyx_f_4h5py_4defs_H5Tget_member_index)(hid_t, char *); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Tinsert)(hid_t, char *, size_t, hid_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Tpack)(hid_t); /*proto*/
+static hid_t (*__pyx_f_4h5py_4defs_H5Tenum_create)(hid_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Tenum_insert)(hid_t, char *, void *); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Tenum_nameof)(hid_t, void *, char *, size_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Tenum_valueof)(hid_t, char *, void *); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Tget_member_value)(hid_t, unsigned int, void *); /*proto*/
+static hid_t (*__pyx_f_4h5py_4defs_H5Tarray_create)(hid_t, int, hsize_t *, int *); /*proto*/
+static int (*__pyx_f_4h5py_4defs_H5Tget_array_ndims)(hid_t); /*proto*/
+static int (*__pyx_f_4h5py_4defs_H5Tget_array_dims)(hid_t, hsize_t *, int *); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Tset_tag)(hid_t, char *); /*proto*/
+static char *(*__pyx_f_4h5py_4defs_H5Tget_tag)(hid_t); /*proto*/
+static hid_t (*__pyx_f_4h5py_4defs_H5Tdecode)(unsigned char *); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Tencode)(hid_t, unsigned char *, size_t *); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Tcommit2)(hid_t, char *, hid_t, hid_t, hid_t, hid_t); /*proto*/
+static H5T_conv_t (*__pyx_f_4h5py_4defs_H5Tfind)(hid_t, hid_t, H5T_cdata_t **); /*proto*/
+
+/* Module declarations from 'h5py._objects' */
+static PyTypeObject *__pyx_ptype_4h5py_8_objects_ObjectID = 0;
+static hid_t (*__pyx_f_4h5py_8_objects_pdefault)(struct __pyx_obj_4h5py_8_objects_ObjectID *); /*proto*/
+
+/* Module declarations from 'numpy' */
+
+/* Module declarations from 'h5py.numpy' */
+static PyTypeObject *__pyx_ptype_4h5py_5numpy_dtype = 0;
+static PyTypeObject *__pyx_ptype_4h5py_5numpy_ndarray = 0;
+
+/* Module declarations from 'h5py.h5r' */
+static PyTypeObject *__pyx_ptype_4h5py_3h5r_Reference = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5r_RegionReference = 0;
+
+/* Module declarations from 'h5py.utils' */
+static void *(*__pyx_f_4h5py_5utils_emalloc)(size_t); /*proto*/
+static void (*__pyx_f_4h5py_5utils_efree)(void *); /*proto*/
+static int (*__pyx_f_4h5py_5utils_convert_tuple)(PyObject *, hsize_t *, hsize_t); /*proto*/
+static PyObject *(*__pyx_f_4h5py_5utils_convert_dims)(hsize_t *, hsize_t); /*proto*/
+static int (*__pyx_f_4h5py_5utils_require_tuple)(PyObject *, int, int, char *); /*proto*/
+
+/* Module declarations from 'h5py.h5t' */
+static PyTypeObject *__pyx_ptype_4h5py_3h5t_TypeID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5t_TypeArrayID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5t_TypeOpaqueID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5t_TypeStringID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5t_TypeVlenID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5t_TypeTimeID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5t_TypeBitfieldID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5t_TypeReferenceID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5t_TypeAtomicID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5t_TypeIntegerID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5t_TypeFloatID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5t_TypeCompositeID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5t_TypeEnumID = 0;
+static PyTypeObject *__pyx_ptype_4h5py_3h5t_TypeCompoundID = 0;
+static PyObject *__pyx_v_4h5py_3h5t__order_map = 0;
+static PyObject *__pyx_v_4h5py_3h5t__sign_map = 0;
+static PyObject *__pyx_v_4h5py_3h5t__float_le = 0;
+static PyObject *__pyx_v_4h5py_3h5t__float_be = 0;
+static PyObject *__pyx_v_4h5py_3h5t__float_nt = 0;
+static PyObject *__pyx_v_4h5py_3h5t__int_le = 0;
+static PyObject *__pyx_v_4h5py_3h5t__int_be = 0;
+static PyObject *__pyx_v_4h5py_3h5t__int_nt = 0;
+static PyObject *__pyx_v_4h5py_3h5t__uint_le = 0;
+static PyObject *__pyx_v_4h5py_3h5t__uint_be = 0;
+static PyObject *__pyx_v_4h5py_3h5t__uint_nt = 0;
+static struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_f_4h5py_3h5t_typewrap(hid_t, int __pyx_skip_dispatch); /*proto*/
+static struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_f_4h5py_3h5t_py_create(PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_4h5py_3h5t_py_create *__pyx_optional_args); /*proto*/
+static PyObject *__pyx_f_4h5py_3h5t_lockid(hid_t); /*proto*/
+static struct __pyx_obj_4h5py_3h5t_TypeFloatID *__pyx_f_4h5py_3h5t__c_float(PyArray_Descr *); /*proto*/
+static struct __pyx_obj_4h5py_3h5t_TypeIntegerID *__pyx_f_4h5py_3h5t__c_int(PyArray_Descr *); /*proto*/
+static struct __pyx_obj_4h5py_3h5t_TypeEnumID *__pyx_f_4h5py_3h5t__c_enum(PyArray_Descr *, PyObject *); /*proto*/
+static struct __pyx_obj_4h5py_3h5t_TypeEnumID *__pyx_f_4h5py_3h5t__c_bool(PyArray_Descr *); /*proto*/
+static struct __pyx_obj_4h5py_3h5t_TypeArrayID *__pyx_f_4h5py_3h5t__c_array(PyArray_Descr *, int); /*proto*/
+static struct __pyx_obj_4h5py_3h5t_TypeOpaqueID *__pyx_f_4h5py_3h5t__c_opaque(PyArray_Descr *); /*proto*/
+static struct __pyx_obj_4h5py_3h5t_TypeStringID *__pyx_f_4h5py_3h5t__c_string(PyArray_Descr *); /*proto*/
+static struct __pyx_obj_4h5py_3h5t_TypeCompoundID *__pyx_f_4h5py_3h5t__c_complex(PyArray_Descr *); /*proto*/
+static struct __pyx_obj_4h5py_3h5t_TypeCompoundID *__pyx_f_4h5py_3h5t__c_compound(PyArray_Descr *, int); /*proto*/
+static struct __pyx_obj_4h5py_3h5t_TypeStringID *__pyx_f_4h5py_3h5t__c_vlen_str(void); /*proto*/
+static struct __pyx_obj_4h5py_3h5t_TypeStringID *__pyx_f_4h5py_3h5t__c_vlen_unicode(void); /*proto*/
+static struct __pyx_obj_4h5py_3h5t_TypeReferenceID *__pyx_f_4h5py_3h5t__c_ref(PyObject *); /*proto*/
+static PyArray_Descr *__pyx_f_4h5py_3h5t_py_new_enum(PyObject *, PyObject *, int __pyx_skip_dispatch); /*proto*/
+static PyObject *__pyx_f_4h5py_3h5t_py_get_enum(PyObject *, int __pyx_skip_dispatch); /*proto*/
+static PyArray_Descr *__pyx_f_4h5py_3h5t_py_new_vlen(PyObject *, int __pyx_skip_dispatch); /*proto*/
+static PyObject *__pyx_f_4h5py_3h5t_py_get_vlen(PyObject *, int __pyx_skip_dispatch); /*proto*/
+#define __Pyx_MODULE_NAME "h5py.h5t"
+int __pyx_module_is_main_h5py__h5t = 0;
+
+/* Implementation of 'h5py.h5t' */
+static PyObject *__pyx_builtin_ValueError;
+static PyObject *__pyx_builtin_TypeError;
+static PyObject *__pyx_builtin_NotImplemented;
+static PyObject *__pyx_builtin_zip;
+static PyObject *__pyx_builtin_xrange;
+static PyObject *__pyx_builtin_UnicodeDecodeError;
+static PyObject *__pyx_builtin_KeyError;
+static PyObject *__pyx_builtin_sorted;
+static PyObject *__pyx_builtin_NotImplementedError;
+static PyObject *__pyx_pf_4h5py_3h5t_typewrap(CYTHON_UNUSED PyObject *__pyx_self, hid_t __pyx_v_id_); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5t_2create(CYTHON_UNUSED PyObject *__pyx_self, int __pyx_v_classtype, size_t __pyx_v_size); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5t_4open(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_group, char *__pyx_v_name); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5t_6array_create(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_v_base, PyObject *__pyx_v_dims_tpl); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5t_8enum_create(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_v_base); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5t_10vlen_create(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_v_base); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5t_12decode(CYTHON_UNUSED PyObject *__pyx_self, char *__pyx_v_buf); /* proto */
+static Py_hash_t __pyx_pf_4h5py_3h5t_6TypeID___hash__(struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5t_6TypeID_2__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_how); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5t_6TypeID_4__copy__(struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5t_6TypeID_5dtype___get__(struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5t_6TypeID_6commit(struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_v_self, struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_group, char *__pyx_v_name, struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_lcpl); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5t_6TypeID_8committed(struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5t_6TypeID_10copy(struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5t_6TypeID_12equal(struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_v_self, struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_v_typeid); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5t_6TypeID_14lock(struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5t_6TypeID_16get_class(struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5t_6TypeID_18set_size(struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_v_self, size_t __pyx_v_size); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5t_6TypeID_20get_size(struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5t_6TypeID_22get_super(struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5t_6TypeID_24detect_class(struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_v_self, int __pyx_v_classtype); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5t_6TypeID_26_close(struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5t_6TypeID_28encode(struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5t_6TypeID_30__reduce__(struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5t_6TypeID_32__setstate__(struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_v_self, char *__pyx_v_state); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5t_11TypeArrayID_get_array_ndims(struct __pyx_obj_4h5py_3h5t_TypeArrayID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5t_11TypeArrayID_2get_array_dims(struct __pyx_obj_4h5py_3h5t_TypeArrayID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5t_12TypeOpaqueID_set_tag(struct __pyx_obj_4h5py_3h5t_TypeOpaqueID *__pyx_v_self, char *__pyx_v_tag); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5t_12TypeOpaqueID_2get_tag(struct __pyx_obj_4h5py_3h5t_TypeOpaqueID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5t_12TypeStringID_is_variable_str(struct __pyx_obj_4h5py_3h5t_TypeStringID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5t_12TypeStringID_2get_cset(struct __pyx_obj_4h5py_3h5t_TypeStringID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5t_12TypeStringID_4set_cset(struct __pyx_obj_4h5py_3h5t_TypeStringID *__pyx_v_self, int __pyx_v_cset); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5t_12TypeStringID_6get_strpad(struct __pyx_obj_4h5py_3h5t_TypeStringID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5t_12TypeStringID_8set_strpad(struct __pyx_obj_4h5py_3h5t_TypeStringID *__pyx_v_self, int __pyx_v_pad); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5t_12TypeAtomicID_get_order(struct __pyx_obj_4h5py_3h5t_TypeAtomicID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5t_12TypeAtomicID_2set_order(struct __pyx_obj_4h5py_3h5t_TypeAtomicID *__pyx_v_self, int __pyx_v_order); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5t_12TypeAtomicID_4get_precision(struct __pyx_obj_4h5py_3h5t_TypeAtomicID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5t_12TypeAtomicID_6set_precision(struct __pyx_obj_4h5py_3h5t_TypeAtomicID *__pyx_v_self, size_t __pyx_v_precision); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5t_12TypeAtomicID_8get_offset(struct __pyx_obj_4h5py_3h5t_TypeAtomicID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5t_12TypeAtomicID_10set_offset(struct __pyx_obj_4h5py_3h5t_TypeAtomicID *__pyx_v_self, size_t __pyx_v_offset); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5t_12TypeAtomicID_12get_pad(struct __pyx_obj_4h5py_3h5t_TypeAtomicID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5t_12TypeAtomicID_14set_pad(struct __pyx_obj_4h5py_3h5t_TypeAtomicID *__pyx_v_self, int __pyx_v_lsb, int __pyx_v_msb); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5t_13TypeIntegerID_get_sign(struct __pyx_obj_4h5py_3h5t_TypeIntegerID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5t_13TypeIntegerID_2set_sign(struct __pyx_obj_4h5py_3h5t_TypeIntegerID *__pyx_v_self, int __pyx_v_sign); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5t_11TypeFloatID_get_fields(struct __pyx_obj_4h5py_3h5t_TypeFloatID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5t_11TypeFloatID_2set_fields(struct __pyx_obj_4h5py_3h5t_TypeFloatID *__pyx_v_self, size_t __pyx_v_spos, size_t __pyx_v_epos, size_t __pyx_v_esize, size_t __pyx_v_mpos, size_t __pyx_v_msize); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5t_11TypeFloatID_4get_ebias(struct __pyx_obj_4h5py_3h5t_TypeFloatID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5t_11TypeFloatID_6set_ebias(struct __pyx_obj_4h5py_3h5t_TypeFloatID *__pyx_v_self, size_t __pyx_v_ebias); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5t_11TypeFloatID_8get_norm(struct __pyx_obj_4h5py_3h5t_TypeFloatID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5t_11TypeFloatID_10set_norm(struct __pyx_obj_4h5py_3h5t_TypeFloatID *__pyx_v_self, int __pyx_v_norm); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5t_11TypeFloatID_12get_inpad(struct __pyx_obj_4h5py_3h5t_TypeFloatID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5t_11TypeFloatID_14set_inpad(struct __pyx_obj_4h5py_3h5t_TypeFloatID *__pyx_v_self, int __pyx_v_pad_code); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5t_15TypeCompositeID_get_nmembers(struct __pyx_obj_4h5py_3h5t_TypeCompositeID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5t_15TypeCompositeID_2get_member_name(struct __pyx_obj_4h5py_3h5t_TypeCompositeID *__pyx_v_self, int __pyx_v_member); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5t_15TypeCompositeID_4get_member_index(struct __pyx_obj_4h5py_3h5t_TypeCompositeID *__pyx_v_self, char *__pyx_v_name); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5t_14TypeCompoundID_get_member_class(struct __pyx_obj_4h5py_3h5t_TypeCompoundID *__pyx_v_self, int __pyx_v_member); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5t_14TypeCompoundID_2get_member_offset(struct __pyx_obj_4h5py_3h5t_TypeCompoundID *__pyx_v_self, int __pyx_v_member); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5t_14TypeCompoundID_4get_member_type(struct __pyx_obj_4h5py_3h5t_TypeCompoundID *__pyx_v_self, int __pyx_v_member); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5t_14TypeCompoundID_6insert(struct __pyx_obj_4h5py_3h5t_TypeCompoundID *__pyx_v_self, char *__pyx_v_name, size_t __pyx_v_offset, struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_v_field); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5t_14TypeCompoundID_8pack(struct __pyx_obj_4h5py_3h5t_TypeCompoundID *__pyx_v_self); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5t_10TypeEnumID_enum_insert(struct __pyx_obj_4h5py_3h5t_TypeEnumID *__pyx_v_self, char *__pyx_v_name, PY_LONG_LONG __pyx_v_value); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5t_10TypeEnumID_2enum_nameof(struct __pyx_obj_4h5py_3h5t_TypeEnumID *__pyx_v_self, PY_LONG_LONG __pyx_v_value); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5t_10TypeEnumID_4enum_valueof(struct __pyx_obj_4h5py_3h5t_TypeEnumID *__pyx_v_self, char *__pyx_v_name); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5t_10TypeEnumID_6get_member_value(struct __pyx_obj_4h5py_3h5t_TypeEnumID *__pyx_v_self, int __pyx_v_idx); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5t_14py_create(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_dtype_in, int __pyx_v_logical); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5t_16special_dtype(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_kwds); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5t_18check_dtype(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_kwds); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5t_20convert(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_v_src, struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_v_dst, size_t __pyx_v_n, PyArrayObject *__pyx_v_buf, PyArrayObject *__pyx_v_bkg, struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_dxpl); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5t_22find(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_v_src, struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_v_dst); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5t_24py_new_enum(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_dt_in, PyObject *__pyx_v_enum_vals); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5t_26py_get_enum(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_dt); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5t_28py_new_vlen(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_kind); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5t_30py_get_vlen(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_dt_in); /* proto */
+static char __pyx_k_1[] = "Class must be COMPOUND or OPAQUE.";
+static char __pyx_k_3[] = "Only locked or committed types can be hashed";
+static char __pyx_k_5[] = "No NumPy equivalent for %s exists";
+static char __pyx_k_7[] = "|V";
+static char __pyx_k_8[] = "Unknown string encoding (value %d)";
+static char __pyx_k_9[] = "|S";
+static char __pyx_k_10[] = "Unknown reference type";
+static char __pyx_k_13[] = "Member index must be non-negative.";
+static char __pyx_k_19[] = "This type (class %d) is not of class ENUM";
+static char __pyx_k_20[] = "Index must be non-negative.";
+static char __pyx_k_25[] = "Unsupported float size (%s)";
+static char __pyx_k_26[] = "Illegal int kind \"%s\"";
+static char __pyx_k_27[] = "Unsupported integer size (%s)";
+static char __pyx_k_28[] = "Array shape for dtype must be a sequence or integer";
+static char __pyx_k_30[] = "Illegal length %d for complex dtype";
+static char __pyx_k_32[] = "Unrecognized reference code";
+static char __pyx_k_34[] = "Object dtype %r has no native HDF5 equivalent";
+static char __pyx_k_35[] = "No conversion path for dtype: %s";
+static char __pyx_k_36[] = "Exactly one keyword may be provided";
+static char __pyx_k_38[] = "Only byte or unicode string vlens are currently supported";
+static char __pyx_k_40[] = "Enums must be created from a 2-tuple (basetype, values_dict)";
+static char __pyx_k_42[] = "Only integer types can be used as enums";
+static char __pyx_k_44[] = "Ref class must be Reference or RegionReference";
+static char __pyx_k_46[] = "Unknown special type \"%s\"";
+static char __pyx_k_48[] = " A Numpy-style dtype object representing this object.\n        ";
+static char __pyx_k_49[] = "\n    HDF5 \"H5T\" data-type API\n\n    This module contains the datatype identifier class TypeID, and its\n    subclasses which represent things like integer/float/compound identifiers.\n    The majority of the H5T API is presented as methods on these identifiers.\n";
+static char __pyx_k_53[] = "|";
+static char __pyx_k_54[] = "<";
+static char __pyx_k_55[] = ">";
+static char __pyx_k_58[] = "/home/computer/h5py/h5py/h5t.pyx";
+static char __pyx_k_59[] = "h5py.h5t";
+static char __pyx_k__3[] = "3";
+static char __pyx_k__O[] = "O";
+static char __pyx_k__c[] = "c";
+static char __pyx_k__f[] = "f";
+static char __pyx_k__i[] = "i";
+static char __pyx_k__n[] = "n";
+static char __pyx_k__u[] = "u";
+static char __pyx_k__dt[] = "dt";
+static char __pyx_k__f4[] = "f4";
+static char __pyx_k__h5[] = "h5";
+static char __pyx_k__id[] = "id";
+static char __pyx_k__iu[] = "iu";
+static char __pyx_k__np[] = "np";
+static char __pyx_k__PY3[] = "PY3";
+static char __pyx_k__bkg[] = "bkg";
+static char __pyx_k__buf[] = "buf";
+static char __pyx_k__cfg[] = "cfg";
+static char __pyx_k__dst[] = "dst";
+static char __pyx_k__lsb[] = "lsb";
+static char __pyx_k__msb[] = "msb";
+static char __pyx_k__ref[] = "ref";
+static char __pyx_k__src[] = "src";
+static char __pyx_k__str[] = "str";
+static char __pyx_k__sys[] = "sys";
+static char __pyx_k__tpl[] = "tpl";
+static char __pyx_k__val[] = "val";
+static char __pyx_k__zip[] = "zip";
+static char __pyx_k__C_S1[] = "C_S1";
+static char __pyx_k__ENUM[] = "ENUM";
+static char __pyx_k__TIME[] = "TIME";
+static char __pyx_k__VLEN[] = "VLEN";
+static char __pyx_k__base[] = "base";
+static char __pyx_k__bkg_[] = "bkg_";
+static char __pyx_k__bool[] = "bool";
+static char __pyx_k__buf_[] = "buf_";
+static char __pyx_k__copy[] = "copy";
+static char __pyx_k__data[] = "data";
+static char __pyx_k__dims[] = "dims";
+static char __pyx_k__dxpl[] = "dxpl";
+static char __pyx_k__enum[] = "enum";
+static char __pyx_k__epos[] = "epos";
+static char __pyx_k__find[] = "find";
+static char __pyx_k__h5py[] = "h5py";
+static char __pyx_k__kind[] = "kind";
+static char __pyx_k__kwds[] = "kwds";
+static char __pyx_k__lcpl[] = "lcpl";
+static char __pyx_k__lock[] = "lock";
+static char __pyx_k__mpos[] = "mpos";
+static char __pyx_k__name[] = "name";
+static char __pyx_k__open[] = "open";
+static char __pyx_k__rank[] = "rank";
+static char __pyx_k__size[] = "size";
+static char __pyx_k__spos[] = "spos";
+static char __pyx_k__type[] = "type";
+static char __pyx_k__utf8[] = "utf8";
+static char __pyx_k__vals[] = "vals";
+static char __pyx_k__vlen[] = "vlen";
+static char __pyx_k__ARRAY[] = "ARRAY";
+static char __pyx_k__FLOAT[] = "FLOAT";
+static char __pyx_k__SGN_2[] = "SGN_2";
+static char __pyx_k___conv[] = "_conv";
+static char __pyx_k__ascii[] = "ascii";
+static char __pyx_k__dt_in[] = "dt_in";
+static char __pyx_k__dtype[] = "dtype";
+static char __pyx_k__equal[] = "equal";
+static char __pyx_k__esize[] = "esize";
+static char __pyx_k__field[] = "field";
+static char __pyx_k__group[] = "group";
+static char __pyx_k__msize[] = "msize";
+static char __pyx_k__names[] = "names";
+static char __pyx_k__numpy[] = "numpy";
+static char __pyx_k__range[] = "range";
+static char __pyx_k__value[] = "value";
+static char __pyx_k__BKG_NO[] = "BKG_NO";
+static char __pyx_k__OPAQUE[] = "OPAQUE";
+static char __pyx_k__STRING[] = "STRING";
+static char __pyx_k__create[] = "create";
+static char __pyx_k__decode[] = "decode";
+static char __pyx_k__encode[] = "encode";
+static char __pyx_k__fields[] = "fields";
+static char __pyx_k__little[] = "little";
+static char __pyx_k__offset[] = "offset";
+static char __pyx_k__result[] = "result";
+static char __pyx_k__sorted[] = "sorted";
+static char __pyx_k__xrange[] = "xrange";
+static char __pyx_k__BKG_YES[] = "BKG_YES";
+static char __pyx_k__INTEGER[] = "INTEGER";
+static char __pyx_k__PAD_ONE[] = "PAD_ONE";
+static char __pyx_k___f_name[] = "_f_name";
+static char __pyx_k___i_name[] = "_i_name";
+static char __pyx_k___r_name[] = "_r_name";
+static char __pyx_k___t_name[] = "_t_name";
+static char __pyx_k__convert[] = "convert";
+static char __pyx_k__float16[] = "float16";
+static char __pyx_k__hintkey[] = "hintkey";
+static char __pyx_k__logical[] = "logical";
+static char __pyx_k__popitem[] = "popitem";
+static char __pyx_k__version[] = "version";
+static char __pyx_k__BITFIELD[] = "BITFIELD";
+static char __pyx_k__BKG_TEMP[] = "BKG_TEMP";
+static char __pyx_k__COMPOUND[] = "COMPOUND";
+static char __pyx_k__KeyError[] = "KeyError";
+static char __pyx_k__NO_CLASS[] = "NO_CLASS";
+static char __pyx_k__ORDER_BE[] = "ORDER_BE";
+static char __pyx_k__ORDER_LE[] = "ORDER_LE";
+static char __pyx_k__PAD_ZERO[] = "PAD_ZERO";
+static char __pyx_k__SGN_NONE[] = "SGN_NONE";
+static char __pyx_k__STD_I8BE[] = "STD_I8BE";
+static char __pyx_k__STD_I8LE[] = "STD_I8LE";
+static char __pyx_k__STD_U8BE[] = "STD_U8BE";
+static char __pyx_k__STD_U8LE[] = "STD_U8LE";
+static char __pyx_k__VARIABLE[] = "VARIABLE";
+static char __pyx_k____copy__[] = "__copy__";
+static char __pyx_k____hash__[] = "__hash__";
+static char __pyx_k____main__[] = "__main__";
+static char __pyx_k____name__[] = "__name__";
+static char __pyx_k____test__[] = "__test__";
+static char __pyx_k__dims_tpl[] = "dims_tpl";
+static char __pyx_k__dtype_in[] = "dtype_in";
+static char __pyx_k__get_cset[] = "get_cset";
+static char __pyx_k__get_sign[] = "get_sign";
+static char __pyx_k__get_size[] = "get_size";
+static char __pyx_k__itemsize[] = "itemsize";
+static char __pyx_k__set_size[] = "set_size";
+static char __pyx_k__subdtype[] = "subdtype";
+static char __pyx_k__warnings[] = "warnings";
+static char __pyx_k__CSET_UTF8[] = "CSET_UTF8";
+static char __pyx_k__NORM_NONE[] = "NORM_NONE";
+static char __pyx_k__ORDER_VAX[] = "ORDER_VAX";
+static char __pyx_k__REFERENCE[] = "REFERENCE";
+static char __pyx_k__STD_I16BE[] = "STD_I16BE";
+static char __pyx_k__STD_I16LE[] = "STD_I16LE";
+static char __pyx_k__STD_I32BE[] = "STD_I32BE";
+static char __pyx_k__STD_I32LE[] = "STD_I32LE";
+static char __pyx_k__STD_I64BE[] = "STD_I64BE";
+static char __pyx_k__STD_I64LE[] = "STD_I64LE";
+static char __pyx_k__STD_U16BE[] = "STD_U16BE";
+static char __pyx_k__STD_U16LE[] = "STD_U16LE";
+static char __pyx_k__STD_U32BE[] = "STD_U32BE";
+static char __pyx_k__STD_U32LE[] = "STD_U32LE";
+static char __pyx_k__STD_U64BE[] = "STD_U64BE";
+static char __pyx_k__STD_U64LE[] = "STD_U64LE";
+static char __pyx_k__TypeError[] = "TypeError";
+static char __pyx_k____class__[] = "__class__";
+static char __pyx_k__byteorder[] = "byteorder";
+static char __pyx_k__classtype[] = "classtype";
+static char __pyx_k__enum_vals[] = "enum_vals";
+static char __pyx_k__get_order[] = "get_order";
+static char __pyx_k__get_super[] = "get_super";
+static char __pyx_k__hint_dict[] = "hint_dict";
+static char __pyx_k__iteritems[] = "iteritems";
+static char __pyx_k__py_create[] = "py_create";
+static char __pyx_k__set_ebias[] = "set_ebias";
+static char __pyx_k__set_order[] = "set_order";
+static char __pyx_k__CSET_ASCII[] = "CSET_ASCII";
+static char __pyx_k__DIR_ASCEND[] = "DIR_ASCEND";
+static char __pyx_k__FORTRAN_S1[] = "FORTRAN_S1";
+static char __pyx_k__IEEE_F16BE[] = "IEEE_F16BE";
+static char __pyx_k__IEEE_F16LE[] = "IEEE_F16LE";
+static char __pyx_k__IEEE_F32BE[] = "IEEE_F32BE";
+static char __pyx_k__IEEE_F32LE[] = "IEEE_F32LE";
+static char __pyx_k__IEEE_F64BE[] = "IEEE_F64BE";
+static char __pyx_k__IEEE_F64LE[] = "IEEE_F64LE";
+static char __pyx_k__ORDER_NONE[] = "ORDER_NONE";
+static char __pyx_k__UNIX_D32BE[] = "UNIX_D32BE";
+static char __pyx_k__UNIX_D32LE[] = "UNIX_D32LE";
+static char __pyx_k__UNIX_D64BE[] = "UNIX_D64BE";
+static char __pyx_k__UNIX_D64LE[] = "UNIX_D64LE";
+static char __pyx_k__ValueError[] = "ValueError";
+static char __pyx_k__get_config[] = "get_config";
+static char __pyx_k__longdouble[] = "longdouble";
+static char __pyx_k__set_fields[] = "set_fields";
+static char __pyx_k__DIR_DEFAULT[] = "DIR_DEFAULT";
+static char __pyx_k__DIR_DESCEND[] = "DIR_DESCEND";
+static char __pyx_k__NATIVE_INT8[] = "NATIVE_INT8";
+static char __pyx_k__NORM_MSBSET[] = "NORM_MSBSET";
+static char __pyx_k__STD_REF_OBJ[] = "STD_REF_OBJ";
+static char __pyx_k__STR_NULLPAD[] = "STR_NULLPAD";
+static char __pyx_k__check_dtype[] = "check_dtype";
+static char __pyx_k__enum_create[] = "enum_create";
+static char __pyx_k__enum_insert[] = "enum_insert";
+static char __pyx_k__vlen_create[] = "vlen_create";
+static char __pyx_k__NATIVE_FLOAT[] = "NATIVE_FLOAT";
+static char __pyx_k__NATIVE_INT16[] = "NATIVE_INT16";
+static char __pyx_k__NATIVE_INT32[] = "NATIVE_INT32";
+static char __pyx_k__NATIVE_INT64[] = "NATIVE_INT64";
+static char __pyx_k__NATIVE_UINT8[] = "NATIVE_UINT8";
+static char __pyx_k__NORM_IMPLIED[] = "NORM_IMPLIED";
+static char __pyx_k__ORDER_NATIVE[] = "ORDER_NATIVE";
+static char __pyx_k__STR_NULLTERM[] = "STR_NULLTERM";
+static char __pyx_k__STR_SPACEPAD[] = "STR_SPACEPAD";
+static char __pyx_k__array_create[] = "array_create";
+static char __pyx_k__detect_class[] = "detect_class";
+static char __pyx_k__get_nmembers[] = "get_nmembers";
+static char __pyx_k__version_info[] = "version_info";
+static char __pyx_k__NATIVE_DOUBLE[] = "NATIVE_DOUBLE";
+static char __pyx_k__NATIVE_UINT16[] = "NATIVE_UINT16";
+static char __pyx_k__NATIVE_UINT32[] = "NATIVE_UINT32";
+static char __pyx_k__NATIVE_UINT64[] = "NATIVE_UINT64";
+static char __pyx_k__PYTHON_OBJECT[] = "PYTHON_OBJECT";
+static char __pyx_k__special_dtype[] = "special_dtype";
+static char __pyx_k__NotImplemented[] = "NotImplemented";
+static char __pyx_k__PAD_BACKGROUND[] = "PAD_BACKGROUND";
+static char __pyx_k__get_array_dims[] = "get_array_dims";
+static char __pyx_k__get_python_obj[] = "get_python_obj";
+static char __pyx_k__STD_REF_DSETREG[] = "STD_REF_DSETREG";
+static char __pyx_k__get_member_name[] = "get_member_name";
+static char __pyx_k__get_member_type[] = "get_member_type";
+static char __pyx_k__is_variable_str[] = "is_variable_str";
+static char __pyx_k__get_member_value[] = "get_member_value";
+static char __pyx_k__UnicodeDecodeError[] = "UnicodeDecodeError";
+static char __pyx_k__NotImplementedError[] = "NotImplementedError";
+static PyObject *__pyx_kp_s_1;
+static PyObject *__pyx_kp_s_10;
+static PyObject *__pyx_kp_s_13;
+static PyObject *__pyx_kp_s_19;
+static PyObject *__pyx_kp_s_20;
+static PyObject *__pyx_kp_s_25;
+static PyObject *__pyx_kp_s_26;
+static PyObject *__pyx_kp_s_27;
+static PyObject *__pyx_kp_s_28;
+static PyObject *__pyx_kp_s_3;
+static PyObject *__pyx_kp_s_30;
+static PyObject *__pyx_kp_s_32;
+static PyObject *__pyx_kp_s_34;
+static PyObject *__pyx_kp_s_35;
+static PyObject *__pyx_kp_s_36;
+static PyObject *__pyx_kp_s_38;
+static PyObject *__pyx_kp_s_40;
+static PyObject *__pyx_kp_s_42;
+static PyObject *__pyx_kp_s_44;
+static PyObject *__pyx_kp_s_46;
+static PyObject *__pyx_kp_s_5;
+static PyObject *__pyx_kp_s_53;
+static PyObject *__pyx_kp_s_54;
+static PyObject *__pyx_kp_s_55;
+static PyObject *__pyx_kp_s_58;
+static PyObject *__pyx_n_s_59;
+static PyObject *__pyx_kp_s_7;
+static PyObject *__pyx_kp_s_8;
+static PyObject *__pyx_kp_s_9;
+static PyObject *__pyx_kp_s__3;
+static PyObject *__pyx_n_s__ARRAY;
+static PyObject *__pyx_n_s__BITFIELD;
+static PyObject *__pyx_n_s__BKG_NO;
+static PyObject *__pyx_n_s__BKG_TEMP;
+static PyObject *__pyx_n_s__BKG_YES;
+static PyObject *__pyx_n_s__COMPOUND;
+static PyObject *__pyx_n_s__CSET_ASCII;
+static PyObject *__pyx_n_s__CSET_UTF8;
+static PyObject *__pyx_n_s__C_S1;
+static PyObject *__pyx_n_s__DIR_ASCEND;
+static PyObject *__pyx_n_s__DIR_DEFAULT;
+static PyObject *__pyx_n_s__DIR_DESCEND;
+static PyObject *__pyx_n_s__ENUM;
+static PyObject *__pyx_n_s__FLOAT;
+static PyObject *__pyx_n_s__FORTRAN_S1;
+static PyObject *__pyx_n_s__IEEE_F16BE;
+static PyObject *__pyx_n_s__IEEE_F16LE;
+static PyObject *__pyx_n_s__IEEE_F32BE;
+static PyObject *__pyx_n_s__IEEE_F32LE;
+static PyObject *__pyx_n_s__IEEE_F64BE;
+static PyObject *__pyx_n_s__IEEE_F64LE;
+static PyObject *__pyx_n_s__INTEGER;
+static PyObject *__pyx_n_s__KeyError;
+static PyObject *__pyx_n_s__NATIVE_DOUBLE;
+static PyObject *__pyx_n_s__NATIVE_FLOAT;
+static PyObject *__pyx_n_s__NATIVE_INT16;
+static PyObject *__pyx_n_s__NATIVE_INT32;
+static PyObject *__pyx_n_s__NATIVE_INT64;
+static PyObject *__pyx_n_s__NATIVE_INT8;
+static PyObject *__pyx_n_s__NATIVE_UINT16;
+static PyObject *__pyx_n_s__NATIVE_UINT32;
+static PyObject *__pyx_n_s__NATIVE_UINT64;
+static PyObject *__pyx_n_s__NATIVE_UINT8;
+static PyObject *__pyx_n_s__NORM_IMPLIED;
+static PyObject *__pyx_n_s__NORM_MSBSET;
+static PyObject *__pyx_n_s__NORM_NONE;
+static PyObject *__pyx_n_s__NO_CLASS;
+static PyObject *__pyx_n_s__NotImplemented;
+static PyObject *__pyx_n_s__NotImplementedError;
+static PyObject *__pyx_n_s__O;
+static PyObject *__pyx_n_s__OPAQUE;
+static PyObject *__pyx_n_s__ORDER_BE;
+static PyObject *__pyx_n_s__ORDER_LE;
+static PyObject *__pyx_n_s__ORDER_NATIVE;
+static PyObject *__pyx_n_s__ORDER_NONE;
+static PyObject *__pyx_n_s__ORDER_VAX;
+static PyObject *__pyx_n_s__PAD_BACKGROUND;
+static PyObject *__pyx_n_s__PAD_ONE;
+static PyObject *__pyx_n_s__PAD_ZERO;
+static PyObject *__pyx_n_s__PY3;
+static PyObject *__pyx_n_s__PYTHON_OBJECT;
+static PyObject *__pyx_n_s__REFERENCE;
+static PyObject *__pyx_n_s__SGN_2;
+static PyObject *__pyx_n_s__SGN_NONE;
+static PyObject *__pyx_n_s__STD_I16BE;
+static PyObject *__pyx_n_s__STD_I16LE;
+static PyObject *__pyx_n_s__STD_I32BE;
+static PyObject *__pyx_n_s__STD_I32LE;
+static PyObject *__pyx_n_s__STD_I64BE;
+static PyObject *__pyx_n_s__STD_I64LE;
+static PyObject *__pyx_n_s__STD_I8BE;
+static PyObject *__pyx_n_s__STD_I8LE;
+static PyObject *__pyx_n_s__STD_REF_DSETREG;
+static PyObject *__pyx_n_s__STD_REF_OBJ;
+static PyObject *__pyx_n_s__STD_U16BE;
+static PyObject *__pyx_n_s__STD_U16LE;
+static PyObject *__pyx_n_s__STD_U32BE;
+static PyObject *__pyx_n_s__STD_U32LE;
+static PyObject *__pyx_n_s__STD_U64BE;
+static PyObject *__pyx_n_s__STD_U64LE;
+static PyObject *__pyx_n_s__STD_U8BE;
+static PyObject *__pyx_n_s__STD_U8LE;
+static PyObject *__pyx_n_s__STRING;
+static PyObject *__pyx_n_s__STR_NULLPAD;
+static PyObject *__pyx_n_s__STR_NULLTERM;
+static PyObject *__pyx_n_s__STR_SPACEPAD;
+static PyObject *__pyx_n_s__TIME;
+static PyObject *__pyx_n_s__TypeError;
+static PyObject *__pyx_n_s__UNIX_D32BE;
+static PyObject *__pyx_n_s__UNIX_D32LE;
+static PyObject *__pyx_n_s__UNIX_D64BE;
+static PyObject *__pyx_n_s__UNIX_D64LE;
+static PyObject *__pyx_n_s__UnicodeDecodeError;
+static PyObject *__pyx_n_s__VARIABLE;
+static PyObject *__pyx_n_s__VLEN;
+static PyObject *__pyx_n_s__ValueError;
+static PyObject *__pyx_n_s____class__;
+static PyObject *__pyx_n_s____copy__;
+static PyObject *__pyx_n_s____hash__;
+static PyObject *__pyx_n_s____main__;
+static PyObject *__pyx_n_s____name__;
+static PyObject *__pyx_n_s____test__;
+static PyObject *__pyx_n_s___conv;
+static PyObject *__pyx_n_s___f_name;
+static PyObject *__pyx_n_s___i_name;
+static PyObject *__pyx_n_s___r_name;
+static PyObject *__pyx_n_s___t_name;
+static PyObject *__pyx_n_s__array_create;
+static PyObject *__pyx_n_s__ascii;
+static PyObject *__pyx_n_s__base;
+static PyObject *__pyx_n_s__bkg;
+static PyObject *__pyx_n_s__bkg_;
+static PyObject *__pyx_n_s__bool;
+static PyObject *__pyx_n_s__buf;
+static PyObject *__pyx_n_s__buf_;
+static PyObject *__pyx_n_s__byteorder;
+static PyObject *__pyx_n_s__c;
+static PyObject *__pyx_n_s__cfg;
+static PyObject *__pyx_n_s__check_dtype;
+static PyObject *__pyx_n_s__classtype;
+static PyObject *__pyx_n_s__convert;
+static PyObject *__pyx_n_s__copy;
+static PyObject *__pyx_n_s__create;
+static PyObject *__pyx_n_s__data;
+static PyObject *__pyx_n_s__decode;
+static PyObject *__pyx_n_s__detect_class;
+static PyObject *__pyx_n_s__dims;
+static PyObject *__pyx_n_s__dims_tpl;
+static PyObject *__pyx_n_s__dst;
+static PyObject *__pyx_n_s__dt;
+static PyObject *__pyx_n_s__dt_in;
+static PyObject *__pyx_n_s__dtype;
+static PyObject *__pyx_n_s__dtype_in;
+static PyObject *__pyx_n_s__dxpl;
+static PyObject *__pyx_n_s__encode;
+static PyObject *__pyx_n_s__enum;
+static PyObject *__pyx_n_s__enum_create;
+static PyObject *__pyx_n_s__enum_insert;
+static PyObject *__pyx_n_s__enum_vals;
+static PyObject *__pyx_n_s__epos;
+static PyObject *__pyx_n_s__equal;
+static PyObject *__pyx_n_s__esize;
+static PyObject *__pyx_n_s__f;
+static PyObject *__pyx_n_s__f4;
+static PyObject *__pyx_n_s__field;
+static PyObject *__pyx_n_s__fields;
+static PyObject *__pyx_n_s__find;
+static PyObject *__pyx_n_s__float16;
+static PyObject *__pyx_n_s__get_array_dims;
+static PyObject *__pyx_n_s__get_config;
+static PyObject *__pyx_n_s__get_cset;
+static PyObject *__pyx_n_s__get_member_name;
+static PyObject *__pyx_n_s__get_member_type;
+static PyObject *__pyx_n_s__get_member_value;
+static PyObject *__pyx_n_s__get_nmembers;
+static PyObject *__pyx_n_s__get_order;
+static PyObject *__pyx_n_s__get_python_obj;
+static PyObject *__pyx_n_s__get_sign;
+static PyObject *__pyx_n_s__get_size;
+static PyObject *__pyx_n_s__get_super;
+static PyObject *__pyx_n_s__group;
+static PyObject *__pyx_n_s__h5;
+static PyObject *__pyx_n_s__h5py;
+static PyObject *__pyx_n_s__hint_dict;
+static PyObject *__pyx_n_s__hintkey;
+static PyObject *__pyx_n_s__i;
+static PyObject *__pyx_n_s__id;
+static PyObject *__pyx_n_s__is_variable_str;
+static PyObject *__pyx_n_s__itemsize;
+static PyObject *__pyx_n_s__iteritems;
+static PyObject *__pyx_n_s__iu;
+static PyObject *__pyx_n_s__kind;
+static PyObject *__pyx_n_s__kwds;
+static PyObject *__pyx_n_s__lcpl;
+static PyObject *__pyx_n_s__little;
+static PyObject *__pyx_n_s__lock;
+static PyObject *__pyx_n_s__logical;
+static PyObject *__pyx_n_s__longdouble;
+static PyObject *__pyx_n_s__lsb;
+static PyObject *__pyx_n_s__mpos;
+static PyObject *__pyx_n_s__msb;
+static PyObject *__pyx_n_s__msize;
+static PyObject *__pyx_n_s__n;
+static PyObject *__pyx_n_s__name;
+static PyObject *__pyx_n_s__names;
+static PyObject *__pyx_n_s__np;
+static PyObject *__pyx_n_s__numpy;
+static PyObject *__pyx_n_s__offset;
+static PyObject *__pyx_n_s__open;
+static PyObject *__pyx_n_s__popitem;
+static PyObject *__pyx_n_s__py_create;
+static PyObject *__pyx_n_s__range;
+static PyObject *__pyx_n_s__rank;
+static PyObject *__pyx_n_s__ref;
+static PyObject *__pyx_n_s__result;
+static PyObject *__pyx_n_s__set_ebias;
+static PyObject *__pyx_n_s__set_fields;
+static PyObject *__pyx_n_s__set_order;
+static PyObject *__pyx_n_s__set_size;
+static PyObject *__pyx_n_s__size;
+static PyObject *__pyx_n_s__sorted;
+static PyObject *__pyx_n_s__special_dtype;
+static PyObject *__pyx_n_s__spos;
+static PyObject *__pyx_n_s__src;
+static PyObject *__pyx_n_s__str;
+static PyObject *__pyx_n_s__subdtype;
+static PyObject *__pyx_n_s__sys;
+static PyObject *__pyx_n_s__tpl;
+static PyObject *__pyx_n_s__type;
+static PyObject *__pyx_n_s__u;
+static PyObject *__pyx_n_s__utf8;
+static PyObject *__pyx_n_s__val;
+static PyObject *__pyx_n_s__vals;
+static PyObject *__pyx_n_s__value;
+static PyObject *__pyx_n_s__version;
+static PyObject *__pyx_n_s__version_info;
+static PyObject *__pyx_n_s__vlen;
+static PyObject *__pyx_n_s__vlen_create;
+static PyObject *__pyx_n_s__warnings;
+static PyObject *__pyx_n_s__xrange;
+static PyObject *__pyx_n_s__zip;
+static PyObject *__pyx_int_0;
+static PyObject *__pyx_int_1;
+static PyObject *__pyx_int_2;
+static PyObject *__pyx_int_3;
+static PyObject *__pyx_int_4;
+static PyObject *__pyx_int_5;
+static PyObject *__pyx_int_8;
+static PyObject *__pyx_int_neg_1;
+static PyObject *__pyx_int_10;
+static PyObject *__pyx_int_15;
+static PyObject *__pyx_k_tuple_2;
+static PyObject *__pyx_k_tuple_4;
+static PyObject *__pyx_k_tuple_6;
+static PyObject *__pyx_k_tuple_11;
+static PyObject *__pyx_k_tuple_12;
+static PyObject *__pyx_k_tuple_14;
+static PyObject *__pyx_k_tuple_15;
+static PyObject *__pyx_k_tuple_16;
+static PyObject *__pyx_k_tuple_17;
+static PyObject *__pyx_k_tuple_18;
+static PyObject *__pyx_k_tuple_21;
+static PyObject *__pyx_k_tuple_22;
+static PyObject *__pyx_k_tuple_23;
+static PyObject *__pyx_k_tuple_24;
+static PyObject *__pyx_k_tuple_29;
+static PyObject *__pyx_k_tuple_31;
+static PyObject *__pyx_k_tuple_33;
+static PyObject *__pyx_k_tuple_37;
+static PyObject *__pyx_k_tuple_39;
+static PyObject *__pyx_k_tuple_41;
+static PyObject *__pyx_k_tuple_43;
+static PyObject *__pyx_k_tuple_45;
+static PyObject *__pyx_k_tuple_47;
+static PyObject *__pyx_k_tuple_50;
+static PyObject *__pyx_k_tuple_51;
+static PyObject *__pyx_k_tuple_52;
+static PyObject *__pyx_k_tuple_56;
+static PyObject *__pyx_k_tuple_60;
+static PyObject *__pyx_k_tuple_62;
+static PyObject *__pyx_k_tuple_64;
+static PyObject *__pyx_k_tuple_66;
+static PyObject *__pyx_k_tuple_68;
+static PyObject *__pyx_k_tuple_70;
+static PyObject *__pyx_k_tuple_72;
+static PyObject *__pyx_k_tuple_74;
+static PyObject *__pyx_k_tuple_76;
+static PyObject *__pyx_k_codeobj_57;
+static PyObject *__pyx_k_codeobj_61;
+static PyObject *__pyx_k_codeobj_63;
+static PyObject *__pyx_k_codeobj_65;
+static PyObject *__pyx_k_codeobj_67;
+static PyObject *__pyx_k_codeobj_69;
+static PyObject *__pyx_k_codeobj_71;
+static PyObject *__pyx_k_codeobj_73;
+static PyObject *__pyx_k_codeobj_75;
+static PyObject *__pyx_k_codeobj_77;
+
+/* "h5py/h5t.pyx":39
+ * # === Custom C API ============================================================
+ * 
+ * cpdef TypeID typewrap(hid_t id_):             # <<<<<<<<<<<<<<
+ * 
+ *     cdef H5T_class_t cls
+ */
+
+static PyObject *__pyx_pw_4h5py_3h5t_1typewrap(PyObject *__pyx_self, PyObject *__pyx_arg_id_); /*proto*/
+static struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_f_4h5py_3h5t_typewrap(hid_t __pyx_v_id_, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  enum H5T_class_t __pyx_v_cls;
+  PyObject *__pyx_v_pcls = NULL;
+  struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  enum H5T_class_t __pyx_t_1;
+  int __pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("typewrap", 0);
+
+  /* "h5py/h5t.pyx":42
+ * 
+ *     cdef H5T_class_t cls
+ *     cls = H5Tget_class(id_)             # <<<<<<<<<<<<<<
+ * 
+ *     if cls == H5T_INTEGER:
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Tget_class(__pyx_v_id_); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 42; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v_cls = __pyx_t_1;
+
+  /* "h5py/h5t.pyx":44
+ *     cls = H5Tget_class(id_)
+ * 
+ *     if cls == H5T_INTEGER:             # <<<<<<<<<<<<<<
+ *         pcls = TypeIntegerID
+ *     elif cls == H5T_FLOAT:
+ */
+  __pyx_t_2 = (__pyx_v_cls == H5T_INTEGER);
+  if (__pyx_t_2) {
+
+    /* "h5py/h5t.pyx":45
+ * 
+ *     if cls == H5T_INTEGER:
+ *         pcls = TypeIntegerID             # <<<<<<<<<<<<<<
+ *     elif cls == H5T_FLOAT:
+ *         pcls = TypeFloatID
+ */
+    __Pyx_INCREF(((PyObject *)((PyObject*)__pyx_ptype_4h5py_3h5t_TypeIntegerID)));
+    __pyx_v_pcls = ((PyObject*)__pyx_ptype_4h5py_3h5t_TypeIntegerID);
+    goto __pyx_L3;
+  }
+
+  /* "h5py/h5t.pyx":46
+ *     if cls == H5T_INTEGER:
+ *         pcls = TypeIntegerID
+ *     elif cls == H5T_FLOAT:             # <<<<<<<<<<<<<<
+ *         pcls = TypeFloatID
+ *     elif cls == H5T_TIME:
+ */
+  __pyx_t_2 = (__pyx_v_cls == H5T_FLOAT);
+  if (__pyx_t_2) {
+
+    /* "h5py/h5t.pyx":47
+ *         pcls = TypeIntegerID
+ *     elif cls == H5T_FLOAT:
+ *         pcls = TypeFloatID             # <<<<<<<<<<<<<<
+ *     elif cls == H5T_TIME:
+ *         pcls = TypeTimeID
+ */
+    __Pyx_INCREF(((PyObject *)((PyObject*)__pyx_ptype_4h5py_3h5t_TypeFloatID)));
+    __pyx_v_pcls = ((PyObject*)__pyx_ptype_4h5py_3h5t_TypeFloatID);
+    goto __pyx_L3;
+  }
+
+  /* "h5py/h5t.pyx":48
+ *     elif cls == H5T_FLOAT:
+ *         pcls = TypeFloatID
+ *     elif cls == H5T_TIME:             # <<<<<<<<<<<<<<
+ *         pcls = TypeTimeID
+ *     elif cls == H5T_STRING:
+ */
+  __pyx_t_2 = (__pyx_v_cls == H5T_TIME);
+  if (__pyx_t_2) {
+
+    /* "h5py/h5t.pyx":49
+ *         pcls = TypeFloatID
+ *     elif cls == H5T_TIME:
+ *         pcls = TypeTimeID             # <<<<<<<<<<<<<<
+ *     elif cls == H5T_STRING:
+ *         pcls = TypeStringID
+ */
+    __Pyx_INCREF(((PyObject *)((PyObject*)__pyx_ptype_4h5py_3h5t_TypeTimeID)));
+    __pyx_v_pcls = ((PyObject*)__pyx_ptype_4h5py_3h5t_TypeTimeID);
+    goto __pyx_L3;
+  }
+
+  /* "h5py/h5t.pyx":50
+ *     elif cls == H5T_TIME:
+ *         pcls = TypeTimeID
+ *     elif cls == H5T_STRING:             # <<<<<<<<<<<<<<
+ *         pcls = TypeStringID
+ *     elif cls == H5T_BITFIELD:
+ */
+  __pyx_t_2 = (__pyx_v_cls == H5T_STRING);
+  if (__pyx_t_2) {
+
+    /* "h5py/h5t.pyx":51
+ *         pcls = TypeTimeID
+ *     elif cls == H5T_STRING:
+ *         pcls = TypeStringID             # <<<<<<<<<<<<<<
+ *     elif cls == H5T_BITFIELD:
+ *         pcls = TypeBitfieldID
+ */
+    __Pyx_INCREF(((PyObject *)((PyObject*)__pyx_ptype_4h5py_3h5t_TypeStringID)));
+    __pyx_v_pcls = ((PyObject*)__pyx_ptype_4h5py_3h5t_TypeStringID);
+    goto __pyx_L3;
+  }
+
+  /* "h5py/h5t.pyx":52
+ *     elif cls == H5T_STRING:
+ *         pcls = TypeStringID
+ *     elif cls == H5T_BITFIELD:             # <<<<<<<<<<<<<<
+ *         pcls = TypeBitfieldID
+ *     elif cls == H5T_OPAQUE:
+ */
+  __pyx_t_2 = (__pyx_v_cls == H5T_BITFIELD);
+  if (__pyx_t_2) {
+
+    /* "h5py/h5t.pyx":53
+ *         pcls = TypeStringID
+ *     elif cls == H5T_BITFIELD:
+ *         pcls = TypeBitfieldID             # <<<<<<<<<<<<<<
+ *     elif cls == H5T_OPAQUE:
+ *         pcls = TypeOpaqueID
+ */
+    __Pyx_INCREF(((PyObject *)((PyObject*)__pyx_ptype_4h5py_3h5t_TypeBitfieldID)));
+    __pyx_v_pcls = ((PyObject*)__pyx_ptype_4h5py_3h5t_TypeBitfieldID);
+    goto __pyx_L3;
+  }
+
+  /* "h5py/h5t.pyx":54
+ *     elif cls == H5T_BITFIELD:
+ *         pcls = TypeBitfieldID
+ *     elif cls == H5T_OPAQUE:             # <<<<<<<<<<<<<<
+ *         pcls = TypeOpaqueID
+ *     elif cls == H5T_COMPOUND:
+ */
+  __pyx_t_2 = (__pyx_v_cls == H5T_OPAQUE);
+  if (__pyx_t_2) {
+
+    /* "h5py/h5t.pyx":55
+ *         pcls = TypeBitfieldID
+ *     elif cls == H5T_OPAQUE:
+ *         pcls = TypeOpaqueID             # <<<<<<<<<<<<<<
+ *     elif cls == H5T_COMPOUND:
+ *         pcls = TypeCompoundID
+ */
+    __Pyx_INCREF(((PyObject *)((PyObject*)__pyx_ptype_4h5py_3h5t_TypeOpaqueID)));
+    __pyx_v_pcls = ((PyObject*)__pyx_ptype_4h5py_3h5t_TypeOpaqueID);
+    goto __pyx_L3;
+  }
+
+  /* "h5py/h5t.pyx":56
+ *     elif cls == H5T_OPAQUE:
+ *         pcls = TypeOpaqueID
+ *     elif cls == H5T_COMPOUND:             # <<<<<<<<<<<<<<
+ *         pcls = TypeCompoundID
+ *     elif cls == H5T_REFERENCE:
+ */
+  __pyx_t_2 = (__pyx_v_cls == H5T_COMPOUND);
+  if (__pyx_t_2) {
+
+    /* "h5py/h5t.pyx":57
+ *         pcls = TypeOpaqueID
+ *     elif cls == H5T_COMPOUND:
+ *         pcls = TypeCompoundID             # <<<<<<<<<<<<<<
+ *     elif cls == H5T_REFERENCE:
+ *         pcls = TypeReferenceID
+ */
+    __Pyx_INCREF(((PyObject *)((PyObject*)__pyx_ptype_4h5py_3h5t_TypeCompoundID)));
+    __pyx_v_pcls = ((PyObject*)__pyx_ptype_4h5py_3h5t_TypeCompoundID);
+    goto __pyx_L3;
+  }
+
+  /* "h5py/h5t.pyx":58
+ *     elif cls == H5T_COMPOUND:
+ *         pcls = TypeCompoundID
+ *     elif cls == H5T_REFERENCE:             # <<<<<<<<<<<<<<
+ *         pcls = TypeReferenceID
+ *     elif cls == H5T_ENUM:
+ */
+  __pyx_t_2 = (__pyx_v_cls == H5T_REFERENCE);
+  if (__pyx_t_2) {
+
+    /* "h5py/h5t.pyx":59
+ *         pcls = TypeCompoundID
+ *     elif cls == H5T_REFERENCE:
+ *         pcls = TypeReferenceID             # <<<<<<<<<<<<<<
+ *     elif cls == H5T_ENUM:
+ *         pcls = TypeEnumID
+ */
+    __Pyx_INCREF(((PyObject *)((PyObject*)__pyx_ptype_4h5py_3h5t_TypeReferenceID)));
+    __pyx_v_pcls = ((PyObject*)__pyx_ptype_4h5py_3h5t_TypeReferenceID);
+    goto __pyx_L3;
+  }
+
+  /* "h5py/h5t.pyx":60
+ *     elif cls == H5T_REFERENCE:
+ *         pcls = TypeReferenceID
+ *     elif cls == H5T_ENUM:             # <<<<<<<<<<<<<<
+ *         pcls = TypeEnumID
+ *     elif cls == H5T_VLEN:
+ */
+  __pyx_t_2 = (__pyx_v_cls == H5T_ENUM);
+  if (__pyx_t_2) {
+
+    /* "h5py/h5t.pyx":61
+ *         pcls = TypeReferenceID
+ *     elif cls == H5T_ENUM:
+ *         pcls = TypeEnumID             # <<<<<<<<<<<<<<
+ *     elif cls == H5T_VLEN:
+ *         pcls = TypeVlenID
+ */
+    __Pyx_INCREF(((PyObject *)((PyObject*)__pyx_ptype_4h5py_3h5t_TypeEnumID)));
+    __pyx_v_pcls = ((PyObject*)__pyx_ptype_4h5py_3h5t_TypeEnumID);
+    goto __pyx_L3;
+  }
+
+  /* "h5py/h5t.pyx":62
+ *     elif cls == H5T_ENUM:
+ *         pcls = TypeEnumID
+ *     elif cls == H5T_VLEN:             # <<<<<<<<<<<<<<
+ *         pcls = TypeVlenID
+ *     elif cls == H5T_ARRAY:
+ */
+  __pyx_t_2 = (__pyx_v_cls == H5T_VLEN);
+  if (__pyx_t_2) {
+
+    /* "h5py/h5t.pyx":63
+ *         pcls = TypeEnumID
+ *     elif cls == H5T_VLEN:
+ *         pcls = TypeVlenID             # <<<<<<<<<<<<<<
+ *     elif cls == H5T_ARRAY:
+ *         pcls = TypeArrayID
+ */
+    __Pyx_INCREF(((PyObject *)((PyObject*)__pyx_ptype_4h5py_3h5t_TypeVlenID)));
+    __pyx_v_pcls = ((PyObject*)__pyx_ptype_4h5py_3h5t_TypeVlenID);
+    goto __pyx_L3;
+  }
+
+  /* "h5py/h5t.pyx":64
+ *     elif cls == H5T_VLEN:
+ *         pcls = TypeVlenID
+ *     elif cls == H5T_ARRAY:             # <<<<<<<<<<<<<<
+ *         pcls = TypeArrayID
+ *     else:
+ */
+  __pyx_t_2 = (__pyx_v_cls == H5T_ARRAY);
+  if (__pyx_t_2) {
+
+    /* "h5py/h5t.pyx":65
+ *         pcls = TypeVlenID
+ *     elif cls == H5T_ARRAY:
+ *         pcls = TypeArrayID             # <<<<<<<<<<<<<<
+ *     else:
+ *         pcls = TypeID
+ */
+    __Pyx_INCREF(((PyObject *)((PyObject*)__pyx_ptype_4h5py_3h5t_TypeArrayID)));
+    __pyx_v_pcls = ((PyObject*)__pyx_ptype_4h5py_3h5t_TypeArrayID);
+    goto __pyx_L3;
+  }
+  /*else*/ {
+
+    /* "h5py/h5t.pyx":67
+ *         pcls = TypeArrayID
+ *     else:
+ *         pcls = TypeID             # <<<<<<<<<<<<<<
+ * 
+ *     return pcls(id_)
+ */
+    __Pyx_INCREF(((PyObject *)((PyObject*)__pyx_ptype_4h5py_3h5t_TypeID)));
+    __pyx_v_pcls = ((PyObject*)__pyx_ptype_4h5py_3h5t_TypeID);
+  }
+  __pyx_L3:;
+
+  /* "h5py/h5t.pyx":69
+ *         pcls = TypeID
+ * 
+ *     return pcls(id_)             # <<<<<<<<<<<<<<
+ * 
+ * cdef object lockid(hid_t id_in):
+ */
+  __Pyx_XDECREF(((PyObject *)__pyx_r));
+  __pyx_t_3 = __Pyx_PyInt_to_py_hid_t(__pyx_v_id_); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_3);
+  __pyx_t_3 = 0;
+  __pyx_t_3 = PyObject_Call(((PyObject *)__pyx_v_pcls), ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
+  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_4h5py_3h5t_TypeID))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = ((struct __pyx_obj_4h5py_3h5t_TypeID *)__pyx_t_3);
+  __pyx_t_3 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = ((struct __pyx_obj_4h5py_3h5t_TypeID *)Py_None); __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("h5py.h5t.typewrap", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_pcls);
+  __Pyx_XGIVEREF((PyObject *)__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5t_1typewrap(PyObject *__pyx_self, PyObject *__pyx_arg_id_); /*proto*/
+static PyObject *__pyx_pw_4h5py_3h5t_1typewrap(PyObject *__pyx_self, PyObject *__pyx_arg_id_) {
+  hid_t __pyx_v_id_;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("typewrap (wrapper)", 0);
+  assert(__pyx_arg_id_); {
+    __pyx_v_id_ = __Pyx_PyInt_from_py_hid_t(__pyx_arg_id_); if (unlikely((__pyx_v_id_ == (hid_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5t.typewrap", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_3h5t_typewrap(__pyx_self, ((hid_t)__pyx_v_id_));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":39
+ * # === Custom C API ============================================================
+ * 
+ * cpdef TypeID typewrap(hid_t id_):             # <<<<<<<<<<<<<<
+ * 
+ *     cdef H5T_class_t cls
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5t_typewrap(CYTHON_UNUSED PyObject *__pyx_self, hid_t __pyx_v_id_) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("typewrap", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = ((PyObject *)__pyx_f_4h5py_3h5t_typewrap(__pyx_v_id_, 0)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py.h5t.typewrap", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":71
+ *     return pcls(id_)
+ * 
+ * cdef object lockid(hid_t id_in):             # <<<<<<<<<<<<<<
+ *     cdef TypeID tid
+ *     tid = typewrap(id_in)
+ */
+
+static PyObject *__pyx_f_4h5py_3h5t_lockid(hid_t __pyx_v_id_in) {
+  struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_v_tid = 0;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("lockid", 0);
+
+  /* "h5py/h5t.pyx":73
+ * cdef object lockid(hid_t id_in):
+ *     cdef TypeID tid
+ *     tid = typewrap(id_in)             # <<<<<<<<<<<<<<
+ *     tid.locked = 1
+ *     return tid
+ */
+  __pyx_t_1 = ((PyObject *)__pyx_f_4h5py_3h5t_typewrap(__pyx_v_id_in, 0)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 73; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_tid = ((struct __pyx_obj_4h5py_3h5t_TypeID *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "h5py/h5t.pyx":74
+ *     cdef TypeID tid
+ *     tid = typewrap(id_in)
+ *     tid.locked = 1             # <<<<<<<<<<<<<<
+ *     return tid
+ * 
+ */
+  __pyx_v_tid->__pyx_base.locked = 1;
+
+  /* "h5py/h5t.pyx":75
+ *     tid = typewrap(id_in)
+ *     tid.locked = 1
+ *     return tid             # <<<<<<<<<<<<<<
+ * 
+ * # === Public constants and data structures ====================================
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(((PyObject *)__pyx_v_tid));
+  __pyx_r = ((PyObject *)__pyx_v_tid);
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py.h5t.lockid", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_tid);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5t_3create(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_4h5py_3h5t_2create[] = "(INT classtype, UINT size) => TypeID\n        \n    Create a new HDF5 type object.  Legal class values are \n    COMPOUND and OPAQUE.  Use enum_create for enums.\n    ";
+static PyMethodDef __pyx_mdef_4h5py_3h5t_3create = {__Pyx_NAMESTR("create"), (PyCFunction)__pyx_pw_4h5py_3h5t_3create, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5t_2create)};
+static PyObject *__pyx_pw_4h5py_3h5t_3create(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  int __pyx_v_classtype;
+  size_t __pyx_v_size;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("create (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__classtype,&__pyx_n_s__size,0};
+    PyObject* values[2] = {0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__classtype)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__size)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("create", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "create") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+    }
+    __pyx_v_classtype = __Pyx_PyInt_AsInt(values[0]); if (unlikely((__pyx_v_classtype == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_size = __Pyx_PyInt_AsSize_t(values[1]); if (unlikely((__pyx_v_size == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("create", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5t.create", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_3h5t_2create(__pyx_self, __pyx_v_classtype, __pyx_v_size);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":219
+ * 
+ * 
+ * def create(int classtype, size_t size):             # <<<<<<<<<<<<<<
+ *     """(INT classtype, UINT size) => TypeID
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5t_2create(CYTHON_UNUSED PyObject *__pyx_self, int __pyx_v_classtype, size_t __pyx_v_size) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  int __pyx_t_2;
+  int __pyx_t_3;
+  PyObject *__pyx_t_4 = NULL;
+  hid_t __pyx_t_5;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("create", 0);
+
+  /* "h5py/h5t.pyx":227
+ * 
+ *     # HDF5 versions 1.6.X segfault with anything else
+ *     if classtype != H5T_COMPOUND and classtype != H5T_OPAQUE:             # <<<<<<<<<<<<<<
+ *         raise ValueError("Class must be COMPOUND or OPAQUE.")
+ * 
+ */
+  __pyx_t_1 = (__pyx_v_classtype != H5T_COMPOUND);
+  if (__pyx_t_1) {
+    __pyx_t_2 = (__pyx_v_classtype != H5T_OPAQUE);
+    __pyx_t_3 = __pyx_t_2;
+  } else {
+    __pyx_t_3 = __pyx_t_1;
+  }
+  if (__pyx_t_3) {
+
+    /* "h5py/h5t.pyx":228
+ *     # HDF5 versions 1.6.X segfault with anything else
+ *     if classtype != H5T_COMPOUND and classtype != H5T_OPAQUE:
+ *         raise ValueError("Class must be COMPOUND or OPAQUE.")             # <<<<<<<<<<<<<<
+ * 
+ *     return typewrap(H5Tcreate(<H5T_class_t>classtype, size))
+ */
+    __pyx_t_4 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_2), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 228; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 228; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  /* "h5py/h5t.pyx":230
+ *         raise ValueError("Class must be COMPOUND or OPAQUE.")
+ * 
+ *     return typewrap(H5Tcreate(<H5T_class_t>classtype, size))             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_5 = __pyx_f_4h5py_4defs_H5Tcreate(((enum H5T_class_t)__pyx_v_classtype), __pyx_v_size); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 230; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = ((PyObject *)__pyx_f_4h5py_3h5t_typewrap(__pyx_t_5, 0)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 230; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_r = __pyx_t_4;
+  __pyx_t_4 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("h5py.h5t.create", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5t_5open(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_4h5py_3h5t_4open[] = "(ObjectID group, STRING name) => TypeID\n\n    Open a named datatype from a file.\n    ";
+static PyMethodDef __pyx_mdef_4h5py_3h5t_5open = {__Pyx_NAMESTR("open"), (PyCFunction)__pyx_pw_4h5py_3h5t_5open, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5t_4open)};
+static PyObject *__pyx_pw_4h5py_3h5t_5open(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_group = 0;
+  char *__pyx_v_name;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("open (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__group,&__pyx_n_s__name,0};
+    PyObject* values[2] = {0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__group)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__name)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("open", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "open") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+    }
+    __pyx_v_group = ((struct __pyx_obj_4h5py_8_objects_ObjectID *)values[0]);
+    __pyx_v_name = PyBytes_AsString(values[1]); if (unlikely((!__pyx_v_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("open", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5t.open", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_group), __pyx_ptype_4h5py_8_objects_ObjectID, 0, "group", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_pf_4h5py_3h5t_4open(__pyx_self, __pyx_v_group, __pyx_v_name);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":233
+ * 
+ * 
+ * def open(ObjectID group not None, char* name):             # <<<<<<<<<<<<<<
+ *     """(ObjectID group, STRING name) => TypeID
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5t_4open(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_group, char *__pyx_v_name) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  hid_t __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("open", 0);
+
+  /* "h5py/h5t.pyx":238
+ *     Open a named datatype from a file.
+ *     """
+ *     return typewrap(H5Topen(group.id, name))             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Topen(__pyx_v_group->id, __pyx_v_name); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 238; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = ((PyObject *)__pyx_f_4h5py_3h5t_typewrap(__pyx_t_1, 0)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 238; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5t.open", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5t_7array_create(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_4h5py_3h5t_6array_create[] = "(TypeID base, TUPLE dimensions) => TypeArrayID\n\n    Create a new array datatype, using and HDF5 parent type and\n    dimensions given via a tuple of positive integers.  \"Unlimited\" \n    dimensions are not allowed.\n    ";
+static PyMethodDef __pyx_mdef_4h5py_3h5t_7array_create = {__Pyx_NAMESTR("array_create"), (PyCFunction)__pyx_pw_4h5py_3h5t_7array_create, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5t_6array_create)};
+static PyObject *__pyx_pw_4h5py_3h5t_7array_create(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_v_base = 0;
+  PyObject *__pyx_v_dims_tpl = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("array_create (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__base,&__pyx_n_s__dims_tpl,0};
+    PyObject* values[2] = {0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__base)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__dims_tpl)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("array_create", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 241; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "array_create") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 241; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+    }
+    __pyx_v_base = ((struct __pyx_obj_4h5py_3h5t_TypeID *)values[0]);
+    __pyx_v_dims_tpl = values[1];
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("array_create", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 241; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5t.array_create", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_base), __pyx_ptype_4h5py_3h5t_TypeID, 0, "base", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 241; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_pf_4h5py_3h5t_6array_create(__pyx_self, __pyx_v_base, __pyx_v_dims_tpl);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":241
+ * 
+ * 
+ * def array_create(TypeID base not None, object dims_tpl):             # <<<<<<<<<<<<<<
+ *     """(TypeID base, TUPLE dimensions) => TypeArrayID
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5t_6array_create(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_v_base, PyObject *__pyx_v_dims_tpl) {
+  hsize_t __pyx_v_rank;
+  hsize_t *__pyx_v_dims;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  Py_ssize_t __pyx_t_2;
+  void *__pyx_t_3;
+  hid_t __pyx_t_4;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("array_create", 0);
+
+  /* "h5py/h5t.pyx":249
+ *     """
+ *     cdef hsize_t rank
+ *     cdef hsize_t *dims = NULL             # <<<<<<<<<<<<<<
+ * 
+ *     require_tuple(dims_tpl, 0, -1, "dims_tpl")
+ */
+  __pyx_v_dims = NULL;
+
+  /* "h5py/h5t.pyx":251
+ *     cdef hsize_t *dims = NULL
+ * 
+ *     require_tuple(dims_tpl, 0, -1, "dims_tpl")             # <<<<<<<<<<<<<<
+ *     rank = len(dims_tpl)
+ *     dims = <hsize_t*>emalloc(sizeof(hsize_t)*rank)
+ */
+  __pyx_t_1 = __pyx_f_4h5py_5utils_require_tuple(__pyx_v_dims_tpl, 0, -1, __pyx_k__dims_tpl); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5t.pyx":252
+ * 
+ *     require_tuple(dims_tpl, 0, -1, "dims_tpl")
+ *     rank = len(dims_tpl)             # <<<<<<<<<<<<<<
+ *     dims = <hsize_t*>emalloc(sizeof(hsize_t)*rank)
+ * 
+ */
+  __pyx_t_2 = PyObject_Length(__pyx_v_dims_tpl); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v_rank = __pyx_t_2;
+
+  /* "h5py/h5t.pyx":253
+ *     require_tuple(dims_tpl, 0, -1, "dims_tpl")
+ *     rank = len(dims_tpl)
+ *     dims = <hsize_t*>emalloc(sizeof(hsize_t)*rank)             # <<<<<<<<<<<<<<
+ * 
+ *     try:
+ */
+  __pyx_t_3 = __pyx_f_4h5py_5utils_emalloc(((sizeof(hsize_t)) * __pyx_v_rank)); if (unlikely(__pyx_t_3 == NULL && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 253; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v_dims = ((hsize_t *)__pyx_t_3);
+
+  /* "h5py/h5t.pyx":255
+ *     dims = <hsize_t*>emalloc(sizeof(hsize_t)*rank)
+ * 
+ *     try:             # <<<<<<<<<<<<<<
+ *         convert_tuple(dims_tpl, dims, rank)
+ *         return TypeArrayID(H5Tarray_create(base.id, rank, dims, NULL))
+ */
+  /*try:*/ {
+
+    /* "h5py/h5t.pyx":256
+ * 
+ *     try:
+ *         convert_tuple(dims_tpl, dims, rank)             # <<<<<<<<<<<<<<
+ *         return TypeArrayID(H5Tarray_create(base.id, rank, dims, NULL))
+ *     finally:
+ */
+    __pyx_t_1 = __pyx_f_4h5py_5utils_convert_tuple(__pyx_v_dims_tpl, __pyx_v_dims, __pyx_v_rank); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 256; __pyx_clineno = __LINE__; goto __pyx_L4;}
+
+    /* "h5py/h5t.pyx":257
+ *     try:
+ *         convert_tuple(dims_tpl, dims, rank)
+ *         return TypeArrayID(H5Tarray_create(base.id, rank, dims, NULL))             # <<<<<<<<<<<<<<
+ *     finally:
+ *         efree(dims)
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_4 = __pyx_f_4h5py_4defs_H5Tarray_create(__pyx_v_base->__pyx_base.id, __pyx_v_rank, __pyx_v_dims, NULL); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L4;}
+    __pyx_t_5 = __Pyx_PyInt_to_py_hid_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L4;}
+    __Pyx_GOTREF(__pyx_t_5);
+    __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L4;}
+    __Pyx_GOTREF(__pyx_t_6);
+    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5);
+    __Pyx_GIVEREF(__pyx_t_5);
+    __pyx_t_5 = 0;
+    __pyx_t_5 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4h5py_3h5t_TypeArrayID)), ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L4;}
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
+    __pyx_r = __pyx_t_5;
+    __pyx_t_5 = 0;
+    goto __pyx_L3;
+  }
+
+  /* "h5py/h5t.pyx":259
+ *         return TypeArrayID(H5Tarray_create(base.id, rank, dims, NULL))
+ *     finally:
+ *         efree(dims)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  /*finally:*/ {
+    int __pyx_why;
+    PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb;
+    int __pyx_exc_lineno;
+    __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
+    __pyx_why = 0; goto __pyx_L5;
+    __pyx_L3: __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
+    __pyx_why = 3; goto __pyx_L5;
+    __pyx_L4: {
+      __pyx_why = 4;
+      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+      __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb);
+      __pyx_exc_lineno = __pyx_lineno;
+      goto __pyx_L5;
+    }
+    __pyx_L5:;
+    __pyx_f_4h5py_5utils_efree(__pyx_v_dims);
+    switch (__pyx_why) {
+      case 3: goto __pyx_L0;
+      case 4: {
+        __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb);
+        __pyx_lineno = __pyx_exc_lineno;
+        __pyx_exc_type = 0;
+        __pyx_exc_value = 0;
+        __pyx_exc_tb = 0;
+        goto __pyx_L1_error;
+      }
+    }
+  }
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_AddTraceback("h5py.h5t.array_create", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5t_9enum_create(PyObject *__pyx_self, PyObject *__pyx_v_base); /*proto*/
+static char __pyx_doc_4h5py_3h5t_8enum_create[] = "(TypeID base) => TypeID\n\n    Create a new enumerated type based on an (integer) parent type.\n    ";
+static PyMethodDef __pyx_mdef_4h5py_3h5t_9enum_create = {__Pyx_NAMESTR("enum_create"), (PyCFunction)__pyx_pw_4h5py_3h5t_9enum_create, METH_O, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5t_8enum_create)};
+static PyObject *__pyx_pw_4h5py_3h5t_9enum_create(PyObject *__pyx_self, PyObject *__pyx_v_base) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("enum_create (wrapper)", 0);
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_base), __pyx_ptype_4h5py_3h5t_TypeID, 0, "base", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 262; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_pf_4h5py_3h5t_8enum_create(__pyx_self, ((struct __pyx_obj_4h5py_3h5t_TypeID *)__pyx_v_base));
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":262
+ * 
+ * 
+ * def enum_create(TypeID base not None):             # <<<<<<<<<<<<<<
+ *     """(TypeID base) => TypeID
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5t_8enum_create(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_v_base) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  hid_t __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("enum_create", 0);
+
+  /* "h5py/h5t.pyx":267
+ *     Create a new enumerated type based on an (integer) parent type.
+ *     """
+ *     return typewrap(H5Tenum_create(base.id))             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Tenum_create(__pyx_v_base->__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = ((PyObject *)__pyx_f_4h5py_3h5t_typewrap(__pyx_t_1, 0)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5t.enum_create", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5t_11vlen_create(PyObject *__pyx_self, PyObject *__pyx_v_base); /*proto*/
+static char __pyx_doc_4h5py_3h5t_10vlen_create[] = "(TypeID base) => TypeID\n\n    Create a new variable-length datatype, using any HDF5 type as a base.\n\n    Although the Python interface can manipulate these types, there is no\n    provision for reading/writing vlen data.\n    ";
+static PyMethodDef __pyx_mdef_4h5py_3h5t_11vlen_create = {__Pyx_NAMESTR("vlen_create"), (PyCFunction)__pyx_pw_4h5py_3h5t_11vlen_create, METH_O, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5t_10vlen_create)};
+static PyObject *__pyx_pw_4h5py_3h5t_11vlen_create(PyObject *__pyx_self, PyObject *__pyx_v_base) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("vlen_create (wrapper)", 0);
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_base), __pyx_ptype_4h5py_3h5t_TypeID, 0, "base", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 270; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_pf_4h5py_3h5t_10vlen_create(__pyx_self, ((struct __pyx_obj_4h5py_3h5t_TypeID *)__pyx_v_base));
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":270
+ * 
+ * 
+ * def vlen_create(TypeID base not None):             # <<<<<<<<<<<<<<
+ *     """(TypeID base) => TypeID
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5t_10vlen_create(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_v_base) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  hid_t __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("vlen_create", 0);
+
+  /* "h5py/h5t.pyx":278
+ *     provision for reading/writing vlen data.
+ *     """
+ *     return typewrap(H5Tvlen_create(base.id))             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Tvlen_create(__pyx_v_base->__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 278; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = ((PyObject *)__pyx_f_4h5py_3h5t_typewrap(__pyx_t_1, 0)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 278; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5t.vlen_create", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5t_13decode(PyObject *__pyx_self, PyObject *__pyx_arg_buf); /*proto*/
+static char __pyx_doc_4h5py_3h5t_12decode[] = "(STRING buf) => TypeID\n\n    Unserialize an HDF5 type.  You can also do this with the native\n    Python pickling machinery.\n    ";
+static PyMethodDef __pyx_mdef_4h5py_3h5t_13decode = {__Pyx_NAMESTR("decode"), (PyCFunction)__pyx_pw_4h5py_3h5t_13decode, METH_O, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5t_12decode)};
+static PyObject *__pyx_pw_4h5py_3h5t_13decode(PyObject *__pyx_self, PyObject *__pyx_arg_buf) {
+  char *__pyx_v_buf;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("decode (wrapper)", 0);
+  assert(__pyx_arg_buf); {
+    __pyx_v_buf = PyBytes_AsString(__pyx_arg_buf); if (unlikely((!__pyx_v_buf) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 281; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5t.decode", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_3h5t_12decode(__pyx_self, ((char *)__pyx_v_buf));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":281
+ * 
+ * 
+ * def decode(char* buf):             # <<<<<<<<<<<<<<
+ *     """(STRING buf) => TypeID
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5t_12decode(CYTHON_UNUSED PyObject *__pyx_self, char *__pyx_v_buf) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  hid_t __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("decode", 0);
+
+  /* "h5py/h5t.pyx":287
+ *     Python pickling machinery.
+ *     """
+ *     return typewrap(H5Tdecode(<unsigned char*>buf))             # <<<<<<<<<<<<<<
+ * 
+ * # === Base type class =========================================================
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Tdecode(((unsigned char *)__pyx_v_buf)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 287; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = ((PyObject *)__pyx_f_4h5py_3h5t_typewrap(__pyx_t_1, 0)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 287; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5t.decode", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static Py_hash_t __pyx_pw_4h5py_3h5t_6TypeID_1__hash__(PyObject *__pyx_v_self); /*proto*/
+static Py_hash_t __pyx_pw_4h5py_3h5t_6TypeID_1__hash__(PyObject *__pyx_v_self) {
+  Py_hash_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__hash__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5t_6TypeID___hash__(((struct __pyx_obj_4h5py_3h5t_TypeID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":300
+ *     """
+ * 
+ *     def __hash__(self):             # <<<<<<<<<<<<<<
+ *         if self._hash is None:
+ *             try:
+ */
+
+static Py_hash_t __pyx_pf_4h5py_3h5t_6TypeID___hash__(struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_v_self) {
+  Py_hash_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  Py_hash_t __pyx_t_8;
+  int __pyx_t_9;
+  PyObject *__pyx_t_10 = NULL;
+  PyObject *__pyx_t_11 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__hash__", 0);
+
+  /* "h5py/h5t.pyx":301
+ * 
+ *     def __hash__(self):
+ *         if self._hash is None:             # <<<<<<<<<<<<<<
+ *             try:
+ *                 # Try to use object header first
+ */
+  __pyx_t_1 = (__pyx_v_self->__pyx_base._hash == Py_None);
+  if (__pyx_t_1) {
+
+    /* "h5py/h5t.pyx":302
+ *     def __hash__(self):
+ *         if self._hash is None:
+ *             try:             # <<<<<<<<<<<<<<
+ *                 # Try to use object header first
+ *                 return ObjectID.__hash__(self)
+ */
+    {
+      __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4);
+      __Pyx_XGOTREF(__pyx_t_2);
+      __Pyx_XGOTREF(__pyx_t_3);
+      __Pyx_XGOTREF(__pyx_t_4);
+      /*try:*/ {
+
+        /* "h5py/h5t.pyx":304
+ *             try:
+ *                 # Try to use object header first
+ *                 return ObjectID.__hash__(self)             # <<<<<<<<<<<<<<
+ *             except TypeError:
+ *                 # It's a transient type object
+ */
+        __pyx_t_5 = PyObject_GetAttr(((PyObject *)((PyObject*)__pyx_ptype_4h5py_8_objects_ObjectID)), __pyx_n_s____hash__); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 304; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+        __Pyx_GOTREF(__pyx_t_5);
+        __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 304; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+        __Pyx_GOTREF(__pyx_t_6);
+        __Pyx_INCREF(((PyObject *)__pyx_v_self));
+        PyTuple_SET_ITEM(__pyx_t_6, 0, ((PyObject *)__pyx_v_self));
+        __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
+        __pyx_t_7 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 304; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
+        __pyx_t_8 = __Pyx_PyInt_AsHash_t(__pyx_t_7); if (unlikely((__pyx_t_8 == (Py_hash_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 304; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        __pyx_r = __pyx_t_8;
+        goto __pyx_L8_try_return;
+      }
+      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+      goto __pyx_L11_try_end;
+      __pyx_L8_try_return:;
+      __Pyx_XGIVEREF(__pyx_t_2);
+      __Pyx_XGIVEREF(__pyx_t_3);
+      __Pyx_XGIVEREF(__pyx_t_4);
+      __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
+      goto __pyx_L0;
+      __pyx_L4_error:;
+      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+      /* "h5py/h5t.pyx":305
+ *                 # Try to use object header first
+ *                 return ObjectID.__hash__(self)
+ *             except TypeError:             # <<<<<<<<<<<<<<
+ *                 # It's a transient type object
+ *                 if self.locked:
+ */
+      __pyx_t_9 = PyErr_ExceptionMatches(__pyx_builtin_TypeError);
+      if (__pyx_t_9) {
+        __Pyx_AddTraceback("h5py.h5t.TypeID.__hash__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+        if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_6, &__pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __Pyx_GOTREF(__pyx_t_6);
+        __Pyx_GOTREF(__pyx_t_5);
+
+        /* "h5py/h5t.pyx":307
+ *             except TypeError:
+ *                 # It's a transient type object
+ *                 if self.locked:             # <<<<<<<<<<<<<<
+ *                     self._hash = hash(self.encode())
+ *                 else:
+ */
+        if (__pyx_v_self->__pyx_base.locked) {
+
+          /* "h5py/h5t.pyx":308
+ *                 # It's a transient type object
+ *                 if self.locked:
+ *                     self._hash = hash(self.encode())             # <<<<<<<<<<<<<<
+ *                 else:
+ *                     raise TypeError("Only locked or committed types can be hashed")
+ */
+          __pyx_t_10 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__encode); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 308; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
+          __Pyx_GOTREF(__pyx_t_10);
+          __pyx_t_11 = PyObject_Call(__pyx_t_10, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 308; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+          __pyx_t_8 = PyObject_Hash(__pyx_t_11); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 308; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
+          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+          __pyx_t_11 = __Pyx_PyInt_FromHash_t(__pyx_t_8); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 308; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_GIVEREF(__pyx_t_11);
+          __Pyx_GOTREF(__pyx_v_self->__pyx_base._hash);
+          __Pyx_DECREF(__pyx_v_self->__pyx_base._hash);
+          __pyx_v_self->__pyx_base._hash = __pyx_t_11;
+          __pyx_t_11 = 0;
+          goto __pyx_L14;
+        }
+        /*else*/ {
+
+          /* "h5py/h5t.pyx":310
+ *                     self._hash = hash(self.encode())
+ *                 else:
+ *                     raise TypeError("Only locked or committed types can be hashed")             # <<<<<<<<<<<<<<
+ * 
+ *         return self._hash
+ */
+          __pyx_t_11 = PyObject_Call(__pyx_builtin_TypeError, ((PyObject *)__pyx_k_tuple_4), NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 310; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
+          __Pyx_GOTREF(__pyx_t_11);
+          __Pyx_Raise(__pyx_t_11, 0, 0, 0);
+          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 310; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
+        }
+        __pyx_L14:;
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+        goto __pyx_L5_exception_handled;
+      }
+      __pyx_L6_except_error:;
+      __Pyx_XGIVEREF(__pyx_t_2);
+      __Pyx_XGIVEREF(__pyx_t_3);
+      __Pyx_XGIVEREF(__pyx_t_4);
+      __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
+      goto __pyx_L1_error;
+      __pyx_L5_exception_handled:;
+      __Pyx_XGIVEREF(__pyx_t_2);
+      __Pyx_XGIVEREF(__pyx_t_3);
+      __Pyx_XGIVEREF(__pyx_t_4);
+      __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
+      __pyx_L11_try_end:;
+    }
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  /* "h5py/h5t.pyx":312
+ *                     raise TypeError("Only locked or committed types can be hashed")
+ * 
+ *         return self._hash             # <<<<<<<<<<<<<<
+ * 
+ *     def __richcmp__(self, object other, int how):
+ */
+  __pyx_t_8 = __Pyx_PyInt_AsHash_t(__pyx_v_self->__pyx_base._hash); if (unlikely((__pyx_t_8 == (Py_hash_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 312; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_t_8;
+  goto __pyx_L0;
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_XDECREF(__pyx_t_10);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.h5t.TypeID.__hash__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  if (unlikely(__pyx_r == -1) && !PyErr_Occurred()) __pyx_r = -2;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5t_6TypeID_3__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_how); /*proto*/
+static PyObject *__pyx_pw_4h5py_3h5t_6TypeID_3__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_how) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__richcmp__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5t_6TypeID_2__richcmp__(((PyObject *)__pyx_v_self), ((PyObject *)__pyx_v_other), ((int)__pyx_v_how));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":314
+ *         return self._hash
+ * 
+ *     def __richcmp__(self, object other, int how):             # <<<<<<<<<<<<<<
+ *         cdef bint truthval = 0
+ *         if how != 2 and how != 3:
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5t_6TypeID_2__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_how) {
+  int __pyx_v_truthval;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__richcmp__", 0);
+
+  /* "h5py/h5t.pyx":315
+ * 
+ *     def __richcmp__(self, object other, int how):
+ *         cdef bint truthval = 0             # <<<<<<<<<<<<<<
+ *         if how != 2 and how != 3:
+ *             return NotImplemented
+ */
+  __pyx_v_truthval = 0;
+
+  /* "h5py/h5t.pyx":316
+ *     def __richcmp__(self, object other, int how):
+ *         cdef bint truthval = 0
+ *         if how != 2 and how != 3:             # <<<<<<<<<<<<<<
+ *             return NotImplemented
+ *         if isinstance(other, TypeID):
+ */
+  switch (__pyx_v_how) {
+    case 2:
+    case 3:
+    __pyx_t_1 = 0;
+    break;
+    default:
+    __pyx_t_1 = 1;
+    break;
+  }
+  if (__pyx_t_1) {
+
+    /* "h5py/h5t.pyx":317
+ *         cdef bint truthval = 0
+ *         if how != 2 and how != 3:
+ *             return NotImplemented             # <<<<<<<<<<<<<<
+ *         if isinstance(other, TypeID):
+ *             truthval = self.equal(other)
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __Pyx_INCREF(__pyx_builtin_NotImplemented);
+    __pyx_r = __pyx_builtin_NotImplemented;
+    goto __pyx_L0;
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  /* "h5py/h5t.pyx":318
+ *         if how != 2 and how != 3:
+ *             return NotImplemented
+ *         if isinstance(other, TypeID):             # <<<<<<<<<<<<<<
+ *             truthval = self.equal(other)
+ * 
+ */
+  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_other, ((PyObject*)__pyx_ptype_4h5py_3h5t_TypeID)); 
+  if (__pyx_t_1) {
+
+    /* "h5py/h5t.pyx":319
+ *             return NotImplemented
+ *         if isinstance(other, TypeID):
+ *             truthval = self.equal(other)             # <<<<<<<<<<<<<<
+ * 
+ *         if how == 2:
+ */
+    __pyx_t_2 = PyObject_GetAttr(__pyx_v_self, __pyx_n_s__equal); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 319; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 319; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_INCREF(__pyx_v_other);
+    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_other);
+    __Pyx_GIVEREF(__pyx_v_other);
+    __pyx_t_4 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 319; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
+    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 319; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_v_truthval = __pyx_t_1;
+    goto __pyx_L4;
+  }
+  __pyx_L4:;
+
+  /* "h5py/h5t.pyx":321
+ *             truthval = self.equal(other)
+ * 
+ *         if how == 2:             # <<<<<<<<<<<<<<
+ *             return truthval
+ *         return not truthval
+ */
+  __pyx_t_1 = (__pyx_v_how == 2);
+  if (__pyx_t_1) {
+
+    /* "h5py/h5t.pyx":322
+ * 
+ *         if how == 2:
+ *             return truthval             # <<<<<<<<<<<<<<
+ *         return not truthval
+ * 
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_v_truthval); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 322; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_r = __pyx_t_4;
+    __pyx_t_4 = 0;
+    goto __pyx_L0;
+    goto __pyx_L5;
+  }
+  __pyx_L5:;
+
+  /* "h5py/h5t.pyx":323
+ *         if how == 2:
+ *             return truthval
+ *         return not truthval             # <<<<<<<<<<<<<<
+ * 
+ *     def __copy__(self):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_4 = __Pyx_PyBool_FromLong((!__pyx_v_truthval)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 323; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_r = __pyx_t_4;
+  __pyx_t_4 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("h5py.h5t.TypeID.__richcmp__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5t_6TypeID_5__copy__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static PyObject *__pyx_pw_4h5py_3h5t_6TypeID_5__copy__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__copy__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5t_6TypeID_4__copy__(((struct __pyx_obj_4h5py_3h5t_TypeID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":325
+ *         return not truthval
+ * 
+ *     def __copy__(self):             # <<<<<<<<<<<<<<
+ *         cdef TypeID cpy
+ *         cpy = ObjectID.__copy__(self)
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5t_6TypeID_4__copy__(struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_v_self) {
+  struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_v_cpy = 0;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__copy__", 0);
+
+  /* "h5py/h5t.pyx":327
+ *     def __copy__(self):
+ *         cdef TypeID cpy
+ *         cpy = ObjectID.__copy__(self)             # <<<<<<<<<<<<<<
+ *         return cpy
+ * 
+ */
+  __pyx_t_1 = PyObject_GetAttr(((PyObject *)((PyObject*)__pyx_ptype_4h5py_8_objects_ObjectID)), __pyx_n_s____copy__); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 327; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 327; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_INCREF(((PyObject *)__pyx_v_self));
+  PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_v_self));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
+  __pyx_t_3 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 327; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
+  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_4h5py_3h5t_TypeID))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 327; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v_cpy = ((struct __pyx_obj_4h5py_3h5t_TypeID *)__pyx_t_3);
+  __pyx_t_3 = 0;
+
+  /* "h5py/h5t.pyx":328
+ *         cdef TypeID cpy
+ *         cpy = ObjectID.__copy__(self)
+ *         return cpy             # <<<<<<<<<<<<<<
+ * 
+ *     property dtype:
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(((PyObject *)__pyx_v_cpy));
+  __pyx_r = ((PyObject *)__pyx_v_cpy);
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("h5py.h5t.TypeID.__copy__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_cpy);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5t_6TypeID_5dtype_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_4h5py_3h5t_6TypeID_5dtype_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5t_6TypeID_5dtype___get__(((struct __pyx_obj_4h5py_3h5t_TypeID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":333
+ *         """ A Numpy-style dtype object representing this object.
+ *         """
+ *         def __get__(self):             # <<<<<<<<<<<<<<
+ *             return self.py_dtype()
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5t_6TypeID_5dtype___get__(struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__get__", 0);
+
+  /* "h5py/h5t.pyx":334
+ *         """
+ *         def __get__(self):
+ *             return self.py_dtype()             # <<<<<<<<<<<<<<
+ * 
+ *     cdef object py_dtype(self):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = ((struct __pyx_vtabstruct_4h5py_3h5t_TypeID *)__pyx_v_self->__pyx_vtab)->py_dtype(__pyx_v_self); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 334; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py.h5t.TypeID.dtype.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":336
+ *             return self.py_dtype()
+ * 
+ *     cdef object py_dtype(self):             # <<<<<<<<<<<<<<
+ *         raise TypeError("No NumPy equivalent for %s exists" % self.__class__.__name__)
+ * 
+ */
+
+static PyObject *__pyx_f_4h5py_3h5t_6TypeID_py_dtype(struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("py_dtype", 0);
+
+  /* "h5py/h5t.pyx":337
+ * 
+ *     cdef object py_dtype(self):
+ *         raise TypeError("No NumPy equivalent for %s exists" % self.__class__.__name__)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s____class__); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 337; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s____name__); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 337; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_5), __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 337; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 337; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_t_1));
+  __Pyx_GIVEREF(((PyObject *)__pyx_t_1));
+  __pyx_t_1 = 0;
+  __pyx_t_1 = PyObject_Call(__pyx_builtin_TypeError, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 337; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
+  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  {__pyx_filename = __pyx_f[0]; __pyx_lineno = 337; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5t.TypeID.py_dtype", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5t_6TypeID_7commit(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_4h5py_3h5t_6TypeID_6commit[] = "(ObjectID group, STRING name, PropID lcpl=None)\n\n        Commit this (transient) datatype to a named datatype in a file.\n        If present, lcpl may be a link creation property list.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5t_6TypeID_7commit(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_group = 0;
+  char *__pyx_v_name;
+  struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_lcpl = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("commit (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__group,&__pyx_n_s__name,&__pyx_n_s__lcpl,0};
+    PyObject* values[3] = {0,0,0};
+
+    /* "h5py/h5t.pyx":340
+ * 
+ * 
+ *     def commit(self, ObjectID group not None, char* name, ObjectID lcpl=None):             # <<<<<<<<<<<<<<
+ *         """(ObjectID group, STRING name, PropID lcpl=None)
+ * 
+ */
+    values[2] = (PyObject *)((struct __pyx_obj_4h5py_8_objects_ObjectID *)Py_None);
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__group)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__name)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("commit", 0, 2, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 340; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+        case  2:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__lcpl);
+          if (value) { values[2] = value; kw_args--; }
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "commit") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 340; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else {
+      switch (PyTuple_GET_SIZE(__pyx_args)) {
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+    }
+    __pyx_v_group = ((struct __pyx_obj_4h5py_8_objects_ObjectID *)values[0]);
+    __pyx_v_name = PyBytes_AsString(values[1]); if (unlikely((!__pyx_v_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 340; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_lcpl = ((struct __pyx_obj_4h5py_8_objects_ObjectID *)values[2]);
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("commit", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 340; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5t.TypeID.commit", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_group), __pyx_ptype_4h5py_8_objects_ObjectID, 0, "group", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 340; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_lcpl), __pyx_ptype_4h5py_8_objects_ObjectID, 1, "lcpl", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 340; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_pf_4h5py_3h5t_6TypeID_6commit(((struct __pyx_obj_4h5py_3h5t_TypeID *)__pyx_v_self), __pyx_v_group, __pyx_v_name, __pyx_v_lcpl);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_4h5py_3h5t_6TypeID_6commit(struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_v_self, struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_group, char *__pyx_v_name, struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_lcpl) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("commit", 0);
+
+  /* "h5py/h5t.pyx":347
+ *         """
+ *         H5Tcommit2(group.id, name, self.id, pdefault(lcpl),
+ *             H5P_DEFAULT, H5P_DEFAULT)             # <<<<<<<<<<<<<<
+ * 
+ *     def committed(self):
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Tcommit2(__pyx_v_group->id, __pyx_v_name, __pyx_v_self->__pyx_base.id, __pyx_f_4h5py_8_objects_pdefault(__pyx_v_lcpl), H5P_DEFAULT, H5P_DEFAULT); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 346; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py.h5t.TypeID.commit", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5t_6TypeID_9committed(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5t_6TypeID_8committed[] = "() => BOOL is_comitted\n\n        Determine if a given type object is named (T) or transient (F).\n        ";
+static PyObject *__pyx_pw_4h5py_3h5t_6TypeID_9committed(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("committed (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5t_6TypeID_8committed(((struct __pyx_obj_4h5py_3h5t_TypeID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":349
+ *             H5P_DEFAULT, H5P_DEFAULT)
+ * 
+ *     def committed(self):             # <<<<<<<<<<<<<<
+ *         """() => BOOL is_comitted
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5t_6TypeID_8committed(struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  htri_t __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("committed", 0);
+
+  /* "h5py/h5t.pyx":354
+ *         Determine if a given type object is named (T) or transient (F).
+ *         """
+ *         return <bint>(H5Tcommitted(self.id))             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Tcommitted(__pyx_v_self->__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 354; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyBool_FromLong(((int)__pyx_t_1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 354; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5t.TypeID.committed", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5t_6TypeID_11copy(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5t_6TypeID_10copy[] = "() => TypeID\n\n        Create a copy of this type object.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5t_6TypeID_11copy(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("copy (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5t_6TypeID_10copy(((struct __pyx_obj_4h5py_3h5t_TypeID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":357
+ * 
+ * 
+ *     def copy(self):             # <<<<<<<<<<<<<<
+ *         """() => TypeID
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5t_6TypeID_10copy(struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  hid_t __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("copy", 0);
+
+  /* "h5py/h5t.pyx":362
+ *         Create a copy of this type object.
+ *         """
+ *         return typewrap(H5Tcopy(self.id))             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Tcopy(__pyx_v_self->__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 362; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = ((PyObject *)__pyx_f_4h5py_3h5t_typewrap(__pyx_t_1, 0)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 362; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5t.TypeID.copy", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5t_6TypeID_13equal(PyObject *__pyx_v_self, PyObject *__pyx_v_typeid); /*proto*/
+static char __pyx_doc_4h5py_3h5t_6TypeID_12equal[] = "(TypeID typeid) => BOOL\n\n        Logical comparison between datatypes.  Also called by\n        Python's \"==\" operator.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5t_6TypeID_13equal(PyObject *__pyx_v_self, PyObject *__pyx_v_typeid) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("equal (wrapper)", 0);
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_typeid), __pyx_ptype_4h5py_3h5t_TypeID, 1, "typeid", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 365; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_pf_4h5py_3h5t_6TypeID_12equal(((struct __pyx_obj_4h5py_3h5t_TypeID *)__pyx_v_self), ((struct __pyx_obj_4h5py_3h5t_TypeID *)__pyx_v_typeid));
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":365
+ * 
+ * 
+ *     def equal(self, TypeID typeid):             # <<<<<<<<<<<<<<
+ *         """(TypeID typeid) => BOOL
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5t_6TypeID_12equal(struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_v_self, struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_v_typeid) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  htri_t __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("equal", 0);
+
+  /* "h5py/h5t.pyx":371
+ *         Python's "==" operator.
+ *         """
+ *         return <bint>(H5Tequal(self.id, typeid.id))             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Tequal(__pyx_v_self->__pyx_base.id, __pyx_v_typeid->__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 371; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyBool_FromLong(((int)__pyx_t_1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 371; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5t.TypeID.equal", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5t_6TypeID_15lock(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5t_6TypeID_14lock[] = "()\n\n        Lock this datatype, which makes it immutable and indestructible.\n        Once locked, it can't be unlocked.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5t_6TypeID_15lock(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("lock (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5t_6TypeID_14lock(((struct __pyx_obj_4h5py_3h5t_TypeID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":374
+ * 
+ * 
+ *     def lock(self):             # <<<<<<<<<<<<<<
+ *         """()
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5t_6TypeID_14lock(struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("lock", 0);
+
+  /* "h5py/h5t.pyx":380
+ *         Once locked, it can't be unlocked.
+ *         """
+ *         H5Tlock(self.id)             # <<<<<<<<<<<<<<
+ *         self.locked = 1
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Tlock(__pyx_v_self->__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 380; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5t.pyx":381
+ *         """
+ *         H5Tlock(self.id)
+ *         self.locked = 1             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_v_self->__pyx_base.locked = 1;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py.h5t.TypeID.lock", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5t_6TypeID_17get_class(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5t_6TypeID_16get_class[] = "() => INT classcode\n\n        Determine the datatype's class code.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5t_6TypeID_17get_class(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_class (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5t_6TypeID_16get_class(((struct __pyx_obj_4h5py_3h5t_TypeID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":384
+ * 
+ * 
+ *     def get_class(self):             # <<<<<<<<<<<<<<
+ *         """() => INT classcode
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5t_6TypeID_16get_class(struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  enum H5T_class_t __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_class", 0);
+
+  /* "h5py/h5t.pyx":389
+ *         Determine the datatype's class code.
+ *         """
+ *         return <int>H5Tget_class(self.id)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Tget_class(__pyx_v_self->__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 389; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyInt_FromLong(((int)__pyx_t_1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 389; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5t.TypeID.get_class", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5t_6TypeID_19set_size(PyObject *__pyx_v_self, PyObject *__pyx_arg_size); /*proto*/
+static char __pyx_doc_4h5py_3h5t_6TypeID_18set_size[] = "(UINT size)\n\n        Set the total size of the datatype, in bytes.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5t_6TypeID_19set_size(PyObject *__pyx_v_self, PyObject *__pyx_arg_size) {
+  size_t __pyx_v_size;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("set_size (wrapper)", 0);
+  assert(__pyx_arg_size); {
+    __pyx_v_size = __Pyx_PyInt_AsSize_t(__pyx_arg_size); if (unlikely((__pyx_v_size == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 392; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5t.TypeID.set_size", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_3h5t_6TypeID_18set_size(((struct __pyx_obj_4h5py_3h5t_TypeID *)__pyx_v_self), ((size_t)__pyx_v_size));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":392
+ * 
+ * 
+ *     def set_size(self, size_t size):             # <<<<<<<<<<<<<<
+ *         """(UINT size)
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5t_6TypeID_18set_size(struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_v_self, size_t __pyx_v_size) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("set_size", 0);
+
+  /* "h5py/h5t.pyx":397
+ *         Set the total size of the datatype, in bytes.
+ *         """
+ *         H5Tset_size(self.id, size)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Tset_size(__pyx_v_self->__pyx_base.id, __pyx_v_size); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 397; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py.h5t.TypeID.set_size", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5t_6TypeID_21get_size(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5t_6TypeID_20get_size[] = " () => INT size\n\n            Determine the total size of a datatype, in bytes.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5t_6TypeID_21get_size(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_size (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5t_6TypeID_20get_size(((struct __pyx_obj_4h5py_3h5t_TypeID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":400
+ * 
+ * 
+ *     def get_size(self):             # <<<<<<<<<<<<<<
+ *         """ () => INT size
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5t_6TypeID_20get_size(struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  size_t __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_size", 0);
+
+  /* "h5py/h5t.pyx":405
+ *             Determine the total size of a datatype, in bytes.
+ *         """
+ *         return H5Tget_size(self.id)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Tget_size(__pyx_v_self->__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 405; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyInt_FromSize_t(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 405; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5t.TypeID.get_size", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5t_6TypeID_23get_super(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5t_6TypeID_22get_super[] = "() => TypeID\n\n        Determine the parent type of an array, enumeration or vlen datatype.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5t_6TypeID_23get_super(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_super (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5t_6TypeID_22get_super(((struct __pyx_obj_4h5py_3h5t_TypeID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":408
+ * 
+ * 
+ *     def get_super(self):             # <<<<<<<<<<<<<<
+ *         """() => TypeID
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5t_6TypeID_22get_super(struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  hid_t __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_super", 0);
+
+  /* "h5py/h5t.pyx":413
+ *         Determine the parent type of an array, enumeration or vlen datatype.
+ *         """
+ *         return typewrap(H5Tget_super(self.id))             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Tget_super(__pyx_v_self->__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 413; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = ((PyObject *)__pyx_f_4h5py_3h5t_typewrap(__pyx_t_1, 0)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 413; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5t.TypeID.get_super", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5t_6TypeID_25detect_class(PyObject *__pyx_v_self, PyObject *__pyx_arg_classtype); /*proto*/
+static char __pyx_doc_4h5py_3h5t_6TypeID_24detect_class[] = "(INT classtype) => BOOL class_is_present\n\n        Determine if a member of the given class exists in a compound\n        datatype.  The search is recursive.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5t_6TypeID_25detect_class(PyObject *__pyx_v_self, PyObject *__pyx_arg_classtype) {
+  int __pyx_v_classtype;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("detect_class (wrapper)", 0);
+  assert(__pyx_arg_classtype); {
+    __pyx_v_classtype = __Pyx_PyInt_AsInt(__pyx_arg_classtype); if (unlikely((__pyx_v_classtype == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 416; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5t.TypeID.detect_class", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_3h5t_6TypeID_24detect_class(((struct __pyx_obj_4h5py_3h5t_TypeID *)__pyx_v_self), ((int)__pyx_v_classtype));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":416
+ * 
+ * 
+ *     def detect_class(self, int classtype):             # <<<<<<<<<<<<<<
+ *         """(INT classtype) => BOOL class_is_present
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5t_6TypeID_24detect_class(struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_v_self, int __pyx_v_classtype) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  htri_t __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("detect_class", 0);
+
+  /* "h5py/h5t.pyx":422
+ *         datatype.  The search is recursive.
+ *         """
+ *         return <bint>(H5Tdetect_class(self.id, <H5T_class_t>classtype))             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Tdetect_class(__pyx_v_self->__pyx_base.id, ((enum H5T_class_t)__pyx_v_classtype)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 422; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyBool_FromLong(((int)__pyx_t_1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 422; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5t.TypeID.detect_class", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5t_6TypeID_27_close(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5t_6TypeID_26_close[] = "()\n\n        Close this datatype.  If it's locked, nothing happens.\n\n        You shouldn't ordinarily need to call this function; datatype\n        objects are automatically closed when they're deallocated.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5t_6TypeID_27_close(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("_close (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5t_6TypeID_26_close(((struct __pyx_obj_4h5py_3h5t_TypeID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":425
+ * 
+ * 
+ *     def _close(self):             # <<<<<<<<<<<<<<
+ *         """()
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5t_6TypeID_26_close(struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  herr_t __pyx_t_2;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_close", 0);
+
+  /* "h5py/h5t.pyx":433
+ *         objects are automatically closed when they're deallocated.
+ *         """
+ *         if not self.locked:             # <<<<<<<<<<<<<<
+ *             H5Tclose(self.id)
+ * 
+ */
+  __pyx_t_1 = (!__pyx_v_self->__pyx_base.locked);
+  if (__pyx_t_1) {
+
+    /* "h5py/h5t.pyx":434
+ *         """
+ *         if not self.locked:
+ *             H5Tclose(self.id)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+    __pyx_t_2 = __pyx_f_4h5py_4defs_H5Tclose(__pyx_v_self->__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 434; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py.h5t.TypeID._close", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5t_6TypeID_29encode(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5t_6TypeID_28encode[] = "() => STRING\n\n        Serialize an HDF5 type.  Bear in mind you can also use the\n        native Python pickle/unpickle machinery to do this.  The\n        returned string may contain binary values, including NULLs.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5t_6TypeID_29encode(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("encode (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5t_6TypeID_28encode(((struct __pyx_obj_4h5py_3h5t_TypeID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":437
+ * 
+ * 
+ *     def encode(self):             # <<<<<<<<<<<<<<
+ *         """() => STRING
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5t_6TypeID_28encode(struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_v_self) {
+  size_t __pyx_v_nalloc;
+  char *__pyx_v_buf;
+  PyObject *__pyx_v_pystr = NULL;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  void *__pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("encode", 0);
+
+  /* "h5py/h5t.pyx":444
+ *         returned string may contain binary values, including NULLs.
+ *         """
+ *         cdef size_t nalloc = 0             # <<<<<<<<<<<<<<
+ *         cdef char* buf = NULL
+ * 
+ */
+  __pyx_v_nalloc = 0;
+
+  /* "h5py/h5t.pyx":445
+ *         """
+ *         cdef size_t nalloc = 0
+ *         cdef char* buf = NULL             # <<<<<<<<<<<<<<
+ * 
+ *         H5Tencode(self.id, NULL, &nalloc)
+ */
+  __pyx_v_buf = NULL;
+
+  /* "h5py/h5t.pyx":447
+ *         cdef char* buf = NULL
+ * 
+ *         H5Tencode(self.id, NULL, &nalloc)             # <<<<<<<<<<<<<<
+ *         buf = <char*>emalloc(sizeof(char)*nalloc)
+ *         try:
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Tencode(__pyx_v_self->__pyx_base.id, NULL, (&__pyx_v_nalloc)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 447; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5t.pyx":448
+ * 
+ *         H5Tencode(self.id, NULL, &nalloc)
+ *         buf = <char*>emalloc(sizeof(char)*nalloc)             # <<<<<<<<<<<<<<
+ *         try:
+ *             H5Tencode(self.id, <unsigned char*>buf, &nalloc)
+ */
+  __pyx_t_2 = __pyx_f_4h5py_5utils_emalloc(((sizeof(char)) * __pyx_v_nalloc)); if (unlikely(__pyx_t_2 == NULL && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 448; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v_buf = ((char *)__pyx_t_2);
+
+  /* "h5py/h5t.pyx":449
+ *         H5Tencode(self.id, NULL, &nalloc)
+ *         buf = <char*>emalloc(sizeof(char)*nalloc)
+ *         try:             # <<<<<<<<<<<<<<
+ *             H5Tencode(self.id, <unsigned char*>buf, &nalloc)
+ *             pystr = PyBytes_FromStringAndSize(buf, nalloc)
+ */
+  /*try:*/ {
+
+    /* "h5py/h5t.pyx":450
+ *         buf = <char*>emalloc(sizeof(char)*nalloc)
+ *         try:
+ *             H5Tencode(self.id, <unsigned char*>buf, &nalloc)             # <<<<<<<<<<<<<<
+ *             pystr = PyBytes_FromStringAndSize(buf, nalloc)
+ *         finally:
+ */
+    __pyx_t_1 = __pyx_f_4h5py_4defs_H5Tencode(__pyx_v_self->__pyx_base.id, ((unsigned char *)__pyx_v_buf), (&__pyx_v_nalloc)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 450; __pyx_clineno = __LINE__; goto __pyx_L4;}
+
+    /* "h5py/h5t.pyx":451
+ *         try:
+ *             H5Tencode(self.id, <unsigned char*>buf, &nalloc)
+ *             pystr = PyBytes_FromStringAndSize(buf, nalloc)             # <<<<<<<<<<<<<<
+ *         finally:
+ *             efree(buf)
+ */
+    __pyx_t_3 = PyBytes_FromStringAndSize(__pyx_v_buf, __pyx_v_nalloc); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 451; __pyx_clineno = __LINE__; goto __pyx_L4;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_v_pystr = __pyx_t_3;
+    __pyx_t_3 = 0;
+  }
+
+  /* "h5py/h5t.pyx":453
+ *             pystr = PyBytes_FromStringAndSize(buf, nalloc)
+ *         finally:
+ *             efree(buf)             # <<<<<<<<<<<<<<
+ * 
+ *         return pystr
+ */
+  /*finally:*/ {
+    int __pyx_why;
+    PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb;
+    int __pyx_exc_lineno;
+    __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
+    __pyx_why = 0; goto __pyx_L5;
+    __pyx_L4: {
+      __pyx_why = 4;
+      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb);
+      __pyx_exc_lineno = __pyx_lineno;
+      goto __pyx_L5;
+    }
+    __pyx_L5:;
+    __pyx_f_4h5py_5utils_efree(__pyx_v_buf);
+    switch (__pyx_why) {
+      case 4: {
+        __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb);
+        __pyx_lineno = __pyx_exc_lineno;
+        __pyx_exc_type = 0;
+        __pyx_exc_value = 0;
+        __pyx_exc_tb = 0;
+        goto __pyx_L1_error;
+      }
+    }
+  }
+
+  /* "h5py/h5t.pyx":455
+ *             efree(buf)
+ * 
+ *         return pystr             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_pystr);
+  __pyx_r = __pyx_v_pystr;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("h5py.h5t.TypeID.encode", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_pystr);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5t_6TypeID_31__reduce__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static PyObject *__pyx_pw_4h5py_3h5t_6TypeID_31__reduce__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__reduce__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5t_6TypeID_30__reduce__(((struct __pyx_obj_4h5py_3h5t_TypeID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":458
+ * 
+ * 
+ *     def __reduce__(self):             # <<<<<<<<<<<<<<
+ *         return (type(self), (-1,), self.encode())
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5t_6TypeID_30__reduce__(struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__reduce__", 0);
+
+  /* "h5py/h5t.pyx":459
+ * 
+ *     def __reduce__(self):
+ *         return (type(self), (-1,), self.encode())             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__encode); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 459; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 459; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 459; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
+  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
+  __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
+  __Pyx_INCREF(((PyObject *)__pyx_k_tuple_6));
+  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_k_tuple_6));
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_6));
+  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_2);
+  __Pyx_GIVEREF(__pyx_t_2);
+  __pyx_t_2 = 0;
+  __pyx_r = ((PyObject *)__pyx_t_1);
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5t.TypeID.__reduce__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5t_6TypeID_33__setstate__(PyObject *__pyx_v_self, PyObject *__pyx_arg_state); /*proto*/
+static PyObject *__pyx_pw_4h5py_3h5t_6TypeID_33__setstate__(PyObject *__pyx_v_self, PyObject *__pyx_arg_state) {
+  char *__pyx_v_state;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__setstate__ (wrapper)", 0);
+  assert(__pyx_arg_state); {
+    __pyx_v_state = PyBytes_AsString(__pyx_arg_state); if (unlikely((!__pyx_v_state) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 462; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5t.TypeID.__setstate__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_3h5t_6TypeID_32__setstate__(((struct __pyx_obj_4h5py_3h5t_TypeID *)__pyx_v_self), ((char *)__pyx_v_state));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":462
+ * 
+ * 
+ *     def __setstate__(self, char* state):             # <<<<<<<<<<<<<<
+ *         self.id = H5Tdecode(<unsigned char*>state)
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5t_6TypeID_32__setstate__(struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_v_self, char *__pyx_v_state) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  hid_t __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("__setstate__", 0);
+
+  /* "h5py/h5t.pyx":463
+ * 
+ *     def __setstate__(self, char* state):
+ *         self.id = H5Tdecode(<unsigned char*>state)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Tdecode(((unsigned char *)__pyx_v_state)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 463; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v_self->__pyx_base.id = __pyx_t_1;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py.h5t.TypeID.__setstate__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5t_11TypeArrayID_1get_array_ndims(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5t_11TypeArrayID_get_array_ndims[] = "() => INT rank\n\n        Get the rank of the given array datatype.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5t_11TypeArrayID_1get_array_ndims(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_array_ndims (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5t_11TypeArrayID_get_array_ndims(((struct __pyx_obj_4h5py_3h5t_TypeArrayID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":475
+ * 
+ * 
+ *     def get_array_ndims(self):             # <<<<<<<<<<<<<<
+ *         """() => INT rank
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5t_11TypeArrayID_get_array_ndims(struct __pyx_obj_4h5py_3h5t_TypeArrayID *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_array_ndims", 0);
+
+  /* "h5py/h5t.pyx":480
+ *         Get the rank of the given array datatype.
+ *         """
+ *         return H5Tget_array_ndims(self.id)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Tget_array_ndims(__pyx_v_self->__pyx_base.__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 480; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyInt_FromLong(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 480; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5t.TypeArrayID.get_array_ndims", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5t_11TypeArrayID_3get_array_dims(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5t_11TypeArrayID_2get_array_dims[] = "() => TUPLE dimensions\n\n        Get the dimensions of the given array datatype as\n        a tuple of integers.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5t_11TypeArrayID_3get_array_dims(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_array_dims (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5t_11TypeArrayID_2get_array_dims(((struct __pyx_obj_4h5py_3h5t_TypeArrayID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":483
+ * 
+ * 
+ *     def get_array_dims(self):             # <<<<<<<<<<<<<<
+ *         """() => TUPLE dimensions
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5t_11TypeArrayID_2get_array_dims(struct __pyx_obj_4h5py_3h5t_TypeArrayID *__pyx_v_self) {
+  hsize_t __pyx_v_rank;
+  hsize_t *__pyx_v_dims;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  void *__pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_array_dims", 0);
+
+  /* "h5py/h5t.pyx":490
+ *         """
+ *         cdef hsize_t rank
+ *         cdef hsize_t* dims = NULL             # <<<<<<<<<<<<<<
+ * 
+ *         rank = H5Tget_array_dims(self.id, NULL, NULL)
+ */
+  __pyx_v_dims = NULL;
+
+  /* "h5py/h5t.pyx":492
+ *         cdef hsize_t* dims = NULL
+ * 
+ *         rank = H5Tget_array_dims(self.id, NULL, NULL)             # <<<<<<<<<<<<<<
+ *         dims = <hsize_t*>emalloc(sizeof(hsize_t)*rank)
+ *         try:
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Tget_array_dims(__pyx_v_self->__pyx_base.__pyx_base.id, NULL, NULL); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 492; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v_rank = __pyx_t_1;
+
+  /* "h5py/h5t.pyx":493
+ * 
+ *         rank = H5Tget_array_dims(self.id, NULL, NULL)
+ *         dims = <hsize_t*>emalloc(sizeof(hsize_t)*rank)             # <<<<<<<<<<<<<<
+ *         try:
+ *             H5Tget_array_dims(self.id, dims, NULL)
+ */
+  __pyx_t_2 = __pyx_f_4h5py_5utils_emalloc(((sizeof(hsize_t)) * __pyx_v_rank)); if (unlikely(__pyx_t_2 == NULL && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 493; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v_dims = ((hsize_t *)__pyx_t_2);
+
+  /* "h5py/h5t.pyx":494
+ *         rank = H5Tget_array_dims(self.id, NULL, NULL)
+ *         dims = <hsize_t*>emalloc(sizeof(hsize_t)*rank)
+ *         try:             # <<<<<<<<<<<<<<
+ *             H5Tget_array_dims(self.id, dims, NULL)
+ *             return convert_dims(dims, rank)
+ */
+  /*try:*/ {
+
+    /* "h5py/h5t.pyx":495
+ *         dims = <hsize_t*>emalloc(sizeof(hsize_t)*rank)
+ *         try:
+ *             H5Tget_array_dims(self.id, dims, NULL)             # <<<<<<<<<<<<<<
+ *             return convert_dims(dims, rank)
+ *         finally:
+ */
+    __pyx_t_1 = __pyx_f_4h5py_4defs_H5Tget_array_dims(__pyx_v_self->__pyx_base.__pyx_base.id, __pyx_v_dims, NULL); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 495; __pyx_clineno = __LINE__; goto __pyx_L4;}
+
+    /* "h5py/h5t.pyx":496
+ *         try:
+ *             H5Tget_array_dims(self.id, dims, NULL)
+ *             return convert_dims(dims, rank)             # <<<<<<<<<<<<<<
+ *         finally:
+ *             efree(dims)
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_3 = __pyx_f_4h5py_5utils_convert_dims(__pyx_v_dims, __pyx_v_rank); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 496; __pyx_clineno = __LINE__; goto __pyx_L4;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_r = __pyx_t_3;
+    __pyx_t_3 = 0;
+    goto __pyx_L3;
+  }
+
+  /* "h5py/h5t.pyx":498
+ *             return convert_dims(dims, rank)
+ *         finally:
+ *             efree(dims)             # <<<<<<<<<<<<<<
+ * 
+ *     cdef object py_dtype(self):
+ */
+  /*finally:*/ {
+    int __pyx_why;
+    PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb;
+    int __pyx_exc_lineno;
+    __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
+    __pyx_why = 0; goto __pyx_L5;
+    __pyx_L3: __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
+    __pyx_why = 3; goto __pyx_L5;
+    __pyx_L4: {
+      __pyx_why = 4;
+      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb);
+      __pyx_exc_lineno = __pyx_lineno;
+      goto __pyx_L5;
+    }
+    __pyx_L5:;
+    __pyx_f_4h5py_5utils_efree(__pyx_v_dims);
+    switch (__pyx_why) {
+      case 3: goto __pyx_L0;
+      case 4: {
+        __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb);
+        __pyx_lineno = __pyx_exc_lineno;
+        __pyx_exc_type = 0;
+        __pyx_exc_value = 0;
+        __pyx_exc_tb = 0;
+        goto __pyx_L1_error;
+      }
+    }
+  }
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("h5py.h5t.TypeArrayID.get_array_dims", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":500
+ *             efree(dims)
+ * 
+ *     cdef object py_dtype(self):             # <<<<<<<<<<<<<<
+ *         # Numpy translation function for array types
+ *         cdef TypeID tmp_type
+ */
+
+static PyObject *__pyx_f_4h5py_3h5t_11TypeArrayID_py_dtype(struct __pyx_obj_4h5py_3h5t_TypeArrayID *__pyx_v_self) {
+  struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_v_tmp_type = 0;
+  PyObject *__pyx_v_base_dtype = NULL;
+  PyObject *__pyx_v_shape = NULL;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("py_dtype", 0);
+
+  /* "h5py/h5t.pyx":503
+ *         # Numpy translation function for array types
+ *         cdef TypeID tmp_type
+ *         tmp_type = self.get_super()             # <<<<<<<<<<<<<<
+ * 
+ *         base_dtype = tmp_type.py_dtype()
+ */
+  __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__get_super); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 503; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 503; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_4h5py_3h5t_TypeID))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 503; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v_tmp_type = ((struct __pyx_obj_4h5py_3h5t_TypeID *)__pyx_t_2);
+  __pyx_t_2 = 0;
+
+  /* "h5py/h5t.pyx":505
+ *         tmp_type = self.get_super()
+ * 
+ *         base_dtype = tmp_type.py_dtype()             # <<<<<<<<<<<<<<
+ * 
+ *         shape = self.get_array_dims()
+ */
+  __pyx_t_2 = ((struct __pyx_vtabstruct_4h5py_3h5t_TypeID *)__pyx_v_tmp_type->__pyx_vtab)->py_dtype(__pyx_v_tmp_type); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 505; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_v_base_dtype = __pyx_t_2;
+  __pyx_t_2 = 0;
+
+  /* "h5py/h5t.pyx":507
+ *         base_dtype = tmp_type.py_dtype()
+ * 
+ *         shape = self.get_array_dims()             # <<<<<<<<<<<<<<
+ *         return dtype( (base_dtype, shape) )
+ * 
+ */
+  __pyx_t_2 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__get_array_dims); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 507; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 507; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_v_shape = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+  /* "h5py/h5t.pyx":508
+ * 
+ *         shape = self.get_array_dims()
+ *         return dtype( (base_dtype, shape) )             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 508; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(__pyx_v_base_dtype);
+  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_base_dtype);
+  __Pyx_GIVEREF(__pyx_v_base_dtype);
+  __Pyx_INCREF(__pyx_v_shape);
+  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_shape);
+  __Pyx_GIVEREF(__pyx_v_shape);
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 508; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_t_1));
+  __Pyx_GIVEREF(((PyObject *)__pyx_t_1));
+  __pyx_t_1 = 0;
+  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4h5py_5numpy_dtype)), ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 508; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5t.TypeArrayID.py_dtype", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_tmp_type);
+  __Pyx_XDECREF(__pyx_v_base_dtype);
+  __Pyx_XDECREF(__pyx_v_shape);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5t_12TypeOpaqueID_1set_tag(PyObject *__pyx_v_self, PyObject *__pyx_arg_tag); /*proto*/
+static char __pyx_doc_4h5py_3h5t_12TypeOpaqueID_set_tag[] = "(STRING tag)\n\n        Set a string describing the contents of an opaque datatype.\n        Limited to 256 characters.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5t_12TypeOpaqueID_1set_tag(PyObject *__pyx_v_self, PyObject *__pyx_arg_tag) {
+  char *__pyx_v_tag;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("set_tag (wrapper)", 0);
+  assert(__pyx_arg_tag); {
+    __pyx_v_tag = PyBytes_AsString(__pyx_arg_tag); if (unlikely((!__pyx_v_tag) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 518; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5t.TypeOpaqueID.set_tag", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_3h5t_12TypeOpaqueID_set_tag(((struct __pyx_obj_4h5py_3h5t_TypeOpaqueID *)__pyx_v_self), ((char *)__pyx_v_tag));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":518
+ * 
+ * 
+ *     def set_tag(self, char* tag):             # <<<<<<<<<<<<<<
+ *         """(STRING tag)
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5t_12TypeOpaqueID_set_tag(struct __pyx_obj_4h5py_3h5t_TypeOpaqueID *__pyx_v_self, char *__pyx_v_tag) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("set_tag", 0);
+
+  /* "h5py/h5t.pyx":524
+ *         Limited to 256 characters.
+ *         """
+ *         H5Tset_tag(self.id, tag)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Tset_tag(__pyx_v_self->__pyx_base.__pyx_base.id, __pyx_v_tag); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 524; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py.h5t.TypeOpaqueID.set_tag", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5t_12TypeOpaqueID_3get_tag(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5t_12TypeOpaqueID_2get_tag[] = "() => STRING tag\n\n        Get the tag associated with an opaque datatype.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5t_12TypeOpaqueID_3get_tag(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_tag (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5t_12TypeOpaqueID_2get_tag(((struct __pyx_obj_4h5py_3h5t_TypeOpaqueID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":527
+ * 
+ * 
+ *     def get_tag(self):             # <<<<<<<<<<<<<<
+ *         """() => STRING tag
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5t_12TypeOpaqueID_2get_tag(struct __pyx_obj_4h5py_3h5t_TypeOpaqueID *__pyx_v_self) {
+  char *__pyx_v_buf;
+  char *__pyx_v_tag;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  char *__pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_tag", 0);
+
+  /* "h5py/h5t.pyx":532
+ *         Get the tag associated with an opaque datatype.
+ *         """
+ *         cdef char* buf = NULL             # <<<<<<<<<<<<<<
+ * 
+ *         try:
+ */
+  __pyx_v_buf = NULL;
+
+  /* "h5py/h5t.pyx":534
+ *         cdef char* buf = NULL
+ * 
+ *         try:             # <<<<<<<<<<<<<<
+ *             buf = H5Tget_tag(self.id)
+ *             assert buf != NULL
+ */
+  /*try:*/ {
+
+    /* "h5py/h5t.pyx":535
+ * 
+ *         try:
+ *             buf = H5Tget_tag(self.id)             # <<<<<<<<<<<<<<
+ *             assert buf != NULL
+ *             tag = buf
+ */
+    __pyx_t_1 = __pyx_f_4h5py_4defs_H5Tget_tag(__pyx_v_self->__pyx_base.__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L4;}
+    __pyx_v_buf = __pyx_t_1;
+
+    /* "h5py/h5t.pyx":536
+ *         try:
+ *             buf = H5Tget_tag(self.id)
+ *             assert buf != NULL             # <<<<<<<<<<<<<<
+ *             tag = buf
+ *             return tag
+ */
+    #ifndef CYTHON_WITHOUT_ASSERTIONS
+    if (unlikely(!(__pyx_v_buf != NULL))) {
+      PyErr_SetNone(PyExc_AssertionError);
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 536; __pyx_clineno = __LINE__; goto __pyx_L4;}
+    }
+    #endif
+
+    /* "h5py/h5t.pyx":537
+ *             buf = H5Tget_tag(self.id)
+ *             assert buf != NULL
+ *             tag = buf             # <<<<<<<<<<<<<<
+ *             return tag
+ *         finally:
+ */
+    __pyx_v_tag = __pyx_v_buf;
+
+    /* "h5py/h5t.pyx":538
+ *             assert buf != NULL
+ *             tag = buf
+ *             return tag             # <<<<<<<<<<<<<<
+ *         finally:
+ *             free(buf)
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_2 = PyBytes_FromString(__pyx_v_tag); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 538; __pyx_clineno = __LINE__; goto __pyx_L4;}
+    __Pyx_GOTREF(((PyObject *)__pyx_t_2));
+    __pyx_r = ((PyObject *)__pyx_t_2);
+    __pyx_t_2 = 0;
+    goto __pyx_L3;
+  }
+
+  /* "h5py/h5t.pyx":540
+ *             return tag
+ *         finally:
+ *             free(buf)             # <<<<<<<<<<<<<<
+ * 
+ *     cdef object py_dtype(self):
+ */
+  /*finally:*/ {
+    int __pyx_why;
+    PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb;
+    int __pyx_exc_lineno;
+    __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
+    __pyx_why = 0; goto __pyx_L5;
+    __pyx_L3: __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
+    __pyx_why = 3; goto __pyx_L5;
+    __pyx_L4: {
+      __pyx_why = 4;
+      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+      __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb);
+      __pyx_exc_lineno = __pyx_lineno;
+      goto __pyx_L5;
+    }
+    __pyx_L5:;
+    free(__pyx_v_buf);
+    switch (__pyx_why) {
+      case 3: goto __pyx_L0;
+      case 4: {
+        __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb);
+        __pyx_lineno = __pyx_exc_lineno;
+        __pyx_exc_type = 0;
+        __pyx_exc_value = 0;
+        __pyx_exc_tb = 0;
+        goto __pyx_L1_error;
+      }
+    }
+  }
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5t.TypeOpaqueID.get_tag", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":542
+ *             free(buf)
+ * 
+ *     cdef object py_dtype(self):             # <<<<<<<<<<<<<<
+ *         # Numpy translation function for opaque types
+ *         return dtype("|V" + str(self.get_size()))
+ */
+
+static PyObject *__pyx_f_4h5py_3h5t_12TypeOpaqueID_py_dtype(struct __pyx_obj_4h5py_3h5t_TypeOpaqueID *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("py_dtype", 0);
+
+  /* "h5py/h5t.pyx":544
+ *     cdef object py_dtype(self):
+ *         # Numpy translation function for opaque types
+ *         return dtype("|V" + str(self.get_size()))             # <<<<<<<<<<<<<<
+ * 
+ * cdef class TypeStringID(TypeID):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__get_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 544; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 544; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 544; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
+  __Pyx_GIVEREF(__pyx_t_2);
+  __pyx_t_2 = 0;
+  __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 544; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
+  __pyx_t_1 = PyNumber_Add(((PyObject *)__pyx_kp_s_7), __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 544; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 544; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4h5py_5numpy_dtype)), ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 544; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5t.TypeOpaqueID.py_dtype", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5t_12TypeStringID_1is_variable_str(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5t_12TypeStringID_is_variable_str[] = "() => BOOL is_variable\n\n        Determine if the given string datatype is a variable-length string.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5t_12TypeStringID_1is_variable_str(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("is_variable_str (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5t_12TypeStringID_is_variable_str(((struct __pyx_obj_4h5py_3h5t_TypeStringID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":553
+ * 
+ * 
+ *     def is_variable_str(self):             # <<<<<<<<<<<<<<
+ *         """() => BOOL is_variable
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5t_12TypeStringID_is_variable_str(struct __pyx_obj_4h5py_3h5t_TypeStringID *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  htri_t __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("is_variable_str", 0);
+
+  /* "h5py/h5t.pyx":558
+ *         Determine if the given string datatype is a variable-length string.
+ *         """
+ *         return <bint>(H5Tis_variable_str(self.id))             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Tis_variable_str(__pyx_v_self->__pyx_base.__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 558; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyBool_FromLong(((int)__pyx_t_1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 558; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5t.TypeStringID.is_variable_str", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5t_12TypeStringID_3get_cset(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5t_12TypeStringID_2get_cset[] = "() => INT character_set\n\n        Retrieve the character set used for a string.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5t_12TypeStringID_3get_cset(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_cset (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5t_12TypeStringID_2get_cset(((struct __pyx_obj_4h5py_3h5t_TypeStringID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":561
+ * 
+ * 
+ *     def get_cset(self):             # <<<<<<<<<<<<<<
+ *         """() => INT character_set
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5t_12TypeStringID_2get_cset(struct __pyx_obj_4h5py_3h5t_TypeStringID *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  H5T_cset_t __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_cset", 0);
+
+  /* "h5py/h5t.pyx":566
+ *         Retrieve the character set used for a string.
+ *         """
+ *         return <int>H5Tget_cset(self.id)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Tget_cset(__pyx_v_self->__pyx_base.__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 566; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyInt_FromLong(((int)__pyx_t_1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 566; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5t.TypeStringID.get_cset", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5t_12TypeStringID_5set_cset(PyObject *__pyx_v_self, PyObject *__pyx_arg_cset); /*proto*/
+static char __pyx_doc_4h5py_3h5t_12TypeStringID_4set_cset[] = "(INT character_set)\n\n        Set the character set used for a string.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5t_12TypeStringID_5set_cset(PyObject *__pyx_v_self, PyObject *__pyx_arg_cset) {
+  int __pyx_v_cset;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("set_cset (wrapper)", 0);
+  assert(__pyx_arg_cset); {
+    __pyx_v_cset = __Pyx_PyInt_AsInt(__pyx_arg_cset); if (unlikely((__pyx_v_cset == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 569; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5t.TypeStringID.set_cset", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_3h5t_12TypeStringID_4set_cset(((struct __pyx_obj_4h5py_3h5t_TypeStringID *)__pyx_v_self), ((int)__pyx_v_cset));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":569
+ * 
+ * 
+ *     def set_cset(self, int cset):             # <<<<<<<<<<<<<<
+ *         """(INT character_set)
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5t_12TypeStringID_4set_cset(struct __pyx_obj_4h5py_3h5t_TypeStringID *__pyx_v_self, int __pyx_v_cset) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("set_cset", 0);
+
+  /* "h5py/h5t.pyx":574
+ *         Set the character set used for a string.
+ *         """
+ *         H5Tset_cset(self.id, <H5T_cset_t>cset)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Tset_cset(__pyx_v_self->__pyx_base.__pyx_base.id, ((H5T_cset_t)__pyx_v_cset)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 574; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py.h5t.TypeStringID.set_cset", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5t_12TypeStringID_7get_strpad(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5t_12TypeStringID_6get_strpad[] = "() => INT padding_type\n\n        Get the padding type.  Legal values are:\n\n        STR_NULLTERM\n            NULL termination only (C style)\n\n        STR_NULLPAD\n            Pad buffer with NULLs\n\n        STR_SPACEPAD\n            Pad buffer with spaces (FORTRAN style)\n        ";
+static PyObject *__pyx_pw_4h5py_3h5t_12TypeStringID_7get_strpad(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_strpad (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5t_12TypeStringID_6get_strpad(((struct __pyx_obj_4h5py_3h5t_TypeStringID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":577
+ * 
+ * 
+ *     def get_strpad(self):             # <<<<<<<<<<<<<<
+ *         """() => INT padding_type
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5t_12TypeStringID_6get_strpad(struct __pyx_obj_4h5py_3h5t_TypeStringID *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  H5T_str_t __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_strpad", 0);
+
+  /* "h5py/h5t.pyx":591
+ *             Pad buffer with spaces (FORTRAN style)
+ *         """
+ *         return <int>H5Tget_strpad(self.id)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Tget_strpad(__pyx_v_self->__pyx_base.__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 591; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyInt_FromLong(((int)__pyx_t_1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 591; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5t.TypeStringID.get_strpad", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5t_12TypeStringID_9set_strpad(PyObject *__pyx_v_self, PyObject *__pyx_arg_pad); /*proto*/
+static char __pyx_doc_4h5py_3h5t_12TypeStringID_8set_strpad[] = "(INT pad)\n\n        Set the padding type.  Legal values are:\n\n        STR_NULLTERM\n            NULL termination only (C style)\n\n        STR_NULLPAD\n            Pad buffer with NULLs\n\n        STR_SPACEPAD\n            Pad buffer with spaces (FORTRAN style)\n        ";
+static PyObject *__pyx_pw_4h5py_3h5t_12TypeStringID_9set_strpad(PyObject *__pyx_v_self, PyObject *__pyx_arg_pad) {
+  int __pyx_v_pad;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("set_strpad (wrapper)", 0);
+  assert(__pyx_arg_pad); {
+    __pyx_v_pad = __Pyx_PyInt_AsInt(__pyx_arg_pad); if (unlikely((__pyx_v_pad == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 594; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5t.TypeStringID.set_strpad", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_3h5t_12TypeStringID_8set_strpad(((struct __pyx_obj_4h5py_3h5t_TypeStringID *)__pyx_v_self), ((int)__pyx_v_pad));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":594
+ * 
+ * 
+ *     def set_strpad(self, int pad):             # <<<<<<<<<<<<<<
+ *         """(INT pad)
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5t_12TypeStringID_8set_strpad(struct __pyx_obj_4h5py_3h5t_TypeStringID *__pyx_v_self, int __pyx_v_pad) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("set_strpad", 0);
+
+  /* "h5py/h5t.pyx":608
+ *             Pad buffer with spaces (FORTRAN style)
+ *         """
+ *         H5Tset_strpad(self.id, <H5T_str_t>pad)             # <<<<<<<<<<<<<<
+ * 
+ *     cdef object py_dtype(self):
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Tset_strpad(__pyx_v_self->__pyx_base.__pyx_base.id, ((H5T_str_t)__pyx_v_pad)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 608; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py.h5t.TypeStringID.set_strpad", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":610
+ *         H5Tset_strpad(self.id, <H5T_str_t>pad)
+ * 
+ *     cdef object py_dtype(self):             # <<<<<<<<<<<<<<
+ *         # Numpy translation function for string types
+ *         if self.is_variable_str():
+ */
+
+static PyObject *__pyx_f_4h5py_3h5t_12TypeStringID_py_dtype(struct __pyx_obj_4h5py_3h5t_TypeStringID *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_t_3;
+  PyObject *__pyx_t_4 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("py_dtype", 0);
+
+  /* "h5py/h5t.pyx":612
+ *     cdef object py_dtype(self):
+ *         # Numpy translation function for string types
+ *         if self.is_variable_str():             # <<<<<<<<<<<<<<
+ *             if self.get_cset() == H5T_CSET_ASCII:
+ *                 return special_dtype(vlen=bytes)
+ */
+  __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__is_variable_str); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 612; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 612; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 612; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  if (__pyx_t_3) {
+
+    /* "h5py/h5t.pyx":613
+ *         # Numpy translation function for string types
+ *         if self.is_variable_str():
+ *             if self.get_cset() == H5T_CSET_ASCII:             # <<<<<<<<<<<<<<
+ *                 return special_dtype(vlen=bytes)
+ *             elif self.get_cset() == H5T_CSET_UTF8:
+ */
+    __pyx_t_2 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__get_cset); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 613; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 613; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __pyx_t_2 = PyInt_FromLong(H5T_CSET_ASCII); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 613; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_4 = PyObject_RichCompare(__pyx_t_1, __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 613; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 613; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    if (__pyx_t_3) {
+
+      /* "h5py/h5t.pyx":614
+ *         if self.is_variable_str():
+ *             if self.get_cset() == H5T_CSET_ASCII:
+ *                 return special_dtype(vlen=bytes)             # <<<<<<<<<<<<<<
+ *             elif self.get_cset() == H5T_CSET_UTF8:
+ *                 return special_dtype(vlen=unicode)
+ */
+      __Pyx_XDECREF(__pyx_r);
+      __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__special_dtype); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 614; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_4);
+      __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 614; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(((PyObject *)__pyx_t_2));
+      if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__vlen), ((PyObject *)((PyObject*)(&PyBytes_Type)))) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 614; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_empty_tuple), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 614; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
+      __pyx_r = __pyx_t_1;
+      __pyx_t_1 = 0;
+      goto __pyx_L0;
+      goto __pyx_L4;
+    }
+
+    /* "h5py/h5t.pyx":615
+ *             if self.get_cset() == H5T_CSET_ASCII:
+ *                 return special_dtype(vlen=bytes)
+ *             elif self.get_cset() == H5T_CSET_UTF8:             # <<<<<<<<<<<<<<
+ *                 return special_dtype(vlen=unicode)
+ *             else:
+ */
+    __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__get_cset); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 615; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 615; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __pyx_t_1 = PyInt_FromLong(H5T_CSET_UTF8); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 615; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_4 = PyObject_RichCompare(__pyx_t_2, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 615; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 615; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    if (__pyx_t_3) {
+
+      /* "h5py/h5t.pyx":616
+ *                 return special_dtype(vlen=bytes)
+ *             elif self.get_cset() == H5T_CSET_UTF8:
+ *                 return special_dtype(vlen=unicode)             # <<<<<<<<<<<<<<
+ *             else:
+ *                 raise TypeError("Unknown string encoding (value %d)" % self.get_cset())
+ */
+      __Pyx_XDECREF(__pyx_r);
+      __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__special_dtype); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 616; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_4);
+      __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 616; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(((PyObject *)__pyx_t_1));
+      if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__vlen), ((PyObject *)((PyObject*)(&PyUnicode_Type)))) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 616; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_empty_tuple), ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 616; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_2);
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
+      __pyx_r = __pyx_t_2;
+      __pyx_t_2 = 0;
+      goto __pyx_L0;
+      goto __pyx_L4;
+    }
+    /*else*/ {
+
+      /* "h5py/h5t.pyx":618
+ *                 return special_dtype(vlen=unicode)
+ *             else:
+ *                 raise TypeError("Unknown string encoding (value %d)" % self.get_cset())             # <<<<<<<<<<<<<<
+ * 
+ *         return dtype("|S" + str(self.get_size()))
+ */
+      __pyx_t_2 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__get_cset); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 618; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_2);
+      __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 618; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+      __pyx_t_2 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_8), __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 618; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(((PyObject *)__pyx_t_2));
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+      __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 618; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_1);
+      PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_t_2));
+      __Pyx_GIVEREF(((PyObject *)__pyx_t_2));
+      __pyx_t_2 = 0;
+      __pyx_t_2 = PyObject_Call(__pyx_builtin_TypeError, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 618; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_2);
+      __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
+      __Pyx_Raise(__pyx_t_2, 0, 0, 0);
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 618; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    }
+    __pyx_L4:;
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  /* "h5py/h5t.pyx":620
+ *                 raise TypeError("Unknown string encoding (value %d)" % self.get_cset())
+ * 
+ *         return dtype("|S" + str(self.get_size()))             # <<<<<<<<<<<<<<
+ * 
+ * cdef class TypeVlenID(TypeID):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_2 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__get_size); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 620; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 620; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 620; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 620; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
+  __pyx_t_2 = PyNumber_Add(((PyObject *)__pyx_kp_s_9), __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 620; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 620; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
+  __Pyx_GIVEREF(__pyx_t_2);
+  __pyx_t_2 = 0;
+  __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4h5py_5numpy_dtype)), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 620; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("h5py.h5t.TypeStringID.py_dtype", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":649
+ *     """
+ * 
+ *     cdef object py_dtype(self):             # <<<<<<<<<<<<<<
+ *         if H5Tequal(self.id, H5T_STD_REF_OBJ):
+ *             return special_dtype(ref=Reference)
+ */
+
+static PyObject *__pyx_f_4h5py_3h5t_15TypeReferenceID_py_dtype(struct __pyx_obj_4h5py_3h5t_TypeReferenceID *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  htri_t __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("py_dtype", 0);
+
+  /* "h5py/h5t.pyx":650
+ * 
+ *     cdef object py_dtype(self):
+ *         if H5Tequal(self.id, H5T_STD_REF_OBJ):             # <<<<<<<<<<<<<<
+ *             return special_dtype(ref=Reference)
+ *         elif H5Tequal(self.id, H5T_STD_REF_DSETREG):
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Tequal(__pyx_v_self->__pyx_base.__pyx_base.id, H5T_STD_REF_OBJ); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 650; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__pyx_t_1) {
+
+    /* "h5py/h5t.pyx":651
+ *     cdef object py_dtype(self):
+ *         if H5Tequal(self.id, H5T_STD_REF_OBJ):
+ *             return special_dtype(ref=Reference)             # <<<<<<<<<<<<<<
+ *         elif H5Tequal(self.id, H5T_STD_REF_DSETREG):
+ *             return special_dtype(ref=RegionReference)
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__special_dtype); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 651; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 651; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(((PyObject *)__pyx_t_3));
+    if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__ref), ((PyObject *)((PyObject*)__pyx_ptype_4h5py_3h5r_Reference))) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 651; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), ((PyObject *)__pyx_t_3)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 651; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
+    __pyx_r = __pyx_t_4;
+    __pyx_t_4 = 0;
+    goto __pyx_L0;
+    goto __pyx_L3;
+  }
+
+  /* "h5py/h5t.pyx":652
+ *         if H5Tequal(self.id, H5T_STD_REF_OBJ):
+ *             return special_dtype(ref=Reference)
+ *         elif H5Tequal(self.id, H5T_STD_REF_DSETREG):             # <<<<<<<<<<<<<<
+ *             return special_dtype(ref=RegionReference)
+ *         else:
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Tequal(__pyx_v_self->__pyx_base.__pyx_base.id, H5T_STD_REF_DSETREG); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 652; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__pyx_t_1) {
+
+    /* "h5py/h5t.pyx":653
+ *             return special_dtype(ref=Reference)
+ *         elif H5Tequal(self.id, H5T_STD_REF_DSETREG):
+ *             return special_dtype(ref=RegionReference)             # <<<<<<<<<<<<<<
+ *         else:
+ *             raise TypeError("Unknown reference type")
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__special_dtype); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 653; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 653; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(((PyObject *)__pyx_t_3));
+    if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__ref), ((PyObject *)((PyObject*)__pyx_ptype_4h5py_3h5r_RegionReference))) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 653; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_empty_tuple), ((PyObject *)__pyx_t_3)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 653; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
+    __pyx_r = __pyx_t_2;
+    __pyx_t_2 = 0;
+    goto __pyx_L0;
+    goto __pyx_L3;
+  }
+  /*else*/ {
+
+    /* "h5py/h5t.pyx":655
+ *             return special_dtype(ref=RegionReference)
+ *         else:
+ *             raise TypeError("Unknown reference type")             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+    __pyx_t_2 = PyObject_Call(__pyx_builtin_TypeError, ((PyObject *)__pyx_k_tuple_11), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 655; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 655; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  }
+  __pyx_L3:;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("h5py.h5t.TypeReferenceID.py_dtype", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5t_12TypeAtomicID_1get_order(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5t_12TypeAtomicID_get_order[] = "() => INT order\n\n        Obtain the byte order of the datatype; one of:\n\n        - ORDER_LE\n        - ORDER_BE\n        ";
+static PyObject *__pyx_pw_4h5py_3h5t_12TypeAtomicID_1get_order(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_order (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5t_12TypeAtomicID_get_order(((struct __pyx_obj_4h5py_3h5t_TypeAtomicID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":667
+ * 
+ * 
+ *     def get_order(self):             # <<<<<<<<<<<<<<
+ *         """() => INT order
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5t_12TypeAtomicID_get_order(struct __pyx_obj_4h5py_3h5t_TypeAtomicID *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  H5T_order_t __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_order", 0);
+
+  /* "h5py/h5t.pyx":675
+ *         - ORDER_BE
+ *         """
+ *         return <int>H5Tget_order(self.id)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Tget_order(__pyx_v_self->__pyx_base.__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 675; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyInt_FromLong(((int)__pyx_t_1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 675; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5t.TypeAtomicID.get_order", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5t_12TypeAtomicID_3set_order(PyObject *__pyx_v_self, PyObject *__pyx_arg_order); /*proto*/
+static char __pyx_doc_4h5py_3h5t_12TypeAtomicID_2set_order[] = "(INT order)\n\n        Set the byte order of the datatype; one of:\n\n        - ORDER_LE\n        - ORDER_BE\n        ";
+static PyObject *__pyx_pw_4h5py_3h5t_12TypeAtomicID_3set_order(PyObject *__pyx_v_self, PyObject *__pyx_arg_order) {
+  int __pyx_v_order;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("set_order (wrapper)", 0);
+  assert(__pyx_arg_order); {
+    __pyx_v_order = __Pyx_PyInt_AsInt(__pyx_arg_order); if (unlikely((__pyx_v_order == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 678; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5t.TypeAtomicID.set_order", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_3h5t_12TypeAtomicID_2set_order(((struct __pyx_obj_4h5py_3h5t_TypeAtomicID *)__pyx_v_self), ((int)__pyx_v_order));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":678
+ * 
+ * 
+ *     def set_order(self, int order):             # <<<<<<<<<<<<<<
+ *         """(INT order)
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5t_12TypeAtomicID_2set_order(struct __pyx_obj_4h5py_3h5t_TypeAtomicID *__pyx_v_self, int __pyx_v_order) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("set_order", 0);
+
+  /* "h5py/h5t.pyx":686
+ *         - ORDER_BE
+ *         """
+ *         H5Tset_order(self.id, <H5T_order_t>order)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Tset_order(__pyx_v_self->__pyx_base.__pyx_base.id, ((H5T_order_t)__pyx_v_order)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 686; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py.h5t.TypeAtomicID.set_order", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5t_12TypeAtomicID_5get_precision(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5t_12TypeAtomicID_4get_precision[] = "() => UINT precision\n\n        Get the number of significant bits (excludes padding).\n        ";
+static PyObject *__pyx_pw_4h5py_3h5t_12TypeAtomicID_5get_precision(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_precision (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5t_12TypeAtomicID_4get_precision(((struct __pyx_obj_4h5py_3h5t_TypeAtomicID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":689
+ * 
+ * 
+ *     def get_precision(self):             # <<<<<<<<<<<<<<
+ *         """() => UINT precision
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5t_12TypeAtomicID_4get_precision(struct __pyx_obj_4h5py_3h5t_TypeAtomicID *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  hsize_t __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_precision", 0);
+
+  /* "h5py/h5t.pyx":694
+ *         Get the number of significant bits (excludes padding).
+ *         """
+ *         return H5Tget_precision(self.id)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Tget_precision(__pyx_v_self->__pyx_base.__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 694; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyInt_to_py_hsize_t(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 694; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5t.TypeAtomicID.get_precision", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5t_12TypeAtomicID_7set_precision(PyObject *__pyx_v_self, PyObject *__pyx_arg_precision); /*proto*/
+static char __pyx_doc_4h5py_3h5t_12TypeAtomicID_6set_precision[] = "(UINT precision)\n            \n        Set the number of significant bits (excludes padding).\n        ";
+static PyObject *__pyx_pw_4h5py_3h5t_12TypeAtomicID_7set_precision(PyObject *__pyx_v_self, PyObject *__pyx_arg_precision) {
+  size_t __pyx_v_precision;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("set_precision (wrapper)", 0);
+  assert(__pyx_arg_precision); {
+    __pyx_v_precision = __Pyx_PyInt_AsSize_t(__pyx_arg_precision); if (unlikely((__pyx_v_precision == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 697; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5t.TypeAtomicID.set_precision", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_3h5t_12TypeAtomicID_6set_precision(((struct __pyx_obj_4h5py_3h5t_TypeAtomicID *)__pyx_v_self), ((size_t)__pyx_v_precision));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":697
+ * 
+ * 
+ *     def set_precision(self, size_t precision):             # <<<<<<<<<<<<<<
+ *         """(UINT precision)
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5t_12TypeAtomicID_6set_precision(struct __pyx_obj_4h5py_3h5t_TypeAtomicID *__pyx_v_self, size_t __pyx_v_precision) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("set_precision", 0);
+
+  /* "h5py/h5t.pyx":702
+ *         Set the number of significant bits (excludes padding).
+ *         """
+ *         H5Tset_precision(self.id, precision)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Tset_precision(__pyx_v_self->__pyx_base.__pyx_base.id, __pyx_v_precision); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 702; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py.h5t.TypeAtomicID.set_precision", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5t_12TypeAtomicID_9get_offset(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5t_12TypeAtomicID_8get_offset[] = "() => INT offset\n\n        Get the offset of the first significant bit.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5t_12TypeAtomicID_9get_offset(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_offset (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5t_12TypeAtomicID_8get_offset(((struct __pyx_obj_4h5py_3h5t_TypeAtomicID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":705
+ * 
+ * 
+ *     def get_offset(self):             # <<<<<<<<<<<<<<
+ *         """() => INT offset
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5t_12TypeAtomicID_8get_offset(struct __pyx_obj_4h5py_3h5t_TypeAtomicID *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_offset", 0);
+
+  /* "h5py/h5t.pyx":710
+ *         Get the offset of the first significant bit.
+ *         """
+ *         return H5Tget_offset(self.id)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Tget_offset(__pyx_v_self->__pyx_base.__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 710; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyInt_FromLong(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 710; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5t.TypeAtomicID.get_offset", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5t_12TypeAtomicID_11set_offset(PyObject *__pyx_v_self, PyObject *__pyx_arg_offset); /*proto*/
+static char __pyx_doc_4h5py_3h5t_12TypeAtomicID_10set_offset[] = "(UINT offset)\n\n        Set the offset of the first significant bit.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5t_12TypeAtomicID_11set_offset(PyObject *__pyx_v_self, PyObject *__pyx_arg_offset) {
+  size_t __pyx_v_offset;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("set_offset (wrapper)", 0);
+  assert(__pyx_arg_offset); {
+    __pyx_v_offset = __Pyx_PyInt_AsSize_t(__pyx_arg_offset); if (unlikely((__pyx_v_offset == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 713; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5t.TypeAtomicID.set_offset", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_3h5t_12TypeAtomicID_10set_offset(((struct __pyx_obj_4h5py_3h5t_TypeAtomicID *)__pyx_v_self), ((size_t)__pyx_v_offset));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":713
+ * 
+ * 
+ *     def set_offset(self, size_t offset):             # <<<<<<<<<<<<<<
+ *         """(UINT offset)
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5t_12TypeAtomicID_10set_offset(struct __pyx_obj_4h5py_3h5t_TypeAtomicID *__pyx_v_self, size_t __pyx_v_offset) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("set_offset", 0);
+
+  /* "h5py/h5t.pyx":718
+ *         Set the offset of the first significant bit.
+ *         """
+ *         H5Tset_offset(self.id, offset)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Tset_offset(__pyx_v_self->__pyx_base.__pyx_base.id, __pyx_v_offset); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 718; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py.h5t.TypeAtomicID.set_offset", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5t_12TypeAtomicID_13get_pad(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5t_12TypeAtomicID_12get_pad[] = "() => (INT lsb_pad_code, INT msb_pad_code)\n\n        Determine the padding type.  Possible values are:\n\n        - PAD_ZERO\n        - PAD_ONE\n        - PAD_BACKGROUND\n        ";
+static PyObject *__pyx_pw_4h5py_3h5t_12TypeAtomicID_13get_pad(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_pad (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5t_12TypeAtomicID_12get_pad(((struct __pyx_obj_4h5py_3h5t_TypeAtomicID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":721
+ * 
+ * 
+ *     def get_pad(self):             # <<<<<<<<<<<<<<
+ *         """() => (INT lsb_pad_code, INT msb_pad_code)
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5t_12TypeAtomicID_12get_pad(struct __pyx_obj_4h5py_3h5t_TypeAtomicID *__pyx_v_self) {
+  H5T_pad_t __pyx_v_lsb;
+  H5T_pad_t __pyx_v_msb;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_pad", 0);
+
+  /* "h5py/h5t.pyx":732
+ *         cdef H5T_pad_t lsb
+ *         cdef H5T_pad_t msb
+ *         H5Tget_pad(self.id, &lsb, &msb)             # <<<<<<<<<<<<<<
+ *         return (<int>lsb, <int>msb)
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Tget_pad(__pyx_v_self->__pyx_base.__pyx_base.id, (&__pyx_v_lsb), (&__pyx_v_msb)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 732; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5t.pyx":733
+ *         cdef H5T_pad_t msb
+ *         H5Tget_pad(self.id, &lsb, &msb)
+ *         return (<int>lsb, <int>msb)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_2 = PyInt_FromLong(((int)__pyx_v_lsb)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 733; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = PyInt_FromLong(((int)__pyx_v_msb)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 733; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 733; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2);
+  __Pyx_GIVEREF(__pyx_t_2);
+  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_3);
+  __pyx_t_2 = 0;
+  __pyx_t_3 = 0;
+  __pyx_r = ((PyObject *)__pyx_t_4);
+  __pyx_t_4 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("h5py.h5t.TypeAtomicID.get_pad", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5t_12TypeAtomicID_15set_pad(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_4h5py_3h5t_12TypeAtomicID_14set_pad[] = "(INT lsb_pad_code, INT msb_pad_code)\n\n        Set the padding type.  Possible values are:\n\n        - PAD_ZERO\n        - PAD_ONE\n        - PAD_BACKGROUND\n        ";
+static PyObject *__pyx_pw_4h5py_3h5t_12TypeAtomicID_15set_pad(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  int __pyx_v_lsb;
+  int __pyx_v_msb;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("set_pad (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__lsb,&__pyx_n_s__msb,0};
+    PyObject* values[2] = {0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__lsb)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__msb)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("set_pad", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 736; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_pad") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 736; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+    }
+    __pyx_v_lsb = __Pyx_PyInt_AsInt(values[0]); if (unlikely((__pyx_v_lsb == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 736; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_msb = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_msb == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 736; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("set_pad", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 736; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5t.TypeAtomicID.set_pad", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_3h5t_12TypeAtomicID_14set_pad(((struct __pyx_obj_4h5py_3h5t_TypeAtomicID *)__pyx_v_self), __pyx_v_lsb, __pyx_v_msb);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":736
+ * 
+ * 
+ *     def set_pad(self, int lsb, int msb):             # <<<<<<<<<<<<<<
+ *         """(INT lsb_pad_code, INT msb_pad_code)
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5t_12TypeAtomicID_14set_pad(struct __pyx_obj_4h5py_3h5t_TypeAtomicID *__pyx_v_self, int __pyx_v_lsb, int __pyx_v_msb) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("set_pad", 0);
+
+  /* "h5py/h5t.pyx":745
+ *         - PAD_BACKGROUND
+ *         """
+ *         H5Tset_pad(self.id, <H5T_pad_t>lsb, <H5T_pad_t>msb)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Tset_pad(__pyx_v_self->__pyx_base.__pyx_base.id, ((H5T_pad_t)__pyx_v_lsb), ((H5T_pad_t)__pyx_v_msb)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 745; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py.h5t.TypeAtomicID.set_pad", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5t_13TypeIntegerID_1get_sign(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5t_13TypeIntegerID_get_sign[] = "() => INT sign\n\n        Get the \"signedness\" of the datatype; one of:\n\n        SGN_NONE\n            Unsigned\n\n        SGN_2\n            Signed 2's complement\n        ";
+static PyObject *__pyx_pw_4h5py_3h5t_13TypeIntegerID_1get_sign(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_sign (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5t_13TypeIntegerID_get_sign(((struct __pyx_obj_4h5py_3h5t_TypeIntegerID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":755
+ * 
+ * 
+ *     def get_sign(self):             # <<<<<<<<<<<<<<
+ *         """() => INT sign
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5t_13TypeIntegerID_get_sign(struct __pyx_obj_4h5py_3h5t_TypeIntegerID *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  H5T_sign_t __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_sign", 0);
+
+  /* "h5py/h5t.pyx":766
+ *             Signed 2's complement
+ *         """
+ *         return <int>H5Tget_sign(self.id)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Tget_sign(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 766; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyInt_FromLong(((int)__pyx_t_1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 766; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5t.TypeIntegerID.get_sign", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5t_13TypeIntegerID_3set_sign(PyObject *__pyx_v_self, PyObject *__pyx_arg_sign); /*proto*/
+static char __pyx_doc_4h5py_3h5t_13TypeIntegerID_2set_sign[] = "(INT sign)\n\n        Set the \"signedness\" of the datatype; one of:\n\n        SGN_NONE\n            Unsigned\n\n        SGN_2\n            Signed 2's complement\n        ";
+static PyObject *__pyx_pw_4h5py_3h5t_13TypeIntegerID_3set_sign(PyObject *__pyx_v_self, PyObject *__pyx_arg_sign) {
+  int __pyx_v_sign;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("set_sign (wrapper)", 0);
+  assert(__pyx_arg_sign); {
+    __pyx_v_sign = __Pyx_PyInt_AsInt(__pyx_arg_sign); if (unlikely((__pyx_v_sign == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 769; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5t.TypeIntegerID.set_sign", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_3h5t_13TypeIntegerID_2set_sign(((struct __pyx_obj_4h5py_3h5t_TypeIntegerID *)__pyx_v_self), ((int)__pyx_v_sign));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":769
+ * 
+ * 
+ *     def set_sign(self, int sign):             # <<<<<<<<<<<<<<
+ *         """(INT sign)
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5t_13TypeIntegerID_2set_sign(struct __pyx_obj_4h5py_3h5t_TypeIntegerID *__pyx_v_self, int __pyx_v_sign) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("set_sign", 0);
+
+  /* "h5py/h5t.pyx":780
+ *             Signed 2's complement
+ *         """
+ *         H5Tset_sign(self.id, <H5T_sign_t>sign)             # <<<<<<<<<<<<<<
+ * 
+ *     cdef object py_dtype(self):
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Tset_sign(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.id, ((H5T_sign_t)__pyx_v_sign)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 780; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py.h5t.TypeIntegerID.set_sign", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":782
+ *         H5Tset_sign(self.id, <H5T_sign_t>sign)
+ * 
+ *     cdef object py_dtype(self):             # <<<<<<<<<<<<<<
+ *         # Translation function for integer types
+ *         return dtype( _order_map[self.get_order()] +
+ */
+
+static PyObject *__pyx_f_4h5py_3h5t_13TypeIntegerID_py_dtype(struct __pyx_obj_4h5py_3h5t_TypeIntegerID *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("py_dtype", 0);
+
+  /* "h5py/h5t.pyx":784
+ *     cdef object py_dtype(self):
+ *         # Translation function for integer types
+ *         return dtype( _order_map[self.get_order()] +             # <<<<<<<<<<<<<<
+ *                       _sign_map[self.get_sign()] + str(self.get_size()) )
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+
+  /* "h5py/h5t.pyx":785
+ *         # Translation function for integer types
+ *         return dtype( _order_map[self.get_order()] +
+ *                       _sign_map[self.get_sign()] + str(self.get_size()) )             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  if (unlikely(((PyObject *)__pyx_v_4h5py_3h5t__order_map) == Py_None)) {
+    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 784; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  }
+
+  /* "h5py/h5t.pyx":784
+ *     cdef object py_dtype(self):
+ *         # Translation function for integer types
+ *         return dtype( _order_map[self.get_order()] +             # <<<<<<<<<<<<<<
+ *                       _sign_map[self.get_sign()] + str(self.get_size()) )
+ * 
+ */
+  __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__get_order); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 784; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 784; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyDict_GetItem(((PyObject *)__pyx_v_4h5py_3h5t__order_map), __pyx_t_2); if (!__pyx_t_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 784; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/h5t.pyx":785
+ *         # Translation function for integer types
+ *         return dtype( _order_map[self.get_order()] +
+ *                       _sign_map[self.get_sign()] + str(self.get_size()) )             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  if (unlikely(((PyObject *)__pyx_v_4h5py_3h5t__sign_map) == Py_None)) {
+    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 785; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  }
+  __pyx_t_2 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__get_sign); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 785; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 785; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_2 = __Pyx_PyDict_GetItem(((PyObject *)__pyx_v_4h5py_3h5t__sign_map), __pyx_t_3); if (!__pyx_t_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 785; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_t_3 = PyNumber_Add(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 784; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_2 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__get_size); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 785; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 785; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 785; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 785; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
+  __pyx_t_2 = PyNumber_Add(__pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 785; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 784; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
+  __Pyx_GIVEREF(__pyx_t_2);
+  __pyx_t_2 = 0;
+  __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4h5py_5numpy_dtype)), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 784; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("h5py.h5t.TypeIntegerID.py_dtype", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5t_11TypeFloatID_1get_fields(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5t_11TypeFloatID_get_fields[] = "() => TUPLE field_info\n\n        Get information about floating-point bit fields.  See the HDF5\n        docs for a full description.  Tuple has the following members:\n\n        0. UINT spos\n        1. UINT epos\n        2. UINT esize\n        3. UINT mpos\n        4. UINT msize\n        ";
+static PyObject *__pyx_pw_4h5py_3h5t_11TypeFloatID_1get_fields(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_fields (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5t_11TypeFloatID_get_fields(((struct __pyx_obj_4h5py_3h5t_TypeFloatID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":795
+ * 
+ * 
+ *     def get_fields(self):             # <<<<<<<<<<<<<<
+ *         """() => TUPLE field_info
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5t_11TypeFloatID_get_fields(struct __pyx_obj_4h5py_3h5t_TypeFloatID *__pyx_v_self) {
+  size_t __pyx_v_spos;
+  size_t __pyx_v_epos;
+  size_t __pyx_v_esize;
+  size_t __pyx_v_mpos;
+  size_t __pyx_v_msize;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_fields", 0);
+
+  /* "h5py/h5t.pyx":808
+ *         """
+ *         cdef size_t spos, epos, esize, mpos, msize
+ *         H5Tget_fields(self.id, &spos, &epos, &esize, &mpos, &msize)             # <<<<<<<<<<<<<<
+ *         return (spos, epos, esize, mpos, msize)
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Tget_fields(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.id, (&__pyx_v_spos), (&__pyx_v_epos), (&__pyx_v_esize), (&__pyx_v_mpos), (&__pyx_v_msize)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 808; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5t.pyx":809
+ *         cdef size_t spos, epos, esize, mpos, msize
+ *         H5Tget_fields(self.id, &spos, &epos, &esize, &mpos, &msize)
+ *         return (spos, epos, esize, mpos, msize)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_2 = __Pyx_PyInt_FromSize_t(__pyx_v_spos); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 809; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_v_epos); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 809; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_4 = __Pyx_PyInt_FromSize_t(__pyx_v_esize); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 809; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = __Pyx_PyInt_FromSize_t(__pyx_v_mpos); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 809; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_v_msize); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 809; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_6);
+  __pyx_t_7 = PyTuple_New(5); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 809; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_7);
+  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_2);
+  __Pyx_GIVEREF(__pyx_t_2);
+  PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_3);
+  PyTuple_SET_ITEM(__pyx_t_7, 2, __pyx_t_4);
+  __Pyx_GIVEREF(__pyx_t_4);
+  PyTuple_SET_ITEM(__pyx_t_7, 3, __pyx_t_5);
+  __Pyx_GIVEREF(__pyx_t_5);
+  PyTuple_SET_ITEM(__pyx_t_7, 4, __pyx_t_6);
+  __Pyx_GIVEREF(__pyx_t_6);
+  __pyx_t_2 = 0;
+  __pyx_t_3 = 0;
+  __pyx_t_4 = 0;
+  __pyx_t_5 = 0;
+  __pyx_t_6 = 0;
+  __pyx_r = ((PyObject *)__pyx_t_7);
+  __pyx_t_7 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_AddTraceback("h5py.h5t.TypeFloatID.get_fields", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5t_11TypeFloatID_3set_fields(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_4h5py_3h5t_11TypeFloatID_2set_fields[] = "(UINT spos, UINT epos, UINT esize, UINT mpos, UINT msize)\n\n        Set floating-point bit fields.  Refer to the HDF5 docs for\n        argument definitions.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5t_11TypeFloatID_3set_fields(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  size_t __pyx_v_spos;
+  size_t __pyx_v_epos;
+  size_t __pyx_v_esize;
+  size_t __pyx_v_mpos;
+  size_t __pyx_v_msize;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("set_fields (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__spos,&__pyx_n_s__epos,&__pyx_n_s__esize,&__pyx_n_s__mpos,&__pyx_n_s__msize,0};
+    PyObject* values[5] = {0,0,0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__spos)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__epos)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("set_fields", 1, 5, 5, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 812; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+        case  2:
+        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__esize)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("set_fields", 1, 5, 5, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 812; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+        case  3:
+        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__mpos)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("set_fields", 1, 5, 5, 3); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 812; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+        case  4:
+        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__msize)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("set_fields", 1, 5, 5, 4); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 812; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_fields") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 812; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+    }
+    __pyx_v_spos = __Pyx_PyInt_AsSize_t(values[0]); if (unlikely((__pyx_v_spos == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 812; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_epos = __Pyx_PyInt_AsSize_t(values[1]); if (unlikely((__pyx_v_epos == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 812; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_esize = __Pyx_PyInt_AsSize_t(values[2]); if (unlikely((__pyx_v_esize == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 812; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_mpos = __Pyx_PyInt_AsSize_t(values[3]); if (unlikely((__pyx_v_mpos == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 813; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_msize = __Pyx_PyInt_AsSize_t(values[4]); if (unlikely((__pyx_v_msize == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 813; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("set_fields", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 812; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5t.TypeFloatID.set_fields", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_3h5t_11TypeFloatID_2set_fields(((struct __pyx_obj_4h5py_3h5t_TypeFloatID *)__pyx_v_self), __pyx_v_spos, __pyx_v_epos, __pyx_v_esize, __pyx_v_mpos, __pyx_v_msize);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":812
+ * 
+ * 
+ *     def set_fields(self, size_t spos, size_t epos, size_t esize,             # <<<<<<<<<<<<<<
+ *                           size_t mpos, size_t msize):
+ *         """(UINT spos, UINT epos, UINT esize, UINT mpos, UINT msize)
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5t_11TypeFloatID_2set_fields(struct __pyx_obj_4h5py_3h5t_TypeFloatID *__pyx_v_self, size_t __pyx_v_spos, size_t __pyx_v_epos, size_t __pyx_v_esize, size_t __pyx_v_mpos, size_t __pyx_v_msize) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("set_fields", 0);
+
+  /* "h5py/h5t.pyx":819
+ *         argument definitions.
+ *         """
+ *         H5Tset_fields(self.id, spos, epos, esize, mpos, msize)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Tset_fields(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.id, __pyx_v_spos, __pyx_v_epos, __pyx_v_esize, __pyx_v_mpos, __pyx_v_msize); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 819; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py.h5t.TypeFloatID.set_fields", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5t_11TypeFloatID_5get_ebias(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5t_11TypeFloatID_4get_ebias[] = "() => UINT ebias\n\n        Get the exponent bias.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5t_11TypeFloatID_5get_ebias(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_ebias (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5t_11TypeFloatID_4get_ebias(((struct __pyx_obj_4h5py_3h5t_TypeFloatID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":822
+ * 
+ * 
+ *     def get_ebias(self):             # <<<<<<<<<<<<<<
+ *         """() => UINT ebias
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5t_11TypeFloatID_4get_ebias(struct __pyx_obj_4h5py_3h5t_TypeFloatID *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  size_t __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_ebias", 0);
+
+  /* "h5py/h5t.pyx":827
+ *         Get the exponent bias.
+ *         """
+ *         return H5Tget_ebias(self.id)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Tget_ebias(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 827; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyInt_FromSize_t(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 827; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5t.TypeFloatID.get_ebias", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5t_11TypeFloatID_7set_ebias(PyObject *__pyx_v_self, PyObject *__pyx_arg_ebias); /*proto*/
+static char __pyx_doc_4h5py_3h5t_11TypeFloatID_6set_ebias[] = "(UINT ebias)\n\n        Set the exponent bias.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5t_11TypeFloatID_7set_ebias(PyObject *__pyx_v_self, PyObject *__pyx_arg_ebias) {
+  size_t __pyx_v_ebias;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("set_ebias (wrapper)", 0);
+  assert(__pyx_arg_ebias); {
+    __pyx_v_ebias = __Pyx_PyInt_AsSize_t(__pyx_arg_ebias); if (unlikely((__pyx_v_ebias == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 830; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5t.TypeFloatID.set_ebias", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_3h5t_11TypeFloatID_6set_ebias(((struct __pyx_obj_4h5py_3h5t_TypeFloatID *)__pyx_v_self), ((size_t)__pyx_v_ebias));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":830
+ * 
+ * 
+ *     def set_ebias(self, size_t ebias):             # <<<<<<<<<<<<<<
+ *         """(UINT ebias)
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5t_11TypeFloatID_6set_ebias(struct __pyx_obj_4h5py_3h5t_TypeFloatID *__pyx_v_self, size_t __pyx_v_ebias) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("set_ebias", 0);
+
+  /* "h5py/h5t.pyx":835
+ *         Set the exponent bias.
+ *         """
+ *         H5Tset_ebias(self.id, ebias)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Tset_ebias(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.id, __pyx_v_ebias); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 835; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py.h5t.TypeFloatID.set_ebias", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5t_11TypeFloatID_9get_norm(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5t_11TypeFloatID_8get_norm[] = "() => INT normalization_code\n\n        Get the normalization strategy.  Legal values are:\n\n        - NORM_IMPLIED\n        - NORM_MSBSET\n        - NORM_NONE\n        ";
+static PyObject *__pyx_pw_4h5py_3h5t_11TypeFloatID_9get_norm(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_norm (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5t_11TypeFloatID_8get_norm(((struct __pyx_obj_4h5py_3h5t_TypeFloatID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":838
+ * 
+ * 
+ *     def get_norm(self):             # <<<<<<<<<<<<<<
+ *         """() => INT normalization_code
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5t_11TypeFloatID_8get_norm(struct __pyx_obj_4h5py_3h5t_TypeFloatID *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  H5T_norm_t __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_norm", 0);
+
+  /* "h5py/h5t.pyx":847
+ *         - NORM_NONE
+ *         """
+ *         return <int>H5Tget_norm(self.id)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Tget_norm(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 847; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyInt_FromLong(((int)__pyx_t_1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 847; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5t.TypeFloatID.get_norm", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5t_11TypeFloatID_11set_norm(PyObject *__pyx_v_self, PyObject *__pyx_arg_norm); /*proto*/
+static char __pyx_doc_4h5py_3h5t_11TypeFloatID_10set_norm[] = "(INT normalization_code)\n\n        Set the normalization strategy.  Legal values are:\n\n        - NORM_IMPLIED\n        - NORM_MSBSET\n        - NORM_NONE\n        ";
+static PyObject *__pyx_pw_4h5py_3h5t_11TypeFloatID_11set_norm(PyObject *__pyx_v_self, PyObject *__pyx_arg_norm) {
+  int __pyx_v_norm;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("set_norm (wrapper)", 0);
+  assert(__pyx_arg_norm); {
+    __pyx_v_norm = __Pyx_PyInt_AsInt(__pyx_arg_norm); if (unlikely((__pyx_v_norm == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 850; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5t.TypeFloatID.set_norm", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_3h5t_11TypeFloatID_10set_norm(((struct __pyx_obj_4h5py_3h5t_TypeFloatID *)__pyx_v_self), ((int)__pyx_v_norm));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":850
+ * 
+ * 
+ *     def set_norm(self, int norm):             # <<<<<<<<<<<<<<
+ *         """(INT normalization_code)
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5t_11TypeFloatID_10set_norm(struct __pyx_obj_4h5py_3h5t_TypeFloatID *__pyx_v_self, int __pyx_v_norm) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("set_norm", 0);
+
+  /* "h5py/h5t.pyx":859
+ *         - NORM_NONE
+ *         """
+ *         H5Tset_norm(self.id, <H5T_norm_t>norm)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Tset_norm(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.id, ((H5T_norm_t)__pyx_v_norm)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 859; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py.h5t.TypeFloatID.set_norm", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5t_11TypeFloatID_13get_inpad(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5t_11TypeFloatID_12get_inpad[] = "() => INT pad_code\n\n        Determine the internal padding strategy.  Legal values are:\n\n        - PAD_ZERO\n        - PAD_ONE\n        - PAD_BACKGROUND\n        ";
+static PyObject *__pyx_pw_4h5py_3h5t_11TypeFloatID_13get_inpad(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_inpad (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5t_11TypeFloatID_12get_inpad(((struct __pyx_obj_4h5py_3h5t_TypeFloatID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":862
+ * 
+ * 
+ *     def get_inpad(self):             # <<<<<<<<<<<<<<
+ *         """() => INT pad_code
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5t_11TypeFloatID_12get_inpad(struct __pyx_obj_4h5py_3h5t_TypeFloatID *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  H5T_pad_t __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_inpad", 0);
+
+  /* "h5py/h5t.pyx":871
+ *         - PAD_BACKGROUND
+ *         """
+ *         return <int>H5Tget_inpad(self.id)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Tget_inpad(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 871; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyInt_FromLong(((int)__pyx_t_1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 871; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5t.TypeFloatID.get_inpad", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5t_11TypeFloatID_15set_inpad(PyObject *__pyx_v_self, PyObject *__pyx_arg_pad_code); /*proto*/
+static char __pyx_doc_4h5py_3h5t_11TypeFloatID_14set_inpad[] = "(INT pad_code)\n\n        Set the internal padding strategy.  Legal values are:\n\n        - PAD_ZERO\n        - PAD_ONE\n        - PAD_BACKGROUND\n        ";
+static PyObject *__pyx_pw_4h5py_3h5t_11TypeFloatID_15set_inpad(PyObject *__pyx_v_self, PyObject *__pyx_arg_pad_code) {
+  int __pyx_v_pad_code;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("set_inpad (wrapper)", 0);
+  assert(__pyx_arg_pad_code); {
+    __pyx_v_pad_code = __Pyx_PyInt_AsInt(__pyx_arg_pad_code); if (unlikely((__pyx_v_pad_code == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 874; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5t.TypeFloatID.set_inpad", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_3h5t_11TypeFloatID_14set_inpad(((struct __pyx_obj_4h5py_3h5t_TypeFloatID *)__pyx_v_self), ((int)__pyx_v_pad_code));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":874
+ * 
+ * 
+ *     def set_inpad(self, int pad_code):             # <<<<<<<<<<<<<<
+ *         """(INT pad_code)
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5t_11TypeFloatID_14set_inpad(struct __pyx_obj_4h5py_3h5t_TypeFloatID *__pyx_v_self, int __pyx_v_pad_code) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("set_inpad", 0);
+
+  /* "h5py/h5t.pyx":883
+ *         - PAD_BACKGROUND
+ *         """
+ *         H5Tset_inpad(self.id, <H5T_pad_t>pad_code)             # <<<<<<<<<<<<<<
+ * 
+ *     cdef object py_dtype(self):
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Tset_inpad(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.id, ((H5T_pad_t)__pyx_v_pad_code)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 883; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py.h5t.TypeFloatID.set_inpad", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":885
+ *         H5Tset_inpad(self.id, <H5T_pad_t>pad_code)
+ * 
+ *     cdef object py_dtype(self):             # <<<<<<<<<<<<<<
+ *         # Translation function for floating-point types
+ *         size = self.get_size()                  # int giving number of bytes
+ */
+
+static PyObject *__pyx_f_4h5py_3h5t_11TypeFloatID_py_dtype(struct __pyx_obj_4h5py_3h5t_TypeFloatID *__pyx_v_self) {
+  PyObject *__pyx_v_size = NULL;
+  PyObject *__pyx_v_order = NULL;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_t_3;
+  int __pyx_t_4;
+  int __pyx_t_5;
+  PyObject *__pyx_t_6 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("py_dtype", 0);
+
+  /* "h5py/h5t.pyx":887
+ *     cdef object py_dtype(self):
+ *         # Translation function for floating-point types
+ *         size = self.get_size()                  # int giving number of bytes             # <<<<<<<<<<<<<<
+ *         order = _order_map[self.get_order()]    # string with '<' or '>'
+ * 
+ */
+  __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__get_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 887; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 887; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_v_size = __pyx_t_2;
+  __pyx_t_2 = 0;
+
+  /* "h5py/h5t.pyx":888
+ *         # Translation function for floating-point types
+ *         size = self.get_size()                  # int giving number of bytes
+ *         order = _order_map[self.get_order()]    # string with '<' or '>'             # <<<<<<<<<<<<<<
+ * 
+ *         if size == 2 and not hasattr(np, 'float16'):
+ */
+  if (unlikely(((PyObject *)__pyx_v_4h5py_3h5t__order_map) == Py_None)) {
+    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 888; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  }
+  __pyx_t_2 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__get_order); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 888; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 888; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_2 = __Pyx_PyDict_GetItem(((PyObject *)__pyx_v_4h5py_3h5t__order_map), __pyx_t_1); if (!__pyx_t_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 888; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_v_order = __pyx_t_2;
+  __pyx_t_2 = 0;
+
+  /* "h5py/h5t.pyx":890
+ *         order = _order_map[self.get_order()]    # string with '<' or '>'
+ * 
+ *         if size == 2 and not hasattr(np, 'float16'):             # <<<<<<<<<<<<<<
+ *             # This build doesn't have float16; promote to float32
+ *             return dtype(order+"f4")
+ */
+  __pyx_t_2 = PyObject_RichCompare(__pyx_v_size, __pyx_int_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 890; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 890; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  if (__pyx_t_3) {
+    __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 890; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_4 = PyObject_HasAttr(__pyx_t_2, ((PyObject *)__pyx_n_s__float16)); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 890; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __pyx_t_5 = (!__pyx_t_4);
+    __pyx_t_4 = __pyx_t_5;
+  } else {
+    __pyx_t_4 = __pyx_t_3;
+  }
+  if (__pyx_t_4) {
+
+    /* "h5py/h5t.pyx":892
+ *         if size == 2 and not hasattr(np, 'float16'):
+ *             # This build doesn't have float16; promote to float32
+ *             return dtype(order+"f4")             # <<<<<<<<<<<<<<
+ * 
+ *         if size > 8:
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_2 = PyNumber_Add(__pyx_v_order, ((PyObject *)__pyx_n_s__f4)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 892; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 892; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
+    __Pyx_GIVEREF(__pyx_t_2);
+    __pyx_t_2 = 0;
+    __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4h5py_5numpy_dtype)), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 892; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
+    __pyx_r = __pyx_t_2;
+    __pyx_t_2 = 0;
+    goto __pyx_L0;
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  /* "h5py/h5t.pyx":894
+ *             return dtype(order+"f4")
+ * 
+ *         if size > 8:             # <<<<<<<<<<<<<<
+ *             # The native NumPy longdouble is used for 96 and 128-bit floats
+ *             return dtype(order + "f" + str(np.longdouble(1).dtype.itemsize))
+ */
+  __pyx_t_2 = PyObject_RichCompare(__pyx_v_size, __pyx_int_8, Py_GT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 894; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 894; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  if (__pyx_t_4) {
+
+    /* "h5py/h5t.pyx":896
+ *         if size > 8:
+ *             # The native NumPy longdouble is used for 96 and 128-bit floats
+ *             return dtype(order + "f" + str(np.longdouble(1).dtype.itemsize))             # <<<<<<<<<<<<<<
+ * 
+ *         return dtype( _order_map[self.get_order()] + "f" + \
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_2 = PyNumber_Add(__pyx_v_order, ((PyObject *)__pyx_n_s__f)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 896; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 896; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_6 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__longdouble); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 896; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_6);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __pyx_t_1 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_k_tuple_12), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 896; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+    __pyx_t_6 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__dtype); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 896; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_6);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __pyx_t_1 = PyObject_GetAttr(__pyx_t_6, __pyx_n_s__itemsize); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 896; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+    __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 896; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_6);
+    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
+    __Pyx_GIVEREF(__pyx_t_1);
+    __pyx_t_1 = 0;
+    __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 896; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
+    __pyx_t_6 = PyNumber_Add(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 896; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_6);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 896; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_6);
+    __Pyx_GIVEREF(__pyx_t_6);
+    __pyx_t_6 = 0;
+    __pyx_t_6 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4h5py_5numpy_dtype)), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 896; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_6);
+    __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
+    __pyx_r = __pyx_t_6;
+    __pyx_t_6 = 0;
+    goto __pyx_L0;
+    goto __pyx_L4;
+  }
+  __pyx_L4:;
+
+  /* "h5py/h5t.pyx":898
+ *             return dtype(order + "f" + str(np.longdouble(1).dtype.itemsize))
+ * 
+ *         return dtype( _order_map[self.get_order()] + "f" + \             # <<<<<<<<<<<<<<
+ *                       str(self.get_size()) )
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  if (unlikely(((PyObject *)__pyx_v_4h5py_3h5t__order_map) == Py_None)) {
+    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 898; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  }
+  __pyx_t_6 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__get_order); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 898; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_6);
+  __pyx_t_1 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 898; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+  __pyx_t_6 = __Pyx_PyDict_GetItem(((PyObject *)__pyx_v_4h5py_3h5t__order_map), __pyx_t_1); if (!__pyx_t_6) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 898; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_6);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = PyNumber_Add(__pyx_t_6, ((PyObject *)__pyx_n_s__f)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 898; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+
+  /* "h5py/h5t.pyx":899
+ * 
+ *         return dtype( _order_map[self.get_order()] + "f" + \
+ *                       str(self.get_size()) )             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_6 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__get_size); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 899; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_6);
+  __pyx_t_2 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 899; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 899; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_6);
+  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_2);
+  __Pyx_GIVEREF(__pyx_t_2);
+  __pyx_t_2 = 0;
+  __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 899; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
+  __pyx_t_6 = PyNumber_Add(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 898; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_6);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 898; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_6);
+  __Pyx_GIVEREF(__pyx_t_6);
+  __pyx_t_6 = 0;
+  __pyx_t_6 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4h5py_5numpy_dtype)), ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 898; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_6);
+  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
+  __pyx_r = __pyx_t_6;
+  __pyx_t_6 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_AddTraceback("h5py.h5t.TypeFloatID.py_dtype", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_size);
+  __Pyx_XDECREF(__pyx_v_order);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5t_15TypeCompositeID_1get_nmembers(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5t_15TypeCompositeID_get_nmembers[] = "() => INT number_of_members\n\n        Determine the number of members in a compound or enumerated type.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5t_15TypeCompositeID_1get_nmembers(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_nmembers (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5t_15TypeCompositeID_get_nmembers(((struct __pyx_obj_4h5py_3h5t_TypeCompositeID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":911
+ * 
+ * 
+ *     def get_nmembers(self):             # <<<<<<<<<<<<<<
+ *         """() => INT number_of_members
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5t_15TypeCompositeID_get_nmembers(struct __pyx_obj_4h5py_3h5t_TypeCompositeID *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_nmembers", 0);
+
+  /* "h5py/h5t.pyx":916
+ *         Determine the number of members in a compound or enumerated type.
+ *         """
+ *         return H5Tget_nmembers(self.id)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Tget_nmembers(__pyx_v_self->__pyx_base.__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 916; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyInt_FromLong(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 916; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5t.TypeCompositeID.get_nmembers", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5t_15TypeCompositeID_3get_member_name(PyObject *__pyx_v_self, PyObject *__pyx_arg_member); /*proto*/
+static char __pyx_doc_4h5py_3h5t_15TypeCompositeID_2get_member_name[] = "(INT member) => STRING name\n        \n        Determine the name of a member of a compound or enumerated type,\n        identified by its index (0 <= member < nmembers).\n        ";
+static PyObject *__pyx_pw_4h5py_3h5t_15TypeCompositeID_3get_member_name(PyObject *__pyx_v_self, PyObject *__pyx_arg_member) {
+  int __pyx_v_member;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_member_name (wrapper)", 0);
+  assert(__pyx_arg_member); {
+    __pyx_v_member = __Pyx_PyInt_AsInt(__pyx_arg_member); if (unlikely((__pyx_v_member == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 919; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5t.TypeCompositeID.get_member_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_3h5t_15TypeCompositeID_2get_member_name(((struct __pyx_obj_4h5py_3h5t_TypeCompositeID *)__pyx_v_self), ((int)__pyx_v_member));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":919
+ * 
+ * 
+ *     def get_member_name(self, int member):             # <<<<<<<<<<<<<<
+ *         """(INT member) => STRING name
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5t_15TypeCompositeID_2get_member_name(struct __pyx_obj_4h5py_3h5t_TypeCompositeID *__pyx_v_self, int __pyx_v_member) {
+  char *__pyx_v_name;
+  PyObject *__pyx_v_pyname = NULL;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  char *__pyx_t_3;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_member_name", 0);
+
+  /* "h5py/h5t.pyx":926
+ *         """
+ *         cdef char* name
+ *         name = NULL             # <<<<<<<<<<<<<<
+ * 
+ *         if member < 0:
+ */
+  __pyx_v_name = NULL;
+
+  /* "h5py/h5t.pyx":928
+ *         name = NULL
+ * 
+ *         if member < 0:             # <<<<<<<<<<<<<<
+ *             raise ValueError("Member index must be non-negative.")
+ * 
+ */
+  __pyx_t_1 = (__pyx_v_member < 0);
+  if (__pyx_t_1) {
+
+    /* "h5py/h5t.pyx":929
+ * 
+ *         if member < 0:
+ *             raise ValueError("Member index must be non-negative.")             # <<<<<<<<<<<<<<
+ * 
+ *         try:
+ */
+    __pyx_t_2 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_14), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 929; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 929; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  /* "h5py/h5t.pyx":931
+ *             raise ValueError("Member index must be non-negative.")
+ * 
+ *         try:             # <<<<<<<<<<<<<<
+ *             name = H5Tget_member_name(self.id, member)
+ *             assert name != NULL
+ */
+  /*try:*/ {
+
+    /* "h5py/h5t.pyx":932
+ * 
+ *         try:
+ *             name = H5Tget_member_name(self.id, member)             # <<<<<<<<<<<<<<
+ *             assert name != NULL
+ *             pyname = <bytes>name
+ */
+    __pyx_t_3 = __pyx_f_4h5py_4defs_H5Tget_member_name(__pyx_v_self->__pyx_base.__pyx_base.id, __pyx_v_member); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 932; __pyx_clineno = __LINE__; goto __pyx_L5;}
+    __pyx_v_name = __pyx_t_3;
+
+    /* "h5py/h5t.pyx":933
+ *         try:
+ *             name = H5Tget_member_name(self.id, member)
+ *             assert name != NULL             # <<<<<<<<<<<<<<
+ *             pyname = <bytes>name
+ *         finally:
+ */
+    #ifndef CYTHON_WITHOUT_ASSERTIONS
+    if (unlikely(!(__pyx_v_name != NULL))) {
+      PyErr_SetNone(PyExc_AssertionError);
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 933; __pyx_clineno = __LINE__; goto __pyx_L5;}
+    }
+    #endif
+
+    /* "h5py/h5t.pyx":934
+ *             name = H5Tget_member_name(self.id, member)
+ *             assert name != NULL
+ *             pyname = <bytes>name             # <<<<<<<<<<<<<<
+ *         finally:
+ *             free(name)
+ */
+    __pyx_t_2 = PyBytes_FromString(__pyx_v_name); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 934; __pyx_clineno = __LINE__; goto __pyx_L5;}
+    __Pyx_GOTREF(((PyObject *)__pyx_t_2));
+    __Pyx_INCREF(((PyObject*)__pyx_t_2));
+    __pyx_v_pyname = ((PyObject*)__pyx_t_2);
+    __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
+  }
+
+  /* "h5py/h5t.pyx":936
+ *             pyname = <bytes>name
+ *         finally:
+ *             free(name)             # <<<<<<<<<<<<<<
+ * 
+ *         return pyname
+ */
+  /*finally:*/ {
+    int __pyx_why;
+    PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb;
+    int __pyx_exc_lineno;
+    __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
+    __pyx_why = 0; goto __pyx_L6;
+    __pyx_L5: {
+      __pyx_why = 4;
+      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+      __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb);
+      __pyx_exc_lineno = __pyx_lineno;
+      goto __pyx_L6;
+    }
+    __pyx_L6:;
+    free(__pyx_v_name);
+    switch (__pyx_why) {
+      case 4: {
+        __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb);
+        __pyx_lineno = __pyx_exc_lineno;
+        __pyx_exc_type = 0;
+        __pyx_exc_value = 0;
+        __pyx_exc_tb = 0;
+        goto __pyx_L1_error;
+      }
+    }
+  }
+
+  /* "h5py/h5t.pyx":938
+ *             free(name)
+ * 
+ *         return pyname             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(((PyObject *)__pyx_v_pyname));
+  __pyx_r = ((PyObject *)__pyx_v_pyname);
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5t.TypeCompositeID.get_member_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_pyname);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5t_15TypeCompositeID_5get_member_index(PyObject *__pyx_v_self, PyObject *__pyx_arg_name); /*proto*/
+static char __pyx_doc_4h5py_3h5t_15TypeCompositeID_4get_member_index[] = "(STRING name) => INT index\n\n        Determine the index of a member of a compound or enumerated datatype\n        identified by a string name.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5t_15TypeCompositeID_5get_member_index(PyObject *__pyx_v_self, PyObject *__pyx_arg_name) {
+  char *__pyx_v_name;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_member_index (wrapper)", 0);
+  assert(__pyx_arg_name); {
+    __pyx_v_name = PyBytes_AsString(__pyx_arg_name); if (unlikely((!__pyx_v_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 941; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5t.TypeCompositeID.get_member_index", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_3h5t_15TypeCompositeID_4get_member_index(((struct __pyx_obj_4h5py_3h5t_TypeCompositeID *)__pyx_v_self), ((char *)__pyx_v_name));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":941
+ * 
+ * 
+ *     def get_member_index(self, char* name):             # <<<<<<<<<<<<<<
+ *         """(STRING name) => INT index
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5t_15TypeCompositeID_4get_member_index(struct __pyx_obj_4h5py_3h5t_TypeCompositeID *__pyx_v_self, char *__pyx_v_name) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_member_index", 0);
+
+  /* "h5py/h5t.pyx":947
+ *         identified by a string name.
+ *         """
+ *         return H5Tget_member_index(self.id, name)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Tget_member_index(__pyx_v_self->__pyx_base.__pyx_base.id, __pyx_v_name); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 947; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyInt_FromLong(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 947; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5t.TypeCompositeID.get_member_index", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5t_14TypeCompoundID_1get_member_class(PyObject *__pyx_v_self, PyObject *__pyx_arg_member); /*proto*/
+static char __pyx_doc_4h5py_3h5t_14TypeCompoundID_get_member_class[] = "(INT member) => INT class\n\n        Determine the datatype class of the member of a compound type,\n        identified by its index (0 <= member < nmembers).\n        ";
+static PyObject *__pyx_pw_4h5py_3h5t_14TypeCompoundID_1get_member_class(PyObject *__pyx_v_self, PyObject *__pyx_arg_member) {
+  int __pyx_v_member;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_member_class (wrapper)", 0);
+  assert(__pyx_arg_member); {
+    __pyx_v_member = __Pyx_PyInt_AsInt(__pyx_arg_member); if (unlikely((__pyx_v_member == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 958; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5t.TypeCompoundID.get_member_class", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_3h5t_14TypeCompoundID_get_member_class(((struct __pyx_obj_4h5py_3h5t_TypeCompoundID *)__pyx_v_self), ((int)__pyx_v_member));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":958
+ * 
+ * 
+ *     def get_member_class(self, int member):             # <<<<<<<<<<<<<<
+ *         """(INT member) => INT class
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5t_14TypeCompoundID_get_member_class(struct __pyx_obj_4h5py_3h5t_TypeCompoundID *__pyx_v_self, int __pyx_v_member) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  enum H5T_class_t __pyx_t_3;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_member_class", 0);
+
+  /* "h5py/h5t.pyx":964
+ *         identified by its index (0 <= member < nmembers).
+ *         """
+ *         if member < 0:             # <<<<<<<<<<<<<<
+ *             raise ValueError("Member index must be non-negative.")
+ *         return H5Tget_member_class(self.id, member)
+ */
+  __pyx_t_1 = (__pyx_v_member < 0);
+  if (__pyx_t_1) {
+
+    /* "h5py/h5t.pyx":965
+ *         """
+ *         if member < 0:
+ *             raise ValueError("Member index must be non-negative.")             # <<<<<<<<<<<<<<
+ *         return H5Tget_member_class(self.id, member)
+ * 
+ */
+    __pyx_t_2 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_15), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 965; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 965; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  /* "h5py/h5t.pyx":966
+ *         if member < 0:
+ *             raise ValueError("Member index must be non-negative.")
+ *         return H5Tget_member_class(self.id, member)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_3 = __pyx_f_4h5py_4defs_H5Tget_member_class(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.id, __pyx_v_member); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 966; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyInt_FromLong(__pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 966; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5t.TypeCompoundID.get_member_class", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5t_14TypeCompoundID_3get_member_offset(PyObject *__pyx_v_self, PyObject *__pyx_arg_member); /*proto*/
+static char __pyx_doc_4h5py_3h5t_14TypeCompoundID_2get_member_offset[] = "(INT member) => INT offset\n\n        Determine the offset, in bytes, of the beginning of the specified\n        member of a compound datatype.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5t_14TypeCompoundID_3get_member_offset(PyObject *__pyx_v_self, PyObject *__pyx_arg_member) {
+  int __pyx_v_member;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_member_offset (wrapper)", 0);
+  assert(__pyx_arg_member); {
+    __pyx_v_member = __Pyx_PyInt_AsInt(__pyx_arg_member); if (unlikely((__pyx_v_member == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 970; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5t.TypeCompoundID.get_member_offset", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_3h5t_14TypeCompoundID_2get_member_offset(((struct __pyx_obj_4h5py_3h5t_TypeCompoundID *)__pyx_v_self), ((int)__pyx_v_member));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":970
+ * 
+ * 
+ *     def get_member_offset(self, int member):             # <<<<<<<<<<<<<<
+ *         """(INT member) => INT offset
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5t_14TypeCompoundID_2get_member_offset(struct __pyx_obj_4h5py_3h5t_TypeCompoundID *__pyx_v_self, int __pyx_v_member) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_t_3;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_member_offset", 0);
+
+  /* "h5py/h5t.pyx":976
+ *         member of a compound datatype.
+ *         """
+ *         if member < 0:             # <<<<<<<<<<<<<<
+ *             raise ValueError("Member index must be non-negative.")
+ *         return H5Tget_member_offset(self.id, member)
+ */
+  __pyx_t_1 = (__pyx_v_member < 0);
+  if (__pyx_t_1) {
+
+    /* "h5py/h5t.pyx":977
+ *         """
+ *         if member < 0:
+ *             raise ValueError("Member index must be non-negative.")             # <<<<<<<<<<<<<<
+ *         return H5Tget_member_offset(self.id, member)
+ * 
+ */
+    __pyx_t_2 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_16), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 977; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 977; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  /* "h5py/h5t.pyx":978
+ *         if member < 0:
+ *             raise ValueError("Member index must be non-negative.")
+ *         return H5Tget_member_offset(self.id, member)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_3 = __pyx_f_4h5py_4defs_H5Tget_member_offset(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.id, __pyx_v_member); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 978; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyInt_FromLong(__pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 978; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5t.TypeCompoundID.get_member_offset", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5t_14TypeCompoundID_5get_member_type(PyObject *__pyx_v_self, PyObject *__pyx_arg_member); /*proto*/
+static char __pyx_doc_4h5py_3h5t_14TypeCompoundID_4get_member_type[] = "(INT member) => TypeID\n\n        Create a copy of a member of a compound datatype, identified by its\n        index.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5t_14TypeCompoundID_5get_member_type(PyObject *__pyx_v_self, PyObject *__pyx_arg_member) {
+  int __pyx_v_member;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_member_type (wrapper)", 0);
+  assert(__pyx_arg_member); {
+    __pyx_v_member = __Pyx_PyInt_AsInt(__pyx_arg_member); if (unlikely((__pyx_v_member == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 981; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5t.TypeCompoundID.get_member_type", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_3h5t_14TypeCompoundID_4get_member_type(((struct __pyx_obj_4h5py_3h5t_TypeCompoundID *)__pyx_v_self), ((int)__pyx_v_member));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":981
+ * 
+ * 
+ *     def get_member_type(self, int member):             # <<<<<<<<<<<<<<
+ *         """(INT member) => TypeID
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5t_14TypeCompoundID_4get_member_type(struct __pyx_obj_4h5py_3h5t_TypeCompoundID *__pyx_v_self, int __pyx_v_member) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  hid_t __pyx_t_3;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_member_type", 0);
+
+  /* "h5py/h5t.pyx":987
+ *         index.
+ *         """
+ *         if member < 0:             # <<<<<<<<<<<<<<
+ *             raise ValueError("Member index must be non-negative.")
+ *         return typewrap(H5Tget_member_type(self.id, member))
+ */
+  __pyx_t_1 = (__pyx_v_member < 0);
+  if (__pyx_t_1) {
+
+    /* "h5py/h5t.pyx":988
+ *         """
+ *         if member < 0:
+ *             raise ValueError("Member index must be non-negative.")             # <<<<<<<<<<<<<<
+ *         return typewrap(H5Tget_member_type(self.id, member))
+ * 
+ */
+    __pyx_t_2 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_17), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 988; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 988; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  /* "h5py/h5t.pyx":989
+ *         if member < 0:
+ *             raise ValueError("Member index must be non-negative.")
+ *         return typewrap(H5Tget_member_type(self.id, member))             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_3 = __pyx_f_4h5py_4defs_H5Tget_member_type(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.id, __pyx_v_member); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 989; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = ((PyObject *)__pyx_f_4h5py_3h5t_typewrap(__pyx_t_3, 0)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 989; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5t.TypeCompoundID.get_member_type", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5t_14TypeCompoundID_7insert(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_4h5py_3h5t_14TypeCompoundID_6insert[] = "(STRING name, UINT offset, TypeID field)\n\n        Add a named member datatype to a compound datatype.  The parameter\n        offset indicates the offset from the start of the compound datatype,\n        in bytes.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5t_14TypeCompoundID_7insert(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  char *__pyx_v_name;
+  size_t __pyx_v_offset;
+  struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_v_field = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("insert (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__name,&__pyx_n_s__offset,&__pyx_n_s__field,0};
+    PyObject* values[3] = {0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__name)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__offset)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("insert", 1, 3, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 992; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+        case  2:
+        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__field)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("insert", 1, 3, 3, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 992; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "insert") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 992; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+    }
+    __pyx_v_name = PyBytes_AsString(values[0]); if (unlikely((!__pyx_v_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 992; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_offset = __Pyx_PyInt_AsSize_t(values[1]); if (unlikely((__pyx_v_offset == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 992; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_field = ((struct __pyx_obj_4h5py_3h5t_TypeID *)values[2]);
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("insert", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 992; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5t.TypeCompoundID.insert", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_field), __pyx_ptype_4h5py_3h5t_TypeID, 0, "field", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 992; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_pf_4h5py_3h5t_14TypeCompoundID_6insert(((struct __pyx_obj_4h5py_3h5t_TypeCompoundID *)__pyx_v_self), __pyx_v_name, __pyx_v_offset, __pyx_v_field);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":992
+ * 
+ * 
+ *     def insert(self, char* name, size_t offset, TypeID field not None):             # <<<<<<<<<<<<<<
+ *         """(STRING name, UINT offset, TypeID field)
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5t_14TypeCompoundID_6insert(struct __pyx_obj_4h5py_3h5t_TypeCompoundID *__pyx_v_self, char *__pyx_v_name, size_t __pyx_v_offset, struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_v_field) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("insert", 0);
+
+  /* "h5py/h5t.pyx":999
+ *         in bytes.
+ *         """
+ *         H5Tinsert(self.id, name, offset, field.id)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Tinsert(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.id, __pyx_v_name, __pyx_v_offset, __pyx_v_field->__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 999; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py.h5t.TypeCompoundID.insert", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5t_14TypeCompoundID_9pack(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_4h5py_3h5t_14TypeCompoundID_8pack[] = "()\n\n        Recursively removes padding (introduced on account of e.g. compiler\n        alignment rules) from a compound datatype.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5t_14TypeCompoundID_9pack(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("pack (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5t_14TypeCompoundID_8pack(((struct __pyx_obj_4h5py_3h5t_TypeCompoundID *)__pyx_v_self));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":1002
+ * 
+ * 
+ *     def pack(self):             # <<<<<<<<<<<<<<
+ *         """()
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5t_14TypeCompoundID_8pack(struct __pyx_obj_4h5py_3h5t_TypeCompoundID *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("pack", 0);
+
+  /* "h5py/h5t.pyx":1008
+ *         alignment rules) from a compound datatype.
+ *         """
+ *         H5Tpack(self.id)             # <<<<<<<<<<<<<<
+ * 
+ *     cdef object py_dtype(self):
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Tpack(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1008; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py.h5t.TypeCompoundID.pack", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":1010
+ *         H5Tpack(self.id)
+ * 
+ *     cdef object py_dtype(self):             # <<<<<<<<<<<<<<
+ * 
+ *         cdef TypeID tmp_type
+ */
+
+static PyObject *__pyx_f_4h5py_3h5t_14TypeCompoundID_py_dtype(struct __pyx_obj_4h5py_3h5t_TypeCompoundID *__pyx_v_self) {
+  struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_v_tmp_type = 0;
+  PyObject *__pyx_v_field_names = 0;
+  PyObject *__pyx_v_field_types = 0;
+  int __pyx_v_nfields;
+  long __pyx_v_i;
+  PyObject *__pyx_v_name = NULL;
+  PyObject *__pyx_v_bstring = NULL;
+  PyObject *__pyx_v_blen = NULL;
+  PyObject *__pyx_v_nstring = NULL;
+  PyArray_Descr *__pyx_v_typeobj = NULL;
+  PyObject *__pyx_v_x = NULL;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_t_3;
+  PyObject *__pyx_t_4 = NULL;
+  int __pyx_t_5;
+  Py_ssize_t __pyx_t_6;
+  int __pyx_t_7;
+  PyObject *__pyx_t_8 = NULL;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  int __pyx_t_11;
+  int __pyx_t_12;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("py_dtype", 0);
+
+  /* "h5py/h5t.pyx":1016
+ *         cdef list field_types
+ *         cdef int nfields
+ *         field_names = []             # <<<<<<<<<<<<<<
+ *         field_types = []
+ *         nfields = self.get_nmembers()
+ */
+  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1016; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_field_names = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "h5py/h5t.pyx":1017
+ *         cdef int nfields
+ *         field_names = []
+ *         field_types = []             # <<<<<<<<<<<<<<
+ *         nfields = self.get_nmembers()
+ * 
+ */
+  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1017; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_field_types = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "h5py/h5t.pyx":1018
+ *         field_names = []
+ *         field_types = []
+ *         nfields = self.get_nmembers()             # <<<<<<<<<<<<<<
+ * 
+ *         # First step: read field names and their Numpy dtypes into
+ */
+  __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__get_nmembers); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1018; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1018; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_3 = __Pyx_PyInt_AsInt(__pyx_t_2); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1018; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_v_nfields = __pyx_t_3;
+
+  /* "h5py/h5t.pyx":1022
+ *         # First step: read field names and their Numpy dtypes into
+ *         # two separate arrays.
+ *         for i from 0 <= i < nfields:             # <<<<<<<<<<<<<<
+ *             tmp_type = self.get_member_type(i)
+ *             name = self.get_member_name(i)
+ */
+  __pyx_t_3 = __pyx_v_nfields;
+  for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_3; __pyx_v_i++) {
+
+    /* "h5py/h5t.pyx":1023
+ *         # two separate arrays.
+ *         for i from 0 <= i < nfields:
+ *             tmp_type = self.get_member_type(i)             # <<<<<<<<<<<<<<
+ *             name = self.get_member_name(i)
+ *             field_names.append(name)
+ */
+    __pyx_t_2 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__get_member_type); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1023; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_1 = PyInt_FromLong(__pyx_v_i); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1023; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1023; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1);
+    __Pyx_GIVEREF(__pyx_t_1);
+    __pyx_t_1 = 0;
+    __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1023; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
+    if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_4h5py_3h5t_TypeID))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1023; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_XDECREF(((PyObject *)__pyx_v_tmp_type));
+    __pyx_v_tmp_type = ((struct __pyx_obj_4h5py_3h5t_TypeID *)__pyx_t_1);
+    __pyx_t_1 = 0;
+
+    /* "h5py/h5t.pyx":1024
+ *         for i from 0 <= i < nfields:
+ *             tmp_type = self.get_member_type(i)
+ *             name = self.get_member_name(i)             # <<<<<<<<<<<<<<
+ *             field_names.append(name)
+ *             field_types.append(tmp_type.py_dtype())
+ */
+    __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__get_member_name); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1024; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_4 = PyInt_FromLong(__pyx_v_i); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1024; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1024; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_4);
+    __Pyx_GIVEREF(__pyx_t_4);
+    __pyx_t_4 = 0;
+    __pyx_t_4 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1024; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
+    __Pyx_XDECREF(__pyx_v_name);
+    __pyx_v_name = __pyx_t_4;
+    __pyx_t_4 = 0;
+
+    /* "h5py/h5t.pyx":1025
+ *             tmp_type = self.get_member_type(i)
+ *             name = self.get_member_name(i)
+ *             field_names.append(name)             # <<<<<<<<<<<<<<
+ *             field_types.append(tmp_type.py_dtype())
+ * 
+ */
+    __pyx_t_5 = PyList_Append(__pyx_v_field_names, __pyx_v_name); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1025; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+    /* "h5py/h5t.pyx":1026
+ *             name = self.get_member_name(i)
+ *             field_names.append(name)
+ *             field_types.append(tmp_type.py_dtype())             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+    __pyx_t_4 = ((struct __pyx_vtabstruct_4h5py_3h5t_TypeID *)__pyx_v_tmp_type->__pyx_vtab)->py_dtype(__pyx_v_tmp_type); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1026; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_5 = PyList_Append(__pyx_v_field_types, __pyx_t_4); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1026; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  }
+
+  /* "h5py/h5t.pyx":1030
+ * 
+ *         # 1. Check if it should be converted to a complex number
+ *         if len(field_names) == 2                                and \             # <<<<<<<<<<<<<<
+ *             tuple(field_names) == (cfg._r_name, cfg._i_name)    and \
+ *             field_types[0] == field_types[1]                    and \
+ */
+  __pyx_t_6 = PyList_GET_SIZE(((PyObject *)__pyx_v_field_names)); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1030; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = (__pyx_t_6 == 2);
+  if (__pyx_t_7) {
+
+    /* "h5py/h5t.pyx":1031
+ *         # 1. Check if it should be converted to a complex number
+ *         if len(field_names) == 2                                and \
+ *             tuple(field_names) == (cfg._r_name, cfg._i_name)    and \             # <<<<<<<<<<<<<<
+ *             field_types[0] == field_types[1]                    and \
+ *             field_types[0].kind == 'f':
+ */
+    __pyx_t_4 = ((PyObject *)PyList_AsTuple(__pyx_v_field_names)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(((PyObject *)__pyx_t_4));
+    __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__cfg); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_1 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s___r_name); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__cfg); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_8 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s___i_name); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_8);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
+    __Pyx_GIVEREF(__pyx_t_1);
+    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_8);
+    __Pyx_GIVEREF(__pyx_t_8);
+    __pyx_t_1 = 0;
+    __pyx_t_8 = 0;
+    __pyx_t_8 = PyObject_RichCompare(((PyObject *)__pyx_t_4), ((PyObject *)__pyx_t_2), Py_EQ); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
+    __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
+    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+    if (__pyx_t_9) {
+
+      /* "h5py/h5t.pyx":1032
+ *         if len(field_names) == 2                                and \
+ *             tuple(field_names) == (cfg._r_name, cfg._i_name)    and \
+ *             field_types[0] == field_types[1]                    and \             # <<<<<<<<<<<<<<
+ *             field_types[0].kind == 'f':
+ * 
+ */
+      __pyx_t_8 = __Pyx_GetItemInt_List(((PyObject *)__pyx_v_field_types), 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_8) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1032; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_8);
+      __pyx_t_2 = __Pyx_GetItemInt_List(((PyObject *)__pyx_v_field_types), 1, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1032; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_2);
+      __pyx_t_4 = PyObject_RichCompare(__pyx_t_8, __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1032; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+      __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_10 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1032; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      if (__pyx_t_10) {
+
+        /* "h5py/h5t.pyx":1033
+ *             tuple(field_names) == (cfg._r_name, cfg._i_name)    and \
+ *             field_types[0] == field_types[1]                    and \
+ *             field_types[0].kind == 'f':             # <<<<<<<<<<<<<<
+ * 
+ *             bstring = field_types[0].str
+ */
+        __pyx_t_4 = __Pyx_GetItemInt_List(((PyObject *)__pyx_v_field_types), 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1033; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_4);
+        __pyx_t_2 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s__kind); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1033; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_2);
+        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __pyx_t_4 = PyObject_RichCompare(__pyx_t_2, ((PyObject *)__pyx_n_s__f), Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1033; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1033; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __pyx_t_12 = __pyx_t_11;
+      } else {
+        __pyx_t_12 = __pyx_t_10;
+      }
+      __pyx_t_10 = __pyx_t_12;
+    } else {
+      __pyx_t_10 = __pyx_t_9;
+    }
+    __pyx_t_9 = __pyx_t_10;
+  } else {
+    __pyx_t_9 = __pyx_t_7;
+  }
+  if (__pyx_t_9) {
+
+    /* "h5py/h5t.pyx":1035
+ *             field_types[0].kind == 'f':
+ * 
+ *             bstring = field_types[0].str             # <<<<<<<<<<<<<<
+ *             blen = int(bstring[2:])
+ *             nstring = bstring[0] + "c" + str(2*blen)
+ */
+    __pyx_t_4 = __Pyx_GetItemInt_List(((PyObject *)__pyx_v_field_types), 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1035; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_2 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s__str); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1035; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_v_bstring = __pyx_t_2;
+    __pyx_t_2 = 0;
+
+    /* "h5py/h5t.pyx":1036
+ * 
+ *             bstring = field_types[0].str
+ *             blen = int(bstring[2:])             # <<<<<<<<<<<<<<
+ *             nstring = bstring[0] + "c" + str(2*blen)
+ *             typeobj = dtype(nstring)
+ */
+    __pyx_t_2 = __Pyx_PySequence_GetSlice(__pyx_v_bstring, 2, PY_SSIZE_T_MAX); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1036; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1036; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2);
+    __Pyx_GIVEREF(__pyx_t_2);
+    __pyx_t_2 = 0;
+    __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)(&PyInt_Type))), ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1036; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
+    __pyx_v_blen = __pyx_t_2;
+    __pyx_t_2 = 0;
+
+    /* "h5py/h5t.pyx":1037
+ *             bstring = field_types[0].str
+ *             blen = int(bstring[2:])
+ *             nstring = bstring[0] + "c" + str(2*blen)             # <<<<<<<<<<<<<<
+ *             typeobj = dtype(nstring)
+ * 
+ */
+    __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_bstring, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1037; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_4 = PyNumber_Add(__pyx_t_2, ((PyObject *)__pyx_n_s__c)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1037; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __pyx_t_2 = PyNumber_Multiply(__pyx_int_2, __pyx_v_blen); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1037; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1037; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_8);
+    PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_2);
+    __Pyx_GIVEREF(__pyx_t_2);
+    __pyx_t_2 = 0;
+    __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), ((PyObject *)__pyx_t_8), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1037; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0;
+    __pyx_t_8 = PyNumber_Add(__pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1037; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_8);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __pyx_v_nstring = __pyx_t_8;
+    __pyx_t_8 = 0;
+
+    /* "h5py/h5t.pyx":1038
+ *             blen = int(bstring[2:])
+ *             nstring = bstring[0] + "c" + str(2*blen)
+ *             typeobj = dtype(nstring)             # <<<<<<<<<<<<<<
+ * 
+ *         # 2. Otherwise, read all fields of the compound type, in HDF5 order.
+ */
+    __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1038; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_8);
+    __Pyx_INCREF(__pyx_v_nstring);
+    PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_nstring);
+    __Pyx_GIVEREF(__pyx_v_nstring);
+    __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4h5py_5numpy_dtype)), ((PyObject *)__pyx_t_8), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1038; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0;
+    __pyx_v_typeobj = ((PyArray_Descr *)__pyx_t_2);
+    __pyx_t_2 = 0;
+    goto __pyx_L5;
+  }
+  /*else*/ {
+
+    /* "h5py/h5t.pyx":1042
+ *         # 2. Otherwise, read all fields of the compound type, in HDF5 order.
+ *         else:
+ *             if sys.version[0] == '3':             # <<<<<<<<<<<<<<
+ *                 field_names = [x.decode('utf8') for x in field_names]
+ *             typeobj = dtype(list(zip(field_names, field_types)))
+ */
+    __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__sys); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1042; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_8 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__version); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1042; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_8);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_8, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1042; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+    __pyx_t_8 = PyObject_RichCompare(__pyx_t_2, ((PyObject *)__pyx_kp_s__3), Py_EQ); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1042; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1042; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+    if (__pyx_t_9) {
+
+      /* "h5py/h5t.pyx":1043
+ *         else:
+ *             if sys.version[0] == '3':
+ *                 field_names = [x.decode('utf8') for x in field_names]             # <<<<<<<<<<<<<<
+ *             typeobj = dtype(list(zip(field_names, field_types)))
+ * 
+ */
+      __pyx_t_8 = PyList_New(0); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_8);
+      __pyx_t_2 = ((PyObject *)__pyx_v_field_names); __Pyx_INCREF(__pyx_t_2); __pyx_t_6 = 0;
+      for (;;) {
+        if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_2)) break;
+        #if CYTHON_COMPILING_IN_CPYTHON
+        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_6); __Pyx_INCREF(__pyx_t_4); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        #else
+        __pyx_t_4 = PySequence_ITEM(__pyx_t_2, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        #endif
+        __Pyx_XDECREF(__pyx_v_x);
+        __pyx_v_x = __pyx_t_4;
+        __pyx_t_4 = 0;
+        __pyx_t_4 = PyObject_GetAttr(__pyx_v_x, __pyx_n_s__decode); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_4);
+        __pyx_t_1 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_k_tuple_18), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_1);
+        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+        if (unlikely(__Pyx_PyList_Append(__pyx_t_8, (PyObject*)__pyx_t_1))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+      }
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+      __pyx_t_2 = ((PyObject *)__pyx_t_8);
+      __Pyx_INCREF(__pyx_t_2);
+      __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0;
+      __Pyx_DECREF(((PyObject *)__pyx_v_field_names));
+      __pyx_v_field_names = ((PyObject*)__pyx_t_2);
+      __pyx_t_2 = 0;
+      goto __pyx_L6;
+    }
+    __pyx_L6:;
+
+    /* "h5py/h5t.pyx":1044
+ *             if sys.version[0] == '3':
+ *                 field_names = [x.decode('utf8') for x in field_names]
+ *             typeobj = dtype(list(zip(field_names, field_types)))             # <<<<<<<<<<<<<<
+ * 
+ *         return typeobj
+ */
+    __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1044; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_INCREF(((PyObject *)__pyx_v_field_names));
+    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_v_field_names));
+    __Pyx_GIVEREF(((PyObject *)__pyx_v_field_names));
+    __Pyx_INCREF(((PyObject *)__pyx_v_field_types));
+    PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_field_types));
+    __Pyx_GIVEREF(((PyObject *)__pyx_v_field_types));
+    __pyx_t_8 = PyObject_Call(__pyx_builtin_zip, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1044; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_8);
+    __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
+    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1044; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_8);
+    __Pyx_GIVEREF(__pyx_t_8);
+    __pyx_t_8 = 0;
+    __pyx_t_8 = PyObject_Call(((PyObject *)((PyObject*)(&PyList_Type))), ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1044; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_8);
+    __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
+    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1044; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_8);
+    __Pyx_GIVEREF(__pyx_t_8);
+    __pyx_t_8 = 0;
+    __pyx_t_8 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4h5py_5numpy_dtype)), ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1044; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_8);
+    __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
+    __pyx_v_typeobj = ((PyArray_Descr *)__pyx_t_8);
+    __pyx_t_8 = 0;
+  }
+  __pyx_L5:;
+
+  /* "h5py/h5t.pyx":1046
+ *             typeobj = dtype(list(zip(field_names, field_types)))
+ * 
+ *         return typeobj             # <<<<<<<<<<<<<<
+ * 
+ * cdef class TypeEnumID(TypeCompositeID):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(((PyObject *)__pyx_v_typeobj));
+  __pyx_r = ((PyObject *)__pyx_v_typeobj);
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_8);
+  __Pyx_AddTraceback("h5py.h5t.TypeCompoundID.py_dtype", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_tmp_type);
+  __Pyx_XDECREF(__pyx_v_field_names);
+  __Pyx_XDECREF(__pyx_v_field_types);
+  __Pyx_XDECREF(__pyx_v_name);
+  __Pyx_XDECREF(__pyx_v_bstring);
+  __Pyx_XDECREF(__pyx_v_blen);
+  __Pyx_XDECREF(__pyx_v_nstring);
+  __Pyx_XDECREF((PyObject *)__pyx_v_typeobj);
+  __Pyx_XDECREF(__pyx_v_x);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":1054
+ *     """
+ * 
+ *     cdef int enum_convert(self, long long *buf, int reverse) except -1:             # <<<<<<<<<<<<<<
+ *         # Convert the long long value in "buf" to the native representation
+ *         # of this (enumerated) type.  Conversion performed in-place.
+ */
+
+static int __pyx_f_4h5py_3h5t_10TypeEnumID_enum_convert(struct __pyx_obj_4h5py_3h5t_TypeEnumID *__pyx_v_self, PY_LONG_LONG *__pyx_v_buf, int __pyx_v_reverse) {
+  hid_t __pyx_v_basetype;
+  enum H5T_class_t __pyx_v_class_code;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  enum H5T_class_t __pyx_t_1;
+  int __pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  hid_t __pyx_t_5;
+  herr_t __pyx_t_6;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("enum_convert", 0);
+
+  /* "h5py/h5t.pyx":1062
+ *         cdef H5T_class_t class_code
+ * 
+ *         class_code = H5Tget_class(self.id)             # <<<<<<<<<<<<<<
+ *         if class_code != H5T_ENUM:
+ *             raise ValueError("This type (class %d) is not of class ENUM" % class_code)
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Tget_class(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1062; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v_class_code = __pyx_t_1;
+
+  /* "h5py/h5t.pyx":1063
+ * 
+ *         class_code = H5Tget_class(self.id)
+ *         if class_code != H5T_ENUM:             # <<<<<<<<<<<<<<
+ *             raise ValueError("This type (class %d) is not of class ENUM" % class_code)
+ * 
+ */
+  __pyx_t_2 = (__pyx_v_class_code != H5T_ENUM);
+  if (__pyx_t_2) {
+
+    /* "h5py/h5t.pyx":1064
+ *         class_code = H5Tget_class(self.id)
+ *         if class_code != H5T_ENUM:
+ *             raise ValueError("This type (class %d) is not of class ENUM" % class_code)             # <<<<<<<<<<<<<<
+ * 
+ *         basetype = H5Tget_super(self.id)
+ */
+    __pyx_t_3 = PyInt_FromLong(__pyx_v_class_code); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1064; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_19), __pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1064; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(((PyObject *)__pyx_t_4));
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1064; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_t_4));
+    __Pyx_GIVEREF(((PyObject *)__pyx_t_4));
+    __pyx_t_4 = 0;
+    __pyx_t_4 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1064; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
+    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1064; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  /* "h5py/h5t.pyx":1066
+ *             raise ValueError("This type (class %d) is not of class ENUM" % class_code)
+ * 
+ *         basetype = H5Tget_super(self.id)             # <<<<<<<<<<<<<<
+ *         assert basetype > 0
+ * 
+ */
+  __pyx_t_5 = __pyx_f_4h5py_4defs_H5Tget_super(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1066; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v_basetype = __pyx_t_5;
+
+  /* "h5py/h5t.pyx":1067
+ * 
+ *         basetype = H5Tget_super(self.id)
+ *         assert basetype > 0             # <<<<<<<<<<<<<<
+ * 
+ *         try:
+ */
+  #ifndef CYTHON_WITHOUT_ASSERTIONS
+  if (unlikely(!(__pyx_v_basetype > 0))) {
+    PyErr_SetNone(PyExc_AssertionError);
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1067; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  }
+  #endif
+
+  /* "h5py/h5t.pyx":1069
+ *         assert basetype > 0
+ * 
+ *         try:             # <<<<<<<<<<<<<<
+ *             if not reverse:
+ *                 H5Tconvert(H5T_NATIVE_LLONG, basetype, 1, buf, NULL, H5P_DEFAULT)
+ */
+  /*try:*/ {
+
+    /* "h5py/h5t.pyx":1070
+ * 
+ *         try:
+ *             if not reverse:             # <<<<<<<<<<<<<<
+ *                 H5Tconvert(H5T_NATIVE_LLONG, basetype, 1, buf, NULL, H5P_DEFAULT)
+ *             else:
+ */
+    __pyx_t_2 = (!__pyx_v_reverse);
+    if (__pyx_t_2) {
+
+      /* "h5py/h5t.pyx":1071
+ *         try:
+ *             if not reverse:
+ *                 H5Tconvert(H5T_NATIVE_LLONG, basetype, 1, buf, NULL, H5P_DEFAULT)             # <<<<<<<<<<<<<<
+ *             else:
+ *                 H5Tconvert(basetype, H5T_NATIVE_LLONG, 1, buf, NULL, H5P_DEFAULT)
+ */
+      __pyx_t_6 = __pyx_f_4h5py_4defs_H5Tconvert(H5T_NATIVE_LLONG, __pyx_v_basetype, 1, __pyx_v_buf, NULL, H5P_DEFAULT); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1071; __pyx_clineno = __LINE__; goto __pyx_L5;}
+      goto __pyx_L7;
+    }
+    /*else*/ {
+
+      /* "h5py/h5t.pyx":1073
+ *                 H5Tconvert(H5T_NATIVE_LLONG, basetype, 1, buf, NULL, H5P_DEFAULT)
+ *             else:
+ *                 H5Tconvert(basetype, H5T_NATIVE_LLONG, 1, buf, NULL, H5P_DEFAULT)             # <<<<<<<<<<<<<<
+ *         finally:
+ *             H5Tclose(basetype)
+ */
+      __pyx_t_6 = __pyx_f_4h5py_4defs_H5Tconvert(__pyx_v_basetype, H5T_NATIVE_LLONG, 1, __pyx_v_buf, NULL, H5P_DEFAULT); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1073; __pyx_clineno = __LINE__; goto __pyx_L5;}
+    }
+    __pyx_L7:;
+  }
+
+  /* "h5py/h5t.pyx":1075
+ *                 H5Tconvert(basetype, H5T_NATIVE_LLONG, 1, buf, NULL, H5P_DEFAULT)
+ *         finally:
+ *             H5Tclose(basetype)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  /*finally:*/ {
+    int __pyx_why;
+    PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb;
+    int __pyx_exc_lineno;
+    __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
+    __pyx_why = 0; goto __pyx_L6;
+    __pyx_L5: {
+      __pyx_why = 4;
+      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb);
+      __pyx_exc_lineno = __pyx_lineno;
+      goto __pyx_L6;
+    }
+    __pyx_L6:;
+    __pyx_t_6 = __pyx_f_4h5py_4defs_H5Tclose(__pyx_v_basetype); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1075; __pyx_clineno = __LINE__; goto __pyx_L8_error;}
+    goto __pyx_L9;
+    __pyx_L8_error:;
+    if (__pyx_why == 4) {
+      Py_XDECREF(__pyx_exc_type);
+      Py_XDECREF(__pyx_exc_value);
+      Py_XDECREF(__pyx_exc_tb);
+    }
+    goto __pyx_L1_error;
+    __pyx_L9:;
+    switch (__pyx_why) {
+      case 4: {
+        __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb);
+        __pyx_lineno = __pyx_exc_lineno;
+        __pyx_exc_type = 0;
+        __pyx_exc_value = 0;
+        __pyx_exc_tb = 0;
+        goto __pyx_L1_error;
+      }
+    }
+  }
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("h5py.h5t.TypeEnumID.enum_convert", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5t_10TypeEnumID_1enum_insert(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_4h5py_3h5t_10TypeEnumID_enum_insert[] = "(STRING name, INT/LONG value)\n\n        Define a new member of an enumerated type.  The value will be\n        automatically converted to the base type defined for this enum.  If\n        the conversion results in overflow, the value will be silently \n        clipped.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5t_10TypeEnumID_1enum_insert(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  char *__pyx_v_name;
+  PY_LONG_LONG __pyx_v_value;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("enum_insert (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__name,&__pyx_n_s__value,0};
+    PyObject* values[2] = {0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__name)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__value)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("enum_insert", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1078; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "enum_insert") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1078; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+    }
+    __pyx_v_name = PyBytes_AsString(values[0]); if (unlikely((!__pyx_v_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1078; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_value = __Pyx_PyInt_AsLongLong(values[1]); if (unlikely((__pyx_v_value == (PY_LONG_LONG)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1078; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("enum_insert", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1078; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5t.TypeEnumID.enum_insert", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_3h5t_10TypeEnumID_enum_insert(((struct __pyx_obj_4h5py_3h5t_TypeEnumID *)__pyx_v_self), __pyx_v_name, __pyx_v_value);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":1078
+ * 
+ * 
+ *     def enum_insert(self, char* name, long long value):             # <<<<<<<<<<<<<<
+ *         """(STRING name, INT/LONG value)
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5t_10TypeEnumID_enum_insert(struct __pyx_obj_4h5py_3h5t_TypeEnumID *__pyx_v_self, char *__pyx_v_name, PY_LONG_LONG __pyx_v_value) {
+  PY_LONG_LONG __pyx_v_buf;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  herr_t __pyx_t_2;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("enum_insert", 0);
+
+  /* "h5py/h5t.pyx":1088
+ *         cdef long long buf
+ * 
+ *         buf = value             # <<<<<<<<<<<<<<
+ *         self.enum_convert(&buf, 0)
+ *         H5Tenum_insert(self.id, name, &buf)
+ */
+  __pyx_v_buf = __pyx_v_value;
+
+  /* "h5py/h5t.pyx":1089
+ * 
+ *         buf = value
+ *         self.enum_convert(&buf, 0)             # <<<<<<<<<<<<<<
+ *         H5Tenum_insert(self.id, name, &buf)
+ * 
+ */
+  __pyx_t_1 = ((struct __pyx_vtabstruct_4h5py_3h5t_TypeEnumID *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->enum_convert(__pyx_v_self, (&__pyx_v_buf), 0); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1089; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5t.pyx":1090
+ *         buf = value
+ *         self.enum_convert(&buf, 0)
+ *         H5Tenum_insert(self.id, name, &buf)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_2 = __pyx_f_4h5py_4defs_H5Tenum_insert(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.id, __pyx_v_name, (&__pyx_v_buf)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1090; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py.h5t.TypeEnumID.enum_insert", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5t_10TypeEnumID_3enum_nameof(PyObject *__pyx_v_self, PyObject *__pyx_arg_value); /*proto*/
+static char __pyx_doc_4h5py_3h5t_10TypeEnumID_2enum_nameof[] = "(LONG value) => STRING name\n\n        Determine the name associated with the given value.  Due to a\n        limitation of the HDF5 library, this can only retrieve names up to\n        1023 characters in length.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5t_10TypeEnumID_3enum_nameof(PyObject *__pyx_v_self, PyObject *__pyx_arg_value) {
+  PY_LONG_LONG __pyx_v_value;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("enum_nameof (wrapper)", 0);
+  assert(__pyx_arg_value); {
+    __pyx_v_value = __Pyx_PyInt_AsLongLong(__pyx_arg_value); if (unlikely((__pyx_v_value == (PY_LONG_LONG)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1093; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5t.TypeEnumID.enum_nameof", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_3h5t_10TypeEnumID_2enum_nameof(((struct __pyx_obj_4h5py_3h5t_TypeEnumID *)__pyx_v_self), ((PY_LONG_LONG)__pyx_v_value));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":1093
+ * 
+ * 
+ *     def enum_nameof(self, long long value):             # <<<<<<<<<<<<<<
+ *         """(LONG value) => STRING name
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5t_10TypeEnumID_2enum_nameof(struct __pyx_obj_4h5py_3h5t_TypeEnumID *__pyx_v_self, PY_LONG_LONG __pyx_v_value) {
+  herr_t __pyx_v_retval;
+  char __pyx_v_name[1024];
+  PY_LONG_LONG __pyx_v_buf;
+  PyObject *__pyx_v_retstring = NULL;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  herr_t __pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("enum_nameof", 0);
+
+  /* "h5py/h5t.pyx":1104
+ *         cdef long long buf
+ * 
+ *         buf = value             # <<<<<<<<<<<<<<
+ *         self.enum_convert(&buf, 0)
+ *         retval = H5Tenum_nameof(self.id, &buf, name, 1024)
+ */
+  __pyx_v_buf = __pyx_v_value;
+
+  /* "h5py/h5t.pyx":1105
+ * 
+ *         buf = value
+ *         self.enum_convert(&buf, 0)             # <<<<<<<<<<<<<<
+ *         retval = H5Tenum_nameof(self.id, &buf, name, 1024)
+ *         assert retval >= 0
+ */
+  __pyx_t_1 = ((struct __pyx_vtabstruct_4h5py_3h5t_TypeEnumID *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->enum_convert(__pyx_v_self, (&__pyx_v_buf), 0); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5t.pyx":1106
+ *         buf = value
+ *         self.enum_convert(&buf, 0)
+ *         retval = H5Tenum_nameof(self.id, &buf, name, 1024)             # <<<<<<<<<<<<<<
+ *         assert retval >= 0
+ *         retstring = name
+ */
+  __pyx_t_2 = __pyx_f_4h5py_4defs_H5Tenum_nameof(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.id, (&__pyx_v_buf), __pyx_v_name, 1024); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v_retval = __pyx_t_2;
+
+  /* "h5py/h5t.pyx":1107
+ *         self.enum_convert(&buf, 0)
+ *         retval = H5Tenum_nameof(self.id, &buf, name, 1024)
+ *         assert retval >= 0             # <<<<<<<<<<<<<<
+ *         retstring = name
+ *         return retstring
+ */
+  #ifndef CYTHON_WITHOUT_ASSERTIONS
+  if (unlikely(!(__pyx_v_retval >= 0))) {
+    PyErr_SetNone(PyExc_AssertionError);
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  }
+  #endif
+
+  /* "h5py/h5t.pyx":1108
+ *         retval = H5Tenum_nameof(self.id, &buf, name, 1024)
+ *         assert retval >= 0
+ *         retstring = name             # <<<<<<<<<<<<<<
+ *         return retstring
+ * 
+ */
+  __pyx_t_3 = PyBytes_FromString(__pyx_v_name); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1108; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(((PyObject *)__pyx_t_3));
+  __pyx_v_retstring = ((PyObject *)__pyx_t_3);
+  __pyx_t_3 = 0;
+
+  /* "h5py/h5t.pyx":1109
+ *         assert retval >= 0
+ *         retstring = name
+ *         return retstring             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_retstring);
+  __pyx_r = __pyx_v_retstring;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("h5py.h5t.TypeEnumID.enum_nameof", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_retstring);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5t_10TypeEnumID_5enum_valueof(PyObject *__pyx_v_self, PyObject *__pyx_arg_name); /*proto*/
+static char __pyx_doc_4h5py_3h5t_10TypeEnumID_4enum_valueof[] = "(STRING name) => LONG value\n\n        Get the value associated with an enum name.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5t_10TypeEnumID_5enum_valueof(PyObject *__pyx_v_self, PyObject *__pyx_arg_name) {
+  char *__pyx_v_name;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("enum_valueof (wrapper)", 0);
+  assert(__pyx_arg_name); {
+    __pyx_v_name = PyBytes_AsString(__pyx_arg_name); if (unlikely((!__pyx_v_name) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1112; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5t.TypeEnumID.enum_valueof", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_3h5t_10TypeEnumID_4enum_valueof(((struct __pyx_obj_4h5py_3h5t_TypeEnumID *)__pyx_v_self), ((char *)__pyx_v_name));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":1112
+ * 
+ * 
+ *     def enum_valueof(self, char* name):             # <<<<<<<<<<<<<<
+ *         """(STRING name) => LONG value
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5t_10TypeEnumID_4enum_valueof(struct __pyx_obj_4h5py_3h5t_TypeEnumID *__pyx_v_self, char *__pyx_v_name) {
+  PY_LONG_LONG __pyx_v_buf;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  int __pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("enum_valueof", 0);
+
+  /* "h5py/h5t.pyx":1119
+ *         cdef long long buf
+ * 
+ *         H5Tenum_valueof(self.id, name, &buf)             # <<<<<<<<<<<<<<
+ *         self.enum_convert(&buf, 1)
+ *         return buf
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Tenum_valueof(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.id, __pyx_v_name, (&__pyx_v_buf)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5t.pyx":1120
+ * 
+ *         H5Tenum_valueof(self.id, name, &buf)
+ *         self.enum_convert(&buf, 1)             # <<<<<<<<<<<<<<
+ *         return buf
+ * 
+ */
+  __pyx_t_2 = ((struct __pyx_vtabstruct_4h5py_3h5t_TypeEnumID *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->enum_convert(__pyx_v_self, (&__pyx_v_buf), 1); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1120; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5t.pyx":1121
+ *         H5Tenum_valueof(self.id, name, &buf)
+ *         self.enum_convert(&buf, 1)
+ *         return buf             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_3 = PyLong_FromLongLong(__pyx_v_buf); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1121; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_r = __pyx_t_3;
+  __pyx_t_3 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("h5py.h5t.TypeEnumID.enum_valueof", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5t_10TypeEnumID_7get_member_value(PyObject *__pyx_v_self, PyObject *__pyx_arg_idx); /*proto*/
+static char __pyx_doc_4h5py_3h5t_10TypeEnumID_6get_member_value[] = "(UINT index) => LONG value\n\n        Determine the value for the member at the given zero-based index.\n        ";
+static PyObject *__pyx_pw_4h5py_3h5t_10TypeEnumID_7get_member_value(PyObject *__pyx_v_self, PyObject *__pyx_arg_idx) {
+  int __pyx_v_idx;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_member_value (wrapper)", 0);
+  assert(__pyx_arg_idx); {
+    __pyx_v_idx = __Pyx_PyInt_AsInt(__pyx_arg_idx); if (unlikely((__pyx_v_idx == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1124; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5t.TypeEnumID.get_member_value", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_3h5t_10TypeEnumID_6get_member_value(((struct __pyx_obj_4h5py_3h5t_TypeEnumID *)__pyx_v_self), ((int)__pyx_v_idx));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":1124
+ * 
+ * 
+ *     def get_member_value(self, int idx):             # <<<<<<<<<<<<<<
+ *         """(UINT index) => LONG value
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5t_10TypeEnumID_6get_member_value(struct __pyx_obj_4h5py_3h5t_TypeEnumID *__pyx_v_self, int __pyx_v_idx) {
+  CYTHON_UNUSED hid_t __pyx_v_ptype;
+  PY_LONG_LONG __pyx_v_val;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  herr_t __pyx_t_3;
+  int __pyx_t_4;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_member_value", 0);
+
+  /* "h5py/h5t.pyx":1132
+ *         cdef hid_t ptype
+ *         cdef long long val
+ *         ptype = 0             # <<<<<<<<<<<<<<
+ * 
+ *         if idx < 0:
+ */
+  __pyx_v_ptype = 0;
+
+  /* "h5py/h5t.pyx":1134
+ *         ptype = 0
+ * 
+ *         if idx < 0:             # <<<<<<<<<<<<<<
+ *             raise ValueError("Index must be non-negative.")
+ * 
+ */
+  __pyx_t_1 = (__pyx_v_idx < 0);
+  if (__pyx_t_1) {
+
+    /* "h5py/h5t.pyx":1135
+ * 
+ *         if idx < 0:
+ *             raise ValueError("Index must be non-negative.")             # <<<<<<<<<<<<<<
+ * 
+ *         H5Tget_member_value(self.id, idx, &val)
+ */
+    __pyx_t_2 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_21), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  /* "h5py/h5t.pyx":1137
+ *             raise ValueError("Index must be non-negative.")
+ * 
+ *         H5Tget_member_value(self.id, idx, &val)             # <<<<<<<<<<<<<<
+ *         self.enum_convert(&val, 1)
+ *         return val
+ */
+  __pyx_t_3 = __pyx_f_4h5py_4defs_H5Tget_member_value(__pyx_v_self->__pyx_base.__pyx_base.__pyx_base.id, __pyx_v_idx, (&__pyx_v_val)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5t.pyx":1138
+ * 
+ *         H5Tget_member_value(self.id, idx, &val)
+ *         self.enum_convert(&val, 1)             # <<<<<<<<<<<<<<
+ *         return val
+ * 
+ */
+  __pyx_t_4 = ((struct __pyx_vtabstruct_4h5py_3h5t_TypeEnumID *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->enum_convert(__pyx_v_self, (&__pyx_v_val), 1); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5t.pyx":1139
+ *         H5Tget_member_value(self.id, idx, &val)
+ *         self.enum_convert(&val, 1)
+ *         return val             # <<<<<<<<<<<<<<
+ * 
+ *     cdef object py_dtype(self):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_2 = PyLong_FromLongLong(__pyx_v_val); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1139; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5t.TypeEnumID.get_member_value", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":1141
+ *         return val
+ * 
+ *     cdef object py_dtype(self):             # <<<<<<<<<<<<<<
+ *         # Translation function for enum types
+ * 
+ */
+
+static PyObject *__pyx_f_4h5py_3h5t_10TypeEnumID_py_dtype(struct __pyx_obj_4h5py_3h5t_TypeEnumID *__pyx_v_self) {
+  struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_v_basetype = 0;
+  PyObject *__pyx_v_nmembers = NULL;
+  PyObject *__pyx_v_members = NULL;
+  PyObject *__pyx_v_idx = NULL;
+  PyObject *__pyx_v_name = NULL;
+  PyObject *__pyx_v_val = NULL;
+  PyObject *__pyx_v_ref = NULL;
+  PyObject *__pyx_v_members_conv = NULL;
+  PyObject *__pyx_v_uname = NULL;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  Py_ssize_t __pyx_t_3;
+  PyObject *(*__pyx_t_4)(PyObject *);
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  int __pyx_t_7;
+  Py_ssize_t __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_t_10;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  PyObject *__pyx_t_13 = NULL;
+  PyObject *__pyx_t_14 = NULL;
+  PyObject *__pyx_t_15 = NULL;
+  PyObject *__pyx_t_16 = NULL;
+  PyObject *__pyx_t_17 = NULL;
+  PyObject *__pyx_t_18 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("py_dtype", 0);
+
+  /* "h5py/h5t.pyx":1144
+ *         # Translation function for enum types
+ * 
+ *         cdef TypeID basetype = self.get_super()             # <<<<<<<<<<<<<<
+ * 
+ *         nmembers = self.get_nmembers()
+ */
+  __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__get_super); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_4h5py_3h5t_TypeID))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v_basetype = ((struct __pyx_obj_4h5py_3h5t_TypeID *)__pyx_t_2);
+  __pyx_t_2 = 0;
+
+  /* "h5py/h5t.pyx":1146
+ *         cdef TypeID basetype = self.get_super()
+ * 
+ *         nmembers = self.get_nmembers()             # <<<<<<<<<<<<<<
+ *         members = {}
+ * 
+ */
+  __pyx_t_2 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__get_nmembers); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_v_nmembers = __pyx_t_1;
+  __pyx_t_1 = 0;
+
+  /* "h5py/h5t.pyx":1147
+ * 
+ *         nmembers = self.get_nmembers()
+ *         members = {}             # <<<<<<<<<<<<<<
+ * 
+ *         for idx in xrange(nmembers):
+ */
+  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1147; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
+  __pyx_v_members = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "h5py/h5t.pyx":1149
+ *         members = {}
+ * 
+ *         for idx in xrange(nmembers):             # <<<<<<<<<<<<<<
+ *             name = self.get_member_name(idx)
+ *             val = self.get_member_value(idx)
+ */
+  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(__pyx_v_nmembers);
+  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_nmembers);
+  __Pyx_GIVEREF(__pyx_v_nmembers);
+  __pyx_t_2 = PyObject_Call(__pyx_builtin_xrange, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
+  if (PyList_CheckExact(__pyx_t_2) || PyTuple_CheckExact(__pyx_t_2)) {
+    __pyx_t_1 = __pyx_t_2; __Pyx_INCREF(__pyx_t_1); __pyx_t_3 = 0;
+    __pyx_t_4 = NULL;
+  } else {
+    __pyx_t_3 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_4 = Py_TYPE(__pyx_t_1)->tp_iternext;
+  }
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  for (;;) {
+    if (!__pyx_t_4 && PyList_CheckExact(__pyx_t_1)) {
+      if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_1)) break;
+      #if CYTHON_COMPILING_IN_CPYTHON
+      __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_2); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      #else
+      __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      #endif
+    } else if (!__pyx_t_4 && PyTuple_CheckExact(__pyx_t_1)) {
+      if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
+      #if CYTHON_COMPILING_IN_CPYTHON
+      __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_2); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      #else
+      __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      #endif
+    } else {
+      __pyx_t_2 = __pyx_t_4(__pyx_t_1);
+      if (unlikely(!__pyx_t_2)) {
+        if (PyErr_Occurred()) {
+          if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
+          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        }
+        break;
+      }
+      __Pyx_GOTREF(__pyx_t_2);
+    }
+    __Pyx_XDECREF(__pyx_v_idx);
+    __pyx_v_idx = __pyx_t_2;
+    __pyx_t_2 = 0;
+
+    /* "h5py/h5t.pyx":1150
+ * 
+ *         for idx in xrange(nmembers):
+ *             name = self.get_member_name(idx)             # <<<<<<<<<<<<<<
+ *             val = self.get_member_value(idx)
+ *             members[name] = val
+ */
+    __pyx_t_2 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__get_member_name); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_INCREF(__pyx_v_idx);
+    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_idx);
+    __Pyx_GIVEREF(__pyx_v_idx);
+    __pyx_t_6 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_6);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
+    __Pyx_XDECREF(__pyx_v_name);
+    __pyx_v_name = __pyx_t_6;
+    __pyx_t_6 = 0;
+
+    /* "h5py/h5t.pyx":1151
+ *         for idx in xrange(nmembers):
+ *             name = self.get_member_name(idx)
+ *             val = self.get_member_value(idx)             # <<<<<<<<<<<<<<
+ *             members[name] = val
+ * 
+ */
+    __pyx_t_6 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s__get_member_value); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_6);
+    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_INCREF(__pyx_v_idx);
+    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_idx);
+    __Pyx_GIVEREF(__pyx_v_idx);
+    __pyx_t_2 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+    __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
+    __Pyx_XDECREF(__pyx_v_val);
+    __pyx_v_val = __pyx_t_2;
+    __pyx_t_2 = 0;
+
+    /* "h5py/h5t.pyx":1152
+ *             name = self.get_member_name(idx)
+ *             val = self.get_member_value(idx)
+ *             members[name] = val             # <<<<<<<<<<<<<<
+ * 
+ *         ref = {cfg._f_name: 0, cfg._t_name: 1}
+ */
+    if (PyDict_SetItem(((PyObject *)__pyx_v_members), __pyx_v_name, __pyx_v_val) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1152; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  }
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "h5py/h5t.pyx":1154
+ *             members[name] = val
+ * 
+ *         ref = {cfg._f_name: 0, cfg._t_name: 1}             # <<<<<<<<<<<<<<
+ * 
+ *         # Boolean types have priority over standard enums
+ */
+  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1154; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
+  __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__cfg); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1154; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_5 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s___f_name); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1154; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  if (PyDict_SetItem(__pyx_t_1, __pyx_t_5, __pyx_int_0) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1154; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__cfg); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1154; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_2 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s___t_name); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1154; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_int_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1154; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_v_ref = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "h5py/h5t.pyx":1157
+ * 
+ *         # Boolean types have priority over standard enums
+ *         if members == ref:             # <<<<<<<<<<<<<<
+ *             return dtype('bool')
+ * 
+ */
+  __pyx_t_1 = PyObject_RichCompare(((PyObject *)__pyx_v_members), ((PyObject *)__pyx_v_ref), Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (__pyx_t_7) {
+
+    /* "h5py/h5t.pyx":1158
+ *         # Boolean types have priority over standard enums
+ *         if members == ref:
+ *             return dtype('bool')             # <<<<<<<<<<<<<<
+ * 
+ *         # Convert strings to appropriate representation
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4h5py_5numpy_dtype)), ((PyObject *)__pyx_k_tuple_22), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_r = __pyx_t_1;
+    __pyx_t_1 = 0;
+    goto __pyx_L0;
+    goto __pyx_L5;
+  }
+  __pyx_L5:;
+
+  /* "h5py/h5t.pyx":1161
+ * 
+ *         # Convert strings to appropriate representation
+ *         members_conv = {}             # <<<<<<<<<<<<<<
+ *         for name, val in members.iteritems():
+ *             try:    # ASCII; Py2 -> preserve bytes, Py3 -> make unicode
+ */
+  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
+  __pyx_v_members_conv = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "h5py/h5t.pyx":1162
+ *         # Convert strings to appropriate representation
+ *         members_conv = {}
+ *         for name, val in members.iteritems():             # <<<<<<<<<<<<<<
+ *             try:    # ASCII; Py2 -> preserve bytes, Py3 -> make unicode
+ *                 uname = name.decode('ascii')
+ */
+  __pyx_t_3 = 0;
+  __pyx_t_2 = __Pyx_dict_iterator(((PyObject *)__pyx_v_members), 1, ((PyObject *)__pyx_n_s__iteritems), (&__pyx_t_8), (&__pyx_t_9)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_1);
+  __pyx_t_1 = __pyx_t_2;
+  __pyx_t_2 = 0;
+  while (1) {
+    __pyx_t_10 = __Pyx_dict_iter_next(__pyx_t_1, __pyx_t_8, &__pyx_t_3, &__pyx_t_2, &__pyx_t_5, NULL, __pyx_t_9);
+    if (unlikely(__pyx_t_10 == 0)) break;
+    if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_XDECREF(__pyx_v_name);
+    __pyx_v_name = __pyx_t_2;
+    __pyx_t_2 = 0;
+    __Pyx_XDECREF(__pyx_v_val);
+    __pyx_v_val = __pyx_t_5;
+    __pyx_t_5 = 0;
+
+    /* "h5py/h5t.pyx":1163
+ *         members_conv = {}
+ *         for name, val in members.iteritems():
+ *             try:    # ASCII; Py2 -> preserve bytes, Py3 -> make unicode             # <<<<<<<<<<<<<<
+ *                 uname = name.decode('ascii')
+ *                 if PY3:
+ */
+    {
+      __Pyx_ExceptionSave(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13);
+      __Pyx_XGOTREF(__pyx_t_11);
+      __Pyx_XGOTREF(__pyx_t_12);
+      __Pyx_XGOTREF(__pyx_t_13);
+      /*try:*/ {
+
+        /* "h5py/h5t.pyx":1164
+ *         for name, val in members.iteritems():
+ *             try:    # ASCII; Py2 -> preserve bytes, Py3 -> make unicode
+ *                 uname = name.decode('ascii')             # <<<<<<<<<<<<<<
+ *                 if PY3:
+ *                     name = uname
+ */
+        __pyx_t_5 = PyObject_GetAttr(__pyx_v_name, __pyx_n_s__decode); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1164; __pyx_clineno = __LINE__; goto __pyx_L8_error;}
+        __Pyx_GOTREF(__pyx_t_5);
+        __pyx_t_2 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_k_tuple_23), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1164; __pyx_clineno = __LINE__; goto __pyx_L8_error;}
+        __Pyx_GOTREF(__pyx_t_2);
+        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_v_uname);
+        __pyx_v_uname = __pyx_t_2;
+        __pyx_t_2 = 0;
+
+        /* "h5py/h5t.pyx":1165
+ *             try:    # ASCII; Py2 -> preserve bytes, Py3 -> make unicode
+ *                 uname = name.decode('ascii')
+ *                 if PY3:             # <<<<<<<<<<<<<<
+ *                     name = uname
+ *             except UnicodeDecodeError:
+ */
+        __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__PY3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1165; __pyx_clineno = __LINE__; goto __pyx_L8_error;}
+        __Pyx_GOTREF(__pyx_t_2);
+        __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1165; __pyx_clineno = __LINE__; goto __pyx_L8_error;}
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        if (__pyx_t_7) {
+
+          /* "h5py/h5t.pyx":1166
+ *                 uname = name.decode('ascii')
+ *                 if PY3:
+ *                     name = uname             # <<<<<<<<<<<<<<
+ *             except UnicodeDecodeError:
+ *                 try:    # Non-ascii; all platforms try unicode
+ */
+          __Pyx_INCREF(__pyx_v_uname);
+          __Pyx_DECREF(__pyx_v_name);
+          __pyx_v_name = __pyx_v_uname;
+          goto __pyx_L16;
+        }
+        __pyx_L16:;
+      }
+      __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
+      __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
+      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
+      goto __pyx_L15_try_end;
+      __pyx_L8_error:;
+      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+      /* "h5py/h5t.pyx":1167
+ *                 if PY3:
+ *                     name = uname
+ *             except UnicodeDecodeError:             # <<<<<<<<<<<<<<
+ *                 try:    # Non-ascii; all platforms try unicode
+ *                     name = name.decode('utf8')
+ */
+      __pyx_t_10 = PyErr_ExceptionMatches(__pyx_builtin_UnicodeDecodeError);
+      if (__pyx_t_10) {
+        __Pyx_AddTraceback("h5py.h5t.TypeEnumID.py_dtype", __pyx_clineno, __pyx_lineno, __pyx_filename);
+        if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_5, &__pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1167; __pyx_clineno = __LINE__; goto __pyx_L10_except_error;}
+        __Pyx_GOTREF(__pyx_t_2);
+        __Pyx_GOTREF(__pyx_t_5);
+        __Pyx_GOTREF(__pyx_t_6);
+
+        /* "h5py/h5t.pyx":1168
+ *                     name = uname
+ *             except UnicodeDecodeError:
+ *                 try:    # Non-ascii; all platforms try unicode             # <<<<<<<<<<<<<<
+ *                     name = name.decode('utf8')
+ *                 except UnicodeDecodeError:
+ */
+        {
+          __Pyx_ExceptionSave(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16);
+          __Pyx_XGOTREF(__pyx_t_14);
+          __Pyx_XGOTREF(__pyx_t_15);
+          __Pyx_XGOTREF(__pyx_t_16);
+          /*try:*/ {
+
+            /* "h5py/h5t.pyx":1169
+ *             except UnicodeDecodeError:
+ *                 try:    # Non-ascii; all platforms try unicode
+ *                     name = name.decode('utf8')             # <<<<<<<<<<<<<<
+ *                 except UnicodeDecodeError:
+ *                     pass    # Last resort: return byte string
+ */
+            __pyx_t_17 = PyObject_GetAttr(__pyx_v_name, __pyx_n_s__decode); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1169; __pyx_clineno = __LINE__; goto __pyx_L19_error;}
+            __Pyx_GOTREF(__pyx_t_17);
+            __pyx_t_18 = PyObject_Call(__pyx_t_17, ((PyObject *)__pyx_k_tuple_24), NULL); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1169; __pyx_clineno = __LINE__; goto __pyx_L19_error;}
+            __Pyx_GOTREF(__pyx_t_18);
+            __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
+            __Pyx_DECREF(__pyx_v_name);
+            __pyx_v_name = __pyx_t_18;
+            __pyx_t_18 = 0;
+          }
+          __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
+          __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
+          __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
+          goto __pyx_L26_try_end;
+          __pyx_L19_error:;
+          __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
+          __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0;
+
+          /* "h5py/h5t.pyx":1170
+ *                 try:    # Non-ascii; all platforms try unicode
+ *                     name = name.decode('utf8')
+ *                 except UnicodeDecodeError:             # <<<<<<<<<<<<<<
+ *                     pass    # Last resort: return byte string
+ *             members_conv[name] = val
+ */
+          __pyx_t_10 = PyErr_ExceptionMatches(__pyx_builtin_UnicodeDecodeError);
+          if (__pyx_t_10) {
+            PyErr_Restore(0,0,0);
+            goto __pyx_L20_exception_handled;
+          }
+          __Pyx_XGIVEREF(__pyx_t_14);
+          __Pyx_XGIVEREF(__pyx_t_15);
+          __Pyx_XGIVEREF(__pyx_t_16);
+          __Pyx_ExceptionReset(__pyx_t_14, __pyx_t_15, __pyx_t_16);
+          goto __pyx_L10_except_error;
+          __pyx_L20_exception_handled:;
+          __Pyx_XGIVEREF(__pyx_t_14);
+          __Pyx_XGIVEREF(__pyx_t_15);
+          __Pyx_XGIVEREF(__pyx_t_16);
+          __Pyx_ExceptionReset(__pyx_t_14, __pyx_t_15, __pyx_t_16);
+          __pyx_L26_try_end:;
+        }
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+        goto __pyx_L9_exception_handled;
+      }
+      __pyx_L10_except_error:;
+      __Pyx_XGIVEREF(__pyx_t_11);
+      __Pyx_XGIVEREF(__pyx_t_12);
+      __Pyx_XGIVEREF(__pyx_t_13);
+      __Pyx_ExceptionReset(__pyx_t_11, __pyx_t_12, __pyx_t_13);
+      goto __pyx_L1_error;
+      __pyx_L9_exception_handled:;
+      __Pyx_XGIVEREF(__pyx_t_11);
+      __Pyx_XGIVEREF(__pyx_t_12);
+      __Pyx_XGIVEREF(__pyx_t_13);
+      __Pyx_ExceptionReset(__pyx_t_11, __pyx_t_12, __pyx_t_13);
+      __pyx_L15_try_end:;
+    }
+
+    /* "h5py/h5t.pyx":1172
+ *                 except UnicodeDecodeError:
+ *                     pass    # Last resort: return byte string
+ *             members_conv[name] = val             # <<<<<<<<<<<<<<
+ *         return special_dtype(enum=(basetype.py_dtype(), members_conv))
+ * 
+ */
+    if (PyDict_SetItem(((PyObject *)__pyx_v_members_conv), __pyx_v_name, __pyx_v_val) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  }
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "h5py/h5t.pyx":1173
+ *                     pass    # Last resort: return byte string
+ *             members_conv[name] = val
+ *         return special_dtype(enum=(basetype.py_dtype(), members_conv))             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__special_dtype); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1173; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1173; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(((PyObject *)__pyx_t_6));
+  __pyx_t_5 = ((struct __pyx_vtabstruct_4h5py_3h5t_TypeID *)__pyx_v_basetype->__pyx_vtab)->py_dtype(__pyx_v_basetype); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1173; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1173; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_5);
+  __Pyx_GIVEREF(__pyx_t_5);
+  __Pyx_INCREF(((PyObject *)__pyx_v_members_conv));
+  PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_members_conv));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_members_conv));
+  __pyx_t_5 = 0;
+  if (PyDict_SetItem(__pyx_t_6, ((PyObject *)__pyx_n_s__enum), ((PyObject *)__pyx_t_2)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1173; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
+  __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), ((PyObject *)__pyx_t_6)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1173; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_XDECREF(__pyx_t_17);
+  __Pyx_XDECREF(__pyx_t_18);
+  __Pyx_AddTraceback("h5py.h5t.TypeEnumID.py_dtype", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_basetype);
+  __Pyx_XDECREF(__pyx_v_nmembers);
+  __Pyx_XDECREF(__pyx_v_members);
+  __Pyx_XDECREF(__pyx_v_idx);
+  __Pyx_XDECREF(__pyx_v_name);
+  __Pyx_XDECREF(__pyx_v_val);
+  __Pyx_XDECREF(__pyx_v_ref);
+  __Pyx_XDECREF(__pyx_v_members_conv);
+  __Pyx_XDECREF(__pyx_v_uname);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":1194
+ * cdef dict _uint_nt = {1: H5T_NATIVE_UINT8, 2: H5T_NATIVE_UINT16, 4: H5T_NATIVE_UINT32, 8: H5T_NATIVE_UINT64}
+ * 
+ * cdef TypeFloatID _c_float(dtype dt):             # <<<<<<<<<<<<<<
+ *     # Floats (single and double)
+ *     cdef hid_t tid
+ */
+
+static struct __pyx_obj_4h5py_3h5t_TypeFloatID *__pyx_f_4h5py_3h5t__c_float(PyArray_Descr *__pyx_v_dt) {
+  hid_t __pyx_v_tid;
+  struct __pyx_obj_4h5py_3h5t_TypeFloatID *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  hid_t __pyx_t_5;
+  int __pyx_t_6;
+  PyObject *__pyx_t_7 = NULL;
+  PyObject *__pyx_t_8 = NULL;
+  PyObject *__pyx_t_9 = NULL;
+  PyObject *__pyx_t_10 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_c_float", 0);
+
+  /* "h5py/h5t.pyx":1198
+ *     cdef hid_t tid
+ * 
+ *     try:             # <<<<<<<<<<<<<<
+ *         if dt.byteorder == c'<':
+ *             tid =  _float_le[dt.elsize]
+ */
+  {
+    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
+    __Pyx_XGOTREF(__pyx_t_1);
+    __Pyx_XGOTREF(__pyx_t_2);
+    __Pyx_XGOTREF(__pyx_t_3);
+    /*try:*/ {
+
+      /* "h5py/h5t.pyx":1201
+ *         if dt.byteorder == c'<':
+ *             tid =  _float_le[dt.elsize]
+ *         elif dt.byteorder == c'>':             # <<<<<<<<<<<<<<
+ *             tid =  _float_be[dt.elsize]
+ *         else:
+ */
+      switch (__pyx_v_dt->byteorder) {
+
+        /* "h5py/h5t.pyx":1199
+ * 
+ *     try:
+ *         if dt.byteorder == c'<':             # <<<<<<<<<<<<<<
+ *             tid =  _float_le[dt.elsize]
+ *         elif dt.byteorder == c'>':
+ */
+        case '<':
+
+        /* "h5py/h5t.pyx":1200
+ *     try:
+ *         if dt.byteorder == c'<':
+ *             tid =  _float_le[dt.elsize]             # <<<<<<<<<<<<<<
+ *         elif dt.byteorder == c'>':
+ *             tid =  _float_be[dt.elsize]
+ */
+        if (unlikely(((PyObject *)__pyx_v_4h5py_3h5t__float_le) == Py_None)) {
+          PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1200; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+        __pyx_t_4 = __Pyx_GetItemInt(((PyObject *)__pyx_v_4h5py_3h5t__float_le), __pyx_v_dt->elsize, sizeof(int), PyInt_FromLong); if (!__pyx_t_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1200; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_GOTREF(__pyx_t_4);
+        __pyx_t_5 = __Pyx_PyInt_from_py_hid_t(__pyx_t_4); if (unlikely((__pyx_t_5 == (hid_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1200; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __pyx_v_tid = __pyx_t_5;
+        break;
+
+        /* "h5py/h5t.pyx":1201
+ *         if dt.byteorder == c'<':
+ *             tid =  _float_le[dt.elsize]
+ *         elif dt.byteorder == c'>':             # <<<<<<<<<<<<<<
+ *             tid =  _float_be[dt.elsize]
+ *         else:
+ */
+        case '>':
+
+        /* "h5py/h5t.pyx":1202
+ *             tid =  _float_le[dt.elsize]
+ *         elif dt.byteorder == c'>':
+ *             tid =  _float_be[dt.elsize]             # <<<<<<<<<<<<<<
+ *         else:
+ *             tid =  _float_nt[dt.elsize]
+ */
+        if (unlikely(((PyObject *)__pyx_v_4h5py_3h5t__float_be) == Py_None)) {
+          PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1202; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+        __pyx_t_4 = __Pyx_GetItemInt(((PyObject *)__pyx_v_4h5py_3h5t__float_be), __pyx_v_dt->elsize, sizeof(int), PyInt_FromLong); if (!__pyx_t_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1202; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_GOTREF(__pyx_t_4);
+        __pyx_t_5 = __Pyx_PyInt_from_py_hid_t(__pyx_t_4); if (unlikely((__pyx_t_5 == (hid_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1202; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __pyx_v_tid = __pyx_t_5;
+        break;
+        default:
+
+        /* "h5py/h5t.pyx":1204
+ *             tid =  _float_be[dt.elsize]
+ *         else:
+ *             tid =  _float_nt[dt.elsize]             # <<<<<<<<<<<<<<
+ *     except KeyError:
+ *         raise TypeError("Unsupported float size (%s)" % dt.elsize)
+ */
+        if (unlikely(((PyObject *)__pyx_v_4h5py_3h5t__float_nt) == Py_None)) {
+          PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1204; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+        __pyx_t_4 = __Pyx_GetItemInt(((PyObject *)__pyx_v_4h5py_3h5t__float_nt), __pyx_v_dt->elsize, sizeof(int), PyInt_FromLong); if (!__pyx_t_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1204; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_GOTREF(__pyx_t_4);
+        __pyx_t_5 = __Pyx_PyInt_from_py_hid_t(__pyx_t_4); if (unlikely((__pyx_t_5 == (hid_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1204; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __pyx_v_tid = __pyx_t_5;
+        break;
+      }
+    }
+    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+    goto __pyx_L10_try_end;
+    __pyx_L3_error:;
+    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+    /* "h5py/h5t.pyx":1205
+ *         else:
+ *             tid =  _float_nt[dt.elsize]
+ *     except KeyError:             # <<<<<<<<<<<<<<
+ *         raise TypeError("Unsupported float size (%s)" % dt.elsize)
+ * 
+ */
+    __pyx_t_6 = PyErr_ExceptionMatches(__pyx_builtin_KeyError);
+    if (__pyx_t_6) {
+      __Pyx_AddTraceback("h5py.h5t._c_float", __pyx_clineno, __pyx_lineno, __pyx_filename);
+      if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_7, &__pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1205; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
+      __Pyx_GOTREF(__pyx_t_4);
+      __Pyx_GOTREF(__pyx_t_7);
+      __Pyx_GOTREF(__pyx_t_8);
+
+      /* "h5py/h5t.pyx":1206
+ *             tid =  _float_nt[dt.elsize]
+ *     except KeyError:
+ *         raise TypeError("Unsupported float size (%s)" % dt.elsize)             # <<<<<<<<<<<<<<
+ * 
+ *     return TypeFloatID(H5Tcopy(tid))
+ */
+      __pyx_t_9 = PyInt_FromLong(__pyx_v_dt->elsize); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1206; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
+      __Pyx_GOTREF(__pyx_t_9);
+      __pyx_t_10 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_25), __pyx_t_9); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1206; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
+      __Pyx_GOTREF(((PyObject *)__pyx_t_10));
+      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+      __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1206; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
+      __Pyx_GOTREF(__pyx_t_9);
+      PyTuple_SET_ITEM(__pyx_t_9, 0, ((PyObject *)__pyx_t_10));
+      __Pyx_GIVEREF(((PyObject *)__pyx_t_10));
+      __pyx_t_10 = 0;
+      __pyx_t_10 = PyObject_Call(__pyx_builtin_TypeError, ((PyObject *)__pyx_t_9), NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1206; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
+      __Pyx_GOTREF(__pyx_t_10);
+      __Pyx_DECREF(((PyObject *)__pyx_t_9)); __pyx_t_9 = 0;
+      __Pyx_Raise(__pyx_t_10, 0, 0, 0);
+      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1206; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+      goto __pyx_L4_exception_handled;
+    }
+    __pyx_L5_except_error:;
+    __Pyx_XGIVEREF(__pyx_t_1);
+    __Pyx_XGIVEREF(__pyx_t_2);
+    __Pyx_XGIVEREF(__pyx_t_3);
+    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
+    goto __pyx_L1_error;
+    __pyx_L4_exception_handled:;
+    __Pyx_XGIVEREF(__pyx_t_1);
+    __Pyx_XGIVEREF(__pyx_t_2);
+    __Pyx_XGIVEREF(__pyx_t_3);
+    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
+    __pyx_L10_try_end:;
+  }
+
+  /* "h5py/h5t.pyx":1208
+ *         raise TypeError("Unsupported float size (%s)" % dt.elsize)
+ * 
+ *     return TypeFloatID(H5Tcopy(tid))             # <<<<<<<<<<<<<<
+ * 
+ * cdef TypeIntegerID _c_int(dtype dt):
+ */
+  __Pyx_XDECREF(((PyObject *)__pyx_r));
+  __pyx_t_5 = __pyx_f_4h5py_4defs_H5Tcopy(__pyx_v_tid); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_8 = __Pyx_PyInt_to_py_hid_t(__pyx_t_5); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_8);
+  __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_7);
+  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_8);
+  __Pyx_GIVEREF(__pyx_t_8);
+  __pyx_t_8 = 0;
+  __pyx_t_8 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4h5py_3h5t_TypeFloatID)), ((PyObject *)__pyx_t_7), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_8);
+  __Pyx_DECREF(((PyObject *)__pyx_t_7)); __pyx_t_7 = 0;
+  __pyx_r = ((struct __pyx_obj_4h5py_3h5t_TypeFloatID *)__pyx_t_8);
+  __pyx_t_8 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = ((struct __pyx_obj_4h5py_3h5t_TypeFloatID *)Py_None); __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_XDECREF(__pyx_t_8);
+  __Pyx_XDECREF(__pyx_t_9);
+  __Pyx_XDECREF(__pyx_t_10);
+  __Pyx_AddTraceback("h5py.h5t._c_float", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF((PyObject *)__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":1210
+ *     return TypeFloatID(H5Tcopy(tid))
+ * 
+ * cdef TypeIntegerID _c_int(dtype dt):             # <<<<<<<<<<<<<<
+ *     # Integers (ints and uints)
+ *     cdef hid_t tid
+ */
+
+static struct __pyx_obj_4h5py_3h5t_TypeIntegerID *__pyx_f_4h5py_3h5t__c_int(PyArray_Descr *__pyx_v_dt) {
+  hid_t __pyx_v_tid;
+  struct __pyx_obj_4h5py_3h5t_TypeIntegerID *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  int __pyx_t_4;
+  PyObject *__pyx_t_5 = NULL;
+  hid_t __pyx_t_6;
+  PyObject *__pyx_t_7 = NULL;
+  int __pyx_t_8;
+  PyObject *__pyx_t_9 = NULL;
+  PyObject *__pyx_t_10 = NULL;
+  PyObject *__pyx_t_11 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_c_int", 0);
+
+  /* "h5py/h5t.pyx":1214
+ *     cdef hid_t tid
+ * 
+ *     try:             # <<<<<<<<<<<<<<
+ *         if dt.kind == c'i':
+ *             if dt.byteorder == c'<':
+ */
+  {
+    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
+    __Pyx_XGOTREF(__pyx_t_1);
+    __Pyx_XGOTREF(__pyx_t_2);
+    __Pyx_XGOTREF(__pyx_t_3);
+    /*try:*/ {
+
+      /* "h5py/h5t.pyx":1222
+ *             else:
+ *                 tid = _int_nt[dt.elsize]
+ *         elif dt.kind == c'u':             # <<<<<<<<<<<<<<
+ *             if dt.byteorder == c'<':
+ *                 tid = _uint_le[dt.elsize]
+ */
+      switch (__pyx_v_dt->kind) {
+
+        /* "h5py/h5t.pyx":1215
+ * 
+ *     try:
+ *         if dt.kind == c'i':             # <<<<<<<<<<<<<<
+ *             if dt.byteorder == c'<':
+ *                 tid = _int_le[dt.elsize]
+ */
+        case 'i':
+
+        /* "h5py/h5t.pyx":1216
+ *     try:
+ *         if dt.kind == c'i':
+ *             if dt.byteorder == c'<':             # <<<<<<<<<<<<<<
+ *                 tid = _int_le[dt.elsize]
+ *             elif dt.byteorder == c'>':
+ */
+        __pyx_t_4 = (__pyx_v_dt->byteorder == '<');
+        if (__pyx_t_4) {
+
+          /* "h5py/h5t.pyx":1217
+ *         if dt.kind == c'i':
+ *             if dt.byteorder == c'<':
+ *                 tid = _int_le[dt.elsize]             # <<<<<<<<<<<<<<
+ *             elif dt.byteorder == c'>':
+ *                 tid = _int_be[dt.elsize]
+ */
+          if (unlikely(((PyObject *)__pyx_v_4h5py_3h5t__int_le) == Py_None)) {
+            PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+            {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1217; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          }
+          __pyx_t_5 = __Pyx_GetItemInt(((PyObject *)__pyx_v_4h5py_3h5t__int_le), __pyx_v_dt->elsize, sizeof(int), PyInt_FromLong); if (!__pyx_t_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1217; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_GOTREF(__pyx_t_5);
+          __pyx_t_6 = __Pyx_PyInt_from_py_hid_t(__pyx_t_5); if (unlikely((__pyx_t_6 == (hid_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1217; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+          __pyx_v_tid = __pyx_t_6;
+          goto __pyx_L11;
+        }
+
+        /* "h5py/h5t.pyx":1218
+ *             if dt.byteorder == c'<':
+ *                 tid = _int_le[dt.elsize]
+ *             elif dt.byteorder == c'>':             # <<<<<<<<<<<<<<
+ *                 tid = _int_be[dt.elsize]
+ *             else:
+ */
+        __pyx_t_4 = (__pyx_v_dt->byteorder == '>');
+        if (__pyx_t_4) {
+
+          /* "h5py/h5t.pyx":1219
+ *                 tid = _int_le[dt.elsize]
+ *             elif dt.byteorder == c'>':
+ *                 tid = _int_be[dt.elsize]             # <<<<<<<<<<<<<<
+ *             else:
+ *                 tid = _int_nt[dt.elsize]
+ */
+          if (unlikely(((PyObject *)__pyx_v_4h5py_3h5t__int_be) == Py_None)) {
+            PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+            {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1219; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          }
+          __pyx_t_5 = __Pyx_GetItemInt(((PyObject *)__pyx_v_4h5py_3h5t__int_be), __pyx_v_dt->elsize, sizeof(int), PyInt_FromLong); if (!__pyx_t_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1219; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_GOTREF(__pyx_t_5);
+          __pyx_t_6 = __Pyx_PyInt_from_py_hid_t(__pyx_t_5); if (unlikely((__pyx_t_6 == (hid_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1219; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+          __pyx_v_tid = __pyx_t_6;
+          goto __pyx_L11;
+        }
+        /*else*/ {
+
+          /* "h5py/h5t.pyx":1221
+ *                 tid = _int_be[dt.elsize]
+ *             else:
+ *                 tid = _int_nt[dt.elsize]             # <<<<<<<<<<<<<<
+ *         elif dt.kind == c'u':
+ *             if dt.byteorder == c'<':
+ */
+          if (unlikely(((PyObject *)__pyx_v_4h5py_3h5t__int_nt) == Py_None)) {
+            PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+            {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1221; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          }
+          __pyx_t_5 = __Pyx_GetItemInt(((PyObject *)__pyx_v_4h5py_3h5t__int_nt), __pyx_v_dt->elsize, sizeof(int), PyInt_FromLong); if (!__pyx_t_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1221; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_GOTREF(__pyx_t_5);
+          __pyx_t_6 = __Pyx_PyInt_from_py_hid_t(__pyx_t_5); if (unlikely((__pyx_t_6 == (hid_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1221; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+          __pyx_v_tid = __pyx_t_6;
+        }
+        __pyx_L11:;
+        break;
+
+        /* "h5py/h5t.pyx":1222
+ *             else:
+ *                 tid = _int_nt[dt.elsize]
+ *         elif dt.kind == c'u':             # <<<<<<<<<<<<<<
+ *             if dt.byteorder == c'<':
+ *                 tid = _uint_le[dt.elsize]
+ */
+        case 'u':
+
+        /* "h5py/h5t.pyx":1223
+ *                 tid = _int_nt[dt.elsize]
+ *         elif dt.kind == c'u':
+ *             if dt.byteorder == c'<':             # <<<<<<<<<<<<<<
+ *                 tid = _uint_le[dt.elsize]
+ *             elif dt.byteorder == c'>':
+ */
+        __pyx_t_4 = (__pyx_v_dt->byteorder == '<');
+        if (__pyx_t_4) {
+
+          /* "h5py/h5t.pyx":1224
+ *         elif dt.kind == c'u':
+ *             if dt.byteorder == c'<':
+ *                 tid = _uint_le[dt.elsize]             # <<<<<<<<<<<<<<
+ *             elif dt.byteorder == c'>':
+ *                 tid = _uint_be[dt.elsize]
+ */
+          if (unlikely(((PyObject *)__pyx_v_4h5py_3h5t__uint_le) == Py_None)) {
+            PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+            {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1224; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          }
+          __pyx_t_5 = __Pyx_GetItemInt(((PyObject *)__pyx_v_4h5py_3h5t__uint_le), __pyx_v_dt->elsize, sizeof(int), PyInt_FromLong); if (!__pyx_t_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1224; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_GOTREF(__pyx_t_5);
+          __pyx_t_6 = __Pyx_PyInt_from_py_hid_t(__pyx_t_5); if (unlikely((__pyx_t_6 == (hid_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1224; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+          __pyx_v_tid = __pyx_t_6;
+          goto __pyx_L12;
+        }
+
+        /* "h5py/h5t.pyx":1225
+ *             if dt.byteorder == c'<':
+ *                 tid = _uint_le[dt.elsize]
+ *             elif dt.byteorder == c'>':             # <<<<<<<<<<<<<<
+ *                 tid = _uint_be[dt.elsize]
+ *             else:
+ */
+        __pyx_t_4 = (__pyx_v_dt->byteorder == '>');
+        if (__pyx_t_4) {
+
+          /* "h5py/h5t.pyx":1226
+ *                 tid = _uint_le[dt.elsize]
+ *             elif dt.byteorder == c'>':
+ *                 tid = _uint_be[dt.elsize]             # <<<<<<<<<<<<<<
+ *             else:
+ *                 tid = _uint_nt[dt.elsize]
+ */
+          if (unlikely(((PyObject *)__pyx_v_4h5py_3h5t__uint_be) == Py_None)) {
+            PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+            {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1226; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          }
+          __pyx_t_5 = __Pyx_GetItemInt(((PyObject *)__pyx_v_4h5py_3h5t__uint_be), __pyx_v_dt->elsize, sizeof(int), PyInt_FromLong); if (!__pyx_t_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1226; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_GOTREF(__pyx_t_5);
+          __pyx_t_6 = __Pyx_PyInt_from_py_hid_t(__pyx_t_5); if (unlikely((__pyx_t_6 == (hid_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1226; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+          __pyx_v_tid = __pyx_t_6;
+          goto __pyx_L12;
+        }
+        /*else*/ {
+
+          /* "h5py/h5t.pyx":1228
+ *                 tid = _uint_be[dt.elsize]
+ *             else:
+ *                 tid = _uint_nt[dt.elsize]             # <<<<<<<<<<<<<<
+ *         else:
+ *             raise TypeError('Illegal int kind "%s"' % dt.kind)
+ */
+          if (unlikely(((PyObject *)__pyx_v_4h5py_3h5t__uint_nt) == Py_None)) {
+            PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+            {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1228; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          }
+          __pyx_t_5 = __Pyx_GetItemInt(((PyObject *)__pyx_v_4h5py_3h5t__uint_nt), __pyx_v_dt->elsize, sizeof(int), PyInt_FromLong); if (!__pyx_t_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1228; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_GOTREF(__pyx_t_5);
+          __pyx_t_6 = __Pyx_PyInt_from_py_hid_t(__pyx_t_5); if (unlikely((__pyx_t_6 == (hid_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1228; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+          __pyx_v_tid = __pyx_t_6;
+        }
+        __pyx_L12:;
+        break;
+        default:
+
+        /* "h5py/h5t.pyx":1230
+ *                 tid = _uint_nt[dt.elsize]
+ *         else:
+ *             raise TypeError('Illegal int kind "%s"' % dt.kind)             # <<<<<<<<<<<<<<
+ *     except KeyError:
+ *         raise TypeError("Unsupported integer size (%s)" % dt.elsize)
+ */
+        __pyx_t_5 = PyInt_FromLong(__pyx_v_dt->kind); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1230; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_GOTREF(__pyx_t_5);
+        __pyx_t_7 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_26), __pyx_t_5); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1230; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_GOTREF(((PyObject *)__pyx_t_7));
+        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1230; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_GOTREF(__pyx_t_5);
+        PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_t_7));
+        __Pyx_GIVEREF(((PyObject *)__pyx_t_7));
+        __pyx_t_7 = 0;
+        __pyx_t_7 = PyObject_Call(__pyx_builtin_TypeError, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1230; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        __Pyx_GOTREF(__pyx_t_7);
+        __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
+        __Pyx_Raise(__pyx_t_7, 0, 0, 0);
+        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1230; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        break;
+      }
+    }
+    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+    goto __pyx_L10_try_end;
+    __pyx_L3_error:;
+    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+    /* "h5py/h5t.pyx":1231
+ *         else:
+ *             raise TypeError('Illegal int kind "%s"' % dt.kind)
+ *     except KeyError:             # <<<<<<<<<<<<<<
+ *         raise TypeError("Unsupported integer size (%s)" % dt.elsize)
+ * 
+ */
+    __pyx_t_8 = PyErr_ExceptionMatches(__pyx_builtin_KeyError);
+    if (__pyx_t_8) {
+      __Pyx_AddTraceback("h5py.h5t._c_int", __pyx_clineno, __pyx_lineno, __pyx_filename);
+      if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_5, &__pyx_t_9) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1231; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
+      __Pyx_GOTREF(__pyx_t_7);
+      __Pyx_GOTREF(__pyx_t_5);
+      __Pyx_GOTREF(__pyx_t_9);
+
+      /* "h5py/h5t.pyx":1232
+ *             raise TypeError('Illegal int kind "%s"' % dt.kind)
+ *     except KeyError:
+ *         raise TypeError("Unsupported integer size (%s)" % dt.elsize)             # <<<<<<<<<<<<<<
+ * 
+ *     return TypeIntegerID(H5Tcopy(tid))
+ */
+      __pyx_t_10 = PyInt_FromLong(__pyx_v_dt->elsize); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1232; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
+      __Pyx_GOTREF(__pyx_t_10);
+      __pyx_t_11 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_27), __pyx_t_10); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1232; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
+      __Pyx_GOTREF(((PyObject *)__pyx_t_11));
+      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+      __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1232; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
+      __Pyx_GOTREF(__pyx_t_10);
+      PyTuple_SET_ITEM(__pyx_t_10, 0, ((PyObject *)__pyx_t_11));
+      __Pyx_GIVEREF(((PyObject *)__pyx_t_11));
+      __pyx_t_11 = 0;
+      __pyx_t_11 = PyObject_Call(__pyx_builtin_TypeError, ((PyObject *)__pyx_t_10), NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1232; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
+      __Pyx_GOTREF(__pyx_t_11);
+      __Pyx_DECREF(((PyObject *)__pyx_t_10)); __pyx_t_10 = 0;
+      __Pyx_Raise(__pyx_t_11, 0, 0, 0);
+      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1232; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
+      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+      goto __pyx_L4_exception_handled;
+    }
+    __pyx_L5_except_error:;
+    __Pyx_XGIVEREF(__pyx_t_1);
+    __Pyx_XGIVEREF(__pyx_t_2);
+    __Pyx_XGIVEREF(__pyx_t_3);
+    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
+    goto __pyx_L1_error;
+    __pyx_L4_exception_handled:;
+    __Pyx_XGIVEREF(__pyx_t_1);
+    __Pyx_XGIVEREF(__pyx_t_2);
+    __Pyx_XGIVEREF(__pyx_t_3);
+    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
+    __pyx_L10_try_end:;
+  }
+
+  /* "h5py/h5t.pyx":1234
+ *         raise TypeError("Unsupported integer size (%s)" % dt.elsize)
+ * 
+ *     return TypeIntegerID(H5Tcopy(tid))             # <<<<<<<<<<<<<<
+ * 
+ * cdef TypeEnumID _c_enum(dtype dt, dict vals):
+ */
+  __Pyx_XDECREF(((PyObject *)__pyx_r));
+  __pyx_t_6 = __pyx_f_4h5py_4defs_H5Tcopy(__pyx_v_tid); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1234; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_9 = __Pyx_PyInt_to_py_hid_t(__pyx_t_6); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1234; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_9);
+  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1234; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_9);
+  __Pyx_GIVEREF(__pyx_t_9);
+  __pyx_t_9 = 0;
+  __pyx_t_9 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4h5py_3h5t_TypeIntegerID)), ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1234; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_9);
+  __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
+  __pyx_r = ((struct __pyx_obj_4h5py_3h5t_TypeIntegerID *)__pyx_t_9);
+  __pyx_t_9 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = ((struct __pyx_obj_4h5py_3h5t_TypeIntegerID *)Py_None); __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_XDECREF(__pyx_t_9);
+  __Pyx_XDECREF(__pyx_t_10);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_AddTraceback("h5py.h5t._c_int", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF((PyObject *)__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":1236
+ *     return TypeIntegerID(H5Tcopy(tid))
+ * 
+ * cdef TypeEnumID _c_enum(dtype dt, dict vals):             # <<<<<<<<<<<<<<
+ *     # Enums
+ *     cdef TypeIntegerID base
+ */
+
+static struct __pyx_obj_4h5py_3h5t_TypeEnumID *__pyx_f_4h5py_3h5t__c_enum(PyArray_Descr *__pyx_v_dt, PyObject *__pyx_v_vals) {
+  struct __pyx_obj_4h5py_3h5t_TypeIntegerID *__pyx_v_base = 0;
+  struct __pyx_obj_4h5py_3h5t_TypeEnumID *__pyx_v_out = 0;
+  PyObject *__pyx_v_name = NULL;
+  PyObject *__pyx_v_bname = NULL;
+  struct __pyx_obj_4h5py_3h5t_TypeEnumID *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  hid_t __pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  Py_ssize_t __pyx_t_4;
+  PyObject *(*__pyx_t_5)(PyObject *);
+  int __pyx_t_6;
+  PyObject *__pyx_t_7 = NULL;
+  PyObject *__pyx_t_8 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_c_enum", 0);
+
+  /* "h5py/h5t.pyx":1241
+ *     cdef TypeEnumID out
+ * 
+ *     base = _c_int(dt)             # <<<<<<<<<<<<<<
+ * 
+ *     out = TypeEnumID(H5Tenum_create(base.id))
+ */
+  __pyx_t_1 = ((PyObject *)__pyx_f_4h5py_3h5t__c_int(__pyx_v_dt)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1241; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_base = ((struct __pyx_obj_4h5py_3h5t_TypeIntegerID *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "h5py/h5t.pyx":1243
+ *     base = _c_int(dt)
+ * 
+ *     out = TypeEnumID(H5Tenum_create(base.id))             # <<<<<<<<<<<<<<
+ *     for name in sorted(vals):
+ *         if isinstance(name, bytes):
+ */
+  __pyx_t_2 = __pyx_f_4h5py_4defs_H5Tenum_create(__pyx_v_base->__pyx_base.__pyx_base.__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1243; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyInt_to_py_hid_t(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1243; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1243; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4h5py_3h5t_TypeEnumID)), ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1243; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
+  __pyx_v_out = ((struct __pyx_obj_4h5py_3h5t_TypeEnumID *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "h5py/h5t.pyx":1244
+ * 
+ *     out = TypeEnumID(H5Tenum_create(base.id))
+ *     for name in sorted(vals):             # <<<<<<<<<<<<<<
+ *         if isinstance(name, bytes):
+ *             bname = name
+ */
+  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1244; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(((PyObject *)__pyx_v_vals));
+  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_vals));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_vals));
+  __pyx_t_3 = PyObject_Call(__pyx_builtin_sorted, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1244; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
+  if (PyList_CheckExact(__pyx_t_3) || PyTuple_CheckExact(__pyx_t_3)) {
+    __pyx_t_1 = __pyx_t_3; __Pyx_INCREF(__pyx_t_1); __pyx_t_4 = 0;
+    __pyx_t_5 = NULL;
+  } else {
+    __pyx_t_4 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1244; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_5 = Py_TYPE(__pyx_t_1)->tp_iternext;
+  }
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  for (;;) {
+    if (!__pyx_t_5 && PyList_CheckExact(__pyx_t_1)) {
+      if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_1)) break;
+      #if CYTHON_COMPILING_IN_CPYTHON
+      __pyx_t_3 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1244; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      #else
+      __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1244; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      #endif
+    } else if (!__pyx_t_5 && PyTuple_CheckExact(__pyx_t_1)) {
+      if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
+      #if CYTHON_COMPILING_IN_CPYTHON
+      __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1244; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      #else
+      __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1244; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      #endif
+    } else {
+      __pyx_t_3 = __pyx_t_5(__pyx_t_1);
+      if (unlikely(!__pyx_t_3)) {
+        if (PyErr_Occurred()) {
+          if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
+          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1244; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        }
+        break;
+      }
+      __Pyx_GOTREF(__pyx_t_3);
+    }
+    __Pyx_XDECREF(__pyx_v_name);
+    __pyx_v_name = __pyx_t_3;
+    __pyx_t_3 = 0;
+
+    /* "h5py/h5t.pyx":1245
+ *     out = TypeEnumID(H5Tenum_create(base.id))
+ *     for name in sorted(vals):
+ *         if isinstance(name, bytes):             # <<<<<<<<<<<<<<
+ *             bname = name
+ *         else:
+ */
+    __pyx_t_6 = PyBytes_Check(__pyx_v_name); 
+    if (__pyx_t_6) {
+
+      /* "h5py/h5t.pyx":1246
+ *     for name in sorted(vals):
+ *         if isinstance(name, bytes):
+ *             bname = name             # <<<<<<<<<<<<<<
+ *         else:
+ *             bname = unicode(name).encode('utf8')
+ */
+      __Pyx_INCREF(__pyx_v_name);
+      __Pyx_XDECREF(__pyx_v_bname);
+      __pyx_v_bname = __pyx_v_name;
+      goto __pyx_L5;
+    }
+    /*else*/ {
+
+      /* "h5py/h5t.pyx":1248
+ *             bname = name
+ *         else:
+ *             bname = unicode(name).encode('utf8')             # <<<<<<<<<<<<<<
+ *         out.enum_insert(bname, vals[name])
+ *     return out
+ */
+      __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1248; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_3);
+      __Pyx_INCREF(__pyx_v_name);
+      PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_name);
+      __Pyx_GIVEREF(__pyx_v_name);
+      __pyx_t_7 = PyObject_Call(((PyObject *)((PyObject*)(&PyUnicode_Type))), ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1248; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_7);
+      __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
+      __pyx_t_3 = ((PyObject *)PyUnicode_AsUTF8String(((PyObject*)__pyx_t_7))); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1248; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(((PyObject *)__pyx_t_3));
+      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+      __Pyx_XDECREF(__pyx_v_bname);
+      __pyx_v_bname = ((PyObject *)__pyx_t_3);
+      __pyx_t_3 = 0;
+    }
+    __pyx_L5:;
+
+    /* "h5py/h5t.pyx":1249
+ *         else:
+ *             bname = unicode(name).encode('utf8')
+ *         out.enum_insert(bname, vals[name])             # <<<<<<<<<<<<<<
+ *     return out
+ * 
+ */
+    __pyx_t_3 = PyObject_GetAttr(((PyObject *)__pyx_v_out), __pyx_n_s__enum_insert); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1249; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    if (unlikely(((PyObject *)__pyx_v_vals) == Py_None)) {
+      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1249; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    }
+    __pyx_t_7 = __Pyx_PyDict_GetItem(((PyObject *)__pyx_v_vals), __pyx_v_name); if (!__pyx_t_7) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1249; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_7);
+    __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1249; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_8);
+    __Pyx_INCREF(__pyx_v_bname);
+    PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_bname);
+    __Pyx_GIVEREF(__pyx_v_bname);
+    PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_7);
+    __Pyx_GIVEREF(__pyx_t_7);
+    __pyx_t_7 = 0;
+    __pyx_t_7 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_8), NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1249; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_7);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0;
+    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+  }
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "h5py/h5t.pyx":1250
+ *             bname = unicode(name).encode('utf8')
+ *         out.enum_insert(bname, vals[name])
+ *     return out             # <<<<<<<<<<<<<<
+ * 
+ * cdef TypeEnumID _c_bool(dtype dt):
+ */
+  __Pyx_XDECREF(((PyObject *)__pyx_r));
+  __Pyx_INCREF(((PyObject *)__pyx_v_out));
+  __pyx_r = __pyx_v_out;
+  goto __pyx_L0;
+
+  __pyx_r = ((struct __pyx_obj_4h5py_3h5t_TypeEnumID *)Py_None); __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_XDECREF(__pyx_t_8);
+  __Pyx_AddTraceback("h5py.h5t._c_enum", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_base);
+  __Pyx_XDECREF((PyObject *)__pyx_v_out);
+  __Pyx_XDECREF(__pyx_v_name);
+  __Pyx_XDECREF(__pyx_v_bname);
+  __Pyx_XGIVEREF((PyObject *)__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":1252
+ *     return out
+ * 
+ * cdef TypeEnumID _c_bool(dtype dt):             # <<<<<<<<<<<<<<
+ *     # Booleans
+ *     global cfg
+ */
+
+static struct __pyx_obj_4h5py_3h5t_TypeEnumID *__pyx_f_4h5py_3h5t__c_bool(CYTHON_UNUSED PyArray_Descr *__pyx_v_dt) {
+  struct __pyx_obj_4h5py_3h5t_TypeEnumID *__pyx_v_out = 0;
+  struct __pyx_obj_4h5py_3h5t_TypeEnumID *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  hid_t __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_c_bool", 0);
+
+  /* "h5py/h5t.pyx":1257
+ * 
+ *     cdef TypeEnumID out
+ *     out = TypeEnumID(H5Tenum_create(H5T_NATIVE_INT8))             # <<<<<<<<<<<<<<
+ * 
+ *     out.enum_insert(cfg._f_name, 0)
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Tenum_create(H5T_NATIVE_INT8); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1257; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyInt_to_py_hid_t(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1257; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1257; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2);
+  __Pyx_GIVEREF(__pyx_t_2);
+  __pyx_t_2 = 0;
+  __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4h5py_3h5t_TypeEnumID)), ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1257; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
+  __pyx_v_out = ((struct __pyx_obj_4h5py_3h5t_TypeEnumID *)__pyx_t_2);
+  __pyx_t_2 = 0;
+
+  /* "h5py/h5t.pyx":1259
+ *     out = TypeEnumID(H5Tenum_create(H5T_NATIVE_INT8))
+ * 
+ *     out.enum_insert(cfg._f_name, 0)             # <<<<<<<<<<<<<<
+ *     out.enum_insert(cfg._t_name, 1)
+ * 
+ */
+  __pyx_t_2 = PyObject_GetAttr(((PyObject *)__pyx_v_out), __pyx_n_s__enum_insert); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1259; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__cfg); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1259; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_4 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s___f_name); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1259; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1259; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4);
+  __Pyx_GIVEREF(__pyx_t_4);
+  __Pyx_INCREF(__pyx_int_0);
+  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_int_0);
+  __Pyx_GIVEREF(__pyx_int_0);
+  __pyx_t_4 = 0;
+  __pyx_t_4 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1259; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":1260
+ * 
+ *     out.enum_insert(cfg._f_name, 0)
+ *     out.enum_insert(cfg._t_name, 1)             # <<<<<<<<<<<<<<
+ * 
+ *     return out
+ */
+  __pyx_t_4 = PyObject_GetAttr(((PyObject *)__pyx_v_out), __pyx_n_s__enum_insert); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1260; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__cfg); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1260; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_2 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s___t_name); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1260; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1260; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2);
+  __Pyx_GIVEREF(__pyx_t_2);
+  __Pyx_INCREF(__pyx_int_1);
+  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_int_1);
+  __Pyx_GIVEREF(__pyx_int_1);
+  __pyx_t_2 = 0;
+  __pyx_t_2 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1260; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/h5t.pyx":1262
+ *     out.enum_insert(cfg._t_name, 1)
+ * 
+ *     return out             # <<<<<<<<<<<<<<
+ * 
+ * cdef TypeArrayID _c_array(dtype dt, int logical):
+ */
+  __Pyx_XDECREF(((PyObject *)__pyx_r));
+  __Pyx_INCREF(((PyObject *)__pyx_v_out));
+  __pyx_r = __pyx_v_out;
+  goto __pyx_L0;
+
+  __pyx_r = ((struct __pyx_obj_4h5py_3h5t_TypeEnumID *)Py_None); __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("h5py.h5t._c_bool", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_out);
+  __Pyx_XGIVEREF((PyObject *)__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":1264
+ *     return out
+ * 
+ * cdef TypeArrayID _c_array(dtype dt, int logical):             # <<<<<<<<<<<<<<
+ *     # Arrays
+ *     cdef dtype base
+ */
+
+static struct __pyx_obj_4h5py_3h5t_TypeArrayID *__pyx_f_4h5py_3h5t__c_array(PyArray_Descr *__pyx_v_dt, int __pyx_v_logical) {
+  PyArray_Descr *__pyx_v_base = 0;
+  struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_v_type_base = 0;
+  PyObject *__pyx_v_shape = 0;
+  struct __pyx_obj_4h5py_3h5t_TypeArrayID *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *(*__pyx_t_5)(PyObject *);
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  PyObject *__pyx_t_8 = NULL;
+  int __pyx_t_9;
+  PyObject *__pyx_t_10 = NULL;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  PyObject *__pyx_t_13 = NULL;
+  PyObject *__pyx_t_14 = NULL;
+  PyObject *__pyx_t_15 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_c_array", 0);
+
+  /* "h5py/h5t.pyx":1270
+ *     cdef object shape
+ * 
+ *     base, shape = dt.subdtype             # <<<<<<<<<<<<<<
+ *     try:
+ *         shape = tuple(shape)
+ */
+  __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_dt), __pyx_n_s__subdtype); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1270; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
+    PyObject* sequence = __pyx_t_1;
+    #if CYTHON_COMPILING_IN_CPYTHON
+    Py_ssize_t size = Py_SIZE(sequence);
+    #else
+    Py_ssize_t size = PySequence_Size(sequence);
+    #endif
+    if (unlikely(size != 2)) {
+      if (size > 2) __Pyx_RaiseTooManyValuesError(2);
+      else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1270; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    }
+    #if CYTHON_COMPILING_IN_CPYTHON
+    if (likely(PyTuple_CheckExact(sequence))) {
+      __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); 
+      __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); 
+    } else {
+      __pyx_t_2 = PyList_GET_ITEM(sequence, 0); 
+      __pyx_t_3 = PyList_GET_ITEM(sequence, 1); 
+    }
+    __Pyx_INCREF(__pyx_t_2);
+    __Pyx_INCREF(__pyx_t_3);
+    #else
+    __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1270; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1270; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    #endif
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  } else
+  {
+    Py_ssize_t index = -1;
+    __pyx_t_4 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1270; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __pyx_t_5 = Py_TYPE(__pyx_t_4)->tp_iternext;
+    index = 0; __pyx_t_2 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed;
+    __Pyx_GOTREF(__pyx_t_2);
+    index = 1; __pyx_t_3 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_3)) goto __pyx_L3_unpacking_failed;
+    __Pyx_GOTREF(__pyx_t_3);
+    if (__Pyx_IternextUnpackEndCheck(__pyx_t_5(__pyx_t_4), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1270; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = NULL;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    goto __pyx_L4_unpacking_done;
+    __pyx_L3_unpacking_failed:;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_t_5 = NULL;
+    if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1270; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_L4_unpacking_done:;
+  }
+  if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_4h5py_5numpy_dtype))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1270; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v_base = ((PyArray_Descr *)__pyx_t_2);
+  __pyx_t_2 = 0;
+  __pyx_v_shape = __pyx_t_3;
+  __pyx_t_3 = 0;
+
+  /* "h5py/h5t.pyx":1271
+ * 
+ *     base, shape = dt.subdtype
+ *     try:             # <<<<<<<<<<<<<<
+ *         shape = tuple(shape)
+ *     except TypeError:
+ */
+  {
+    __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
+    __Pyx_XGOTREF(__pyx_t_6);
+    __Pyx_XGOTREF(__pyx_t_7);
+    __Pyx_XGOTREF(__pyx_t_8);
+    /*try:*/ {
+
+      /* "h5py/h5t.pyx":1272
+ *     base, shape = dt.subdtype
+ *     try:
+ *         shape = tuple(shape)             # <<<<<<<<<<<<<<
+ *     except TypeError:
+ *         try:
+ */
+      __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1272; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_INCREF(__pyx_v_shape);
+      PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_shape);
+      __Pyx_GIVEREF(__pyx_v_shape);
+      __pyx_t_3 = PyObject_Call(((PyObject *)((PyObject*)(&PyTuple_Type))), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1272; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
+      __Pyx_GOTREF(__pyx_t_3);
+      __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
+      __Pyx_DECREF(__pyx_v_shape);
+      __pyx_v_shape = __pyx_t_3;
+      __pyx_t_3 = 0;
+    }
+    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
+    goto __pyx_L12_try_end;
+    __pyx_L5_error:;
+    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+    /* "h5py/h5t.pyx":1273
+ *     try:
+ *         shape = tuple(shape)
+ *     except TypeError:             # <<<<<<<<<<<<<<
+ *         try:
+ *             shape = (int(shape),)
+ */
+    __pyx_t_9 = PyErr_ExceptionMatches(__pyx_builtin_TypeError);
+    if (__pyx_t_9) {
+      __Pyx_AddTraceback("h5py.h5t._c_array", __pyx_clineno, __pyx_lineno, __pyx_filename);
+      if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_1, &__pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1273; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
+      __Pyx_GOTREF(__pyx_t_3);
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_GOTREF(__pyx_t_2);
+
+      /* "h5py/h5t.pyx":1274
+ *         shape = tuple(shape)
+ *     except TypeError:
+ *         try:             # <<<<<<<<<<<<<<
+ *             shape = (int(shape),)
+ *         except TypeError:
+ */
+      {
+        __Pyx_ExceptionSave(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12);
+        __Pyx_XGOTREF(__pyx_t_10);
+        __Pyx_XGOTREF(__pyx_t_11);
+        __Pyx_XGOTREF(__pyx_t_12);
+        /*try:*/ {
+
+          /* "h5py/h5t.pyx":1275
+ *     except TypeError:
+ *         try:
+ *             shape = (int(shape),)             # <<<<<<<<<<<<<<
+ *         except TypeError:
+ *             raise TypeError("Array shape for dtype must be a sequence or integer")
+ */
+          __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1275; __pyx_clineno = __LINE__; goto __pyx_L15_error;}
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_v_shape);
+          PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_shape);
+          __Pyx_GIVEREF(__pyx_v_shape);
+          __pyx_t_13 = PyObject_Call(((PyObject *)((PyObject*)(&PyInt_Type))), ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1275; __pyx_clineno = __LINE__; goto __pyx_L15_error;}
+          __Pyx_GOTREF(__pyx_t_13);
+          __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
+          __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1275; __pyx_clineno = __LINE__; goto __pyx_L15_error;}
+          __Pyx_GOTREF(__pyx_t_4);
+          PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_13);
+          __Pyx_GIVEREF(__pyx_t_13);
+          __pyx_t_13 = 0;
+          __Pyx_DECREF(__pyx_v_shape);
+          __pyx_v_shape = ((PyObject *)__pyx_t_4);
+          __pyx_t_4 = 0;
+        }
+        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+        __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
+        __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
+        goto __pyx_L22_try_end;
+        __pyx_L15_error:;
+        __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+        /* "h5py/h5t.pyx":1276
+ *         try:
+ *             shape = (int(shape),)
+ *         except TypeError:             # <<<<<<<<<<<<<<
+ *             raise TypeError("Array shape for dtype must be a sequence or integer")
+ *     type_base = py_create(base, logical=logical)
+ */
+        __pyx_t_9 = PyErr_ExceptionMatches(__pyx_builtin_TypeError);
+        if (__pyx_t_9) {
+          __Pyx_AddTraceback("h5py.h5t._c_array", __pyx_clineno, __pyx_lineno, __pyx_filename);
+          if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_13, &__pyx_t_14) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1276; __pyx_clineno = __LINE__; goto __pyx_L17_except_error;}
+          __Pyx_GOTREF(__pyx_t_4);
+          __Pyx_GOTREF(__pyx_t_13);
+          __Pyx_GOTREF(__pyx_t_14);
+
+          /* "h5py/h5t.pyx":1277
+ *             shape = (int(shape),)
+ *         except TypeError:
+ *             raise TypeError("Array shape for dtype must be a sequence or integer")             # <<<<<<<<<<<<<<
+ *     type_base = py_create(base, logical=logical)
+ *     return array_create(type_base, shape)
+ */
+          __pyx_t_15 = PyObject_Call(__pyx_builtin_TypeError, ((PyObject *)__pyx_k_tuple_29), NULL); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1277; __pyx_clineno = __LINE__; goto __pyx_L17_except_error;}
+          __Pyx_GOTREF(__pyx_t_15);
+          __Pyx_Raise(__pyx_t_15, 0, 0, 0);
+          __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
+          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1277; __pyx_clineno = __LINE__; goto __pyx_L17_except_error;}
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+          __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
+          goto __pyx_L16_exception_handled;
+        }
+        __pyx_L17_except_error:;
+        __Pyx_XGIVEREF(__pyx_t_10);
+        __Pyx_XGIVEREF(__pyx_t_11);
+        __Pyx_XGIVEREF(__pyx_t_12);
+        __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
+        goto __pyx_L7_except_error;
+        __pyx_L16_exception_handled:;
+        __Pyx_XGIVEREF(__pyx_t_10);
+        __Pyx_XGIVEREF(__pyx_t_11);
+        __Pyx_XGIVEREF(__pyx_t_12);
+        __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
+        __pyx_L22_try_end:;
+      }
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+      goto __pyx_L6_exception_handled;
+    }
+    __pyx_L7_except_error:;
+    __Pyx_XGIVEREF(__pyx_t_6);
+    __Pyx_XGIVEREF(__pyx_t_7);
+    __Pyx_XGIVEREF(__pyx_t_8);
+    __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
+    goto __pyx_L1_error;
+    __pyx_L6_exception_handled:;
+    __Pyx_XGIVEREF(__pyx_t_6);
+    __Pyx_XGIVEREF(__pyx_t_7);
+    __Pyx_XGIVEREF(__pyx_t_8);
+    __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
+    __pyx_L12_try_end:;
+  }
+
+  /* "h5py/h5t.pyx":1278
+ *         except TypeError:
+ *             raise TypeError("Array shape for dtype must be a sequence or integer")
+ *     type_base = py_create(base, logical=logical)             # <<<<<<<<<<<<<<
+ *     return array_create(type_base, shape)
+ * 
+ */
+  __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__py_create); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1278; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1278; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(((PyObject *)__pyx_v_base));
+  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_base));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_base));
+  __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1278; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(((PyObject *)__pyx_t_3));
+  __pyx_t_14 = PyInt_FromLong(__pyx_v_logical); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1278; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_14);
+  if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__logical), __pyx_t_14) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1278; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
+  __pyx_t_14 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_1), ((PyObject *)__pyx_t_3)); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1278; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_14);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
+  __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
+  if (!(likely(((__pyx_t_14) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_14, __pyx_ptype_4h5py_3h5t_TypeID))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1278; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v_type_base = ((struct __pyx_obj_4h5py_3h5t_TypeID *)__pyx_t_14);
+  __pyx_t_14 = 0;
+
+  /* "h5py/h5t.pyx":1279
+ *             raise TypeError("Array shape for dtype must be a sequence or integer")
+ *     type_base = py_create(base, logical=logical)
+ *     return array_create(type_base, shape)             # <<<<<<<<<<<<<<
+ * 
+ * cdef TypeOpaqueID _c_opaque(dtype dt):
+ */
+  __Pyx_XDECREF(((PyObject *)__pyx_r));
+  __pyx_t_14 = __Pyx_GetName(__pyx_m, __pyx_n_s__array_create); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1279; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_14);
+  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1279; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_INCREF(((PyObject *)__pyx_v_type_base));
+  PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_v_type_base));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_type_base));
+  __Pyx_INCREF(__pyx_v_shape);
+  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_shape);
+  __Pyx_GIVEREF(__pyx_v_shape);
+  __pyx_t_1 = PyObject_Call(__pyx_t_14, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1279; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
+  __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
+  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_4h5py_3h5t_TypeArrayID))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1279; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = ((struct __pyx_obj_4h5py_3h5t_TypeArrayID *)__pyx_t_1);
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = ((struct __pyx_obj_4h5py_3h5t_TypeArrayID *)Py_None); __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_13);
+  __Pyx_XDECREF(__pyx_t_14);
+  __Pyx_XDECREF(__pyx_t_15);
+  __Pyx_AddTraceback("h5py.h5t._c_array", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_base);
+  __Pyx_XDECREF((PyObject *)__pyx_v_type_base);
+  __Pyx_XDECREF(__pyx_v_shape);
+  __Pyx_XGIVEREF((PyObject *)__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":1281
+ *     return array_create(type_base, shape)
+ * 
+ * cdef TypeOpaqueID _c_opaque(dtype dt):             # <<<<<<<<<<<<<<
+ *     # Opaque
+ *     return TypeOpaqueID(H5Tcreate(H5T_OPAQUE, dt.itemsize))
+ */
+
+static struct __pyx_obj_4h5py_3h5t_TypeOpaqueID *__pyx_f_4h5py_3h5t__c_opaque(PyArray_Descr *__pyx_v_dt) {
+  struct __pyx_obj_4h5py_3h5t_TypeOpaqueID *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  size_t __pyx_t_2;
+  hid_t __pyx_t_3;
+  PyObject *__pyx_t_4 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_c_opaque", 0);
+
+  /* "h5py/h5t.pyx":1283
+ * cdef TypeOpaqueID _c_opaque(dtype dt):
+ *     # Opaque
+ *     return TypeOpaqueID(H5Tcreate(H5T_OPAQUE, dt.itemsize))             # <<<<<<<<<<<<<<
+ * 
+ * cdef TypeStringID _c_string(dtype dt):
+ */
+  __Pyx_XDECREF(((PyObject *)__pyx_r));
+  __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_dt), __pyx_n_s__itemsize); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1283; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyInt_AsSize_t(__pyx_t_1); if (unlikely((__pyx_t_2 == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1283; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_3 = __pyx_f_4h5py_4defs_H5Tcreate(H5T_OPAQUE, __pyx_t_2); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1283; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyInt_to_py_hid_t(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1283; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1283; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4h5py_3h5t_TypeOpaqueID)), ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1283; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
+  __pyx_r = ((struct __pyx_obj_4h5py_3h5t_TypeOpaqueID *)__pyx_t_1);
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = ((struct __pyx_obj_4h5py_3h5t_TypeOpaqueID *)Py_None); __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("h5py.h5t._c_opaque", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF((PyObject *)__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":1285
+ *     return TypeOpaqueID(H5Tcreate(H5T_OPAQUE, dt.itemsize))
+ * 
+ * cdef TypeStringID _c_string(dtype dt):             # <<<<<<<<<<<<<<
+ *     # Strings (fixed-length)
+ *     cdef hid_t tid
+ */
+
+static struct __pyx_obj_4h5py_3h5t_TypeStringID *__pyx_f_4h5py_3h5t__c_string(PyArray_Descr *__pyx_v_dt) {
+  hid_t __pyx_v_tid;
+  struct __pyx_obj_4h5py_3h5t_TypeStringID *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  hid_t __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  size_t __pyx_t_3;
+  herr_t __pyx_t_4;
+  PyObject *__pyx_t_5 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_c_string", 0);
+
+  /* "h5py/h5t.pyx":1289
+ *     cdef hid_t tid
+ * 
+ *     tid = H5Tcopy(H5T_C_S1)             # <<<<<<<<<<<<<<
+ *     H5Tset_size(tid, dt.itemsize)
+ *     H5Tset_strpad(tid, H5T_STR_NULLPAD)
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Tcopy(H5T_C_S1); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1289; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v_tid = __pyx_t_1;
+
+  /* "h5py/h5t.pyx":1290
+ * 
+ *     tid = H5Tcopy(H5T_C_S1)
+ *     H5Tset_size(tid, dt.itemsize)             # <<<<<<<<<<<<<<
+ *     H5Tset_strpad(tid, H5T_STR_NULLPAD)
+ *     return TypeStringID(tid)
+ */
+  __pyx_t_2 = PyObject_GetAttr(((PyObject *)__pyx_v_dt), __pyx_n_s__itemsize); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1290; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = __Pyx_PyInt_AsSize_t(__pyx_t_2); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1290; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_4 = __pyx_f_4h5py_4defs_H5Tset_size(__pyx_v_tid, __pyx_t_3); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1290; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5t.pyx":1291
+ *     tid = H5Tcopy(H5T_C_S1)
+ *     H5Tset_size(tid, dt.itemsize)
+ *     H5Tset_strpad(tid, H5T_STR_NULLPAD)             # <<<<<<<<<<<<<<
+ *     return TypeStringID(tid)
+ * 
+ */
+  __pyx_t_4 = __pyx_f_4h5py_4defs_H5Tset_strpad(__pyx_v_tid, H5T_STR_NULLPAD); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1291; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5t.pyx":1292
+ *     H5Tset_size(tid, dt.itemsize)
+ *     H5Tset_strpad(tid, H5T_STR_NULLPAD)
+ *     return TypeStringID(tid)             # <<<<<<<<<<<<<<
+ * 
+ * cdef TypeCompoundID _c_complex(dtype dt):
+ */
+  __Pyx_XDECREF(((PyObject *)__pyx_r));
+  __pyx_t_2 = __Pyx_PyInt_to_py_hid_t(__pyx_v_tid); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1292; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1292; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2);
+  __Pyx_GIVEREF(__pyx_t_2);
+  __pyx_t_2 = 0;
+  __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4h5py_3h5t_TypeStringID)), ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1292; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
+  __pyx_r = ((struct __pyx_obj_4h5py_3h5t_TypeStringID *)__pyx_t_2);
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = ((struct __pyx_obj_4h5py_3h5t_TypeStringID *)Py_None); __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_AddTraceback("h5py.h5t._c_string", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF((PyObject *)__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":1294
+ *     return TypeStringID(tid)
+ * 
+ * cdef TypeCompoundID _c_complex(dtype dt):             # <<<<<<<<<<<<<<
+ *     # Complex numbers (names depend on cfg)
+ *     global cfg
+ */
+
+static struct __pyx_obj_4h5py_3h5t_TypeCompoundID *__pyx_f_4h5py_3h5t__c_complex(PyArray_Descr *__pyx_v_dt) {
+  hid_t __pyx_v_tid;
+  hid_t __pyx_v_tid_sub;
+  size_t __pyx_v_size;
+  size_t __pyx_v_off_r;
+  size_t __pyx_v_off_i;
+  size_t __pyx_v_length;
+  char __pyx_v_byteorder;
+  struct __pyx_obj_4h5py_3h5t_TypeCompoundID *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  size_t __pyx_t_2;
+  char __pyx_t_3;
+  int __pyx_t_4;
+  PyObject *__pyx_t_5 = NULL;
+  hid_t __pyx_t_6;
+  char *__pyx_t_7;
+  herr_t __pyx_t_8;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_c_complex", 0);
+
+  /* "h5py/h5t.pyx":1301
+ *     cdef size_t size, off_r, off_i
+ * 
+ *     cdef size_t length = dt.itemsize             # <<<<<<<<<<<<<<
+ *     cdef char byteorder = dt.byteorder
+ * 
+ */
+  __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_dt), __pyx_n_s__itemsize); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1301; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyInt_AsSize_t(__pyx_t_1); if (unlikely((__pyx_t_2 == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1301; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_v_length = __pyx_t_2;
+
+  /* "h5py/h5t.pyx":1302
+ * 
+ *     cdef size_t length = dt.itemsize
+ *     cdef char byteorder = dt.byteorder             # <<<<<<<<<<<<<<
+ * 
+ *     if length == 8:
+ */
+  __pyx_t_3 = __pyx_v_dt->byteorder;
+  __pyx_v_byteorder = __pyx_t_3;
+
+  /* "h5py/h5t.pyx":1314
+ *         else:
+ *             tid_sub = H5T_NATIVE_FLOAT
+ *     elif length == 16:             # <<<<<<<<<<<<<<
+ *         size = h5py_size_n128
+ *         off_r = h5py_offset_n128_real
+ */
+  switch (__pyx_v_length) {
+
+    /* "h5py/h5t.pyx":1304
+ *     cdef char byteorder = dt.byteorder
+ * 
+ *     if length == 8:             # <<<<<<<<<<<<<<
+ *         size = h5py_size_n64
+ *         off_r = h5py_offset_n64_real
+ */
+    case 8:
+
+    /* "h5py/h5t.pyx":1305
+ * 
+ *     if length == 8:
+ *         size = h5py_size_n64             # <<<<<<<<<<<<<<
+ *         off_r = h5py_offset_n64_real
+ *         off_i = h5py_offset_n64_imag
+ */
+    __pyx_v_size = h5py_size_n64;
+
+    /* "h5py/h5t.pyx":1306
+ *     if length == 8:
+ *         size = h5py_size_n64
+ *         off_r = h5py_offset_n64_real             # <<<<<<<<<<<<<<
+ *         off_i = h5py_offset_n64_imag
+ *         if byteorder == c'<':
+ */
+    __pyx_v_off_r = h5py_offset_n64_real;
+
+    /* "h5py/h5t.pyx":1307
+ *         size = h5py_size_n64
+ *         off_r = h5py_offset_n64_real
+ *         off_i = h5py_offset_n64_imag             # <<<<<<<<<<<<<<
+ *         if byteorder == c'<':
+ *             tid_sub = H5T_IEEE_F32LE
+ */
+    __pyx_v_off_i = h5py_offset_n64_imag;
+
+    /* "h5py/h5t.pyx":1308
+ *         off_r = h5py_offset_n64_real
+ *         off_i = h5py_offset_n64_imag
+ *         if byteorder == c'<':             # <<<<<<<<<<<<<<
+ *             tid_sub = H5T_IEEE_F32LE
+ *         elif byteorder == c'>':
+ */
+    __pyx_t_4 = (__pyx_v_byteorder == '<');
+    if (__pyx_t_4) {
+
+      /* "h5py/h5t.pyx":1309
+ *         off_i = h5py_offset_n64_imag
+ *         if byteorder == c'<':
+ *             tid_sub = H5T_IEEE_F32LE             # <<<<<<<<<<<<<<
+ *         elif byteorder == c'>':
+ *             tid_sub = H5T_IEEE_F32BE
+ */
+      __pyx_v_tid_sub = H5T_IEEE_F32LE;
+      goto __pyx_L3;
+    }
+
+    /* "h5py/h5t.pyx":1310
+ *         if byteorder == c'<':
+ *             tid_sub = H5T_IEEE_F32LE
+ *         elif byteorder == c'>':             # <<<<<<<<<<<<<<
+ *             tid_sub = H5T_IEEE_F32BE
+ *         else:
+ */
+    __pyx_t_4 = (__pyx_v_byteorder == '>');
+    if (__pyx_t_4) {
+
+      /* "h5py/h5t.pyx":1311
+ *             tid_sub = H5T_IEEE_F32LE
+ *         elif byteorder == c'>':
+ *             tid_sub = H5T_IEEE_F32BE             # <<<<<<<<<<<<<<
+ *         else:
+ *             tid_sub = H5T_NATIVE_FLOAT
+ */
+      __pyx_v_tid_sub = H5T_IEEE_F32BE;
+      goto __pyx_L3;
+    }
+    /*else*/ {
+
+      /* "h5py/h5t.pyx":1313
+ *             tid_sub = H5T_IEEE_F32BE
+ *         else:
+ *             tid_sub = H5T_NATIVE_FLOAT             # <<<<<<<<<<<<<<
+ *     elif length == 16:
+ *         size = h5py_size_n128
+ */
+      __pyx_v_tid_sub = H5T_NATIVE_FLOAT;
+    }
+    __pyx_L3:;
+    break;
+
+    /* "h5py/h5t.pyx":1314
+ *         else:
+ *             tid_sub = H5T_NATIVE_FLOAT
+ *     elif length == 16:             # <<<<<<<<<<<<<<
+ *         size = h5py_size_n128
+ *         off_r = h5py_offset_n128_real
+ */
+    case 16:
+
+    /* "h5py/h5t.pyx":1315
+ *             tid_sub = H5T_NATIVE_FLOAT
+ *     elif length == 16:
+ *         size = h5py_size_n128             # <<<<<<<<<<<<<<
+ *         off_r = h5py_offset_n128_real
+ *         off_i = h5py_offset_n128_imag
+ */
+    __pyx_v_size = h5py_size_n128;
+
+    /* "h5py/h5t.pyx":1316
+ *     elif length == 16:
+ *         size = h5py_size_n128
+ *         off_r = h5py_offset_n128_real             # <<<<<<<<<<<<<<
+ *         off_i = h5py_offset_n128_imag
+ *         if byteorder == c'<':
+ */
+    __pyx_v_off_r = h5py_offset_n128_real;
+
+    /* "h5py/h5t.pyx":1317
+ *         size = h5py_size_n128
+ *         off_r = h5py_offset_n128_real
+ *         off_i = h5py_offset_n128_imag             # <<<<<<<<<<<<<<
+ *         if byteorder == c'<':
+ *             tid_sub = H5T_IEEE_F64LE
+ */
+    __pyx_v_off_i = h5py_offset_n128_imag;
+
+    /* "h5py/h5t.pyx":1318
+ *         off_r = h5py_offset_n128_real
+ *         off_i = h5py_offset_n128_imag
+ *         if byteorder == c'<':             # <<<<<<<<<<<<<<
+ *             tid_sub = H5T_IEEE_F64LE
+ *         elif byteorder == c'>':
+ */
+    __pyx_t_4 = (__pyx_v_byteorder == '<');
+    if (__pyx_t_4) {
+
+      /* "h5py/h5t.pyx":1319
+ *         off_i = h5py_offset_n128_imag
+ *         if byteorder == c'<':
+ *             tid_sub = H5T_IEEE_F64LE             # <<<<<<<<<<<<<<
+ *         elif byteorder == c'>':
+ *             tid_sub = H5T_IEEE_F64BE
+ */
+      __pyx_v_tid_sub = H5T_IEEE_F64LE;
+      goto __pyx_L4;
+    }
+
+    /* "h5py/h5t.pyx":1320
+ *         if byteorder == c'<':
+ *             tid_sub = H5T_IEEE_F64LE
+ *         elif byteorder == c'>':             # <<<<<<<<<<<<<<
+ *             tid_sub = H5T_IEEE_F64BE
+ *         else:
+ */
+    __pyx_t_4 = (__pyx_v_byteorder == '>');
+    if (__pyx_t_4) {
+
+      /* "h5py/h5t.pyx":1321
+ *             tid_sub = H5T_IEEE_F64LE
+ *         elif byteorder == c'>':
+ *             tid_sub = H5T_IEEE_F64BE             # <<<<<<<<<<<<<<
+ *         else:
+ *             tid_sub = H5T_NATIVE_DOUBLE
+ */
+      __pyx_v_tid_sub = H5T_IEEE_F64BE;
+      goto __pyx_L4;
+    }
+    /*else*/ {
+
+      /* "h5py/h5t.pyx":1323
+ *             tid_sub = H5T_IEEE_F64BE
+ *         else:
+ *             tid_sub = H5T_NATIVE_DOUBLE             # <<<<<<<<<<<<<<
+ *     else:
+ *         raise TypeError("Illegal length %d for complex dtype" % length)
+ */
+      __pyx_v_tid_sub = H5T_NATIVE_DOUBLE;
+    }
+    __pyx_L4:;
+    break;
+    default:
+
+    /* "h5py/h5t.pyx":1325
+ *             tid_sub = H5T_NATIVE_DOUBLE
+ *     else:
+ *         raise TypeError("Illegal length %d for complex dtype" % length)             # <<<<<<<<<<<<<<
+ * 
+ *     tid = H5Tcreate(H5T_COMPOUND, size)
+ */
+    __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_length); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1325; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_5 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_30), __pyx_t_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1325; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(((PyObject *)__pyx_t_5));
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1325; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_t_5));
+    __Pyx_GIVEREF(((PyObject *)__pyx_t_5));
+    __pyx_t_5 = 0;
+    __pyx_t_5 = PyObject_Call(__pyx_builtin_TypeError, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1325; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
+    __Pyx_Raise(__pyx_t_5, 0, 0, 0);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1325; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    break;
+  }
+
+  /* "h5py/h5t.pyx":1327
+ *         raise TypeError("Illegal length %d for complex dtype" % length)
+ * 
+ *     tid = H5Tcreate(H5T_COMPOUND, size)             # <<<<<<<<<<<<<<
+ *     H5Tinsert(tid, cfg._r_name, off_r, tid_sub)
+ *     H5Tinsert(tid, cfg._i_name, off_i, tid_sub)
+ */
+  __pyx_t_6 = __pyx_f_4h5py_4defs_H5Tcreate(H5T_COMPOUND, __pyx_v_size); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1327; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v_tid = __pyx_t_6;
+
+  /* "h5py/h5t.pyx":1328
+ * 
+ *     tid = H5Tcreate(H5T_COMPOUND, size)
+ *     H5Tinsert(tid, cfg._r_name, off_r, tid_sub)             # <<<<<<<<<<<<<<
+ *     H5Tinsert(tid, cfg._i_name, off_i, tid_sub)
+ * 
+ */
+  __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__cfg); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1328; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s___r_name); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1328; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_7 = PyBytes_AsString(__pyx_t_1); if (unlikely((!__pyx_t_7) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1328; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_8 = __pyx_f_4h5py_4defs_H5Tinsert(__pyx_v_tid, __pyx_t_7, __pyx_v_off_r, __pyx_v_tid_sub); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1328; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5t.pyx":1329
+ *     tid = H5Tcreate(H5T_COMPOUND, size)
+ *     H5Tinsert(tid, cfg._r_name, off_r, tid_sub)
+ *     H5Tinsert(tid, cfg._i_name, off_i, tid_sub)             # <<<<<<<<<<<<<<
+ * 
+ *     return TypeCompoundID(tid)
+ */
+  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__cfg); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1329; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_5 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s___i_name); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1329; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_7 = PyBytes_AsString(__pyx_t_5); if (unlikely((!__pyx_t_7) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1329; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_8 = __pyx_f_4h5py_4defs_H5Tinsert(__pyx_v_tid, __pyx_t_7, __pyx_v_off_i, __pyx_v_tid_sub); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1329; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5t.pyx":1331
+ *     H5Tinsert(tid, cfg._i_name, off_i, tid_sub)
+ * 
+ *     return TypeCompoundID(tid)             # <<<<<<<<<<<<<<
+ * 
+ * cdef TypeCompoundID _c_compound(dtype dt, int logical):
+ */
+  __Pyx_XDECREF(((PyObject *)__pyx_r));
+  __pyx_t_5 = __Pyx_PyInt_to_py_hid_t(__pyx_v_tid); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1331; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1331; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_5);
+  __Pyx_GIVEREF(__pyx_t_5);
+  __pyx_t_5 = 0;
+  __pyx_t_5 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4h5py_3h5t_TypeCompoundID)), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1331; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
+  __pyx_r = ((struct __pyx_obj_4h5py_3h5t_TypeCompoundID *)__pyx_t_5);
+  __pyx_t_5 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = ((struct __pyx_obj_4h5py_3h5t_TypeCompoundID *)Py_None); __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_AddTraceback("h5py.h5t._c_complex", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF((PyObject *)__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":1333
+ *     return TypeCompoundID(tid)
+ * 
+ * cdef TypeCompoundID _c_compound(dtype dt, int logical):             # <<<<<<<<<<<<<<
+ *     # Compound datatypes
+ * 
+ */
+
+static struct __pyx_obj_4h5py_3h5t_TypeCompoundID *__pyx_f_4h5py_3h5t__c_compound(PyArray_Descr *__pyx_v_dt, int __pyx_v_logical) {
+  hid_t __pyx_v_tid;
+  struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_v_type_tmp = 0;
+  PyArray_Descr *__pyx_v_dt_tmp = 0;
+  size_t __pyx_v_offset;
+  CYTHON_UNUSED PyObject *__pyx_v_fields = 0;
+  PyObject *__pyx_v_names = 0;
+  PyObject *__pyx_v_name = NULL;
+  PyObject *__pyx_v_ename = NULL;
+  struct __pyx_obj_4h5py_3h5t_TypeCompoundID *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  hid_t __pyx_t_2;
+  Py_ssize_t __pyx_t_3;
+  PyObject *__pyx_t_4 = NULL;
+  int __pyx_t_5;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  PyObject *__pyx_t_8 = NULL;
+  size_t __pyx_t_9;
+  herr_t __pyx_t_10;
+  char *__pyx_t_11;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_c_compound", 0);
+
+  /* "h5py/h5t.pyx":1341
+ *     cdef size_t offset
+ * 
+ *     cdef dict fields = dt.fields             # <<<<<<<<<<<<<<
+ *     cdef tuple names = dt.names
+ * 
+ */
+  if (!(likely(PyDict_CheckExact(__pyx_v_dt->fields))||((__pyx_v_dt->fields) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected dict, got %.200s", Py_TYPE(__pyx_v_dt->fields)->tp_name), 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1341; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_INCREF(__pyx_v_dt->fields);
+  __pyx_v_fields = ((PyObject*)__pyx_v_dt->fields);
+
+  /* "h5py/h5t.pyx":1342
+ * 
+ *     cdef dict fields = dt.fields
+ *     cdef tuple names = dt.names             # <<<<<<<<<<<<<<
+ * 
+ *     # Initial size MUST be 1 to avoid segfaults (issue 166)
+ */
+  __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_dt), __pyx_n_s__names); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1342; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  if (!(likely(PyTuple_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected tuple, got %.200s", Py_TYPE(__pyx_t_1)->tp_name), 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1342; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v_names = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "h5py/h5t.pyx":1345
+ * 
+ *     # Initial size MUST be 1 to avoid segfaults (issue 166)
+ *     tid = H5Tcreate(H5T_COMPOUND, 1)             # <<<<<<<<<<<<<<
+ * 
+ *     offset = 0
+ */
+  __pyx_t_2 = __pyx_f_4h5py_4defs_H5Tcreate(H5T_COMPOUND, 1); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1345; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v_tid = __pyx_t_2;
+
+  /* "h5py/h5t.pyx":1347
+ *     tid = H5Tcreate(H5T_COMPOUND, 1)
+ * 
+ *     offset = 0             # <<<<<<<<<<<<<<
+ *     for name in names:
+ *         ename = name.encode('utf8') if isinstance(name, unicode) else name
+ */
+  __pyx_v_offset = 0;
+
+  /* "h5py/h5t.pyx":1348
+ * 
+ *     offset = 0
+ *     for name in names:             # <<<<<<<<<<<<<<
+ *         ename = name.encode('utf8') if isinstance(name, unicode) else name
+ *         dt_tmp = dt.fields[name][0]
+ */
+  if (unlikely(((PyObject *)__pyx_v_names) == Py_None)) {
+    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1348; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  }
+  __pyx_t_1 = ((PyObject *)__pyx_v_names); __Pyx_INCREF(__pyx_t_1); __pyx_t_3 = 0;
+  for (;;) {
+    if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
+    #if CYTHON_COMPILING_IN_CPYTHON
+    __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_4); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1348; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    #else
+    __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1348; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    #endif
+    __Pyx_XDECREF(__pyx_v_name);
+    __pyx_v_name = __pyx_t_4;
+    __pyx_t_4 = 0;
+
+    /* "h5py/h5t.pyx":1349
+ *     offset = 0
+ *     for name in names:
+ *         ename = name.encode('utf8') if isinstance(name, unicode) else name             # <<<<<<<<<<<<<<
+ *         dt_tmp = dt.fields[name][0]
+ *         type_tmp = py_create(dt_tmp, logical=logical)
+ */
+    __pyx_t_5 = PyUnicode_Check(__pyx_v_name); 
+    if (__pyx_t_5) {
+      __pyx_t_6 = PyObject_GetAttr(__pyx_v_name, __pyx_n_s__encode); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1349; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_6);
+      __pyx_t_7 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_k_tuple_31), NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1349; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_7);
+      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+      __pyx_t_4 = __pyx_t_7;
+      __pyx_t_7 = 0;
+    } else {
+      __Pyx_INCREF(__pyx_v_name);
+      __pyx_t_4 = __pyx_v_name;
+    }
+    __Pyx_XDECREF(__pyx_v_ename);
+    __pyx_v_ename = __pyx_t_4;
+    __pyx_t_4 = 0;
+
+    /* "h5py/h5t.pyx":1350
+ *     for name in names:
+ *         ename = name.encode('utf8') if isinstance(name, unicode) else name
+ *         dt_tmp = dt.fields[name][0]             # <<<<<<<<<<<<<<
+ *         type_tmp = py_create(dt_tmp, logical=logical)
+ *         H5Tset_size(tid, offset+type_tmp.get_size())
+ */
+    __pyx_t_4 = PyObject_GetItem(__pyx_v_dt->fields, __pyx_v_name); if (!__pyx_t_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1350; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_7 = __Pyx_GetItemInt(__pyx_t_4, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_7) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1350; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_7);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_4h5py_5numpy_dtype))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1350; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_XDECREF(((PyObject *)__pyx_v_dt_tmp));
+    __pyx_v_dt_tmp = ((PyArray_Descr *)__pyx_t_7);
+    __pyx_t_7 = 0;
+
+    /* "h5py/h5t.pyx":1351
+ *         ename = name.encode('utf8') if isinstance(name, unicode) else name
+ *         dt_tmp = dt.fields[name][0]
+ *         type_tmp = py_create(dt_tmp, logical=logical)             # <<<<<<<<<<<<<<
+ *         H5Tset_size(tid, offset+type_tmp.get_size())
+ *         H5Tinsert(tid, ename, offset, type_tmp.id)
+ */
+    __pyx_t_7 = __Pyx_GetName(__pyx_m, __pyx_n_s__py_create); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1351; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_7);
+    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1351; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_INCREF(((PyObject *)__pyx_v_dt_tmp));
+    PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_v_dt_tmp));
+    __Pyx_GIVEREF(((PyObject *)__pyx_v_dt_tmp));
+    __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1351; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(((PyObject *)__pyx_t_6));
+    __pyx_t_8 = PyInt_FromLong(__pyx_v_logical); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1351; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_8);
+    if (PyDict_SetItem(__pyx_t_6, ((PyObject *)__pyx_n_s__logical), __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1351; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+    __pyx_t_8 = PyObject_Call(__pyx_t_7, ((PyObject *)__pyx_t_4), ((PyObject *)__pyx_t_6)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1351; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_8);
+    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+    __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
+    __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
+    if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_4h5py_3h5t_TypeID))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1351; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_XDECREF(((PyObject *)__pyx_v_type_tmp));
+    __pyx_v_type_tmp = ((struct __pyx_obj_4h5py_3h5t_TypeID *)__pyx_t_8);
+    __pyx_t_8 = 0;
+
+    /* "h5py/h5t.pyx":1352
+ *         dt_tmp = dt.fields[name][0]
+ *         type_tmp = py_create(dt_tmp, logical=logical)
+ *         H5Tset_size(tid, offset+type_tmp.get_size())             # <<<<<<<<<<<<<<
+ *         H5Tinsert(tid, ename, offset, type_tmp.id)
+ *         offset += type_tmp.get_size()
+ */
+    __pyx_t_8 = __Pyx_PyInt_FromSize_t(__pyx_v_offset); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1352; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_8);
+    __pyx_t_6 = PyObject_GetAttr(((PyObject *)__pyx_v_type_tmp), __pyx_n_s__get_size); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1352; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_6);
+    __pyx_t_4 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1352; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+    __pyx_t_6 = PyNumber_Add(__pyx_t_8, __pyx_t_4); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1352; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_6);
+    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_t_9 = __Pyx_PyInt_AsSize_t(__pyx_t_6); if (unlikely((__pyx_t_9 == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1352; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+    __pyx_t_10 = __pyx_f_4h5py_4defs_H5Tset_size(__pyx_v_tid, __pyx_t_9); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1352; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+    /* "h5py/h5t.pyx":1353
+ *         type_tmp = py_create(dt_tmp, logical=logical)
+ *         H5Tset_size(tid, offset+type_tmp.get_size())
+ *         H5Tinsert(tid, ename, offset, type_tmp.id)             # <<<<<<<<<<<<<<
+ *         offset += type_tmp.get_size()
+ * 
+ */
+    __pyx_t_11 = PyBytes_AsString(__pyx_v_ename); if (unlikely((!__pyx_t_11) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1353; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_10 = __pyx_f_4h5py_4defs_H5Tinsert(__pyx_v_tid, __pyx_t_11, __pyx_v_offset, __pyx_v_type_tmp->__pyx_base.id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1353; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+    /* "h5py/h5t.pyx":1354
+ *         H5Tset_size(tid, offset+type_tmp.get_size())
+ *         H5Tinsert(tid, ename, offset, type_tmp.id)
+ *         offset += type_tmp.get_size()             # <<<<<<<<<<<<<<
+ * 
+ *     return TypeCompoundID(tid)
+ */
+    __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_v_offset); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1354; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_6);
+    __pyx_t_4 = PyObject_GetAttr(((PyObject *)__pyx_v_type_tmp), __pyx_n_s__get_size); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1354; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_8 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1354; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_8);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1354; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+    __pyx_t_9 = __Pyx_PyInt_AsSize_t(__pyx_t_4); if (unlikely((__pyx_t_9 == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1354; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_v_offset = __pyx_t_9;
+  }
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+  /* "h5py/h5t.pyx":1356
+ *         offset += type_tmp.get_size()
+ * 
+ *     return TypeCompoundID(tid)             # <<<<<<<<<<<<<<
+ * 
+ * cdef TypeStringID _c_vlen_str():
+ */
+  __Pyx_XDECREF(((PyObject *)__pyx_r));
+  __pyx_t_1 = __Pyx_PyInt_to_py_hid_t(__pyx_v_tid); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1356; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1356; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4h5py_3h5t_TypeCompoundID)), ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1356; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
+  __pyx_r = ((struct __pyx_obj_4h5py_3h5t_TypeCompoundID *)__pyx_t_1);
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = ((struct __pyx_obj_4h5py_3h5t_TypeCompoundID *)Py_None); __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_XDECREF(__pyx_t_8);
+  __Pyx_AddTraceback("h5py.h5t._c_compound", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_type_tmp);
+  __Pyx_XDECREF((PyObject *)__pyx_v_dt_tmp);
+  __Pyx_XDECREF(__pyx_v_fields);
+  __Pyx_XDECREF(__pyx_v_names);
+  __Pyx_XDECREF(__pyx_v_name);
+  __Pyx_XDECREF(__pyx_v_ename);
+  __Pyx_XGIVEREF((PyObject *)__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":1358
+ *     return TypeCompoundID(tid)
+ * 
+ * cdef TypeStringID _c_vlen_str():             # <<<<<<<<<<<<<<
+ *     # Variable-length strings
+ *     cdef hid_t tid
+ */
+
+static struct __pyx_obj_4h5py_3h5t_TypeStringID *__pyx_f_4h5py_3h5t__c_vlen_str(void) {
+  hid_t __pyx_v_tid;
+  struct __pyx_obj_4h5py_3h5t_TypeStringID *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  hid_t __pyx_t_1;
+  herr_t __pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_c_vlen_str", 0);
+
+  /* "h5py/h5t.pyx":1361
+ *     # Variable-length strings
+ *     cdef hid_t tid
+ *     tid = H5Tcopy(H5T_C_S1)             # <<<<<<<<<<<<<<
+ *     H5Tset_size(tid, H5T_VARIABLE)
+ *     return TypeStringID(tid)
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Tcopy(H5T_C_S1); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1361; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v_tid = __pyx_t_1;
+
+  /* "h5py/h5t.pyx":1362
+ *     cdef hid_t tid
+ *     tid = H5Tcopy(H5T_C_S1)
+ *     H5Tset_size(tid, H5T_VARIABLE)             # <<<<<<<<<<<<<<
+ *     return TypeStringID(tid)
+ * 
+ */
+  __pyx_t_2 = __pyx_f_4h5py_4defs_H5Tset_size(__pyx_v_tid, H5T_VARIABLE); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1362; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5t.pyx":1363
+ *     tid = H5Tcopy(H5T_C_S1)
+ *     H5Tset_size(tid, H5T_VARIABLE)
+ *     return TypeStringID(tid)             # <<<<<<<<<<<<<<
+ * 
+ * cdef TypeStringID _c_vlen_unicode():
+ */
+  __Pyx_XDECREF(((PyObject *)__pyx_r));
+  __pyx_t_3 = __Pyx_PyInt_to_py_hid_t(__pyx_v_tid); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1363; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1363; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_3);
+  __pyx_t_3 = 0;
+  __pyx_t_3 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4h5py_3h5t_TypeStringID)), ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1363; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
+  __pyx_r = ((struct __pyx_obj_4h5py_3h5t_TypeStringID *)__pyx_t_3);
+  __pyx_t_3 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = ((struct __pyx_obj_4h5py_3h5t_TypeStringID *)Py_None); __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("h5py.h5t._c_vlen_str", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF((PyObject *)__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":1365
+ *     return TypeStringID(tid)
+ * 
+ * cdef TypeStringID _c_vlen_unicode():             # <<<<<<<<<<<<<<
+ *     cdef hid_t tid
+ *     tid = H5Tcopy(H5T_C_S1)
+ */
+
+static struct __pyx_obj_4h5py_3h5t_TypeStringID *__pyx_f_4h5py_3h5t__c_vlen_unicode(void) {
+  hid_t __pyx_v_tid;
+  struct __pyx_obj_4h5py_3h5t_TypeStringID *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  hid_t __pyx_t_1;
+  herr_t __pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_c_vlen_unicode", 0);
+
+  /* "h5py/h5t.pyx":1367
+ * cdef TypeStringID _c_vlen_unicode():
+ *     cdef hid_t tid
+ *     tid = H5Tcopy(H5T_C_S1)             # <<<<<<<<<<<<<<
+ *     H5Tset_size(tid, H5T_VARIABLE)
+ *     H5Tset_cset(tid, H5T_CSET_UTF8)
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Tcopy(H5T_C_S1); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1367; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v_tid = __pyx_t_1;
+
+  /* "h5py/h5t.pyx":1368
+ *     cdef hid_t tid
+ *     tid = H5Tcopy(H5T_C_S1)
+ *     H5Tset_size(tid, H5T_VARIABLE)             # <<<<<<<<<<<<<<
+ *     H5Tset_cset(tid, H5T_CSET_UTF8)
+ *     return TypeStringID(tid)
+ */
+  __pyx_t_2 = __pyx_f_4h5py_4defs_H5Tset_size(__pyx_v_tid, H5T_VARIABLE); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1368; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5t.pyx":1369
+ *     tid = H5Tcopy(H5T_C_S1)
+ *     H5Tset_size(tid, H5T_VARIABLE)
+ *     H5Tset_cset(tid, H5T_CSET_UTF8)             # <<<<<<<<<<<<<<
+ *     return TypeStringID(tid)
+ * 
+ */
+  __pyx_t_2 = __pyx_f_4h5py_4defs_H5Tset_cset(__pyx_v_tid, ((H5T_cset_t)H5T_CSET_UTF8)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1369; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5t.pyx":1370
+ *     H5Tset_size(tid, H5T_VARIABLE)
+ *     H5Tset_cset(tid, H5T_CSET_UTF8)
+ *     return TypeStringID(tid)             # <<<<<<<<<<<<<<
+ * 
+ * cdef TypeReferenceID _c_ref(object refclass):
+ */
+  __Pyx_XDECREF(((PyObject *)__pyx_r));
+  __pyx_t_3 = __Pyx_PyInt_to_py_hid_t(__pyx_v_tid); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1370; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1370; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_3);
+  __pyx_t_3 = 0;
+  __pyx_t_3 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4h5py_3h5t_TypeStringID)), ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1370; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
+  __pyx_r = ((struct __pyx_obj_4h5py_3h5t_TypeStringID *)__pyx_t_3);
+  __pyx_t_3 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = ((struct __pyx_obj_4h5py_3h5t_TypeStringID *)Py_None); __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("h5py.h5t._c_vlen_unicode", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF((PyObject *)__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":1372
+ *     return TypeStringID(tid)
+ * 
+ * cdef TypeReferenceID _c_ref(object refclass):             # <<<<<<<<<<<<<<
+ *     if refclass is Reference:
+ *         return STD_REF_OBJ
+ */
+
+static struct __pyx_obj_4h5py_3h5t_TypeReferenceID *__pyx_f_4h5py_3h5t__c_ref(PyObject *__pyx_v_refclass) {
+  struct __pyx_obj_4h5py_3h5t_TypeReferenceID *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_c_ref", 0);
+
+  /* "h5py/h5t.pyx":1373
+ * 
+ * cdef TypeReferenceID _c_ref(object refclass):
+ *     if refclass is Reference:             # <<<<<<<<<<<<<<
+ *         return STD_REF_OBJ
+ *     elif refclass is RegionReference:
+ */
+  __pyx_t_1 = (__pyx_v_refclass == ((PyObject *)((PyObject*)__pyx_ptype_4h5py_3h5r_Reference)));
+  if (__pyx_t_1) {
+
+    /* "h5py/h5t.pyx":1374
+ * cdef TypeReferenceID _c_ref(object refclass):
+ *     if refclass is Reference:
+ *         return STD_REF_OBJ             # <<<<<<<<<<<<<<
+ *     elif refclass is RegionReference:
+ *         return STD_REF_DSETREG
+ */
+    __Pyx_XDECREF(((PyObject *)__pyx_r));
+    __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__STD_REF_OBJ); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1374; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_4h5py_3h5t_TypeReferenceID))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1374; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_r = ((struct __pyx_obj_4h5py_3h5t_TypeReferenceID *)__pyx_t_2);
+    __pyx_t_2 = 0;
+    goto __pyx_L0;
+    goto __pyx_L3;
+  }
+
+  /* "h5py/h5t.pyx":1375
+ *     if refclass is Reference:
+ *         return STD_REF_OBJ
+ *     elif refclass is RegionReference:             # <<<<<<<<<<<<<<
+ *         return STD_REF_DSETREG
+ *     raise TypeError("Unrecognized reference code")
+ */
+  __pyx_t_1 = (__pyx_v_refclass == ((PyObject *)((PyObject*)__pyx_ptype_4h5py_3h5r_RegionReference)));
+  if (__pyx_t_1) {
+
+    /* "h5py/h5t.pyx":1376
+ *         return STD_REF_OBJ
+ *     elif refclass is RegionReference:
+ *         return STD_REF_DSETREG             # <<<<<<<<<<<<<<
+ *     raise TypeError("Unrecognized reference code")
+ * 
+ */
+    __Pyx_XDECREF(((PyObject *)__pyx_r));
+    __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__STD_REF_DSETREG); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1376; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_4h5py_3h5t_TypeReferenceID))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1376; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_r = ((struct __pyx_obj_4h5py_3h5t_TypeReferenceID *)__pyx_t_2);
+    __pyx_t_2 = 0;
+    goto __pyx_L0;
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  /* "h5py/h5t.pyx":1377
+ *     elif refclass is RegionReference:
+ *         return STD_REF_DSETREG
+ *     raise TypeError("Unrecognized reference code")             # <<<<<<<<<<<<<<
+ * 
+ * cpdef TypeID py_create(object dtype_in, bint logical=0):
+ */
+  __pyx_t_2 = PyObject_Call(__pyx_builtin_TypeError, ((PyObject *)__pyx_k_tuple_33), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1377; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_Raise(__pyx_t_2, 0, 0, 0);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1377; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  __pyx_r = ((struct __pyx_obj_4h5py_3h5t_TypeReferenceID *)Py_None); __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5t._c_ref", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF((PyObject *)__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":1379
+ *     raise TypeError("Unrecognized reference code")
+ * 
+ * cpdef TypeID py_create(object dtype_in, bint logical=0):             # <<<<<<<<<<<<<<
+ *     """(OBJECT dtype_in, BOOL logical=False) => TypeID
+ * 
+ */
+
+static PyObject *__pyx_pw_4h5py_3h5t_15py_create(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_f_4h5py_3h5t_py_create(PyObject *__pyx_v_dtype_in, CYTHON_UNUSED int __pyx_skip_dispatch, struct __pyx_opt_args_4h5py_3h5t_py_create *__pyx_optional_args) {
+  int __pyx_v_logical = ((int)0);
+  PyArray_Descr *__pyx_v_dt = 0;
+  char __pyx_v_kind;
+  PyObject *__pyx_v_enum_vals = NULL;
+  PyObject *__pyx_v_vlen = NULL;
+  PyObject *__pyx_v_refclass = NULL;
+  struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  char __pyx_t_3;
+  int __pyx_t_4;
+  PyObject *__pyx_t_5 = NULL;
+  int __pyx_t_6;
+  int __pyx_t_7;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("py_create", 0);
+  if (__pyx_optional_args) {
+    if (__pyx_optional_args->__pyx_n > 0) {
+      __pyx_v_logical = __pyx_optional_args->logical;
+    }
+  }
+
+  /* "h5py/h5t.pyx":1396
+ *         length string type.
+ *     """
+ *     cdef dtype dt = dtype(dtype_in)             # <<<<<<<<<<<<<<
+ *     cdef char kind = dt.kind
+ * 
+ */
+  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1396; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(__pyx_v_dtype_in);
+  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_dtype_in);
+  __Pyx_GIVEREF(__pyx_v_dtype_in);
+  __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4h5py_5numpy_dtype)), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1396; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
+  __pyx_v_dt = ((PyArray_Descr *)__pyx_t_2);
+  __pyx_t_2 = 0;
+
+  /* "h5py/h5t.pyx":1397
+ *     """
+ *     cdef dtype dt = dtype(dtype_in)
+ *     cdef char kind = dt.kind             # <<<<<<<<<<<<<<
+ * 
+ *     # Float
+ */
+  __pyx_t_3 = __pyx_v_dt->kind;
+  __pyx_v_kind = __pyx_t_3;
+
+  /* "h5py/h5t.pyx":1400
+ * 
+ *     # Float
+ *     if kind == c'f':             # <<<<<<<<<<<<<<
+ *         return _c_float(dt)
+ * 
+ */
+  __pyx_t_4 = (__pyx_v_kind == 'f');
+  if (__pyx_t_4) {
+
+    /* "h5py/h5t.pyx":1401
+ *     # Float
+ *     if kind == c'f':
+ *         return _c_float(dt)             # <<<<<<<<<<<<<<
+ * 
+ *     # Integer
+ */
+    __Pyx_XDECREF(((PyObject *)__pyx_r));
+    __pyx_t_2 = ((PyObject *)__pyx_f_4h5py_3h5t__c_float(__pyx_v_dt)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1401; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_r = ((struct __pyx_obj_4h5py_3h5t_TypeID *)__pyx_t_2);
+    __pyx_t_2 = 0;
+    goto __pyx_L0;
+    goto __pyx_L3;
+  }
+
+  /* "h5py/h5t.pyx":1404
+ * 
+ *     # Integer
+ *     elif kind == c'u' or kind == c'i':             # <<<<<<<<<<<<<<
+ * 
+ *         if logical:
+ */
+  switch (__pyx_v_kind) {
+    case 'u':
+    case 'i':
+    __pyx_t_4 = 1;
+    break;
+    default:
+    __pyx_t_4 = 0;
+    break;
+  }
+  if (__pyx_t_4) {
+
+    /* "h5py/h5t.pyx":1406
+ *     elif kind == c'u' or kind == c'i':
+ * 
+ *         if logical:             # <<<<<<<<<<<<<<
+ *             # Check for an enumeration hint
+ *             enum_vals = check_dtype(enum=dt)
+ */
+    if (__pyx_v_logical) {
+
+      /* "h5py/h5t.pyx":1408
+ *         if logical:
+ *             # Check for an enumeration hint
+ *             enum_vals = check_dtype(enum=dt)             # <<<<<<<<<<<<<<
+ *             if enum_vals is not None:
+ *                 return _c_enum(dt, enum_vals)
+ */
+      __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__check_dtype); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1408; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_2);
+      __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1408; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(((PyObject *)__pyx_t_1));
+      if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__enum), ((PyObject *)__pyx_v_dt)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1408; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1408; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_5);
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+      __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
+      __pyx_v_enum_vals = __pyx_t_5;
+      __pyx_t_5 = 0;
+
+      /* "h5py/h5t.pyx":1409
+ *             # Check for an enumeration hint
+ *             enum_vals = check_dtype(enum=dt)
+ *             if enum_vals is not None:             # <<<<<<<<<<<<<<
+ *                 return _c_enum(dt, enum_vals)
+ * 
+ */
+      __pyx_t_4 = (__pyx_v_enum_vals != Py_None);
+      if (__pyx_t_4) {
+
+        /* "h5py/h5t.pyx":1410
+ *             enum_vals = check_dtype(enum=dt)
+ *             if enum_vals is not None:
+ *                 return _c_enum(dt, enum_vals)             # <<<<<<<<<<<<<<
+ * 
+ *         return _c_int(dt)
+ */
+        __Pyx_XDECREF(((PyObject *)__pyx_r));
+        if (!(likely(PyDict_CheckExact(__pyx_v_enum_vals))||((__pyx_v_enum_vals) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected dict, got %.200s", Py_TYPE(__pyx_v_enum_vals)->tp_name), 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1410; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_5 = ((PyObject *)__pyx_f_4h5py_3h5t__c_enum(__pyx_v_dt, ((PyObject*)__pyx_v_enum_vals))); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1410; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_5);
+        __pyx_r = ((struct __pyx_obj_4h5py_3h5t_TypeID *)__pyx_t_5);
+        __pyx_t_5 = 0;
+        goto __pyx_L0;
+        goto __pyx_L5;
+      }
+      __pyx_L5:;
+      goto __pyx_L4;
+    }
+    __pyx_L4:;
+
+    /* "h5py/h5t.pyx":1412
+ *                 return _c_enum(dt, enum_vals)
+ * 
+ *         return _c_int(dt)             # <<<<<<<<<<<<<<
+ * 
+ *     # Complex
+ */
+    __Pyx_XDECREF(((PyObject *)__pyx_r));
+    __pyx_t_5 = ((PyObject *)__pyx_f_4h5py_3h5t__c_int(__pyx_v_dt)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1412; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_5);
+    __pyx_r = ((struct __pyx_obj_4h5py_3h5t_TypeID *)__pyx_t_5);
+    __pyx_t_5 = 0;
+    goto __pyx_L0;
+    goto __pyx_L3;
+  }
+
+  /* "h5py/h5t.pyx":1415
+ * 
+ *     # Complex
+ *     elif kind == c'c':             # <<<<<<<<<<<<<<
+ *         return _c_complex(dt)
+ * 
+ */
+  __pyx_t_4 = (__pyx_v_kind == 'c');
+  if (__pyx_t_4) {
+
+    /* "h5py/h5t.pyx":1416
+ *     # Complex
+ *     elif kind == c'c':
+ *         return _c_complex(dt)             # <<<<<<<<<<<<<<
+ * 
+ *     # Compound
+ */
+    __Pyx_XDECREF(((PyObject *)__pyx_r));
+    __pyx_t_5 = ((PyObject *)__pyx_f_4h5py_3h5t__c_complex(__pyx_v_dt)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1416; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_5);
+    __pyx_r = ((struct __pyx_obj_4h5py_3h5t_TypeID *)__pyx_t_5);
+    __pyx_t_5 = 0;
+    goto __pyx_L0;
+    goto __pyx_L3;
+  }
+
+  /* "h5py/h5t.pyx":1419
+ * 
+ *     # Compound
+ *     elif kind == c'V' and dt.names is not None:             # <<<<<<<<<<<<<<
+ *         return _c_compound(dt, logical)
+ * 
+ */
+  __pyx_t_4 = (__pyx_v_kind == 'V');
+  if (__pyx_t_4) {
+    __pyx_t_5 = PyObject_GetAttr(((PyObject *)__pyx_v_dt), __pyx_n_s__names); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1419; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_5);
+    __pyx_t_6 = (__pyx_t_5 != Py_None);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __pyx_t_7 = __pyx_t_6;
+  } else {
+    __pyx_t_7 = __pyx_t_4;
+  }
+  if (__pyx_t_7) {
+
+    /* "h5py/h5t.pyx":1420
+ *     # Compound
+ *     elif kind == c'V' and dt.names is not None:
+ *         return _c_compound(dt, logical)             # <<<<<<<<<<<<<<
+ * 
+ *     # Array or opaque
+ */
+    __Pyx_XDECREF(((PyObject *)__pyx_r));
+    __pyx_t_5 = ((PyObject *)__pyx_f_4h5py_3h5t__c_compound(__pyx_v_dt, __pyx_v_logical)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1420; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_5);
+    __pyx_r = ((struct __pyx_obj_4h5py_3h5t_TypeID *)__pyx_t_5);
+    __pyx_t_5 = 0;
+    goto __pyx_L0;
+    goto __pyx_L3;
+  }
+
+  /* "h5py/h5t.pyx":1423
+ * 
+ *     # Array or opaque
+ *     elif kind == c'V':             # <<<<<<<<<<<<<<
+ *         if dt.subdtype is not None:
+ *             return _c_array(dt, logical)
+ */
+  __pyx_t_7 = (__pyx_v_kind == 'V');
+  if (__pyx_t_7) {
+
+    /* "h5py/h5t.pyx":1424
+ *     # Array or opaque
+ *     elif kind == c'V':
+ *         if dt.subdtype is not None:             # <<<<<<<<<<<<<<
+ *             return _c_array(dt, logical)
+ *         else:
+ */
+    __pyx_t_5 = PyObject_GetAttr(((PyObject *)__pyx_v_dt), __pyx_n_s__subdtype); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1424; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_5);
+    __pyx_t_7 = (__pyx_t_5 != Py_None);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    if (__pyx_t_7) {
+
+      /* "h5py/h5t.pyx":1425
+ *     elif kind == c'V':
+ *         if dt.subdtype is not None:
+ *             return _c_array(dt, logical)             # <<<<<<<<<<<<<<
+ *         else:
+ *             return _c_opaque(dt)
+ */
+      __Pyx_XDECREF(((PyObject *)__pyx_r));
+      __pyx_t_5 = ((PyObject *)__pyx_f_4h5py_3h5t__c_array(__pyx_v_dt, __pyx_v_logical)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1425; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_5);
+      __pyx_r = ((struct __pyx_obj_4h5py_3h5t_TypeID *)__pyx_t_5);
+      __pyx_t_5 = 0;
+      goto __pyx_L0;
+      goto __pyx_L6;
+    }
+    /*else*/ {
+
+      /* "h5py/h5t.pyx":1427
+ *             return _c_array(dt, logical)
+ *         else:
+ *             return _c_opaque(dt)             # <<<<<<<<<<<<<<
+ * 
+ *     # String
+ */
+      __Pyx_XDECREF(((PyObject *)__pyx_r));
+      __pyx_t_5 = ((PyObject *)__pyx_f_4h5py_3h5t__c_opaque(__pyx_v_dt)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1427; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_5);
+      __pyx_r = ((struct __pyx_obj_4h5py_3h5t_TypeID *)__pyx_t_5);
+      __pyx_t_5 = 0;
+      goto __pyx_L0;
+    }
+    __pyx_L6:;
+    goto __pyx_L3;
+  }
+
+  /* "h5py/h5t.pyx":1430
+ * 
+ *     # String
+ *     elif kind == c'S':             # <<<<<<<<<<<<<<
+ *         return _c_string(dt)
+ * 
+ */
+  __pyx_t_7 = (__pyx_v_kind == 'S');
+  if (__pyx_t_7) {
+
+    /* "h5py/h5t.pyx":1431
+ *     # String
+ *     elif kind == c'S':
+ *         return _c_string(dt)             # <<<<<<<<<<<<<<
+ * 
+ *     # Boolean
+ */
+    __Pyx_XDECREF(((PyObject *)__pyx_r));
+    __pyx_t_5 = ((PyObject *)__pyx_f_4h5py_3h5t__c_string(__pyx_v_dt)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1431; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_5);
+    __pyx_r = ((struct __pyx_obj_4h5py_3h5t_TypeID *)__pyx_t_5);
+    __pyx_t_5 = 0;
+    goto __pyx_L0;
+    goto __pyx_L3;
+  }
+
+  /* "h5py/h5t.pyx":1434
+ * 
+ *     # Boolean
+ *     elif kind == c'b':             # <<<<<<<<<<<<<<
+ *         return _c_bool(dt)
+ * 
+ */
+  __pyx_t_7 = (__pyx_v_kind == 'b');
+  if (__pyx_t_7) {
+
+    /* "h5py/h5t.pyx":1435
+ *     # Boolean
+ *     elif kind == c'b':
+ *         return _c_bool(dt)             # <<<<<<<<<<<<<<
+ * 
+ *     # Object types (including those with vlen hints)
+ */
+    __Pyx_XDECREF(((PyObject *)__pyx_r));
+    __pyx_t_5 = ((PyObject *)__pyx_f_4h5py_3h5t__c_bool(__pyx_v_dt)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1435; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_5);
+    __pyx_r = ((struct __pyx_obj_4h5py_3h5t_TypeID *)__pyx_t_5);
+    __pyx_t_5 = 0;
+    goto __pyx_L0;
+    goto __pyx_L3;
+  }
+
+  /* "h5py/h5t.pyx":1438
+ * 
+ *     # Object types (including those with vlen hints)
+ *     elif kind == c'O':             # <<<<<<<<<<<<<<
+ * 
+ *         if logical:
+ */
+  __pyx_t_7 = (__pyx_v_kind == 'O');
+  if (__pyx_t_7) {
+
+    /* "h5py/h5t.pyx":1440
+ *     elif kind == c'O':
+ * 
+ *         if logical:             # <<<<<<<<<<<<<<
+ *             vlen = check_dtype(vlen=dt)
+ *             if vlen is bytes:
+ */
+    if (__pyx_v_logical) {
+
+      /* "h5py/h5t.pyx":1441
+ * 
+ *         if logical:
+ *             vlen = check_dtype(vlen=dt)             # <<<<<<<<<<<<<<
+ *             if vlen is bytes:
+ *                 return _c_vlen_str()
+ */
+      __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__check_dtype); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1441; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_5);
+      __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1441; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(((PyObject *)__pyx_t_1));
+      if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__vlen), ((PyObject *)__pyx_v_dt)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1441; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_empty_tuple), ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1441; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_2);
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+      __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
+      __pyx_v_vlen = __pyx_t_2;
+      __pyx_t_2 = 0;
+
+      /* "h5py/h5t.pyx":1442
+ *         if logical:
+ *             vlen = check_dtype(vlen=dt)
+ *             if vlen is bytes:             # <<<<<<<<<<<<<<
+ *                 return _c_vlen_str()
+ *             elif vlen is unicode:
+ */
+      __pyx_t_7 = (__pyx_v_vlen == ((PyObject *)((PyObject*)(&PyBytes_Type))));
+      if (__pyx_t_7) {
+
+        /* "h5py/h5t.pyx":1443
+ *             vlen = check_dtype(vlen=dt)
+ *             if vlen is bytes:
+ *                 return _c_vlen_str()             # <<<<<<<<<<<<<<
+ *             elif vlen is unicode:
+ *                 return _c_vlen_unicode()
+ */
+        __Pyx_XDECREF(((PyObject *)__pyx_r));
+        __pyx_t_2 = ((PyObject *)__pyx_f_4h5py_3h5t__c_vlen_str()); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1443; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_2);
+        __pyx_r = ((struct __pyx_obj_4h5py_3h5t_TypeID *)__pyx_t_2);
+        __pyx_t_2 = 0;
+        goto __pyx_L0;
+        goto __pyx_L8;
+      }
+
+      /* "h5py/h5t.pyx":1444
+ *             if vlen is bytes:
+ *                 return _c_vlen_str()
+ *             elif vlen is unicode:             # <<<<<<<<<<<<<<
+ *                 return _c_vlen_unicode()
+ * 
+ */
+      __pyx_t_7 = (__pyx_v_vlen == ((PyObject *)((PyObject*)(&PyUnicode_Type))));
+      if (__pyx_t_7) {
+
+        /* "h5py/h5t.pyx":1445
+ *                 return _c_vlen_str()
+ *             elif vlen is unicode:
+ *                 return _c_vlen_unicode()             # <<<<<<<<<<<<<<
+ * 
+ *             refclass = check_dtype(ref=dt)
+ */
+        __Pyx_XDECREF(((PyObject *)__pyx_r));
+        __pyx_t_2 = ((PyObject *)__pyx_f_4h5py_3h5t__c_vlen_unicode()); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1445; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_2);
+        __pyx_r = ((struct __pyx_obj_4h5py_3h5t_TypeID *)__pyx_t_2);
+        __pyx_t_2 = 0;
+        goto __pyx_L0;
+        goto __pyx_L8;
+      }
+      __pyx_L8:;
+
+      /* "h5py/h5t.pyx":1447
+ *                 return _c_vlen_unicode()
+ * 
+ *             refclass = check_dtype(ref=dt)             # <<<<<<<<<<<<<<
+ *             if refclass is not None:
+ *                     return _c_ref(refclass)
+ */
+      __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__check_dtype); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1447; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_2);
+      __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1447; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(((PyObject *)__pyx_t_1));
+      if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__ref), ((PyObject *)__pyx_v_dt)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1447; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1447; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_5);
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+      __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
+      __pyx_v_refclass = __pyx_t_5;
+      __pyx_t_5 = 0;
+
+      /* "h5py/h5t.pyx":1448
+ * 
+ *             refclass = check_dtype(ref=dt)
+ *             if refclass is not None:             # <<<<<<<<<<<<<<
+ *                     return _c_ref(refclass)
+ * 
+ */
+      __pyx_t_7 = (__pyx_v_refclass != Py_None);
+      if (__pyx_t_7) {
+
+        /* "h5py/h5t.pyx":1449
+ *             refclass = check_dtype(ref=dt)
+ *             if refclass is not None:
+ *                     return _c_ref(refclass)             # <<<<<<<<<<<<<<
+ * 
+ *             raise TypeError("Object dtype %r has no native HDF5 equivalent" % (dt,))
+ */
+        __Pyx_XDECREF(((PyObject *)__pyx_r));
+        __pyx_t_5 = ((PyObject *)__pyx_f_4h5py_3h5t__c_ref(__pyx_v_refclass)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1449; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_5);
+        __pyx_r = ((struct __pyx_obj_4h5py_3h5t_TypeID *)__pyx_t_5);
+        __pyx_t_5 = 0;
+        goto __pyx_L0;
+        goto __pyx_L9;
+      }
+      __pyx_L9:;
+
+      /* "h5py/h5t.pyx":1451
+ *                     return _c_ref(refclass)
+ * 
+ *             raise TypeError("Object dtype %r has no native HDF5 equivalent" % (dt,))             # <<<<<<<<<<<<<<
+ * 
+ *         return PYTHON_OBJECT
+ */
+      __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1451; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_5);
+      __Pyx_INCREF(((PyObject *)__pyx_v_dt));
+      PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_v_dt));
+      __Pyx_GIVEREF(((PyObject *)__pyx_v_dt));
+      __pyx_t_1 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_34), ((PyObject *)__pyx_t_5)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1451; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(((PyObject *)__pyx_t_1));
+      __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
+      __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1451; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_5);
+      PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_t_1));
+      __Pyx_GIVEREF(((PyObject *)__pyx_t_1));
+      __pyx_t_1 = 0;
+      __pyx_t_1 = PyObject_Call(__pyx_builtin_TypeError, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1451; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
+      __Pyx_Raise(__pyx_t_1, 0, 0, 0);
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1451; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      goto __pyx_L7;
+    }
+    __pyx_L7:;
+
+    /* "h5py/h5t.pyx":1453
+ *             raise TypeError("Object dtype %r has no native HDF5 equivalent" % (dt,))
+ * 
+ *         return PYTHON_OBJECT             # <<<<<<<<<<<<<<
+ * 
+ *     # Unrecognized
+ */
+    __Pyx_XDECREF(((PyObject *)__pyx_r));
+    __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__PYTHON_OBJECT); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1453; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_4h5py_3h5t_TypeID))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1453; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_r = ((struct __pyx_obj_4h5py_3h5t_TypeID *)__pyx_t_1);
+    __pyx_t_1 = 0;
+    goto __pyx_L0;
+    goto __pyx_L3;
+  }
+  /*else*/ {
+
+    /* "h5py/h5t.pyx":1457
+ *     # Unrecognized
+ *     else:
+ *         raise TypeError("No conversion path for dtype: %s" % repr(dt))             # <<<<<<<<<<<<<<
+ * 
+ * def special_dtype(**kwds):
+ */
+    __pyx_t_1 = PyObject_Repr(((PyObject *)__pyx_v_dt)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1457; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_5 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_35), __pyx_t_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1457; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(((PyObject *)__pyx_t_5));
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1457; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_t_5));
+    __Pyx_GIVEREF(((PyObject *)__pyx_t_5));
+    __pyx_t_5 = 0;
+    __pyx_t_5 = PyObject_Call(__pyx_builtin_TypeError, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1457; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
+    __Pyx_Raise(__pyx_t_5, 0, 0, 0);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1457; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  }
+  __pyx_L3:;
+
+  __pyx_r = ((struct __pyx_obj_4h5py_3h5t_TypeID *)Py_None); __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_AddTraceback("h5py.h5t.py_create", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_dt);
+  __Pyx_XDECREF(__pyx_v_enum_vals);
+  __Pyx_XDECREF(__pyx_v_vlen);
+  __Pyx_XDECREF(__pyx_v_refclass);
+  __Pyx_XGIVEREF((PyObject *)__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5t_15py_create(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_4h5py_3h5t_14py_create[] = "(OBJECT dtype_in, BOOL logical=False) => TypeID\n\n    Given a Numpy dtype object, generate a byte-for-byte memory-compatible\n    HDF5 datatype object.  The result is guaranteed to be transient and\n    unlocked.\n\n    Argument dtype_in may be a dtype object, or anything which can be\n    converted to a dtype, including strings like '<i4'.\n\n    logical\n        If this flag is set, instead of returning a byte-for-byte identical\n      [...]
+static PyObject *__pyx_pw_4h5py_3h5t_15py_create(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_dtype_in = 0;
+  int __pyx_v_logical;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("py_create (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__dtype_in,&__pyx_n_s__logical,0};
+    PyObject* values[2] = {0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__dtype_in)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__logical);
+          if (value) { values[1] = value; kw_args--; }
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "py_create") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1379; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else {
+      switch (PyTuple_GET_SIZE(__pyx_args)) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+    }
+    __pyx_v_dtype_in = values[0];
+    if (values[1]) {
+      __pyx_v_logical = __Pyx_PyObject_IsTrue(values[1]); if (unlikely((__pyx_v_logical == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1379; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    } else {
+      __pyx_v_logical = ((int)0);
+    }
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("py_create", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1379; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5t.py_create", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_3h5t_14py_create(__pyx_self, __pyx_v_dtype_in, __pyx_v_logical);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":1379
+ *     raise TypeError("Unrecognized reference code")
+ * 
+ * cpdef TypeID py_create(object dtype_in, bint logical=0):             # <<<<<<<<<<<<<<
+ *     """(OBJECT dtype_in, BOOL logical=False) => TypeID
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5t_14py_create(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_dtype_in, int __pyx_v_logical) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  struct __pyx_opt_args_4h5py_3h5t_py_create __pyx_t_2;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("py_create", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_2.__pyx_n = 1;
+  __pyx_t_2.logical = __pyx_v_logical;
+  __pyx_t_1 = ((PyObject *)__pyx_f_4h5py_3h5t_py_create(__pyx_v_dtype_in, 0, &__pyx_t_2)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1379; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py.h5t.py_create", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5t_17special_dtype(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_4h5py_3h5t_16special_dtype[] = " Create a new h5py \"special\" type.  Only one keyword may be given.\n\n    Legal keywords are:\n\n    vlen = basetype\n        Base type for HDF5 variable-length datatype.  Currently only the\n        builtin string class (str) is allowed.\n        Example: special_dtype( vlen=str )\n\n    enum = (basetype, values_dict)\n        Create a NumPy representation of an HDF5 enumerated type.  Provide\n        a 2-tuple containing an (integ [...]
+static PyMethodDef __pyx_mdef_4h5py_3h5t_17special_dtype = {__Pyx_NAMESTR("special_dtype"), (PyCFunction)__pyx_pw_4h5py_3h5t_17special_dtype, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5t_16special_dtype)};
+static PyObject *__pyx_pw_4h5py_3h5t_17special_dtype(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_kwds = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("special_dtype (wrapper)", 0);
+  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
+    __Pyx_RaiseArgtupleInvalid("special_dtype", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
+  if (__pyx_kwds && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "special_dtype", 1))) return NULL;
+  __pyx_v_kwds = (__pyx_kwds) ? PyDict_Copy(__pyx_kwds) : PyDict_New();
+  if (unlikely(!__pyx_v_kwds)) return NULL;
+  __Pyx_GOTREF(__pyx_v_kwds);
+  __pyx_r = __pyx_pf_4h5py_3h5t_16special_dtype(__pyx_self, __pyx_v_kwds);
+  __Pyx_XDECREF(__pyx_v_kwds);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":1459
+ *         raise TypeError("No conversion path for dtype: %s" % repr(dt))
+ * 
+ * def special_dtype(**kwds):             # <<<<<<<<<<<<<<
+ *     """ Create a new h5py "special" type.  Only one keyword may be given.
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5t_16special_dtype(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_kwds) {
+  PyObject *__pyx_v_name = NULL;
+  PyObject *__pyx_v_val = NULL;
+  PyObject *__pyx_v_dt = NULL;
+  PyObject *__pyx_v_enum_vals = NULL;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  Py_ssize_t __pyx_t_1;
+  int __pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *(*__pyx_t_7)(PyObject *);
+  int __pyx_t_8;
+  int __pyx_t_9;
+  PyObject *__pyx_t_10 = NULL;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  int __pyx_t_13;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("special_dtype", 0);
+
+  /* "h5py/h5t.pyx":1479
+ *     """
+ * 
+ *     if len(kwds) != 1:             # <<<<<<<<<<<<<<
+ *         raise TypeError("Exactly one keyword may be provided")
+ * 
+ */
+  __pyx_t_1 = PyDict_Size(((PyObject *)__pyx_v_kwds)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1479; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = (__pyx_t_1 != 1);
+  if (__pyx_t_2) {
+
+    /* "h5py/h5t.pyx":1480
+ * 
+ *     if len(kwds) != 1:
+ *         raise TypeError("Exactly one keyword may be provided")             # <<<<<<<<<<<<<<
+ * 
+ *     name, val = kwds.popitem()
+ */
+    __pyx_t_3 = PyObject_Call(__pyx_builtin_TypeError, ((PyObject *)__pyx_k_tuple_37), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1480; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1480; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  /* "h5py/h5t.pyx":1482
+ *         raise TypeError("Exactly one keyword may be provided")
+ * 
+ *     name, val = kwds.popitem()             # <<<<<<<<<<<<<<
+ * 
+ *     if name == 'vlen':
+ */
+  __pyx_t_3 = PyObject_GetAttr(((PyObject *)__pyx_v_kwds), __pyx_n_s__popitem); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1482; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1482; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) {
+    PyObject* sequence = __pyx_t_4;
+    #if CYTHON_COMPILING_IN_CPYTHON
+    Py_ssize_t size = Py_SIZE(sequence);
+    #else
+    Py_ssize_t size = PySequence_Size(sequence);
+    #endif
+    if (unlikely(size != 2)) {
+      if (size > 2) __Pyx_RaiseTooManyValuesError(2);
+      else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1482; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    }
+    #if CYTHON_COMPILING_IN_CPYTHON
+    if (likely(PyTuple_CheckExact(sequence))) {
+      __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0); 
+      __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); 
+    } else {
+      __pyx_t_3 = PyList_GET_ITEM(sequence, 0); 
+      __pyx_t_5 = PyList_GET_ITEM(sequence, 1); 
+    }
+    __Pyx_INCREF(__pyx_t_3);
+    __Pyx_INCREF(__pyx_t_5);
+    #else
+    __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1482; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1482; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_5);
+    #endif
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  } else
+  {
+    Py_ssize_t index = -1;
+    __pyx_t_6 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1482; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_6);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_t_7 = Py_TYPE(__pyx_t_6)->tp_iternext;
+    index = 0; __pyx_t_3 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_3)) goto __pyx_L4_unpacking_failed;
+    __Pyx_GOTREF(__pyx_t_3);
+    index = 1; __pyx_t_5 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_5)) goto __pyx_L4_unpacking_failed;
+    __Pyx_GOTREF(__pyx_t_5);
+    if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_6), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1482; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = NULL;
+    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+    goto __pyx_L5_unpacking_done;
+    __pyx_L4_unpacking_failed:;
+    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+    __pyx_t_7 = NULL;
+    if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1482; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_L5_unpacking_done:;
+  }
+  __pyx_v_name = __pyx_t_3;
+  __pyx_t_3 = 0;
+  __pyx_v_val = __pyx_t_5;
+  __pyx_t_5 = 0;
+
+  /* "h5py/h5t.pyx":1484
+ *     name, val = kwds.popitem()
+ * 
+ *     if name == 'vlen':             # <<<<<<<<<<<<<<
+ *         if val not in (bytes, unicode):
+ *             raise NotImplementedError("Only byte or unicode string vlens are currently supported")
+ */
+  __pyx_t_4 = PyObject_RichCompare(__pyx_v_name, ((PyObject *)__pyx_n_s__vlen), Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1484; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1484; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (__pyx_t_2) {
+
+    /* "h5py/h5t.pyx":1485
+ * 
+ *     if name == 'vlen':
+ *         if val not in (bytes, unicode):             # <<<<<<<<<<<<<<
+ *             raise NotImplementedError("Only byte or unicode string vlens are currently supported")
+ * 
+ */
+    __Pyx_INCREF(__pyx_v_val);
+    __pyx_t_4 = __pyx_v_val;
+    __pyx_t_5 = PyObject_RichCompare(__pyx_t_4, ((PyObject *)((PyObject*)(&PyBytes_Type))), Py_NE); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1485; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1485; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    if (((int)__pyx_t_2)) {
+      __pyx_t_5 = PyObject_RichCompare(__pyx_t_4, ((PyObject *)((PyObject*)(&PyUnicode_Type))), Py_NE); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1485; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely((__pyx_t_8 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1485; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+      __pyx_t_9 = ((int)__pyx_t_8);
+    } else {
+      __pyx_t_9 = ((int)__pyx_t_2);
+    }
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_t_2 = __pyx_t_9;
+    if (__pyx_t_2) {
+
+      /* "h5py/h5t.pyx":1486
+ *     if name == 'vlen':
+ *         if val not in (bytes, unicode):
+ *             raise NotImplementedError("Only byte or unicode string vlens are currently supported")             # <<<<<<<<<<<<<<
+ * 
+ *         return dtype(('O', [( ({'type': val},'vlen'), 'O' )] ))
+ */
+      __pyx_t_4 = PyObject_Call(__pyx_builtin_NotImplementedError, ((PyObject *)__pyx_k_tuple_39), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1486; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_4);
+      __Pyx_Raise(__pyx_t_4, 0, 0, 0);
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1486; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      goto __pyx_L7;
+    }
+    __pyx_L7:;
+
+    /* "h5py/h5t.pyx":1488
+ *             raise NotImplementedError("Only byte or unicode string vlens are currently supported")
+ * 
+ *         return dtype(('O', [( ({'type': val},'vlen'), 'O' )] ))             # <<<<<<<<<<<<<<
+ * 
+ *     if name == 'enum':
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1488; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(((PyObject *)__pyx_t_4));
+    if (PyDict_SetItem(__pyx_t_4, ((PyObject *)__pyx_n_s__type), __pyx_v_val) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1488; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1488; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_5);
+    PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_t_4));
+    __Pyx_GIVEREF(((PyObject *)__pyx_t_4));
+    __Pyx_INCREF(((PyObject *)__pyx_n_s__vlen));
+    PyTuple_SET_ITEM(__pyx_t_5, 1, ((PyObject *)__pyx_n_s__vlen));
+    __Pyx_GIVEREF(((PyObject *)__pyx_n_s__vlen));
+    __pyx_t_4 = 0;
+    __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1488; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_t_5));
+    __Pyx_GIVEREF(((PyObject *)__pyx_t_5));
+    __Pyx_INCREF(((PyObject *)__pyx_n_s__O));
+    PyTuple_SET_ITEM(__pyx_t_4, 1, ((PyObject *)__pyx_n_s__O));
+    __Pyx_GIVEREF(((PyObject *)__pyx_n_s__O));
+    __pyx_t_5 = 0;
+    __pyx_t_5 = PyList_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1488; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_5);
+    PyList_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_t_4));
+    __Pyx_GIVEREF(((PyObject *)__pyx_t_4));
+    __pyx_t_4 = 0;
+    __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1488; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_INCREF(((PyObject *)__pyx_n_s__O));
+    PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_n_s__O));
+    __Pyx_GIVEREF(((PyObject *)__pyx_n_s__O));
+    PyTuple_SET_ITEM(__pyx_t_4, 1, ((PyObject *)__pyx_t_5));
+    __Pyx_GIVEREF(((PyObject *)__pyx_t_5));
+    __pyx_t_5 = 0;
+    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1488; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_5);
+    PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_t_4));
+    __Pyx_GIVEREF(((PyObject *)__pyx_t_4));
+    __pyx_t_4 = 0;
+    __pyx_t_4 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4h5py_5numpy_dtype)), ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1488; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
+    __pyx_r = __pyx_t_4;
+    __pyx_t_4 = 0;
+    goto __pyx_L0;
+    goto __pyx_L6;
+  }
+  __pyx_L6:;
+
+  /* "h5py/h5t.pyx":1490
+ *         return dtype(('O', [( ({'type': val},'vlen'), 'O' )] ))
+ * 
+ *     if name == 'enum':             # <<<<<<<<<<<<<<
+ * 
+ *         try:
+ */
+  __pyx_t_4 = PyObject_RichCompare(__pyx_v_name, ((PyObject *)__pyx_n_s__enum), Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1490; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1490; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (__pyx_t_2) {
+
+    /* "h5py/h5t.pyx":1492
+ *     if name == 'enum':
+ * 
+ *         try:             # <<<<<<<<<<<<<<
+ *             dt, enum_vals = val
+ *         except TypeError:
+ */
+    {
+      __Pyx_ExceptionSave(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12);
+      __Pyx_XGOTREF(__pyx_t_10);
+      __Pyx_XGOTREF(__pyx_t_11);
+      __Pyx_XGOTREF(__pyx_t_12);
+      /*try:*/ {
+
+        /* "h5py/h5t.pyx":1493
+ * 
+ *         try:
+ *             dt, enum_vals = val             # <<<<<<<<<<<<<<
+ *         except TypeError:
+ *             raise TypeError("Enums must be created from a 2-tuple (basetype, values_dict)")
+ */
+        if ((likely(PyTuple_CheckExact(__pyx_v_val))) || (PyList_CheckExact(__pyx_v_val))) {
+          PyObject* sequence = __pyx_v_val;
+          #if CYTHON_COMPILING_IN_CPYTHON
+          Py_ssize_t size = Py_SIZE(sequence);
+          #else
+          Py_ssize_t size = PySequence_Size(sequence);
+          #endif
+          if (unlikely(size != 2)) {
+            if (size > 2) __Pyx_RaiseTooManyValuesError(2);
+            else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
+            {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1493; __pyx_clineno = __LINE__; goto __pyx_L9_error;}
+          }
+          #if CYTHON_COMPILING_IN_CPYTHON
+          if (likely(PyTuple_CheckExact(sequence))) {
+            __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); 
+            __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); 
+          } else {
+            __pyx_t_4 = PyList_GET_ITEM(sequence, 0); 
+            __pyx_t_5 = PyList_GET_ITEM(sequence, 1); 
+          }
+          __Pyx_INCREF(__pyx_t_4);
+          __Pyx_INCREF(__pyx_t_5);
+          #else
+          __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1493; __pyx_clineno = __LINE__; goto __pyx_L9_error;}
+          __Pyx_GOTREF(__pyx_t_4);
+          __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1493; __pyx_clineno = __LINE__; goto __pyx_L9_error;}
+          __Pyx_GOTREF(__pyx_t_5);
+          #endif
+        } else
+        {
+          Py_ssize_t index = -1;
+          __pyx_t_3 = PyObject_GetIter(__pyx_v_val); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1493; __pyx_clineno = __LINE__; goto __pyx_L9_error;}
+          __Pyx_GOTREF(__pyx_t_3);
+          __pyx_t_7 = Py_TYPE(__pyx_t_3)->tp_iternext;
+          index = 0; __pyx_t_4 = __pyx_t_7(__pyx_t_3); if (unlikely(!__pyx_t_4)) goto __pyx_L17_unpacking_failed;
+          __Pyx_GOTREF(__pyx_t_4);
+          index = 1; __pyx_t_5 = __pyx_t_7(__pyx_t_3); if (unlikely(!__pyx_t_5)) goto __pyx_L17_unpacking_failed;
+          __Pyx_GOTREF(__pyx_t_5);
+          if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_3), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1493; __pyx_clineno = __LINE__; goto __pyx_L9_error;}
+          __pyx_t_7 = NULL;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          goto __pyx_L18_unpacking_done;
+          __pyx_L17_unpacking_failed:;
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          __pyx_t_7 = NULL;
+          if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
+          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1493; __pyx_clineno = __LINE__; goto __pyx_L9_error;}
+          __pyx_L18_unpacking_done:;
+        }
+        __pyx_v_dt = __pyx_t_4;
+        __pyx_t_4 = 0;
+        __pyx_v_enum_vals = __pyx_t_5;
+        __pyx_t_5 = 0;
+      }
+      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
+      __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
+      __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
+      goto __pyx_L16_try_end;
+      __pyx_L9_error:;
+      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+      /* "h5py/h5t.pyx":1494
+ *         try:
+ *             dt, enum_vals = val
+ *         except TypeError:             # <<<<<<<<<<<<<<
+ *             raise TypeError("Enums must be created from a 2-tuple (basetype, values_dict)")
+ * 
+ */
+      __pyx_t_13 = PyErr_ExceptionMatches(__pyx_builtin_TypeError);
+      if (__pyx_t_13) {
+        __Pyx_AddTraceback("h5py.h5t.special_dtype", __pyx_clineno, __pyx_lineno, __pyx_filename);
+        if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_4, &__pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1494; __pyx_clineno = __LINE__; goto __pyx_L11_except_error;}
+        __Pyx_GOTREF(__pyx_t_5);
+        __Pyx_GOTREF(__pyx_t_4);
+        __Pyx_GOTREF(__pyx_t_3);
+
+        /* "h5py/h5t.pyx":1495
+ *             dt, enum_vals = val
+ *         except TypeError:
+ *             raise TypeError("Enums must be created from a 2-tuple (basetype, values_dict)")             # <<<<<<<<<<<<<<
+ * 
+ *         dt = dtype(dt)
+ */
+        __pyx_t_6 = PyObject_Call(__pyx_builtin_TypeError, ((PyObject *)__pyx_k_tuple_41), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1495; __pyx_clineno = __LINE__; goto __pyx_L11_except_error;}
+        __Pyx_GOTREF(__pyx_t_6);
+        __Pyx_Raise(__pyx_t_6, 0, 0, 0);
+        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1495; __pyx_clineno = __LINE__; goto __pyx_L11_except_error;}
+        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+        goto __pyx_L10_exception_handled;
+      }
+      __pyx_L11_except_error:;
+      __Pyx_XGIVEREF(__pyx_t_10);
+      __Pyx_XGIVEREF(__pyx_t_11);
+      __Pyx_XGIVEREF(__pyx_t_12);
+      __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
+      goto __pyx_L1_error;
+      __pyx_L10_exception_handled:;
+      __Pyx_XGIVEREF(__pyx_t_10);
+      __Pyx_XGIVEREF(__pyx_t_11);
+      __Pyx_XGIVEREF(__pyx_t_12);
+      __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
+      __pyx_L16_try_end:;
+    }
+
+    /* "h5py/h5t.pyx":1497
+ *             raise TypeError("Enums must be created from a 2-tuple (basetype, values_dict)")
+ * 
+ *         dt = dtype(dt)             # <<<<<<<<<<<<<<
+ *         if dt.kind not in "iu":
+ *             raise TypeError("Only integer types can be used as enums")
+ */
+    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1497; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_INCREF(__pyx_v_dt);
+    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_dt);
+    __Pyx_GIVEREF(__pyx_v_dt);
+    __pyx_t_4 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4h5py_5numpy_dtype)), ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1497; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_v_dt);
+    __pyx_v_dt = __pyx_t_4;
+    __pyx_t_4 = 0;
+
+    /* "h5py/h5t.pyx":1498
+ * 
+ *         dt = dtype(dt)
+ *         if dt.kind not in "iu":             # <<<<<<<<<<<<<<
+ *             raise TypeError("Only integer types can be used as enums")
+ * 
+ */
+    __pyx_t_4 = PyObject_GetAttr(__pyx_v_dt, __pyx_n_s__kind); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1498; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_2 = (__Pyx_PySequence_Contains(__pyx_t_4, ((PyObject *)__pyx_n_s__iu), Py_NE)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1498; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    if (__pyx_t_2) {
+
+      /* "h5py/h5t.pyx":1499
+ *         dt = dtype(dt)
+ *         if dt.kind not in "iu":
+ *             raise TypeError("Only integer types can be used as enums")             # <<<<<<<<<<<<<<
+ * 
+ *         return dtype((dt, [( ({'vals': enum_vals},'enum'), dt )] ))
+ */
+      __pyx_t_4 = PyObject_Call(__pyx_builtin_TypeError, ((PyObject *)__pyx_k_tuple_43), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1499; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_4);
+      __Pyx_Raise(__pyx_t_4, 0, 0, 0);
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1499; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      goto __pyx_L21;
+    }
+    __pyx_L21:;
+
+    /* "h5py/h5t.pyx":1501
+ *             raise TypeError("Only integer types can be used as enums")
+ * 
+ *         return dtype((dt, [( ({'vals': enum_vals},'enum'), dt )] ))             # <<<<<<<<<<<<<<
+ * 
+ *     if name == 'ref':
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1501; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(((PyObject *)__pyx_t_4));
+    if (PyDict_SetItem(__pyx_t_4, ((PyObject *)__pyx_n_s__vals), __pyx_v_enum_vals) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1501; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1501; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_t_4));
+    __Pyx_GIVEREF(((PyObject *)__pyx_t_4));
+    __Pyx_INCREF(((PyObject *)__pyx_n_s__enum));
+    PyTuple_SET_ITEM(__pyx_t_3, 1, ((PyObject *)__pyx_n_s__enum));
+    __Pyx_GIVEREF(((PyObject *)__pyx_n_s__enum));
+    __pyx_t_4 = 0;
+    __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1501; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_t_3));
+    __Pyx_GIVEREF(((PyObject *)__pyx_t_3));
+    __Pyx_INCREF(__pyx_v_dt);
+    PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_dt);
+    __Pyx_GIVEREF(__pyx_v_dt);
+    __pyx_t_3 = 0;
+    __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1501; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    PyList_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_t_4));
+    __Pyx_GIVEREF(((PyObject *)__pyx_t_4));
+    __pyx_t_4 = 0;
+    __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1501; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_INCREF(__pyx_v_dt);
+    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_dt);
+    __Pyx_GIVEREF(__pyx_v_dt);
+    PyTuple_SET_ITEM(__pyx_t_4, 1, ((PyObject *)__pyx_t_3));
+    __Pyx_GIVEREF(((PyObject *)__pyx_t_3));
+    __pyx_t_3 = 0;
+    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1501; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_t_4));
+    __Pyx_GIVEREF(((PyObject *)__pyx_t_4));
+    __pyx_t_4 = 0;
+    __pyx_t_4 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4h5py_5numpy_dtype)), ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1501; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
+    __pyx_r = __pyx_t_4;
+    __pyx_t_4 = 0;
+    goto __pyx_L0;
+    goto __pyx_L8;
+  }
+  __pyx_L8:;
+
+  /* "h5py/h5t.pyx":1503
+ *         return dtype((dt, [( ({'vals': enum_vals},'enum'), dt )] ))
+ * 
+ *     if name == 'ref':             # <<<<<<<<<<<<<<
+ * 
+ *         if val not in (Reference, RegionReference):
+ */
+  __pyx_t_4 = PyObject_RichCompare(__pyx_v_name, ((PyObject *)__pyx_n_s__ref), Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1503; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1503; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (__pyx_t_2) {
+
+    /* "h5py/h5t.pyx":1505
+ *     if name == 'ref':
+ * 
+ *         if val not in (Reference, RegionReference):             # <<<<<<<<<<<<<<
+ *             raise ValueError("Ref class must be Reference or RegionReference")
+ * 
+ */
+    __Pyx_INCREF(__pyx_v_val);
+    __pyx_t_4 = __pyx_v_val;
+    __pyx_t_3 = PyObject_RichCompare(__pyx_t_4, ((PyObject *)((PyObject*)__pyx_ptype_4h5py_3h5r_Reference)), Py_NE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1505; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1505; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (((int)__pyx_t_2)) {
+      __pyx_t_3 = PyObject_RichCompare(__pyx_t_4, ((PyObject *)((PyObject*)__pyx_ptype_4h5py_3h5r_RegionReference)), Py_NE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1505; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1505; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __pyx_t_8 = ((int)__pyx_t_9);
+    } else {
+      __pyx_t_8 = ((int)__pyx_t_2);
+    }
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_t_2 = __pyx_t_8;
+    if (__pyx_t_2) {
+
+      /* "h5py/h5t.pyx":1506
+ * 
+ *         if val not in (Reference, RegionReference):
+ *             raise ValueError("Ref class must be Reference or RegionReference")             # <<<<<<<<<<<<<<
+ * 
+ *         return dtype(('O', [( ({'type': val},'ref'), 'O' )] ))
+ */
+      __pyx_t_4 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_45), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1506; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_4);
+      __Pyx_Raise(__pyx_t_4, 0, 0, 0);
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1506; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      goto __pyx_L23;
+    }
+    __pyx_L23:;
+
+    /* "h5py/h5t.pyx":1508
+ *             raise ValueError("Ref class must be Reference or RegionReference")
+ * 
+ *         return dtype(('O', [( ({'type': val},'ref'), 'O' )] ))             # <<<<<<<<<<<<<<
+ * 
+ *     raise TypeError('Unknown special type "%s"' % name)
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1508; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(((PyObject *)__pyx_t_4));
+    if (PyDict_SetItem(__pyx_t_4, ((PyObject *)__pyx_n_s__type), __pyx_v_val) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1508; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1508; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_t_4));
+    __Pyx_GIVEREF(((PyObject *)__pyx_t_4));
+    __Pyx_INCREF(((PyObject *)__pyx_n_s__ref));
+    PyTuple_SET_ITEM(__pyx_t_3, 1, ((PyObject *)__pyx_n_s__ref));
+    __Pyx_GIVEREF(((PyObject *)__pyx_n_s__ref));
+    __pyx_t_4 = 0;
+    __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1508; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_t_3));
+    __Pyx_GIVEREF(((PyObject *)__pyx_t_3));
+    __Pyx_INCREF(((PyObject *)__pyx_n_s__O));
+    PyTuple_SET_ITEM(__pyx_t_4, 1, ((PyObject *)__pyx_n_s__O));
+    __Pyx_GIVEREF(((PyObject *)__pyx_n_s__O));
+    __pyx_t_3 = 0;
+    __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1508; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    PyList_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_t_4));
+    __Pyx_GIVEREF(((PyObject *)__pyx_t_4));
+    __pyx_t_4 = 0;
+    __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1508; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_INCREF(((PyObject *)__pyx_n_s__O));
+    PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_n_s__O));
+    __Pyx_GIVEREF(((PyObject *)__pyx_n_s__O));
+    PyTuple_SET_ITEM(__pyx_t_4, 1, ((PyObject *)__pyx_t_3));
+    __Pyx_GIVEREF(((PyObject *)__pyx_t_3));
+    __pyx_t_3 = 0;
+    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1508; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_t_4));
+    __Pyx_GIVEREF(((PyObject *)__pyx_t_4));
+    __pyx_t_4 = 0;
+    __pyx_t_4 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4h5py_5numpy_dtype)), ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1508; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
+    __pyx_r = __pyx_t_4;
+    __pyx_t_4 = 0;
+    goto __pyx_L0;
+    goto __pyx_L22;
+  }
+  __pyx_L22:;
+
+  /* "h5py/h5t.pyx":1510
+ *         return dtype(('O', [( ({'type': val},'ref'), 'O' )] ))
+ * 
+ *     raise TypeError('Unknown special type "%s"' % name)             # <<<<<<<<<<<<<<
+ * 
+ * def check_dtype(**kwds):
+ */
+  __pyx_t_4 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_46), __pyx_v_name); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1510; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(((PyObject *)__pyx_t_4));
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1510; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_t_4));
+  __Pyx_GIVEREF(((PyObject *)__pyx_t_4));
+  __pyx_t_4 = 0;
+  __pyx_t_4 = PyObject_Call(__pyx_builtin_TypeError, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1510; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
+  __Pyx_Raise(__pyx_t_4, 0, 0, 0);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1510; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_AddTraceback("h5py.h5t.special_dtype", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_name);
+  __Pyx_XDECREF(__pyx_v_val);
+  __Pyx_XDECREF(__pyx_v_dt);
+  __Pyx_XDECREF(__pyx_v_enum_vals);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5t_19check_dtype(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_4h5py_3h5t_18check_dtype[] = " Check a dtype for h5py special type \"hint\" information.  Only one\n    keyword may be given.\n\n    vlen = dtype\n        If the dtype represents an HDF5 vlen, returns the Python base class.\n        Currently only builting string vlens (str) are supported.  Returns\n        None if the dtype does not represent an HDF5 vlen.\n\n    enum = dtype\n        If the dtype represents an HDF5 enumerated type, returns the dictionary\n         [...]
+static PyMethodDef __pyx_mdef_4h5py_3h5t_19check_dtype = {__Pyx_NAMESTR("check_dtype"), (PyCFunction)__pyx_pw_4h5py_3h5t_19check_dtype, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5t_18check_dtype)};
+static PyObject *__pyx_pw_4h5py_3h5t_19check_dtype(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_kwds = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("check_dtype (wrapper)", 0);
+  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
+    __Pyx_RaiseArgtupleInvalid("check_dtype", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return NULL;}
+  if (__pyx_kwds && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "check_dtype", 1))) return NULL;
+  __pyx_v_kwds = (__pyx_kwds) ? PyDict_Copy(__pyx_kwds) : PyDict_New();
+  if (unlikely(!__pyx_v_kwds)) return NULL;
+  __Pyx_GOTREF(__pyx_v_kwds);
+  __pyx_r = __pyx_pf_4h5py_3h5t_18check_dtype(__pyx_self, __pyx_v_kwds);
+  __Pyx_XDECREF(__pyx_v_kwds);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":1512
+ *     raise TypeError('Unknown special type "%s"' % name)
+ * 
+ * def check_dtype(**kwds):             # <<<<<<<<<<<<<<
+ *     """ Check a dtype for h5py special type "hint" information.  Only one
+ *     keyword may be given.
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5t_18check_dtype(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_kwds) {
+  PyObject *__pyx_v_name = NULL;
+  PyObject *__pyx_v_dt = NULL;
+  PyObject *__pyx_v_hintkey = NULL;
+  PyObject *__pyx_v_tpl = NULL;
+  PyObject *__pyx_v_hint_dict = NULL;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  Py_ssize_t __pyx_t_1;
+  int __pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *(*__pyx_t_7)(PyObject *);
+  int __pyx_t_8;
+  int __pyx_t_9;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("check_dtype", 0);
+
+  /* "h5py/h5t.pyx":1532
+ *     """
+ * 
+ *     if len(kwds) != 1:             # <<<<<<<<<<<<<<
+ *         raise TypeError("Exactly one keyword may be provided")
+ * 
+ */
+  __pyx_t_1 = PyDict_Size(((PyObject *)__pyx_v_kwds)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1532; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = (__pyx_t_1 != 1);
+  if (__pyx_t_2) {
+
+    /* "h5py/h5t.pyx":1533
+ * 
+ *     if len(kwds) != 1:
+ *         raise TypeError("Exactly one keyword may be provided")             # <<<<<<<<<<<<<<
+ * 
+ *     name, dt = kwds.popitem()
+ */
+    __pyx_t_3 = PyObject_Call(__pyx_builtin_TypeError, ((PyObject *)__pyx_k_tuple_47), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1533; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1533; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  /* "h5py/h5t.pyx":1535
+ *         raise TypeError("Exactly one keyword may be provided")
+ * 
+ *     name, dt = kwds.popitem()             # <<<<<<<<<<<<<<
+ * 
+ *     if name not in ('vlen', 'enum', 'ref'):
+ */
+  __pyx_t_3 = PyObject_GetAttr(((PyObject *)__pyx_v_kwds), __pyx_n_s__popitem); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1535; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1535; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) {
+    PyObject* sequence = __pyx_t_4;
+    #if CYTHON_COMPILING_IN_CPYTHON
+    Py_ssize_t size = Py_SIZE(sequence);
+    #else
+    Py_ssize_t size = PySequence_Size(sequence);
+    #endif
+    if (unlikely(size != 2)) {
+      if (size > 2) __Pyx_RaiseTooManyValuesError(2);
+      else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1535; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    }
+    #if CYTHON_COMPILING_IN_CPYTHON
+    if (likely(PyTuple_CheckExact(sequence))) {
+      __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0); 
+      __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); 
+    } else {
+      __pyx_t_3 = PyList_GET_ITEM(sequence, 0); 
+      __pyx_t_5 = PyList_GET_ITEM(sequence, 1); 
+    }
+    __Pyx_INCREF(__pyx_t_3);
+    __Pyx_INCREF(__pyx_t_5);
+    #else
+    __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1535; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1535; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_5);
+    #endif
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  } else
+  {
+    Py_ssize_t index = -1;
+    __pyx_t_6 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1535; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_6);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_t_7 = Py_TYPE(__pyx_t_6)->tp_iternext;
+    index = 0; __pyx_t_3 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_3)) goto __pyx_L4_unpacking_failed;
+    __Pyx_GOTREF(__pyx_t_3);
+    index = 1; __pyx_t_5 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_5)) goto __pyx_L4_unpacking_failed;
+    __Pyx_GOTREF(__pyx_t_5);
+    if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_6), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1535; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = NULL;
+    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+    goto __pyx_L5_unpacking_done;
+    __pyx_L4_unpacking_failed:;
+    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+    __pyx_t_7 = NULL;
+    if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1535; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_L5_unpacking_done:;
+  }
+  __pyx_v_name = __pyx_t_3;
+  __pyx_t_3 = 0;
+  __pyx_v_dt = __pyx_t_5;
+  __pyx_t_5 = 0;
+
+  /* "h5py/h5t.pyx":1537
+ *     name, dt = kwds.popitem()
+ * 
+ *     if name not in ('vlen', 'enum', 'ref'):             # <<<<<<<<<<<<<<
+ *         raise TypeError('Unknown special type "%s"' % name)
+ * 
+ */
+  __Pyx_INCREF(__pyx_v_name);
+  __pyx_t_4 = __pyx_v_name;
+  __pyx_t_5 = PyObject_RichCompare(__pyx_t_4, ((PyObject *)__pyx_n_s__vlen), Py_NE); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1537; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1537; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  if (((int)__pyx_t_2)) {
+    __pyx_t_5 = PyObject_RichCompare(__pyx_t_4, ((PyObject *)__pyx_n_s__enum), Py_NE); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1537; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely((__pyx_t_8 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1537; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __pyx_t_9 = ((int)__pyx_t_8);
+  } else {
+    __pyx_t_9 = ((int)__pyx_t_2);
+  }
+  if (__pyx_t_9) {
+    __pyx_t_5 = PyObject_RichCompare(__pyx_t_4, ((PyObject *)__pyx_n_s__ref), Py_NE); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1537; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1537; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __pyx_t_8 = ((int)__pyx_t_2);
+  } else {
+    __pyx_t_8 = __pyx_t_9;
+  }
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __pyx_t_9 = __pyx_t_8;
+  if (__pyx_t_9) {
+
+    /* "h5py/h5t.pyx":1538
+ * 
+ *     if name not in ('vlen', 'enum', 'ref'):
+ *         raise TypeError('Unknown special type "%s"' % name)             # <<<<<<<<<<<<<<
+ * 
+ *     hintkey = 'type' if name is not 'enum' else 'vals'
+ */
+    __pyx_t_4 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_46), __pyx_v_name); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1538; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(((PyObject *)__pyx_t_4));
+    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1538; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_5);
+    PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_t_4));
+    __Pyx_GIVEREF(((PyObject *)__pyx_t_4));
+    __pyx_t_4 = 0;
+    __pyx_t_4 = PyObject_Call(__pyx_builtin_TypeError, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1538; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
+    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1538; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    goto __pyx_L6;
+  }
+  __pyx_L6:;
+
+  /* "h5py/h5t.pyx":1540
+ *         raise TypeError('Unknown special type "%s"' % name)
+ * 
+ *     hintkey = 'type' if name is not 'enum' else 'vals'             # <<<<<<<<<<<<<<
+ * 
+ *     if dt.fields is not None and name in dt.fields:
+ */
+  __pyx_t_9 = (__pyx_v_name != ((PyObject *)__pyx_n_s__enum));
+  if (__pyx_t_9) {
+    __Pyx_INCREF(((PyObject *)__pyx_n_s__type));
+    __pyx_t_4 = __pyx_n_s__type;
+  } else {
+    __Pyx_INCREF(((PyObject *)__pyx_n_s__vals));
+    __pyx_t_4 = __pyx_n_s__vals;
+  }
+  __pyx_v_hintkey = ((PyObject *)__pyx_t_4);
+  __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":1542
+ *     hintkey = 'type' if name is not 'enum' else 'vals'
+ * 
+ *     if dt.fields is not None and name in dt.fields:             # <<<<<<<<<<<<<<
+ *         tpl = dt.fields[name]
+ *         if len(tpl) == 3:
+ */
+  __pyx_t_4 = PyObject_GetAttr(__pyx_v_dt, __pyx_n_s__fields); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1542; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_9 = (__pyx_t_4 != Py_None);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (__pyx_t_9) {
+    __pyx_t_4 = PyObject_GetAttr(__pyx_v_dt, __pyx_n_s__fields); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1542; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_8 = (__Pyx_PySequence_Contains(__pyx_v_name, __pyx_t_4, Py_EQ)); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1542; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_t_2 = __pyx_t_8;
+  } else {
+    __pyx_t_2 = __pyx_t_9;
+  }
+  if (__pyx_t_2) {
+
+    /* "h5py/h5t.pyx":1543
+ * 
+ *     if dt.fields is not None and name in dt.fields:
+ *         tpl = dt.fields[name]             # <<<<<<<<<<<<<<
+ *         if len(tpl) == 3:
+ *             hint_dict = tpl[2]
+ */
+    __pyx_t_4 = PyObject_GetAttr(__pyx_v_dt, __pyx_n_s__fields); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1543; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_5 = PyObject_GetItem(__pyx_t_4, __pyx_v_name); if (!__pyx_t_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1543; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_v_tpl = __pyx_t_5;
+    __pyx_t_5 = 0;
+
+    /* "h5py/h5t.pyx":1544
+ *     if dt.fields is not None and name in dt.fields:
+ *         tpl = dt.fields[name]
+ *         if len(tpl) == 3:             # <<<<<<<<<<<<<<
+ *             hint_dict = tpl[2]
+ *             if hintkey in hint_dict:
+ */
+    __pyx_t_1 = PyObject_Length(__pyx_v_tpl); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1544; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = (__pyx_t_1 == 3);
+    if (__pyx_t_2) {
+
+      /* "h5py/h5t.pyx":1545
+ *         tpl = dt.fields[name]
+ *         if len(tpl) == 3:
+ *             hint_dict = tpl[2]             # <<<<<<<<<<<<<<
+ *             if hintkey in hint_dict:
+ *                 return hint_dict[hintkey]
+ */
+      __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_tpl, 2, sizeof(long), PyInt_FromLong); if (!__pyx_t_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1545; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_5);
+      __pyx_v_hint_dict = __pyx_t_5;
+      __pyx_t_5 = 0;
+
+      /* "h5py/h5t.pyx":1546
+ *         if len(tpl) == 3:
+ *             hint_dict = tpl[2]
+ *             if hintkey in hint_dict:             # <<<<<<<<<<<<<<
+ *                 return hint_dict[hintkey]
+ * 
+ */
+      __pyx_t_2 = (__Pyx_PySequence_Contains(__pyx_v_hintkey, __pyx_v_hint_dict, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1546; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      if (__pyx_t_2) {
+
+        /* "h5py/h5t.pyx":1547
+ *             hint_dict = tpl[2]
+ *             if hintkey in hint_dict:
+ *                 return hint_dict[hintkey]             # <<<<<<<<<<<<<<
+ * 
+ *     return None
+ */
+        __Pyx_XDECREF(__pyx_r);
+        __pyx_t_5 = PyObject_GetItem(__pyx_v_hint_dict, __pyx_v_hintkey); if (!__pyx_t_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1547; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_5);
+        __pyx_r = __pyx_t_5;
+        __pyx_t_5 = 0;
+        goto __pyx_L0;
+        goto __pyx_L9;
+      }
+      __pyx_L9:;
+      goto __pyx_L8;
+    }
+    __pyx_L8:;
+    goto __pyx_L7;
+  }
+  __pyx_L7:;
+
+  /* "h5py/h5t.pyx":1549
+ *                 return hint_dict[hintkey]
+ * 
+ *     return None             # <<<<<<<<<<<<<<
+ * 
+ * def convert(TypeID src not None, TypeID dst not None, size_t n,
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(Py_None);
+  __pyx_r = Py_None;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_AddTraceback("h5py.h5t.check_dtype", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_name);
+  __Pyx_XDECREF(__pyx_v_dt);
+  __Pyx_XDECREF(__pyx_v_hintkey);
+  __Pyx_XDECREF(__pyx_v_tpl);
+  __Pyx_XDECREF(__pyx_v_hint_dict);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5t_21convert(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_4h5py_3h5t_20convert[] = " (TypeID src, TypeID dst, UINT n, NDARRAY buf, NDARRAY bkg=None,\n    PropID dxpl=None)\n\n    Convert n contiguous elements of a buffer in-place.  The array dtype\n    is ignored.  The backing buffer is optional; for conversion of compound\n    types, a temporary copy of conversion buffer will used for backing if\n    one is not supplied.\n    ";
+static PyMethodDef __pyx_mdef_4h5py_3h5t_21convert = {__Pyx_NAMESTR("convert"), (PyCFunction)__pyx_pw_4h5py_3h5t_21convert, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5t_20convert)};
+static PyObject *__pyx_pw_4h5py_3h5t_21convert(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_v_src = 0;
+  struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_v_dst = 0;
+  size_t __pyx_v_n;
+  PyArrayObject *__pyx_v_buf = 0;
+  PyArrayObject *__pyx_v_bkg = 0;
+  struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_dxpl = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("convert (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__src,&__pyx_n_s__dst,&__pyx_n_s__n,&__pyx_n_s__buf,&__pyx_n_s__bkg,&__pyx_n_s__dxpl,0};
+    PyObject* values[6] = {0,0,0,0,0,0};
+
+    /* "h5py/h5t.pyx":1552
+ * 
+ * def convert(TypeID src not None, TypeID dst not None, size_t n,
+ *             ndarray buf not None, ndarray bkg=None, ObjectID dxpl=None):             # <<<<<<<<<<<<<<
+ *     """ (TypeID src, TypeID dst, UINT n, NDARRAY buf, NDARRAY bkg=None,
+ *     PropID dxpl=None)
+ */
+    values[4] = (PyObject *)((PyArrayObject *)Py_None);
+    values[5] = (PyObject *)((struct __pyx_obj_4h5py_8_objects_ObjectID *)Py_None);
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__src)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__dst)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("convert", 0, 4, 6, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1551; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+        case  2:
+        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__n)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("convert", 0, 4, 6, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1551; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+        case  3:
+        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__buf)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("convert", 0, 4, 6, 3); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1551; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+        case  4:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__bkg);
+          if (value) { values[4] = value; kw_args--; }
+        }
+        case  5:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__dxpl);
+          if (value) { values[5] = value; kw_args--; }
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "convert") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1551; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else {
+      switch (PyTuple_GET_SIZE(__pyx_args)) {
+        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+    }
+    __pyx_v_src = ((struct __pyx_obj_4h5py_3h5t_TypeID *)values[0]);
+    __pyx_v_dst = ((struct __pyx_obj_4h5py_3h5t_TypeID *)values[1]);
+    __pyx_v_n = __Pyx_PyInt_AsSize_t(values[2]); if (unlikely((__pyx_v_n == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1551; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_buf = ((PyArrayObject *)values[3]);
+    __pyx_v_bkg = ((PyArrayObject *)values[4]);
+    __pyx_v_dxpl = ((struct __pyx_obj_4h5py_8_objects_ObjectID *)values[5]);
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("convert", 0, 4, 6, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1551; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5t.convert", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_src), __pyx_ptype_4h5py_3h5t_TypeID, 0, "src", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1551; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_dst), __pyx_ptype_4h5py_3h5t_TypeID, 0, "dst", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1551; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_buf), __pyx_ptype_4h5py_5numpy_ndarray, 0, "buf", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1552; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_bkg), __pyx_ptype_4h5py_5numpy_ndarray, 1, "bkg", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1552; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_dxpl), __pyx_ptype_4h5py_8_objects_ObjectID, 1, "dxpl", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1552; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_pf_4h5py_3h5t_20convert(__pyx_self, __pyx_v_src, __pyx_v_dst, __pyx_v_n, __pyx_v_buf, __pyx_v_bkg, __pyx_v_dxpl);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":1551
+ *     return None
+ * 
+ * def convert(TypeID src not None, TypeID dst not None, size_t n,             # <<<<<<<<<<<<<<
+ *             ndarray buf not None, ndarray bkg=None, ObjectID dxpl=None):
+ *     """ (TypeID src, TypeID dst, UINT n, NDARRAY buf, NDARRAY bkg=None,
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5t_20convert(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_v_src, struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_v_dst, size_t __pyx_v_n, PyArrayObject *__pyx_v_buf, PyArrayObject *__pyx_v_bkg, struct __pyx_obj_4h5py_8_objects_ObjectID *__pyx_v_dxpl) {
+  void *__pyx_v_bkg_;
+  void *__pyx_v_buf_;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  char *__pyx_t_1;
+  int __pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  int __pyx_t_6;
+  int __pyx_t_7;
+  int __pyx_t_8;
+  herr_t __pyx_t_9;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("convert", 0);
+  __Pyx_INCREF((PyObject *)__pyx_v_bkg);
+
+  /* "h5py/h5t.pyx":1561
+ *     one is not supplied.
+ *     """
+ *     cdef void* bkg_ = NULL             # <<<<<<<<<<<<<<
+ *     cdef void* buf_ = buf.data
+ * 
+ */
+  __pyx_v_bkg_ = NULL;
+
+  /* "h5py/h5t.pyx":1562
+ *     """
+ *     cdef void* bkg_ = NULL
+ *     cdef void* buf_ = buf.data             # <<<<<<<<<<<<<<
+ * 
+ *     if bkg is None and (src.detect_class(H5T_COMPOUND) or
+ */
+  __pyx_t_1 = __pyx_v_buf->data;
+  __pyx_v_buf_ = __pyx_t_1;
+
+  /* "h5py/h5t.pyx":1564
+ *     cdef void* buf_ = buf.data
+ * 
+ *     if bkg is None and (src.detect_class(H5T_COMPOUND) or             # <<<<<<<<<<<<<<
+ *                         dst.detect_class(H5T_COMPOUND)):
+ *         bkg = buf.copy()
+ */
+  __pyx_t_2 = (((PyObject *)__pyx_v_bkg) == Py_None);
+  if (__pyx_t_2) {
+    __pyx_t_3 = PyObject_GetAttr(((PyObject *)__pyx_v_src), __pyx_n_s__detect_class); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1564; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyInt_FromLong(H5T_COMPOUND); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1564; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1564; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_5);
+    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4);
+    __Pyx_GIVEREF(__pyx_t_4);
+    __pyx_t_4 = 0;
+    __pyx_t_4 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1564; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
+    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1564; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    if (!__pyx_t_6) {
+
+      /* "h5py/h5t.pyx":1565
+ * 
+ *     if bkg is None and (src.detect_class(H5T_COMPOUND) or
+ *                         dst.detect_class(H5T_COMPOUND)):             # <<<<<<<<<<<<<<
+ *         bkg = buf.copy()
+ *     if bkg is not None:
+ */
+      __pyx_t_4 = PyObject_GetAttr(((PyObject *)__pyx_v_dst), __pyx_n_s__detect_class); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1565; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_4);
+      __pyx_t_5 = PyInt_FromLong(H5T_COMPOUND); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1565; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_5);
+      __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1565; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_3);
+      PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_5);
+      __Pyx_GIVEREF(__pyx_t_5);
+      __pyx_t_5 = 0;
+      __pyx_t_5 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1565; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_5);
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
+      __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1565; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+      __pyx_t_8 = __pyx_t_7;
+    } else {
+      __pyx_t_8 = __pyx_t_6;
+    }
+    __pyx_t_6 = __pyx_t_8;
+  } else {
+    __pyx_t_6 = __pyx_t_2;
+  }
+  if (__pyx_t_6) {
+
+    /* "h5py/h5t.pyx":1566
+ *     if bkg is None and (src.detect_class(H5T_COMPOUND) or
+ *                         dst.detect_class(H5T_COMPOUND)):
+ *         bkg = buf.copy()             # <<<<<<<<<<<<<<
+ *     if bkg is not None:
+ *         bkg_ = bkg.data
+ */
+    __pyx_t_5 = PyObject_GetAttr(((PyObject *)__pyx_v_buf), __pyx_n_s__copy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1566; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_5);
+    __pyx_t_3 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1566; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_4h5py_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1566; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_DECREF(((PyObject *)__pyx_v_bkg));
+    __pyx_v_bkg = ((PyArrayObject *)__pyx_t_3);
+    __pyx_t_3 = 0;
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  /* "h5py/h5t.pyx":1567
+ *                         dst.detect_class(H5T_COMPOUND)):
+ *         bkg = buf.copy()
+ *     if bkg is not None:             # <<<<<<<<<<<<<<
+ *         bkg_ = bkg.data
+ * 
+ */
+  __pyx_t_6 = (((PyObject *)__pyx_v_bkg) != Py_None);
+  if (__pyx_t_6) {
+
+    /* "h5py/h5t.pyx":1568
+ *         bkg = buf.copy()
+ *     if bkg is not None:
+ *         bkg_ = bkg.data             # <<<<<<<<<<<<<<
+ * 
+ *     H5Tconvert(src.id, dst.id, n, buf_, bkg_, pdefault(dxpl))
+ */
+    __pyx_t_1 = __pyx_v_bkg->data;
+    __pyx_v_bkg_ = __pyx_t_1;
+    goto __pyx_L4;
+  }
+  __pyx_L4:;
+
+  /* "h5py/h5t.pyx":1570
+ *         bkg_ = bkg.data
+ * 
+ *     H5Tconvert(src.id, dst.id, n, buf_, bkg_, pdefault(dxpl))             # <<<<<<<<<<<<<<
+ * 
+ * def find(TypeID src not None, TypeID dst not None):
+ */
+  __pyx_t_9 = __pyx_f_4h5py_4defs_H5Tconvert(__pyx_v_src->__pyx_base.id, __pyx_v_dst->__pyx_base.id, __pyx_v_n, __pyx_v_buf_, __pyx_v_bkg_, __pyx_f_4h5py_8_objects_pdefault(__pyx_v_dxpl)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1570; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_AddTraceback("h5py.h5t.convert", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_bkg);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5t_23find(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_4h5py_3h5t_22find[] = " (TypeID src, TypeID dst) => TUPLE or None\n\n    Determine if a conversion path exists from src to dst.  Result is None\n    or a tuple describing the conversion path.  Currently tuple entries are:\n\n    1. INT need_bkg:    Whether this routine requires a backing buffer.\n                        Values are BKG_NO, BKG_TEMP and BKG_YES.\n    ";
+static PyMethodDef __pyx_mdef_4h5py_3h5t_23find = {__Pyx_NAMESTR("find"), (PyCFunction)__pyx_pw_4h5py_3h5t_23find, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5t_22find)};
+static PyObject *__pyx_pw_4h5py_3h5t_23find(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_v_src = 0;
+  struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_v_dst = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("find (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__src,&__pyx_n_s__dst,0};
+    PyObject* values[2] = {0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__src)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__dst)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("find", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1572; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "find") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1572; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+    }
+    __pyx_v_src = ((struct __pyx_obj_4h5py_3h5t_TypeID *)values[0]);
+    __pyx_v_dst = ((struct __pyx_obj_4h5py_3h5t_TypeID *)values[1]);
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("find", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1572; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5t.find", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_src), __pyx_ptype_4h5py_3h5t_TypeID, 0, "src", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1572; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_dst), __pyx_ptype_4h5py_3h5t_TypeID, 0, "dst", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1572; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_pf_4h5py_3h5t_22find(__pyx_self, __pyx_v_src, __pyx_v_dst);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":1572
+ *     H5Tconvert(src.id, dst.id, n, buf_, bkg_, pdefault(dxpl))
+ * 
+ * def find(TypeID src not None, TypeID dst not None):             # <<<<<<<<<<<<<<
+ *     """ (TypeID src, TypeID dst) => TUPLE or None
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5t_22find(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_v_src, struct __pyx_obj_4h5py_3h5t_TypeID *__pyx_v_dst) {
+  H5T_cdata_t *__pyx_v_data;
+  H5T_conv_t __pyx_v_result;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  H5T_conv_t __pyx_t_4;
+  int __pyx_t_5;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  PyObject *__pyx_t_8 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("find", 0);
+
+  /* "h5py/h5t.pyx":1582
+ *     """
+ *     cdef H5T_cdata_t *data
+ *     cdef H5T_conv_t result = NULL             # <<<<<<<<<<<<<<
+ * 
+ *     try:
+ */
+  __pyx_v_result = NULL;
+
+  /* "h5py/h5t.pyx":1584
+ *     cdef H5T_conv_t result = NULL
+ * 
+ *     try:             # <<<<<<<<<<<<<<
+ *         result = H5Tfind(src.id, dst.id, &data)
+ *         if result == NULL:
+ */
+  {
+    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
+    __Pyx_XGOTREF(__pyx_t_1);
+    __Pyx_XGOTREF(__pyx_t_2);
+    __Pyx_XGOTREF(__pyx_t_3);
+    /*try:*/ {
+
+      /* "h5py/h5t.pyx":1585
+ * 
+ *     try:
+ *         result = H5Tfind(src.id, dst.id, &data)             # <<<<<<<<<<<<<<
+ *         if result == NULL:
+ *             return None
+ */
+      __pyx_t_4 = __pyx_f_4h5py_4defs_H5Tfind(__pyx_v_src->__pyx_base.id, __pyx_v_dst->__pyx_base.id, (&__pyx_v_data)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1585; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      __pyx_v_result = __pyx_t_4;
+
+      /* "h5py/h5t.pyx":1586
+ *     try:
+ *         result = H5Tfind(src.id, dst.id, &data)
+ *         if result == NULL:             # <<<<<<<<<<<<<<
+ *             return None
+ *         return (data[0].need_bkg,)
+ */
+      __pyx_t_5 = (__pyx_v_result == NULL);
+      if (__pyx_t_5) {
+
+        /* "h5py/h5t.pyx":1587
+ *         result = H5Tfind(src.id, dst.id, &data)
+ *         if result == NULL:
+ *             return None             # <<<<<<<<<<<<<<
+ *         return (data[0].need_bkg,)
+ *     except:
+ */
+        __Pyx_XDECREF(__pyx_r);
+        __Pyx_INCREF(Py_None);
+        __pyx_r = Py_None;
+        goto __pyx_L7_try_return;
+        goto __pyx_L11;
+      }
+      __pyx_L11:;
+
+      /* "h5py/h5t.pyx":1588
+ *         if result == NULL:
+ *             return None
+ *         return (data[0].need_bkg,)             # <<<<<<<<<<<<<<
+ *     except:
+ *         return None
+ */
+      __Pyx_XDECREF(__pyx_r);
+      __pyx_t_6 = PyInt_FromLong((__pyx_v_data[0]).need_bkg); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1588; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      __Pyx_GOTREF(__pyx_t_6);
+      __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1588; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      __Pyx_GOTREF(__pyx_t_7);
+      PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6);
+      __Pyx_GIVEREF(__pyx_t_6);
+      __pyx_t_6 = 0;
+      __pyx_r = ((PyObject *)__pyx_t_7);
+      __pyx_t_7 = 0;
+      goto __pyx_L7_try_return;
+    }
+    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+    goto __pyx_L10_try_end;
+    __pyx_L7_try_return:;
+    __Pyx_XGIVEREF(__pyx_t_1);
+    __Pyx_XGIVEREF(__pyx_t_2);
+    __Pyx_XGIVEREF(__pyx_t_3);
+    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
+    goto __pyx_L0;
+    __pyx_L3_error:;
+    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+
+    /* "h5py/h5t.pyx":1589
+ *             return None
+ *         return (data[0].need_bkg,)
+ *     except:             # <<<<<<<<<<<<<<
+ *         return None
+ * 
+ */
+    /*except:*/ {
+      __Pyx_AddTraceback("h5py.h5t.find", __pyx_clineno, __pyx_lineno, __pyx_filename);
+      if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_6, &__pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1589; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
+      __Pyx_GOTREF(__pyx_t_7);
+      __Pyx_GOTREF(__pyx_t_6);
+      __Pyx_GOTREF(__pyx_t_8);
+
+      /* "h5py/h5t.pyx":1590
+ *         return (data[0].need_bkg,)
+ *     except:
+ *         return None             # <<<<<<<<<<<<<<
+ * 
+ * # ============================================================================
+ */
+      __Pyx_XDECREF(__pyx_r);
+      __Pyx_INCREF(Py_None);
+      __pyx_r = Py_None;
+      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+      goto __pyx_L6_except_return;
+      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+      goto __pyx_L4_exception_handled;
+    }
+    __pyx_L5_except_error:;
+    __Pyx_XGIVEREF(__pyx_t_1);
+    __Pyx_XGIVEREF(__pyx_t_2);
+    __Pyx_XGIVEREF(__pyx_t_3);
+    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
+    goto __pyx_L1_error;
+    __pyx_L6_except_return:;
+    __Pyx_XGIVEREF(__pyx_t_1);
+    __Pyx_XGIVEREF(__pyx_t_2);
+    __Pyx_XGIVEREF(__pyx_t_3);
+    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
+    goto __pyx_L0;
+    __pyx_L4_exception_handled:;
+    __Pyx_XGIVEREF(__pyx_t_1);
+    __Pyx_XGIVEREF(__pyx_t_2);
+    __Pyx_XGIVEREF(__pyx_t_3);
+    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
+    __pyx_L10_try_end:;
+  }
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_XDECREF(__pyx_t_8);
+  __Pyx_AddTraceback("h5py.h5t.find", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":1597
+ * import warnings
+ * 
+ * cpdef dtype py_new_enum(object dt_in, dict enum_vals):             # <<<<<<<<<<<<<<
+ *     """ (DTYPE dt_in, DICT enum_vals) => DTYPE
+ * 
+ */
+
+static PyObject *__pyx_pw_4h5py_3h5t_25py_new_enum(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyArray_Descr *__pyx_f_4h5py_3h5t_py_new_enum(PyObject *__pyx_v_dt_in, PyObject *__pyx_v_enum_vals, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  PyArray_Descr *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("py_new_enum", 0);
+
+  /* "h5py/h5t.pyx":1603
+ *     """
+ *     #warnings.warn("Deprecated; use special_dtype(enum=(dtype, values)) instead", DeprecationWarning)
+ *     return special_dtype(enum = (dt_in, enum_vals))             # <<<<<<<<<<<<<<
+ * 
+ * cpdef dict py_get_enum(object dt):
+ */
+  __Pyx_XDECREF(((PyObject *)__pyx_r));
+  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__special_dtype); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1603; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1603; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
+  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1603; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_INCREF(__pyx_v_dt_in);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_dt_in);
+  __Pyx_GIVEREF(__pyx_v_dt_in);
+  __Pyx_INCREF(((PyObject *)__pyx_v_enum_vals));
+  PyTuple_SET_ITEM(__pyx_t_3, 1, ((PyObject *)__pyx_v_enum_vals));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_enum_vals));
+  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__enum), ((PyObject *)__pyx_t_3)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1603; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
+  __pyx_t_3 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1603; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
+  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_4h5py_5numpy_dtype))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1603; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = ((PyArray_Descr *)__pyx_t_3);
+  __pyx_t_3 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = ((PyArray_Descr *)Py_None); __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("h5py.h5t.py_new_enum", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF((PyObject *)__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5t_25py_new_enum(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_4h5py_3h5t_24py_new_enum[] = " (DTYPE dt_in, DICT enum_vals) => DTYPE\n\n    Deprecated; use special_dtype() instead.\n    ";
+static PyObject *__pyx_pw_4h5py_3h5t_25py_new_enum(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_dt_in = 0;
+  PyObject *__pyx_v_enum_vals = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("py_new_enum (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__dt_in,&__pyx_n_s__enum_vals,0};
+    PyObject* values[2] = {0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__dt_in)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__enum_vals)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("py_new_enum", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1597; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "py_new_enum") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1597; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+    }
+    __pyx_v_dt_in = values[0];
+    __pyx_v_enum_vals = ((PyObject*)values[1]);
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("py_new_enum", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1597; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5t.py_new_enum", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_enum_vals), (&PyDict_Type), 1, "enum_vals", 1))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1597; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_pf_4h5py_3h5t_24py_new_enum(__pyx_self, __pyx_v_dt_in, __pyx_v_enum_vals);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":1597
+ * import warnings
+ * 
+ * cpdef dtype py_new_enum(object dt_in, dict enum_vals):             # <<<<<<<<<<<<<<
+ *     """ (DTYPE dt_in, DICT enum_vals) => DTYPE
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5t_24py_new_enum(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_dt_in, PyObject *__pyx_v_enum_vals) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("py_new_enum", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = ((PyObject *)__pyx_f_4h5py_3h5t_py_new_enum(__pyx_v_dt_in, __pyx_v_enum_vals, 0)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1597; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py.h5t.py_new_enum", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":1605
+ *     return special_dtype(enum = (dt_in, enum_vals))
+ * 
+ * cpdef dict py_get_enum(object dt):             # <<<<<<<<<<<<<<
+ *     """ (DTYPE dt_in) => DICT
+ * 
+ */
+
+static PyObject *__pyx_pw_4h5py_3h5t_27py_get_enum(PyObject *__pyx_self, PyObject *__pyx_v_dt); /*proto*/
+static PyObject *__pyx_f_4h5py_3h5t_py_get_enum(PyObject *__pyx_v_dt, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("py_get_enum", 0);
+
+  /* "h5py/h5t.pyx":1611
+ *     """
+ *     #warnings.warn("Deprecated; use check_dtype(enum=dtype) instead", DeprecationWarning)
+ *     return check_dtype(enum=dt)             # <<<<<<<<<<<<<<
+ * 
+ * cpdef dtype py_new_vlen(object kind):
+ */
+  __Pyx_XDECREF(((PyObject *)__pyx_r));
+  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__check_dtype); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1611; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1611; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
+  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__enum), __pyx_v_dt) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1611; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1611; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
+  if (!(likely(PyDict_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected dict, got %.200s", Py_TYPE(__pyx_t_3)->tp_name), 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1611; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = ((PyObject*)__pyx_t_3);
+  __pyx_t_3 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = ((PyObject*)Py_None); __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("h5py.h5t.py_get_enum", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5t_27py_get_enum(PyObject *__pyx_self, PyObject *__pyx_v_dt); /*proto*/
+static char __pyx_doc_4h5py_3h5t_26py_get_enum[] = " (DTYPE dt_in) => DICT\n\n    Deprecated; use check_dtype() instead.\n    ";
+static PyObject *__pyx_pw_4h5py_3h5t_27py_get_enum(PyObject *__pyx_self, PyObject *__pyx_v_dt) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("py_get_enum (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5t_26py_get_enum(__pyx_self, ((PyObject *)__pyx_v_dt));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":1605
+ *     return special_dtype(enum = (dt_in, enum_vals))
+ * 
+ * cpdef dict py_get_enum(object dt):             # <<<<<<<<<<<<<<
+ *     """ (DTYPE dt_in) => DICT
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5t_26py_get_enum(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_dt) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("py_get_enum", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = ((PyObject *)__pyx_f_4h5py_3h5t_py_get_enum(__pyx_v_dt, 0)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1605; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py.h5t.py_get_enum", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":1613
+ *     return check_dtype(enum=dt)
+ * 
+ * cpdef dtype py_new_vlen(object kind):             # <<<<<<<<<<<<<<
+ *     """ (OBJECT kind) => DTYPE
+ * 
+ */
+
+static PyObject *__pyx_pw_4h5py_3h5t_29py_new_vlen(PyObject *__pyx_self, PyObject *__pyx_v_kind); /*proto*/
+static PyArray_Descr *__pyx_f_4h5py_3h5t_py_new_vlen(PyObject *__pyx_v_kind, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  PyArray_Descr *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("py_new_vlen", 0);
+
+  /* "h5py/h5t.pyx":1619
+ *     """
+ *     #warnings.warn("Deprecated; use special_dtype(vlen=basetype) instead", DeprecationWarning)
+ *     return special_dtype(vlen=kind)             # <<<<<<<<<<<<<<
+ * 
+ * cpdef object py_get_vlen(object dt_in):
+ */
+  __Pyx_XDECREF(((PyObject *)__pyx_r));
+  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__special_dtype); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1619; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1619; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
+  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__vlen), __pyx_v_kind) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1619; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1619; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
+  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_4h5py_5numpy_dtype))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1619; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = ((PyArray_Descr *)__pyx_t_3);
+  __pyx_t_3 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = ((PyArray_Descr *)Py_None); __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("h5py.h5t.py_new_vlen", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF((PyObject *)__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5t_29py_new_vlen(PyObject *__pyx_self, PyObject *__pyx_v_kind); /*proto*/
+static char __pyx_doc_4h5py_3h5t_28py_new_vlen[] = " (OBJECT kind) => DTYPE\n\n    Deprecated; use special_dtype() instead.\n    ";
+static PyObject *__pyx_pw_4h5py_3h5t_29py_new_vlen(PyObject *__pyx_self, PyObject *__pyx_v_kind) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("py_new_vlen (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5t_28py_new_vlen(__pyx_self, ((PyObject *)__pyx_v_kind));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":1613
+ *     return check_dtype(enum=dt)
+ * 
+ * cpdef dtype py_new_vlen(object kind):             # <<<<<<<<<<<<<<
+ *     """ (OBJECT kind) => DTYPE
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5t_28py_new_vlen(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_kind) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("py_new_vlen", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = ((PyObject *)__pyx_f_4h5py_3h5t_py_new_vlen(__pyx_v_kind, 0)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1613; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py.h5t.py_new_vlen", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":1621
+ *     return special_dtype(vlen=kind)
+ * 
+ * cpdef object py_get_vlen(object dt_in):             # <<<<<<<<<<<<<<
+ *     """ (OBJECT dt_in) => TYPE
+ * 
+ */
+
+static PyObject *__pyx_pw_4h5py_3h5t_31py_get_vlen(PyObject *__pyx_self, PyObject *__pyx_v_dt_in); /*proto*/
+static PyObject *__pyx_f_4h5py_3h5t_py_get_vlen(PyObject *__pyx_v_dt_in, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("py_get_vlen", 0);
+
+  /* "h5py/h5t.pyx":1627
+ *     """
+ *     #warnings.warn("Deprecated; use check_dtype(vlen=dtype) instead", DeprecationWarning)
+ *     return check_dtype(vlen=dt_in)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__check_dtype); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1627; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1627; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
+  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__vlen), __pyx_v_dt_in) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1627; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1627; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
+  __pyx_r = __pyx_t_3;
+  __pyx_t_3 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("h5py.h5t.py_get_vlen", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5t_31py_get_vlen(PyObject *__pyx_self, PyObject *__pyx_v_dt_in); /*proto*/
+static char __pyx_doc_4h5py_3h5t_30py_get_vlen[] = " (OBJECT dt_in) => TYPE\n\n    Deprecated; use check_dtype() instead.\n    ";
+static PyObject *__pyx_pw_4h5py_3h5t_31py_get_vlen(PyObject *__pyx_self, PyObject *__pyx_v_dt_in) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("py_get_vlen (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5t_30py_get_vlen(__pyx_self, ((PyObject *)__pyx_v_dt_in));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5t.pyx":1621
+ *     return special_dtype(vlen=kind)
+ * 
+ * cpdef object py_get_vlen(object dt_in):             # <<<<<<<<<<<<<<
+ *     """ (OBJECT dt_in) => TYPE
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5t_30py_get_vlen(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_dt_in) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("py_get_vlen", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_4h5py_3h5t_py_get_vlen(__pyx_v_dt_in, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1621; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("h5py.h5t.py_get_vlen", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+static struct __pyx_vtabstruct_4h5py_3h5t_TypeID __pyx_vtable_4h5py_3h5t_TypeID;
+
+static PyObject *__pyx_tp_new_4h5py_3h5t_TypeID(PyTypeObject *t, PyObject *a, PyObject *k) {
+  struct __pyx_obj_4h5py_3h5t_TypeID *p;
+  PyObject *o = __pyx_ptype_4h5py_8_objects_ObjectID->tp_new(t, a, k);
+  if (!o) return 0;
+  p = ((struct __pyx_obj_4h5py_3h5t_TypeID *)o);
+  p->__pyx_vtab = __pyx_vtabptr_4h5py_3h5t_TypeID;
+  return o;
+}
+
+static void __pyx_tp_dealloc_4h5py_3h5t_TypeID(PyObject *o) {
+  PyObject_GC_UnTrack(o);
+  PyObject_GC_Track(o);
+  if (likely(__pyx_ptype_4h5py_8_objects_ObjectID)) __pyx_ptype_4h5py_8_objects_ObjectID->tp_dealloc(o); else __Pyx_call_next_tp_dealloc(o, __pyx_tp_dealloc_4h5py_3h5t_TypeID);
+}
+
+static int __pyx_tp_traverse_4h5py_3h5t_TypeID(PyObject *o, visitproc v, void *a) {
+  int e;
+  e = ((likely(__pyx_ptype_4h5py_8_objects_ObjectID)) ? ((__pyx_ptype_4h5py_8_objects_ObjectID->tp_traverse) ? __pyx_ptype_4h5py_8_objects_ObjectID->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_4h5py_3h5t_TypeID)); if (e) return e;
+  return 0;
+}
+
+static int __pyx_tp_clear_4h5py_3h5t_TypeID(PyObject *o) {
+  if (likely(__pyx_ptype_4h5py_8_objects_ObjectID)) { if (__pyx_ptype_4h5py_8_objects_ObjectID->tp_clear) __pyx_ptype_4h5py_8_objects_ObjectID->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_4h5py_3h5t_TypeID);
+  return 0;
+}
+
+static PyObject *__pyx_getprop_4h5py_3h5t_6TypeID_dtype(PyObject *o, CYTHON_UNUSED void *x) {
+  return __pyx_pw_4h5py_3h5t_6TypeID_5dtype_1__get__(o);
+}
+
+static PyMethodDef __pyx_methods_4h5py_3h5t_TypeID[] = {
+  {__Pyx_NAMESTR("__copy__"), (PyCFunction)__pyx_pw_4h5py_3h5t_6TypeID_5__copy__, METH_NOARGS, __Pyx_DOCSTR(0)},
+  {__Pyx_NAMESTR("commit"), (PyCFunction)__pyx_pw_4h5py_3h5t_6TypeID_7commit, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5t_6TypeID_6commit)},
+  {__Pyx_NAMESTR("committed"), (PyCFunction)__pyx_pw_4h5py_3h5t_6TypeID_9committed, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5t_6TypeID_8committed)},
+  {__Pyx_NAMESTR("copy"), (PyCFunction)__pyx_pw_4h5py_3h5t_6TypeID_11copy, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5t_6TypeID_10copy)},
+  {__Pyx_NAMESTR("equal"), (PyCFunction)__pyx_pw_4h5py_3h5t_6TypeID_13equal, METH_O, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5t_6TypeID_12equal)},
+  {__Pyx_NAMESTR("lock"), (PyCFunction)__pyx_pw_4h5py_3h5t_6TypeID_15lock, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5t_6TypeID_14lock)},
+  {__Pyx_NAMESTR("get_class"), (PyCFunction)__pyx_pw_4h5py_3h5t_6TypeID_17get_class, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5t_6TypeID_16get_class)},
+  {__Pyx_NAMESTR("set_size"), (PyCFunction)__pyx_pw_4h5py_3h5t_6TypeID_19set_size, METH_O, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5t_6TypeID_18set_size)},
+  {__Pyx_NAMESTR("get_size"), (PyCFunction)__pyx_pw_4h5py_3h5t_6TypeID_21get_size, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5t_6TypeID_20get_size)},
+  {__Pyx_NAMESTR("get_super"), (PyCFunction)__pyx_pw_4h5py_3h5t_6TypeID_23get_super, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5t_6TypeID_22get_super)},
+  {__Pyx_NAMESTR("detect_class"), (PyCFunction)__pyx_pw_4h5py_3h5t_6TypeID_25detect_class, METH_O, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5t_6TypeID_24detect_class)},
+  {__Pyx_NAMESTR("_close"), (PyCFunction)__pyx_pw_4h5py_3h5t_6TypeID_27_close, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5t_6TypeID_26_close)},
+  {__Pyx_NAMESTR("encode"), (PyCFunction)__pyx_pw_4h5py_3h5t_6TypeID_29encode, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5t_6TypeID_28encode)},
+  {__Pyx_NAMESTR("__reduce__"), (PyCFunction)__pyx_pw_4h5py_3h5t_6TypeID_31__reduce__, METH_NOARGS, __Pyx_DOCSTR(0)},
+  {__Pyx_NAMESTR("__setstate__"), (PyCFunction)__pyx_pw_4h5py_3h5t_6TypeID_33__setstate__, METH_O, __Pyx_DOCSTR(0)},
+  {0, 0, 0, 0}
+};
+
+static struct PyGetSetDef __pyx_getsets_4h5py_3h5t_TypeID[] = {
+  {(char *)"dtype", __pyx_getprop_4h5py_3h5t_6TypeID_dtype, 0, __Pyx_DOCSTR(__pyx_k_48), 0},
+  {0, 0, 0, 0, 0}
+};
+
+static PyNumberMethods __pyx_tp_as_number_TypeID = {
+  0, /*nb_add*/
+  0, /*nb_subtract*/
+  0, /*nb_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_divide*/
+  #endif
+  0, /*nb_remainder*/
+  0, /*nb_divmod*/
+  0, /*nb_power*/
+  0, /*nb_negative*/
+  0, /*nb_positive*/
+  0, /*nb_absolute*/
+  0, /*nb_nonzero*/
+  0, /*nb_invert*/
+  0, /*nb_lshift*/
+  0, /*nb_rshift*/
+  0, /*nb_and*/
+  0, /*nb_xor*/
+  0, /*nb_or*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_coerce*/
+  #endif
+  0, /*nb_int*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_long*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*nb_float*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_oct*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_hex*/
+  #endif
+  0, /*nb_inplace_add*/
+  0, /*nb_inplace_subtract*/
+  0, /*nb_inplace_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_inplace_divide*/
+  #endif
+  0, /*nb_inplace_remainder*/
+  0, /*nb_inplace_power*/
+  0, /*nb_inplace_lshift*/
+  0, /*nb_inplace_rshift*/
+  0, /*nb_inplace_and*/
+  0, /*nb_inplace_xor*/
+  0, /*nb_inplace_or*/
+  0, /*nb_floor_divide*/
+  0, /*nb_true_divide*/
+  0, /*nb_inplace_floor_divide*/
+  0, /*nb_inplace_true_divide*/
+  #if PY_VERSION_HEX >= 0x02050000
+  0, /*nb_index*/
+  #endif
+};
+
+static PySequenceMethods __pyx_tp_as_sequence_TypeID = {
+  0, /*sq_length*/
+  0, /*sq_concat*/
+  0, /*sq_repeat*/
+  0, /*sq_item*/
+  0, /*sq_slice*/
+  0, /*sq_ass_item*/
+  0, /*sq_ass_slice*/
+  0, /*sq_contains*/
+  0, /*sq_inplace_concat*/
+  0, /*sq_inplace_repeat*/
+};
+
+static PyMappingMethods __pyx_tp_as_mapping_TypeID = {
+  0, /*mp_length*/
+  0, /*mp_subscript*/
+  0, /*mp_ass_subscript*/
+};
+
+static PyBufferProcs __pyx_tp_as_buffer_TypeID = {
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getreadbuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getwritebuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getsegcount*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getcharbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_getbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_releasebuffer*/
+  #endif
+};
+
+static PyTypeObject __pyx_type_4h5py_3h5t_TypeID = {
+  PyVarObject_HEAD_INIT(0, 0)
+  __Pyx_NAMESTR("h5py.h5t.TypeID"), /*tp_name*/
+  sizeof(struct __pyx_obj_4h5py_3h5t_TypeID), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_4h5py_3h5t_TypeID, /*tp_dealloc*/
+  0, /*tp_print*/
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*tp_repr*/
+  &__pyx_tp_as_number_TypeID, /*tp_as_number*/
+  &__pyx_tp_as_sequence_TypeID, /*tp_as_sequence*/
+  &__pyx_tp_as_mapping_TypeID, /*tp_as_mapping*/
+  __pyx_pw_4h5py_3h5t_6TypeID_1__hash__, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  &__pyx_tp_as_buffer_TypeID, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+  __Pyx_DOCSTR("\n        Base class for type identifiers (implements common operations)\n\n        * Hashable: If committed; in HDF5 1.8.X, also if locked\n        * Equality: Logical H5T comparison\n    "), /*tp_doc*/
+  __pyx_tp_traverse_4h5py_3h5t_TypeID, /*tp_traverse*/
+  __pyx_tp_clear_4h5py_3h5t_TypeID, /*tp_clear*/
+  __pyx_pw_4h5py_3h5t_6TypeID_3__richcmp__, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_4h5py_3h5t_TypeID, /*tp_methods*/
+  0, /*tp_members*/
+  __pyx_getsets_4h5py_3h5t_TypeID, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  0, /*tp_dictoffset*/
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_4h5py_3h5t_TypeID, /*tp_new*/
+  0, /*tp_free*/
+  0, /*tp_is_gc*/
+  0, /*tp_bases*/
+  0, /*tp_mro*/
+  0, /*tp_cache*/
+  0, /*tp_subclasses*/
+  0, /*tp_weaklist*/
+  0, /*tp_del*/
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*tp_version_tag*/
+  #endif
+};
+static struct __pyx_vtabstruct_4h5py_3h5t_TypeArrayID __pyx_vtable_4h5py_3h5t_TypeArrayID;
+
+static PyObject *__pyx_tp_new_4h5py_3h5t_TypeArrayID(PyTypeObject *t, PyObject *a, PyObject *k) {
+  struct __pyx_obj_4h5py_3h5t_TypeArrayID *p;
+  PyObject *o = __pyx_tp_new_4h5py_3h5t_TypeID(t, a, k);
+  if (!o) return 0;
+  p = ((struct __pyx_obj_4h5py_3h5t_TypeArrayID *)o);
+  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4h5py_3h5t_TypeID*)__pyx_vtabptr_4h5py_3h5t_TypeArrayID;
+  return o;
+}
+
+static PyMethodDef __pyx_methods_4h5py_3h5t_TypeArrayID[] = {
+  {__Pyx_NAMESTR("get_array_ndims"), (PyCFunction)__pyx_pw_4h5py_3h5t_11TypeArrayID_1get_array_ndims, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5t_11TypeArrayID_get_array_ndims)},
+  {__Pyx_NAMESTR("get_array_dims"), (PyCFunction)__pyx_pw_4h5py_3h5t_11TypeArrayID_3get_array_dims, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5t_11TypeArrayID_2get_array_dims)},
+  {0, 0, 0, 0}
+};
+
+static PyNumberMethods __pyx_tp_as_number_TypeArrayID = {
+  0, /*nb_add*/
+  0, /*nb_subtract*/
+  0, /*nb_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_divide*/
+  #endif
+  0, /*nb_remainder*/
+  0, /*nb_divmod*/
+  0, /*nb_power*/
+  0, /*nb_negative*/
+  0, /*nb_positive*/
+  0, /*nb_absolute*/
+  0, /*nb_nonzero*/
+  0, /*nb_invert*/
+  0, /*nb_lshift*/
+  0, /*nb_rshift*/
+  0, /*nb_and*/
+  0, /*nb_xor*/
+  0, /*nb_or*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_coerce*/
+  #endif
+  0, /*nb_int*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_long*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*nb_float*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_oct*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_hex*/
+  #endif
+  0, /*nb_inplace_add*/
+  0, /*nb_inplace_subtract*/
+  0, /*nb_inplace_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_inplace_divide*/
+  #endif
+  0, /*nb_inplace_remainder*/
+  0, /*nb_inplace_power*/
+  0, /*nb_inplace_lshift*/
+  0, /*nb_inplace_rshift*/
+  0, /*nb_inplace_and*/
+  0, /*nb_inplace_xor*/
+  0, /*nb_inplace_or*/
+  0, /*nb_floor_divide*/
+  0, /*nb_true_divide*/
+  0, /*nb_inplace_floor_divide*/
+  0, /*nb_inplace_true_divide*/
+  #if PY_VERSION_HEX >= 0x02050000
+  0, /*nb_index*/
+  #endif
+};
+
+static PySequenceMethods __pyx_tp_as_sequence_TypeArrayID = {
+  0, /*sq_length*/
+  0, /*sq_concat*/
+  0, /*sq_repeat*/
+  0, /*sq_item*/
+  0, /*sq_slice*/
+  0, /*sq_ass_item*/
+  0, /*sq_ass_slice*/
+  0, /*sq_contains*/
+  0, /*sq_inplace_concat*/
+  0, /*sq_inplace_repeat*/
+};
+
+static PyMappingMethods __pyx_tp_as_mapping_TypeArrayID = {
+  0, /*mp_length*/
+  0, /*mp_subscript*/
+  0, /*mp_ass_subscript*/
+};
+
+static PyBufferProcs __pyx_tp_as_buffer_TypeArrayID = {
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getreadbuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getwritebuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getsegcount*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getcharbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_getbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_releasebuffer*/
+  #endif
+};
+
+static PyTypeObject __pyx_type_4h5py_3h5t_TypeArrayID = {
+  PyVarObject_HEAD_INIT(0, 0)
+  __Pyx_NAMESTR("h5py.h5t.TypeArrayID"), /*tp_name*/
+  sizeof(struct __pyx_obj_4h5py_3h5t_TypeArrayID), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_4h5py_3h5t_TypeID, /*tp_dealloc*/
+  0, /*tp_print*/
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*tp_repr*/
+  &__pyx_tp_as_number_TypeArrayID, /*tp_as_number*/
+  &__pyx_tp_as_sequence_TypeArrayID, /*tp_as_sequence*/
+  &__pyx_tp_as_mapping_TypeArrayID, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  &__pyx_tp_as_buffer_TypeArrayID, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+  __Pyx_DOCSTR("\n        Represents an array datatype\n    "), /*tp_doc*/
+  __pyx_tp_traverse_4h5py_3h5t_TypeID, /*tp_traverse*/
+  __pyx_tp_clear_4h5py_3h5t_TypeID, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_4h5py_3h5t_TypeArrayID, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  0, /*tp_dictoffset*/
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_4h5py_3h5t_TypeArrayID, /*tp_new*/
+  0, /*tp_free*/
+  0, /*tp_is_gc*/
+  0, /*tp_bases*/
+  0, /*tp_mro*/
+  0, /*tp_cache*/
+  0, /*tp_subclasses*/
+  0, /*tp_weaklist*/
+  0, /*tp_del*/
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*tp_version_tag*/
+  #endif
+};
+static struct __pyx_vtabstruct_4h5py_3h5t_TypeOpaqueID __pyx_vtable_4h5py_3h5t_TypeOpaqueID;
+
+static PyObject *__pyx_tp_new_4h5py_3h5t_TypeOpaqueID(PyTypeObject *t, PyObject *a, PyObject *k) {
+  struct __pyx_obj_4h5py_3h5t_TypeOpaqueID *p;
+  PyObject *o = __pyx_tp_new_4h5py_3h5t_TypeID(t, a, k);
+  if (!o) return 0;
+  p = ((struct __pyx_obj_4h5py_3h5t_TypeOpaqueID *)o);
+  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4h5py_3h5t_TypeID*)__pyx_vtabptr_4h5py_3h5t_TypeOpaqueID;
+  return o;
+}
+
+static PyMethodDef __pyx_methods_4h5py_3h5t_TypeOpaqueID[] = {
+  {__Pyx_NAMESTR("set_tag"), (PyCFunction)__pyx_pw_4h5py_3h5t_12TypeOpaqueID_1set_tag, METH_O, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5t_12TypeOpaqueID_set_tag)},
+  {__Pyx_NAMESTR("get_tag"), (PyCFunction)__pyx_pw_4h5py_3h5t_12TypeOpaqueID_3get_tag, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5t_12TypeOpaqueID_2get_tag)},
+  {0, 0, 0, 0}
+};
+
+static PyNumberMethods __pyx_tp_as_number_TypeOpaqueID = {
+  0, /*nb_add*/
+  0, /*nb_subtract*/
+  0, /*nb_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_divide*/
+  #endif
+  0, /*nb_remainder*/
+  0, /*nb_divmod*/
+  0, /*nb_power*/
+  0, /*nb_negative*/
+  0, /*nb_positive*/
+  0, /*nb_absolute*/
+  0, /*nb_nonzero*/
+  0, /*nb_invert*/
+  0, /*nb_lshift*/
+  0, /*nb_rshift*/
+  0, /*nb_and*/
+  0, /*nb_xor*/
+  0, /*nb_or*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_coerce*/
+  #endif
+  0, /*nb_int*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_long*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*nb_float*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_oct*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_hex*/
+  #endif
+  0, /*nb_inplace_add*/
+  0, /*nb_inplace_subtract*/
+  0, /*nb_inplace_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_inplace_divide*/
+  #endif
+  0, /*nb_inplace_remainder*/
+  0, /*nb_inplace_power*/
+  0, /*nb_inplace_lshift*/
+  0, /*nb_inplace_rshift*/
+  0, /*nb_inplace_and*/
+  0, /*nb_inplace_xor*/
+  0, /*nb_inplace_or*/
+  0, /*nb_floor_divide*/
+  0, /*nb_true_divide*/
+  0, /*nb_inplace_floor_divide*/
+  0, /*nb_inplace_true_divide*/
+  #if PY_VERSION_HEX >= 0x02050000
+  0, /*nb_index*/
+  #endif
+};
+
+static PySequenceMethods __pyx_tp_as_sequence_TypeOpaqueID = {
+  0, /*sq_length*/
+  0, /*sq_concat*/
+  0, /*sq_repeat*/
+  0, /*sq_item*/
+  0, /*sq_slice*/
+  0, /*sq_ass_item*/
+  0, /*sq_ass_slice*/
+  0, /*sq_contains*/
+  0, /*sq_inplace_concat*/
+  0, /*sq_inplace_repeat*/
+};
+
+static PyMappingMethods __pyx_tp_as_mapping_TypeOpaqueID = {
+  0, /*mp_length*/
+  0, /*mp_subscript*/
+  0, /*mp_ass_subscript*/
+};
+
+static PyBufferProcs __pyx_tp_as_buffer_TypeOpaqueID = {
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getreadbuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getwritebuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getsegcount*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getcharbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_getbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_releasebuffer*/
+  #endif
+};
+
+static PyTypeObject __pyx_type_4h5py_3h5t_TypeOpaqueID = {
+  PyVarObject_HEAD_INIT(0, 0)
+  __Pyx_NAMESTR("h5py.h5t.TypeOpaqueID"), /*tp_name*/
+  sizeof(struct __pyx_obj_4h5py_3h5t_TypeOpaqueID), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_4h5py_3h5t_TypeID, /*tp_dealloc*/
+  0, /*tp_print*/
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*tp_repr*/
+  &__pyx_tp_as_number_TypeOpaqueID, /*tp_as_number*/
+  &__pyx_tp_as_sequence_TypeOpaqueID, /*tp_as_sequence*/
+  &__pyx_tp_as_mapping_TypeOpaqueID, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  &__pyx_tp_as_buffer_TypeOpaqueID, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+  __Pyx_DOCSTR("\n        Represents an opaque type\n    "), /*tp_doc*/
+  __pyx_tp_traverse_4h5py_3h5t_TypeID, /*tp_traverse*/
+  __pyx_tp_clear_4h5py_3h5t_TypeID, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_4h5py_3h5t_TypeOpaqueID, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  0, /*tp_dictoffset*/
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_4h5py_3h5t_TypeOpaqueID, /*tp_new*/
+  0, /*tp_free*/
+  0, /*tp_is_gc*/
+  0, /*tp_bases*/
+  0, /*tp_mro*/
+  0, /*tp_cache*/
+  0, /*tp_subclasses*/
+  0, /*tp_weaklist*/
+  0, /*tp_del*/
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*tp_version_tag*/
+  #endif
+};
+static struct __pyx_vtabstruct_4h5py_3h5t_TypeStringID __pyx_vtable_4h5py_3h5t_TypeStringID;
+
+static PyObject *__pyx_tp_new_4h5py_3h5t_TypeStringID(PyTypeObject *t, PyObject *a, PyObject *k) {
+  struct __pyx_obj_4h5py_3h5t_TypeStringID *p;
+  PyObject *o = __pyx_tp_new_4h5py_3h5t_TypeID(t, a, k);
+  if (!o) return 0;
+  p = ((struct __pyx_obj_4h5py_3h5t_TypeStringID *)o);
+  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4h5py_3h5t_TypeID*)__pyx_vtabptr_4h5py_3h5t_TypeStringID;
+  return o;
+}
+
+static PyMethodDef __pyx_methods_4h5py_3h5t_TypeStringID[] = {
+  {__Pyx_NAMESTR("is_variable_str"), (PyCFunction)__pyx_pw_4h5py_3h5t_12TypeStringID_1is_variable_str, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5t_12TypeStringID_is_variable_str)},
+  {__Pyx_NAMESTR("get_cset"), (PyCFunction)__pyx_pw_4h5py_3h5t_12TypeStringID_3get_cset, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5t_12TypeStringID_2get_cset)},
+  {__Pyx_NAMESTR("set_cset"), (PyCFunction)__pyx_pw_4h5py_3h5t_12TypeStringID_5set_cset, METH_O, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5t_12TypeStringID_4set_cset)},
+  {__Pyx_NAMESTR("get_strpad"), (PyCFunction)__pyx_pw_4h5py_3h5t_12TypeStringID_7get_strpad, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5t_12TypeStringID_6get_strpad)},
+  {__Pyx_NAMESTR("set_strpad"), (PyCFunction)__pyx_pw_4h5py_3h5t_12TypeStringID_9set_strpad, METH_O, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5t_12TypeStringID_8set_strpad)},
+  {0, 0, 0, 0}
+};
+
+static PyNumberMethods __pyx_tp_as_number_TypeStringID = {
+  0, /*nb_add*/
+  0, /*nb_subtract*/
+  0, /*nb_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_divide*/
+  #endif
+  0, /*nb_remainder*/
+  0, /*nb_divmod*/
+  0, /*nb_power*/
+  0, /*nb_negative*/
+  0, /*nb_positive*/
+  0, /*nb_absolute*/
+  0, /*nb_nonzero*/
+  0, /*nb_invert*/
+  0, /*nb_lshift*/
+  0, /*nb_rshift*/
+  0, /*nb_and*/
+  0, /*nb_xor*/
+  0, /*nb_or*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_coerce*/
+  #endif
+  0, /*nb_int*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_long*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*nb_float*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_oct*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_hex*/
+  #endif
+  0, /*nb_inplace_add*/
+  0, /*nb_inplace_subtract*/
+  0, /*nb_inplace_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_inplace_divide*/
+  #endif
+  0, /*nb_inplace_remainder*/
+  0, /*nb_inplace_power*/
+  0, /*nb_inplace_lshift*/
+  0, /*nb_inplace_rshift*/
+  0, /*nb_inplace_and*/
+  0, /*nb_inplace_xor*/
+  0, /*nb_inplace_or*/
+  0, /*nb_floor_divide*/
+  0, /*nb_true_divide*/
+  0, /*nb_inplace_floor_divide*/
+  0, /*nb_inplace_true_divide*/
+  #if PY_VERSION_HEX >= 0x02050000
+  0, /*nb_index*/
+  #endif
+};
+
+static PySequenceMethods __pyx_tp_as_sequence_TypeStringID = {
+  0, /*sq_length*/
+  0, /*sq_concat*/
+  0, /*sq_repeat*/
+  0, /*sq_item*/
+  0, /*sq_slice*/
+  0, /*sq_ass_item*/
+  0, /*sq_ass_slice*/
+  0, /*sq_contains*/
+  0, /*sq_inplace_concat*/
+  0, /*sq_inplace_repeat*/
+};
+
+static PyMappingMethods __pyx_tp_as_mapping_TypeStringID = {
+  0, /*mp_length*/
+  0, /*mp_subscript*/
+  0, /*mp_ass_subscript*/
+};
+
+static PyBufferProcs __pyx_tp_as_buffer_TypeStringID = {
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getreadbuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getwritebuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getsegcount*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getcharbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_getbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_releasebuffer*/
+  #endif
+};
+
+static PyTypeObject __pyx_type_4h5py_3h5t_TypeStringID = {
+  PyVarObject_HEAD_INIT(0, 0)
+  __Pyx_NAMESTR("h5py.h5t.TypeStringID"), /*tp_name*/
+  sizeof(struct __pyx_obj_4h5py_3h5t_TypeStringID), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_4h5py_3h5t_TypeID, /*tp_dealloc*/
+  0, /*tp_print*/
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*tp_repr*/
+  &__pyx_tp_as_number_TypeStringID, /*tp_as_number*/
+  &__pyx_tp_as_sequence_TypeStringID, /*tp_as_sequence*/
+  &__pyx_tp_as_mapping_TypeStringID, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  &__pyx_tp_as_buffer_TypeStringID, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+  __Pyx_DOCSTR("\n        String datatypes, both fixed and vlen.\n    "), /*tp_doc*/
+  __pyx_tp_traverse_4h5py_3h5t_TypeID, /*tp_traverse*/
+  __pyx_tp_clear_4h5py_3h5t_TypeID, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_4h5py_3h5t_TypeStringID, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  0, /*tp_dictoffset*/
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_4h5py_3h5t_TypeStringID, /*tp_new*/
+  0, /*tp_free*/
+  0, /*tp_is_gc*/
+  0, /*tp_bases*/
+  0, /*tp_mro*/
+  0, /*tp_cache*/
+  0, /*tp_subclasses*/
+  0, /*tp_weaklist*/
+  0, /*tp_del*/
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*tp_version_tag*/
+  #endif
+};
+static struct __pyx_vtabstruct_4h5py_3h5t_TypeVlenID __pyx_vtable_4h5py_3h5t_TypeVlenID;
+
+static PyObject *__pyx_tp_new_4h5py_3h5t_TypeVlenID(PyTypeObject *t, PyObject *a, PyObject *k) {
+  struct __pyx_obj_4h5py_3h5t_TypeVlenID *p;
+  PyObject *o = __pyx_tp_new_4h5py_3h5t_TypeID(t, a, k);
+  if (!o) return 0;
+  p = ((struct __pyx_obj_4h5py_3h5t_TypeVlenID *)o);
+  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4h5py_3h5t_TypeID*)__pyx_vtabptr_4h5py_3h5t_TypeVlenID;
+  return o;
+}
+
+static PyMethodDef __pyx_methods_4h5py_3h5t_TypeVlenID[] = {
+  {0, 0, 0, 0}
+};
+
+static PyNumberMethods __pyx_tp_as_number_TypeVlenID = {
+  0, /*nb_add*/
+  0, /*nb_subtract*/
+  0, /*nb_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_divide*/
+  #endif
+  0, /*nb_remainder*/
+  0, /*nb_divmod*/
+  0, /*nb_power*/
+  0, /*nb_negative*/
+  0, /*nb_positive*/
+  0, /*nb_absolute*/
+  0, /*nb_nonzero*/
+  0, /*nb_invert*/
+  0, /*nb_lshift*/
+  0, /*nb_rshift*/
+  0, /*nb_and*/
+  0, /*nb_xor*/
+  0, /*nb_or*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_coerce*/
+  #endif
+  0, /*nb_int*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_long*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*nb_float*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_oct*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_hex*/
+  #endif
+  0, /*nb_inplace_add*/
+  0, /*nb_inplace_subtract*/
+  0, /*nb_inplace_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_inplace_divide*/
+  #endif
+  0, /*nb_inplace_remainder*/
+  0, /*nb_inplace_power*/
+  0, /*nb_inplace_lshift*/
+  0, /*nb_inplace_rshift*/
+  0, /*nb_inplace_and*/
+  0, /*nb_inplace_xor*/
+  0, /*nb_inplace_or*/
+  0, /*nb_floor_divide*/
+  0, /*nb_true_divide*/
+  0, /*nb_inplace_floor_divide*/
+  0, /*nb_inplace_true_divide*/
+  #if PY_VERSION_HEX >= 0x02050000
+  0, /*nb_index*/
+  #endif
+};
+
+static PySequenceMethods __pyx_tp_as_sequence_TypeVlenID = {
+  0, /*sq_length*/
+  0, /*sq_concat*/
+  0, /*sq_repeat*/
+  0, /*sq_item*/
+  0, /*sq_slice*/
+  0, /*sq_ass_item*/
+  0, /*sq_ass_slice*/
+  0, /*sq_contains*/
+  0, /*sq_inplace_concat*/
+  0, /*sq_inplace_repeat*/
+};
+
+static PyMappingMethods __pyx_tp_as_mapping_TypeVlenID = {
+  0, /*mp_length*/
+  0, /*mp_subscript*/
+  0, /*mp_ass_subscript*/
+};
+
+static PyBufferProcs __pyx_tp_as_buffer_TypeVlenID = {
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getreadbuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getwritebuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getsegcount*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getcharbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_getbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_releasebuffer*/
+  #endif
+};
+
+static PyTypeObject __pyx_type_4h5py_3h5t_TypeVlenID = {
+  PyVarObject_HEAD_INIT(0, 0)
+  __Pyx_NAMESTR("h5py.h5t.TypeVlenID"), /*tp_name*/
+  sizeof(struct __pyx_obj_4h5py_3h5t_TypeVlenID), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_4h5py_3h5t_TypeID, /*tp_dealloc*/
+  0, /*tp_print*/
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*tp_repr*/
+  &__pyx_tp_as_number_TypeVlenID, /*tp_as_number*/
+  &__pyx_tp_as_sequence_TypeVlenID, /*tp_as_sequence*/
+  &__pyx_tp_as_mapping_TypeVlenID, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  &__pyx_tp_as_buffer_TypeVlenID, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+  __Pyx_DOCSTR("\n        Non-string vlen datatypes.\n    "), /*tp_doc*/
+  __pyx_tp_traverse_4h5py_3h5t_TypeID, /*tp_traverse*/
+  __pyx_tp_clear_4h5py_3h5t_TypeID, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_4h5py_3h5t_TypeVlenID, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  0, /*tp_dictoffset*/
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_4h5py_3h5t_TypeVlenID, /*tp_new*/
+  0, /*tp_free*/
+  0, /*tp_is_gc*/
+  0, /*tp_bases*/
+  0, /*tp_mro*/
+  0, /*tp_cache*/
+  0, /*tp_subclasses*/
+  0, /*tp_weaklist*/
+  0, /*tp_del*/
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*tp_version_tag*/
+  #endif
+};
+static struct __pyx_vtabstruct_4h5py_3h5t_TypeTimeID __pyx_vtable_4h5py_3h5t_TypeTimeID;
+
+static PyObject *__pyx_tp_new_4h5py_3h5t_TypeTimeID(PyTypeObject *t, PyObject *a, PyObject *k) {
+  struct __pyx_obj_4h5py_3h5t_TypeTimeID *p;
+  PyObject *o = __pyx_tp_new_4h5py_3h5t_TypeID(t, a, k);
+  if (!o) return 0;
+  p = ((struct __pyx_obj_4h5py_3h5t_TypeTimeID *)o);
+  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4h5py_3h5t_TypeID*)__pyx_vtabptr_4h5py_3h5t_TypeTimeID;
+  return o;
+}
+
+static PyMethodDef __pyx_methods_4h5py_3h5t_TypeTimeID[] = {
+  {0, 0, 0, 0}
+};
+
+static PyNumberMethods __pyx_tp_as_number_TypeTimeID = {
+  0, /*nb_add*/
+  0, /*nb_subtract*/
+  0, /*nb_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_divide*/
+  #endif
+  0, /*nb_remainder*/
+  0, /*nb_divmod*/
+  0, /*nb_power*/
+  0, /*nb_negative*/
+  0, /*nb_positive*/
+  0, /*nb_absolute*/
+  0, /*nb_nonzero*/
+  0, /*nb_invert*/
+  0, /*nb_lshift*/
+  0, /*nb_rshift*/
+  0, /*nb_and*/
+  0, /*nb_xor*/
+  0, /*nb_or*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_coerce*/
+  #endif
+  0, /*nb_int*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_long*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*nb_float*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_oct*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_hex*/
+  #endif
+  0, /*nb_inplace_add*/
+  0, /*nb_inplace_subtract*/
+  0, /*nb_inplace_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_inplace_divide*/
+  #endif
+  0, /*nb_inplace_remainder*/
+  0, /*nb_inplace_power*/
+  0, /*nb_inplace_lshift*/
+  0, /*nb_inplace_rshift*/
+  0, /*nb_inplace_and*/
+  0, /*nb_inplace_xor*/
+  0, /*nb_inplace_or*/
+  0, /*nb_floor_divide*/
+  0, /*nb_true_divide*/
+  0, /*nb_inplace_floor_divide*/
+  0, /*nb_inplace_true_divide*/
+  #if PY_VERSION_HEX >= 0x02050000
+  0, /*nb_index*/
+  #endif
+};
+
+static PySequenceMethods __pyx_tp_as_sequence_TypeTimeID = {
+  0, /*sq_length*/
+  0, /*sq_concat*/
+  0, /*sq_repeat*/
+  0, /*sq_item*/
+  0, /*sq_slice*/
+  0, /*sq_ass_item*/
+  0, /*sq_ass_slice*/
+  0, /*sq_contains*/
+  0, /*sq_inplace_concat*/
+  0, /*sq_inplace_repeat*/
+};
+
+static PyMappingMethods __pyx_tp_as_mapping_TypeTimeID = {
+  0, /*mp_length*/
+  0, /*mp_subscript*/
+  0, /*mp_ass_subscript*/
+};
+
+static PyBufferProcs __pyx_tp_as_buffer_TypeTimeID = {
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getreadbuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getwritebuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getsegcount*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getcharbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_getbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_releasebuffer*/
+  #endif
+};
+
+static PyTypeObject __pyx_type_4h5py_3h5t_TypeTimeID = {
+  PyVarObject_HEAD_INIT(0, 0)
+  __Pyx_NAMESTR("h5py.h5t.TypeTimeID"), /*tp_name*/
+  sizeof(struct __pyx_obj_4h5py_3h5t_TypeTimeID), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_4h5py_3h5t_TypeID, /*tp_dealloc*/
+  0, /*tp_print*/
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*tp_repr*/
+  &__pyx_tp_as_number_TypeTimeID, /*tp_as_number*/
+  &__pyx_tp_as_sequence_TypeTimeID, /*tp_as_sequence*/
+  &__pyx_tp_as_mapping_TypeTimeID, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  &__pyx_tp_as_buffer_TypeTimeID, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+  __Pyx_DOCSTR("\n        Unix-style time_t (deprecated)\n    "), /*tp_doc*/
+  __pyx_tp_traverse_4h5py_3h5t_TypeID, /*tp_traverse*/
+  __pyx_tp_clear_4h5py_3h5t_TypeID, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_4h5py_3h5t_TypeTimeID, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  0, /*tp_dictoffset*/
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_4h5py_3h5t_TypeTimeID, /*tp_new*/
+  0, /*tp_free*/
+  0, /*tp_is_gc*/
+  0, /*tp_bases*/
+  0, /*tp_mro*/
+  0, /*tp_cache*/
+  0, /*tp_subclasses*/
+  0, /*tp_weaklist*/
+  0, /*tp_del*/
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*tp_version_tag*/
+  #endif
+};
+static struct __pyx_vtabstruct_4h5py_3h5t_TypeBitfieldID __pyx_vtable_4h5py_3h5t_TypeBitfieldID;
+
+static PyObject *__pyx_tp_new_4h5py_3h5t_TypeBitfieldID(PyTypeObject *t, PyObject *a, PyObject *k) {
+  struct __pyx_obj_4h5py_3h5t_TypeBitfieldID *p;
+  PyObject *o = __pyx_tp_new_4h5py_3h5t_TypeID(t, a, k);
+  if (!o) return 0;
+  p = ((struct __pyx_obj_4h5py_3h5t_TypeBitfieldID *)o);
+  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4h5py_3h5t_TypeID*)__pyx_vtabptr_4h5py_3h5t_TypeBitfieldID;
+  return o;
+}
+
+static PyMethodDef __pyx_methods_4h5py_3h5t_TypeBitfieldID[] = {
+  {0, 0, 0, 0}
+};
+
+static PyNumberMethods __pyx_tp_as_number_TypeBitfieldID = {
+  0, /*nb_add*/
+  0, /*nb_subtract*/
+  0, /*nb_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_divide*/
+  #endif
+  0, /*nb_remainder*/
+  0, /*nb_divmod*/
+  0, /*nb_power*/
+  0, /*nb_negative*/
+  0, /*nb_positive*/
+  0, /*nb_absolute*/
+  0, /*nb_nonzero*/
+  0, /*nb_invert*/
+  0, /*nb_lshift*/
+  0, /*nb_rshift*/
+  0, /*nb_and*/
+  0, /*nb_xor*/
+  0, /*nb_or*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_coerce*/
+  #endif
+  0, /*nb_int*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_long*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*nb_float*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_oct*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_hex*/
+  #endif
+  0, /*nb_inplace_add*/
+  0, /*nb_inplace_subtract*/
+  0, /*nb_inplace_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_inplace_divide*/
+  #endif
+  0, /*nb_inplace_remainder*/
+  0, /*nb_inplace_power*/
+  0, /*nb_inplace_lshift*/
+  0, /*nb_inplace_rshift*/
+  0, /*nb_inplace_and*/
+  0, /*nb_inplace_xor*/
+  0, /*nb_inplace_or*/
+  0, /*nb_floor_divide*/
+  0, /*nb_true_divide*/
+  0, /*nb_inplace_floor_divide*/
+  0, /*nb_inplace_true_divide*/
+  #if PY_VERSION_HEX >= 0x02050000
+  0, /*nb_index*/
+  #endif
+};
+
+static PySequenceMethods __pyx_tp_as_sequence_TypeBitfieldID = {
+  0, /*sq_length*/
+  0, /*sq_concat*/
+  0, /*sq_repeat*/
+  0, /*sq_item*/
+  0, /*sq_slice*/
+  0, /*sq_ass_item*/
+  0, /*sq_ass_slice*/
+  0, /*sq_contains*/
+  0, /*sq_inplace_concat*/
+  0, /*sq_inplace_repeat*/
+};
+
+static PyMappingMethods __pyx_tp_as_mapping_TypeBitfieldID = {
+  0, /*mp_length*/
+  0, /*mp_subscript*/
+  0, /*mp_ass_subscript*/
+};
+
+static PyBufferProcs __pyx_tp_as_buffer_TypeBitfieldID = {
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getreadbuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getwritebuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getsegcount*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getcharbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_getbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_releasebuffer*/
+  #endif
+};
+
+static PyTypeObject __pyx_type_4h5py_3h5t_TypeBitfieldID = {
+  PyVarObject_HEAD_INIT(0, 0)
+  __Pyx_NAMESTR("h5py.h5t.TypeBitfieldID"), /*tp_name*/
+  sizeof(struct __pyx_obj_4h5py_3h5t_TypeBitfieldID), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_4h5py_3h5t_TypeID, /*tp_dealloc*/
+  0, /*tp_print*/
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*tp_repr*/
+  &__pyx_tp_as_number_TypeBitfieldID, /*tp_as_number*/
+  &__pyx_tp_as_sequence_TypeBitfieldID, /*tp_as_sequence*/
+  &__pyx_tp_as_mapping_TypeBitfieldID, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  &__pyx_tp_as_buffer_TypeBitfieldID, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+  __Pyx_DOCSTR("\n        HDF5 bitfield type\n    "), /*tp_doc*/
+  __pyx_tp_traverse_4h5py_3h5t_TypeID, /*tp_traverse*/
+  __pyx_tp_clear_4h5py_3h5t_TypeID, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_4h5py_3h5t_TypeBitfieldID, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  0, /*tp_dictoffset*/
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_4h5py_3h5t_TypeBitfieldID, /*tp_new*/
+  0, /*tp_free*/
+  0, /*tp_is_gc*/
+  0, /*tp_bases*/
+  0, /*tp_mro*/
+  0, /*tp_cache*/
+  0, /*tp_subclasses*/
+  0, /*tp_weaklist*/
+  0, /*tp_del*/
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*tp_version_tag*/
+  #endif
+};
+static struct __pyx_vtabstruct_4h5py_3h5t_TypeReferenceID __pyx_vtable_4h5py_3h5t_TypeReferenceID;
+
+static PyObject *__pyx_tp_new_4h5py_3h5t_TypeReferenceID(PyTypeObject *t, PyObject *a, PyObject *k) {
+  struct __pyx_obj_4h5py_3h5t_TypeReferenceID *p;
+  PyObject *o = __pyx_tp_new_4h5py_3h5t_TypeID(t, a, k);
+  if (!o) return 0;
+  p = ((struct __pyx_obj_4h5py_3h5t_TypeReferenceID *)o);
+  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4h5py_3h5t_TypeID*)__pyx_vtabptr_4h5py_3h5t_TypeReferenceID;
+  return o;
+}
+
+static PyMethodDef __pyx_methods_4h5py_3h5t_TypeReferenceID[] = {
+  {0, 0, 0, 0}
+};
+
+static PyNumberMethods __pyx_tp_as_number_TypeReferenceID = {
+  0, /*nb_add*/
+  0, /*nb_subtract*/
+  0, /*nb_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_divide*/
+  #endif
+  0, /*nb_remainder*/
+  0, /*nb_divmod*/
+  0, /*nb_power*/
+  0, /*nb_negative*/
+  0, /*nb_positive*/
+  0, /*nb_absolute*/
+  0, /*nb_nonzero*/
+  0, /*nb_invert*/
+  0, /*nb_lshift*/
+  0, /*nb_rshift*/
+  0, /*nb_and*/
+  0, /*nb_xor*/
+  0, /*nb_or*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_coerce*/
+  #endif
+  0, /*nb_int*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_long*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*nb_float*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_oct*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_hex*/
+  #endif
+  0, /*nb_inplace_add*/
+  0, /*nb_inplace_subtract*/
+  0, /*nb_inplace_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_inplace_divide*/
+  #endif
+  0, /*nb_inplace_remainder*/
+  0, /*nb_inplace_power*/
+  0, /*nb_inplace_lshift*/
+  0, /*nb_inplace_rshift*/
+  0, /*nb_inplace_and*/
+  0, /*nb_inplace_xor*/
+  0, /*nb_inplace_or*/
+  0, /*nb_floor_divide*/
+  0, /*nb_true_divide*/
+  0, /*nb_inplace_floor_divide*/
+  0, /*nb_inplace_true_divide*/
+  #if PY_VERSION_HEX >= 0x02050000
+  0, /*nb_index*/
+  #endif
+};
+
+static PySequenceMethods __pyx_tp_as_sequence_TypeReferenceID = {
+  0, /*sq_length*/
+  0, /*sq_concat*/
+  0, /*sq_repeat*/
+  0, /*sq_item*/
+  0, /*sq_slice*/
+  0, /*sq_ass_item*/
+  0, /*sq_ass_slice*/
+  0, /*sq_contains*/
+  0, /*sq_inplace_concat*/
+  0, /*sq_inplace_repeat*/
+};
+
+static PyMappingMethods __pyx_tp_as_mapping_TypeReferenceID = {
+  0, /*mp_length*/
+  0, /*mp_subscript*/
+  0, /*mp_ass_subscript*/
+};
+
+static PyBufferProcs __pyx_tp_as_buffer_TypeReferenceID = {
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getreadbuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getwritebuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getsegcount*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getcharbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_getbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_releasebuffer*/
+  #endif
+};
+
+static PyTypeObject __pyx_type_4h5py_3h5t_TypeReferenceID = {
+  PyVarObject_HEAD_INIT(0, 0)
+  __Pyx_NAMESTR("h5py.h5t.TypeReferenceID"), /*tp_name*/
+  sizeof(struct __pyx_obj_4h5py_3h5t_TypeReferenceID), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_4h5py_3h5t_TypeID, /*tp_dealloc*/
+  0, /*tp_print*/
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*tp_repr*/
+  &__pyx_tp_as_number_TypeReferenceID, /*tp_as_number*/
+  &__pyx_tp_as_sequence_TypeReferenceID, /*tp_as_sequence*/
+  &__pyx_tp_as_mapping_TypeReferenceID, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  &__pyx_tp_as_buffer_TypeReferenceID, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+  __Pyx_DOCSTR("\n        HDF5 object or region reference\n    "), /*tp_doc*/
+  __pyx_tp_traverse_4h5py_3h5t_TypeID, /*tp_traverse*/
+  __pyx_tp_clear_4h5py_3h5t_TypeID, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_4h5py_3h5t_TypeReferenceID, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  0, /*tp_dictoffset*/
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_4h5py_3h5t_TypeReferenceID, /*tp_new*/
+  0, /*tp_free*/
+  0, /*tp_is_gc*/
+  0, /*tp_bases*/
+  0, /*tp_mro*/
+  0, /*tp_cache*/
+  0, /*tp_subclasses*/
+  0, /*tp_weaklist*/
+  0, /*tp_del*/
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*tp_version_tag*/
+  #endif
+};
+static struct __pyx_vtabstruct_4h5py_3h5t_TypeAtomicID __pyx_vtable_4h5py_3h5t_TypeAtomicID;
+
+static PyObject *__pyx_tp_new_4h5py_3h5t_TypeAtomicID(PyTypeObject *t, PyObject *a, PyObject *k) {
+  struct __pyx_obj_4h5py_3h5t_TypeAtomicID *p;
+  PyObject *o = __pyx_tp_new_4h5py_3h5t_TypeID(t, a, k);
+  if (!o) return 0;
+  p = ((struct __pyx_obj_4h5py_3h5t_TypeAtomicID *)o);
+  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4h5py_3h5t_TypeID*)__pyx_vtabptr_4h5py_3h5t_TypeAtomicID;
+  return o;
+}
+
+static PyMethodDef __pyx_methods_4h5py_3h5t_TypeAtomicID[] = {
+  {__Pyx_NAMESTR("get_order"), (PyCFunction)__pyx_pw_4h5py_3h5t_12TypeAtomicID_1get_order, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5t_12TypeAtomicID_get_order)},
+  {__Pyx_NAMESTR("set_order"), (PyCFunction)__pyx_pw_4h5py_3h5t_12TypeAtomicID_3set_order, METH_O, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5t_12TypeAtomicID_2set_order)},
+  {__Pyx_NAMESTR("get_precision"), (PyCFunction)__pyx_pw_4h5py_3h5t_12TypeAtomicID_5get_precision, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5t_12TypeAtomicID_4get_precision)},
+  {__Pyx_NAMESTR("set_precision"), (PyCFunction)__pyx_pw_4h5py_3h5t_12TypeAtomicID_7set_precision, METH_O, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5t_12TypeAtomicID_6set_precision)},
+  {__Pyx_NAMESTR("get_offset"), (PyCFunction)__pyx_pw_4h5py_3h5t_12TypeAtomicID_9get_offset, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5t_12TypeAtomicID_8get_offset)},
+  {__Pyx_NAMESTR("set_offset"), (PyCFunction)__pyx_pw_4h5py_3h5t_12TypeAtomicID_11set_offset, METH_O, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5t_12TypeAtomicID_10set_offset)},
+  {__Pyx_NAMESTR("get_pad"), (PyCFunction)__pyx_pw_4h5py_3h5t_12TypeAtomicID_13get_pad, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5t_12TypeAtomicID_12get_pad)},
+  {__Pyx_NAMESTR("set_pad"), (PyCFunction)__pyx_pw_4h5py_3h5t_12TypeAtomicID_15set_pad, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5t_12TypeAtomicID_14set_pad)},
+  {0, 0, 0, 0}
+};
+
+static PyNumberMethods __pyx_tp_as_number_TypeAtomicID = {
+  0, /*nb_add*/
+  0, /*nb_subtract*/
+  0, /*nb_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_divide*/
+  #endif
+  0, /*nb_remainder*/
+  0, /*nb_divmod*/
+  0, /*nb_power*/
+  0, /*nb_negative*/
+  0, /*nb_positive*/
+  0, /*nb_absolute*/
+  0, /*nb_nonzero*/
+  0, /*nb_invert*/
+  0, /*nb_lshift*/
+  0, /*nb_rshift*/
+  0, /*nb_and*/
+  0, /*nb_xor*/
+  0, /*nb_or*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_coerce*/
+  #endif
+  0, /*nb_int*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_long*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*nb_float*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_oct*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_hex*/
+  #endif
+  0, /*nb_inplace_add*/
+  0, /*nb_inplace_subtract*/
+  0, /*nb_inplace_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_inplace_divide*/
+  #endif
+  0, /*nb_inplace_remainder*/
+  0, /*nb_inplace_power*/
+  0, /*nb_inplace_lshift*/
+  0, /*nb_inplace_rshift*/
+  0, /*nb_inplace_and*/
+  0, /*nb_inplace_xor*/
+  0, /*nb_inplace_or*/
+  0, /*nb_floor_divide*/
+  0, /*nb_true_divide*/
+  0, /*nb_inplace_floor_divide*/
+  0, /*nb_inplace_true_divide*/
+  #if PY_VERSION_HEX >= 0x02050000
+  0, /*nb_index*/
+  #endif
+};
+
+static PySequenceMethods __pyx_tp_as_sequence_TypeAtomicID = {
+  0, /*sq_length*/
+  0, /*sq_concat*/
+  0, /*sq_repeat*/
+  0, /*sq_item*/
+  0, /*sq_slice*/
+  0, /*sq_ass_item*/
+  0, /*sq_ass_slice*/
+  0, /*sq_contains*/
+  0, /*sq_inplace_concat*/
+  0, /*sq_inplace_repeat*/
+};
+
+static PyMappingMethods __pyx_tp_as_mapping_TypeAtomicID = {
+  0, /*mp_length*/
+  0, /*mp_subscript*/
+  0, /*mp_ass_subscript*/
+};
+
+static PyBufferProcs __pyx_tp_as_buffer_TypeAtomicID = {
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getreadbuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getwritebuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getsegcount*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getcharbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_getbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_releasebuffer*/
+  #endif
+};
+
+static PyTypeObject __pyx_type_4h5py_3h5t_TypeAtomicID = {
+  PyVarObject_HEAD_INIT(0, 0)
+  __Pyx_NAMESTR("h5py.h5t.TypeAtomicID"), /*tp_name*/
+  sizeof(struct __pyx_obj_4h5py_3h5t_TypeAtomicID), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_4h5py_3h5t_TypeID, /*tp_dealloc*/
+  0, /*tp_print*/
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*tp_repr*/
+  &__pyx_tp_as_number_TypeAtomicID, /*tp_as_number*/
+  &__pyx_tp_as_sequence_TypeAtomicID, /*tp_as_sequence*/
+  &__pyx_tp_as_mapping_TypeAtomicID, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  &__pyx_tp_as_buffer_TypeAtomicID, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+  __Pyx_DOCSTR("\n        Base class for atomic datatypes (float or integer)\n    "), /*tp_doc*/
+  __pyx_tp_traverse_4h5py_3h5t_TypeID, /*tp_traverse*/
+  __pyx_tp_clear_4h5py_3h5t_TypeID, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_4h5py_3h5t_TypeAtomicID, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  0, /*tp_dictoffset*/
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_4h5py_3h5t_TypeAtomicID, /*tp_new*/
+  0, /*tp_free*/
+  0, /*tp_is_gc*/
+  0, /*tp_bases*/
+  0, /*tp_mro*/
+  0, /*tp_cache*/
+  0, /*tp_subclasses*/
+  0, /*tp_weaklist*/
+  0, /*tp_del*/
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*tp_version_tag*/
+  #endif
+};
+static struct __pyx_vtabstruct_4h5py_3h5t_TypeIntegerID __pyx_vtable_4h5py_3h5t_TypeIntegerID;
+
+static PyObject *__pyx_tp_new_4h5py_3h5t_TypeIntegerID(PyTypeObject *t, PyObject *a, PyObject *k) {
+  struct __pyx_obj_4h5py_3h5t_TypeIntegerID *p;
+  PyObject *o = __pyx_tp_new_4h5py_3h5t_TypeID(t, a, k);
+  if (!o) return 0;
+  p = ((struct __pyx_obj_4h5py_3h5t_TypeIntegerID *)o);
+  p->__pyx_base.__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4h5py_3h5t_TypeID*)__pyx_vtabptr_4h5py_3h5t_TypeIntegerID;
+  return o;
+}
+
+static PyMethodDef __pyx_methods_4h5py_3h5t_TypeIntegerID[] = {
+  {__Pyx_NAMESTR("get_sign"), (PyCFunction)__pyx_pw_4h5py_3h5t_13TypeIntegerID_1get_sign, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5t_13TypeIntegerID_get_sign)},
+  {__Pyx_NAMESTR("set_sign"), (PyCFunction)__pyx_pw_4h5py_3h5t_13TypeIntegerID_3set_sign, METH_O, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5t_13TypeIntegerID_2set_sign)},
+  {0, 0, 0, 0}
+};
+
+static PyNumberMethods __pyx_tp_as_number_TypeIntegerID = {
+  0, /*nb_add*/
+  0, /*nb_subtract*/
+  0, /*nb_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_divide*/
+  #endif
+  0, /*nb_remainder*/
+  0, /*nb_divmod*/
+  0, /*nb_power*/
+  0, /*nb_negative*/
+  0, /*nb_positive*/
+  0, /*nb_absolute*/
+  0, /*nb_nonzero*/
+  0, /*nb_invert*/
+  0, /*nb_lshift*/
+  0, /*nb_rshift*/
+  0, /*nb_and*/
+  0, /*nb_xor*/
+  0, /*nb_or*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_coerce*/
+  #endif
+  0, /*nb_int*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_long*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*nb_float*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_oct*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_hex*/
+  #endif
+  0, /*nb_inplace_add*/
+  0, /*nb_inplace_subtract*/
+  0, /*nb_inplace_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_inplace_divide*/
+  #endif
+  0, /*nb_inplace_remainder*/
+  0, /*nb_inplace_power*/
+  0, /*nb_inplace_lshift*/
+  0, /*nb_inplace_rshift*/
+  0, /*nb_inplace_and*/
+  0, /*nb_inplace_xor*/
+  0, /*nb_inplace_or*/
+  0, /*nb_floor_divide*/
+  0, /*nb_true_divide*/
+  0, /*nb_inplace_floor_divide*/
+  0, /*nb_inplace_true_divide*/
+  #if PY_VERSION_HEX >= 0x02050000
+  0, /*nb_index*/
+  #endif
+};
+
+static PySequenceMethods __pyx_tp_as_sequence_TypeIntegerID = {
+  0, /*sq_length*/
+  0, /*sq_concat*/
+  0, /*sq_repeat*/
+  0, /*sq_item*/
+  0, /*sq_slice*/
+  0, /*sq_ass_item*/
+  0, /*sq_ass_slice*/
+  0, /*sq_contains*/
+  0, /*sq_inplace_concat*/
+  0, /*sq_inplace_repeat*/
+};
+
+static PyMappingMethods __pyx_tp_as_mapping_TypeIntegerID = {
+  0, /*mp_length*/
+  0, /*mp_subscript*/
+  0, /*mp_ass_subscript*/
+};
+
+static PyBufferProcs __pyx_tp_as_buffer_TypeIntegerID = {
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getreadbuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getwritebuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getsegcount*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getcharbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_getbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_releasebuffer*/
+  #endif
+};
+
+static PyTypeObject __pyx_type_4h5py_3h5t_TypeIntegerID = {
+  PyVarObject_HEAD_INIT(0, 0)
+  __Pyx_NAMESTR("h5py.h5t.TypeIntegerID"), /*tp_name*/
+  sizeof(struct __pyx_obj_4h5py_3h5t_TypeIntegerID), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_4h5py_3h5t_TypeID, /*tp_dealloc*/
+  0, /*tp_print*/
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*tp_repr*/
+  &__pyx_tp_as_number_TypeIntegerID, /*tp_as_number*/
+  &__pyx_tp_as_sequence_TypeIntegerID, /*tp_as_sequence*/
+  &__pyx_tp_as_mapping_TypeIntegerID, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  &__pyx_tp_as_buffer_TypeIntegerID, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+  __Pyx_DOCSTR("\n        Integer atomic datatypes\n    "), /*tp_doc*/
+  __pyx_tp_traverse_4h5py_3h5t_TypeID, /*tp_traverse*/
+  __pyx_tp_clear_4h5py_3h5t_TypeID, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_4h5py_3h5t_TypeIntegerID, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  0, /*tp_dictoffset*/
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_4h5py_3h5t_TypeIntegerID, /*tp_new*/
+  0, /*tp_free*/
+  0, /*tp_is_gc*/
+  0, /*tp_bases*/
+  0, /*tp_mro*/
+  0, /*tp_cache*/
+  0, /*tp_subclasses*/
+  0, /*tp_weaklist*/
+  0, /*tp_del*/
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*tp_version_tag*/
+  #endif
+};
+static struct __pyx_vtabstruct_4h5py_3h5t_TypeFloatID __pyx_vtable_4h5py_3h5t_TypeFloatID;
+
+static PyObject *__pyx_tp_new_4h5py_3h5t_TypeFloatID(PyTypeObject *t, PyObject *a, PyObject *k) {
+  struct __pyx_obj_4h5py_3h5t_TypeFloatID *p;
+  PyObject *o = __pyx_tp_new_4h5py_3h5t_TypeID(t, a, k);
+  if (!o) return 0;
+  p = ((struct __pyx_obj_4h5py_3h5t_TypeFloatID *)o);
+  p->__pyx_base.__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4h5py_3h5t_TypeID*)__pyx_vtabptr_4h5py_3h5t_TypeFloatID;
+  return o;
+}
+
+static PyMethodDef __pyx_methods_4h5py_3h5t_TypeFloatID[] = {
+  {__Pyx_NAMESTR("get_fields"), (PyCFunction)__pyx_pw_4h5py_3h5t_11TypeFloatID_1get_fields, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5t_11TypeFloatID_get_fields)},
+  {__Pyx_NAMESTR("set_fields"), (PyCFunction)__pyx_pw_4h5py_3h5t_11TypeFloatID_3set_fields, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5t_11TypeFloatID_2set_fields)},
+  {__Pyx_NAMESTR("get_ebias"), (PyCFunction)__pyx_pw_4h5py_3h5t_11TypeFloatID_5get_ebias, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5t_11TypeFloatID_4get_ebias)},
+  {__Pyx_NAMESTR("set_ebias"), (PyCFunction)__pyx_pw_4h5py_3h5t_11TypeFloatID_7set_ebias, METH_O, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5t_11TypeFloatID_6set_ebias)},
+  {__Pyx_NAMESTR("get_norm"), (PyCFunction)__pyx_pw_4h5py_3h5t_11TypeFloatID_9get_norm, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5t_11TypeFloatID_8get_norm)},
+  {__Pyx_NAMESTR("set_norm"), (PyCFunction)__pyx_pw_4h5py_3h5t_11TypeFloatID_11set_norm, METH_O, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5t_11TypeFloatID_10set_norm)},
+  {__Pyx_NAMESTR("get_inpad"), (PyCFunction)__pyx_pw_4h5py_3h5t_11TypeFloatID_13get_inpad, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5t_11TypeFloatID_12get_inpad)},
+  {__Pyx_NAMESTR("set_inpad"), (PyCFunction)__pyx_pw_4h5py_3h5t_11TypeFloatID_15set_inpad, METH_O, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5t_11TypeFloatID_14set_inpad)},
+  {0, 0, 0, 0}
+};
+
+static PyNumberMethods __pyx_tp_as_number_TypeFloatID = {
+  0, /*nb_add*/
+  0, /*nb_subtract*/
+  0, /*nb_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_divide*/
+  #endif
+  0, /*nb_remainder*/
+  0, /*nb_divmod*/
+  0, /*nb_power*/
+  0, /*nb_negative*/
+  0, /*nb_positive*/
+  0, /*nb_absolute*/
+  0, /*nb_nonzero*/
+  0, /*nb_invert*/
+  0, /*nb_lshift*/
+  0, /*nb_rshift*/
+  0, /*nb_and*/
+  0, /*nb_xor*/
+  0, /*nb_or*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_coerce*/
+  #endif
+  0, /*nb_int*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_long*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*nb_float*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_oct*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_hex*/
+  #endif
+  0, /*nb_inplace_add*/
+  0, /*nb_inplace_subtract*/
+  0, /*nb_inplace_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_inplace_divide*/
+  #endif
+  0, /*nb_inplace_remainder*/
+  0, /*nb_inplace_power*/
+  0, /*nb_inplace_lshift*/
+  0, /*nb_inplace_rshift*/
+  0, /*nb_inplace_and*/
+  0, /*nb_inplace_xor*/
+  0, /*nb_inplace_or*/
+  0, /*nb_floor_divide*/
+  0, /*nb_true_divide*/
+  0, /*nb_inplace_floor_divide*/
+  0, /*nb_inplace_true_divide*/
+  #if PY_VERSION_HEX >= 0x02050000
+  0, /*nb_index*/
+  #endif
+};
+
+static PySequenceMethods __pyx_tp_as_sequence_TypeFloatID = {
+  0, /*sq_length*/
+  0, /*sq_concat*/
+  0, /*sq_repeat*/
+  0, /*sq_item*/
+  0, /*sq_slice*/
+  0, /*sq_ass_item*/
+  0, /*sq_ass_slice*/
+  0, /*sq_contains*/
+  0, /*sq_inplace_concat*/
+  0, /*sq_inplace_repeat*/
+};
+
+static PyMappingMethods __pyx_tp_as_mapping_TypeFloatID = {
+  0, /*mp_length*/
+  0, /*mp_subscript*/
+  0, /*mp_ass_subscript*/
+};
+
+static PyBufferProcs __pyx_tp_as_buffer_TypeFloatID = {
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getreadbuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getwritebuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getsegcount*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getcharbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_getbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_releasebuffer*/
+  #endif
+};
+
+static PyTypeObject __pyx_type_4h5py_3h5t_TypeFloatID = {
+  PyVarObject_HEAD_INIT(0, 0)
+  __Pyx_NAMESTR("h5py.h5t.TypeFloatID"), /*tp_name*/
+  sizeof(struct __pyx_obj_4h5py_3h5t_TypeFloatID), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_4h5py_3h5t_TypeID, /*tp_dealloc*/
+  0, /*tp_print*/
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*tp_repr*/
+  &__pyx_tp_as_number_TypeFloatID, /*tp_as_number*/
+  &__pyx_tp_as_sequence_TypeFloatID, /*tp_as_sequence*/
+  &__pyx_tp_as_mapping_TypeFloatID, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  &__pyx_tp_as_buffer_TypeFloatID, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+  __Pyx_DOCSTR("\n        Floating-point atomic datatypes\n    "), /*tp_doc*/
+  __pyx_tp_traverse_4h5py_3h5t_TypeID, /*tp_traverse*/
+  __pyx_tp_clear_4h5py_3h5t_TypeID, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_4h5py_3h5t_TypeFloatID, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  0, /*tp_dictoffset*/
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_4h5py_3h5t_TypeFloatID, /*tp_new*/
+  0, /*tp_free*/
+  0, /*tp_is_gc*/
+  0, /*tp_bases*/
+  0, /*tp_mro*/
+  0, /*tp_cache*/
+  0, /*tp_subclasses*/
+  0, /*tp_weaklist*/
+  0, /*tp_del*/
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*tp_version_tag*/
+  #endif
+};
+static struct __pyx_vtabstruct_4h5py_3h5t_TypeCompositeID __pyx_vtable_4h5py_3h5t_TypeCompositeID;
+
+static PyObject *__pyx_tp_new_4h5py_3h5t_TypeCompositeID(PyTypeObject *t, PyObject *a, PyObject *k) {
+  struct __pyx_obj_4h5py_3h5t_TypeCompositeID *p;
+  PyObject *o = __pyx_tp_new_4h5py_3h5t_TypeID(t, a, k);
+  if (!o) return 0;
+  p = ((struct __pyx_obj_4h5py_3h5t_TypeCompositeID *)o);
+  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4h5py_3h5t_TypeID*)__pyx_vtabptr_4h5py_3h5t_TypeCompositeID;
+  return o;
+}
+
+static PyMethodDef __pyx_methods_4h5py_3h5t_TypeCompositeID[] = {
+  {__Pyx_NAMESTR("get_nmembers"), (PyCFunction)__pyx_pw_4h5py_3h5t_15TypeCompositeID_1get_nmembers, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5t_15TypeCompositeID_get_nmembers)},
+  {__Pyx_NAMESTR("get_member_name"), (PyCFunction)__pyx_pw_4h5py_3h5t_15TypeCompositeID_3get_member_name, METH_O, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5t_15TypeCompositeID_2get_member_name)},
+  {__Pyx_NAMESTR("get_member_index"), (PyCFunction)__pyx_pw_4h5py_3h5t_15TypeCompositeID_5get_member_index, METH_O, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5t_15TypeCompositeID_4get_member_index)},
+  {0, 0, 0, 0}
+};
+
+static PyNumberMethods __pyx_tp_as_number_TypeCompositeID = {
+  0, /*nb_add*/
+  0, /*nb_subtract*/
+  0, /*nb_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_divide*/
+  #endif
+  0, /*nb_remainder*/
+  0, /*nb_divmod*/
+  0, /*nb_power*/
+  0, /*nb_negative*/
+  0, /*nb_positive*/
+  0, /*nb_absolute*/
+  0, /*nb_nonzero*/
+  0, /*nb_invert*/
+  0, /*nb_lshift*/
+  0, /*nb_rshift*/
+  0, /*nb_and*/
+  0, /*nb_xor*/
+  0, /*nb_or*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_coerce*/
+  #endif
+  0, /*nb_int*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_long*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*nb_float*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_oct*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_hex*/
+  #endif
+  0, /*nb_inplace_add*/
+  0, /*nb_inplace_subtract*/
+  0, /*nb_inplace_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_inplace_divide*/
+  #endif
+  0, /*nb_inplace_remainder*/
+  0, /*nb_inplace_power*/
+  0, /*nb_inplace_lshift*/
+  0, /*nb_inplace_rshift*/
+  0, /*nb_inplace_and*/
+  0, /*nb_inplace_xor*/
+  0, /*nb_inplace_or*/
+  0, /*nb_floor_divide*/
+  0, /*nb_true_divide*/
+  0, /*nb_inplace_floor_divide*/
+  0, /*nb_inplace_true_divide*/
+  #if PY_VERSION_HEX >= 0x02050000
+  0, /*nb_index*/
+  #endif
+};
+
+static PySequenceMethods __pyx_tp_as_sequence_TypeCompositeID = {
+  0, /*sq_length*/
+  0, /*sq_concat*/
+  0, /*sq_repeat*/
+  0, /*sq_item*/
+  0, /*sq_slice*/
+  0, /*sq_ass_item*/
+  0, /*sq_ass_slice*/
+  0, /*sq_contains*/
+  0, /*sq_inplace_concat*/
+  0, /*sq_inplace_repeat*/
+};
+
+static PyMappingMethods __pyx_tp_as_mapping_TypeCompositeID = {
+  0, /*mp_length*/
+  0, /*mp_subscript*/
+  0, /*mp_ass_subscript*/
+};
+
+static PyBufferProcs __pyx_tp_as_buffer_TypeCompositeID = {
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getreadbuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getwritebuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getsegcount*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getcharbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_getbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_releasebuffer*/
+  #endif
+};
+
+static PyTypeObject __pyx_type_4h5py_3h5t_TypeCompositeID = {
+  PyVarObject_HEAD_INIT(0, 0)
+  __Pyx_NAMESTR("h5py.h5t.TypeCompositeID"), /*tp_name*/
+  sizeof(struct __pyx_obj_4h5py_3h5t_TypeCompositeID), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_4h5py_3h5t_TypeID, /*tp_dealloc*/
+  0, /*tp_print*/
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*tp_repr*/
+  &__pyx_tp_as_number_TypeCompositeID, /*tp_as_number*/
+  &__pyx_tp_as_sequence_TypeCompositeID, /*tp_as_sequence*/
+  &__pyx_tp_as_mapping_TypeCompositeID, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  &__pyx_tp_as_buffer_TypeCompositeID, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+  __Pyx_DOCSTR("\n        Base class for enumerated and compound types.\n    "), /*tp_doc*/
+  __pyx_tp_traverse_4h5py_3h5t_TypeID, /*tp_traverse*/
+  __pyx_tp_clear_4h5py_3h5t_TypeID, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_4h5py_3h5t_TypeCompositeID, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  0, /*tp_dictoffset*/
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_4h5py_3h5t_TypeCompositeID, /*tp_new*/
+  0, /*tp_free*/
+  0, /*tp_is_gc*/
+  0, /*tp_bases*/
+  0, /*tp_mro*/
+  0, /*tp_cache*/
+  0, /*tp_subclasses*/
+  0, /*tp_weaklist*/
+  0, /*tp_del*/
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*tp_version_tag*/
+  #endif
+};
+static struct __pyx_vtabstruct_4h5py_3h5t_TypeEnumID __pyx_vtable_4h5py_3h5t_TypeEnumID;
+
+static PyObject *__pyx_tp_new_4h5py_3h5t_TypeEnumID(PyTypeObject *t, PyObject *a, PyObject *k) {
+  struct __pyx_obj_4h5py_3h5t_TypeEnumID *p;
+  PyObject *o = __pyx_tp_new_4h5py_3h5t_TypeID(t, a, k);
+  if (!o) return 0;
+  p = ((struct __pyx_obj_4h5py_3h5t_TypeEnumID *)o);
+  p->__pyx_base.__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4h5py_3h5t_TypeID*)__pyx_vtabptr_4h5py_3h5t_TypeEnumID;
+  return o;
+}
+
+static PyMethodDef __pyx_methods_4h5py_3h5t_TypeEnumID[] = {
+  {__Pyx_NAMESTR("enum_insert"), (PyCFunction)__pyx_pw_4h5py_3h5t_10TypeEnumID_1enum_insert, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5t_10TypeEnumID_enum_insert)},
+  {__Pyx_NAMESTR("enum_nameof"), (PyCFunction)__pyx_pw_4h5py_3h5t_10TypeEnumID_3enum_nameof, METH_O, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5t_10TypeEnumID_2enum_nameof)},
+  {__Pyx_NAMESTR("enum_valueof"), (PyCFunction)__pyx_pw_4h5py_3h5t_10TypeEnumID_5enum_valueof, METH_O, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5t_10TypeEnumID_4enum_valueof)},
+  {__Pyx_NAMESTR("get_member_value"), (PyCFunction)__pyx_pw_4h5py_3h5t_10TypeEnumID_7get_member_value, METH_O, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5t_10TypeEnumID_6get_member_value)},
+  {0, 0, 0, 0}
+};
+
+static PyNumberMethods __pyx_tp_as_number_TypeEnumID = {
+  0, /*nb_add*/
+  0, /*nb_subtract*/
+  0, /*nb_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_divide*/
+  #endif
+  0, /*nb_remainder*/
+  0, /*nb_divmod*/
+  0, /*nb_power*/
+  0, /*nb_negative*/
+  0, /*nb_positive*/
+  0, /*nb_absolute*/
+  0, /*nb_nonzero*/
+  0, /*nb_invert*/
+  0, /*nb_lshift*/
+  0, /*nb_rshift*/
+  0, /*nb_and*/
+  0, /*nb_xor*/
+  0, /*nb_or*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_coerce*/
+  #endif
+  0, /*nb_int*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_long*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*nb_float*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_oct*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_hex*/
+  #endif
+  0, /*nb_inplace_add*/
+  0, /*nb_inplace_subtract*/
+  0, /*nb_inplace_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_inplace_divide*/
+  #endif
+  0, /*nb_inplace_remainder*/
+  0, /*nb_inplace_power*/
+  0, /*nb_inplace_lshift*/
+  0, /*nb_inplace_rshift*/
+  0, /*nb_inplace_and*/
+  0, /*nb_inplace_xor*/
+  0, /*nb_inplace_or*/
+  0, /*nb_floor_divide*/
+  0, /*nb_true_divide*/
+  0, /*nb_inplace_floor_divide*/
+  0, /*nb_inplace_true_divide*/
+  #if PY_VERSION_HEX >= 0x02050000
+  0, /*nb_index*/
+  #endif
+};
+
+static PySequenceMethods __pyx_tp_as_sequence_TypeEnumID = {
+  0, /*sq_length*/
+  0, /*sq_concat*/
+  0, /*sq_repeat*/
+  0, /*sq_item*/
+  0, /*sq_slice*/
+  0, /*sq_ass_item*/
+  0, /*sq_ass_slice*/
+  0, /*sq_contains*/
+  0, /*sq_inplace_concat*/
+  0, /*sq_inplace_repeat*/
+};
+
+static PyMappingMethods __pyx_tp_as_mapping_TypeEnumID = {
+  0, /*mp_length*/
+  0, /*mp_subscript*/
+  0, /*mp_ass_subscript*/
+};
+
+static PyBufferProcs __pyx_tp_as_buffer_TypeEnumID = {
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getreadbuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getwritebuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getsegcount*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getcharbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_getbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_releasebuffer*/
+  #endif
+};
+
+static PyTypeObject __pyx_type_4h5py_3h5t_TypeEnumID = {
+  PyVarObject_HEAD_INIT(0, 0)
+  __Pyx_NAMESTR("h5py.h5t.TypeEnumID"), /*tp_name*/
+  sizeof(struct __pyx_obj_4h5py_3h5t_TypeEnumID), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_4h5py_3h5t_TypeID, /*tp_dealloc*/
+  0, /*tp_print*/
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*tp_repr*/
+  &__pyx_tp_as_number_TypeEnumID, /*tp_as_number*/
+  &__pyx_tp_as_sequence_TypeEnumID, /*tp_as_sequence*/
+  &__pyx_tp_as_mapping_TypeEnumID, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  &__pyx_tp_as_buffer_TypeEnumID, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+  __Pyx_DOCSTR("\n        Represents an enumerated type\n    "), /*tp_doc*/
+  __pyx_tp_traverse_4h5py_3h5t_TypeID, /*tp_traverse*/
+  __pyx_tp_clear_4h5py_3h5t_TypeID, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_4h5py_3h5t_TypeEnumID, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  0, /*tp_dictoffset*/
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_4h5py_3h5t_TypeEnumID, /*tp_new*/
+  0, /*tp_free*/
+  0, /*tp_is_gc*/
+  0, /*tp_bases*/
+  0, /*tp_mro*/
+  0, /*tp_cache*/
+  0, /*tp_subclasses*/
+  0, /*tp_weaklist*/
+  0, /*tp_del*/
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*tp_version_tag*/
+  #endif
+};
+static struct __pyx_vtabstruct_4h5py_3h5t_TypeCompoundID __pyx_vtable_4h5py_3h5t_TypeCompoundID;
+
+static PyObject *__pyx_tp_new_4h5py_3h5t_TypeCompoundID(PyTypeObject *t, PyObject *a, PyObject *k) {
+  struct __pyx_obj_4h5py_3h5t_TypeCompoundID *p;
+  PyObject *o = __pyx_tp_new_4h5py_3h5t_TypeID(t, a, k);
+  if (!o) return 0;
+  p = ((struct __pyx_obj_4h5py_3h5t_TypeCompoundID *)o);
+  p->__pyx_base.__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4h5py_3h5t_TypeID*)__pyx_vtabptr_4h5py_3h5t_TypeCompoundID;
+  return o;
+}
+
+static PyMethodDef __pyx_methods_4h5py_3h5t_TypeCompoundID[] = {
+  {__Pyx_NAMESTR("get_member_class"), (PyCFunction)__pyx_pw_4h5py_3h5t_14TypeCompoundID_1get_member_class, METH_O, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5t_14TypeCompoundID_get_member_class)},
+  {__Pyx_NAMESTR("get_member_offset"), (PyCFunction)__pyx_pw_4h5py_3h5t_14TypeCompoundID_3get_member_offset, METH_O, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5t_14TypeCompoundID_2get_member_offset)},
+  {__Pyx_NAMESTR("get_member_type"), (PyCFunction)__pyx_pw_4h5py_3h5t_14TypeCompoundID_5get_member_type, METH_O, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5t_14TypeCompoundID_4get_member_type)},
+  {__Pyx_NAMESTR("insert"), (PyCFunction)__pyx_pw_4h5py_3h5t_14TypeCompoundID_7insert, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5t_14TypeCompoundID_6insert)},
+  {__Pyx_NAMESTR("pack"), (PyCFunction)__pyx_pw_4h5py_3h5t_14TypeCompoundID_9pack, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5t_14TypeCompoundID_8pack)},
+  {0, 0, 0, 0}
+};
+
+static PyNumberMethods __pyx_tp_as_number_TypeCompoundID = {
+  0, /*nb_add*/
+  0, /*nb_subtract*/
+  0, /*nb_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_divide*/
+  #endif
+  0, /*nb_remainder*/
+  0, /*nb_divmod*/
+  0, /*nb_power*/
+  0, /*nb_negative*/
+  0, /*nb_positive*/
+  0, /*nb_absolute*/
+  0, /*nb_nonzero*/
+  0, /*nb_invert*/
+  0, /*nb_lshift*/
+  0, /*nb_rshift*/
+  0, /*nb_and*/
+  0, /*nb_xor*/
+  0, /*nb_or*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_coerce*/
+  #endif
+  0, /*nb_int*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_long*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*nb_float*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_oct*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_hex*/
+  #endif
+  0, /*nb_inplace_add*/
+  0, /*nb_inplace_subtract*/
+  0, /*nb_inplace_multiply*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*nb_inplace_divide*/
+  #endif
+  0, /*nb_inplace_remainder*/
+  0, /*nb_inplace_power*/
+  0, /*nb_inplace_lshift*/
+  0, /*nb_inplace_rshift*/
+  0, /*nb_inplace_and*/
+  0, /*nb_inplace_xor*/
+  0, /*nb_inplace_or*/
+  0, /*nb_floor_divide*/
+  0, /*nb_true_divide*/
+  0, /*nb_inplace_floor_divide*/
+  0, /*nb_inplace_true_divide*/
+  #if PY_VERSION_HEX >= 0x02050000
+  0, /*nb_index*/
+  #endif
+};
+
+static PySequenceMethods __pyx_tp_as_sequence_TypeCompoundID = {
+  0, /*sq_length*/
+  0, /*sq_concat*/
+  0, /*sq_repeat*/
+  0, /*sq_item*/
+  0, /*sq_slice*/
+  0, /*sq_ass_item*/
+  0, /*sq_ass_slice*/
+  0, /*sq_contains*/
+  0, /*sq_inplace_concat*/
+  0, /*sq_inplace_repeat*/
+};
+
+static PyMappingMethods __pyx_tp_as_mapping_TypeCompoundID = {
+  0, /*mp_length*/
+  0, /*mp_subscript*/
+  0, /*mp_ass_subscript*/
+};
+
+static PyBufferProcs __pyx_tp_as_buffer_TypeCompoundID = {
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getreadbuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getwritebuffer*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getsegcount*/
+  #endif
+  #if PY_MAJOR_VERSION < 3
+  0, /*bf_getcharbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_getbuffer*/
+  #endif
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*bf_releasebuffer*/
+  #endif
+};
+
+static PyTypeObject __pyx_type_4h5py_3h5t_TypeCompoundID = {
+  PyVarObject_HEAD_INIT(0, 0)
+  __Pyx_NAMESTR("h5py.h5t.TypeCompoundID"), /*tp_name*/
+  sizeof(struct __pyx_obj_4h5py_3h5t_TypeCompoundID), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_4h5py_3h5t_TypeID, /*tp_dealloc*/
+  0, /*tp_print*/
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  #if PY_MAJOR_VERSION < 3
+  0, /*tp_compare*/
+  #else
+  0, /*reserved*/
+  #endif
+  0, /*tp_repr*/
+  &__pyx_tp_as_number_TypeCompoundID, /*tp_as_number*/
+  &__pyx_tp_as_sequence_TypeCompoundID, /*tp_as_sequence*/
+  &__pyx_tp_as_mapping_TypeCompoundID, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  &__pyx_tp_as_buffer_TypeCompoundID, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
+  __Pyx_DOCSTR("\n        Represents a compound datatype\n    "), /*tp_doc*/
+  __pyx_tp_traverse_4h5py_3h5t_TypeID, /*tp_traverse*/
+  __pyx_tp_clear_4h5py_3h5t_TypeID, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_4h5py_3h5t_TypeCompoundID, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  0, /*tp_dictoffset*/
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_4h5py_3h5t_TypeCompoundID, /*tp_new*/
+  0, /*tp_free*/
+  0, /*tp_is_gc*/
+  0, /*tp_bases*/
+  0, /*tp_mro*/
+  0, /*tp_cache*/
+  0, /*tp_subclasses*/
+  0, /*tp_weaklist*/
+  0, /*tp_del*/
+  #if PY_VERSION_HEX >= 0x02060000
+  0, /*tp_version_tag*/
+  #endif
+};
+
+static PyMethodDef __pyx_methods[] = {
+  {__Pyx_NAMESTR("typewrap"), (PyCFunction)__pyx_pw_4h5py_3h5t_1typewrap, METH_O, __Pyx_DOCSTR(0)},
+  {__Pyx_NAMESTR("py_create"), (PyCFunction)__pyx_pw_4h5py_3h5t_15py_create, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5t_14py_create)},
+  {__Pyx_NAMESTR("py_new_enum"), (PyCFunction)__pyx_pw_4h5py_3h5t_25py_new_enum, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5t_24py_new_enum)},
+  {__Pyx_NAMESTR("py_get_enum"), (PyCFunction)__pyx_pw_4h5py_3h5t_27py_get_enum, METH_O, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5t_26py_get_enum)},
+  {__Pyx_NAMESTR("py_new_vlen"), (PyCFunction)__pyx_pw_4h5py_3h5t_29py_new_vlen, METH_O, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5t_28py_new_vlen)},
+  {__Pyx_NAMESTR("py_get_vlen"), (PyCFunction)__pyx_pw_4h5py_3h5t_31py_get_vlen, METH_O, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5t_30py_get_vlen)},
+  {0, 0, 0, 0}
+};
+
+#if PY_MAJOR_VERSION >= 3
+static struct PyModuleDef __pyx_moduledef = {
+  #if PY_VERSION_HEX < 0x03020000
+    { PyObject_HEAD_INIT(NULL) NULL, 0, NULL },
+  #else
+    PyModuleDef_HEAD_INIT,
+  #endif
+    __Pyx_NAMESTR("h5t"),
+    __Pyx_DOCSTR(__pyx_k_49), /* m_doc */
+    -1, /* m_size */
+    __pyx_methods /* m_methods */,
+    NULL, /* m_reload */
+    NULL, /* m_traverse */
+    NULL, /* m_clear */
+    NULL /* m_free */
+};
+#endif
+
+static __Pyx_StringTabEntry __pyx_string_tab[] = {
+  {&__pyx_kp_s_1, __pyx_k_1, sizeof(__pyx_k_1), 0, 0, 1, 0},
+  {&__pyx_kp_s_10, __pyx_k_10, sizeof(__pyx_k_10), 0, 0, 1, 0},
+  {&__pyx_kp_s_13, __pyx_k_13, sizeof(__pyx_k_13), 0, 0, 1, 0},
+  {&__pyx_kp_s_19, __pyx_k_19, sizeof(__pyx_k_19), 0, 0, 1, 0},
+  {&__pyx_kp_s_20, __pyx_k_20, sizeof(__pyx_k_20), 0, 0, 1, 0},
+  {&__pyx_kp_s_25, __pyx_k_25, sizeof(__pyx_k_25), 0, 0, 1, 0},
+  {&__pyx_kp_s_26, __pyx_k_26, sizeof(__pyx_k_26), 0, 0, 1, 0},
+  {&__pyx_kp_s_27, __pyx_k_27, sizeof(__pyx_k_27), 0, 0, 1, 0},
+  {&__pyx_kp_s_28, __pyx_k_28, sizeof(__pyx_k_28), 0, 0, 1, 0},
+  {&__pyx_kp_s_3, __pyx_k_3, sizeof(__pyx_k_3), 0, 0, 1, 0},
+  {&__pyx_kp_s_30, __pyx_k_30, sizeof(__pyx_k_30), 0, 0, 1, 0},
+  {&__pyx_kp_s_32, __pyx_k_32, sizeof(__pyx_k_32), 0, 0, 1, 0},
+  {&__pyx_kp_s_34, __pyx_k_34, sizeof(__pyx_k_34), 0, 0, 1, 0},
+  {&__pyx_kp_s_35, __pyx_k_35, sizeof(__pyx_k_35), 0, 0, 1, 0},
+  {&__pyx_kp_s_36, __pyx_k_36, sizeof(__pyx_k_36), 0, 0, 1, 0},
+  {&__pyx_kp_s_38, __pyx_k_38, sizeof(__pyx_k_38), 0, 0, 1, 0},
+  {&__pyx_kp_s_40, __pyx_k_40, sizeof(__pyx_k_40), 0, 0, 1, 0},
+  {&__pyx_kp_s_42, __pyx_k_42, sizeof(__pyx_k_42), 0, 0, 1, 0},
+  {&__pyx_kp_s_44, __pyx_k_44, sizeof(__pyx_k_44), 0, 0, 1, 0},
+  {&__pyx_kp_s_46, __pyx_k_46, sizeof(__pyx_k_46), 0, 0, 1, 0},
+  {&__pyx_kp_s_5, __pyx_k_5, sizeof(__pyx_k_5), 0, 0, 1, 0},
+  {&__pyx_kp_s_53, __pyx_k_53, sizeof(__pyx_k_53), 0, 0, 1, 0},
+  {&__pyx_kp_s_54, __pyx_k_54, sizeof(__pyx_k_54), 0, 0, 1, 0},
+  {&__pyx_kp_s_55, __pyx_k_55, sizeof(__pyx_k_55), 0, 0, 1, 0},
+  {&__pyx_kp_s_58, __pyx_k_58, sizeof(__pyx_k_58), 0, 0, 1, 0},
+  {&__pyx_n_s_59, __pyx_k_59, sizeof(__pyx_k_59), 0, 0, 1, 1},
+  {&__pyx_kp_s_7, __pyx_k_7, sizeof(__pyx_k_7), 0, 0, 1, 0},
+  {&__pyx_kp_s_8, __pyx_k_8, sizeof(__pyx_k_8), 0, 0, 1, 0},
+  {&__pyx_kp_s_9, __pyx_k_9, sizeof(__pyx_k_9), 0, 0, 1, 0},
+  {&__pyx_kp_s__3, __pyx_k__3, sizeof(__pyx_k__3), 0, 0, 1, 0},
+  {&__pyx_n_s__ARRAY, __pyx_k__ARRAY, sizeof(__pyx_k__ARRAY), 0, 0, 1, 1},
+  {&__pyx_n_s__BITFIELD, __pyx_k__BITFIELD, sizeof(__pyx_k__BITFIELD), 0, 0, 1, 1},
+  {&__pyx_n_s__BKG_NO, __pyx_k__BKG_NO, sizeof(__pyx_k__BKG_NO), 0, 0, 1, 1},
+  {&__pyx_n_s__BKG_TEMP, __pyx_k__BKG_TEMP, sizeof(__pyx_k__BKG_TEMP), 0, 0, 1, 1},
+  {&__pyx_n_s__BKG_YES, __pyx_k__BKG_YES, sizeof(__pyx_k__BKG_YES), 0, 0, 1, 1},
+  {&__pyx_n_s__COMPOUND, __pyx_k__COMPOUND, sizeof(__pyx_k__COMPOUND), 0, 0, 1, 1},
+  {&__pyx_n_s__CSET_ASCII, __pyx_k__CSET_ASCII, sizeof(__pyx_k__CSET_ASCII), 0, 0, 1, 1},
+  {&__pyx_n_s__CSET_UTF8, __pyx_k__CSET_UTF8, sizeof(__pyx_k__CSET_UTF8), 0, 0, 1, 1},
+  {&__pyx_n_s__C_S1, __pyx_k__C_S1, sizeof(__pyx_k__C_S1), 0, 0, 1, 1},
+  {&__pyx_n_s__DIR_ASCEND, __pyx_k__DIR_ASCEND, sizeof(__pyx_k__DIR_ASCEND), 0, 0, 1, 1},
+  {&__pyx_n_s__DIR_DEFAULT, __pyx_k__DIR_DEFAULT, sizeof(__pyx_k__DIR_DEFAULT), 0, 0, 1, 1},
+  {&__pyx_n_s__DIR_DESCEND, __pyx_k__DIR_DESCEND, sizeof(__pyx_k__DIR_DESCEND), 0, 0, 1, 1},
+  {&__pyx_n_s__ENUM, __pyx_k__ENUM, sizeof(__pyx_k__ENUM), 0, 0, 1, 1},
+  {&__pyx_n_s__FLOAT, __pyx_k__FLOAT, sizeof(__pyx_k__FLOAT), 0, 0, 1, 1},
+  {&__pyx_n_s__FORTRAN_S1, __pyx_k__FORTRAN_S1, sizeof(__pyx_k__FORTRAN_S1), 0, 0, 1, 1},
+  {&__pyx_n_s__IEEE_F16BE, __pyx_k__IEEE_F16BE, sizeof(__pyx_k__IEEE_F16BE), 0, 0, 1, 1},
+  {&__pyx_n_s__IEEE_F16LE, __pyx_k__IEEE_F16LE, sizeof(__pyx_k__IEEE_F16LE), 0, 0, 1, 1},
+  {&__pyx_n_s__IEEE_F32BE, __pyx_k__IEEE_F32BE, sizeof(__pyx_k__IEEE_F32BE), 0, 0, 1, 1},
+  {&__pyx_n_s__IEEE_F32LE, __pyx_k__IEEE_F32LE, sizeof(__pyx_k__IEEE_F32LE), 0, 0, 1, 1},
+  {&__pyx_n_s__IEEE_F64BE, __pyx_k__IEEE_F64BE, sizeof(__pyx_k__IEEE_F64BE), 0, 0, 1, 1},
+  {&__pyx_n_s__IEEE_F64LE, __pyx_k__IEEE_F64LE, sizeof(__pyx_k__IEEE_F64LE), 0, 0, 1, 1},
+  {&__pyx_n_s__INTEGER, __pyx_k__INTEGER, sizeof(__pyx_k__INTEGER), 0, 0, 1, 1},
+  {&__pyx_n_s__KeyError, __pyx_k__KeyError, sizeof(__pyx_k__KeyError), 0, 0, 1, 1},
+  {&__pyx_n_s__NATIVE_DOUBLE, __pyx_k__NATIVE_DOUBLE, sizeof(__pyx_k__NATIVE_DOUBLE), 0, 0, 1, 1},
+  {&__pyx_n_s__NATIVE_FLOAT, __pyx_k__NATIVE_FLOAT, sizeof(__pyx_k__NATIVE_FLOAT), 0, 0, 1, 1},
+  {&__pyx_n_s__NATIVE_INT16, __pyx_k__NATIVE_INT16, sizeof(__pyx_k__NATIVE_INT16), 0, 0, 1, 1},
+  {&__pyx_n_s__NATIVE_INT32, __pyx_k__NATIVE_INT32, sizeof(__pyx_k__NATIVE_INT32), 0, 0, 1, 1},
+  {&__pyx_n_s__NATIVE_INT64, __pyx_k__NATIVE_INT64, sizeof(__pyx_k__NATIVE_INT64), 0, 0, 1, 1},
+  {&__pyx_n_s__NATIVE_INT8, __pyx_k__NATIVE_INT8, sizeof(__pyx_k__NATIVE_INT8), 0, 0, 1, 1},
+  {&__pyx_n_s__NATIVE_UINT16, __pyx_k__NATIVE_UINT16, sizeof(__pyx_k__NATIVE_UINT16), 0, 0, 1, 1},
+  {&__pyx_n_s__NATIVE_UINT32, __pyx_k__NATIVE_UINT32, sizeof(__pyx_k__NATIVE_UINT32), 0, 0, 1, 1},
+  {&__pyx_n_s__NATIVE_UINT64, __pyx_k__NATIVE_UINT64, sizeof(__pyx_k__NATIVE_UINT64), 0, 0, 1, 1},
+  {&__pyx_n_s__NATIVE_UINT8, __pyx_k__NATIVE_UINT8, sizeof(__pyx_k__NATIVE_UINT8), 0, 0, 1, 1},
+  {&__pyx_n_s__NORM_IMPLIED, __pyx_k__NORM_IMPLIED, sizeof(__pyx_k__NORM_IMPLIED), 0, 0, 1, 1},
+  {&__pyx_n_s__NORM_MSBSET, __pyx_k__NORM_MSBSET, sizeof(__pyx_k__NORM_MSBSET), 0, 0, 1, 1},
+  {&__pyx_n_s__NORM_NONE, __pyx_k__NORM_NONE, sizeof(__pyx_k__NORM_NONE), 0, 0, 1, 1},
+  {&__pyx_n_s__NO_CLASS, __pyx_k__NO_CLASS, sizeof(__pyx_k__NO_CLASS), 0, 0, 1, 1},
+  {&__pyx_n_s__NotImplemented, __pyx_k__NotImplemented, sizeof(__pyx_k__NotImplemented), 0, 0, 1, 1},
+  {&__pyx_n_s__NotImplementedError, __pyx_k__NotImplementedError, sizeof(__pyx_k__NotImplementedError), 0, 0, 1, 1},
+  {&__pyx_n_s__O, __pyx_k__O, sizeof(__pyx_k__O), 0, 0, 1, 1},
+  {&__pyx_n_s__OPAQUE, __pyx_k__OPAQUE, sizeof(__pyx_k__OPAQUE), 0, 0, 1, 1},
+  {&__pyx_n_s__ORDER_BE, __pyx_k__ORDER_BE, sizeof(__pyx_k__ORDER_BE), 0, 0, 1, 1},
+  {&__pyx_n_s__ORDER_LE, __pyx_k__ORDER_LE, sizeof(__pyx_k__ORDER_LE), 0, 0, 1, 1},
+  {&__pyx_n_s__ORDER_NATIVE, __pyx_k__ORDER_NATIVE, sizeof(__pyx_k__ORDER_NATIVE), 0, 0, 1, 1},
+  {&__pyx_n_s__ORDER_NONE, __pyx_k__ORDER_NONE, sizeof(__pyx_k__ORDER_NONE), 0, 0, 1, 1},
+  {&__pyx_n_s__ORDER_VAX, __pyx_k__ORDER_VAX, sizeof(__pyx_k__ORDER_VAX), 0, 0, 1, 1},
+  {&__pyx_n_s__PAD_BACKGROUND, __pyx_k__PAD_BACKGROUND, sizeof(__pyx_k__PAD_BACKGROUND), 0, 0, 1, 1},
+  {&__pyx_n_s__PAD_ONE, __pyx_k__PAD_ONE, sizeof(__pyx_k__PAD_ONE), 0, 0, 1, 1},
+  {&__pyx_n_s__PAD_ZERO, __pyx_k__PAD_ZERO, sizeof(__pyx_k__PAD_ZERO), 0, 0, 1, 1},
+  {&__pyx_n_s__PY3, __pyx_k__PY3, sizeof(__pyx_k__PY3), 0, 0, 1, 1},
+  {&__pyx_n_s__PYTHON_OBJECT, __pyx_k__PYTHON_OBJECT, sizeof(__pyx_k__PYTHON_OBJECT), 0, 0, 1, 1},
+  {&__pyx_n_s__REFERENCE, __pyx_k__REFERENCE, sizeof(__pyx_k__REFERENCE), 0, 0, 1, 1},
+  {&__pyx_n_s__SGN_2, __pyx_k__SGN_2, sizeof(__pyx_k__SGN_2), 0, 0, 1, 1},
+  {&__pyx_n_s__SGN_NONE, __pyx_k__SGN_NONE, sizeof(__pyx_k__SGN_NONE), 0, 0, 1, 1},
+  {&__pyx_n_s__STD_I16BE, __pyx_k__STD_I16BE, sizeof(__pyx_k__STD_I16BE), 0, 0, 1, 1},
+  {&__pyx_n_s__STD_I16LE, __pyx_k__STD_I16LE, sizeof(__pyx_k__STD_I16LE), 0, 0, 1, 1},
+  {&__pyx_n_s__STD_I32BE, __pyx_k__STD_I32BE, sizeof(__pyx_k__STD_I32BE), 0, 0, 1, 1},
+  {&__pyx_n_s__STD_I32LE, __pyx_k__STD_I32LE, sizeof(__pyx_k__STD_I32LE), 0, 0, 1, 1},
+  {&__pyx_n_s__STD_I64BE, __pyx_k__STD_I64BE, sizeof(__pyx_k__STD_I64BE), 0, 0, 1, 1},
+  {&__pyx_n_s__STD_I64LE, __pyx_k__STD_I64LE, sizeof(__pyx_k__STD_I64LE), 0, 0, 1, 1},
+  {&__pyx_n_s__STD_I8BE, __pyx_k__STD_I8BE, sizeof(__pyx_k__STD_I8BE), 0, 0, 1, 1},
+  {&__pyx_n_s__STD_I8LE, __pyx_k__STD_I8LE, sizeof(__pyx_k__STD_I8LE), 0, 0, 1, 1},
+  {&__pyx_n_s__STD_REF_DSETREG, __pyx_k__STD_REF_DSETREG, sizeof(__pyx_k__STD_REF_DSETREG), 0, 0, 1, 1},
+  {&__pyx_n_s__STD_REF_OBJ, __pyx_k__STD_REF_OBJ, sizeof(__pyx_k__STD_REF_OBJ), 0, 0, 1, 1},
+  {&__pyx_n_s__STD_U16BE, __pyx_k__STD_U16BE, sizeof(__pyx_k__STD_U16BE), 0, 0, 1, 1},
+  {&__pyx_n_s__STD_U16LE, __pyx_k__STD_U16LE, sizeof(__pyx_k__STD_U16LE), 0, 0, 1, 1},
+  {&__pyx_n_s__STD_U32BE, __pyx_k__STD_U32BE, sizeof(__pyx_k__STD_U32BE), 0, 0, 1, 1},
+  {&__pyx_n_s__STD_U32LE, __pyx_k__STD_U32LE, sizeof(__pyx_k__STD_U32LE), 0, 0, 1, 1},
+  {&__pyx_n_s__STD_U64BE, __pyx_k__STD_U64BE, sizeof(__pyx_k__STD_U64BE), 0, 0, 1, 1},
+  {&__pyx_n_s__STD_U64LE, __pyx_k__STD_U64LE, sizeof(__pyx_k__STD_U64LE), 0, 0, 1, 1},
+  {&__pyx_n_s__STD_U8BE, __pyx_k__STD_U8BE, sizeof(__pyx_k__STD_U8BE), 0, 0, 1, 1},
+  {&__pyx_n_s__STD_U8LE, __pyx_k__STD_U8LE, sizeof(__pyx_k__STD_U8LE), 0, 0, 1, 1},
+  {&__pyx_n_s__STRING, __pyx_k__STRING, sizeof(__pyx_k__STRING), 0, 0, 1, 1},
+  {&__pyx_n_s__STR_NULLPAD, __pyx_k__STR_NULLPAD, sizeof(__pyx_k__STR_NULLPAD), 0, 0, 1, 1},
+  {&__pyx_n_s__STR_NULLTERM, __pyx_k__STR_NULLTERM, sizeof(__pyx_k__STR_NULLTERM), 0, 0, 1, 1},
+  {&__pyx_n_s__STR_SPACEPAD, __pyx_k__STR_SPACEPAD, sizeof(__pyx_k__STR_SPACEPAD), 0, 0, 1, 1},
+  {&__pyx_n_s__TIME, __pyx_k__TIME, sizeof(__pyx_k__TIME), 0, 0, 1, 1},
+  {&__pyx_n_s__TypeError, __pyx_k__TypeError, sizeof(__pyx_k__TypeError), 0, 0, 1, 1},
+  {&__pyx_n_s__UNIX_D32BE, __pyx_k__UNIX_D32BE, sizeof(__pyx_k__UNIX_D32BE), 0, 0, 1, 1},
+  {&__pyx_n_s__UNIX_D32LE, __pyx_k__UNIX_D32LE, sizeof(__pyx_k__UNIX_D32LE), 0, 0, 1, 1},
+  {&__pyx_n_s__UNIX_D64BE, __pyx_k__UNIX_D64BE, sizeof(__pyx_k__UNIX_D64BE), 0, 0, 1, 1},
+  {&__pyx_n_s__UNIX_D64LE, __pyx_k__UNIX_D64LE, sizeof(__pyx_k__UNIX_D64LE), 0, 0, 1, 1},
+  {&__pyx_n_s__UnicodeDecodeError, __pyx_k__UnicodeDecodeError, sizeof(__pyx_k__UnicodeDecodeError), 0, 0, 1, 1},
+  {&__pyx_n_s__VARIABLE, __pyx_k__VARIABLE, sizeof(__pyx_k__VARIABLE), 0, 0, 1, 1},
+  {&__pyx_n_s__VLEN, __pyx_k__VLEN, sizeof(__pyx_k__VLEN), 0, 0, 1, 1},
+  {&__pyx_n_s__ValueError, __pyx_k__ValueError, sizeof(__pyx_k__ValueError), 0, 0, 1, 1},
+  {&__pyx_n_s____class__, __pyx_k____class__, sizeof(__pyx_k____class__), 0, 0, 1, 1},
+  {&__pyx_n_s____copy__, __pyx_k____copy__, sizeof(__pyx_k____copy__), 0, 0, 1, 1},
+  {&__pyx_n_s____hash__, __pyx_k____hash__, sizeof(__pyx_k____hash__), 0, 0, 1, 1},
+  {&__pyx_n_s____main__, __pyx_k____main__, sizeof(__pyx_k____main__), 0, 0, 1, 1},
+  {&__pyx_n_s____name__, __pyx_k____name__, sizeof(__pyx_k____name__), 0, 0, 1, 1},
+  {&__pyx_n_s____test__, __pyx_k____test__, sizeof(__pyx_k____test__), 0, 0, 1, 1},
+  {&__pyx_n_s___conv, __pyx_k___conv, sizeof(__pyx_k___conv), 0, 0, 1, 1},
+  {&__pyx_n_s___f_name, __pyx_k___f_name, sizeof(__pyx_k___f_name), 0, 0, 1, 1},
+  {&__pyx_n_s___i_name, __pyx_k___i_name, sizeof(__pyx_k___i_name), 0, 0, 1, 1},
+  {&__pyx_n_s___r_name, __pyx_k___r_name, sizeof(__pyx_k___r_name), 0, 0, 1, 1},
+  {&__pyx_n_s___t_name, __pyx_k___t_name, sizeof(__pyx_k___t_name), 0, 0, 1, 1},
+  {&__pyx_n_s__array_create, __pyx_k__array_create, sizeof(__pyx_k__array_create), 0, 0, 1, 1},
+  {&__pyx_n_s__ascii, __pyx_k__ascii, sizeof(__pyx_k__ascii), 0, 0, 1, 1},
+  {&__pyx_n_s__base, __pyx_k__base, sizeof(__pyx_k__base), 0, 0, 1, 1},
+  {&__pyx_n_s__bkg, __pyx_k__bkg, sizeof(__pyx_k__bkg), 0, 0, 1, 1},
+  {&__pyx_n_s__bkg_, __pyx_k__bkg_, sizeof(__pyx_k__bkg_), 0, 0, 1, 1},
+  {&__pyx_n_s__bool, __pyx_k__bool, sizeof(__pyx_k__bool), 0, 0, 1, 1},
+  {&__pyx_n_s__buf, __pyx_k__buf, sizeof(__pyx_k__buf), 0, 0, 1, 1},
+  {&__pyx_n_s__buf_, __pyx_k__buf_, sizeof(__pyx_k__buf_), 0, 0, 1, 1},
+  {&__pyx_n_s__byteorder, __pyx_k__byteorder, sizeof(__pyx_k__byteorder), 0, 0, 1, 1},
+  {&__pyx_n_s__c, __pyx_k__c, sizeof(__pyx_k__c), 0, 0, 1, 1},
+  {&__pyx_n_s__cfg, __pyx_k__cfg, sizeof(__pyx_k__cfg), 0, 0, 1, 1},
+  {&__pyx_n_s__check_dtype, __pyx_k__check_dtype, sizeof(__pyx_k__check_dtype), 0, 0, 1, 1},
+  {&__pyx_n_s__classtype, __pyx_k__classtype, sizeof(__pyx_k__classtype), 0, 0, 1, 1},
+  {&__pyx_n_s__convert, __pyx_k__convert, sizeof(__pyx_k__convert), 0, 0, 1, 1},
+  {&__pyx_n_s__copy, __pyx_k__copy, sizeof(__pyx_k__copy), 0, 0, 1, 1},
+  {&__pyx_n_s__create, __pyx_k__create, sizeof(__pyx_k__create), 0, 0, 1, 1},
+  {&__pyx_n_s__data, __pyx_k__data, sizeof(__pyx_k__data), 0, 0, 1, 1},
+  {&__pyx_n_s__decode, __pyx_k__decode, sizeof(__pyx_k__decode), 0, 0, 1, 1},
+  {&__pyx_n_s__detect_class, __pyx_k__detect_class, sizeof(__pyx_k__detect_class), 0, 0, 1, 1},
+  {&__pyx_n_s__dims, __pyx_k__dims, sizeof(__pyx_k__dims), 0, 0, 1, 1},
+  {&__pyx_n_s__dims_tpl, __pyx_k__dims_tpl, sizeof(__pyx_k__dims_tpl), 0, 0, 1, 1},
+  {&__pyx_n_s__dst, __pyx_k__dst, sizeof(__pyx_k__dst), 0, 0, 1, 1},
+  {&__pyx_n_s__dt, __pyx_k__dt, sizeof(__pyx_k__dt), 0, 0, 1, 1},
+  {&__pyx_n_s__dt_in, __pyx_k__dt_in, sizeof(__pyx_k__dt_in), 0, 0, 1, 1},
+  {&__pyx_n_s__dtype, __pyx_k__dtype, sizeof(__pyx_k__dtype), 0, 0, 1, 1},
+  {&__pyx_n_s__dtype_in, __pyx_k__dtype_in, sizeof(__pyx_k__dtype_in), 0, 0, 1, 1},
+  {&__pyx_n_s__dxpl, __pyx_k__dxpl, sizeof(__pyx_k__dxpl), 0, 0, 1, 1},
+  {&__pyx_n_s__encode, __pyx_k__encode, sizeof(__pyx_k__encode), 0, 0, 1, 1},
+  {&__pyx_n_s__enum, __pyx_k__enum, sizeof(__pyx_k__enum), 0, 0, 1, 1},
+  {&__pyx_n_s__enum_create, __pyx_k__enum_create, sizeof(__pyx_k__enum_create), 0, 0, 1, 1},
+  {&__pyx_n_s__enum_insert, __pyx_k__enum_insert, sizeof(__pyx_k__enum_insert), 0, 0, 1, 1},
+  {&__pyx_n_s__enum_vals, __pyx_k__enum_vals, sizeof(__pyx_k__enum_vals), 0, 0, 1, 1},
+  {&__pyx_n_s__epos, __pyx_k__epos, sizeof(__pyx_k__epos), 0, 0, 1, 1},
+  {&__pyx_n_s__equal, __pyx_k__equal, sizeof(__pyx_k__equal), 0, 0, 1, 1},
+  {&__pyx_n_s__esize, __pyx_k__esize, sizeof(__pyx_k__esize), 0, 0, 1, 1},
+  {&__pyx_n_s__f, __pyx_k__f, sizeof(__pyx_k__f), 0, 0, 1, 1},
+  {&__pyx_n_s__f4, __pyx_k__f4, sizeof(__pyx_k__f4), 0, 0, 1, 1},
+  {&__pyx_n_s__field, __pyx_k__field, sizeof(__pyx_k__field), 0, 0, 1, 1},
+  {&__pyx_n_s__fields, __pyx_k__fields, sizeof(__pyx_k__fields), 0, 0, 1, 1},
+  {&__pyx_n_s__find, __pyx_k__find, sizeof(__pyx_k__find), 0, 0, 1, 1},
+  {&__pyx_n_s__float16, __pyx_k__float16, sizeof(__pyx_k__float16), 0, 0, 1, 1},
+  {&__pyx_n_s__get_array_dims, __pyx_k__get_array_dims, sizeof(__pyx_k__get_array_dims), 0, 0, 1, 1},
+  {&__pyx_n_s__get_config, __pyx_k__get_config, sizeof(__pyx_k__get_config), 0, 0, 1, 1},
+  {&__pyx_n_s__get_cset, __pyx_k__get_cset, sizeof(__pyx_k__get_cset), 0, 0, 1, 1},
+  {&__pyx_n_s__get_member_name, __pyx_k__get_member_name, sizeof(__pyx_k__get_member_name), 0, 0, 1, 1},
+  {&__pyx_n_s__get_member_type, __pyx_k__get_member_type, sizeof(__pyx_k__get_member_type), 0, 0, 1, 1},
+  {&__pyx_n_s__get_member_value, __pyx_k__get_member_value, sizeof(__pyx_k__get_member_value), 0, 0, 1, 1},
+  {&__pyx_n_s__get_nmembers, __pyx_k__get_nmembers, sizeof(__pyx_k__get_nmembers), 0, 0, 1, 1},
+  {&__pyx_n_s__get_order, __pyx_k__get_order, sizeof(__pyx_k__get_order), 0, 0, 1, 1},
+  {&__pyx_n_s__get_python_obj, __pyx_k__get_python_obj, sizeof(__pyx_k__get_python_obj), 0, 0, 1, 1},
+  {&__pyx_n_s__get_sign, __pyx_k__get_sign, sizeof(__pyx_k__get_sign), 0, 0, 1, 1},
+  {&__pyx_n_s__get_size, __pyx_k__get_size, sizeof(__pyx_k__get_size), 0, 0, 1, 1},
+  {&__pyx_n_s__get_super, __pyx_k__get_super, sizeof(__pyx_k__get_super), 0, 0, 1, 1},
+  {&__pyx_n_s__group, __pyx_k__group, sizeof(__pyx_k__group), 0, 0, 1, 1},
+  {&__pyx_n_s__h5, __pyx_k__h5, sizeof(__pyx_k__h5), 0, 0, 1, 1},
+  {&__pyx_n_s__h5py, __pyx_k__h5py, sizeof(__pyx_k__h5py), 0, 0, 1, 1},
+  {&__pyx_n_s__hint_dict, __pyx_k__hint_dict, sizeof(__pyx_k__hint_dict), 0, 0, 1, 1},
+  {&__pyx_n_s__hintkey, __pyx_k__hintkey, sizeof(__pyx_k__hintkey), 0, 0, 1, 1},
+  {&__pyx_n_s__i, __pyx_k__i, sizeof(__pyx_k__i), 0, 0, 1, 1},
+  {&__pyx_n_s__id, __pyx_k__id, sizeof(__pyx_k__id), 0, 0, 1, 1},
+  {&__pyx_n_s__is_variable_str, __pyx_k__is_variable_str, sizeof(__pyx_k__is_variable_str), 0, 0, 1, 1},
+  {&__pyx_n_s__itemsize, __pyx_k__itemsize, sizeof(__pyx_k__itemsize), 0, 0, 1, 1},
+  {&__pyx_n_s__iteritems, __pyx_k__iteritems, sizeof(__pyx_k__iteritems), 0, 0, 1, 1},
+  {&__pyx_n_s__iu, __pyx_k__iu, sizeof(__pyx_k__iu), 0, 0, 1, 1},
+  {&__pyx_n_s__kind, __pyx_k__kind, sizeof(__pyx_k__kind), 0, 0, 1, 1},
+  {&__pyx_n_s__kwds, __pyx_k__kwds, sizeof(__pyx_k__kwds), 0, 0, 1, 1},
+  {&__pyx_n_s__lcpl, __pyx_k__lcpl, sizeof(__pyx_k__lcpl), 0, 0, 1, 1},
+  {&__pyx_n_s__little, __pyx_k__little, sizeof(__pyx_k__little), 0, 0, 1, 1},
+  {&__pyx_n_s__lock, __pyx_k__lock, sizeof(__pyx_k__lock), 0, 0, 1, 1},
+  {&__pyx_n_s__logical, __pyx_k__logical, sizeof(__pyx_k__logical), 0, 0, 1, 1},
+  {&__pyx_n_s__longdouble, __pyx_k__longdouble, sizeof(__pyx_k__longdouble), 0, 0, 1, 1},
+  {&__pyx_n_s__lsb, __pyx_k__lsb, sizeof(__pyx_k__lsb), 0, 0, 1, 1},
+  {&__pyx_n_s__mpos, __pyx_k__mpos, sizeof(__pyx_k__mpos), 0, 0, 1, 1},
+  {&__pyx_n_s__msb, __pyx_k__msb, sizeof(__pyx_k__msb), 0, 0, 1, 1},
+  {&__pyx_n_s__msize, __pyx_k__msize, sizeof(__pyx_k__msize), 0, 0, 1, 1},
+  {&__pyx_n_s__n, __pyx_k__n, sizeof(__pyx_k__n), 0, 0, 1, 1},
+  {&__pyx_n_s__name, __pyx_k__name, sizeof(__pyx_k__name), 0, 0, 1, 1},
+  {&__pyx_n_s__names, __pyx_k__names, sizeof(__pyx_k__names), 0, 0, 1, 1},
+  {&__pyx_n_s__np, __pyx_k__np, sizeof(__pyx_k__np), 0, 0, 1, 1},
+  {&__pyx_n_s__numpy, __pyx_k__numpy, sizeof(__pyx_k__numpy), 0, 0, 1, 1},
+  {&__pyx_n_s__offset, __pyx_k__offset, sizeof(__pyx_k__offset), 0, 0, 1, 1},
+  {&__pyx_n_s__open, __pyx_k__open, sizeof(__pyx_k__open), 0, 0, 1, 1},
+  {&__pyx_n_s__popitem, __pyx_k__popitem, sizeof(__pyx_k__popitem), 0, 0, 1, 1},
+  {&__pyx_n_s__py_create, __pyx_k__py_create, sizeof(__pyx_k__py_create), 0, 0, 1, 1},
+  {&__pyx_n_s__range, __pyx_k__range, sizeof(__pyx_k__range), 0, 0, 1, 1},
+  {&__pyx_n_s__rank, __pyx_k__rank, sizeof(__pyx_k__rank), 0, 0, 1, 1},
+  {&__pyx_n_s__ref, __pyx_k__ref, sizeof(__pyx_k__ref), 0, 0, 1, 1},
+  {&__pyx_n_s__result, __pyx_k__result, sizeof(__pyx_k__result), 0, 0, 1, 1},
+  {&__pyx_n_s__set_ebias, __pyx_k__set_ebias, sizeof(__pyx_k__set_ebias), 0, 0, 1, 1},
+  {&__pyx_n_s__set_fields, __pyx_k__set_fields, sizeof(__pyx_k__set_fields), 0, 0, 1, 1},
+  {&__pyx_n_s__set_order, __pyx_k__set_order, sizeof(__pyx_k__set_order), 0, 0, 1, 1},
+  {&__pyx_n_s__set_size, __pyx_k__set_size, sizeof(__pyx_k__set_size), 0, 0, 1, 1},
+  {&__pyx_n_s__size, __pyx_k__size, sizeof(__pyx_k__size), 0, 0, 1, 1},
+  {&__pyx_n_s__sorted, __pyx_k__sorted, sizeof(__pyx_k__sorted), 0, 0, 1, 1},
+  {&__pyx_n_s__special_dtype, __pyx_k__special_dtype, sizeof(__pyx_k__special_dtype), 0, 0, 1, 1},
+  {&__pyx_n_s__spos, __pyx_k__spos, sizeof(__pyx_k__spos), 0, 0, 1, 1},
+  {&__pyx_n_s__src, __pyx_k__src, sizeof(__pyx_k__src), 0, 0, 1, 1},
+  {&__pyx_n_s__str, __pyx_k__str, sizeof(__pyx_k__str), 0, 0, 1, 1},
+  {&__pyx_n_s__subdtype, __pyx_k__subdtype, sizeof(__pyx_k__subdtype), 0, 0, 1, 1},
+  {&__pyx_n_s__sys, __pyx_k__sys, sizeof(__pyx_k__sys), 0, 0, 1, 1},
+  {&__pyx_n_s__tpl, __pyx_k__tpl, sizeof(__pyx_k__tpl), 0, 0, 1, 1},
+  {&__pyx_n_s__type, __pyx_k__type, sizeof(__pyx_k__type), 0, 0, 1, 1},
+  {&__pyx_n_s__u, __pyx_k__u, sizeof(__pyx_k__u), 0, 0, 1, 1},
+  {&__pyx_n_s__utf8, __pyx_k__utf8, sizeof(__pyx_k__utf8), 0, 0, 1, 1},
+  {&__pyx_n_s__val, __pyx_k__val, sizeof(__pyx_k__val), 0, 0, 1, 1},
+  {&__pyx_n_s__vals, __pyx_k__vals, sizeof(__pyx_k__vals), 0, 0, 1, 1},
+  {&__pyx_n_s__value, __pyx_k__value, sizeof(__pyx_k__value), 0, 0, 1, 1},
+  {&__pyx_n_s__version, __pyx_k__version, sizeof(__pyx_k__version), 0, 0, 1, 1},
+  {&__pyx_n_s__version_info, __pyx_k__version_info, sizeof(__pyx_k__version_info), 0, 0, 1, 1},
+  {&__pyx_n_s__vlen, __pyx_k__vlen, sizeof(__pyx_k__vlen), 0, 0, 1, 1},
+  {&__pyx_n_s__vlen_create, __pyx_k__vlen_create, sizeof(__pyx_k__vlen_create), 0, 0, 1, 1},
+  {&__pyx_n_s__warnings, __pyx_k__warnings, sizeof(__pyx_k__warnings), 0, 0, 1, 1},
+  {&__pyx_n_s__xrange, __pyx_k__xrange, sizeof(__pyx_k__xrange), 0, 0, 1, 1},
+  {&__pyx_n_s__zip, __pyx_k__zip, sizeof(__pyx_k__zip), 0, 0, 1, 1},
+  {0, 0, 0, 0, 0, 0, 0}
+};
+static int __Pyx_InitCachedBuiltins(void) {
+  __pyx_builtin_ValueError = __Pyx_GetName(__pyx_b, __pyx_n_s__ValueError); if (!__pyx_builtin_ValueError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 228; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_builtin_TypeError = __Pyx_GetName(__pyx_b, __pyx_n_s__TypeError); if (!__pyx_builtin_TypeError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_builtin_NotImplemented = __Pyx_GetName(__pyx_b, __pyx_n_s__NotImplemented); if (!__pyx_builtin_NotImplemented) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 317; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_builtin_zip = __Pyx_GetName(__pyx_b, __pyx_n_s__zip); if (!__pyx_builtin_zip) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1044; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #if PY_MAJOR_VERSION >= 3
+  __pyx_builtin_xrange = __Pyx_GetName(__pyx_b, __pyx_n_s__range); if (!__pyx_builtin_xrange) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #else
+  __pyx_builtin_xrange = __Pyx_GetName(__pyx_b, __pyx_n_s__xrange); if (!__pyx_builtin_xrange) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #endif
+  __pyx_builtin_UnicodeDecodeError = __Pyx_GetName(__pyx_b, __pyx_n_s__UnicodeDecodeError); if (!__pyx_builtin_UnicodeDecodeError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_builtin_KeyError = __Pyx_GetName(__pyx_b, __pyx_n_s__KeyError); if (!__pyx_builtin_KeyError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1205; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_builtin_sorted = __Pyx_GetName(__pyx_b, __pyx_n_s__sorted); if (!__pyx_builtin_sorted) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1244; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_builtin_NotImplementedError = __Pyx_GetName(__pyx_b, __pyx_n_s__NotImplementedError); if (!__pyx_builtin_NotImplementedError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1486; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  return 0;
+  __pyx_L1_error:;
+  return -1;
+}
+
+static int __Pyx_InitCachedConstants(void) {
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0);
+
+  /* "h5py/h5t.pyx":228
+ *     # HDF5 versions 1.6.X segfault with anything else
+ *     if classtype != H5T_COMPOUND and classtype != H5T_OPAQUE:
+ *         raise ValueError("Class must be COMPOUND or OPAQUE.")             # <<<<<<<<<<<<<<
+ * 
+ *     return typewrap(H5Tcreate(<H5T_class_t>classtype, size))
+ */
+  __pyx_k_tuple_2 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_1)); if (unlikely(!__pyx_k_tuple_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 228; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_2);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_2));
+
+  /* "h5py/h5t.pyx":310
+ *                     self._hash = hash(self.encode())
+ *                 else:
+ *                     raise TypeError("Only locked or committed types can be hashed")             # <<<<<<<<<<<<<<
+ * 
+ *         return self._hash
+ */
+  __pyx_k_tuple_4 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_3)); if (unlikely(!__pyx_k_tuple_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 310; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_4);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_4));
+
+  /* "h5py/h5t.pyx":459
+ * 
+ *     def __reduce__(self):
+ *         return (type(self), (-1,), self.encode())             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_k_tuple_6 = PyTuple_Pack(1, __pyx_int_neg_1); if (unlikely(!__pyx_k_tuple_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 459; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_6);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_6));
+
+  /* "h5py/h5t.pyx":655
+ *             return special_dtype(ref=RegionReference)
+ *         else:
+ *             raise TypeError("Unknown reference type")             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_k_tuple_11 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_10)); if (unlikely(!__pyx_k_tuple_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 655; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_11);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_11));
+
+  /* "h5py/h5t.pyx":896
+ *         if size > 8:
+ *             # The native NumPy longdouble is used for 96 and 128-bit floats
+ *             return dtype(order + "f" + str(np.longdouble(1).dtype.itemsize))             # <<<<<<<<<<<<<<
+ * 
+ *         return dtype( _order_map[self.get_order()] + "f" + \
+ */
+  __pyx_k_tuple_12 = PyTuple_Pack(1, __pyx_int_1); if (unlikely(!__pyx_k_tuple_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 896; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_12);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_12));
+
+  /* "h5py/h5t.pyx":929
+ * 
+ *         if member < 0:
+ *             raise ValueError("Member index must be non-negative.")             # <<<<<<<<<<<<<<
+ * 
+ *         try:
+ */
+  __pyx_k_tuple_14 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_13)); if (unlikely(!__pyx_k_tuple_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 929; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_14);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_14));
+
+  /* "h5py/h5t.pyx":965
+ *         """
+ *         if member < 0:
+ *             raise ValueError("Member index must be non-negative.")             # <<<<<<<<<<<<<<
+ *         return H5Tget_member_class(self.id, member)
+ * 
+ */
+  __pyx_k_tuple_15 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_13)); if (unlikely(!__pyx_k_tuple_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 965; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_15);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_15));
+
+  /* "h5py/h5t.pyx":977
+ *         """
+ *         if member < 0:
+ *             raise ValueError("Member index must be non-negative.")             # <<<<<<<<<<<<<<
+ *         return H5Tget_member_offset(self.id, member)
+ * 
+ */
+  __pyx_k_tuple_16 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_13)); if (unlikely(!__pyx_k_tuple_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 977; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_16);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_16));
+
+  /* "h5py/h5t.pyx":988
+ *         """
+ *         if member < 0:
+ *             raise ValueError("Member index must be non-negative.")             # <<<<<<<<<<<<<<
+ *         return typewrap(H5Tget_member_type(self.id, member))
+ * 
+ */
+  __pyx_k_tuple_17 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_13)); if (unlikely(!__pyx_k_tuple_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 988; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_17);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_17));
+
+  /* "h5py/h5t.pyx":1043
+ *         else:
+ *             if sys.version[0] == '3':
+ *                 field_names = [x.decode('utf8') for x in field_names]             # <<<<<<<<<<<<<<
+ *             typeobj = dtype(list(zip(field_names, field_types)))
+ * 
+ */
+  __pyx_k_tuple_18 = PyTuple_Pack(1, ((PyObject *)__pyx_n_s__utf8)); if (unlikely(!__pyx_k_tuple_18)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_18);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_18));
+
+  /* "h5py/h5t.pyx":1135
+ * 
+ *         if idx < 0:
+ *             raise ValueError("Index must be non-negative.")             # <<<<<<<<<<<<<<
+ * 
+ *         H5Tget_member_value(self.id, idx, &val)
+ */
+  __pyx_k_tuple_21 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_20)); if (unlikely(!__pyx_k_tuple_21)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_21);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_21));
+
+  /* "h5py/h5t.pyx":1158
+ *         # Boolean types have priority over standard enums
+ *         if members == ref:
+ *             return dtype('bool')             # <<<<<<<<<<<<<<
+ * 
+ *         # Convert strings to appropriate representation
+ */
+  __pyx_k_tuple_22 = PyTuple_Pack(1, ((PyObject *)__pyx_n_s__bool)); if (unlikely(!__pyx_k_tuple_22)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_22);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_22));
+
+  /* "h5py/h5t.pyx":1164
+ *         for name, val in members.iteritems():
+ *             try:    # ASCII; Py2 -> preserve bytes, Py3 -> make unicode
+ *                 uname = name.decode('ascii')             # <<<<<<<<<<<<<<
+ *                 if PY3:
+ *                     name = uname
+ */
+  __pyx_k_tuple_23 = PyTuple_Pack(1, ((PyObject *)__pyx_n_s__ascii)); if (unlikely(!__pyx_k_tuple_23)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1164; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_23);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_23));
+
+  /* "h5py/h5t.pyx":1169
+ *             except UnicodeDecodeError:
+ *                 try:    # Non-ascii; all platforms try unicode
+ *                     name = name.decode('utf8')             # <<<<<<<<<<<<<<
+ *                 except UnicodeDecodeError:
+ *                     pass    # Last resort: return byte string
+ */
+  __pyx_k_tuple_24 = PyTuple_Pack(1, ((PyObject *)__pyx_n_s__utf8)); if (unlikely(!__pyx_k_tuple_24)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1169; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_24);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_24));
+
+  /* "h5py/h5t.pyx":1277
+ *             shape = (int(shape),)
+ *         except TypeError:
+ *             raise TypeError("Array shape for dtype must be a sequence or integer")             # <<<<<<<<<<<<<<
+ *     type_base = py_create(base, logical=logical)
+ *     return array_create(type_base, shape)
+ */
+  __pyx_k_tuple_29 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_28)); if (unlikely(!__pyx_k_tuple_29)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1277; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_29);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_29));
+
+  /* "h5py/h5t.pyx":1349
+ *     offset = 0
+ *     for name in names:
+ *         ename = name.encode('utf8') if isinstance(name, unicode) else name             # <<<<<<<<<<<<<<
+ *         dt_tmp = dt.fields[name][0]
+ *         type_tmp = py_create(dt_tmp, logical=logical)
+ */
+  __pyx_k_tuple_31 = PyTuple_Pack(1, ((PyObject *)__pyx_n_s__utf8)); if (unlikely(!__pyx_k_tuple_31)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1349; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_31);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_31));
+
+  /* "h5py/h5t.pyx":1377
+ *     elif refclass is RegionReference:
+ *         return STD_REF_DSETREG
+ *     raise TypeError("Unrecognized reference code")             # <<<<<<<<<<<<<<
+ * 
+ * cpdef TypeID py_create(object dtype_in, bint logical=0):
+ */
+  __pyx_k_tuple_33 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_32)); if (unlikely(!__pyx_k_tuple_33)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1377; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_33);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_33));
+
+  /* "h5py/h5t.pyx":1480
+ * 
+ *     if len(kwds) != 1:
+ *         raise TypeError("Exactly one keyword may be provided")             # <<<<<<<<<<<<<<
+ * 
+ *     name, val = kwds.popitem()
+ */
+  __pyx_k_tuple_37 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_36)); if (unlikely(!__pyx_k_tuple_37)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1480; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_37);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_37));
+
+  /* "h5py/h5t.pyx":1486
+ *     if name == 'vlen':
+ *         if val not in (bytes, unicode):
+ *             raise NotImplementedError("Only byte or unicode string vlens are currently supported")             # <<<<<<<<<<<<<<
+ * 
+ *         return dtype(('O', [( ({'type': val},'vlen'), 'O' )] ))
+ */
+  __pyx_k_tuple_39 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_38)); if (unlikely(!__pyx_k_tuple_39)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1486; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_39);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_39));
+
+  /* "h5py/h5t.pyx":1495
+ *             dt, enum_vals = val
+ *         except TypeError:
+ *             raise TypeError("Enums must be created from a 2-tuple (basetype, values_dict)")             # <<<<<<<<<<<<<<
+ * 
+ *         dt = dtype(dt)
+ */
+  __pyx_k_tuple_41 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_40)); if (unlikely(!__pyx_k_tuple_41)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1495; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_41);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_41));
+
+  /* "h5py/h5t.pyx":1499
+ *         dt = dtype(dt)
+ *         if dt.kind not in "iu":
+ *             raise TypeError("Only integer types can be used as enums")             # <<<<<<<<<<<<<<
+ * 
+ *         return dtype((dt, [( ({'vals': enum_vals},'enum'), dt )] ))
+ */
+  __pyx_k_tuple_43 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_42)); if (unlikely(!__pyx_k_tuple_43)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1499; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_43);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_43));
+
+  /* "h5py/h5t.pyx":1506
+ * 
+ *         if val not in (Reference, RegionReference):
+ *             raise ValueError("Ref class must be Reference or RegionReference")             # <<<<<<<<<<<<<<
+ * 
+ *         return dtype(('O', [( ({'type': val},'ref'), 'O' )] ))
+ */
+  __pyx_k_tuple_45 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_44)); if (unlikely(!__pyx_k_tuple_45)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1506; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_45);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_45));
+
+  /* "h5py/h5t.pyx":1533
+ * 
+ *     if len(kwds) != 1:
+ *         raise TypeError("Exactly one keyword may be provided")             # <<<<<<<<<<<<<<
+ * 
+ *     name, dt = kwds.popitem()
+ */
+  __pyx_k_tuple_47 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_36)); if (unlikely(!__pyx_k_tuple_47)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1533; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_47);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_47));
+
+  /* "h5py/h5t.pyx":202
+ * # Mini floats
+ * IEEE_F16BE = IEEE_F32BE.copy()
+ * IEEE_F16BE.set_fields(15, 10, 5, 0, 10)             # <<<<<<<<<<<<<<
+ * IEEE_F16BE.set_size(2)
+ * IEEE_F16BE.set_ebias(15)
+ */
+  __pyx_k_tuple_50 = PyTuple_Pack(5, __pyx_int_15, __pyx_int_10, __pyx_int_5, __pyx_int_0, __pyx_int_10); if (unlikely(!__pyx_k_tuple_50)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_50);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_50));
+
+  /* "h5py/h5t.pyx":203
+ * IEEE_F16BE = IEEE_F32BE.copy()
+ * IEEE_F16BE.set_fields(15, 10, 5, 0, 10)
+ * IEEE_F16BE.set_size(2)             # <<<<<<<<<<<<<<
+ * IEEE_F16BE.set_ebias(15)
+ * IEEE_F16BE.lock()
+ */
+  __pyx_k_tuple_51 = PyTuple_Pack(1, __pyx_int_2); if (unlikely(!__pyx_k_tuple_51)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 203; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_51);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_51));
+
+  /* "h5py/h5t.pyx":204
+ * IEEE_F16BE.set_fields(15, 10, 5, 0, 10)
+ * IEEE_F16BE.set_size(2)
+ * IEEE_F16BE.set_ebias(15)             # <<<<<<<<<<<<<<
+ * IEEE_F16BE.lock()
+ * 
+ */
+  __pyx_k_tuple_52 = PyTuple_Pack(1, __pyx_int_15); if (unlikely(!__pyx_k_tuple_52)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 204; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_52);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_52));
+
+  /* "h5py/h5t.pyx":219
+ * 
+ * 
+ * def create(int classtype, size_t size):             # <<<<<<<<<<<<<<
+ *     """(INT classtype, UINT size) => TypeID
+ * 
+ */
+  __pyx_k_tuple_56 = PyTuple_Pack(2, ((PyObject *)__pyx_n_s__classtype), ((PyObject *)__pyx_n_s__size)); if (unlikely(!__pyx_k_tuple_56)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_56);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_56));
+  __pyx_k_codeobj_57 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_56, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_58, __pyx_n_s__create, 219, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_57)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5t.pyx":233
+ * 
+ * 
+ * def open(ObjectID group not None, char* name):             # <<<<<<<<<<<<<<
+ *     """(ObjectID group, STRING name) => TypeID
+ * 
+ */
+  __pyx_k_tuple_60 = PyTuple_Pack(2, ((PyObject *)__pyx_n_s__group), ((PyObject *)__pyx_n_s__name)); if (unlikely(!__pyx_k_tuple_60)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_60);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_60));
+  __pyx_k_codeobj_61 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_60, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_58, __pyx_n_s__open, 233, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_61)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5t.pyx":241
+ * 
+ * 
+ * def array_create(TypeID base not None, object dims_tpl):             # <<<<<<<<<<<<<<
+ *     """(TypeID base, TUPLE dimensions) => TypeArrayID
+ * 
+ */
+  __pyx_k_tuple_62 = PyTuple_Pack(4, ((PyObject *)__pyx_n_s__base), ((PyObject *)__pyx_n_s__dims_tpl), ((PyObject *)__pyx_n_s__rank), ((PyObject *)__pyx_n_s__dims)); if (unlikely(!__pyx_k_tuple_62)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 241; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_62);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_62));
+  __pyx_k_codeobj_63 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_62, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_58, __pyx_n_s__array_create, 241, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_63)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 241; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5t.pyx":262
+ * 
+ * 
+ * def enum_create(TypeID base not None):             # <<<<<<<<<<<<<<
+ *     """(TypeID base) => TypeID
+ * 
+ */
+  __pyx_k_tuple_64 = PyTuple_Pack(1, ((PyObject *)__pyx_n_s__base)); if (unlikely(!__pyx_k_tuple_64)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 262; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_64);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_64));
+  __pyx_k_codeobj_65 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_64, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_58, __pyx_n_s__enum_create, 262, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_65)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 262; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5t.pyx":270
+ * 
+ * 
+ * def vlen_create(TypeID base not None):             # <<<<<<<<<<<<<<
+ *     """(TypeID base) => TypeID
+ * 
+ */
+  __pyx_k_tuple_66 = PyTuple_Pack(1, ((PyObject *)__pyx_n_s__base)); if (unlikely(!__pyx_k_tuple_66)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 270; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_66);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_66));
+  __pyx_k_codeobj_67 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_66, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_58, __pyx_n_s__vlen_create, 270, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_67)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 270; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5t.pyx":281
+ * 
+ * 
+ * def decode(char* buf):             # <<<<<<<<<<<<<<
+ *     """(STRING buf) => TypeID
+ * 
+ */
+  __pyx_k_tuple_68 = PyTuple_Pack(2, ((PyObject *)__pyx_n_s__buf), ((PyObject *)__pyx_n_s__buf)); if (unlikely(!__pyx_k_tuple_68)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 281; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_68);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_68));
+  __pyx_k_codeobj_69 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_68, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_58, __pyx_n_s__decode, 281, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_69)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 281; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5t.pyx":1459
+ *         raise TypeError("No conversion path for dtype: %s" % repr(dt))
+ * 
+ * def special_dtype(**kwds):             # <<<<<<<<<<<<<<
+ *     """ Create a new h5py "special" type.  Only one keyword may be given.
+ * 
+ */
+  __pyx_k_tuple_70 = PyTuple_Pack(6, ((PyObject *)__pyx_n_s__kwds), ((PyObject *)__pyx_n_s__kwds), ((PyObject *)__pyx_n_s__name), ((PyObject *)__pyx_n_s__val), ((PyObject *)__pyx_n_s__dt), ((PyObject *)__pyx_n_s__enum_vals)); if (unlikely(!__pyx_k_tuple_70)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1459; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_70);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_70));
+  __pyx_k_codeobj_71 = (PyObject*)__Pyx_PyCode_New(0, 0, 6, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_70, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_58, __pyx_n_s__special_dtype, 1459, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_71)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1459; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5t.pyx":1512
+ *     raise TypeError('Unknown special type "%s"' % name)
+ * 
+ * def check_dtype(**kwds):             # <<<<<<<<<<<<<<
+ *     """ Check a dtype for h5py special type "hint" information.  Only one
+ *     keyword may be given.
+ */
+  __pyx_k_tuple_72 = PyTuple_Pack(7, ((PyObject *)__pyx_n_s__kwds), ((PyObject *)__pyx_n_s__kwds), ((PyObject *)__pyx_n_s__name), ((PyObject *)__pyx_n_s__dt), ((PyObject *)__pyx_n_s__hintkey), ((PyObject *)__pyx_n_s__tpl), ((PyObject *)__pyx_n_s__hint_dict)); if (unlikely(!__pyx_k_tuple_72)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1512; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_72);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_72));
+  __pyx_k_codeobj_73 = (PyObject*)__Pyx_PyCode_New(0, 0, 7, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_72, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_58, __pyx_n_s__check_dtype, 1512, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_73)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1512; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5t.pyx":1551
+ *     return None
+ * 
+ * def convert(TypeID src not None, TypeID dst not None, size_t n,             # <<<<<<<<<<<<<<
+ *             ndarray buf not None, ndarray bkg=None, ObjectID dxpl=None):
+ *     """ (TypeID src, TypeID dst, UINT n, NDARRAY buf, NDARRAY bkg=None,
+ */
+  __pyx_k_tuple_74 = PyTuple_Pack(8, ((PyObject *)__pyx_n_s__src), ((PyObject *)__pyx_n_s__dst), ((PyObject *)__pyx_n_s__n), ((PyObject *)__pyx_n_s__buf), ((PyObject *)__pyx_n_s__bkg), ((PyObject *)__pyx_n_s__dxpl), ((PyObject *)__pyx_n_s__bkg_), ((PyObject *)__pyx_n_s__buf_)); if (unlikely(!__pyx_k_tuple_74)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1551; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_74);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_74));
+  __pyx_k_codeobj_75 = (PyObject*)__Pyx_PyCode_New(6, 0, 8, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_74, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_58, __pyx_n_s__convert, 1551, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_75)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1551; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5t.pyx":1572
+ *     H5Tconvert(src.id, dst.id, n, buf_, bkg_, pdefault(dxpl))
+ * 
+ * def find(TypeID src not None, TypeID dst not None):             # <<<<<<<<<<<<<<
+ *     """ (TypeID src, TypeID dst) => TUPLE or None
+ * 
+ */
+  __pyx_k_tuple_76 = PyTuple_Pack(4, ((PyObject *)__pyx_n_s__src), ((PyObject *)__pyx_n_s__dst), ((PyObject *)__pyx_n_s__data), ((PyObject *)__pyx_n_s__result)); if (unlikely(!__pyx_k_tuple_76)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1572; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_76);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_76));
+  __pyx_k_codeobj_77 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_76, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_58, __pyx_n_s__find, 1572, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_77)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1572; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_RefNannyFinishContext();
+  return 0;
+  __pyx_L1_error:;
+  __Pyx_RefNannyFinishContext();
+  return -1;
+}
+
+static int __Pyx_InitGlobals(void) {
+  if (__Pyx_InitStrings(__pyx_string_tab) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  __pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  __pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  __pyx_int_2 = PyInt_FromLong(2); if (unlikely(!__pyx_int_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  __pyx_int_3 = PyInt_FromLong(3); if (unlikely(!__pyx_int_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  __pyx_int_4 = PyInt_FromLong(4); if (unlikely(!__pyx_int_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  __pyx_int_5 = PyInt_FromLong(5); if (unlikely(!__pyx_int_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  __pyx_int_8 = PyInt_FromLong(8); if (unlikely(!__pyx_int_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  __pyx_int_neg_1 = PyInt_FromLong(-1); if (unlikely(!__pyx_int_neg_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  __pyx_int_10 = PyInt_FromLong(10); if (unlikely(!__pyx_int_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  __pyx_int_15 = PyInt_FromLong(15); if (unlikely(!__pyx_int_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  return 0;
+  __pyx_L1_error:;
+  return -1;
+}
+
+#if PY_MAJOR_VERSION < 3
+PyMODINIT_FUNC inith5t(void); /*proto*/
+PyMODINIT_FUNC inith5t(void)
+#else
+PyMODINIT_FUNC PyInit_h5t(void); /*proto*/
+PyMODINIT_FUNC PyInit_h5t(void)
+#endif
+{
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  int __pyx_t_6;
+  hid_t __pyx_t_7;
+  PyObject *__pyx_t_8 = NULL;
+  PyObject *__pyx_t_9 = NULL;
+  __Pyx_RefNannyDeclarations
+  #if CYTHON_REFNANNY
+  __Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny");
+  if (!__Pyx_RefNanny) {
+      PyErr_Clear();
+      __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny");
+      if (!__Pyx_RefNanny)
+          Py_FatalError("failed to import 'refnanny' module");
+  }
+  #endif
+  __Pyx_RefNannySetupContext("PyMODINIT_FUNC PyInit_h5t(void)", 0);
+  if ( __Pyx_check_binary_version() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #ifdef __Pyx_CyFunction_USED
+  if (__Pyx_CyFunction_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #endif
+  #ifdef __Pyx_FusedFunction_USED
+  if (__pyx_FusedFunction_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #endif
+  #ifdef __Pyx_Generator_USED
+  if (__pyx_Generator_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #endif
+  /*--- Library function declarations ---*/
+  /*--- Threads initialization code ---*/
+  #if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS
+  #ifdef WITH_THREAD /* Python build with threading support? */
+  PyEval_InitThreads();
+  #endif
+  #endif
+  /*--- Module creation code ---*/
+  #if PY_MAJOR_VERSION < 3
+  __pyx_m = Py_InitModule4(__Pyx_NAMESTR("h5t"), __pyx_methods, __Pyx_DOCSTR(__pyx_k_49), 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m);
+  #else
+  __pyx_m = PyModule_Create(&__pyx_moduledef);
+  #endif
+  if (unlikely(!__pyx_m)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #if PY_MAJOR_VERSION >= 3
+  {
+    PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (!PyDict_GetItemString(modules, "h5py.h5t")) {
+      if (unlikely(PyDict_SetItemString(modules, "h5py.h5t", __pyx_m) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    }
+  }
+  #endif
+  __pyx_b = PyImport_AddModule(__Pyx_NAMESTR(__Pyx_BUILTIN_MODULE_NAME)); if (unlikely(!__pyx_b)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #if CYTHON_COMPILING_IN_PYPY
+  Py_INCREF(__pyx_b);
+  #endif
+  if (__Pyx_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  /*--- Initialize various global constants etc. ---*/
+  if (unlikely(__Pyx_InitGlobals() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__pyx_module_is_main_h5py__h5t) {
+    if (__Pyx_SetAttrString(__pyx_m, "__name__", __pyx_n_s____main__) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  }
+  /*--- Builtin init code ---*/
+  if (unlikely(__Pyx_InitCachedBuiltins() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  /*--- Constants init code ---*/
+  if (unlikely(__Pyx_InitCachedConstants() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  /*--- Global init code ---*/
+  __pyx_v_4h5py_3h5t__order_map = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  __pyx_v_4h5py_3h5t__sign_map = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  __pyx_v_4h5py_3h5t__float_le = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  __pyx_v_4h5py_3h5t__float_be = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  __pyx_v_4h5py_3h5t__float_nt = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  __pyx_v_4h5py_3h5t__int_le = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  __pyx_v_4h5py_3h5t__int_be = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  __pyx_v_4h5py_3h5t__int_nt = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  __pyx_v_4h5py_3h5t__uint_le = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  __pyx_v_4h5py_3h5t__uint_be = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  __pyx_v_4h5py_3h5t__uint_nt = ((PyObject*)Py_None); Py_INCREF(Py_None);
+  /*--- Variable export code ---*/
+  /*--- Function export code ---*/
+  if (__Pyx_ExportFunction("typewrap", (void (*)(void))__pyx_f_4h5py_3h5t_typewrap, "struct __pyx_obj_4h5py_3h5t_TypeID *(hid_t, int __pyx_skip_dispatch)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("py_create", (void (*)(void))__pyx_f_4h5py_3h5t_py_create, "struct __pyx_obj_4h5py_3h5t_TypeID *(PyObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_4h5py_3h5t_py_create *__pyx_optional_args)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  /*--- Type init code ---*/
+  __pyx_ptype_4h5py_8_objects_ObjectID = __Pyx_ImportType("h5py._objects", "ObjectID", sizeof(struct __pyx_obj_4h5py_8_objects_ObjectID), 1); if (unlikely(!__pyx_ptype_4h5py_8_objects_ObjectID)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_vtabptr_4h5py_3h5t_TypeID = &__pyx_vtable_4h5py_3h5t_TypeID;
+  __pyx_vtable_4h5py_3h5t_TypeID.py_dtype = (PyObject *(*)(struct __pyx_obj_4h5py_3h5t_TypeID *))__pyx_f_4h5py_3h5t_6TypeID_py_dtype;
+  __pyx_type_4h5py_3h5t_TypeID.tp_base = __pyx_ptype_4h5py_8_objects_ObjectID;
+  if (PyType_Ready(&__pyx_type_4h5py_3h5t_TypeID) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 291; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetVtable(__pyx_type_4h5py_3h5t_TypeID.tp_dict, __pyx_vtabptr_4h5py_3h5t_TypeID) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 291; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetAttrString(__pyx_m, "TypeID", (PyObject *)&__pyx_type_4h5py_3h5t_TypeID) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 291; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__pyx_type_4h5py_3h5t_TypeID.tp_weaklistoffset == 0) __pyx_type_4h5py_3h5t_TypeID.tp_weaklistoffset = offsetof(struct __pyx_obj_4h5py_3h5t_TypeID, __pyx_base.__weakref__);
+  __pyx_ptype_4h5py_3h5t_TypeID = &__pyx_type_4h5py_3h5t_TypeID;
+  __pyx_vtabptr_4h5py_3h5t_TypeArrayID = &__pyx_vtable_4h5py_3h5t_TypeArrayID;
+  __pyx_vtable_4h5py_3h5t_TypeArrayID.__pyx_base = *__pyx_vtabptr_4h5py_3h5t_TypeID;
+  __pyx_vtable_4h5py_3h5t_TypeArrayID.__pyx_base.py_dtype = (PyObject *(*)(struct __pyx_obj_4h5py_3h5t_TypeID *))__pyx_f_4h5py_3h5t_11TypeArrayID_py_dtype;
+  __pyx_type_4h5py_3h5t_TypeArrayID.tp_base = __pyx_ptype_4h5py_3h5t_TypeID;
+  if (PyType_Ready(&__pyx_type_4h5py_3h5t_TypeArrayID) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 468; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetVtable(__pyx_type_4h5py_3h5t_TypeArrayID.tp_dict, __pyx_vtabptr_4h5py_3h5t_TypeArrayID) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 468; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetAttrString(__pyx_m, "TypeArrayID", (PyObject *)&__pyx_type_4h5py_3h5t_TypeArrayID) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 468; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__pyx_type_4h5py_3h5t_TypeArrayID.tp_weaklistoffset == 0) __pyx_type_4h5py_3h5t_TypeArrayID.tp_weaklistoffset = offsetof(struct __pyx_obj_4h5py_3h5t_TypeArrayID, __pyx_base.__pyx_base.__weakref__);
+  __pyx_ptype_4h5py_3h5t_TypeArrayID = &__pyx_type_4h5py_3h5t_TypeArrayID;
+  __pyx_vtabptr_4h5py_3h5t_TypeOpaqueID = &__pyx_vtable_4h5py_3h5t_TypeOpaqueID;
+  __pyx_vtable_4h5py_3h5t_TypeOpaqueID.__pyx_base = *__pyx_vtabptr_4h5py_3h5t_TypeID;
+  __pyx_vtable_4h5py_3h5t_TypeOpaqueID.__pyx_base.py_dtype = (PyObject *(*)(struct __pyx_obj_4h5py_3h5t_TypeID *))__pyx_f_4h5py_3h5t_12TypeOpaqueID_py_dtype;
+  __pyx_type_4h5py_3h5t_TypeOpaqueID.tp_base = __pyx_ptype_4h5py_3h5t_TypeID;
+  if (PyType_Ready(&__pyx_type_4h5py_3h5t_TypeOpaqueID) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 511; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetVtable(__pyx_type_4h5py_3h5t_TypeOpaqueID.tp_dict, __pyx_vtabptr_4h5py_3h5t_TypeOpaqueID) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 511; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetAttrString(__pyx_m, "TypeOpaqueID", (PyObject *)&__pyx_type_4h5py_3h5t_TypeOpaqueID) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 511; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__pyx_type_4h5py_3h5t_TypeOpaqueID.tp_weaklistoffset == 0) __pyx_type_4h5py_3h5t_TypeOpaqueID.tp_weaklistoffset = offsetof(struct __pyx_obj_4h5py_3h5t_TypeOpaqueID, __pyx_base.__pyx_base.__weakref__);
+  __pyx_ptype_4h5py_3h5t_TypeOpaqueID = &__pyx_type_4h5py_3h5t_TypeOpaqueID;
+  __pyx_vtabptr_4h5py_3h5t_TypeStringID = &__pyx_vtable_4h5py_3h5t_TypeStringID;
+  __pyx_vtable_4h5py_3h5t_TypeStringID.__pyx_base = *__pyx_vtabptr_4h5py_3h5t_TypeID;
+  __pyx_vtable_4h5py_3h5t_TypeStringID.__pyx_base.py_dtype = (PyObject *(*)(struct __pyx_obj_4h5py_3h5t_TypeID *))__pyx_f_4h5py_3h5t_12TypeStringID_py_dtype;
+  __pyx_type_4h5py_3h5t_TypeStringID.tp_base = __pyx_ptype_4h5py_3h5t_TypeID;
+  if (PyType_Ready(&__pyx_type_4h5py_3h5t_TypeStringID) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 546; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetVtable(__pyx_type_4h5py_3h5t_TypeStringID.tp_dict, __pyx_vtabptr_4h5py_3h5t_TypeStringID) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 546; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetAttrString(__pyx_m, "TypeStringID", (PyObject *)&__pyx_type_4h5py_3h5t_TypeStringID) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 546; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__pyx_type_4h5py_3h5t_TypeStringID.tp_weaklistoffset == 0) __pyx_type_4h5py_3h5t_TypeStringID.tp_weaklistoffset = offsetof(struct __pyx_obj_4h5py_3h5t_TypeStringID, __pyx_base.__pyx_base.__weakref__);
+  __pyx_ptype_4h5py_3h5t_TypeStringID = &__pyx_type_4h5py_3h5t_TypeStringID;
+  __pyx_vtabptr_4h5py_3h5t_TypeVlenID = &__pyx_vtable_4h5py_3h5t_TypeVlenID;
+  __pyx_vtable_4h5py_3h5t_TypeVlenID.__pyx_base = *__pyx_vtabptr_4h5py_3h5t_TypeID;
+  __pyx_type_4h5py_3h5t_TypeVlenID.tp_base = __pyx_ptype_4h5py_3h5t_TypeID;
+  if (PyType_Ready(&__pyx_type_4h5py_3h5t_TypeVlenID) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 622; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetVtable(__pyx_type_4h5py_3h5t_TypeVlenID.tp_dict, __pyx_vtabptr_4h5py_3h5t_TypeVlenID) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 622; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetAttrString(__pyx_m, "TypeVlenID", (PyObject *)&__pyx_type_4h5py_3h5t_TypeVlenID) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 622; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__pyx_type_4h5py_3h5t_TypeVlenID.tp_weaklistoffset == 0) __pyx_type_4h5py_3h5t_TypeVlenID.tp_weaklistoffset = offsetof(struct __pyx_obj_4h5py_3h5t_TypeVlenID, __pyx_base.__pyx_base.__weakref__);
+  __pyx_ptype_4h5py_3h5t_TypeVlenID = &__pyx_type_4h5py_3h5t_TypeVlenID;
+  __pyx_vtabptr_4h5py_3h5t_TypeTimeID = &__pyx_vtable_4h5py_3h5t_TypeTimeID;
+  __pyx_vtable_4h5py_3h5t_TypeTimeID.__pyx_base = *__pyx_vtabptr_4h5py_3h5t_TypeID;
+  __pyx_type_4h5py_3h5t_TypeTimeID.tp_base = __pyx_ptype_4h5py_3h5t_TypeID;
+  if (PyType_Ready(&__pyx_type_4h5py_3h5t_TypeTimeID) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 629; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetVtable(__pyx_type_4h5py_3h5t_TypeTimeID.tp_dict, __pyx_vtabptr_4h5py_3h5t_TypeTimeID) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 629; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetAttrString(__pyx_m, "TypeTimeID", (PyObject *)&__pyx_type_4h5py_3h5t_TypeTimeID) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 629; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__pyx_type_4h5py_3h5t_TypeTimeID.tp_weaklistoffset == 0) __pyx_type_4h5py_3h5t_TypeTimeID.tp_weaklistoffset = offsetof(struct __pyx_obj_4h5py_3h5t_TypeTimeID, __pyx_base.__pyx_base.__weakref__);
+  __pyx_ptype_4h5py_3h5t_TypeTimeID = &__pyx_type_4h5py_3h5t_TypeTimeID;
+  __pyx_vtabptr_4h5py_3h5t_TypeBitfieldID = &__pyx_vtable_4h5py_3h5t_TypeBitfieldID;
+  __pyx_vtable_4h5py_3h5t_TypeBitfieldID.__pyx_base = *__pyx_vtabptr_4h5py_3h5t_TypeID;
+  __pyx_type_4h5py_3h5t_TypeBitfieldID.tp_base = __pyx_ptype_4h5py_3h5t_TypeID;
+  if (PyType_Ready(&__pyx_type_4h5py_3h5t_TypeBitfieldID) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 636; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetVtable(__pyx_type_4h5py_3h5t_TypeBitfieldID.tp_dict, __pyx_vtabptr_4h5py_3h5t_TypeBitfieldID) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 636; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetAttrString(__pyx_m, "TypeBitfieldID", (PyObject *)&__pyx_type_4h5py_3h5t_TypeBitfieldID) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 636; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__pyx_type_4h5py_3h5t_TypeBitfieldID.tp_weaklistoffset == 0) __pyx_type_4h5py_3h5t_TypeBitfieldID.tp_weaklistoffset = offsetof(struct __pyx_obj_4h5py_3h5t_TypeBitfieldID, __pyx_base.__pyx_base.__weakref__);
+  __pyx_ptype_4h5py_3h5t_TypeBitfieldID = &__pyx_type_4h5py_3h5t_TypeBitfieldID;
+  __pyx_vtabptr_4h5py_3h5t_TypeReferenceID = &__pyx_vtable_4h5py_3h5t_TypeReferenceID;
+  __pyx_vtable_4h5py_3h5t_TypeReferenceID.__pyx_base = *__pyx_vtabptr_4h5py_3h5t_TypeID;
+  __pyx_vtable_4h5py_3h5t_TypeReferenceID.__pyx_base.py_dtype = (PyObject *(*)(struct __pyx_obj_4h5py_3h5t_TypeID *))__pyx_f_4h5py_3h5t_15TypeReferenceID_py_dtype;
+  __pyx_type_4h5py_3h5t_TypeReferenceID.tp_base = __pyx_ptype_4h5py_3h5t_TypeID;
+  if (PyType_Ready(&__pyx_type_4h5py_3h5t_TypeReferenceID) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 643; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetVtable(__pyx_type_4h5py_3h5t_TypeReferenceID.tp_dict, __pyx_vtabptr_4h5py_3h5t_TypeReferenceID) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 643; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetAttrString(__pyx_m, "TypeReferenceID", (PyObject *)&__pyx_type_4h5py_3h5t_TypeReferenceID) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 643; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__pyx_type_4h5py_3h5t_TypeReferenceID.tp_weaklistoffset == 0) __pyx_type_4h5py_3h5t_TypeReferenceID.tp_weaklistoffset = offsetof(struct __pyx_obj_4h5py_3h5t_TypeReferenceID, __pyx_base.__pyx_base.__weakref__);
+  __pyx_ptype_4h5py_3h5t_TypeReferenceID = &__pyx_type_4h5py_3h5t_TypeReferenceID;
+  __pyx_vtabptr_4h5py_3h5t_TypeAtomicID = &__pyx_vtable_4h5py_3h5t_TypeAtomicID;
+  __pyx_vtable_4h5py_3h5t_TypeAtomicID.__pyx_base = *__pyx_vtabptr_4h5py_3h5t_TypeID;
+  __pyx_type_4h5py_3h5t_TypeAtomicID.tp_base = __pyx_ptype_4h5py_3h5t_TypeID;
+  if (PyType_Ready(&__pyx_type_4h5py_3h5t_TypeAtomicID) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 660; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetVtable(__pyx_type_4h5py_3h5t_TypeAtomicID.tp_dict, __pyx_vtabptr_4h5py_3h5t_TypeAtomicID) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 660; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetAttrString(__pyx_m, "TypeAtomicID", (PyObject *)&__pyx_type_4h5py_3h5t_TypeAtomicID) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 660; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__pyx_type_4h5py_3h5t_TypeAtomicID.tp_weaklistoffset == 0) __pyx_type_4h5py_3h5t_TypeAtomicID.tp_weaklistoffset = offsetof(struct __pyx_obj_4h5py_3h5t_TypeAtomicID, __pyx_base.__pyx_base.__weakref__);
+  __pyx_ptype_4h5py_3h5t_TypeAtomicID = &__pyx_type_4h5py_3h5t_TypeAtomicID;
+  __pyx_vtabptr_4h5py_3h5t_TypeIntegerID = &__pyx_vtable_4h5py_3h5t_TypeIntegerID;
+  __pyx_vtable_4h5py_3h5t_TypeIntegerID.__pyx_base = *__pyx_vtabptr_4h5py_3h5t_TypeAtomicID;
+  __pyx_vtable_4h5py_3h5t_TypeIntegerID.__pyx_base.__pyx_base.py_dtype = (PyObject *(*)(struct __pyx_obj_4h5py_3h5t_TypeID *))__pyx_f_4h5py_3h5t_13TypeIntegerID_py_dtype;
+  __pyx_type_4h5py_3h5t_TypeIntegerID.tp_base = __pyx_ptype_4h5py_3h5t_TypeAtomicID;
+  if (PyType_Ready(&__pyx_type_4h5py_3h5t_TypeIntegerID) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 748; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetVtable(__pyx_type_4h5py_3h5t_TypeIntegerID.tp_dict, __pyx_vtabptr_4h5py_3h5t_TypeIntegerID) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 748; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetAttrString(__pyx_m, "TypeIntegerID", (PyObject *)&__pyx_type_4h5py_3h5t_TypeIntegerID) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 748; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__pyx_type_4h5py_3h5t_TypeIntegerID.tp_weaklistoffset == 0) __pyx_type_4h5py_3h5t_TypeIntegerID.tp_weaklistoffset = offsetof(struct __pyx_obj_4h5py_3h5t_TypeIntegerID, __pyx_base.__pyx_base.__pyx_base.__weakref__);
+  __pyx_ptype_4h5py_3h5t_TypeIntegerID = &__pyx_type_4h5py_3h5t_TypeIntegerID;
+  __pyx_vtabptr_4h5py_3h5t_TypeFloatID = &__pyx_vtable_4h5py_3h5t_TypeFloatID;
+  __pyx_vtable_4h5py_3h5t_TypeFloatID.__pyx_base = *__pyx_vtabptr_4h5py_3h5t_TypeAtomicID;
+  __pyx_vtable_4h5py_3h5t_TypeFloatID.__pyx_base.__pyx_base.py_dtype = (PyObject *(*)(struct __pyx_obj_4h5py_3h5t_TypeID *))__pyx_f_4h5py_3h5t_11TypeFloatID_py_dtype;
+  __pyx_type_4h5py_3h5t_TypeFloatID.tp_base = __pyx_ptype_4h5py_3h5t_TypeAtomicID;
+  if (PyType_Ready(&__pyx_type_4h5py_3h5t_TypeFloatID) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 788; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetVtable(__pyx_type_4h5py_3h5t_TypeFloatID.tp_dict, __pyx_vtabptr_4h5py_3h5t_TypeFloatID) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 788; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetAttrString(__pyx_m, "TypeFloatID", (PyObject *)&__pyx_type_4h5py_3h5t_TypeFloatID) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 788; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__pyx_type_4h5py_3h5t_TypeFloatID.tp_weaklistoffset == 0) __pyx_type_4h5py_3h5t_TypeFloatID.tp_weaklistoffset = offsetof(struct __pyx_obj_4h5py_3h5t_TypeFloatID, __pyx_base.__pyx_base.__pyx_base.__weakref__);
+  __pyx_ptype_4h5py_3h5t_TypeFloatID = &__pyx_type_4h5py_3h5t_TypeFloatID;
+  __pyx_vtabptr_4h5py_3h5t_TypeCompositeID = &__pyx_vtable_4h5py_3h5t_TypeCompositeID;
+  __pyx_vtable_4h5py_3h5t_TypeCompositeID.__pyx_base = *__pyx_vtabptr_4h5py_3h5t_TypeID;
+  __pyx_type_4h5py_3h5t_TypeCompositeID.tp_base = __pyx_ptype_4h5py_3h5t_TypeID;
+  if (PyType_Ready(&__pyx_type_4h5py_3h5t_TypeCompositeID) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 904; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetVtable(__pyx_type_4h5py_3h5t_TypeCompositeID.tp_dict, __pyx_vtabptr_4h5py_3h5t_TypeCompositeID) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 904; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetAttrString(__pyx_m, "TypeCompositeID", (PyObject *)&__pyx_type_4h5py_3h5t_TypeCompositeID) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 904; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__pyx_type_4h5py_3h5t_TypeCompositeID.tp_weaklistoffset == 0) __pyx_type_4h5py_3h5t_TypeCompositeID.tp_weaklistoffset = offsetof(struct __pyx_obj_4h5py_3h5t_TypeCompositeID, __pyx_base.__pyx_base.__weakref__);
+  __pyx_ptype_4h5py_3h5t_TypeCompositeID = &__pyx_type_4h5py_3h5t_TypeCompositeID;
+  __pyx_vtabptr_4h5py_3h5t_TypeEnumID = &__pyx_vtable_4h5py_3h5t_TypeEnumID;
+  __pyx_vtable_4h5py_3h5t_TypeEnumID.__pyx_base = *__pyx_vtabptr_4h5py_3h5t_TypeCompositeID;
+  __pyx_vtable_4h5py_3h5t_TypeEnumID.__pyx_base.__pyx_base.py_dtype = (PyObject *(*)(struct __pyx_obj_4h5py_3h5t_TypeID *))__pyx_f_4h5py_3h5t_10TypeEnumID_py_dtype;
+  __pyx_vtable_4h5py_3h5t_TypeEnumID.enum_convert = (int (*)(struct __pyx_obj_4h5py_3h5t_TypeEnumID *, PY_LONG_LONG *, int))__pyx_f_4h5py_3h5t_10TypeEnumID_enum_convert;
+  __pyx_type_4h5py_3h5t_TypeEnumID.tp_base = __pyx_ptype_4h5py_3h5t_TypeCompositeID;
+  if (PyType_Ready(&__pyx_type_4h5py_3h5t_TypeEnumID) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1048; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetVtable(__pyx_type_4h5py_3h5t_TypeEnumID.tp_dict, __pyx_vtabptr_4h5py_3h5t_TypeEnumID) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1048; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetAttrString(__pyx_m, "TypeEnumID", (PyObject *)&__pyx_type_4h5py_3h5t_TypeEnumID) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1048; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__pyx_type_4h5py_3h5t_TypeEnumID.tp_weaklistoffset == 0) __pyx_type_4h5py_3h5t_TypeEnumID.tp_weaklistoffset = offsetof(struct __pyx_obj_4h5py_3h5t_TypeEnumID, __pyx_base.__pyx_base.__pyx_base.__weakref__);
+  __pyx_ptype_4h5py_3h5t_TypeEnumID = &__pyx_type_4h5py_3h5t_TypeEnumID;
+  __pyx_vtabptr_4h5py_3h5t_TypeCompoundID = &__pyx_vtable_4h5py_3h5t_TypeCompoundID;
+  __pyx_vtable_4h5py_3h5t_TypeCompoundID.__pyx_base = *__pyx_vtabptr_4h5py_3h5t_TypeCompositeID;
+  __pyx_vtable_4h5py_3h5t_TypeCompoundID.__pyx_base.__pyx_base.py_dtype = (PyObject *(*)(struct __pyx_obj_4h5py_3h5t_TypeID *))__pyx_f_4h5py_3h5t_14TypeCompoundID_py_dtype;
+  __pyx_type_4h5py_3h5t_TypeCompoundID.tp_base = __pyx_ptype_4h5py_3h5t_TypeCompositeID;
+  if (PyType_Ready(&__pyx_type_4h5py_3h5t_TypeCompoundID) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 950; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetVtable(__pyx_type_4h5py_3h5t_TypeCompoundID.tp_dict, __pyx_vtabptr_4h5py_3h5t_TypeCompoundID) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 950; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_SetAttrString(__pyx_m, "TypeCompoundID", (PyObject *)&__pyx_type_4h5py_3h5t_TypeCompoundID) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 950; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__pyx_type_4h5py_3h5t_TypeCompoundID.tp_weaklistoffset == 0) __pyx_type_4h5py_3h5t_TypeCompoundID.tp_weaklistoffset = offsetof(struct __pyx_obj_4h5py_3h5t_TypeCompoundID, __pyx_base.__pyx_base.__pyx_base.__weakref__);
+  __pyx_ptype_4h5py_3h5t_TypeCompoundID = &__pyx_type_4h5py_3h5t_TypeCompoundID;
+  /*--- Type import code ---*/
+  __pyx_ptype_4h5py_5numpy_dtype = __Pyx_ImportType("numpy", "dtype", sizeof(PyArray_Descr), 0); if (unlikely(!__pyx_ptype_4h5py_5numpy_dtype)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_5numpy_ndarray = __Pyx_ImportType("numpy", "ndarray", sizeof(PyArrayObject), 0); if (unlikely(!__pyx_ptype_4h5py_5numpy_ndarray)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5r_Reference = __Pyx_ImportType("h5py.h5r", "Reference", sizeof(struct __pyx_obj_4h5py_3h5r_Reference), 1); if (unlikely(!__pyx_ptype_4h5py_3h5r_Reference)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_3h5r_RegionReference = __Pyx_ImportType("h5py.h5r", "RegionReference", sizeof(struct __pyx_obj_4h5py_3h5r_RegionReference), 1); if (unlikely(!__pyx_ptype_4h5py_3h5r_RegionReference)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  /*--- Variable import code ---*/
+  /*--- Function import code ---*/
+  __pyx_t_1 = __Pyx_ImportModule("h5py.defs"); if (!__pyx_t_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Tcreate", (void (**)(void))&__pyx_f_4h5py_4defs_H5Tcreate, "hid_t (enum H5T_class_t, size_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Topen", (void (**)(void))&__pyx_f_4h5py_4defs_H5Topen, "hid_t (hid_t, char *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Tcommitted", (void (**)(void))&__pyx_f_4h5py_4defs_H5Tcommitted, "htri_t (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Tcopy", (void (**)(void))&__pyx_f_4h5py_4defs_H5Tcopy, "hid_t (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Tequal", (void (**)(void))&__pyx_f_4h5py_4defs_H5Tequal, "htri_t (hid_t, hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Tlock", (void (**)(void))&__pyx_f_4h5py_4defs_H5Tlock, "herr_t (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Tget_class", (void (**)(void))&__pyx_f_4h5py_4defs_H5Tget_class, "enum H5T_class_t (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Tget_size", (void (**)(void))&__pyx_f_4h5py_4defs_H5Tget_size, "size_t (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Tget_super", (void (**)(void))&__pyx_f_4h5py_4defs_H5Tget_super, "hid_t (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Tdetect_class", (void (**)(void))&__pyx_f_4h5py_4defs_H5Tdetect_class, "htri_t (hid_t, enum H5T_class_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Tclose", (void (**)(void))&__pyx_f_4h5py_4defs_H5Tclose, "herr_t (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Tconvert", (void (**)(void))&__pyx_f_4h5py_4defs_H5Tconvert, "herr_t (hid_t, hid_t, size_t, void *, void *, hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Tset_size", (void (**)(void))&__pyx_f_4h5py_4defs_H5Tset_size, "herr_t (hid_t, size_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Tget_order", (void (**)(void))&__pyx_f_4h5py_4defs_H5Tget_order, "H5T_order_t (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Tset_order", (void (**)(void))&__pyx_f_4h5py_4defs_H5Tset_order, "herr_t (hid_t, H5T_order_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Tget_precision", (void (**)(void))&__pyx_f_4h5py_4defs_H5Tget_precision, "hsize_t (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Tset_precision", (void (**)(void))&__pyx_f_4h5py_4defs_H5Tset_precision, "herr_t (hid_t, size_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Tget_offset", (void (**)(void))&__pyx_f_4h5py_4defs_H5Tget_offset, "int (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Tset_offset", (void (**)(void))&__pyx_f_4h5py_4defs_H5Tset_offset, "herr_t (hid_t, size_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Tget_pad", (void (**)(void))&__pyx_f_4h5py_4defs_H5Tget_pad, "herr_t (hid_t, H5T_pad_t *, H5T_pad_t *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Tset_pad", (void (**)(void))&__pyx_f_4h5py_4defs_H5Tset_pad, "herr_t (hid_t, H5T_pad_t, H5T_pad_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Tget_sign", (void (**)(void))&__pyx_f_4h5py_4defs_H5Tget_sign, "H5T_sign_t (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Tset_sign", (void (**)(void))&__pyx_f_4h5py_4defs_H5Tset_sign, "herr_t (hid_t, H5T_sign_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Tget_fields", (void (**)(void))&__pyx_f_4h5py_4defs_H5Tget_fields, "herr_t (hid_t, size_t *, size_t *, size_t *, size_t *, size_t *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Tset_fields", (void (**)(void))&__pyx_f_4h5py_4defs_H5Tset_fields, "herr_t (hid_t, size_t, size_t, size_t, size_t, size_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Tget_ebias", (void (**)(void))&__pyx_f_4h5py_4defs_H5Tget_ebias, "size_t (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Tset_ebias", (void (**)(void))&__pyx_f_4h5py_4defs_H5Tset_ebias, "herr_t (hid_t, size_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Tget_norm", (void (**)(void))&__pyx_f_4h5py_4defs_H5Tget_norm, "H5T_norm_t (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Tset_norm", (void (**)(void))&__pyx_f_4h5py_4defs_H5Tset_norm, "herr_t (hid_t, H5T_norm_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Tget_inpad", (void (**)(void))&__pyx_f_4h5py_4defs_H5Tget_inpad, "H5T_pad_t (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Tset_inpad", (void (**)(void))&__pyx_f_4h5py_4defs_H5Tset_inpad, "herr_t (hid_t, H5T_pad_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Tget_cset", (void (**)(void))&__pyx_f_4h5py_4defs_H5Tget_cset, "H5T_cset_t (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Tset_cset", (void (**)(void))&__pyx_f_4h5py_4defs_H5Tset_cset, "herr_t (hid_t, H5T_cset_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Tget_strpad", (void (**)(void))&__pyx_f_4h5py_4defs_H5Tget_strpad, "H5T_str_t (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Tset_strpad", (void (**)(void))&__pyx_f_4h5py_4defs_H5Tset_strpad, "herr_t (hid_t, H5T_str_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Tvlen_create", (void (**)(void))&__pyx_f_4h5py_4defs_H5Tvlen_create, "hid_t (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Tis_variable_str", (void (**)(void))&__pyx_f_4h5py_4defs_H5Tis_variable_str, "htri_t (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Tget_nmembers", (void (**)(void))&__pyx_f_4h5py_4defs_H5Tget_nmembers, "int (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Tget_member_class", (void (**)(void))&__pyx_f_4h5py_4defs_H5Tget_member_class, "enum H5T_class_t (hid_t, int)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Tget_member_name", (void (**)(void))&__pyx_f_4h5py_4defs_H5Tget_member_name, "char *(hid_t, unsigned int)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Tget_member_type", (void (**)(void))&__pyx_f_4h5py_4defs_H5Tget_member_type, "hid_t (hid_t, unsigned int)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Tget_member_offset", (void (**)(void))&__pyx_f_4h5py_4defs_H5Tget_member_offset, "int (hid_t, int)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Tget_member_index", (void (**)(void))&__pyx_f_4h5py_4defs_H5Tget_member_index, "int (hid_t, char *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Tinsert", (void (**)(void))&__pyx_f_4h5py_4defs_H5Tinsert, "herr_t (hid_t, char *, size_t, hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Tpack", (void (**)(void))&__pyx_f_4h5py_4defs_H5Tpack, "herr_t (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Tenum_create", (void (**)(void))&__pyx_f_4h5py_4defs_H5Tenum_create, "hid_t (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Tenum_insert", (void (**)(void))&__pyx_f_4h5py_4defs_H5Tenum_insert, "herr_t (hid_t, char *, void *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Tenum_nameof", (void (**)(void))&__pyx_f_4h5py_4defs_H5Tenum_nameof, "herr_t (hid_t, void *, char *, size_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Tenum_valueof", (void (**)(void))&__pyx_f_4h5py_4defs_H5Tenum_valueof, "herr_t (hid_t, char *, void *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Tget_member_value", (void (**)(void))&__pyx_f_4h5py_4defs_H5Tget_member_value, "herr_t (hid_t, unsigned int, void *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Tarray_create", (void (**)(void))&__pyx_f_4h5py_4defs_H5Tarray_create, "hid_t (hid_t, int, hsize_t *, int *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Tget_array_ndims", (void (**)(void))&__pyx_f_4h5py_4defs_H5Tget_array_ndims, "int (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Tget_array_dims", (void (**)(void))&__pyx_f_4h5py_4defs_H5Tget_array_dims, "int (hid_t, hsize_t *, int *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Tset_tag", (void (**)(void))&__pyx_f_4h5py_4defs_H5Tset_tag, "herr_t (hid_t, char *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Tget_tag", (void (**)(void))&__pyx_f_4h5py_4defs_H5Tget_tag, "char *(hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Tdecode", (void (**)(void))&__pyx_f_4h5py_4defs_H5Tdecode, "hid_t (unsigned char *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Tencode", (void (**)(void))&__pyx_f_4h5py_4defs_H5Tencode, "herr_t (hid_t, unsigned char *, size_t *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Tcommit2", (void (**)(void))&__pyx_f_4h5py_4defs_H5Tcommit2, "herr_t (hid_t, char *, hid_t, hid_t, hid_t, hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Tfind", (void (**)(void))&__pyx_f_4h5py_4defs_H5Tfind, "H5T_conv_t (hid_t, hid_t, H5T_cdata_t **)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  Py_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_2 = __Pyx_ImportModule("h5py._objects"); if (!__pyx_t_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_2, "pdefault", (void (**)(void))&__pyx_f_4h5py_8_objects_pdefault, "hid_t (struct __pyx_obj_4h5py_8_objects_ObjectID *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  Py_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_3 = __Pyx_ImportModule("h5py.utils"); if (!__pyx_t_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_3, "emalloc", (void (**)(void))&__pyx_f_4h5py_5utils_emalloc, "void *(size_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_3, "efree", (void (**)(void))&__pyx_f_4h5py_5utils_efree, "void (void *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_3, "convert_tuple", (void (**)(void))&__pyx_f_4h5py_5utils_convert_tuple, "int (PyObject *, hsize_t *, hsize_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_3, "convert_dims", (void (**)(void))&__pyx_f_4h5py_5utils_convert_dims, "PyObject *(hsize_t *, hsize_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_3, "require_tuple", (void (**)(void))&__pyx_f_4h5py_5utils_require_tuple, "int (PyObject *, int, int, char *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  Py_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  /*--- Execution code ---*/
+
+  /* "h5py/h5t.pyx":26
+ * from utils cimport  emalloc, efree, \
+ *                     require_tuple, convert_dims, convert_tuple
+ * from h5py import _conv             # <<<<<<<<<<<<<<
+ * 
+ * # Runtime imports
+ */
+  __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_INCREF(((PyObject *)__pyx_n_s___conv));
+  PyList_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_n_s___conv));
+  __Pyx_GIVEREF(((PyObject *)__pyx_n_s___conv));
+  __pyx_t_5 = __Pyx_Import(((PyObject *)__pyx_n_s__h5py), ((PyObject *)__pyx_t_4), -1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
+  __pyx_t_4 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s___conv);
+  if (__pyx_t_4 == NULL) {
+    if (PyErr_ExceptionMatches(PyExc_AttributeError)) __Pyx_RaiseImportError(__pyx_n_s___conv);
+    if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  }
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s___conv, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+  /* "h5py/h5t.pyx":29
+ * 
+ * # Runtime imports
+ * import sys             # <<<<<<<<<<<<<<
+ * from h5 import get_config
+ * import numpy as np
+ */
+  __pyx_t_5 = __Pyx_Import(((PyObject *)__pyx_n_s__sys), 0, -1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__sys, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+  /* "h5py/h5t.pyx":30
+ * # Runtime imports
+ * import sys
+ * from h5 import get_config             # <<<<<<<<<<<<<<
+ * import numpy as np
+ * 
+ */
+  __pyx_t_5 = PyList_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_INCREF(((PyObject *)__pyx_n_s__get_config));
+  PyList_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_n_s__get_config));
+  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__get_config));
+  __pyx_t_4 = __Pyx_Import(((PyObject *)__pyx_n_s__h5), ((PyObject *)__pyx_t_5), -1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
+  __pyx_t_5 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s__get_config);
+  if (__pyx_t_5 == NULL) {
+    if (PyErr_ExceptionMatches(PyExc_AttributeError)) __Pyx_RaiseImportError(__pyx_n_s__get_config);
+    if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  }
+  __Pyx_GOTREF(__pyx_t_5);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__get_config, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":31
+ * import sys
+ * from h5 import get_config
+ * import numpy as np             # <<<<<<<<<<<<<<
+ * 
+ * cfg = get_config()
+ */
+  __pyx_t_4 = __Pyx_Import(((PyObject *)__pyx_n_s__numpy), 0, -1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__np, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":33
+ * import numpy as np
+ * 
+ * cfg = get_config()             # <<<<<<<<<<<<<<
+ * 
+ * PY3 = sys.version_info[0] == 3
+ */
+  __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__get_config); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__cfg, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+
+  /* "h5py/h5t.pyx":35
+ * cfg = get_config()
+ * 
+ * PY3 = sys.version_info[0] == 3             # <<<<<<<<<<<<<<
+ * 
+ * # === Custom C API ============================================================
+ */
+  __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__sys); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_4 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__version_info); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_4, 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __pyx_t_4 = PyObject_RichCompare(__pyx_t_5, __pyx_int_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__PY3, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":81
+ * 
+ * # Enumeration H5T_class_t
+ * NO_CLASS  = H5T_NO_CLASS             # <<<<<<<<<<<<<<
+ * INTEGER   = H5T_INTEGER
+ * FLOAT     = H5T_FLOAT
+ */
+  __pyx_t_4 = PyInt_FromLong(H5T_NO_CLASS); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__NO_CLASS, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":82
+ * # Enumeration H5T_class_t
+ * NO_CLASS  = H5T_NO_CLASS
+ * INTEGER   = H5T_INTEGER             # <<<<<<<<<<<<<<
+ * FLOAT     = H5T_FLOAT
+ * TIME      = H5T_TIME
+ */
+  __pyx_t_4 = PyInt_FromLong(H5T_INTEGER); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 82; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__INTEGER, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 82; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":83
+ * NO_CLASS  = H5T_NO_CLASS
+ * INTEGER   = H5T_INTEGER
+ * FLOAT     = H5T_FLOAT             # <<<<<<<<<<<<<<
+ * TIME      = H5T_TIME
+ * STRING    = H5T_STRING
+ */
+  __pyx_t_4 = PyInt_FromLong(H5T_FLOAT); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__FLOAT, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":84
+ * INTEGER   = H5T_INTEGER
+ * FLOAT     = H5T_FLOAT
+ * TIME      = H5T_TIME             # <<<<<<<<<<<<<<
+ * STRING    = H5T_STRING
+ * BITFIELD  = H5T_BITFIELD
+ */
+  __pyx_t_4 = PyInt_FromLong(H5T_TIME); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__TIME, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":85
+ * FLOAT     = H5T_FLOAT
+ * TIME      = H5T_TIME
+ * STRING    = H5T_STRING             # <<<<<<<<<<<<<<
+ * BITFIELD  = H5T_BITFIELD
+ * OPAQUE    = H5T_OPAQUE
+ */
+  __pyx_t_4 = PyInt_FromLong(H5T_STRING); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__STRING, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":86
+ * TIME      = H5T_TIME
+ * STRING    = H5T_STRING
+ * BITFIELD  = H5T_BITFIELD             # <<<<<<<<<<<<<<
+ * OPAQUE    = H5T_OPAQUE
+ * COMPOUND  = H5T_COMPOUND
+ */
+  __pyx_t_4 = PyInt_FromLong(H5T_BITFIELD); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__BITFIELD, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":87
+ * STRING    = H5T_STRING
+ * BITFIELD  = H5T_BITFIELD
+ * OPAQUE    = H5T_OPAQUE             # <<<<<<<<<<<<<<
+ * COMPOUND  = H5T_COMPOUND
+ * REFERENCE = H5T_REFERENCE
+ */
+  __pyx_t_4 = PyInt_FromLong(H5T_OPAQUE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__OPAQUE, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":88
+ * BITFIELD  = H5T_BITFIELD
+ * OPAQUE    = H5T_OPAQUE
+ * COMPOUND  = H5T_COMPOUND             # <<<<<<<<<<<<<<
+ * REFERENCE = H5T_REFERENCE
+ * ENUM      = H5T_ENUM
+ */
+  __pyx_t_4 = PyInt_FromLong(H5T_COMPOUND); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__COMPOUND, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":89
+ * OPAQUE    = H5T_OPAQUE
+ * COMPOUND  = H5T_COMPOUND
+ * REFERENCE = H5T_REFERENCE             # <<<<<<<<<<<<<<
+ * ENUM      = H5T_ENUM
+ * VLEN      = H5T_VLEN
+ */
+  __pyx_t_4 = PyInt_FromLong(H5T_REFERENCE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__REFERENCE, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":90
+ * COMPOUND  = H5T_COMPOUND
+ * REFERENCE = H5T_REFERENCE
+ * ENUM      = H5T_ENUM             # <<<<<<<<<<<<<<
+ * VLEN      = H5T_VLEN
+ * ARRAY     = H5T_ARRAY
+ */
+  __pyx_t_4 = PyInt_FromLong(H5T_ENUM); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ENUM, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":91
+ * REFERENCE = H5T_REFERENCE
+ * ENUM      = H5T_ENUM
+ * VLEN      = H5T_VLEN             # <<<<<<<<<<<<<<
+ * ARRAY     = H5T_ARRAY
+ * 
+ */
+  __pyx_t_4 = PyInt_FromLong(H5T_VLEN); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__VLEN, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":92
+ * ENUM      = H5T_ENUM
+ * VLEN      = H5T_VLEN
+ * ARRAY     = H5T_ARRAY             # <<<<<<<<<<<<<<
+ * 
+ * # Enumeration H5T_sign_t
+ */
+  __pyx_t_4 = PyInt_FromLong(H5T_ARRAY); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 92; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ARRAY, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 92; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":95
+ * 
+ * # Enumeration H5T_sign_t
+ * SGN_NONE   = H5T_SGN_NONE             # <<<<<<<<<<<<<<
+ * SGN_2      = H5T_SGN_2
+ * 
+ */
+  __pyx_t_4 = PyInt_FromLong(H5T_SGN_NONE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__SGN_NONE, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":96
+ * # Enumeration H5T_sign_t
+ * SGN_NONE   = H5T_SGN_NONE
+ * SGN_2      = H5T_SGN_2             # <<<<<<<<<<<<<<
+ * 
+ * # Enumeration H5T_order_t
+ */
+  __pyx_t_4 = PyInt_FromLong(H5T_SGN_2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__SGN_2, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":99
+ * 
+ * # Enumeration H5T_order_t
+ * ORDER_LE    = H5T_ORDER_LE             # <<<<<<<<<<<<<<
+ * ORDER_BE    = H5T_ORDER_BE
+ * ORDER_VAX   = H5T_ORDER_VAX
+ */
+  __pyx_t_4 = PyInt_FromLong(H5T_ORDER_LE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 99; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ORDER_LE, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 99; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":100
+ * # Enumeration H5T_order_t
+ * ORDER_LE    = H5T_ORDER_LE
+ * ORDER_BE    = H5T_ORDER_BE             # <<<<<<<<<<<<<<
+ * ORDER_VAX   = H5T_ORDER_VAX
+ * ORDER_NONE  = H5T_ORDER_NONE
+ */
+  __pyx_t_4 = PyInt_FromLong(H5T_ORDER_BE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ORDER_BE, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":101
+ * ORDER_LE    = H5T_ORDER_LE
+ * ORDER_BE    = H5T_ORDER_BE
+ * ORDER_VAX   = H5T_ORDER_VAX             # <<<<<<<<<<<<<<
+ * ORDER_NONE  = H5T_ORDER_NONE
+ * 
+ */
+  __pyx_t_4 = PyInt_FromLong(H5T_ORDER_VAX); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ORDER_VAX, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":102
+ * ORDER_BE    = H5T_ORDER_BE
+ * ORDER_VAX   = H5T_ORDER_VAX
+ * ORDER_NONE  = H5T_ORDER_NONE             # <<<<<<<<<<<<<<
+ * 
+ * DIR_DEFAULT = H5T_DIR_DEFAULT
+ */
+  __pyx_t_4 = PyInt_FromLong(H5T_ORDER_NONE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ORDER_NONE, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":104
+ * ORDER_NONE  = H5T_ORDER_NONE
+ * 
+ * DIR_DEFAULT = H5T_DIR_DEFAULT             # <<<<<<<<<<<<<<
+ * DIR_ASCEND  = H5T_DIR_ASCEND
+ * DIR_DESCEND = H5T_DIR_DESCEND
+ */
+  __pyx_t_4 = PyInt_FromLong(H5T_DIR_DEFAULT); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__DIR_DEFAULT, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 104; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":105
+ * 
+ * DIR_DEFAULT = H5T_DIR_DEFAULT
+ * DIR_ASCEND  = H5T_DIR_ASCEND             # <<<<<<<<<<<<<<
+ * DIR_DESCEND = H5T_DIR_DESCEND
+ * 
+ */
+  __pyx_t_4 = PyInt_FromLong(H5T_DIR_ASCEND); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__DIR_ASCEND, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":106
+ * DIR_DEFAULT = H5T_DIR_DEFAULT
+ * DIR_ASCEND  = H5T_DIR_ASCEND
+ * DIR_DESCEND = H5T_DIR_DESCEND             # <<<<<<<<<<<<<<
+ * 
+ * # Enumeration H5T_str_t
+ */
+  __pyx_t_4 = PyInt_FromLong(H5T_DIR_DESCEND); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__DIR_DESCEND, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":109
+ * 
+ * # Enumeration H5T_str_t
+ * STR_NULLTERM = H5T_STR_NULLTERM             # <<<<<<<<<<<<<<
+ * STR_NULLPAD  = H5T_STR_NULLPAD
+ * STR_SPACEPAD = H5T_STR_SPACEPAD
+ */
+  __pyx_t_4 = PyInt_FromLong(H5T_STR_NULLTERM); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__STR_NULLTERM, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":110
+ * # Enumeration H5T_str_t
+ * STR_NULLTERM = H5T_STR_NULLTERM
+ * STR_NULLPAD  = H5T_STR_NULLPAD             # <<<<<<<<<<<<<<
+ * STR_SPACEPAD = H5T_STR_SPACEPAD
+ * 
+ */
+  __pyx_t_4 = PyInt_FromLong(H5T_STR_NULLPAD); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__STR_NULLPAD, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":111
+ * STR_NULLTERM = H5T_STR_NULLTERM
+ * STR_NULLPAD  = H5T_STR_NULLPAD
+ * STR_SPACEPAD = H5T_STR_SPACEPAD             # <<<<<<<<<<<<<<
+ * 
+ * # Enumeration H5T_norm_t
+ */
+  __pyx_t_4 = PyInt_FromLong(H5T_STR_SPACEPAD); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__STR_SPACEPAD, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":114
+ * 
+ * # Enumeration H5T_norm_t
+ * NORM_IMPLIED = H5T_NORM_IMPLIED             # <<<<<<<<<<<<<<
+ * NORM_MSBSET = H5T_NORM_MSBSET
+ * NORM_NONE = H5T_NORM_NONE
+ */
+  __pyx_t_4 = PyInt_FromLong(H5T_NORM_IMPLIED); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__NORM_IMPLIED, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":115
+ * # Enumeration H5T_norm_t
+ * NORM_IMPLIED = H5T_NORM_IMPLIED
+ * NORM_MSBSET = H5T_NORM_MSBSET             # <<<<<<<<<<<<<<
+ * NORM_NONE = H5T_NORM_NONE
+ * 
+ */
+  __pyx_t_4 = PyInt_FromLong(H5T_NORM_MSBSET); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__NORM_MSBSET, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":116
+ * NORM_IMPLIED = H5T_NORM_IMPLIED
+ * NORM_MSBSET = H5T_NORM_MSBSET
+ * NORM_NONE = H5T_NORM_NONE             # <<<<<<<<<<<<<<
+ * 
+ * # Enumeration H5T_cset_t:
+ */
+  __pyx_t_4 = PyInt_FromLong(H5T_NORM_NONE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__NORM_NONE, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":119
+ * 
+ * # Enumeration H5T_cset_t:
+ * CSET_ASCII = H5T_CSET_ASCII             # <<<<<<<<<<<<<<
+ * 
+ * # Enumeration H5T_pad_t:
+ */
+  __pyx_t_4 = PyInt_FromLong(H5T_CSET_ASCII); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__CSET_ASCII, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":122
+ * 
+ * # Enumeration H5T_pad_t:
+ * PAD_ZERO = H5T_PAD_ZERO             # <<<<<<<<<<<<<<
+ * PAD_ONE = H5T_PAD_ONE
+ * PAD_BACKGROUND = H5T_PAD_BACKGROUND
+ */
+  __pyx_t_4 = PyInt_FromLong(H5T_PAD_ZERO); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__PAD_ZERO, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":123
+ * # Enumeration H5T_pad_t:
+ * PAD_ZERO = H5T_PAD_ZERO
+ * PAD_ONE = H5T_PAD_ONE             # <<<<<<<<<<<<<<
+ * PAD_BACKGROUND = H5T_PAD_BACKGROUND
+ * 
+ */
+  __pyx_t_4 = PyInt_FromLong(H5T_PAD_ONE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__PAD_ONE, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":124
+ * PAD_ZERO = H5T_PAD_ZERO
+ * PAD_ONE = H5T_PAD_ONE
+ * PAD_BACKGROUND = H5T_PAD_BACKGROUND             # <<<<<<<<<<<<<<
+ * 
+ * if sys.byteorder == "little":    # Custom python addition
+ */
+  __pyx_t_4 = PyInt_FromLong(H5T_PAD_BACKGROUND); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__PAD_BACKGROUND, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":126
+ * PAD_BACKGROUND = H5T_PAD_BACKGROUND
+ * 
+ * if sys.byteorder == "little":    # Custom python addition             # <<<<<<<<<<<<<<
+ *     ORDER_NATIVE = H5T_ORDER_LE
+ * else:
+ */
+  __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__sys); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s__byteorder); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __pyx_t_4 = PyObject_RichCompare(__pyx_t_5, ((PyObject *)__pyx_n_s__little), Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (__pyx_t_6) {
+
+    /* "h5py/h5t.pyx":127
+ * 
+ * if sys.byteorder == "little":    # Custom python addition
+ *     ORDER_NATIVE = H5T_ORDER_LE             # <<<<<<<<<<<<<<
+ * else:
+ *     ORDER_NATIVE = H5T_ORDER_BE
+ */
+    __pyx_t_4 = PyInt_FromLong(H5T_ORDER_LE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ORDER_NATIVE, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    goto __pyx_L2;
+  }
+  /*else*/ {
+
+    /* "h5py/h5t.pyx":129
+ *     ORDER_NATIVE = H5T_ORDER_LE
+ * else:
+ *     ORDER_NATIVE = H5T_ORDER_BE             # <<<<<<<<<<<<<<
+ * 
+ * # For conversion
+ */
+    __pyx_t_4 = PyInt_FromLong(H5T_ORDER_BE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 129; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_4);
+    if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ORDER_NATIVE, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 129; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  }
+  __pyx_L2:;
+
+  /* "h5py/h5t.pyx":132
+ * 
+ * # For conversion
+ * BKG_NO = H5T_BKG_NO             # <<<<<<<<<<<<<<
+ * BKG_TEMP = H5T_BKG_TEMP
+ * BKG_YES = H5T_BKG_YES
+ */
+  __pyx_t_4 = PyInt_FromLong(H5T_BKG_NO); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__BKG_NO, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":133
+ * # For conversion
+ * BKG_NO = H5T_BKG_NO
+ * BKG_TEMP = H5T_BKG_TEMP             # <<<<<<<<<<<<<<
+ * BKG_YES = H5T_BKG_YES
+ * 
+ */
+  __pyx_t_4 = PyInt_FromLong(H5T_BKG_TEMP); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__BKG_TEMP, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":134
+ * BKG_NO = H5T_BKG_NO
+ * BKG_TEMP = H5T_BKG_TEMP
+ * BKG_YES = H5T_BKG_YES             # <<<<<<<<<<<<<<
+ * 
+ * # --- Built-in HDF5 datatypes -------------------------------------------------
+ */
+  __pyx_t_4 = PyInt_FromLong(H5T_BKG_YES); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 134; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__BKG_YES, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 134; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":139
+ * 
+ * # IEEE floating-point
+ * IEEE_F32LE = lockid(H5T_IEEE_F32LE)             # <<<<<<<<<<<<<<
+ * IEEE_F32BE = lockid(H5T_IEEE_F32BE)
+ * IEEE_F64LE = lockid(H5T_IEEE_F64LE)
+ */
+  __pyx_t_4 = __pyx_f_4h5py_3h5t_lockid(H5T_IEEE_F32LE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 139; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__IEEE_F32LE, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 139; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":140
+ * # IEEE floating-point
+ * IEEE_F32LE = lockid(H5T_IEEE_F32LE)
+ * IEEE_F32BE = lockid(H5T_IEEE_F32BE)             # <<<<<<<<<<<<<<
+ * IEEE_F64LE = lockid(H5T_IEEE_F64LE)
+ * IEEE_F64BE = lockid(H5T_IEEE_F64BE)
+ */
+  __pyx_t_4 = __pyx_f_4h5py_3h5t_lockid(H5T_IEEE_F32BE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 140; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__IEEE_F32BE, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 140; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":141
+ * IEEE_F32LE = lockid(H5T_IEEE_F32LE)
+ * IEEE_F32BE = lockid(H5T_IEEE_F32BE)
+ * IEEE_F64LE = lockid(H5T_IEEE_F64LE)             # <<<<<<<<<<<<<<
+ * IEEE_F64BE = lockid(H5T_IEEE_F64BE)
+ * 
+ */
+  __pyx_t_4 = __pyx_f_4h5py_3h5t_lockid(H5T_IEEE_F64LE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__IEEE_F64LE, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":142
+ * IEEE_F32BE = lockid(H5T_IEEE_F32BE)
+ * IEEE_F64LE = lockid(H5T_IEEE_F64LE)
+ * IEEE_F64BE = lockid(H5T_IEEE_F64BE)             # <<<<<<<<<<<<<<
+ * 
+ * # Signed 2's complement integer types
+ */
+  __pyx_t_4 = __pyx_f_4h5py_3h5t_lockid(H5T_IEEE_F64BE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__IEEE_F64BE, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":145
+ * 
+ * # Signed 2's complement integer types
+ * STD_I8LE  = lockid(H5T_STD_I8LE)             # <<<<<<<<<<<<<<
+ * STD_I16LE = lockid(H5T_STD_I16LE)
+ * STD_I32LE = lockid(H5T_STD_I32LE)
+ */
+  __pyx_t_4 = __pyx_f_4h5py_3h5t_lockid(H5T_STD_I8LE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__STD_I8LE, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":146
+ * # Signed 2's complement integer types
+ * STD_I8LE  = lockid(H5T_STD_I8LE)
+ * STD_I16LE = lockid(H5T_STD_I16LE)             # <<<<<<<<<<<<<<
+ * STD_I32LE = lockid(H5T_STD_I32LE)
+ * STD_I64LE = lockid(H5T_STD_I64LE)
+ */
+  __pyx_t_4 = __pyx_f_4h5py_3h5t_lockid(H5T_STD_I16LE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__STD_I16LE, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":147
+ * STD_I8LE  = lockid(H5T_STD_I8LE)
+ * STD_I16LE = lockid(H5T_STD_I16LE)
+ * STD_I32LE = lockid(H5T_STD_I32LE)             # <<<<<<<<<<<<<<
+ * STD_I64LE = lockid(H5T_STD_I64LE)
+ * 
+ */
+  __pyx_t_4 = __pyx_f_4h5py_3h5t_lockid(H5T_STD_I32LE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 147; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__STD_I32LE, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 147; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":148
+ * STD_I16LE = lockid(H5T_STD_I16LE)
+ * STD_I32LE = lockid(H5T_STD_I32LE)
+ * STD_I64LE = lockid(H5T_STD_I64LE)             # <<<<<<<<<<<<<<
+ * 
+ * STD_I8BE  = lockid(H5T_STD_I8BE)
+ */
+  __pyx_t_4 = __pyx_f_4h5py_3h5t_lockid(H5T_STD_I64LE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__STD_I64LE, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":150
+ * STD_I64LE = lockid(H5T_STD_I64LE)
+ * 
+ * STD_I8BE  = lockid(H5T_STD_I8BE)             # <<<<<<<<<<<<<<
+ * STD_I16BE = lockid(H5T_STD_I16BE)
+ * STD_I32BE = lockid(H5T_STD_I32BE)
+ */
+  __pyx_t_4 = __pyx_f_4h5py_3h5t_lockid(H5T_STD_I8BE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__STD_I8BE, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":151
+ * 
+ * STD_I8BE  = lockid(H5T_STD_I8BE)
+ * STD_I16BE = lockid(H5T_STD_I16BE)             # <<<<<<<<<<<<<<
+ * STD_I32BE = lockid(H5T_STD_I32BE)
+ * STD_I64BE = lockid(H5T_STD_I64BE)
+ */
+  __pyx_t_4 = __pyx_f_4h5py_3h5t_lockid(H5T_STD_I16BE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__STD_I16BE, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":152
+ * STD_I8BE  = lockid(H5T_STD_I8BE)
+ * STD_I16BE = lockid(H5T_STD_I16BE)
+ * STD_I32BE = lockid(H5T_STD_I32BE)             # <<<<<<<<<<<<<<
+ * STD_I64BE = lockid(H5T_STD_I64BE)
+ * 
+ */
+  __pyx_t_4 = __pyx_f_4h5py_3h5t_lockid(H5T_STD_I32BE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 152; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__STD_I32BE, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 152; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":153
+ * STD_I16BE = lockid(H5T_STD_I16BE)
+ * STD_I32BE = lockid(H5T_STD_I32BE)
+ * STD_I64BE = lockid(H5T_STD_I64BE)             # <<<<<<<<<<<<<<
+ * 
+ * # Unsigned integers
+ */
+  __pyx_t_4 = __pyx_f_4h5py_3h5t_lockid(H5T_STD_I64BE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 153; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__STD_I64BE, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 153; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":156
+ * 
+ * # Unsigned integers
+ * STD_U8LE  = lockid(H5T_STD_U8LE)             # <<<<<<<<<<<<<<
+ * STD_U16LE = lockid(H5T_STD_U16LE)
+ * STD_U32LE = lockid(H5T_STD_U32LE)
+ */
+  __pyx_t_4 = __pyx_f_4h5py_3h5t_lockid(H5T_STD_U8LE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__STD_U8LE, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":157
+ * # Unsigned integers
+ * STD_U8LE  = lockid(H5T_STD_U8LE)
+ * STD_U16LE = lockid(H5T_STD_U16LE)             # <<<<<<<<<<<<<<
+ * STD_U32LE = lockid(H5T_STD_U32LE)
+ * STD_U64LE = lockid(H5T_STD_U64LE)
+ */
+  __pyx_t_4 = __pyx_f_4h5py_3h5t_lockid(H5T_STD_U16LE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__STD_U16LE, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":158
+ * STD_U8LE  = lockid(H5T_STD_U8LE)
+ * STD_U16LE = lockid(H5T_STD_U16LE)
+ * STD_U32LE = lockid(H5T_STD_U32LE)             # <<<<<<<<<<<<<<
+ * STD_U64LE = lockid(H5T_STD_U64LE)
+ * 
+ */
+  __pyx_t_4 = __pyx_f_4h5py_3h5t_lockid(H5T_STD_U32LE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__STD_U32LE, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":159
+ * STD_U16LE = lockid(H5T_STD_U16LE)
+ * STD_U32LE = lockid(H5T_STD_U32LE)
+ * STD_U64LE = lockid(H5T_STD_U64LE)             # <<<<<<<<<<<<<<
+ * 
+ * STD_U8BE  = lockid(H5T_STD_U8BE)
+ */
+  __pyx_t_4 = __pyx_f_4h5py_3h5t_lockid(H5T_STD_U64LE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 159; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__STD_U64LE, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 159; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":161
+ * STD_U64LE = lockid(H5T_STD_U64LE)
+ * 
+ * STD_U8BE  = lockid(H5T_STD_U8BE)             # <<<<<<<<<<<<<<
+ * STD_U16BE = lockid(H5T_STD_U16BE)
+ * STD_U32BE = lockid(H5T_STD_U32BE)
+ */
+  __pyx_t_4 = __pyx_f_4h5py_3h5t_lockid(H5T_STD_U8BE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__STD_U8BE, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":162
+ * 
+ * STD_U8BE  = lockid(H5T_STD_U8BE)
+ * STD_U16BE = lockid(H5T_STD_U16BE)             # <<<<<<<<<<<<<<
+ * STD_U32BE = lockid(H5T_STD_U32BE)
+ * STD_U64BE = lockid(H5T_STD_U64BE)
+ */
+  __pyx_t_4 = __pyx_f_4h5py_3h5t_lockid(H5T_STD_U16BE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__STD_U16BE, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":163
+ * STD_U8BE  = lockid(H5T_STD_U8BE)
+ * STD_U16BE = lockid(H5T_STD_U16BE)
+ * STD_U32BE = lockid(H5T_STD_U32BE)             # <<<<<<<<<<<<<<
+ * STD_U64BE = lockid(H5T_STD_U64BE)
+ * 
+ */
+  __pyx_t_4 = __pyx_f_4h5py_3h5t_lockid(H5T_STD_U32BE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 163; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__STD_U32BE, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 163; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":164
+ * STD_U16BE = lockid(H5T_STD_U16BE)
+ * STD_U32BE = lockid(H5T_STD_U32BE)
+ * STD_U64BE = lockid(H5T_STD_U64BE)             # <<<<<<<<<<<<<<
+ * 
+ * # Native types by bytesize
+ */
+  __pyx_t_4 = __pyx_f_4h5py_3h5t_lockid(H5T_STD_U64BE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 164; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__STD_U64BE, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 164; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":167
+ * 
+ * # Native types by bytesize
+ * NATIVE_INT8 = lockid(H5T_NATIVE_INT8)             # <<<<<<<<<<<<<<
+ * NATIVE_UINT8 = lockid(H5T_NATIVE_UINT8)
+ * NATIVE_INT16 = lockid(H5T_NATIVE_INT16)
+ */
+  __pyx_t_4 = __pyx_f_4h5py_3h5t_lockid(H5T_NATIVE_INT8); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__NATIVE_INT8, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":168
+ * # Native types by bytesize
+ * NATIVE_INT8 = lockid(H5T_NATIVE_INT8)
+ * NATIVE_UINT8 = lockid(H5T_NATIVE_UINT8)             # <<<<<<<<<<<<<<
+ * NATIVE_INT16 = lockid(H5T_NATIVE_INT16)
+ * NATIVE_UINT16 = lockid(H5T_NATIVE_UINT16)
+ */
+  __pyx_t_4 = __pyx_f_4h5py_3h5t_lockid(H5T_NATIVE_UINT8); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 168; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__NATIVE_UINT8, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 168; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":169
+ * NATIVE_INT8 = lockid(H5T_NATIVE_INT8)
+ * NATIVE_UINT8 = lockid(H5T_NATIVE_UINT8)
+ * NATIVE_INT16 = lockid(H5T_NATIVE_INT16)             # <<<<<<<<<<<<<<
+ * NATIVE_UINT16 = lockid(H5T_NATIVE_UINT16)
+ * NATIVE_INT32 = lockid(H5T_NATIVE_INT32)
+ */
+  __pyx_t_4 = __pyx_f_4h5py_3h5t_lockid(H5T_NATIVE_INT16); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 169; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__NATIVE_INT16, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 169; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":170
+ * NATIVE_UINT8 = lockid(H5T_NATIVE_UINT8)
+ * NATIVE_INT16 = lockid(H5T_NATIVE_INT16)
+ * NATIVE_UINT16 = lockid(H5T_NATIVE_UINT16)             # <<<<<<<<<<<<<<
+ * NATIVE_INT32 = lockid(H5T_NATIVE_INT32)
+ * NATIVE_UINT32 = lockid(H5T_NATIVE_UINT32)
+ */
+  __pyx_t_4 = __pyx_f_4h5py_3h5t_lockid(H5T_NATIVE_UINT16); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__NATIVE_UINT16, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":171
+ * NATIVE_INT16 = lockid(H5T_NATIVE_INT16)
+ * NATIVE_UINT16 = lockid(H5T_NATIVE_UINT16)
+ * NATIVE_INT32 = lockid(H5T_NATIVE_INT32)             # <<<<<<<<<<<<<<
+ * NATIVE_UINT32 = lockid(H5T_NATIVE_UINT32)
+ * NATIVE_INT64 = lockid(H5T_NATIVE_INT64)
+ */
+  __pyx_t_4 = __pyx_f_4h5py_3h5t_lockid(H5T_NATIVE_INT32); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 171; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__NATIVE_INT32, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 171; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":172
+ * NATIVE_UINT16 = lockid(H5T_NATIVE_UINT16)
+ * NATIVE_INT32 = lockid(H5T_NATIVE_INT32)
+ * NATIVE_UINT32 = lockid(H5T_NATIVE_UINT32)             # <<<<<<<<<<<<<<
+ * NATIVE_INT64 = lockid(H5T_NATIVE_INT64)
+ * NATIVE_UINT64 = lockid(H5T_NATIVE_UINT64)
+ */
+  __pyx_t_4 = __pyx_f_4h5py_3h5t_lockid(H5T_NATIVE_UINT32); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__NATIVE_UINT32, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":173
+ * NATIVE_INT32 = lockid(H5T_NATIVE_INT32)
+ * NATIVE_UINT32 = lockid(H5T_NATIVE_UINT32)
+ * NATIVE_INT64 = lockid(H5T_NATIVE_INT64)             # <<<<<<<<<<<<<<
+ * NATIVE_UINT64 = lockid(H5T_NATIVE_UINT64)
+ * NATIVE_FLOAT = lockid(H5T_NATIVE_FLOAT)
+ */
+  __pyx_t_4 = __pyx_f_4h5py_3h5t_lockid(H5T_NATIVE_INT64); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__NATIVE_INT64, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":174
+ * NATIVE_UINT32 = lockid(H5T_NATIVE_UINT32)
+ * NATIVE_INT64 = lockid(H5T_NATIVE_INT64)
+ * NATIVE_UINT64 = lockid(H5T_NATIVE_UINT64)             # <<<<<<<<<<<<<<
+ * NATIVE_FLOAT = lockid(H5T_NATIVE_FLOAT)
+ * NATIVE_DOUBLE = lockid(H5T_NATIVE_DOUBLE)
+ */
+  __pyx_t_4 = __pyx_f_4h5py_3h5t_lockid(H5T_NATIVE_UINT64); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__NATIVE_UINT64, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":175
+ * NATIVE_INT64 = lockid(H5T_NATIVE_INT64)
+ * NATIVE_UINT64 = lockid(H5T_NATIVE_UINT64)
+ * NATIVE_FLOAT = lockid(H5T_NATIVE_FLOAT)             # <<<<<<<<<<<<<<
+ * NATIVE_DOUBLE = lockid(H5T_NATIVE_DOUBLE)
+ * 
+ */
+  __pyx_t_4 = __pyx_f_4h5py_3h5t_lockid(H5T_NATIVE_FLOAT); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 175; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__NATIVE_FLOAT, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 175; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":176
+ * NATIVE_UINT64 = lockid(H5T_NATIVE_UINT64)
+ * NATIVE_FLOAT = lockid(H5T_NATIVE_FLOAT)
+ * NATIVE_DOUBLE = lockid(H5T_NATIVE_DOUBLE)             # <<<<<<<<<<<<<<
+ * 
+ * # Unix time types
+ */
+  __pyx_t_4 = __pyx_f_4h5py_3h5t_lockid(H5T_NATIVE_DOUBLE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 176; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__NATIVE_DOUBLE, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 176; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":179
+ * 
+ * # Unix time types
+ * UNIX_D32LE = lockid(H5T_UNIX_D32LE)             # <<<<<<<<<<<<<<
+ * UNIX_D64LE = lockid(H5T_UNIX_D64LE)
+ * UNIX_D32BE = lockid(H5T_UNIX_D32BE)
+ */
+  __pyx_t_4 = __pyx_f_4h5py_3h5t_lockid(H5T_UNIX_D32LE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 179; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__UNIX_D32LE, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 179; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":180
+ * # Unix time types
+ * UNIX_D32LE = lockid(H5T_UNIX_D32LE)
+ * UNIX_D64LE = lockid(H5T_UNIX_D64LE)             # <<<<<<<<<<<<<<
+ * UNIX_D32BE = lockid(H5T_UNIX_D32BE)
+ * UNIX_D64BE = lockid(H5T_UNIX_D64BE)
+ */
+  __pyx_t_4 = __pyx_f_4h5py_3h5t_lockid(H5T_UNIX_D64LE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 180; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__UNIX_D64LE, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 180; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":181
+ * UNIX_D32LE = lockid(H5T_UNIX_D32LE)
+ * UNIX_D64LE = lockid(H5T_UNIX_D64LE)
+ * UNIX_D32BE = lockid(H5T_UNIX_D32BE)             # <<<<<<<<<<<<<<
+ * UNIX_D64BE = lockid(H5T_UNIX_D64BE)
+ * 
+ */
+  __pyx_t_4 = __pyx_f_4h5py_3h5t_lockid(H5T_UNIX_D32BE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 181; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__UNIX_D32BE, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 181; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":182
+ * UNIX_D64LE = lockid(H5T_UNIX_D64LE)
+ * UNIX_D32BE = lockid(H5T_UNIX_D32BE)
+ * UNIX_D64BE = lockid(H5T_UNIX_D64BE)             # <<<<<<<<<<<<<<
+ * 
+ * # Reference types
+ */
+  __pyx_t_4 = __pyx_f_4h5py_3h5t_lockid(H5T_UNIX_D64BE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__UNIX_D64BE, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":185
+ * 
+ * # Reference types
+ * STD_REF_OBJ = lockid(H5T_STD_REF_OBJ)             # <<<<<<<<<<<<<<
+ * STD_REF_DSETREG = lockid(H5T_STD_REF_DSETREG)
+ * 
+ */
+  __pyx_t_4 = __pyx_f_4h5py_3h5t_lockid(H5T_STD_REF_OBJ); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 185; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__STD_REF_OBJ, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 185; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":186
+ * # Reference types
+ * STD_REF_OBJ = lockid(H5T_STD_REF_OBJ)
+ * STD_REF_DSETREG = lockid(H5T_STD_REF_DSETREG)             # <<<<<<<<<<<<<<
+ * 
+ * # Null terminated (C) and Fortran string types
+ */
+  __pyx_t_4 = __pyx_f_4h5py_3h5t_lockid(H5T_STD_REF_DSETREG); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__STD_REF_DSETREG, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":189
+ * 
+ * # Null terminated (C) and Fortran string types
+ * C_S1 = lockid(H5T_C_S1)             # <<<<<<<<<<<<<<
+ * FORTRAN_S1 = lockid(H5T_FORTRAN_S1)
+ * VARIABLE = H5T_VARIABLE
+ */
+  __pyx_t_4 = __pyx_f_4h5py_3h5t_lockid(H5T_C_S1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 189; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__C_S1, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 189; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":190
+ * # Null terminated (C) and Fortran string types
+ * C_S1 = lockid(H5T_C_S1)
+ * FORTRAN_S1 = lockid(H5T_FORTRAN_S1)             # <<<<<<<<<<<<<<
+ * VARIABLE = H5T_VARIABLE
+ * 
+ */
+  __pyx_t_4 = __pyx_f_4h5py_3h5t_lockid(H5T_FORTRAN_S1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__FORTRAN_S1, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":191
+ * C_S1 = lockid(H5T_C_S1)
+ * FORTRAN_S1 = lockid(H5T_FORTRAN_S1)
+ * VARIABLE = H5T_VARIABLE             # <<<<<<<<<<<<<<
+ * 
+ * # Character sets
+ */
+  __pyx_t_4 = __Pyx_PyInt_FromSize_t(H5T_VARIABLE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 191; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__VARIABLE, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 191; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":194
+ * 
+ * # Character sets
+ * CSET_ASCII = H5T_CSET_ASCII             # <<<<<<<<<<<<<<
+ * CSET_UTF8 = H5T_CSET_UTF8
+ * 
+ */
+  __pyx_t_4 = PyInt_FromLong(H5T_CSET_ASCII); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 194; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__CSET_ASCII, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 194; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":195
+ * # Character sets
+ * CSET_ASCII = H5T_CSET_ASCII
+ * CSET_UTF8 = H5T_CSET_UTF8             # <<<<<<<<<<<<<<
+ * 
+ * # Custom Python object pointer type
+ */
+  __pyx_t_4 = PyInt_FromLong(H5T_CSET_UTF8); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 195; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__CSET_UTF8, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 195; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":198
+ * 
+ * # Custom Python object pointer type
+ * PYTHON_OBJECT = lockid(_conv.get_python_obj())             # <<<<<<<<<<<<<<
+ * 
+ * # Mini floats
+ */
+  __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s___conv); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 198; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s__get_python_obj); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 198; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __pyx_t_4 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 198; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_7 = __Pyx_PyInt_from_py_hid_t(__pyx_t_4); if (unlikely((__pyx_t_7 == (hid_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 198; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __pyx_t_4 = __pyx_f_4h5py_3h5t_lockid(__pyx_t_7); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 198; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__PYTHON_OBJECT, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 198; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":201
+ * 
+ * # Mini floats
+ * IEEE_F16BE = IEEE_F32BE.copy()             # <<<<<<<<<<<<<<
+ * IEEE_F16BE.set_fields(15, 10, 5, 0, 10)
+ * IEEE_F16BE.set_size(2)
+ */
+  __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__IEEE_F32BE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s__copy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __pyx_t_4 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__IEEE_F16BE, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":202
+ * # Mini floats
+ * IEEE_F16BE = IEEE_F32BE.copy()
+ * IEEE_F16BE.set_fields(15, 10, 5, 0, 10)             # <<<<<<<<<<<<<<
+ * IEEE_F16BE.set_size(2)
+ * IEEE_F16BE.set_ebias(15)
+ */
+  __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__IEEE_F16BE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s__set_fields); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __pyx_t_4 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_k_tuple_50), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":203
+ * IEEE_F16BE = IEEE_F32BE.copy()
+ * IEEE_F16BE.set_fields(15, 10, 5, 0, 10)
+ * IEEE_F16BE.set_size(2)             # <<<<<<<<<<<<<<
+ * IEEE_F16BE.set_ebias(15)
+ * IEEE_F16BE.lock()
+ */
+  __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__IEEE_F16BE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 203; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s__set_size); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 203; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __pyx_t_4 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_k_tuple_51), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 203; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":204
+ * IEEE_F16BE.set_fields(15, 10, 5, 0, 10)
+ * IEEE_F16BE.set_size(2)
+ * IEEE_F16BE.set_ebias(15)             # <<<<<<<<<<<<<<
+ * IEEE_F16BE.lock()
+ * 
+ */
+  __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__IEEE_F16BE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 204; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s__set_ebias); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 204; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __pyx_t_4 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_k_tuple_52), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 204; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":205
+ * IEEE_F16BE.set_size(2)
+ * IEEE_F16BE.set_ebias(15)
+ * IEEE_F16BE.lock()             # <<<<<<<<<<<<<<
+ * 
+ * IEEE_F16LE = IEEE_F16BE.copy()
+ */
+  __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__IEEE_F16BE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 205; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s__lock); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 205; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __pyx_t_4 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 205; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":207
+ * IEEE_F16BE.lock()
+ * 
+ * IEEE_F16LE = IEEE_F16BE.copy()             # <<<<<<<<<<<<<<
+ * IEEE_F16LE.set_order(H5T_ORDER_LE)
+ * IEEE_F16LE.lock()
+ */
+  __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__IEEE_F16BE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 207; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s__copy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 207; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __pyx_t_4 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 207; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__IEEE_F16LE, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 207; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":208
+ * 
+ * IEEE_F16LE = IEEE_F16BE.copy()
+ * IEEE_F16LE.set_order(H5T_ORDER_LE)             # <<<<<<<<<<<<<<
+ * IEEE_F16LE.lock()
+ * 
+ */
+  __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__IEEE_F16LE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s__set_order); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __pyx_t_4 = PyInt_FromLong(H5T_ORDER_LE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_8);
+  PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_4);
+  __Pyx_GIVEREF(__pyx_t_4);
+  __pyx_t_4 = 0;
+  __pyx_t_4 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_t_8), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0;
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":209
+ * IEEE_F16LE = IEEE_F16BE.copy()
+ * IEEE_F16LE.set_order(H5T_ORDER_LE)
+ * IEEE_F16LE.lock()             # <<<<<<<<<<<<<<
+ * 
+ * # Translation tables for HDF5 -> NumPy dtype conversion
+ */
+  __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__IEEE_F16LE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_8 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s__lock); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_8);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __pyx_t_4 = PyObject_Call(__pyx_t_8, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":212
+ * 
+ * # Translation tables for HDF5 -> NumPy dtype conversion
+ * cdef dict _order_map = { H5T_ORDER_NONE: '|', H5T_ORDER_LE: '<', H5T_ORDER_BE: '>'}             # <<<<<<<<<<<<<<
+ * cdef dict _sign_map  = { H5T_SGN_NONE: 'u', H5T_SGN_2: 'i' }
+ * 
+ */
+  __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(((PyObject *)__pyx_t_4));
+  __pyx_t_8 = PyInt_FromLong(H5T_ORDER_NONE); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_8);
+  if (PyDict_SetItem(__pyx_t_4, __pyx_t_8, ((PyObject *)__pyx_kp_s_53)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+  __pyx_t_8 = PyInt_FromLong(H5T_ORDER_LE); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_8);
+  if (PyDict_SetItem(__pyx_t_4, __pyx_t_8, ((PyObject *)__pyx_kp_s_54)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+  __pyx_t_8 = PyInt_FromLong(H5T_ORDER_BE); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_8);
+  if (PyDict_SetItem(__pyx_t_4, __pyx_t_8, ((PyObject *)__pyx_kp_s_55)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+  __Pyx_XGOTREF(((PyObject *)__pyx_v_4h5py_3h5t__order_map));
+  __Pyx_DECREF(((PyObject *)__pyx_v_4h5py_3h5t__order_map));
+  __Pyx_GIVEREF(((PyObject *)__pyx_t_4));
+  __pyx_v_4h5py_3h5t__order_map = ((PyObject*)__pyx_t_4);
+  __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":213
+ * # Translation tables for HDF5 -> NumPy dtype conversion
+ * cdef dict _order_map = { H5T_ORDER_NONE: '|', H5T_ORDER_LE: '<', H5T_ORDER_BE: '>'}
+ * cdef dict _sign_map  = { H5T_SGN_NONE: 'u', H5T_SGN_2: 'i' }             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 213; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(((PyObject *)__pyx_t_4));
+  __pyx_t_8 = PyInt_FromLong(H5T_SGN_NONE); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 213; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_8);
+  if (PyDict_SetItem(__pyx_t_4, __pyx_t_8, ((PyObject *)__pyx_n_s__u)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 213; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+  __pyx_t_8 = PyInt_FromLong(H5T_SGN_2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 213; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_8);
+  if (PyDict_SetItem(__pyx_t_4, __pyx_t_8, ((PyObject *)__pyx_n_s__i)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 213; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+  __Pyx_XGOTREF(((PyObject *)__pyx_v_4h5py_3h5t__sign_map));
+  __Pyx_DECREF(((PyObject *)__pyx_v_4h5py_3h5t__sign_map));
+  __Pyx_GIVEREF(((PyObject *)__pyx_t_4));
+  __pyx_v_4h5py_3h5t__sign_map = ((PyObject*)__pyx_t_4);
+  __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":219
+ * 
+ * 
+ * def create(int classtype, size_t size):             # <<<<<<<<<<<<<<
+ *     """(INT classtype, UINT size) => TypeID
+ * 
+ */
+  __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_4h5py_3h5t_3create, NULL, __pyx_n_s_59); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__create, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":233
+ * 
+ * 
+ * def open(ObjectID group not None, char* name):             # <<<<<<<<<<<<<<
+ *     """(ObjectID group, STRING name) => TypeID
+ * 
+ */
+  __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_4h5py_3h5t_5open, NULL, __pyx_n_s_59); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__open, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 233; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":241
+ * 
+ * 
+ * def array_create(TypeID base not None, object dims_tpl):             # <<<<<<<<<<<<<<
+ *     """(TypeID base, TUPLE dimensions) => TypeArrayID
+ * 
+ */
+  __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_4h5py_3h5t_7array_create, NULL, __pyx_n_s_59); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 241; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__array_create, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 241; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":262
+ * 
+ * 
+ * def enum_create(TypeID base not None):             # <<<<<<<<<<<<<<
+ *     """(TypeID base) => TypeID
+ * 
+ */
+  __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_4h5py_3h5t_9enum_create, NULL, __pyx_n_s_59); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 262; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__enum_create, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 262; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":270
+ * 
+ * 
+ * def vlen_create(TypeID base not None):             # <<<<<<<<<<<<<<
+ *     """(TypeID base) => TypeID
+ * 
+ */
+  __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_4h5py_3h5t_11vlen_create, NULL, __pyx_n_s_59); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 270; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__vlen_create, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 270; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":281
+ * 
+ * 
+ * def decode(char* buf):             # <<<<<<<<<<<<<<
+ *     """(STRING buf) => TypeID
+ * 
+ */
+  __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_4h5py_3h5t_13decode, NULL, __pyx_n_s_59); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 281; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__decode, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 281; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":1182
+ * # transient and unlocked.
+ * 
+ * cdef dict _float_le = {2: IEEE_F16LE.id, 4: H5T_IEEE_F32LE, 8: H5T_IEEE_F64LE}             # <<<<<<<<<<<<<<
+ * cdef dict _float_be = {2: IEEE_F16BE.id, 4: H5T_IEEE_F32BE, 8: H5T_IEEE_F64BE}
+ * cdef dict _float_nt = _float_le if ORDER_NATIVE == H5T_ORDER_LE else _float_be
+ */
+  __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(((PyObject *)__pyx_t_4));
+  __pyx_t_8 = __Pyx_GetName(__pyx_m, __pyx_n_s__IEEE_F16LE); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_8);
+  __pyx_t_5 = PyObject_GetAttr(__pyx_t_8, __pyx_n_s__id); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+  if (PyDict_SetItem(__pyx_t_4, __pyx_int_2, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = PyInt_FromLong(H5T_IEEE_F32LE); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  if (PyDict_SetItem(__pyx_t_4, __pyx_int_4, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = PyInt_FromLong(H5T_IEEE_F64LE); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  if (PyDict_SetItem(__pyx_t_4, __pyx_int_8, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __Pyx_XGOTREF(((PyObject *)__pyx_v_4h5py_3h5t__float_le));
+  __Pyx_DECREF(((PyObject *)__pyx_v_4h5py_3h5t__float_le));
+  __Pyx_GIVEREF(((PyObject *)__pyx_t_4));
+  __pyx_v_4h5py_3h5t__float_le = ((PyObject*)__pyx_t_4);
+  __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":1183
+ * 
+ * cdef dict _float_le = {2: IEEE_F16LE.id, 4: H5T_IEEE_F32LE, 8: H5T_IEEE_F64LE}
+ * cdef dict _float_be = {2: IEEE_F16BE.id, 4: H5T_IEEE_F32BE, 8: H5T_IEEE_F64BE}             # <<<<<<<<<<<<<<
+ * cdef dict _float_nt = _float_le if ORDER_NATIVE == H5T_ORDER_LE else _float_be
+ * 
+ */
+  __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1183; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(((PyObject *)__pyx_t_4));
+  __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__IEEE_F16BE); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1183; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_8 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__id); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1183; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_8);
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  if (PyDict_SetItem(__pyx_t_4, __pyx_int_2, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1183; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+  __pyx_t_8 = PyInt_FromLong(H5T_IEEE_F32BE); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1183; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_8);
+  if (PyDict_SetItem(__pyx_t_4, __pyx_int_4, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1183; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+  __pyx_t_8 = PyInt_FromLong(H5T_IEEE_F64BE); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1183; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_8);
+  if (PyDict_SetItem(__pyx_t_4, __pyx_int_8, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1183; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+  __Pyx_XGOTREF(((PyObject *)__pyx_v_4h5py_3h5t__float_be));
+  __Pyx_DECREF(((PyObject *)__pyx_v_4h5py_3h5t__float_be));
+  __Pyx_GIVEREF(((PyObject *)__pyx_t_4));
+  __pyx_v_4h5py_3h5t__float_be = ((PyObject*)__pyx_t_4);
+  __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":1184
+ * cdef dict _float_le = {2: IEEE_F16LE.id, 4: H5T_IEEE_F32LE, 8: H5T_IEEE_F64LE}
+ * cdef dict _float_be = {2: IEEE_F16BE.id, 4: H5T_IEEE_F32BE, 8: H5T_IEEE_F64BE}
+ * cdef dict _float_nt = _float_le if ORDER_NATIVE == H5T_ORDER_LE else _float_be             # <<<<<<<<<<<<<<
+ * 
+ * cdef dict _int_le = {1: H5T_STD_I8LE, 2: H5T_STD_I16LE, 4: H5T_STD_I32LE, 8: H5T_STD_I64LE}
+ */
+  __pyx_t_8 = __Pyx_GetName(__pyx_m, __pyx_n_s__ORDER_NATIVE); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_8);
+  __pyx_t_5 = PyInt_FromLong(H5T_ORDER_LE); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_9 = PyObject_RichCompare(__pyx_t_8, __pyx_t_5, Py_EQ); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+  if (__pyx_t_6) {
+    __Pyx_INCREF(((PyObject *)__pyx_v_4h5py_3h5t__float_le));
+    __pyx_t_4 = __pyx_v_4h5py_3h5t__float_le;
+  } else {
+    __Pyx_INCREF(((PyObject *)__pyx_v_4h5py_3h5t__float_be));
+    __pyx_t_4 = __pyx_v_4h5py_3h5t__float_be;
+  }
+  __Pyx_XGOTREF(((PyObject *)__pyx_v_4h5py_3h5t__float_nt));
+  __Pyx_DECREF(((PyObject *)__pyx_v_4h5py_3h5t__float_nt));
+  __Pyx_GIVEREF(((PyObject *)__pyx_t_4));
+  __pyx_v_4h5py_3h5t__float_nt = ((PyObject*)__pyx_t_4);
+  __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":1186
+ * cdef dict _float_nt = _float_le if ORDER_NATIVE == H5T_ORDER_LE else _float_be
+ * 
+ * cdef dict _int_le = {1: H5T_STD_I8LE, 2: H5T_STD_I16LE, 4: H5T_STD_I32LE, 8: H5T_STD_I64LE}             # <<<<<<<<<<<<<<
+ * cdef dict _int_be = {1: H5T_STD_I8BE, 2: H5T_STD_I16BE, 4: H5T_STD_I32BE, 8: H5T_STD_I64BE}
+ * cdef dict _int_nt = {1: H5T_NATIVE_INT8, 2: H5T_NATIVE_INT16, 4: H5T_NATIVE_INT32, 8: H5T_NATIVE_INT64}
+ */
+  __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1186; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(((PyObject *)__pyx_t_4));
+  __pyx_t_9 = PyInt_FromLong(H5T_STD_I8LE); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1186; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_9);
+  if (PyDict_SetItem(__pyx_t_4, __pyx_int_1, __pyx_t_9) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1186; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+  __pyx_t_9 = PyInt_FromLong(H5T_STD_I16LE); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1186; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_9);
+  if (PyDict_SetItem(__pyx_t_4, __pyx_int_2, __pyx_t_9) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1186; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+  __pyx_t_9 = PyInt_FromLong(H5T_STD_I32LE); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1186; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_9);
+  if (PyDict_SetItem(__pyx_t_4, __pyx_int_4, __pyx_t_9) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1186; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+  __pyx_t_9 = PyInt_FromLong(H5T_STD_I64LE); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1186; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_9);
+  if (PyDict_SetItem(__pyx_t_4, __pyx_int_8, __pyx_t_9) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1186; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+  __Pyx_XGOTREF(((PyObject *)__pyx_v_4h5py_3h5t__int_le));
+  __Pyx_DECREF(((PyObject *)__pyx_v_4h5py_3h5t__int_le));
+  __Pyx_GIVEREF(((PyObject *)__pyx_t_4));
+  __pyx_v_4h5py_3h5t__int_le = ((PyObject*)__pyx_t_4);
+  __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":1187
+ * 
+ * cdef dict _int_le = {1: H5T_STD_I8LE, 2: H5T_STD_I16LE, 4: H5T_STD_I32LE, 8: H5T_STD_I64LE}
+ * cdef dict _int_be = {1: H5T_STD_I8BE, 2: H5T_STD_I16BE, 4: H5T_STD_I32BE, 8: H5T_STD_I64BE}             # <<<<<<<<<<<<<<
+ * cdef dict _int_nt = {1: H5T_NATIVE_INT8, 2: H5T_NATIVE_INT16, 4: H5T_NATIVE_INT32, 8: H5T_NATIVE_INT64}
+ * 
+ */
+  __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(((PyObject *)__pyx_t_4));
+  __pyx_t_9 = PyInt_FromLong(H5T_STD_I8BE); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_9);
+  if (PyDict_SetItem(__pyx_t_4, __pyx_int_1, __pyx_t_9) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+  __pyx_t_9 = PyInt_FromLong(H5T_STD_I16BE); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_9);
+  if (PyDict_SetItem(__pyx_t_4, __pyx_int_2, __pyx_t_9) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+  __pyx_t_9 = PyInt_FromLong(H5T_STD_I32BE); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_9);
+  if (PyDict_SetItem(__pyx_t_4, __pyx_int_4, __pyx_t_9) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+  __pyx_t_9 = PyInt_FromLong(H5T_STD_I64BE); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_9);
+  if (PyDict_SetItem(__pyx_t_4, __pyx_int_8, __pyx_t_9) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+  __Pyx_XGOTREF(((PyObject *)__pyx_v_4h5py_3h5t__int_be));
+  __Pyx_DECREF(((PyObject *)__pyx_v_4h5py_3h5t__int_be));
+  __Pyx_GIVEREF(((PyObject *)__pyx_t_4));
+  __pyx_v_4h5py_3h5t__int_be = ((PyObject*)__pyx_t_4);
+  __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":1188
+ * cdef dict _int_le = {1: H5T_STD_I8LE, 2: H5T_STD_I16LE, 4: H5T_STD_I32LE, 8: H5T_STD_I64LE}
+ * cdef dict _int_be = {1: H5T_STD_I8BE, 2: H5T_STD_I16BE, 4: H5T_STD_I32BE, 8: H5T_STD_I64BE}
+ * cdef dict _int_nt = {1: H5T_NATIVE_INT8, 2: H5T_NATIVE_INT16, 4: H5T_NATIVE_INT32, 8: H5T_NATIVE_INT64}             # <<<<<<<<<<<<<<
+ * 
+ * cdef dict _uint_le = {1: H5T_STD_U8LE, 2: H5T_STD_U16LE, 4: H5T_STD_U32LE, 8: H5T_STD_U64LE}
+ */
+  __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(((PyObject *)__pyx_t_4));
+  __pyx_t_9 = PyInt_FromLong(H5T_NATIVE_INT8); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_9);
+  if (PyDict_SetItem(__pyx_t_4, __pyx_int_1, __pyx_t_9) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+  __pyx_t_9 = PyInt_FromLong(H5T_NATIVE_INT16); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_9);
+  if (PyDict_SetItem(__pyx_t_4, __pyx_int_2, __pyx_t_9) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+  __pyx_t_9 = PyInt_FromLong(H5T_NATIVE_INT32); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_9);
+  if (PyDict_SetItem(__pyx_t_4, __pyx_int_4, __pyx_t_9) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+  __pyx_t_9 = PyInt_FromLong(H5T_NATIVE_INT64); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_9);
+  if (PyDict_SetItem(__pyx_t_4, __pyx_int_8, __pyx_t_9) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+  __Pyx_XGOTREF(((PyObject *)__pyx_v_4h5py_3h5t__int_nt));
+  __Pyx_DECREF(((PyObject *)__pyx_v_4h5py_3h5t__int_nt));
+  __Pyx_GIVEREF(((PyObject *)__pyx_t_4));
+  __pyx_v_4h5py_3h5t__int_nt = ((PyObject*)__pyx_t_4);
+  __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":1190
+ * cdef dict _int_nt = {1: H5T_NATIVE_INT8, 2: H5T_NATIVE_INT16, 4: H5T_NATIVE_INT32, 8: H5T_NATIVE_INT64}
+ * 
+ * cdef dict _uint_le = {1: H5T_STD_U8LE, 2: H5T_STD_U16LE, 4: H5T_STD_U32LE, 8: H5T_STD_U64LE}             # <<<<<<<<<<<<<<
+ * cdef dict _uint_be = {1: H5T_STD_U8BE, 2: H5T_STD_U16BE, 4: H5T_STD_U32BE, 8: H5T_STD_U64BE}
+ * cdef dict _uint_nt = {1: H5T_NATIVE_UINT8, 2: H5T_NATIVE_UINT16, 4: H5T_NATIVE_UINT32, 8: H5T_NATIVE_UINT64}
+ */
+  __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(((PyObject *)__pyx_t_4));
+  __pyx_t_9 = PyInt_FromLong(H5T_STD_U8LE); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_9);
+  if (PyDict_SetItem(__pyx_t_4, __pyx_int_1, __pyx_t_9) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+  __pyx_t_9 = PyInt_FromLong(H5T_STD_U16LE); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_9);
+  if (PyDict_SetItem(__pyx_t_4, __pyx_int_2, __pyx_t_9) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+  __pyx_t_9 = PyInt_FromLong(H5T_STD_U32LE); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_9);
+  if (PyDict_SetItem(__pyx_t_4, __pyx_int_4, __pyx_t_9) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+  __pyx_t_9 = PyInt_FromLong(H5T_STD_U64LE); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_9);
+  if (PyDict_SetItem(__pyx_t_4, __pyx_int_8, __pyx_t_9) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+  __Pyx_XGOTREF(((PyObject *)__pyx_v_4h5py_3h5t__uint_le));
+  __Pyx_DECREF(((PyObject *)__pyx_v_4h5py_3h5t__uint_le));
+  __Pyx_GIVEREF(((PyObject *)__pyx_t_4));
+  __pyx_v_4h5py_3h5t__uint_le = ((PyObject*)__pyx_t_4);
+  __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":1191
+ * 
+ * cdef dict _uint_le = {1: H5T_STD_U8LE, 2: H5T_STD_U16LE, 4: H5T_STD_U32LE, 8: H5T_STD_U64LE}
+ * cdef dict _uint_be = {1: H5T_STD_U8BE, 2: H5T_STD_U16BE, 4: H5T_STD_U32BE, 8: H5T_STD_U64BE}             # <<<<<<<<<<<<<<
+ * cdef dict _uint_nt = {1: H5T_NATIVE_UINT8, 2: H5T_NATIVE_UINT16, 4: H5T_NATIVE_UINT32, 8: H5T_NATIVE_UINT64}
+ * 
+ */
+  __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1191; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(((PyObject *)__pyx_t_4));
+  __pyx_t_9 = PyInt_FromLong(H5T_STD_U8BE); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1191; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_9);
+  if (PyDict_SetItem(__pyx_t_4, __pyx_int_1, __pyx_t_9) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1191; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+  __pyx_t_9 = PyInt_FromLong(H5T_STD_U16BE); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1191; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_9);
+  if (PyDict_SetItem(__pyx_t_4, __pyx_int_2, __pyx_t_9) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1191; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+  __pyx_t_9 = PyInt_FromLong(H5T_STD_U32BE); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1191; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_9);
+  if (PyDict_SetItem(__pyx_t_4, __pyx_int_4, __pyx_t_9) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1191; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+  __pyx_t_9 = PyInt_FromLong(H5T_STD_U64BE); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1191; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_9);
+  if (PyDict_SetItem(__pyx_t_4, __pyx_int_8, __pyx_t_9) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1191; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+  __Pyx_XGOTREF(((PyObject *)__pyx_v_4h5py_3h5t__uint_be));
+  __Pyx_DECREF(((PyObject *)__pyx_v_4h5py_3h5t__uint_be));
+  __Pyx_GIVEREF(((PyObject *)__pyx_t_4));
+  __pyx_v_4h5py_3h5t__uint_be = ((PyObject*)__pyx_t_4);
+  __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":1192
+ * cdef dict _uint_le = {1: H5T_STD_U8LE, 2: H5T_STD_U16LE, 4: H5T_STD_U32LE, 8: H5T_STD_U64LE}
+ * cdef dict _uint_be = {1: H5T_STD_U8BE, 2: H5T_STD_U16BE, 4: H5T_STD_U32BE, 8: H5T_STD_U64BE}
+ * cdef dict _uint_nt = {1: H5T_NATIVE_UINT8, 2: H5T_NATIVE_UINT16, 4: H5T_NATIVE_UINT32, 8: H5T_NATIVE_UINT64}             # <<<<<<<<<<<<<<
+ * 
+ * cdef TypeFloatID _c_float(dtype dt):
+ */
+  __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(((PyObject *)__pyx_t_4));
+  __pyx_t_9 = PyInt_FromLong(H5T_NATIVE_UINT8); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_9);
+  if (PyDict_SetItem(__pyx_t_4, __pyx_int_1, __pyx_t_9) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+  __pyx_t_9 = PyInt_FromLong(H5T_NATIVE_UINT16); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_9);
+  if (PyDict_SetItem(__pyx_t_4, __pyx_int_2, __pyx_t_9) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+  __pyx_t_9 = PyInt_FromLong(H5T_NATIVE_UINT32); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_9);
+  if (PyDict_SetItem(__pyx_t_4, __pyx_int_4, __pyx_t_9) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+  __pyx_t_9 = PyInt_FromLong(H5T_NATIVE_UINT64); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_9);
+  if (PyDict_SetItem(__pyx_t_4, __pyx_int_8, __pyx_t_9) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+  __Pyx_XGOTREF(((PyObject *)__pyx_v_4h5py_3h5t__uint_nt));
+  __Pyx_DECREF(((PyObject *)__pyx_v_4h5py_3h5t__uint_nt));
+  __Pyx_GIVEREF(((PyObject *)__pyx_t_4));
+  __pyx_v_4h5py_3h5t__uint_nt = ((PyObject*)__pyx_t_4);
+  __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":1459
+ *         raise TypeError("No conversion path for dtype: %s" % repr(dt))
+ * 
+ * def special_dtype(**kwds):             # <<<<<<<<<<<<<<
+ *     """ Create a new h5py "special" type.  Only one keyword may be given.
+ * 
+ */
+  __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_4h5py_3h5t_17special_dtype, NULL, __pyx_n_s_59); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1459; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__special_dtype, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1459; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":1512
+ *     raise TypeError('Unknown special type "%s"' % name)
+ * 
+ * def check_dtype(**kwds):             # <<<<<<<<<<<<<<
+ *     """ Check a dtype for h5py special type "hint" information.  Only one
+ *     keyword may be given.
+ */
+  __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_4h5py_3h5t_19check_dtype, NULL, __pyx_n_s_59); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1512; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__check_dtype, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1512; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":1551
+ *     return None
+ * 
+ * def convert(TypeID src not None, TypeID dst not None, size_t n,             # <<<<<<<<<<<<<<
+ *             ndarray buf not None, ndarray bkg=None, ObjectID dxpl=None):
+ *     """ (TypeID src, TypeID dst, UINT n, NDARRAY buf, NDARRAY bkg=None,
+ */
+  __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_4h5py_3h5t_21convert, NULL, __pyx_n_s_59); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1551; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__convert, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1551; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":1572
+ *     H5Tconvert(src.id, dst.id, n, buf_, bkg_, pdefault(dxpl))
+ * 
+ * def find(TypeID src not None, TypeID dst not None):             # <<<<<<<<<<<<<<
+ *     """ (TypeID src, TypeID dst) => TUPLE or None
+ * 
+ */
+  __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_4h5py_3h5t_23find, NULL, __pyx_n_s_59); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1572; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__find, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1572; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":1595
+ * # Deprecated functions
+ * 
+ * import warnings             # <<<<<<<<<<<<<<
+ * 
+ * cpdef dtype py_new_enum(object dt_in, dict enum_vals):
+ */
+  __pyx_t_4 = __Pyx_Import(((PyObject *)__pyx_n_s__warnings), 0, -1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1595; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__warnings, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1595; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
+  /* "h5py/h5t.pyx":1
+ * # This file is part of h5py, a Python interface to the HDF5 library.             # <<<<<<<<<<<<<<
+ * #
+ * # http://www.h5py.org
+ */
+  __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(((PyObject *)__pyx_t_4));
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s____test__, ((PyObject *)__pyx_t_4)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_8);
+  __Pyx_XDECREF(__pyx_t_9);
+  if (__pyx_m) {
+    __Pyx_AddTraceback("init h5py.h5t", __pyx_clineno, __pyx_lineno, __pyx_filename);
+    Py_DECREF(__pyx_m); __pyx_m = 0;
+  } else if (!PyErr_Occurred()) {
+    PyErr_SetString(PyExc_ImportError, "init h5py.h5t");
+  }
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  #if PY_MAJOR_VERSION < 3
+  return;
+  #else
+  return __pyx_m;
+  #endif
+}
+
+/* Runtime support code */
+#if CYTHON_REFNANNY
+static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) {
+    PyObject *m = NULL, *p = NULL;
+    void *r = NULL;
+    m = PyImport_ImportModule((char *)modname);
+    if (!m) goto end;
+    p = PyObject_GetAttrString(m, (char *)"RefNannyAPI");
+    if (!p) goto end;
+    r = PyLong_AsVoidPtr(p);
+end:
+    Py_XDECREF(p);
+    Py_XDECREF(m);
+    return (__Pyx_RefNannyAPIStruct *)r;
+}
+#endif /* CYTHON_REFNANNY */
+
+static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name) {
+    PyObject *result;
+    result = PyObject_GetAttr(dict, name);
+    if (!result) {
+        if (dict != __pyx_b) {
+            PyErr_Clear();
+            result = PyObject_GetAttr(__pyx_b, name);
+        }
+        if (!result) {
+            PyErr_SetObject(PyExc_NameError, name);
+        }
+    }
+    return result;
+}
+
+static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) {
+    if (unlikely(!type)) {
+        PyErr_Format(PyExc_SystemError, "Missing type object");
+        return 0;
+    }
+    if (likely(PyObject_TypeCheck(obj, type)))
+        return 1;
+    PyErr_Format(PyExc_TypeError, "Cannot convert %.200s to %.200s",
+                 Py_TYPE(obj)->tp_name, type->tp_name);
+    return 0;
+}
+
+static void __Pyx_RaiseArgtupleInvalid(
+    const char* func_name,
+    int exact,
+    Py_ssize_t num_min,
+    Py_ssize_t num_max,
+    Py_ssize_t num_found)
+{
+    Py_ssize_t num_expected;
+    const char *more_or_less;
+    if (num_found < num_min) {
+        num_expected = num_min;
+        more_or_less = "at least";
+    } else {
+        num_expected = num_max;
+        more_or_less = "at most";
+    }
+    if (exact) {
+        more_or_less = "exactly";
+    }
+    PyErr_Format(PyExc_TypeError,
+                 "%s() takes %s %" CYTHON_FORMAT_SSIZE_T "d positional argument%s (%" CYTHON_FORMAT_SSIZE_T "d given)",
+                 func_name, more_or_less, num_expected,
+                 (num_expected == 1) ? "" : "s", num_found);
+}
+
+static void __Pyx_RaiseDoubleKeywordsError(
+    const char* func_name,
+    PyObject* kw_name)
+{
+    PyErr_Format(PyExc_TypeError,
+        #if PY_MAJOR_VERSION >= 3
+        "%s() got multiple values for keyword argument '%U'", func_name, kw_name);
+        #else
+        "%s() got multiple values for keyword argument '%s'", func_name,
+        PyString_AsString(kw_name));
+        #endif
+}
+
+static int __Pyx_ParseOptionalKeywords(
+    PyObject *kwds,
+    PyObject **argnames[],
+    PyObject *kwds2,
+    PyObject *values[],
+    Py_ssize_t num_pos_args,
+    const char* function_name)
+{
+    PyObject *key = 0, *value = 0;
+    Py_ssize_t pos = 0;
+    PyObject*** name;
+    PyObject*** first_kw_arg = argnames + num_pos_args;
+    while (PyDict_Next(kwds, &pos, &key, &value)) {
+        name = first_kw_arg;
+        while (*name && (**name != key)) name++;
+        if (*name) {
+            values[name-argnames] = value;
+            continue;
+        }
+        name = first_kw_arg;
+        #if PY_MAJOR_VERSION < 3
+        if (likely(PyString_CheckExact(key)) || likely(PyString_Check(key))) {
+            while (*name) {
+                if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key))
+                        && _PyString_Eq(**name, key)) {
+                    values[name-argnames] = value;
+                    break;
+                }
+                name++;
+            }
+            if (*name) continue;
+            else {
+                PyObject*** argname = argnames;
+                while (argname != first_kw_arg) {
+                    if ((**argname == key) || (
+                            (CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**argname) == PyString_GET_SIZE(key))
+                             && _PyString_Eq(**argname, key))) {
+                        goto arg_passed_twice;
+                    }
+                    argname++;
+                }
+            }
+        } else
+        #endif
+        if (likely(PyUnicode_Check(key))) {
+            while (*name) {
+                int cmp = (**name == key) ? 0 :
+                #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
+                    (PyUnicode_GET_SIZE(**name) != PyUnicode_GET_SIZE(key)) ? 1 :
+                #endif
+                    PyUnicode_Compare(**name, key);
+                if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
+                if (cmp == 0) {
+                    values[name-argnames] = value;
+                    break;
+                }
+                name++;
+            }
+            if (*name) continue;
+            else {
+                PyObject*** argname = argnames;
+                while (argname != first_kw_arg) {
+                    int cmp = (**argname == key) ? 0 :
+                    #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
+                        (PyUnicode_GET_SIZE(**argname) != PyUnicode_GET_SIZE(key)) ? 1 :
+                    #endif
+                        PyUnicode_Compare(**argname, key);
+                    if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
+                    if (cmp == 0) goto arg_passed_twice;
+                    argname++;
+                }
+            }
+        } else
+            goto invalid_keyword_type;
+        if (kwds2) {
+            if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad;
+        } else {
+            goto invalid_keyword;
+        }
+    }
+    return 0;
+arg_passed_twice:
+    __Pyx_RaiseDoubleKeywordsError(function_name, key);
+    goto bad;
+invalid_keyword_type:
+    PyErr_Format(PyExc_TypeError,
+        "%s() keywords must be strings", function_name);
+    goto bad;
+invalid_keyword:
+    PyErr_Format(PyExc_TypeError,
+    #if PY_MAJOR_VERSION < 3
+        "%s() got an unexpected keyword argument '%s'",
+        function_name, PyString_AsString(key));
+    #else
+        "%s() got an unexpected keyword argument '%U'",
+        function_name, key);
+    #endif
+bad:
+    return -1;
+}
+
+static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb) {
+#if CYTHON_COMPILING_IN_CPYTHON
+    PyObject *tmp_type, *tmp_value, *tmp_tb;
+    PyThreadState *tstate = PyThreadState_GET();
+    tmp_type = tstate->curexc_type;
+    tmp_value = tstate->curexc_value;
+    tmp_tb = tstate->curexc_traceback;
+    tstate->curexc_type = type;
+    tstate->curexc_value = value;
+    tstate->curexc_traceback = tb;
+    Py_XDECREF(tmp_type);
+    Py_XDECREF(tmp_value);
+    Py_XDECREF(tmp_tb);
+#else
+    PyErr_Restore(type, value, tb);
+#endif
+}
+static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb) {
+#if CYTHON_COMPILING_IN_CPYTHON
+    PyThreadState *tstate = PyThreadState_GET();
+    *type = tstate->curexc_type;
+    *value = tstate->curexc_value;
+    *tb = tstate->curexc_traceback;
+    tstate->curexc_type = 0;
+    tstate->curexc_value = 0;
+    tstate->curexc_traceback = 0;
+#else
+    PyErr_Fetch(type, value, tb);
+#endif
+}
+
+#if PY_MAJOR_VERSION < 3
+static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb,
+                        CYTHON_UNUSED PyObject *cause) {
+    Py_XINCREF(type);
+    if (!value || value == Py_None)
+        value = NULL;
+    else
+        Py_INCREF(value);
+    if (!tb || tb == Py_None)
+        tb = NULL;
+    else {
+        Py_INCREF(tb);
+        if (!PyTraceBack_Check(tb)) {
+            PyErr_SetString(PyExc_TypeError,
+                "raise: arg 3 must be a traceback or None");
+            goto raise_error;
+        }
+    }
+    #if PY_VERSION_HEX < 0x02050000
+    if (PyClass_Check(type)) {
+    #else
+    if (PyType_Check(type)) {
+    #endif
+#if CYTHON_COMPILING_IN_PYPY
+        if (!value) {
+            Py_INCREF(Py_None);
+            value = Py_None;
+        }
+#endif
+        PyErr_NormalizeException(&type, &value, &tb);
+    } else {
+        if (value) {
+            PyErr_SetString(PyExc_TypeError,
+                "instance exception may not have a separate value");
+            goto raise_error;
+        }
+        value = type;
+        #if PY_VERSION_HEX < 0x02050000
+            if (PyInstance_Check(type)) {
+                type = (PyObject*) ((PyInstanceObject*)type)->in_class;
+                Py_INCREF(type);
+            }
+            else {
+                type = 0;
+                PyErr_SetString(PyExc_TypeError,
+                    "raise: exception must be an old-style class or instance");
+                goto raise_error;
+            }
+        #else
+            type = (PyObject*) Py_TYPE(type);
+            Py_INCREF(type);
+            if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) {
+                PyErr_SetString(PyExc_TypeError,
+                    "raise: exception class must be a subclass of BaseException");
+                goto raise_error;
+            }
+        #endif
+    }
+    __Pyx_ErrRestore(type, value, tb);
+    return;
+raise_error:
+    Py_XDECREF(value);
+    Py_XDECREF(type);
+    Py_XDECREF(tb);
+    return;
+}
+#else /* Python 3+ */
+static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) {
+    PyObject* owned_instance = NULL;
+    if (tb == Py_None) {
+        tb = 0;
+    } else if (tb && !PyTraceBack_Check(tb)) {
+        PyErr_SetString(PyExc_TypeError,
+            "raise: arg 3 must be a traceback or None");
+        goto bad;
+    }
+    if (value == Py_None)
+        value = 0;
+    if (PyExceptionInstance_Check(type)) {
+        if (value) {
+            PyErr_SetString(PyExc_TypeError,
+                "instance exception may not have a separate value");
+            goto bad;
+        }
+        value = type;
+        type = (PyObject*) Py_TYPE(value);
+    } else if (PyExceptionClass_Check(type)) {
+        PyObject *args;
+        if (!value)
+            args = PyTuple_New(0);
+        else if (PyTuple_Check(value)) {
+            Py_INCREF(value);
+            args = value;
+        }
+        else
+            args = PyTuple_Pack(1, value);
+        if (!args)
+            goto bad;
+        owned_instance = PyEval_CallObject(type, args);
+        Py_DECREF(args);
+        if (!owned_instance)
+            goto bad;
+        value = owned_instance;
+        if (!PyExceptionInstance_Check(value)) {
+            PyErr_Format(PyExc_TypeError,
+                         "calling %R should have returned an instance of "
+                         "BaseException, not %R",
+                         type, Py_TYPE(value));
+            goto bad;
+        }
+    } else {
+        PyErr_SetString(PyExc_TypeError,
+            "raise: exception class must be a subclass of BaseException");
+        goto bad;
+    }
+    if (cause && cause != Py_None) {
+        PyObject *fixed_cause;
+        if (PyExceptionClass_Check(cause)) {
+            fixed_cause = PyObject_CallObject(cause, NULL);
+            if (fixed_cause == NULL)
+                goto bad;
+        }
+        else if (PyExceptionInstance_Check(cause)) {
+            fixed_cause = cause;
+            Py_INCREF(fixed_cause);
+        }
+        else {
+            PyErr_SetString(PyExc_TypeError,
+                            "exception causes must derive from "
+                            "BaseException");
+            goto bad;
+        }
+        PyException_SetCause(value, fixed_cause);
+    }
+    PyErr_SetObject(type, value);
+    if (tb) {
+        PyThreadState *tstate = PyThreadState_GET();
+        PyObject* tmp_tb = tstate->curexc_traceback;
+        if (tb != tmp_tb) {
+            Py_INCREF(tb);
+            tstate->curexc_traceback = tb;
+            Py_XDECREF(tmp_tb);
+        }
+    }
+bad:
+    Py_XDECREF(owned_instance);
+    return;
+}
+#endif
+
+static int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, int none_allowed,
+    const char *name, int exact)
+{
+    if (!type) {
+        PyErr_Format(PyExc_SystemError, "Missing type object");
+        return 0;
+    }
+    if (none_allowed && obj == Py_None) return 1;
+    else if (exact) {
+        if (Py_TYPE(obj) == type) return 1;
+    }
+    else {
+        if (PyObject_TypeCheck(obj, type)) return 1;
+    }
+    PyErr_Format(PyExc_TypeError,
+        "Argument '%s' has incorrect type (expected %s, got %s)",
+        name, type->tp_name, Py_TYPE(obj)->tp_name);
+    return 0;
+}
+
+static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) {
+    PyObject *local_type, *local_value, *local_tb;
+#if CYTHON_COMPILING_IN_CPYTHON
+    PyObject *tmp_type, *tmp_value, *tmp_tb;
+    PyThreadState *tstate = PyThreadState_GET();
+    local_type = tstate->curexc_type;
+    local_value = tstate->curexc_value;
+    local_tb = tstate->curexc_traceback;
+    tstate->curexc_type = 0;
+    tstate->curexc_value = 0;
+    tstate->curexc_traceback = 0;
+#else
+    PyErr_Fetch(&local_type, &local_value, &local_tb);
+#endif
+    PyErr_NormalizeException(&local_type, &local_value, &local_tb);
+#if CYTHON_COMPILING_IN_CPYTHON
+    if (unlikely(tstate->curexc_type))
+#else
+    if (unlikely(PyErr_Occurred()))
+#endif
+        goto bad;
+    #if PY_MAJOR_VERSION >= 3
+    if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0))
+        goto bad;
+    #endif
+    Py_INCREF(local_type);
+    Py_INCREF(local_value);
+    Py_INCREF(local_tb);
+    *type = local_type;
+    *value = local_value;
+    *tb = local_tb;
+#if CYTHON_COMPILING_IN_CPYTHON
+    tmp_type = tstate->exc_type;
+    tmp_value = tstate->exc_value;
+    tmp_tb = tstate->exc_traceback;
+    tstate->exc_type = local_type;
+    tstate->exc_value = local_value;
+    tstate->exc_traceback = local_tb;
+    /* Make sure tstate is in a consistent state when we XDECREF
+       these objects (DECREF may run arbitrary code). */
+    Py_XDECREF(tmp_type);
+    Py_XDECREF(tmp_value);
+    Py_XDECREF(tmp_tb);
+#else
+    PyErr_SetExcInfo(local_type, local_value, local_tb);
+#endif
+    return 0;
+bad:
+    *type = 0;
+    *value = 0;
+    *tb = 0;
+    Py_XDECREF(local_type);
+    Py_XDECREF(local_value);
+    Py_XDECREF(local_tb);
+    return -1;
+}
+
+static CYTHON_INLINE int __Pyx_IterFinish(void) {
+#if CYTHON_COMPILING_IN_CPYTHON
+    PyThreadState *tstate = PyThreadState_GET();
+    PyObject* exc_type = tstate->curexc_type;
+    if (unlikely(exc_type)) {
+        if (likely(exc_type == PyExc_StopIteration) || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)) {
+            PyObject *exc_value, *exc_tb;
+            exc_value = tstate->curexc_value;
+            exc_tb = tstate->curexc_traceback;
+            tstate->curexc_type = 0;
+            tstate->curexc_value = 0;
+            tstate->curexc_traceback = 0;
+            Py_DECREF(exc_type);
+            Py_XDECREF(exc_value);
+            Py_XDECREF(exc_tb);
+            return 0;
+        } else {
+            return -1;
+        }
+    }
+    return 0;
+#else
+    if (unlikely(PyErr_Occurred())) {
+        if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) {
+            PyErr_Clear();
+            return 0;
+        } else {
+            return -1;
+        }
+    }
+    return 0;
+#endif
+}
+
+static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) {
+    PyErr_Format(PyExc_ValueError,
+                 "too many values to unpack (expected %" CYTHON_FORMAT_SSIZE_T "d)", expected);
+}
+
+static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) {
+    PyErr_Format(PyExc_ValueError,
+                 "need more than %" CYTHON_FORMAT_SSIZE_T "d value%s to unpack",
+                 index, (index == 1) ? "" : "s");
+}
+
+static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void) {
+    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
+}
+
+static void __Pyx_UnpackTupleError(PyObject *t, Py_ssize_t index) {
+    if (t == Py_None) {
+      __Pyx_RaiseNoneNotIterableError();
+    } else if (PyTuple_GET_SIZE(t) < index) {
+      __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(t));
+    } else {
+      __Pyx_RaiseTooManyValuesError(index);
+    }
+}
+
+static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected) {
+    if (unlikely(retval)) {
+        Py_DECREF(retval);
+        __Pyx_RaiseTooManyValuesError(expected);
+        return -1;
+    } else {
+        return __Pyx_IterFinish();
+    }
+    return 0;
+}
+
+static CYTHON_INLINE int __Pyx_unpack_tuple2(PyObject* tuple, PyObject** pvalue1, PyObject** pvalue2,
+                                             int is_tuple, int has_known_size, int decref_tuple) {
+    Py_ssize_t index;
+    PyObject *value1 = NULL, *value2 = NULL, *iter = NULL;
+    if (!is_tuple && unlikely(!PyTuple_Check(tuple))) {
+        iternextfunc iternext;
+        iter = PyObject_GetIter(tuple);
+        if (unlikely(!iter)) goto bad;
+        if (decref_tuple) { Py_DECREF(tuple); tuple = NULL; }
+        iternext = Py_TYPE(iter)->tp_iternext;
+        value1 = iternext(iter); if (unlikely(!value1)) { index = 0; goto unpacking_failed; }
+        value2 = iternext(iter); if (unlikely(!value2)) { index = 1; goto unpacking_failed; }
+        if (!has_known_size && unlikely(__Pyx_IternextUnpackEndCheck(iternext(iter), 2))) goto bad;
+        Py_DECREF(iter);
+    } else {
+        if (!has_known_size && unlikely(PyTuple_GET_SIZE(tuple) != 2)) {
+            __Pyx_UnpackTupleError(tuple, 2);
+            goto bad;
+        }
+#if CYTHON_COMPILING_IN_PYPY
+        value1 = PySequence_ITEM(tuple, 0);
+        if (unlikely(!value1)) goto bad;
+        value2 = PySequence_ITEM(tuple, 1);
+        if (unlikely(!value2)) goto bad;
+#else
+        value1 = PyTuple_GET_ITEM(tuple, 0);
+        value2 = PyTuple_GET_ITEM(tuple, 1);
+        Py_INCREF(value1);
+        Py_INCREF(value2);
+#endif
+        if (decref_tuple) { Py_DECREF(tuple); }
+    }
+    *pvalue1 = value1;
+    *pvalue2 = value2;
+    return 0;
+unpacking_failed:
+    if (!has_known_size && __Pyx_IterFinish() == 0)
+        __Pyx_RaiseNeedMoreValuesError(index);
+bad:
+    Py_XDECREF(iter);
+    Py_XDECREF(value1);
+    Py_XDECREF(value2);
+    if (decref_tuple) { Py_XDECREF(tuple); }
+    return -1;
+}
+
+static CYTHON_INLINE PyObject* __Pyx_dict_iterator(PyObject* iterable, int is_dict, PyObject* method_name,
+                                                   Py_ssize_t* p_orig_length, int* p_source_is_dict) {
+    is_dict = is_dict || likely(PyDict_CheckExact(iterable));
+    *p_source_is_dict = is_dict;
+#if !CYTHON_COMPILING_IN_PYPY
+    if (is_dict) {
+        *p_orig_length = PyDict_Size(iterable);
+        Py_INCREF(iterable);
+        return iterable;
+    }
+#endif
+    *p_orig_length = 0;
+    if (method_name) {
+        PyObject* iter;
+        iterable = PyObject_CallMethodObjArgs(iterable, method_name, NULL);
+        if (!iterable)
+            return NULL;
+#if !CYTHON_COMPILING_IN_PYPY
+        if (PyTuple_CheckExact(iterable) || PyList_CheckExact(iterable))
+            return iterable;
+#endif
+        iter = PyObject_GetIter(iterable);
+        Py_DECREF(iterable);
+        return iter;
+    }
+    return PyObject_GetIter(iterable);
+}
+static CYTHON_INLINE int __Pyx_dict_iter_next(PyObject* iter_obj, Py_ssize_t orig_length, Py_ssize_t* ppos,
+                                              PyObject** pkey, PyObject** pvalue, PyObject** pitem, int source_is_dict) {
+    PyObject* next_item;
+#if !CYTHON_COMPILING_IN_PYPY
+    if (source_is_dict) {
+        PyObject *key, *value;
+        if (unlikely(orig_length != PyDict_Size(iter_obj))) {
+            PyErr_SetString(PyExc_RuntimeError, "dictionary changed size during iteration");
+            return -1;
+        }
+        if (unlikely(!PyDict_Next(iter_obj, ppos, &key, &value))) {
+            return 0;
+        }
+        if (pitem) {
+            PyObject* tuple = PyTuple_New(2);
+            if (unlikely(!tuple)) {
+                return -1;
+            }
+            Py_INCREF(key);
+            Py_INCREF(value);
+            PyTuple_SET_ITEM(tuple, 0, key);
+            PyTuple_SET_ITEM(tuple, 1, value);
+            *pitem = tuple;
+        } else {
+            if (pkey) {
+                Py_INCREF(key);
+                *pkey = key;
+            }
+            if (pvalue) {
+                Py_INCREF(value);
+                *pvalue = value;
+            }
+        }
+        return 1;
+    } else if (PyTuple_CheckExact(iter_obj)) {
+        Py_ssize_t pos = *ppos;
+        if (unlikely(pos >= PyTuple_GET_SIZE(iter_obj))) return 0;
+        *ppos = pos + 1;
+        next_item = PyTuple_GET_ITEM(iter_obj, pos);
+        Py_INCREF(next_item);
+    } else if (PyList_CheckExact(iter_obj)) {
+        Py_ssize_t pos = *ppos;
+        if (unlikely(pos >= PyList_GET_SIZE(iter_obj))) return 0;
+        *ppos = pos + 1;
+        next_item = PyList_GET_ITEM(iter_obj, pos);
+        Py_INCREF(next_item);
+    } else
+#endif
+    {
+        next_item = PyIter_Next(iter_obj);
+        if (unlikely(!next_item)) {
+            return __Pyx_IterFinish();
+        }
+    }
+    if (pitem) {
+        *pitem = next_item;
+    } else if (pkey && pvalue) {
+        if (__Pyx_unpack_tuple2(next_item, pkey, pvalue, source_is_dict, source_is_dict, 1))
+            return -1;
+    } else if (pkey) {
+        *pkey = next_item;
+    } else {
+        *pvalue = next_item;
+    }
+    return 1;
+}
+
+static CYTHON_INLINE int __Pyx_CheckKeywordStrings(
+    PyObject *kwdict,
+    const char* function_name,
+    int kw_allowed)
+{
+    PyObject* key = 0;
+    Py_ssize_t pos = 0;
+#if CPYTHON_COMPILING_IN_PYPY
+    if (!kw_allowed && PyDict_Next(kwdict, &pos, &key, 0))
+        goto invalid_keyword;
+    return 1;
+#else
+    while (PyDict_Next(kwdict, &pos, &key, 0)) {
+        #if PY_MAJOR_VERSION < 3
+        if (unlikely(!PyString_CheckExact(key)) && unlikely(!PyString_Check(key)))
+        #endif
+            if (unlikely(!PyUnicode_Check(key)))
+                goto invalid_keyword_type;
+    }
+    if ((!kw_allowed) && unlikely(key))
+        goto invalid_keyword;
+    return 1;
+invalid_keyword_type:
+    PyErr_Format(PyExc_TypeError,
+        "%s() keywords must be strings", function_name);
+    return 0;
+#endif
+invalid_keyword:
+    PyErr_Format(PyExc_TypeError,
+    #if PY_MAJOR_VERSION < 3
+        "%s() got an unexpected keyword argument '%s'",
+        function_name, PyString_AsString(key));
+    #else
+        "%s() got an unexpected keyword argument '%U'",
+        function_name, key);
+    #endif
+    return 0;
+}
+
+static void __Pyx_call_next_tp_dealloc(PyObject* obj, destructor current_tp_dealloc) {
+    PyTypeObject* type = Py_TYPE(obj);
+    while (type && type->tp_dealloc != current_tp_dealloc)
+        type = type->tp_base;
+    while (type && type->tp_dealloc == current_tp_dealloc)
+        type = type->tp_base;
+    if (type)
+        type->tp_dealloc(obj);
+}
+
+static int __Pyx_call_next_tp_traverse(PyObject* obj, visitproc v, void *a, traverseproc current_tp_traverse) {
+    PyTypeObject* type = Py_TYPE(obj);
+    while (type && type->tp_traverse != current_tp_traverse)
+        type = type->tp_base;
+    while (type && type->tp_traverse == current_tp_traverse)
+        type = type->tp_base;
+    if (type && type->tp_traverse)
+        return type->tp_traverse(obj, v, a);
+    return 0;
+}
+
+static void __Pyx_call_next_tp_clear(PyObject* obj, inquiry current_tp_clear) {
+    PyTypeObject* type = Py_TYPE(obj);
+    while (type && type->tp_clear != current_tp_clear)
+        type = type->tp_base;
+    while (type && type->tp_clear == current_tp_clear)
+        type = type->tp_base;
+    if (type && type->tp_clear)
+        type->tp_clear(obj);
+}
+
+static CYTHON_INLINE void __Pyx_ExceptionSave(PyObject **type, PyObject **value, PyObject **tb) {
+#if CYTHON_COMPILING_IN_CPYTHON
+    PyThreadState *tstate = PyThreadState_GET();
+    *type = tstate->exc_type;
+    *value = tstate->exc_value;
+    *tb = tstate->exc_traceback;
+    Py_XINCREF(*type);
+    Py_XINCREF(*value);
+    Py_XINCREF(*tb);
+#else
+    PyErr_GetExcInfo(type, value, tb);
+#endif
+}
+static void __Pyx_ExceptionReset(PyObject *type, PyObject *value, PyObject *tb) {
+#if CYTHON_COMPILING_IN_CPYTHON
+    PyObject *tmp_type, *tmp_value, *tmp_tb;
+    PyThreadState *tstate = PyThreadState_GET();
+    tmp_type = tstate->exc_type;
+    tmp_value = tstate->exc_value;
+    tmp_tb = tstate->exc_traceback;
+    tstate->exc_type = type;
+    tstate->exc_value = value;
+    tstate->exc_traceback = tb;
+    Py_XDECREF(tmp_type);
+    Py_XDECREF(tmp_value);
+    Py_XDECREF(tmp_tb);
+#else
+    PyErr_SetExcInfo(type, value, tb);
+#endif
+}
+
+static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) {
+    PyObject *empty_list = 0;
+    PyObject *module = 0;
+    PyObject *global_dict = 0;
+    PyObject *empty_dict = 0;
+    PyObject *list;
+    #if PY_VERSION_HEX < 0x03030000
+    PyObject *py_import = 0;
+    py_import = __Pyx_GetAttrString(__pyx_b, "__import__");
+    if (!py_import)
+        goto bad;
+    #endif
+    if (from_list)
+        list = from_list;
+    else {
+        empty_list = PyList_New(0);
+        if (!empty_list)
+            goto bad;
+        list = empty_list;
+    }
+    global_dict = PyModule_GetDict(__pyx_m);
+    if (!global_dict)
+        goto bad;
+    empty_dict = PyDict_New();
+    if (!empty_dict)
+        goto bad;
+    #if PY_VERSION_HEX >= 0x02050000
+    {
+        #if PY_MAJOR_VERSION >= 3
+        if (level == -1) {
+            if (strchr(__Pyx_MODULE_NAME, '.')) {
+                #if PY_VERSION_HEX < 0x03030000
+                PyObject *py_level = PyInt_FromLong(1);
+                if (!py_level)
+                    goto bad;
+                module = PyObject_CallFunctionObjArgs(py_import,
+                    name, global_dict, empty_dict, list, py_level, NULL);
+                Py_DECREF(py_level);
+                #else
+                module = PyImport_ImportModuleLevelObject(
+                    name, global_dict, empty_dict, list, 1);
+                #endif
+                if (!module) {
+                    if (!PyErr_ExceptionMatches(PyExc_ImportError))
+                        goto bad;
+                    PyErr_Clear();
+                }
+            }
+            level = 0; /* try absolute import on failure */
+        }
+        #endif
+        if (!module) {
+            #if PY_VERSION_HEX < 0x03030000
+            PyObject *py_level = PyInt_FromLong(level);
+            if (!py_level)
+                goto bad;
+            module = PyObject_CallFunctionObjArgs(py_import,
+                name, global_dict, empty_dict, list, py_level, NULL);
+            Py_DECREF(py_level);
+            #else
+            module = PyImport_ImportModuleLevelObject(
+                name, global_dict, empty_dict, list, level);
+            #endif
+        }
+    }
+    #else
+    if (level>0) {
+        PyErr_SetString(PyExc_RuntimeError, "Relative import is not supported for Python <=2.4.");
+        goto bad;
+    }
+    module = PyObject_CallFunctionObjArgs(py_import,
+        name, global_dict, empty_dict, list, NULL);
+    #endif
+bad:
+    #if PY_VERSION_HEX < 0x03030000
+    Py_XDECREF(py_import);
+    #endif
+    Py_XDECREF(empty_list);
+    Py_XDECREF(empty_dict);
+    return module;
+}
+
+static CYTHON_INLINE void __Pyx_RaiseImportError(PyObject *name) {
+#if PY_MAJOR_VERSION < 3
+    PyErr_Format(PyExc_ImportError, "cannot import name %.230s",
+                 PyString_AsString(name));
+#else
+    PyErr_Format(PyExc_ImportError, "cannot import name %S", name);
+#endif
+}
+
+static CYTHON_INLINE hid_t __Pyx_PyInt_from_py_hid_t(PyObject* x) {
+    const hid_t neg_one = (hid_t)-1, const_zero = (hid_t)0;
+    const int is_unsigned = const_zero < neg_one;
+    if (sizeof(hid_t) == sizeof(char)) {
+        if (is_unsigned)
+            return (hid_t)__Pyx_PyInt_AsUnsignedChar(x);
+        else
+            return (hid_t)__Pyx_PyInt_AsSignedChar(x);
+    } else if (sizeof(hid_t) == sizeof(short)) {
+        if (is_unsigned)
+            return (hid_t)__Pyx_PyInt_AsUnsignedShort(x);
+        else
+            return (hid_t)__Pyx_PyInt_AsSignedShort(x);
+    } else if (sizeof(hid_t) == sizeof(int)) {
+        if (is_unsigned)
+            return (hid_t)__Pyx_PyInt_AsUnsignedInt(x);
+        else
+            return (hid_t)__Pyx_PyInt_AsSignedInt(x);
+    } else if (sizeof(hid_t) == sizeof(long)) {
+        if (is_unsigned)
+            return (hid_t)__Pyx_PyInt_AsUnsignedLong(x);
+        else
+            return (hid_t)__Pyx_PyInt_AsSignedLong(x);
+    } else if (sizeof(hid_t) == sizeof(PY_LONG_LONG)) {
+        if (is_unsigned)
+            return (hid_t)__Pyx_PyInt_AsUnsignedLongLong(x);
+        else
+            return (hid_t)__Pyx_PyInt_AsSignedLongLong(x);
+    }  else {
+        #if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
+        PyErr_SetString(PyExc_RuntimeError,
+                        "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
+        #else
+        hid_t val;
+        PyObject *v = __Pyx_PyNumber_Int(x);
+        #if PY_VERSION_HEX < 0x03000000
+        if (likely(v) && !PyLong_Check(v)) {
+            PyObject *tmp = v;
+            v = PyNumber_Long(tmp);
+            Py_DECREF(tmp);
+        }
+        #endif
+        if (likely(v)) {
+            int one = 1; int is_little = (int)*(unsigned char *)&one;
+            unsigned char *bytes = (unsigned char *)&val;
+            int ret = _PyLong_AsByteArray((PyLongObject *)v,
+                                          bytes, sizeof(val),
+                                          is_little, !is_unsigned);
+            Py_DECREF(v);
+            if (likely(!ret))
+                return val;
+        }
+        #endif
+        return (hid_t)-1;
+    }
+}
+
+static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_hid_t(hid_t val) {
+    const hid_t neg_one = (hid_t)-1, const_zero = (hid_t)0;
+    const int is_unsigned = const_zero < neg_one;
+    if ((sizeof(hid_t) == sizeof(char))  ||
+        (sizeof(hid_t) == sizeof(short))) {
+        return PyInt_FromLong((long)val);
+    } else if ((sizeof(hid_t) == sizeof(int)) ||
+               (sizeof(hid_t) == sizeof(long))) {
+        if (is_unsigned)
+            return PyLong_FromUnsignedLong((unsigned long)val);
+        else
+            return PyInt_FromLong((long)val);
+    } else if (sizeof(hid_t) == sizeof(PY_LONG_LONG)) {
+        if (is_unsigned)
+            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG)val);
+        else
+            return PyLong_FromLongLong((PY_LONG_LONG)val);
+    } else {
+        int one = 1; int little = (int)*(unsigned char *)&one;
+        unsigned char *bytes = (unsigned char *)&val;
+        return _PyLong_FromByteArray(bytes, sizeof(hid_t),
+                                     little, !is_unsigned);
+    }
+}
+
+static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_hsize_t(hsize_t val) {
+    const hsize_t neg_one = (hsize_t)-1, const_zero = (hsize_t)0;
+    const int is_unsigned = const_zero < neg_one;
+    if ((sizeof(hsize_t) == sizeof(char))  ||
+        (sizeof(hsize_t) == sizeof(short))) {
+        return PyInt_FromLong((long)val);
+    } else if ((sizeof(hsize_t) == sizeof(int)) ||
+               (sizeof(hsize_t) == sizeof(long))) {
+        if (is_unsigned)
+            return PyLong_FromUnsignedLong((unsigned long)val);
+        else
+            return PyInt_FromLong((long)val);
+    } else if (sizeof(hsize_t) == sizeof(PY_LONG_LONG)) {
+        if (is_unsigned)
+            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG)val);
+        else
+            return PyLong_FromLongLong((PY_LONG_LONG)val);
+    } else {
+        int one = 1; int little = (int)*(unsigned char *)&one;
+        unsigned char *bytes = (unsigned char *)&val;
+        return _PyLong_FromByteArray(bytes, sizeof(hsize_t),
+                                     little, !is_unsigned);
+    }
+}
+
+static CYTHON_INLINE unsigned char __Pyx_PyInt_AsUnsignedChar(PyObject* x) {
+    const unsigned char neg_one = (unsigned char)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(unsigned char) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(unsigned char)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to unsigned char" :
+                    "value too large to convert to unsigned char");
+            }
+            return (unsigned char)-1;
+        }
+        return (unsigned char)val;
+    }
+    return (unsigned char)__Pyx_PyInt_AsUnsignedLong(x);
+}
+
+static CYTHON_INLINE unsigned short __Pyx_PyInt_AsUnsignedShort(PyObject* x) {
+    const unsigned short neg_one = (unsigned short)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(unsigned short) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(unsigned short)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to unsigned short" :
+                    "value too large to convert to unsigned short");
+            }
+            return (unsigned short)-1;
+        }
+        return (unsigned short)val;
+    }
+    return (unsigned short)__Pyx_PyInt_AsUnsignedLong(x);
+}
+
+static CYTHON_INLINE unsigned int __Pyx_PyInt_AsUnsignedInt(PyObject* x) {
+    const unsigned int neg_one = (unsigned int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(unsigned int) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(unsigned int)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to unsigned int" :
+                    "value too large to convert to unsigned int");
+            }
+            return (unsigned int)-1;
+        }
+        return (unsigned int)val;
+    }
+    return (unsigned int)__Pyx_PyInt_AsUnsignedLong(x);
+}
+
+static CYTHON_INLINE char __Pyx_PyInt_AsChar(PyObject* x) {
+    const char neg_one = (char)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(char) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(char)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to char" :
+                    "value too large to convert to char");
+            }
+            return (char)-1;
+        }
+        return (char)val;
+    }
+    return (char)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE short __Pyx_PyInt_AsShort(PyObject* x) {
+    const short neg_one = (short)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(short) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(short)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to short" :
+                    "value too large to convert to short");
+            }
+            return (short)-1;
+        }
+        return (short)val;
+    }
+    return (short)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE int __Pyx_PyInt_AsInt(PyObject* x) {
+    const int neg_one = (int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(int) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(int)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to int" :
+                    "value too large to convert to int");
+            }
+            return (int)-1;
+        }
+        return (int)val;
+    }
+    return (int)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE signed char __Pyx_PyInt_AsSignedChar(PyObject* x) {
+    const signed char neg_one = (signed char)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(signed char) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(signed char)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to signed char" :
+                    "value too large to convert to signed char");
+            }
+            return (signed char)-1;
+        }
+        return (signed char)val;
+    }
+    return (signed char)__Pyx_PyInt_AsSignedLong(x);
+}
+
+static CYTHON_INLINE signed short __Pyx_PyInt_AsSignedShort(PyObject* x) {
+    const signed short neg_one = (signed short)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(signed short) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(signed short)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to signed short" :
+                    "value too large to convert to signed short");
+            }
+            return (signed short)-1;
+        }
+        return (signed short)val;
+    }
+    return (signed short)__Pyx_PyInt_AsSignedLong(x);
+}
+
+static CYTHON_INLINE signed int __Pyx_PyInt_AsSignedInt(PyObject* x) {
+    const signed int neg_one = (signed int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(signed int) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(signed int)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to signed int" :
+                    "value too large to convert to signed int");
+            }
+            return (signed int)-1;
+        }
+        return (signed int)val;
+    }
+    return (signed int)__Pyx_PyInt_AsSignedLong(x);
+}
+
+static CYTHON_INLINE int __Pyx_PyInt_AsLongDouble(PyObject* x) {
+    const int neg_one = (int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(int) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(int)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to int" :
+                    "value too large to convert to int");
+            }
+            return (int)-1;
+        }
+        return (int)val;
+    }
+    return (int)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE unsigned long __Pyx_PyInt_AsUnsignedLong(PyObject* x) {
+    const unsigned long neg_one = (unsigned long)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to unsigned long");
+            return (unsigned long)-1;
+        }
+        return (unsigned long)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to unsigned long");
+                return (unsigned long)-1;
+            }
+            return (unsigned long)PyLong_AsUnsignedLong(x);
+        } else {
+            return (unsigned long)PyLong_AsLong(x);
+        }
+    } else {
+        unsigned long val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (unsigned long)-1;
+        val = __Pyx_PyInt_AsUnsignedLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE unsigned PY_LONG_LONG __Pyx_PyInt_AsUnsignedLongLong(PyObject* x) {
+    const unsigned PY_LONG_LONG neg_one = (unsigned PY_LONG_LONG)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to unsigned PY_LONG_LONG");
+            return (unsigned PY_LONG_LONG)-1;
+        }
+        return (unsigned PY_LONG_LONG)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to unsigned PY_LONG_LONG");
+                return (unsigned PY_LONG_LONG)-1;
+            }
+            return (unsigned PY_LONG_LONG)PyLong_AsUnsignedLongLong(x);
+        } else {
+            return (unsigned PY_LONG_LONG)PyLong_AsLongLong(x);
+        }
+    } else {
+        unsigned PY_LONG_LONG val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (unsigned PY_LONG_LONG)-1;
+        val = __Pyx_PyInt_AsUnsignedLongLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE long __Pyx_PyInt_AsLong(PyObject* x) {
+    const long neg_one = (long)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to long");
+            return (long)-1;
+        }
+        return (long)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to long");
+                return (long)-1;
+            }
+            return (long)PyLong_AsUnsignedLong(x);
+        } else {
+            return (long)PyLong_AsLong(x);
+        }
+    } else {
+        long val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (long)-1;
+        val = __Pyx_PyInt_AsLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE PY_LONG_LONG __Pyx_PyInt_AsLongLong(PyObject* x) {
+    const PY_LONG_LONG neg_one = (PY_LONG_LONG)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to PY_LONG_LONG");
+            return (PY_LONG_LONG)-1;
+        }
+        return (PY_LONG_LONG)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to PY_LONG_LONG");
+                return (PY_LONG_LONG)-1;
+            }
+            return (PY_LONG_LONG)PyLong_AsUnsignedLongLong(x);
+        } else {
+            return (PY_LONG_LONG)PyLong_AsLongLong(x);
+        }
+    } else {
+        PY_LONG_LONG val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (PY_LONG_LONG)-1;
+        val = __Pyx_PyInt_AsLongLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE signed long __Pyx_PyInt_AsSignedLong(PyObject* x) {
+    const signed long neg_one = (signed long)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to signed long");
+            return (signed long)-1;
+        }
+        return (signed long)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to signed long");
+                return (signed long)-1;
+            }
+            return (signed long)PyLong_AsUnsignedLong(x);
+        } else {
+            return (signed long)PyLong_AsLong(x);
+        }
+    } else {
+        signed long val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (signed long)-1;
+        val = __Pyx_PyInt_AsSignedLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE signed PY_LONG_LONG __Pyx_PyInt_AsSignedLongLong(PyObject* x) {
+    const signed PY_LONG_LONG neg_one = (signed PY_LONG_LONG)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to signed PY_LONG_LONG");
+            return (signed PY_LONG_LONG)-1;
+        }
+        return (signed PY_LONG_LONG)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to signed PY_LONG_LONG");
+                return (signed PY_LONG_LONG)-1;
+            }
+            return (signed PY_LONG_LONG)PyLong_AsUnsignedLongLong(x);
+        } else {
+            return (signed PY_LONG_LONG)PyLong_AsLongLong(x);
+        }
+    } else {
+        signed PY_LONG_LONG val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (signed PY_LONG_LONG)-1;
+        val = __Pyx_PyInt_AsSignedLongLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static int __Pyx_check_binary_version(void) {
+    char ctversion[4], rtversion[4];
+    PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION);
+    PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion());
+    if (ctversion[0] != rtversion[0] || ctversion[2] != rtversion[2]) {
+        char message[200];
+        PyOS_snprintf(message, sizeof(message),
+                      "compiletime version %s of module '%.100s' "
+                      "does not match runtime version %s",
+                      ctversion, __Pyx_MODULE_NAME, rtversion);
+        #if PY_VERSION_HEX < 0x02050000
+        return PyErr_Warn(NULL, message);
+        #else
+        return PyErr_WarnEx(NULL, message, 1);
+        #endif
+    }
+    return 0;
+}
+
+static int __Pyx_ExportFunction(const char *name, void (*f)(void), const char *sig) {
+    PyObject *d = 0;
+    PyObject *cobj = 0;
+    union {
+        void (*fp)(void);
+        void *p;
+    } tmp;
+    d = PyObject_GetAttrString(__pyx_m, (char *)"__pyx_capi__");
+    if (!d) {
+        PyErr_Clear();
+        d = PyDict_New();
+        if (!d)
+            goto bad;
+        Py_INCREF(d);
+        if (PyModule_AddObject(__pyx_m, (char *)"__pyx_capi__", d) < 0)
+            goto bad;
+    }
+    tmp.fp = f;
+#if PY_VERSION_HEX >= 0x02070000 && !(PY_MAJOR_VERSION==3&&PY_MINOR_VERSION==0)
+    cobj = PyCapsule_New(tmp.p, sig, 0);
+#else
+    cobj = PyCObject_FromVoidPtrAndDesc(tmp.p, (void *)sig, 0);
+#endif
+    if (!cobj)
+        goto bad;
+    if (PyDict_SetItemString(d, name, cobj) < 0)
+        goto bad;
+    Py_DECREF(cobj);
+    Py_DECREF(d);
+    return 0;
+bad:
+    Py_XDECREF(cobj);
+    Py_XDECREF(d);
+    return -1;
+}
+
+#ifndef __PYX_HAVE_RT_ImportModule
+#define __PYX_HAVE_RT_ImportModule
+static PyObject *__Pyx_ImportModule(const char *name) {
+    PyObject *py_name = 0;
+    PyObject *py_module = 0;
+    py_name = __Pyx_PyIdentifier_FromString(name);
+    if (!py_name)
+        goto bad;
+    py_module = PyImport_Import(py_name);
+    Py_DECREF(py_name);
+    return py_module;
+bad:
+    Py_XDECREF(py_name);
+    return 0;
+}
+#endif
+
+#ifndef __PYX_HAVE_RT_ImportType
+#define __PYX_HAVE_RT_ImportType
+static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name,
+    size_t size, int strict)
+{
+    PyObject *py_module = 0;
+    PyObject *result = 0;
+    PyObject *py_name = 0;
+    char warning[200];
+    Py_ssize_t basicsize;
+#ifdef Py_LIMITED_API
+    PyObject *py_basicsize;
+#endif
+    py_module = __Pyx_ImportModule(module_name);
+    if (!py_module)
+        goto bad;
+    py_name = __Pyx_PyIdentifier_FromString(class_name);
+    if (!py_name)
+        goto bad;
+    result = PyObject_GetAttr(py_module, py_name);
+    Py_DECREF(py_name);
+    py_name = 0;
+    Py_DECREF(py_module);
+    py_module = 0;
+    if (!result)
+        goto bad;
+    if (!PyType_Check(result)) {
+        PyErr_Format(PyExc_TypeError,
+            "%s.%s is not a type object",
+            module_name, class_name);
+        goto bad;
+    }
+#ifndef Py_LIMITED_API
+    basicsize = ((PyTypeObject *)result)->tp_basicsize;
+#else
+    py_basicsize = PyObject_GetAttrString(result, "__basicsize__");
+    if (!py_basicsize)
+        goto bad;
+    basicsize = PyLong_AsSsize_t(py_basicsize);
+    Py_DECREF(py_basicsize);
+    py_basicsize = 0;
+    if (basicsize == (Py_ssize_t)-1 && PyErr_Occurred())
+        goto bad;
+#endif
+    if (!strict && (size_t)basicsize > size) {
+        PyOS_snprintf(warning, sizeof(warning),
+            "%s.%s size changed, may indicate binary incompatibility",
+            module_name, class_name);
+        #if PY_VERSION_HEX < 0x02050000
+        if (PyErr_Warn(NULL, warning) < 0) goto bad;
+        #else
+        if (PyErr_WarnEx(NULL, warning, 0) < 0) goto bad;
+        #endif
+    }
+    else if ((size_t)basicsize != size) {
+        PyErr_Format(PyExc_ValueError,
+            "%s.%s has the wrong size, try recompiling",
+            module_name, class_name);
+        goto bad;
+    }
+    return (PyTypeObject *)result;
+bad:
+    Py_XDECREF(py_module);
+    Py_XDECREF(result);
+    return NULL;
+}
+#endif
+
+static int __Pyx_SetVtable(PyObject *dict, void *vtable) {
+#if PY_VERSION_HEX >= 0x02070000 && !(PY_MAJOR_VERSION==3&&PY_MINOR_VERSION==0)
+    PyObject *ob = PyCapsule_New(vtable, 0, 0);
+#else
+    PyObject *ob = PyCObject_FromVoidPtr(vtable, 0);
+#endif
+    if (!ob)
+        goto bad;
+    if (PyDict_SetItemString(dict, "__pyx_vtable__", ob) < 0)
+        goto bad;
+    Py_DECREF(ob);
+    return 0;
+bad:
+    Py_XDECREF(ob);
+    return -1;
+}
+
+#ifndef __PYX_HAVE_RT_ImportFunction
+#define __PYX_HAVE_RT_ImportFunction
+static int __Pyx_ImportFunction(PyObject *module, const char *funcname, void (**f)(void), const char *sig) {
+    PyObject *d = 0;
+    PyObject *cobj = 0;
+    union {
+        void (*fp)(void);
+        void *p;
+    } tmp;
+    d = PyObject_GetAttrString(module, (char *)"__pyx_capi__");
+    if (!d)
+        goto bad;
+    cobj = PyDict_GetItemString(d, funcname);
+    if (!cobj) {
+        PyErr_Format(PyExc_ImportError,
+            "%s does not export expected C function %s",
+                PyModule_GetName(module), funcname);
+        goto bad;
+    }
+#if PY_VERSION_HEX >= 0x02070000 && !(PY_MAJOR_VERSION==3 && PY_MINOR_VERSION==0)
+    if (!PyCapsule_IsValid(cobj, sig)) {
+        PyErr_Format(PyExc_TypeError,
+            "C function %s.%s has wrong signature (expected %s, got %s)",
+             PyModule_GetName(module), funcname, sig, PyCapsule_GetName(cobj));
+        goto bad;
+    }
+    tmp.p = PyCapsule_GetPointer(cobj, sig);
+#else
+    {const char *desc, *s1, *s2;
+    desc = (const char *)PyCObject_GetDesc(cobj);
+    if (!desc)
+        goto bad;
+    s1 = desc; s2 = sig;
+    while (*s1 != '\0' && *s1 == *s2) { s1++; s2++; }
+    if (*s1 != *s2) {
+        PyErr_Format(PyExc_TypeError,
+            "C function %s.%s has wrong signature (expected %s, got %s)",
+             PyModule_GetName(module), funcname, sig, desc);
+        goto bad;
+    }
+    tmp.p = PyCObject_AsVoidPtr(cobj);}
+#endif
+    *f = tmp.fp;
+    if (!(*f))
+        goto bad;
+    Py_DECREF(d);
+    return 0;
+bad:
+    Py_XDECREF(d);
+    return -1;
+}
+#endif
+
+static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) {
+    int start = 0, mid = 0, end = count - 1;
+    if (end >= 0 && code_line > entries[end].code_line) {
+        return count;
+    }
+    while (start < end) {
+        mid = (start + end) / 2;
+        if (code_line < entries[mid].code_line) {
+            end = mid;
+        } else if (code_line > entries[mid].code_line) {
+             start = mid + 1;
+        } else {
+            return mid;
+        }
+    }
+    if (code_line <= entries[mid].code_line) {
+        return mid;
+    } else {
+        return mid + 1;
+    }
+}
+static PyCodeObject *__pyx_find_code_object(int code_line) {
+    PyCodeObject* code_object;
+    int pos;
+    if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) {
+        return NULL;
+    }
+    pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
+    if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) {
+        return NULL;
+    }
+    code_object = __pyx_code_cache.entries[pos].code_object;
+    Py_INCREF(code_object);
+    return code_object;
+}
+static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) {
+    int pos, i;
+    __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries;
+    if (unlikely(!code_line)) {
+        return;
+    }
+    if (unlikely(!entries)) {
+        entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry));
+        if (likely(entries)) {
+            __pyx_code_cache.entries = entries;
+            __pyx_code_cache.max_count = 64;
+            __pyx_code_cache.count = 1;
+            entries[0].code_line = code_line;
+            entries[0].code_object = code_object;
+            Py_INCREF(code_object);
+        }
+        return;
+    }
+    pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
+    if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) {
+        PyCodeObject* tmp = entries[pos].code_object;
+        entries[pos].code_object = code_object;
+        Py_DECREF(tmp);
+        return;
+    }
+    if (__pyx_code_cache.count == __pyx_code_cache.max_count) {
+        int new_max = __pyx_code_cache.max_count + 64;
+        entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc(
+            __pyx_code_cache.entries, new_max*sizeof(__Pyx_CodeObjectCacheEntry));
+        if (unlikely(!entries)) {
+            return;
+        }
+        __pyx_code_cache.entries = entries;
+        __pyx_code_cache.max_count = new_max;
+    }
+    for (i=__pyx_code_cache.count; i>pos; i--) {
+        entries[i] = entries[i-1];
+    }
+    entries[pos].code_line = code_line;
+    entries[pos].code_object = code_object;
+    __pyx_code_cache.count++;
+    Py_INCREF(code_object);
+}
+
+#include "compile.h"
+#include "frameobject.h"
+#include "traceback.h"
+static PyCodeObject* __Pyx_CreateCodeObjectForTraceback(
+            const char *funcname, int c_line,
+            int py_line, const char *filename) {
+    PyCodeObject *py_code = 0;
+    PyObject *py_srcfile = 0;
+    PyObject *py_funcname = 0;
+    #if PY_MAJOR_VERSION < 3
+    py_srcfile = PyString_FromString(filename);
+    #else
+    py_srcfile = PyUnicode_FromString(filename);
+    #endif
+    if (!py_srcfile) goto bad;
+    if (c_line) {
+        #if PY_MAJOR_VERSION < 3
+        py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
+        #else
+        py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
+        #endif
+    }
+    else {
+        #if PY_MAJOR_VERSION < 3
+        py_funcname = PyString_FromString(funcname);
+        #else
+        py_funcname = PyUnicode_FromString(funcname);
+        #endif
+    }
+    if (!py_funcname) goto bad;
+    py_code = __Pyx_PyCode_New(
+        0,            /*int argcount,*/
+        0,            /*int kwonlyargcount,*/
+        0,            /*int nlocals,*/
+        0,            /*int stacksize,*/
+        0,            /*int flags,*/
+        __pyx_empty_bytes, /*PyObject *code,*/
+        __pyx_empty_tuple, /*PyObject *consts,*/
+        __pyx_empty_tuple, /*PyObject *names,*/
+        __pyx_empty_tuple, /*PyObject *varnames,*/
+        __pyx_empty_tuple, /*PyObject *freevars,*/
+        __pyx_empty_tuple, /*PyObject *cellvars,*/
+        py_srcfile,   /*PyObject *filename,*/
+        py_funcname,  /*PyObject *name,*/
+        py_line,      /*int firstlineno,*/
+        __pyx_empty_bytes  /*PyObject *lnotab*/
+    );
+    Py_DECREF(py_srcfile);
+    Py_DECREF(py_funcname);
+    return py_code;
+bad:
+    Py_XDECREF(py_srcfile);
+    Py_XDECREF(py_funcname);
+    return NULL;
+}
+static void __Pyx_AddTraceback(const char *funcname, int c_line,
+                               int py_line, const char *filename) {
+    PyCodeObject *py_code = 0;
+    PyObject *py_globals = 0;
+    PyFrameObject *py_frame = 0;
+    py_code = __pyx_find_code_object(c_line ? c_line : py_line);
+    if (!py_code) {
+        py_code = __Pyx_CreateCodeObjectForTraceback(
+            funcname, c_line, py_line, filename);
+        if (!py_code) goto bad;
+        __pyx_insert_code_object(c_line ? c_line : py_line, py_code);
+    }
+    py_globals = PyModule_GetDict(__pyx_m);
+    if (!py_globals) goto bad;
+    py_frame = PyFrame_New(
+        PyThreadState_GET(), /*PyThreadState *tstate,*/
+        py_code,             /*PyCodeObject *code,*/
+        py_globals,          /*PyObject *globals,*/
+        0                    /*PyObject *locals*/
+    );
+    if (!py_frame) goto bad;
+    py_frame->f_lineno = py_line;
+    PyTraceBack_Here(py_frame);
+bad:
+    Py_XDECREF(py_code);
+    Py_XDECREF(py_frame);
+}
+
+static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
+    while (t->p) {
+        #if PY_MAJOR_VERSION < 3
+        if (t->is_unicode) {
+            *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL);
+        } else if (t->intern) {
+            *t->p = PyString_InternFromString(t->s);
+        } else {
+            *t->p = PyString_FromStringAndSize(t->s, t->n - 1);
+        }
+        #else  /* Python 3+ has unicode identifiers */
+        if (t->is_unicode | t->is_str) {
+            if (t->intern) {
+                *t->p = PyUnicode_InternFromString(t->s);
+            } else if (t->encoding) {
+                *t->p = PyUnicode_Decode(t->s, t->n - 1, t->encoding, NULL);
+            } else {
+                *t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1);
+            }
+        } else {
+            *t->p = PyBytes_FromStringAndSize(t->s, t->n - 1);
+        }
+        #endif
+        if (!*t->p)
+            return -1;
+        ++t;
+    }
+    return 0;
+}
+
+static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) {
+   int is_true = x == Py_True;
+   if (is_true | (x == Py_False) | (x == Py_None)) return is_true;
+   else return PyObject_IsTrue(x);
+}
+static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x) {
+  PyNumberMethods *m;
+  const char *name = NULL;
+  PyObject *res = NULL;
+#if PY_VERSION_HEX < 0x03000000
+  if (PyInt_Check(x) || PyLong_Check(x))
+#else
+  if (PyLong_Check(x))
+#endif
+    return Py_INCREF(x), x;
+  m = Py_TYPE(x)->tp_as_number;
+#if PY_VERSION_HEX < 0x03000000
+  if (m && m->nb_int) {
+    name = "int";
+    res = PyNumber_Int(x);
+  }
+  else if (m && m->nb_long) {
+    name = "long";
+    res = PyNumber_Long(x);
+  }
+#else
+  if (m && m->nb_int) {
+    name = "int";
+    res = PyNumber_Long(x);
+  }
+#endif
+  if (res) {
+#if PY_VERSION_HEX < 0x03000000
+    if (!PyInt_Check(res) && !PyLong_Check(res)) {
+#else
+    if (!PyLong_Check(res)) {
+#endif
+      PyErr_Format(PyExc_TypeError,
+                   "__%s__ returned non-%s (type %.200s)",
+                   name, name, Py_TYPE(res)->tp_name);
+      Py_DECREF(res);
+      return NULL;
+    }
+  }
+  else if (!PyErr_Occurred()) {
+    PyErr_SetString(PyExc_TypeError,
+                    "an integer is required");
+  }
+  return res;
+}
+static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
+  Py_ssize_t ival;
+  PyObject* x = PyNumber_Index(b);
+  if (!x) return -1;
+  ival = PyInt_AsSsize_t(x);
+  Py_DECREF(x);
+  return ival;
+}
+static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) {
+#if PY_VERSION_HEX < 0x02050000
+   if (ival <= LONG_MAX)
+       return PyInt_FromLong((long)ival);
+   else {
+       unsigned char *bytes = (unsigned char *) &ival;
+       int one = 1; int little = (int)*(unsigned char*)&one;
+       return _PyLong_FromByteArray(bytes, sizeof(size_t), little, 0);
+   }
+#else
+   return PyInt_FromSize_t(ival);
+#endif
+}
+static CYTHON_INLINE size_t __Pyx_PyInt_AsSize_t(PyObject* x) {
+   unsigned PY_LONG_LONG val = __Pyx_PyInt_AsUnsignedLongLong(x);
+   if (unlikely(val == (unsigned PY_LONG_LONG)-1 && PyErr_Occurred())) {
+       return (size_t)-1;
+   } else if (unlikely(val != (unsigned PY_LONG_LONG)(size_t)val)) {
+       PyErr_SetString(PyExc_OverflowError,
+                       "value too large to convert to size_t");
+       return (size_t)-1;
+   }
+   return (size_t)val;
+}
+
+
+#endif /* Py_PYTHON_H */
diff --git a/h5py/h5t.pxd b/h5py/h5t.pxd
new file mode 100644
index 0000000..480f6bd
--- /dev/null
+++ b/h5py/h5t.pxd
@@ -0,0 +1,79 @@
+# This file is part of h5py, a Python interface to the HDF5 library.
+#
+# http://www.h5py.org
+#
+# Copyright 2008-2013 Andrew Collette and contributors
+#
+# License:  Standard 3-clause BSD; see "license.txt" for full license terms
+#           and contributor agreement.
+
+from defs cimport *
+
+from _objects cimport class ObjectID
+
+cdef class TypeID(ObjectID):
+
+    cdef object py_dtype(self)
+
+# --- Top-level classes ---
+
+cdef class TypeArrayID(TypeID):
+    pass
+
+cdef class TypeOpaqueID(TypeID):
+    pass
+
+cdef class TypeStringID(TypeID):
+    # Both vlen and fixed-len strings
+    pass
+
+cdef class TypeVlenID(TypeID):
+    # Non-string vlens
+    pass
+
+cdef class TypeTimeID(TypeID):
+    pass
+
+cdef class TypeBitfieldID(TypeID):
+    pass
+
+cdef class TypeReferenceID(TypeID):
+    pass
+
+# --- Numeric atomic types ---
+
+cdef class TypeAtomicID(TypeID):
+    pass
+
+cdef class TypeIntegerID(TypeAtomicID):
+    pass
+
+cdef class TypeFloatID(TypeAtomicID):
+    pass
+
+# --- Enums & compound types ---
+
+cdef class TypeCompositeID(TypeID):
+    pass
+
+cdef class TypeEnumID(TypeCompositeID):
+
+    cdef int enum_convert(self, long long *buf, int reverse) except -1
+
+cdef class TypeCompoundID(TypeCompositeID):
+    pass
+
+# === C API for other modules =================================================
+
+cpdef TypeID typewrap(hid_t id_)
+cpdef TypeID py_create(object dtype, bint logical=*)
+
+
+
+
+
+
+
+
+
+
diff --git a/h5py/h5t.pyx b/h5py/h5t.pyx
new file mode 100644
index 0000000..e570717
--- /dev/null
+++ b/h5py/h5t.pyx
@@ -0,0 +1,1629 @@
+# This file is part of h5py, a Python interface to the HDF5 library.
+#
+# http://www.h5py.org
+#
+# Copyright 2008-2013 Andrew Collette and contributors
+#
+# License:  Standard 3-clause BSD; see "license.txt" for full license terms
+#           and contributor agreement.
+
+"""
+    HDF5 "H5T" data-type API
+
+    This module contains the datatype identifier class TypeID, and its
+    subclasses which represent things like integer/float/compound identifiers.
+    The majority of the H5T API is presented as methods on these identifiers.
+"""
+
+# Pyrex compile-time imports
+from _objects cimport pdefault
+
+from numpy cimport dtype, ndarray
+from h5r cimport Reference, RegionReference
+
+from utils cimport  emalloc, efree, \
+                    require_tuple, convert_dims, convert_tuple
+from h5py import _conv
+
+# Runtime imports
+import sys
+from h5 import get_config
+import numpy as np
+
+cfg = get_config()
+
+PY3 = sys.version_info[0] == 3
+
+# === Custom C API ============================================================
+
+cpdef TypeID typewrap(hid_t id_):
+
+    cdef H5T_class_t cls
+    cls = H5Tget_class(id_)
+
+    if cls == H5T_INTEGER:
+        pcls = TypeIntegerID
+    elif cls == H5T_FLOAT:
+        pcls = TypeFloatID
+    elif cls == H5T_TIME:
+        pcls = TypeTimeID
+    elif cls == H5T_STRING:
+        pcls = TypeStringID
+    elif cls == H5T_BITFIELD:
+        pcls = TypeBitfieldID
+    elif cls == H5T_OPAQUE:
+        pcls = TypeOpaqueID
+    elif cls == H5T_COMPOUND:
+        pcls = TypeCompoundID
+    elif cls == H5T_REFERENCE:
+        pcls = TypeReferenceID
+    elif cls == H5T_ENUM:
+        pcls = TypeEnumID
+    elif cls == H5T_VLEN:
+        pcls = TypeVlenID
+    elif cls == H5T_ARRAY:
+        pcls = TypeArrayID
+    else:
+        pcls = TypeID
+
+    return pcls(id_)
+
+cdef object lockid(hid_t id_in):
+    cdef TypeID tid
+    tid = typewrap(id_in)
+    tid.locked = 1
+    return tid
+
+# === Public constants and data structures ====================================
+
+
+# Enumeration H5T_class_t
+NO_CLASS  = H5T_NO_CLASS
+INTEGER   = H5T_INTEGER
+FLOAT     = H5T_FLOAT
+TIME      = H5T_TIME
+STRING    = H5T_STRING
+BITFIELD  = H5T_BITFIELD
+OPAQUE    = H5T_OPAQUE
+COMPOUND  = H5T_COMPOUND
+REFERENCE = H5T_REFERENCE
+ENUM      = H5T_ENUM
+VLEN      = H5T_VLEN
+ARRAY     = H5T_ARRAY
+
+# Enumeration H5T_sign_t
+SGN_NONE   = H5T_SGN_NONE
+SGN_2      = H5T_SGN_2
+
+# Enumeration H5T_order_t
+ORDER_LE    = H5T_ORDER_LE
+ORDER_BE    = H5T_ORDER_BE
+ORDER_VAX   = H5T_ORDER_VAX
+ORDER_NONE  = H5T_ORDER_NONE
+
+DIR_DEFAULT = H5T_DIR_DEFAULT
+DIR_ASCEND  = H5T_DIR_ASCEND
+DIR_DESCEND = H5T_DIR_DESCEND
+
+# Enumeration H5T_str_t
+STR_NULLTERM = H5T_STR_NULLTERM
+STR_NULLPAD  = H5T_STR_NULLPAD
+STR_SPACEPAD = H5T_STR_SPACEPAD
+
+# Enumeration H5T_norm_t
+NORM_IMPLIED = H5T_NORM_IMPLIED
+NORM_MSBSET = H5T_NORM_MSBSET
+NORM_NONE = H5T_NORM_NONE
+
+# Enumeration H5T_cset_t:
+CSET_ASCII = H5T_CSET_ASCII
+
+# Enumeration H5T_pad_t:
+PAD_ZERO = H5T_PAD_ZERO
+PAD_ONE = H5T_PAD_ONE
+PAD_BACKGROUND = H5T_PAD_BACKGROUND
+
+if sys.byteorder == "little":    # Custom python addition
+    ORDER_NATIVE = H5T_ORDER_LE
+else:
+    ORDER_NATIVE = H5T_ORDER_BE
+
+# For conversion
+BKG_NO = H5T_BKG_NO
+BKG_TEMP = H5T_BKG_TEMP
+BKG_YES = H5T_BKG_YES
+
+# --- Built-in HDF5 datatypes -------------------------------------------------
+
+# IEEE floating-point
+IEEE_F32LE = lockid(H5T_IEEE_F32LE)
+IEEE_F32BE = lockid(H5T_IEEE_F32BE)
+IEEE_F64LE = lockid(H5T_IEEE_F64LE)
+IEEE_F64BE = lockid(H5T_IEEE_F64BE)
+
+# Signed 2's complement integer types
+STD_I8LE  = lockid(H5T_STD_I8LE)
+STD_I16LE = lockid(H5T_STD_I16LE)
+STD_I32LE = lockid(H5T_STD_I32LE)
+STD_I64LE = lockid(H5T_STD_I64LE)
+
+STD_I8BE  = lockid(H5T_STD_I8BE)
+STD_I16BE = lockid(H5T_STD_I16BE)
+STD_I32BE = lockid(H5T_STD_I32BE)
+STD_I64BE = lockid(H5T_STD_I64BE)
+
+# Unsigned integers
+STD_U8LE  = lockid(H5T_STD_U8LE)
+STD_U16LE = lockid(H5T_STD_U16LE)
+STD_U32LE = lockid(H5T_STD_U32LE)
+STD_U64LE = lockid(H5T_STD_U64LE)
+
+STD_U8BE  = lockid(H5T_STD_U8BE)
+STD_U16BE = lockid(H5T_STD_U16BE)
+STD_U32BE = lockid(H5T_STD_U32BE)
+STD_U64BE = lockid(H5T_STD_U64BE)
+
+# Native types by bytesize
+NATIVE_INT8 = lockid(H5T_NATIVE_INT8)
+NATIVE_UINT8 = lockid(H5T_NATIVE_UINT8)
+NATIVE_INT16 = lockid(H5T_NATIVE_INT16)
+NATIVE_UINT16 = lockid(H5T_NATIVE_UINT16)
+NATIVE_INT32 = lockid(H5T_NATIVE_INT32)
+NATIVE_UINT32 = lockid(H5T_NATIVE_UINT32)
+NATIVE_INT64 = lockid(H5T_NATIVE_INT64)
+NATIVE_UINT64 = lockid(H5T_NATIVE_UINT64)
+NATIVE_FLOAT = lockid(H5T_NATIVE_FLOAT)
+NATIVE_DOUBLE = lockid(H5T_NATIVE_DOUBLE)
+
+# Unix time types
+UNIX_D32LE = lockid(H5T_UNIX_D32LE)
+UNIX_D64LE = lockid(H5T_UNIX_D64LE)
+UNIX_D32BE = lockid(H5T_UNIX_D32BE)
+UNIX_D64BE = lockid(H5T_UNIX_D64BE)
+
+# Reference types
+STD_REF_OBJ = lockid(H5T_STD_REF_OBJ)
+STD_REF_DSETREG = lockid(H5T_STD_REF_DSETREG)
+
+# Null terminated (C) and Fortran string types
+C_S1 = lockid(H5T_C_S1)
+FORTRAN_S1 = lockid(H5T_FORTRAN_S1)
+VARIABLE = H5T_VARIABLE
+
+# Character sets
+CSET_ASCII = H5T_CSET_ASCII
+CSET_UTF8 = H5T_CSET_UTF8
+
+# Custom Python object pointer type
+PYTHON_OBJECT = lockid(_conv.get_python_obj())
+
+# Mini floats
+IEEE_F16BE = IEEE_F32BE.copy()
+IEEE_F16BE.set_fields(15, 10, 5, 0, 10)
+IEEE_F16BE.set_size(2)
+IEEE_F16BE.set_ebias(15)
+IEEE_F16BE.lock()
+
+IEEE_F16LE = IEEE_F16BE.copy()
+IEEE_F16LE.set_order(H5T_ORDER_LE)
+IEEE_F16LE.lock()
+
+# Translation tables for HDF5 -> NumPy dtype conversion
+cdef dict _order_map = { H5T_ORDER_NONE: '|', H5T_ORDER_LE: '<', H5T_ORDER_BE: '>'}
+cdef dict _sign_map  = { H5T_SGN_NONE: 'u', H5T_SGN_2: 'i' }
+
+
+# === General datatype operations =============================================
+
+
+def create(int classtype, size_t size):
+    """(INT classtype, UINT size) => TypeID
+        
+    Create a new HDF5 type object.  Legal class values are 
+    COMPOUND and OPAQUE.  Use enum_create for enums.
+    """
+
+    # HDF5 versions 1.6.X segfault with anything else
+    if classtype != H5T_COMPOUND and classtype != H5T_OPAQUE:
+        raise ValueError("Class must be COMPOUND or OPAQUE.")
+
+    return typewrap(H5Tcreate(<H5T_class_t>classtype, size))
+
+
+def open(ObjectID group not None, char* name):
+    """(ObjectID group, STRING name) => TypeID
+
+    Open a named datatype from a file.
+    """
+    return typewrap(H5Topen(group.id, name))
+
+
+def array_create(TypeID base not None, object dims_tpl):
+    """(TypeID base, TUPLE dimensions) => TypeArrayID
+
+    Create a new array datatype, using and HDF5 parent type and
+    dimensions given via a tuple of positive integers.  "Unlimited" 
+    dimensions are not allowed.
+    """
+    cdef hsize_t rank
+    cdef hsize_t *dims = NULL
+
+    require_tuple(dims_tpl, 0, -1, "dims_tpl")
+    rank = len(dims_tpl)
+    dims = <hsize_t*>emalloc(sizeof(hsize_t)*rank)
+
+    try:
+        convert_tuple(dims_tpl, dims, rank)
+        return TypeArrayID(H5Tarray_create(base.id, rank, dims, NULL))
+    finally:
+        efree(dims)
+
+
+def enum_create(TypeID base not None):
+    """(TypeID base) => TypeID
+
+    Create a new enumerated type based on an (integer) parent type.
+    """
+    return typewrap(H5Tenum_create(base.id))
+
+
+def vlen_create(TypeID base not None):
+    """(TypeID base) => TypeID
+
+    Create a new variable-length datatype, using any HDF5 type as a base.
+
+    Although the Python interface can manipulate these types, there is no
+    provision for reading/writing vlen data.
+    """
+    return typewrap(H5Tvlen_create(base.id))
+
+    
+def decode(char* buf):
+    """(STRING buf) => TypeID
+
+    Unserialize an HDF5 type.  You can also do this with the native
+    Python pickling machinery.
+    """
+    return typewrap(H5Tdecode(<unsigned char*>buf))
+
+# === Base type class =========================================================
+
+cdef class TypeID(ObjectID):
+
+    """
+        Base class for type identifiers (implements common operations)
+
+        * Hashable: If committed; in HDF5 1.8.X, also if locked
+        * Equality: Logical H5T comparison
+    """
+
+    def __hash__(self):
+        if self._hash is None:
+            try:
+                # Try to use object header first
+                return ObjectID.__hash__(self)
+            except TypeError:
+                # It's a transient type object
+                if self.locked:
+                    self._hash = hash(self.encode())
+                else:
+                    raise TypeError("Only locked or committed types can be hashed")
+
+        return self._hash
+
+    def __richcmp__(self, object other, int how):
+        cdef bint truthval = 0
+        if how != 2 and how != 3:
+            return NotImplemented
+        if isinstance(other, TypeID):
+            truthval = self.equal(other)
+        
+        if how == 2:
+            return truthval
+        return not truthval
+
+    def __copy__(self):
+        cdef TypeID cpy
+        cpy = ObjectID.__copy__(self)
+        return cpy
+
+    property dtype:
+        """ A Numpy-style dtype object representing this object.
+        """
+        def __get__(self):
+            return self.py_dtype()
+
+    cdef object py_dtype(self):
+        raise TypeError("No NumPy equivalent for %s exists" % self.__class__.__name__)
+
+
+    def commit(self, ObjectID group not None, char* name, ObjectID lcpl=None):
+        """(ObjectID group, STRING name, PropID lcpl=None)
+
+        Commit this (transient) datatype to a named datatype in a file.
+        If present, lcpl may be a link creation property list.
+        """
+        H5Tcommit2(group.id, name, self.id, pdefault(lcpl),
+            H5P_DEFAULT, H5P_DEFAULT)
+    
+    def committed(self):
+        """() => BOOL is_comitted
+
+        Determine if a given type object is named (T) or transient (F).
+        """
+        return <bint>(H5Tcommitted(self.id))
+
+    
+    def copy(self):
+        """() => TypeID
+
+        Create a copy of this type object.
+        """
+        return typewrap(H5Tcopy(self.id))
+
+    
+    def equal(self, TypeID typeid):
+        """(TypeID typeid) => BOOL
+
+        Logical comparison between datatypes.  Also called by
+        Python's "==" operator.
+        """
+        return <bint>(H5Tequal(self.id, typeid.id))
+
+    
+    def lock(self):
+        """()
+
+        Lock this datatype, which makes it immutable and indestructible.
+        Once locked, it can't be unlocked.
+        """
+        H5Tlock(self.id)
+        self.locked = 1
+
+    
+    def get_class(self):
+        """() => INT classcode
+
+        Determine the datatype's class code.
+        """
+        return <int>H5Tget_class(self.id)
+
+    
+    def set_size(self, size_t size):
+        """(UINT size)
+
+        Set the total size of the datatype, in bytes.
+        """
+        H5Tset_size(self.id, size)
+
+    
+    def get_size(self):
+        """ () => INT size
+
+            Determine the total size of a datatype, in bytes.
+        """
+        return H5Tget_size(self.id)
+
+    
+    def get_super(self):
+        """() => TypeID
+
+        Determine the parent type of an array, enumeration or vlen datatype.
+        """
+        return typewrap(H5Tget_super(self.id))
+
+    
+    def detect_class(self, int classtype):
+        """(INT classtype) => BOOL class_is_present
+
+        Determine if a member of the given class exists in a compound
+        datatype.  The search is recursive.
+        """
+        return <bint>(H5Tdetect_class(self.id, <H5T_class_t>classtype))
+
+    
+    def _close(self):
+        """()
+
+        Close this datatype.  If it's locked, nothing happens.
+
+        You shouldn't ordinarily need to call this function; datatype
+        objects are automatically closed when they're deallocated.
+        """
+        if not self.locked:
+            H5Tclose(self.id)
+
+
+    def encode(self):
+        """() => STRING
+
+        Serialize an HDF5 type.  Bear in mind you can also use the
+        native Python pickle/unpickle machinery to do this.  The
+        returned string may contain binary values, including NULLs.
+        """
+        cdef size_t nalloc = 0
+        cdef char* buf = NULL
+
+        H5Tencode(self.id, NULL, &nalloc)
+        buf = <char*>emalloc(sizeof(char)*nalloc)
+        try:
+            H5Tencode(self.id, <unsigned char*>buf, &nalloc)
+            pystr = PyBytes_FromStringAndSize(buf, nalloc)
+        finally:
+            efree(buf)
+
+        return pystr
+
+
+    def __reduce__(self):
+        return (type(self), (-1,), self.encode())
+
+    
+    def __setstate__(self, char* state):
+        self.id = H5Tdecode(<unsigned char*>state)
+
+
+# === Top-level classes (inherit directly from TypeID) ========================
+
+cdef class TypeArrayID(TypeID):
+
+    """
+        Represents an array datatype
+    """
+
+    
+    def get_array_ndims(self):
+        """() => INT rank
+
+        Get the rank of the given array datatype.
+        """
+        return H5Tget_array_ndims(self.id)
+
+    
+    def get_array_dims(self):
+        """() => TUPLE dimensions
+
+        Get the dimensions of the given array datatype as
+        a tuple of integers.
+        """
+        cdef hsize_t rank   
+        cdef hsize_t* dims = NULL
+
+        rank = H5Tget_array_dims(self.id, NULL, NULL)
+        dims = <hsize_t*>emalloc(sizeof(hsize_t)*rank)
+        try:
+            H5Tget_array_dims(self.id, dims, NULL)
+            return convert_dims(dims, rank)
+        finally:
+            efree(dims)
+
+    cdef object py_dtype(self):
+        # Numpy translation function for array types
+        cdef TypeID tmp_type
+        tmp_type = self.get_super()
+
+        base_dtype = tmp_type.py_dtype()
+
+        shape = self.get_array_dims()
+        return dtype( (base_dtype, shape) )
+
+
+cdef class TypeOpaqueID(TypeID):
+
+    """
+        Represents an opaque type
+    """
+
+    
+    def set_tag(self, char* tag):
+        """(STRING tag)
+
+        Set a string describing the contents of an opaque datatype.
+        Limited to 256 characters.
+        """
+        H5Tset_tag(self.id, tag)
+
+    
+    def get_tag(self):
+        """() => STRING tag
+
+        Get the tag associated with an opaque datatype.
+        """
+        cdef char* buf = NULL
+
+        try:
+            buf = H5Tget_tag(self.id)
+            assert buf != NULL
+            tag = buf
+            return tag
+        finally:
+            free(buf)
+
+    cdef object py_dtype(self):
+        # Numpy translation function for opaque types
+        return dtype("|V" + str(self.get_size()))
+
+cdef class TypeStringID(TypeID):
+
+    """
+        String datatypes, both fixed and vlen.
+    """
+
+    
+    def is_variable_str(self):
+        """() => BOOL is_variable
+
+        Determine if the given string datatype is a variable-length string.
+        """
+        return <bint>(H5Tis_variable_str(self.id))
+
+    
+    def get_cset(self):
+        """() => INT character_set
+
+        Retrieve the character set used for a string.
+        """
+        return <int>H5Tget_cset(self.id)
+
+    
+    def set_cset(self, int cset):
+        """(INT character_set)
+
+        Set the character set used for a string.
+        """
+        H5Tset_cset(self.id, <H5T_cset_t>cset)
+
+    
+    def get_strpad(self):
+        """() => INT padding_type
+
+        Get the padding type.  Legal values are:
+
+        STR_NULLTERM
+            NULL termination only (C style)
+
+        STR_NULLPAD
+            Pad buffer with NULLs
+
+        STR_SPACEPAD
+            Pad buffer with spaces (FORTRAN style)
+        """
+        return <int>H5Tget_strpad(self.id)
+
+    
+    def set_strpad(self, int pad):
+        """(INT pad)
+
+        Set the padding type.  Legal values are:
+
+        STR_NULLTERM
+            NULL termination only (C style)
+
+        STR_NULLPAD
+            Pad buffer with NULLs
+
+        STR_SPACEPAD
+            Pad buffer with spaces (FORTRAN style)
+        """
+        H5Tset_strpad(self.id, <H5T_str_t>pad)
+
+    cdef object py_dtype(self):
+        # Numpy translation function for string types
+        if self.is_variable_str():
+            if self.get_cset() == H5T_CSET_ASCII:
+                return special_dtype(vlen=bytes)
+            elif self.get_cset() == H5T_CSET_UTF8:
+                return special_dtype(vlen=unicode)
+            else:
+                raise TypeError("Unknown string encoding (value %d)" % self.get_cset())
+
+        return dtype("|S" + str(self.get_size()))
+
+cdef class TypeVlenID(TypeID):
+
+    """
+        Non-string vlen datatypes.
+    """
+    pass
+
+cdef class TypeTimeID(TypeID):
+
+    """
+        Unix-style time_t (deprecated)
+    """
+    pass
+
+cdef class TypeBitfieldID(TypeID):
+
+    """
+        HDF5 bitfield type
+    """
+    pass
+
+cdef class TypeReferenceID(TypeID):
+
+    """
+        HDF5 object or region reference
+    """
+    
+    cdef object py_dtype(self):
+        if H5Tequal(self.id, H5T_STD_REF_OBJ):
+            return special_dtype(ref=Reference)
+        elif H5Tequal(self.id, H5T_STD_REF_DSETREG):
+            return special_dtype(ref=RegionReference)
+        else:
+            raise TypeError("Unknown reference type")
+
+
+# === Numeric classes (integers and floats) ===================================
+
+cdef class TypeAtomicID(TypeID):
+
+    """
+        Base class for atomic datatypes (float or integer)
+    """
+
+    
+    def get_order(self):
+        """() => INT order
+
+        Obtain the byte order of the datatype; one of:
+
+        - ORDER_LE
+        - ORDER_BE
+        """
+        return <int>H5Tget_order(self.id)
+
+    
+    def set_order(self, int order):
+        """(INT order)
+
+        Set the byte order of the datatype; one of:
+
+        - ORDER_LE
+        - ORDER_BE
+        """
+        H5Tset_order(self.id, <H5T_order_t>order)
+
+    
+    def get_precision(self):
+        """() => UINT precision
+
+        Get the number of significant bits (excludes padding).
+        """
+        return H5Tget_precision(self.id)
+
+    
+    def set_precision(self, size_t precision):
+        """(UINT precision)
+            
+        Set the number of significant bits (excludes padding).
+        """
+        H5Tset_precision(self.id, precision)
+
+    
+    def get_offset(self):
+        """() => INT offset
+
+        Get the offset of the first significant bit.
+        """
+        return H5Tget_offset(self.id)
+
+    
+    def set_offset(self, size_t offset):
+        """(UINT offset)
+
+        Set the offset of the first significant bit.
+        """
+        H5Tset_offset(self.id, offset)
+
+    
+    def get_pad(self):
+        """() => (INT lsb_pad_code, INT msb_pad_code)
+
+        Determine the padding type.  Possible values are:
+
+        - PAD_ZERO
+        - PAD_ONE
+        - PAD_BACKGROUND
+        """
+        cdef H5T_pad_t lsb
+        cdef H5T_pad_t msb
+        H5Tget_pad(self.id, &lsb, &msb)
+        return (<int>lsb, <int>msb)
+
+    
+    def set_pad(self, int lsb, int msb):
+        """(INT lsb_pad_code, INT msb_pad_code)
+
+        Set the padding type.  Possible values are:
+
+        - PAD_ZERO
+        - PAD_ONE
+        - PAD_BACKGROUND
+        """
+        H5Tset_pad(self.id, <H5T_pad_t>lsb, <H5T_pad_t>msb)
+
+
+cdef class TypeIntegerID(TypeAtomicID):
+
+    """
+        Integer atomic datatypes
+    """
+
+    
+    def get_sign(self):
+        """() => INT sign
+
+        Get the "signedness" of the datatype; one of:
+
+        SGN_NONE
+            Unsigned
+
+        SGN_2
+            Signed 2's complement
+        """
+        return <int>H5Tget_sign(self.id)
+
+    
+    def set_sign(self, int sign):
+        """(INT sign)
+
+        Set the "signedness" of the datatype; one of:
+
+        SGN_NONE
+            Unsigned
+
+        SGN_2
+            Signed 2's complement
+        """
+        H5Tset_sign(self.id, <H5T_sign_t>sign)
+
+    cdef object py_dtype(self):
+        # Translation function for integer types
+        return dtype( _order_map[self.get_order()] + 
+                      _sign_map[self.get_sign()] + str(self.get_size()) )
+
+
+cdef class TypeFloatID(TypeAtomicID):
+
+    """
+        Floating-point atomic datatypes
+    """
+
+    
+    def get_fields(self):
+        """() => TUPLE field_info
+
+        Get information about floating-point bit fields.  See the HDF5
+        docs for a full description.  Tuple has the following members:
+
+        0. UINT spos
+        1. UINT epos
+        2. UINT esize
+        3. UINT mpos
+        4. UINT msize
+        """
+        cdef size_t spos, epos, esize, mpos, msize
+        H5Tget_fields(self.id, &spos, &epos, &esize, &mpos, &msize)
+        return (spos, epos, esize, mpos, msize)
+
+    
+    def set_fields(self, size_t spos, size_t epos, size_t esize, 
+                          size_t mpos, size_t msize):
+        """(UINT spos, UINT epos, UINT esize, UINT mpos, UINT msize)
+
+        Set floating-point bit fields.  Refer to the HDF5 docs for
+        argument definitions.
+        """
+        H5Tset_fields(self.id, spos, epos, esize, mpos, msize)
+
+    
+    def get_ebias(self):
+        """() => UINT ebias
+
+        Get the exponent bias.
+        """
+        return H5Tget_ebias(self.id)
+
+    
+    def set_ebias(self, size_t ebias):
+        """(UINT ebias)
+
+        Set the exponent bias.
+        """
+        H5Tset_ebias(self.id, ebias)
+
+    
+    def get_norm(self):
+        """() => INT normalization_code
+
+        Get the normalization strategy.  Legal values are:
+
+        - NORM_IMPLIED
+        - NORM_MSBSET
+        - NORM_NONE
+        """
+        return <int>H5Tget_norm(self.id)
+
+    
+    def set_norm(self, int norm):
+        """(INT normalization_code)
+
+        Set the normalization strategy.  Legal values are:
+
+        - NORM_IMPLIED
+        - NORM_MSBSET
+        - NORM_NONE
+        """
+        H5Tset_norm(self.id, <H5T_norm_t>norm)
+
+    
+    def get_inpad(self):
+        """() => INT pad_code
+
+        Determine the internal padding strategy.  Legal values are:
+
+        - PAD_ZERO
+        - PAD_ONE
+        - PAD_BACKGROUND
+        """
+        return <int>H5Tget_inpad(self.id)
+
+    
+    def set_inpad(self, int pad_code):
+        """(INT pad_code)
+
+        Set the internal padding strategy.  Legal values are:
+
+        - PAD_ZERO
+        - PAD_ONE
+        - PAD_BACKGROUND
+        """
+        H5Tset_inpad(self.id, <H5T_pad_t>pad_code)
+
+    cdef object py_dtype(self):
+        # Translation function for floating-point types
+        size = self.get_size()                  # int giving number of bytes
+        order = _order_map[self.get_order()]    # string with '<' or '>'
+
+        if size == 2 and not hasattr(np, 'float16'):
+            # This build doesn't have float16; promote to float32
+            return dtype(order+"f4")
+
+        if size > 8:
+            # The native NumPy longdouble is used for 96 and 128-bit floats
+            return dtype(order + "f" + str(np.longdouble(1).dtype.itemsize))
+            
+        return dtype( _order_map[self.get_order()] + "f" + \
+                      str(self.get_size()) )
+
+
+# === Composite types (enums and compound) ====================================
+
+cdef class TypeCompositeID(TypeID):
+
+    """
+        Base class for enumerated and compound types.
+    """
+
+    
+    def get_nmembers(self):
+        """() => INT number_of_members
+
+        Determine the number of members in a compound or enumerated type.
+        """
+        return H5Tget_nmembers(self.id)
+
+    
+    def get_member_name(self, int member):
+        """(INT member) => STRING name
+        
+        Determine the name of a member of a compound or enumerated type,
+        identified by its index (0 <= member < nmembers).
+        """
+        cdef char* name
+        name = NULL
+
+        if member < 0:
+            raise ValueError("Member index must be non-negative.")
+
+        try:
+            name = H5Tget_member_name(self.id, member)
+            assert name != NULL
+            pyname = <bytes>name
+        finally:
+            free(name)
+
+        return pyname
+
+    
+    def get_member_index(self, char* name):
+        """(STRING name) => INT index
+
+        Determine the index of a member of a compound or enumerated datatype
+        identified by a string name.
+        """
+        return H5Tget_member_index(self.id, name)
+
+
+cdef class TypeCompoundID(TypeCompositeID):
+
+    """
+        Represents a compound datatype
+    """
+
+
+    
+    def get_member_class(self, int member):
+        """(INT member) => INT class
+
+        Determine the datatype class of the member of a compound type,
+        identified by its index (0 <= member < nmembers).
+        """
+        if member < 0:
+            raise ValueError("Member index must be non-negative.")
+        return H5Tget_member_class(self.id, member)
+
+
+    
+    def get_member_offset(self, int member):
+        """(INT member) => INT offset
+
+        Determine the offset, in bytes, of the beginning of the specified
+        member of a compound datatype.
+        """
+        if member < 0:
+            raise ValueError("Member index must be non-negative.")
+        return H5Tget_member_offset(self.id, member)
+
+    
+    def get_member_type(self, int member):
+        """(INT member) => TypeID
+
+        Create a copy of a member of a compound datatype, identified by its
+        index.
+        """
+        if member < 0:
+            raise ValueError("Member index must be non-negative.")
+        return typewrap(H5Tget_member_type(self.id, member))
+
+    
+    def insert(self, char* name, size_t offset, TypeID field not None):
+        """(STRING name, UINT offset, TypeID field)
+
+        Add a named member datatype to a compound datatype.  The parameter
+        offset indicates the offset from the start of the compound datatype,
+        in bytes.
+        """
+        H5Tinsert(self.id, name, offset, field.id)
+
+    
+    def pack(self):
+        """()
+
+        Recursively removes padding (introduced on account of e.g. compiler
+        alignment rules) from a compound datatype.
+        """
+        H5Tpack(self.id)
+
+    cdef object py_dtype(self):
+
+        cdef TypeID tmp_type
+        cdef list field_names
+        cdef list field_types
+        cdef int nfields
+        field_names = []
+        field_types = []
+        nfields = self.get_nmembers()
+
+        # First step: read field names and their Numpy dtypes into 
+        # two separate arrays.
+        for i from 0 <= i < nfields:
+            tmp_type = self.get_member_type(i)
+            name = self.get_member_name(i)
+            field_names.append(name)
+            field_types.append(tmp_type.py_dtype())
+
+
+        # 1. Check if it should be converted to a complex number
+        if len(field_names) == 2                                and \
+            tuple(field_names) == (cfg._r_name, cfg._i_name)    and \
+            field_types[0] == field_types[1]                    and \
+            field_types[0].kind == 'f':
+
+            bstring = field_types[0].str
+            blen = int(bstring[2:])
+            nstring = bstring[0] + "c" + str(2*blen)
+            typeobj = dtype(nstring)
+
+        # 2. Otherwise, read all fields of the compound type, in HDF5 order.
+        else:
+            if sys.version[0] == '3':
+                field_names = [x.decode('utf8') for x in field_names]
+            typeobj = dtype(list(zip(field_names, field_types)))
+
+        return typeobj
+
+cdef class TypeEnumID(TypeCompositeID):
+
+    """
+        Represents an enumerated type
+    """
+
+    cdef int enum_convert(self, long long *buf, int reverse) except -1:
+        # Convert the long long value in "buf" to the native representation
+        # of this (enumerated) type.  Conversion performed in-place.
+        # Reverse: false => llong->type; true => type->llong
+
+        cdef hid_t basetype
+        cdef H5T_class_t class_code
+
+        class_code = H5Tget_class(self.id)
+        if class_code != H5T_ENUM:
+            raise ValueError("This type (class %d) is not of class ENUM" % class_code)
+
+        basetype = H5Tget_super(self.id)
+        assert basetype > 0
+
+        try:
+            if not reverse:
+                H5Tconvert(H5T_NATIVE_LLONG, basetype, 1, buf, NULL, H5P_DEFAULT)
+            else:
+                H5Tconvert(basetype, H5T_NATIVE_LLONG, 1, buf, NULL, H5P_DEFAULT)
+        finally:
+            H5Tclose(basetype)
+
+    
+    def enum_insert(self, char* name, long long value):
+        """(STRING name, INT/LONG value)
+
+        Define a new member of an enumerated type.  The value will be
+        automatically converted to the base type defined for this enum.  If
+        the conversion results in overflow, the value will be silently 
+        clipped.
+        """
+        cdef long long buf
+
+        buf = value
+        self.enum_convert(&buf, 0)
+        H5Tenum_insert(self.id, name, &buf)
+
+    
+    def enum_nameof(self, long long value):
+        """(LONG value) => STRING name
+
+        Determine the name associated with the given value.  Due to a
+        limitation of the HDF5 library, this can only retrieve names up to
+        1023 characters in length.
+        """
+        cdef herr_t retval
+        cdef char name[1024]
+        cdef long long buf
+
+        buf = value
+        self.enum_convert(&buf, 0)
+        retval = H5Tenum_nameof(self.id, &buf, name, 1024)
+        assert retval >= 0
+        retstring = name
+        return retstring
+
+    
+    def enum_valueof(self, char* name):
+        """(STRING name) => LONG value
+
+        Get the value associated with an enum name.
+        """
+        cdef long long buf
+
+        H5Tenum_valueof(self.id, name, &buf)
+        self.enum_convert(&buf, 1)
+        return buf
+
+    
+    def get_member_value(self, int idx):
+        """(UINT index) => LONG value
+
+        Determine the value for the member at the given zero-based index.
+        """
+        cdef herr_t retval
+        cdef hid_t ptype
+        cdef long long val
+        ptype = 0
+
+        if idx < 0:
+            raise ValueError("Index must be non-negative.")
+
+        H5Tget_member_value(self.id, idx, &val)
+        self.enum_convert(&val, 1)
+        return val
+
+    cdef object py_dtype(self):
+        # Translation function for enum types
+
+        cdef TypeID basetype = self.get_super()
+
+        nmembers = self.get_nmembers()
+        members = {}
+
+        for idx in xrange(nmembers):
+            name = self.get_member_name(idx)
+            val = self.get_member_value(idx) 
+            members[name] = val
+
+        ref = {cfg._f_name: 0, cfg._t_name: 1}
+
+        # Boolean types have priority over standard enums
+        if members == ref:
+            return dtype('bool')
+    
+        # Convert strings to appropriate representation
+        members_conv = {}
+        for name, val in members.iteritems():
+            try:    # ASCII; Py2 -> preserve bytes, Py3 -> make unicode
+                uname = name.decode('ascii')
+                if PY3:
+                    name = uname
+            except UnicodeDecodeError:
+                try:    # Non-ascii; all platforms try unicode
+                    name = name.decode('utf8')
+                except UnicodeDecodeError:
+                    pass    # Last resort: return byte string
+            members_conv[name] = val
+        return special_dtype(enum=(basetype.py_dtype(), members_conv))
+
+
+# === Translation from NumPy dtypes to HDF5 type objects ======================
+
+# The following series of native-C functions each translate a specific class
+# of NumPy dtype into an HDF5 type object.  The result is guaranteed to be
+# transient and unlocked.
+
+cdef dict _float_le = {2: IEEE_F16LE.id, 4: H5T_IEEE_F32LE, 8: H5T_IEEE_F64LE}
+cdef dict _float_be = {2: IEEE_F16BE.id, 4: H5T_IEEE_F32BE, 8: H5T_IEEE_F64BE}
+cdef dict _float_nt = _float_le if ORDER_NATIVE == H5T_ORDER_LE else _float_be
+
+cdef dict _int_le = {1: H5T_STD_I8LE, 2: H5T_STD_I16LE, 4: H5T_STD_I32LE, 8: H5T_STD_I64LE}
+cdef dict _int_be = {1: H5T_STD_I8BE, 2: H5T_STD_I16BE, 4: H5T_STD_I32BE, 8: H5T_STD_I64BE}
+cdef dict _int_nt = {1: H5T_NATIVE_INT8, 2: H5T_NATIVE_INT16, 4: H5T_NATIVE_INT32, 8: H5T_NATIVE_INT64}
+
+cdef dict _uint_le = {1: H5T_STD_U8LE, 2: H5T_STD_U16LE, 4: H5T_STD_U32LE, 8: H5T_STD_U64LE}
+cdef dict _uint_be = {1: H5T_STD_U8BE, 2: H5T_STD_U16BE, 4: H5T_STD_U32BE, 8: H5T_STD_U64BE}
+cdef dict _uint_nt = {1: H5T_NATIVE_UINT8, 2: H5T_NATIVE_UINT16, 4: H5T_NATIVE_UINT32, 8: H5T_NATIVE_UINT64} 
+
+cdef TypeFloatID _c_float(dtype dt):
+    # Floats (single and double)
+    cdef hid_t tid
+
+    try:
+        if dt.byteorder == c'<':
+            tid =  _float_le[dt.elsize]
+        elif dt.byteorder == c'>':
+            tid =  _float_be[dt.elsize]
+        else:
+            tid =  _float_nt[dt.elsize]
+    except KeyError:
+        raise TypeError("Unsupported float size (%s)" % dt.elsize)
+
+    return TypeFloatID(H5Tcopy(tid))
+
+cdef TypeIntegerID _c_int(dtype dt):
+    # Integers (ints and uints)
+    cdef hid_t tid
+
+    try:
+        if dt.kind == c'i':
+            if dt.byteorder == c'<':
+                tid = _int_le[dt.elsize]
+            elif dt.byteorder == c'>':
+                tid = _int_be[dt.elsize]
+            else:
+                tid = _int_nt[dt.elsize]
+        elif dt.kind == c'u':
+            if dt.byteorder == c'<':
+                tid = _uint_le[dt.elsize]
+            elif dt.byteorder == c'>':
+                tid = _uint_be[dt.elsize]
+            else:
+                tid = _uint_nt[dt.elsize]
+        else:
+            raise TypeError('Illegal int kind "%s"' % dt.kind)
+    except KeyError:
+        raise TypeError("Unsupported integer size (%s)" % dt.elsize)
+
+    return TypeIntegerID(H5Tcopy(tid))
+
+cdef TypeEnumID _c_enum(dtype dt, dict vals):
+    # Enums
+    cdef TypeIntegerID base
+    cdef TypeEnumID out
+
+    base = _c_int(dt)
+
+    out = TypeEnumID(H5Tenum_create(base.id))
+    for name in sorted(vals):
+        if isinstance(name, bytes):
+            bname = name
+        else:
+            bname = unicode(name).encode('utf8')
+        out.enum_insert(bname, vals[name])
+    return out
+
+cdef TypeEnumID _c_bool(dtype dt):
+    # Booleans
+    global cfg
+
+    cdef TypeEnumID out
+    out = TypeEnumID(H5Tenum_create(H5T_NATIVE_INT8))
+
+    out.enum_insert(cfg._f_name, 0)
+    out.enum_insert(cfg._t_name, 1)
+
+    return out
+
+cdef TypeArrayID _c_array(dtype dt, int logical):
+    # Arrays
+    cdef dtype base
+    cdef TypeID type_base
+    cdef object shape
+
+    base, shape = dt.subdtype
+    try:
+        shape = tuple(shape)
+    except TypeError:
+        try:
+            shape = (int(shape),)
+        except TypeError:
+            raise TypeError("Array shape for dtype must be a sequence or integer")
+    type_base = py_create(base, logical=logical)
+    return array_create(type_base, shape)
+
+cdef TypeOpaqueID _c_opaque(dtype dt):
+    # Opaque
+    return TypeOpaqueID(H5Tcreate(H5T_OPAQUE, dt.itemsize))
+
+cdef TypeStringID _c_string(dtype dt):
+    # Strings (fixed-length)
+    cdef hid_t tid
+
+    tid = H5Tcopy(H5T_C_S1)
+    H5Tset_size(tid, dt.itemsize)
+    H5Tset_strpad(tid, H5T_STR_NULLPAD)
+    return TypeStringID(tid)
+
+cdef TypeCompoundID _c_complex(dtype dt):
+    # Complex numbers (names depend on cfg)
+    global cfg
+
+    cdef hid_t tid, tid_sub
+    cdef size_t size, off_r, off_i
+
+    cdef size_t length = dt.itemsize
+    cdef char byteorder = dt.byteorder
+
+    if length == 8:
+        size = h5py_size_n64
+        off_r = h5py_offset_n64_real
+        off_i = h5py_offset_n64_imag
+        if byteorder == c'<':
+            tid_sub = H5T_IEEE_F32LE
+        elif byteorder == c'>':
+            tid_sub = H5T_IEEE_F32BE
+        else:
+            tid_sub = H5T_NATIVE_FLOAT
+    elif length == 16:
+        size = h5py_size_n128
+        off_r = h5py_offset_n128_real
+        off_i = h5py_offset_n128_imag
+        if byteorder == c'<':
+            tid_sub = H5T_IEEE_F64LE
+        elif byteorder == c'>':
+            tid_sub = H5T_IEEE_F64BE
+        else:
+            tid_sub = H5T_NATIVE_DOUBLE
+    else:
+        raise TypeError("Illegal length %d for complex dtype" % length)
+
+    tid = H5Tcreate(H5T_COMPOUND, size)
+    H5Tinsert(tid, cfg._r_name, off_r, tid_sub)
+    H5Tinsert(tid, cfg._i_name, off_i, tid_sub)
+
+    return TypeCompoundID(tid)
+
+cdef TypeCompoundID _c_compound(dtype dt, int logical):
+    # Compound datatypes
+
+    cdef hid_t tid
+    cdef TypeID type_tmp
+    cdef dtype dt_tmp
+    cdef size_t offset
+
+    cdef dict fields = dt.fields
+    cdef tuple names = dt.names
+
+    # Initial size MUST be 1 to avoid segfaults (issue 166)
+    tid = H5Tcreate(H5T_COMPOUND, 1)  
+
+    offset = 0
+    for name in names:
+        ename = name.encode('utf8') if isinstance(name, unicode) else name
+        dt_tmp = dt.fields[name][0]
+        type_tmp = py_create(dt_tmp, logical=logical)
+        H5Tset_size(tid, offset+type_tmp.get_size())
+        H5Tinsert(tid, ename, offset, type_tmp.id)
+        offset += type_tmp.get_size()
+
+    return TypeCompoundID(tid)
+
+cdef TypeStringID _c_vlen_str():
+    # Variable-length strings
+    cdef hid_t tid
+    tid = H5Tcopy(H5T_C_S1)
+    H5Tset_size(tid, H5T_VARIABLE)
+    return TypeStringID(tid)
+
+cdef TypeStringID _c_vlen_unicode():
+    cdef hid_t tid
+    tid = H5Tcopy(H5T_C_S1)
+    H5Tset_size(tid, H5T_VARIABLE)
+    H5Tset_cset(tid, H5T_CSET_UTF8)
+    return TypeStringID(tid)
+ 
+cdef TypeReferenceID _c_ref(object refclass):
+    if refclass is Reference:
+        return STD_REF_OBJ
+    elif refclass is RegionReference:
+        return STD_REF_DSETREG
+    raise TypeError("Unrecognized reference code")
+
+cpdef TypeID py_create(object dtype_in, bint logical=0):
+    """(OBJECT dtype_in, BOOL logical=False) => TypeID
+
+    Given a Numpy dtype object, generate a byte-for-byte memory-compatible
+    HDF5 datatype object.  The result is guaranteed to be transient and
+    unlocked.
+
+    Argument dtype_in may be a dtype object, or anything which can be
+    converted to a dtype, including strings like '<i4'.
+
+    logical
+        If this flag is set, instead of returning a byte-for-byte identical
+        representation of the type, the function returns the closest logically
+        appropriate HDF5 type.  For example, in the case of a "hinted" dtype
+        of kind "O" representing a string, it would return an HDF5 variable-
+        length string type.
+    """
+    cdef dtype dt = dtype(dtype_in)
+    cdef char kind = dt.kind
+
+    # Float
+    if kind == c'f':
+        return _c_float(dt)
+    
+    # Integer
+    elif kind == c'u' or kind == c'i':
+
+        if logical:
+            # Check for an enumeration hint
+            enum_vals = check_dtype(enum=dt)
+            if enum_vals is not None:
+                return _c_enum(dt, enum_vals)
+
+        return _c_int(dt)
+
+    # Complex
+    elif kind == c'c':
+        return _c_complex(dt)
+
+    # Compound
+    elif kind == c'V' and dt.names is not None:
+        return _c_compound(dt, logical)
+
+    # Array or opaque
+    elif kind == c'V':
+        if dt.subdtype is not None:
+            return _c_array(dt, logical)
+        else:
+            return _c_opaque(dt)
+
+    # String
+    elif kind == c'S':
+        return _c_string(dt)
+
+    # Boolean
+    elif kind == c'b':
+        return _c_bool(dt)
+
+    # Object types (including those with vlen hints)
+    elif kind == c'O':
+
+        if logical:
+            vlen = check_dtype(vlen=dt)
+            if vlen is bytes:
+                return _c_vlen_str()
+            elif vlen is unicode:
+                return _c_vlen_unicode()
+
+            refclass = check_dtype(ref=dt)
+            if refclass is not None:
+                    return _c_ref(refclass)
+
+            raise TypeError("Object dtype %r has no native HDF5 equivalent" % (dt,))
+
+        return PYTHON_OBJECT
+
+    # Unrecognized
+    else:
+        raise TypeError("No conversion path for dtype: %s" % repr(dt))
+
+def special_dtype(**kwds):
+    """ Create a new h5py "special" type.  Only one keyword may be given.
+
+    Legal keywords are:
+
+    vlen = basetype
+        Base type for HDF5 variable-length datatype.  Currently only the
+        builtin string class (str) is allowed.
+        Example: special_dtype( vlen=str )
+
+    enum = (basetype, values_dict)
+        Create a NumPy representation of an HDF5 enumerated type.  Provide
+        a 2-tuple containing an (integer) base dtype and a dict mapping
+        string names to integer values.
+
+    ref = Reference | RegionReference
+        Create a NumPy representation of an HDF5 object or region reference
+        type.
+    """
+    
+    if len(kwds) != 1:
+        raise TypeError("Exactly one keyword may be provided")
+
+    name, val = kwds.popitem()
+
+    if name == 'vlen':
+        if val not in (bytes, unicode):
+            raise NotImplementedError("Only byte or unicode string vlens are currently supported")
+
+        return dtype(('O', [( ({'type': val},'vlen'), 'O' )] ))
+
+    if name == 'enum':
+
+        try:
+            dt, enum_vals = val
+        except TypeError:
+            raise TypeError("Enums must be created from a 2-tuple (basetype, values_dict)")
+
+        dt = dtype(dt)
+        if dt.kind not in "iu":
+            raise TypeError("Only integer types can be used as enums")
+
+        return dtype((dt, [( ({'vals': enum_vals},'enum'), dt )] ))
+
+    if name == 'ref':
+
+        if val not in (Reference, RegionReference):
+            raise ValueError("Ref class must be Reference or RegionReference")
+
+        return dtype(('O', [( ({'type': val},'ref'), 'O' )] ))
+
+    raise TypeError('Unknown special type "%s"' % name)
+   
+def check_dtype(**kwds):
+    """ Check a dtype for h5py special type "hint" information.  Only one
+    keyword may be given.
+
+    vlen = dtype
+        If the dtype represents an HDF5 vlen, returns the Python base class.
+        Currently only builting string vlens (str) are supported.  Returns
+        None if the dtype does not represent an HDF5 vlen.
+
+    enum = dtype
+        If the dtype represents an HDF5 enumerated type, returns the dictionary
+        mapping string names to integer values.  Returns None if the dtype does
+        not represent an HDF5 enumerated type.
+
+    ref = dtype
+        If the dtype represents an HDF5 reference type, returns the reference
+        class (either Reference or RegionReference).  Returns None if the dtype
+        does not represent an HDF5 reference type.
+    """
+
+    if len(kwds) != 1:
+        raise TypeError("Exactly one keyword may be provided")
+
+    name, dt = kwds.popitem()
+
+    if name not in ('vlen', 'enum', 'ref'):
+        raise TypeError('Unknown special type "%s"' % name)
+
+    hintkey = 'type' if name is not 'enum' else 'vals'
+
+    if dt.fields is not None and name in dt.fields:
+        tpl = dt.fields[name]
+        if len(tpl) == 3:
+            hint_dict = tpl[2]
+            if hintkey in hint_dict:
+                return hint_dict[hintkey]
+
+    return None
+
+def convert(TypeID src not None, TypeID dst not None, size_t n,
+            ndarray buf not None, ndarray bkg=None, ObjectID dxpl=None):
+    """ (TypeID src, TypeID dst, UINT n, NDARRAY buf, NDARRAY bkg=None,
+    PropID dxpl=None)
+
+    Convert n contiguous elements of a buffer in-place.  The array dtype
+    is ignored.  The backing buffer is optional; for conversion of compound
+    types, a temporary copy of conversion buffer will used for backing if
+    one is not supplied.
+    """
+    cdef void* bkg_ = NULL
+    cdef void* buf_ = buf.data
+
+    if bkg is None and (src.detect_class(H5T_COMPOUND) or
+                        dst.detect_class(H5T_COMPOUND)):
+        bkg = buf.copy()
+    if bkg is not None:
+        bkg_ = bkg.data
+
+    H5Tconvert(src.id, dst.id, n, buf_, bkg_, pdefault(dxpl))
+
+def find(TypeID src not None, TypeID dst not None):
+    """ (TypeID src, TypeID dst) => TUPLE or None
+
+    Determine if a conversion path exists from src to dst.  Result is None
+    or a tuple describing the conversion path.  Currently tuple entries are:
+
+    1. INT need_bkg:    Whether this routine requires a backing buffer.
+                        Values are BKG_NO, BKG_TEMP and BKG_YES.
+    """
+    cdef H5T_cdata_t *data
+    cdef H5T_conv_t result = NULL
+    
+    try:
+        result = H5Tfind(src.id, dst.id, &data)
+        if result == NULL:
+            return None
+        return (data[0].need_bkg,)
+    except:
+        return None
+
+# ============================================================================
+# Deprecated functions
+
+import warnings
+
+cpdef dtype py_new_enum(object dt_in, dict enum_vals):
+    """ (DTYPE dt_in, DICT enum_vals) => DTYPE
+
+    Deprecated; use special_dtype() instead.
+    """
+    #warnings.warn("Deprecated; use special_dtype(enum=(dtype, values)) instead", DeprecationWarning)
+    return special_dtype(enum = (dt_in, enum_vals))
+
+cpdef dict py_get_enum(object dt):
+    """ (DTYPE dt_in) => DICT
+
+    Deprecated; use check_dtype() instead.
+    """
+    #warnings.warn("Deprecated; use check_dtype(enum=dtype) instead", DeprecationWarning)
+    return check_dtype(enum=dt)
+
+cpdef dtype py_new_vlen(object kind):
+    """ (OBJECT kind) => DTYPE
+
+    Deprecated; use special_dtype() instead.
+    """
+    #warnings.warn("Deprecated; use special_dtype(vlen=basetype) instead", DeprecationWarning)
+    return special_dtype(vlen=kind)
+
+cpdef object py_get_vlen(object dt_in):
+    """ (OBJECT dt_in) => TYPE
+
+    Deprecated; use check_dtype() instead.
+    """
+    #warnings.warn("Deprecated; use check_dtype(vlen=dtype) instead", DeprecationWarning)
+    return check_dtype(vlen=dt_in)
+
+
diff --git a/h5py/h5z.c b/h5py/h5z.c
new file mode 100644
index 0000000..fd8b8b4
--- /dev/null
+++ b/h5py/h5z.c
@@ -0,0 +1,2210 @@
+/* Generated by Cython 0.18 on Mon Dec  9 16:00:33 2013 */
+
+#define PY_SSIZE_T_CLEAN
+#include "Python.h"
+#ifndef Py_PYTHON_H
+    #error Python headers needed to compile C extensions, please install development version of Python.
+#elif PY_VERSION_HEX < 0x02040000
+    #error Cython requires Python 2.4+.
+#else
+#include <stddef.h> /* For offsetof */
+#ifndef offsetof
+#define offsetof(type, member) ( (size_t) & ((type*)0) -> member )
+#endif
+#if !defined(WIN32) && !defined(MS_WINDOWS)
+  #ifndef __stdcall
+    #define __stdcall
+  #endif
+  #ifndef __cdecl
+    #define __cdecl
+  #endif
+  #ifndef __fastcall
+    #define __fastcall
+  #endif
+#endif
+#ifndef DL_IMPORT
+  #define DL_IMPORT(t) t
+#endif
+#ifndef DL_EXPORT
+  #define DL_EXPORT(t) t
+#endif
+#ifndef PY_LONG_LONG
+  #define PY_LONG_LONG LONG_LONG
+#endif
+#ifndef Py_HUGE_VAL
+  #define Py_HUGE_VAL HUGE_VAL
+#endif
+#ifdef PYPY_VERSION
+#define CYTHON_COMPILING_IN_PYPY 1
+#define CYTHON_COMPILING_IN_CPYTHON 0
+#else
+#define CYTHON_COMPILING_IN_PYPY 0
+#define CYTHON_COMPILING_IN_CPYTHON 1
+#endif
+#if PY_VERSION_HEX < 0x02050000
+  typedef int Py_ssize_t;
+  #define PY_SSIZE_T_MAX INT_MAX
+  #define PY_SSIZE_T_MIN INT_MIN
+  #define PY_FORMAT_SIZE_T ""
+  #define CYTHON_FORMAT_SSIZE_T ""
+  #define PyInt_FromSsize_t(z) PyInt_FromLong(z)
+  #define PyInt_AsSsize_t(o)   __Pyx_PyInt_AsInt(o)
+  #define PyNumber_Index(o)    ((PyNumber_Check(o) && !PyFloat_Check(o)) ? PyNumber_Int(o) : \
+                                (PyErr_Format(PyExc_TypeError, \
+                                              "expected index value, got %.200s", Py_TYPE(o)->tp_name), \
+                                 (PyObject*)0))
+  #define __Pyx_PyIndex_Check(o) (PyNumber_Check(o) && !PyFloat_Check(o) && \
+                                  !PyComplex_Check(o))
+  #define PyIndex_Check __Pyx_PyIndex_Check
+  #define PyErr_WarnEx(category, message, stacklevel) PyErr_Warn(category, message)
+  #define __PYX_BUILD_PY_SSIZE_T "i"
+#else
+  #define __PYX_BUILD_PY_SSIZE_T "n"
+  #define CYTHON_FORMAT_SSIZE_T "z"
+  #define __Pyx_PyIndex_Check PyIndex_Check
+#endif
+#if PY_VERSION_HEX < 0x02060000
+  #define Py_REFCNT(ob) (((PyObject*)(ob))->ob_refcnt)
+  #define Py_TYPE(ob)   (((PyObject*)(ob))->ob_type)
+  #define Py_SIZE(ob)   (((PyVarObject*)(ob))->ob_size)
+  #define PyVarObject_HEAD_INIT(type, size) \
+          PyObject_HEAD_INIT(type) size,
+  #define PyType_Modified(t)
+  typedef struct {
+     void *buf;
+     PyObject *obj;
+     Py_ssize_t len;
+     Py_ssize_t itemsize;
+     int readonly;
+     int ndim;
+     char *format;
+     Py_ssize_t *shape;
+     Py_ssize_t *strides;
+     Py_ssize_t *suboffsets;
+     void *internal;
+  } Py_buffer;
+  #define PyBUF_SIMPLE 0
+  #define PyBUF_WRITABLE 0x0001
+  #define PyBUF_FORMAT 0x0004
+  #define PyBUF_ND 0x0008
+  #define PyBUF_STRIDES (0x0010 | PyBUF_ND)
+  #define PyBUF_C_CONTIGUOUS (0x0020 | PyBUF_STRIDES)
+  #define PyBUF_F_CONTIGUOUS (0x0040 | PyBUF_STRIDES)
+  #define PyBUF_ANY_CONTIGUOUS (0x0080 | PyBUF_STRIDES)
+  #define PyBUF_INDIRECT (0x0100 | PyBUF_STRIDES)
+  #define PyBUF_RECORDS (PyBUF_STRIDES | PyBUF_FORMAT | PyBUF_WRITABLE)
+  #define PyBUF_FULL (PyBUF_INDIRECT | PyBUF_FORMAT | PyBUF_WRITABLE)
+  typedef int (*getbufferproc)(PyObject *, Py_buffer *, int);
+  typedef void (*releasebufferproc)(PyObject *, Py_buffer *);
+#endif
+#if PY_MAJOR_VERSION < 3
+  #define __Pyx_BUILTIN_MODULE_NAME "__builtin__"
+  #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) \
+          PyCode_New(a, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
+#else
+  #define __Pyx_BUILTIN_MODULE_NAME "builtins"
+  #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) \
+          PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
+#endif
+#if PY_MAJOR_VERSION < 3 && PY_MINOR_VERSION < 6
+  #define PyUnicode_FromString(s) PyUnicode_Decode(s, strlen(s), "UTF-8", "strict")
+#endif
+#if PY_MAJOR_VERSION >= 3
+  #define Py_TPFLAGS_CHECKTYPES 0
+  #define Py_TPFLAGS_HAVE_INDEX 0
+#endif
+#if (PY_VERSION_HEX < 0x02060000) || (PY_MAJOR_VERSION >= 3)
+  #define Py_TPFLAGS_HAVE_NEWBUFFER 0
+#endif
+#if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND)
+  #define CYTHON_PEP393_ENABLED 1
+  #define __Pyx_PyUnicode_READY(op)       (likely(PyUnicode_IS_READY(op)) ? \
+                                              0 : _PyUnicode_Ready((PyObject *)(op)))
+  #define __Pyx_PyUnicode_GET_LENGTH(u)   PyUnicode_GET_LENGTH(u)
+  #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i)
+  #define __Pyx_PyUnicode_READ(k, d, i)   PyUnicode_READ(k, d, i)
+#else
+  #define CYTHON_PEP393_ENABLED 0
+  #define __Pyx_PyUnicode_READY(op)       (0)
+  #define __Pyx_PyUnicode_GET_LENGTH(u)   PyUnicode_GET_SIZE(u)
+  #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i]))
+  #define __Pyx_PyUnicode_READ(k, d, i)   ((k=k), (Py_UCS4)(((Py_UNICODE*)d)[i]))
+#endif
+#if PY_MAJOR_VERSION >= 3
+  #define PyBaseString_Type            PyUnicode_Type
+  #define PyStringObject               PyUnicodeObject
+  #define PyString_Type                PyUnicode_Type
+  #define PyString_Check               PyUnicode_Check
+  #define PyString_CheckExact          PyUnicode_CheckExact
+#endif
+#if PY_VERSION_HEX < 0x02060000
+  #define PyBytesObject                PyStringObject
+  #define PyBytes_Type                 PyString_Type
+  #define PyBytes_Check                PyString_Check
+  #define PyBytes_CheckExact           PyString_CheckExact
+  #define PyBytes_FromString           PyString_FromString
+  #define PyBytes_FromStringAndSize    PyString_FromStringAndSize
+  #define PyBytes_FromFormat           PyString_FromFormat
+  #define PyBytes_DecodeEscape         PyString_DecodeEscape
+  #define PyBytes_AsString             PyString_AsString
+  #define PyBytes_AsStringAndSize      PyString_AsStringAndSize
+  #define PyBytes_Size                 PyString_Size
+  #define PyBytes_AS_STRING            PyString_AS_STRING
+  #define PyBytes_GET_SIZE             PyString_GET_SIZE
+  #define PyBytes_Repr                 PyString_Repr
+  #define PyBytes_Concat               PyString_Concat
+  #define PyBytes_ConcatAndDel         PyString_ConcatAndDel
+#endif
+#if PY_VERSION_HEX < 0x02060000
+  #define PySet_Check(obj)             PyObject_TypeCheck(obj, &PySet_Type)
+  #define PyFrozenSet_Check(obj)       PyObject_TypeCheck(obj, &PyFrozenSet_Type)
+#endif
+#ifndef PySet_CheckExact
+  #define PySet_CheckExact(obj)        (Py_TYPE(obj) == &PySet_Type)
+#endif
+#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type)
+#if PY_MAJOR_VERSION >= 3
+  #define PyIntObject                  PyLongObject
+  #define PyInt_Type                   PyLong_Type
+  #define PyInt_Check(op)              PyLong_Check(op)
+  #define PyInt_CheckExact(op)         PyLong_CheckExact(op)
+  #define PyInt_FromString             PyLong_FromString
+  #define PyInt_FromUnicode            PyLong_FromUnicode
+  #define PyInt_FromLong               PyLong_FromLong
+  #define PyInt_FromSize_t             PyLong_FromSize_t
+  #define PyInt_FromSsize_t            PyLong_FromSsize_t
+  #define PyInt_AsLong                 PyLong_AsLong
+  #define PyInt_AS_LONG                PyLong_AS_LONG
+  #define PyInt_AsSsize_t              PyLong_AsSsize_t
+  #define PyInt_AsUnsignedLongMask     PyLong_AsUnsignedLongMask
+  #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask
+#endif
+#if PY_MAJOR_VERSION >= 3
+  #define PyBoolObject                 PyLongObject
+#endif
+#if PY_VERSION_HEX < 0x03020000
+  typedef long Py_hash_t;
+  #define __Pyx_PyInt_FromHash_t PyInt_FromLong
+  #define __Pyx_PyInt_AsHash_t   PyInt_AsLong
+#else
+  #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t
+  #define __Pyx_PyInt_AsHash_t   PyInt_AsSsize_t
+#endif
+#if (PY_MAJOR_VERSION < 3) || (PY_VERSION_HEX >= 0x03010300)
+  #define __Pyx_PySequence_GetSlice(obj, a, b) PySequence_GetSlice(obj, a, b)
+  #define __Pyx_PySequence_SetSlice(obj, a, b, value) PySequence_SetSlice(obj, a, b, value)
+  #define __Pyx_PySequence_DelSlice(obj, a, b) PySequence_DelSlice(obj, a, b)
+#else
+  #define __Pyx_PySequence_GetSlice(obj, a, b) (unlikely(!(obj)) ? \
+        (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), (PyObject*)0) : \
+        (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_GetSlice(obj, a, b)) : \
+            (PyErr_Format(PyExc_TypeError, "'%.200s' object is unsliceable", (obj)->ob_type->tp_name), (PyObject*)0)))
+  #define __Pyx_PySequence_SetSlice(obj, a, b, value) (unlikely(!(obj)) ? \
+        (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), -1) : \
+        (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_SetSlice(obj, a, b, value)) : \
+            (PyErr_Format(PyExc_TypeError, "'%.200s' object doesn't support slice assignment", (obj)->ob_type->tp_name), -1)))
+  #define __Pyx_PySequence_DelSlice(obj, a, b) (unlikely(!(obj)) ? \
+        (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), -1) : \
+        (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_DelSlice(obj, a, b)) : \
+            (PyErr_Format(PyExc_TypeError, "'%.200s' object doesn't support slice deletion", (obj)->ob_type->tp_name), -1)))
+#endif
+#if PY_MAJOR_VERSION >= 3
+  #define PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, self) : PyInstanceMethod_New(func))
+#endif
+#if PY_VERSION_HEX < 0x02050000
+  #define __Pyx_GetAttrString(o,n)   PyObject_GetAttrString((o),((char *)(n)))
+  #define __Pyx_SetAttrString(o,n,a) PyObject_SetAttrString((o),((char *)(n)),(a))
+  #define __Pyx_DelAttrString(o,n)   PyObject_DelAttrString((o),((char *)(n)))
+#else
+  #define __Pyx_GetAttrString(o,n)   PyObject_GetAttrString((o),(n))
+  #define __Pyx_SetAttrString(o,n,a) PyObject_SetAttrString((o),(n),(a))
+  #define __Pyx_DelAttrString(o,n)   PyObject_DelAttrString((o),(n))
+#endif
+#if PY_VERSION_HEX < 0x02050000
+  #define __Pyx_NAMESTR(n) ((char *)(n))
+  #define __Pyx_DOCSTR(n)  ((char *)(n))
+#else
+  #define __Pyx_NAMESTR(n) (n)
+  #define __Pyx_DOCSTR(n)  (n)
+#endif
+
+
+#if PY_MAJOR_VERSION >= 3
+  #define __Pyx_PyNumber_Divide(x,y)         PyNumber_TrueDivide(x,y)
+  #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceTrueDivide(x,y)
+#else
+  #define __Pyx_PyNumber_Divide(x,y)         PyNumber_Divide(x,y)
+  #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceDivide(x,y)
+#endif
+
+#ifndef __PYX_EXTERN_C
+  #ifdef __cplusplus
+    #define __PYX_EXTERN_C extern "C"
+  #else
+    #define __PYX_EXTERN_C extern
+  #endif
+#endif
+
+#if defined(WIN32) || defined(MS_WINDOWS)
+#define _USE_MATH_DEFINES
+#endif
+#include <math.h>
+#define __PYX_HAVE__h5py__h5z
+#define __PYX_HAVE_API__h5py__h5z
+#include "stdlib.h"
+#include "string.h"
+#include "time.h"
+#include "unistd.h"
+#include "stdint.h"
+#include "api_compat.h"
+#include "lzf_filter.h"
+#include "hdf5.h"
+#include "H5Cpublic.h"
+#include "hdf5_hl.h"
+#ifdef _OPENMP
+#include <omp.h>
+#endif /* _OPENMP */
+
+#ifdef PYREX_WITHOUT_ASSERTIONS
+#define CYTHON_WITHOUT_ASSERTIONS
+#endif
+
+#ifndef CYTHON_INLINE
+  #if defined(__GNUC__)
+    #define CYTHON_INLINE __inline__
+  #elif defined(_MSC_VER)
+    #define CYTHON_INLINE __inline
+  #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+    #define CYTHON_INLINE inline
+  #else
+    #define CYTHON_INLINE
+  #endif
+#endif
+#ifndef CYTHON_UNUSED
+# if defined(__GNUC__)
+#   if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
+#     define CYTHON_UNUSED __attribute__ ((__unused__))
+#   else
+#     define CYTHON_UNUSED
+#   endif
+# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER))
+#   define CYTHON_UNUSED __attribute__ ((__unused__))
+# else
+#   define CYTHON_UNUSED
+# endif
+#endif
+typedef struct {PyObject **p; char *s; const long n; const char* encoding; const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; /*proto*/
+
+#define __Pyx_PyBytes_FromUString(s) PyBytes_FromString((char*)s)
+#define __Pyx_PyBytes_AsUString(s)   ((unsigned char*) PyBytes_AsString(s))
+#define __Pyx_Owned_Py_None(b) (Py_INCREF(Py_None), Py_None)
+#define __Pyx_PyBool_FromLong(b) ((b) ? (Py_INCREF(Py_True), Py_True) : (Py_INCREF(Py_False), Py_False))
+static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*);
+static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x);
+static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*);
+static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t);
+static CYTHON_INLINE size_t __Pyx_PyInt_AsSize_t(PyObject*);
+#if CYTHON_COMPILING_IN_CPYTHON
+#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x))
+#else
+#define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x)
+#endif
+#define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x))
+
+
+#ifdef __GNUC__
+  /* Test for GCC > 2.95 */
+  #if __GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))
+    #define likely(x)   __builtin_expect(!!(x), 1)
+    #define unlikely(x) __builtin_expect(!!(x), 0)
+  #else /* __GNUC__ > 2 ... */
+    #define likely(x)   (x)
+    #define unlikely(x) (x)
+  #endif /* __GNUC__ > 2 ... */
+#else /* __GNUC__ */
+  #define likely(x)   (x)
+  #define unlikely(x) (x)
+#endif /* __GNUC__ */
+    
+static PyObject *__pyx_m;
+static PyObject *__pyx_b;
+static PyObject *__pyx_empty_tuple;
+static PyObject *__pyx_empty_bytes;
+static int __pyx_lineno;
+static int __pyx_clineno = 0;
+static const char * __pyx_cfilenm= __FILE__;
+static const char *__pyx_filename;
+
+
+static const char *__pyx_f[] = {
+  "h5z.pyx",
+};
+
+/*--- Type declarations ---*/
+#ifndef CYTHON_REFNANNY
+  #define CYTHON_REFNANNY 0
+#endif
+#if CYTHON_REFNANNY
+  typedef struct {
+    void (*INCREF)(void*, PyObject*, int);
+    void (*DECREF)(void*, PyObject*, int);
+    void (*GOTREF)(void*, PyObject*, int);
+    void (*GIVEREF)(void*, PyObject*, int);
+    void* (*SetupContext)(const char*, int, const char*);
+    void (*FinishContext)(void**);
+  } __Pyx_RefNannyAPIStruct;
+  static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL;
+  static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); /*proto*/
+  #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL;
+#ifdef WITH_THREAD
+  #define __Pyx_RefNannySetupContext(name, acquire_gil) \
+          if (acquire_gil) { \
+              PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); \
+              __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__); \
+              PyGILState_Release(__pyx_gilstate_save); \
+          } else { \
+              __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__); \
+          }
+#else
+  #define __Pyx_RefNannySetupContext(name, acquire_gil) \
+          __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__)
+#endif
+  #define __Pyx_RefNannyFinishContext() \
+          __Pyx_RefNanny->FinishContext(&__pyx_refnanny)
+  #define __Pyx_INCREF(r)  __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_DECREF(r)  __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_GOTREF(r)  __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_XINCREF(r)  do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0)
+  #define __Pyx_XDECREF(r)  do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0)
+  #define __Pyx_XGOTREF(r)  do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0)
+  #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0)
+#else
+  #define __Pyx_RefNannyDeclarations
+  #define __Pyx_RefNannySetupContext(name, acquire_gil)
+  #define __Pyx_RefNannyFinishContext()
+  #define __Pyx_INCREF(r) Py_INCREF(r)
+  #define __Pyx_DECREF(r) Py_DECREF(r)
+  #define __Pyx_GOTREF(r)
+  #define __Pyx_GIVEREF(r)
+  #define __Pyx_XINCREF(r) Py_XINCREF(r)
+  #define __Pyx_XDECREF(r) Py_XDECREF(r)
+  #define __Pyx_XGOTREF(r)
+  #define __Pyx_XGIVEREF(r)
+#endif /* CYTHON_REFNANNY */
+#define __Pyx_CLEAR(r)    do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0)
+#define __Pyx_XCLEAR(r)   do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0)
+
+static CYTHON_INLINE unsigned char __Pyx_PyInt_AsUnsignedChar(PyObject *);
+
+static CYTHON_INLINE unsigned short __Pyx_PyInt_AsUnsignedShort(PyObject *);
+
+static CYTHON_INLINE unsigned int __Pyx_PyInt_AsUnsignedInt(PyObject *);
+
+static CYTHON_INLINE char __Pyx_PyInt_AsChar(PyObject *);
+
+static CYTHON_INLINE short __Pyx_PyInt_AsShort(PyObject *);
+
+static CYTHON_INLINE int __Pyx_PyInt_AsInt(PyObject *);
+
+static CYTHON_INLINE signed char __Pyx_PyInt_AsSignedChar(PyObject *);
+
+static CYTHON_INLINE signed short __Pyx_PyInt_AsSignedShort(PyObject *);
+
+static CYTHON_INLINE signed int __Pyx_PyInt_AsSignedInt(PyObject *);
+
+static CYTHON_INLINE int __Pyx_PyInt_AsLongDouble(PyObject *);
+
+static CYTHON_INLINE unsigned long __Pyx_PyInt_AsUnsignedLong(PyObject *);
+
+static CYTHON_INLINE unsigned PY_LONG_LONG __Pyx_PyInt_AsUnsignedLongLong(PyObject *);
+
+static CYTHON_INLINE long __Pyx_PyInt_AsLong(PyObject *);
+
+static CYTHON_INLINE PY_LONG_LONG __Pyx_PyInt_AsLongLong(PyObject *);
+
+static CYTHON_INLINE signed long __Pyx_PyInt_AsSignedLong(PyObject *);
+
+static CYTHON_INLINE signed PY_LONG_LONG __Pyx_PyInt_AsSignedLongLong(PyObject *);
+
+static int __Pyx_check_binary_version(void);
+
+#if !defined(__Pyx_PyIdentifier_FromString)
+#if PY_MAJOR_VERSION < 3
+  #define __Pyx_PyIdentifier_FromString(s) PyString_FromString(s)
+#else
+  #define __Pyx_PyIdentifier_FromString(s) PyUnicode_FromString(s)
+#endif
+#endif
+
+static PyObject *__Pyx_ImportModule(const char *name); /*proto*/
+
+static int __Pyx_ImportFunction(PyObject *module, const char *funcname, void (**f)(void), const char *sig); /*proto*/
+
+typedef struct {
+    int code_line;
+    PyCodeObject* code_object;
+} __Pyx_CodeObjectCacheEntry;
+struct __Pyx_CodeObjectCache {
+    int count;
+    int max_count;
+    __Pyx_CodeObjectCacheEntry* entries;
+};
+static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL};
+static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line);
+static PyCodeObject *__pyx_find_code_object(int code_line);
+static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object);
+
+static void __Pyx_AddTraceback(const char *funcname, int c_line,
+                               int py_line, const char *filename); /*proto*/
+
+static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); /*proto*/
+
+
+/* Module declarations from 'h5py.api_types_ext' */
+
+/* Module declarations from 'h5py.api_types_hdf5' */
+
+/* Module declarations from 'h5py.defs' */
+static htri_t (*__pyx_f_4h5py_4defs_H5Zfilter_avail)(H5Z_filter_t); /*proto*/
+static herr_t (*__pyx_f_4h5py_4defs_H5Zget_filter_info)(H5Z_filter_t, unsigned int *); /*proto*/
+
+/* Module declarations from 'h5py.h5z' */
+#define __Pyx_MODULE_NAME "h5py.h5z"
+int __pyx_module_is_main_h5py__h5z = 0;
+
+/* Implementation of 'h5py.h5z' */
+static PyObject *__pyx_pf_4h5py_3h5z_filter_avail(CYTHON_UNUSED PyObject *__pyx_self, int __pyx_v_filter_code); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5z_2get_filter_info(CYTHON_UNUSED PyObject *__pyx_self, int __pyx_v_filter_code); /* proto */
+static PyObject *__pyx_pf_4h5py_3h5z_4_register_lzf(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
+static char __pyx_k_1[] = "\n    Filter API and constants.\n";
+static char __pyx_k_2[] = "SZIP_ALLOW_K13_OPTION_MASK";
+static char __pyx_k_3[] = "SZIP_CHIP_OPTION_MASK";
+static char __pyx_k_4[] = "SZIP_MAX_PIXELS_PER_BLOCK";
+static char __pyx_k_5[] = "SO_INT_MINBITS_DEFAULT";
+static char __pyx_k_6[] = "FILTER_CONFIG_ENCODE_ENABLED";
+static char __pyx_k_7[] = "FILTER_CONFIG_DECODE_ENABLED";
+static char __pyx_k_10[] = "/home/computer/h5py/h5py/h5z.pyx";
+static char __pyx_k_11[] = "h5py.h5z";
+static char __pyx_k__flags[] = "flags";
+static char __pyx_k__NO_EDC[] = "NO_EDC";
+static char __pyx_k__SO_INT[] = "SO_INT";
+static char __pyx_k____main__[] = "__main__";
+static char __pyx_k____test__[] = "__test__";
+static char __pyx_k__ERROR_EDC[] = "ERROR_EDC";
+static char __pyx_k__ENABLE_EDC[] = "ENABLE_EDC";
+static char __pyx_k__FILTER_ALL[] = "FILTER_ALL";
+static char __pyx_k__FILTER_LZF[] = "FILTER_LZF";
+static char __pyx_k__FILTER_MAX[] = "FILTER_MAX";
+static char __pyx_k__DISABLE_EDC[] = "DISABLE_EDC";
+static char __pyx_k__FILTER_NBIT[] = "FILTER_NBIT";
+static char __pyx_k__FILTER_NONE[] = "FILTER_NONE";
+static char __pyx_k__FILTER_SZIP[] = "FILTER_SZIP";
+static char __pyx_k__filter_code[] = "filter_code";
+static char __pyx_k__FILTER_ERROR[] = "FILTER_ERROR";
+static char __pyx_k__FLAG_DEFMASK[] = "FLAG_DEFMASK";
+static char __pyx_k__FLAG_INVMASK[] = "FLAG_INVMASK";
+static char __pyx_k__FLAG_REVERSE[] = "FLAG_REVERSE";
+static char __pyx_k__filter_avail[] = "filter_avail";
+static char __pyx_k__FLAG_OPTIONAL[] = "FLAG_OPTIONAL";
+static char __pyx_k__FLAG_SKIP_EDC[] = "FLAG_SKIP_EDC";
+static char __pyx_k___register_lzf[] = "_register_lzf";
+static char __pyx_k__FILTER_DEFLATE[] = "FILTER_DEFLATE";
+static char __pyx_k__FILTER_SHUFFLE[] = "FILTER_SHUFFLE";
+static char __pyx_k__FLAG_MANDATORY[] = "FLAG_MANDATORY";
+static char __pyx_k__FILTER_RESERVED[] = "FILTER_RESERVED";
+static char __pyx_k__SO_FLOAT_DSCALE[] = "SO_FLOAT_DSCALE";
+static char __pyx_k__SO_FLOAT_ESCALE[] = "SO_FLOAT_ESCALE";
+static char __pyx_k__get_filter_info[] = "get_filter_info";
+static char __pyx_k__FILTER_FLETCHER32[] = "FILTER_FLETCHER32";
+static char __pyx_k__FILTER_SCALEOFFSET[] = "FILTER_SCALEOFFSET";
+static char __pyx_k__SZIP_EC_OPTION_MASK[] = "SZIP_EC_OPTION_MASK";
+static char __pyx_k__SZIP_NN_OPTION_MASK[] = "SZIP_NN_OPTION_MASK";
+static PyObject *__pyx_kp_s_10;
+static PyObject *__pyx_n_s_11;
+static PyObject *__pyx_n_s_2;
+static PyObject *__pyx_n_s_3;
+static PyObject *__pyx_n_s_4;
+static PyObject *__pyx_n_s_5;
+static PyObject *__pyx_n_s_6;
+static PyObject *__pyx_n_s_7;
+static PyObject *__pyx_n_s__DISABLE_EDC;
+static PyObject *__pyx_n_s__ENABLE_EDC;
+static PyObject *__pyx_n_s__ERROR_EDC;
+static PyObject *__pyx_n_s__FILTER_ALL;
+static PyObject *__pyx_n_s__FILTER_DEFLATE;
+static PyObject *__pyx_n_s__FILTER_ERROR;
+static PyObject *__pyx_n_s__FILTER_FLETCHER32;
+static PyObject *__pyx_n_s__FILTER_LZF;
+static PyObject *__pyx_n_s__FILTER_MAX;
+static PyObject *__pyx_n_s__FILTER_NBIT;
+static PyObject *__pyx_n_s__FILTER_NONE;
+static PyObject *__pyx_n_s__FILTER_RESERVED;
+static PyObject *__pyx_n_s__FILTER_SCALEOFFSET;
+static PyObject *__pyx_n_s__FILTER_SHUFFLE;
+static PyObject *__pyx_n_s__FILTER_SZIP;
+static PyObject *__pyx_n_s__FLAG_DEFMASK;
+static PyObject *__pyx_n_s__FLAG_INVMASK;
+static PyObject *__pyx_n_s__FLAG_MANDATORY;
+static PyObject *__pyx_n_s__FLAG_OPTIONAL;
+static PyObject *__pyx_n_s__FLAG_REVERSE;
+static PyObject *__pyx_n_s__FLAG_SKIP_EDC;
+static PyObject *__pyx_n_s__NO_EDC;
+static PyObject *__pyx_n_s__SO_FLOAT_DSCALE;
+static PyObject *__pyx_n_s__SO_FLOAT_ESCALE;
+static PyObject *__pyx_n_s__SO_INT;
+static PyObject *__pyx_n_s__SZIP_EC_OPTION_MASK;
+static PyObject *__pyx_n_s__SZIP_NN_OPTION_MASK;
+static PyObject *__pyx_n_s____main__;
+static PyObject *__pyx_n_s____test__;
+static PyObject *__pyx_n_s___register_lzf;
+static PyObject *__pyx_n_s__filter_avail;
+static PyObject *__pyx_n_s__filter_code;
+static PyObject *__pyx_n_s__flags;
+static PyObject *__pyx_n_s__get_filter_info;
+static PyObject *__pyx_k_tuple_8;
+static PyObject *__pyx_k_tuple_12;
+static PyObject *__pyx_k_codeobj_9;
+static PyObject *__pyx_k_codeobj_13;
+static PyObject *__pyx_k_codeobj_14;
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5z_1filter_avail(PyObject *__pyx_self, PyObject *__pyx_arg_filter_code); /*proto*/
+static char __pyx_doc_4h5py_3h5z_filter_avail[] = "(INT filter_code) => BOOL\n\n    Determine if the given filter is available to the library. The\n    filter code should be one of:\n\n    - FILTER_DEFLATE\n    - FILTER_SHUFFLE\n    - FILTER_FLETCHER32\n    - FILTER_SZIP\n    ";
+static PyMethodDef __pyx_mdef_4h5py_3h5z_1filter_avail = {__Pyx_NAMESTR("filter_avail"), (PyCFunction)__pyx_pw_4h5py_3h5z_1filter_avail, METH_O, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5z_filter_avail)};
+static PyObject *__pyx_pw_4h5py_3h5z_1filter_avail(PyObject *__pyx_self, PyObject *__pyx_arg_filter_code) {
+  int __pyx_v_filter_code;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("filter_avail (wrapper)", 0);
+  assert(__pyx_arg_filter_code); {
+    __pyx_v_filter_code = __Pyx_PyInt_AsInt(__pyx_arg_filter_code); if (unlikely((__pyx_v_filter_code == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5z.filter_avail", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_3h5z_filter_avail(__pyx_self, ((int)__pyx_v_filter_code));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5z.pyx":60
+ * 
+ * 
+ * def filter_avail(int filter_code):             # <<<<<<<<<<<<<<
+ *     """(INT filter_code) => BOOL
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5z_filter_avail(CYTHON_UNUSED PyObject *__pyx_self, int __pyx_v_filter_code) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  htri_t __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("filter_avail", 0);
+
+  /* "h5py/h5z.pyx":71
+ *     - FILTER_SZIP
+ *     """
+ *     return <bint>H5Zfilter_avail(<H5Z_filter_t>filter_code)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Zfilter_avail(((H5Z_filter_t)__pyx_v_filter_code)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyBool_FromLong(((int)__pyx_t_1)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5z.filter_avail", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5z_3get_filter_info(PyObject *__pyx_self, PyObject *__pyx_arg_filter_code); /*proto*/
+static char __pyx_doc_4h5py_3h5z_2get_filter_info[] = "(INT filter_code) => INT filter_flags\n\n    Retrieve a bitfield with information about the given filter. The\n    filter code should be one of:\n\n    - FILTER_DEFLATE\n    - FILTER_SHUFFLE\n    - FILTER_FLETCHER32\n    - FILTER_SZIP\n\n    Valid bitmasks for use with the returned bitfield are:\n\n    - FILTER_CONFIG_ENCODE_ENABLED\n    - FILTER_CONFIG_DECODE_ENABLED\n    ";
+static PyMethodDef __pyx_mdef_4h5py_3h5z_3get_filter_info = {__Pyx_NAMESTR("get_filter_info"), (PyCFunction)__pyx_pw_4h5py_3h5z_3get_filter_info, METH_O, __Pyx_DOCSTR(__pyx_doc_4h5py_3h5z_2get_filter_info)};
+static PyObject *__pyx_pw_4h5py_3h5z_3get_filter_info(PyObject *__pyx_self, PyObject *__pyx_arg_filter_code) {
+  int __pyx_v_filter_code;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_filter_info (wrapper)", 0);
+  assert(__pyx_arg_filter_code); {
+    __pyx_v_filter_code = __Pyx_PyInt_AsInt(__pyx_arg_filter_code); if (unlikely((__pyx_v_filter_code == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.h5z.get_filter_info", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_3h5z_2get_filter_info(__pyx_self, ((int)__pyx_v_filter_code));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5z.pyx":74
+ * 
+ * 
+ * def get_filter_info(int filter_code):             # <<<<<<<<<<<<<<
+ *     """(INT filter_code) => INT filter_flags
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5z_2get_filter_info(CYTHON_UNUSED PyObject *__pyx_self, int __pyx_v_filter_code) {
+  unsigned int __pyx_v_flags;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  herr_t __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("get_filter_info", 0);
+
+  /* "h5py/h5z.pyx":91
+ *     """
+ *     cdef unsigned int flags
+ *     H5Zget_filter_info(<H5Z_filter_t>filter_code, &flags)             # <<<<<<<<<<<<<<
+ *     return flags
+ * 
+ */
+  __pyx_t_1 = __pyx_f_4h5py_4defs_H5Zget_filter_info(((H5Z_filter_t)__pyx_v_filter_code), (&__pyx_v_flags)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5z.pyx":92
+ *     cdef unsigned int flags
+ *     H5Zget_filter_info(<H5Z_filter_t>filter_code, &flags)
+ *     return flags             # <<<<<<<<<<<<<<
+ * 
+ * def _register_lzf():
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_2 = PyLong_FromUnsignedLong(__pyx_v_flags); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 92; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("h5py.h5z.get_filter_info", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_3h5z_5_register_lzf(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static PyMethodDef __pyx_mdef_4h5py_3h5z_5_register_lzf = {__Pyx_NAMESTR("_register_lzf"), (PyCFunction)__pyx_pw_4h5py_3h5z_5_register_lzf, METH_NOARGS, __Pyx_DOCSTR(0)};
+static PyObject *__pyx_pw_4h5py_3h5z_5_register_lzf(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("_register_lzf (wrapper)", 0);
+  __pyx_r = __pyx_pf_4h5py_3h5z_4_register_lzf(__pyx_self);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/h5z.pyx":94
+ *     return flags
+ * 
+ * def _register_lzf():             # <<<<<<<<<<<<<<
+ *     register_lzf()
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_3h5z_4_register_lzf(CYTHON_UNUSED PyObject *__pyx_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_register_lzf", 0);
+
+  /* "h5py/h5z.pyx":95
+ * 
+ * def _register_lzf():
+ *     register_lzf()             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_1 = register_lzf(); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py.h5z._register_lzf", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyMethodDef __pyx_methods[] = {
+  {0, 0, 0, 0}
+};
+
+#if PY_MAJOR_VERSION >= 3
+static struct PyModuleDef __pyx_moduledef = {
+  #if PY_VERSION_HEX < 0x03020000
+    { PyObject_HEAD_INIT(NULL) NULL, 0, NULL },
+  #else
+    PyModuleDef_HEAD_INIT,
+  #endif
+    __Pyx_NAMESTR("h5z"),
+    __Pyx_DOCSTR(__pyx_k_1), /* m_doc */
+    -1, /* m_size */
+    __pyx_methods /* m_methods */,
+    NULL, /* m_reload */
+    NULL, /* m_traverse */
+    NULL, /* m_clear */
+    NULL /* m_free */
+};
+#endif
+
+static __Pyx_StringTabEntry __pyx_string_tab[] = {
+  {&__pyx_kp_s_10, __pyx_k_10, sizeof(__pyx_k_10), 0, 0, 1, 0},
+  {&__pyx_n_s_11, __pyx_k_11, sizeof(__pyx_k_11), 0, 0, 1, 1},
+  {&__pyx_n_s_2, __pyx_k_2, sizeof(__pyx_k_2), 0, 0, 1, 1},
+  {&__pyx_n_s_3, __pyx_k_3, sizeof(__pyx_k_3), 0, 0, 1, 1},
+  {&__pyx_n_s_4, __pyx_k_4, sizeof(__pyx_k_4), 0, 0, 1, 1},
+  {&__pyx_n_s_5, __pyx_k_5, sizeof(__pyx_k_5), 0, 0, 1, 1},
+  {&__pyx_n_s_6, __pyx_k_6, sizeof(__pyx_k_6), 0, 0, 1, 1},
+  {&__pyx_n_s_7, __pyx_k_7, sizeof(__pyx_k_7), 0, 0, 1, 1},
+  {&__pyx_n_s__DISABLE_EDC, __pyx_k__DISABLE_EDC, sizeof(__pyx_k__DISABLE_EDC), 0, 0, 1, 1},
+  {&__pyx_n_s__ENABLE_EDC, __pyx_k__ENABLE_EDC, sizeof(__pyx_k__ENABLE_EDC), 0, 0, 1, 1},
+  {&__pyx_n_s__ERROR_EDC, __pyx_k__ERROR_EDC, sizeof(__pyx_k__ERROR_EDC), 0, 0, 1, 1},
+  {&__pyx_n_s__FILTER_ALL, __pyx_k__FILTER_ALL, sizeof(__pyx_k__FILTER_ALL), 0, 0, 1, 1},
+  {&__pyx_n_s__FILTER_DEFLATE, __pyx_k__FILTER_DEFLATE, sizeof(__pyx_k__FILTER_DEFLATE), 0, 0, 1, 1},
+  {&__pyx_n_s__FILTER_ERROR, __pyx_k__FILTER_ERROR, sizeof(__pyx_k__FILTER_ERROR), 0, 0, 1, 1},
+  {&__pyx_n_s__FILTER_FLETCHER32, __pyx_k__FILTER_FLETCHER32, sizeof(__pyx_k__FILTER_FLETCHER32), 0, 0, 1, 1},
+  {&__pyx_n_s__FILTER_LZF, __pyx_k__FILTER_LZF, sizeof(__pyx_k__FILTER_LZF), 0, 0, 1, 1},
+  {&__pyx_n_s__FILTER_MAX, __pyx_k__FILTER_MAX, sizeof(__pyx_k__FILTER_MAX), 0, 0, 1, 1},
+  {&__pyx_n_s__FILTER_NBIT, __pyx_k__FILTER_NBIT, sizeof(__pyx_k__FILTER_NBIT), 0, 0, 1, 1},
+  {&__pyx_n_s__FILTER_NONE, __pyx_k__FILTER_NONE, sizeof(__pyx_k__FILTER_NONE), 0, 0, 1, 1},
+  {&__pyx_n_s__FILTER_RESERVED, __pyx_k__FILTER_RESERVED, sizeof(__pyx_k__FILTER_RESERVED), 0, 0, 1, 1},
+  {&__pyx_n_s__FILTER_SCALEOFFSET, __pyx_k__FILTER_SCALEOFFSET, sizeof(__pyx_k__FILTER_SCALEOFFSET), 0, 0, 1, 1},
+  {&__pyx_n_s__FILTER_SHUFFLE, __pyx_k__FILTER_SHUFFLE, sizeof(__pyx_k__FILTER_SHUFFLE), 0, 0, 1, 1},
+  {&__pyx_n_s__FILTER_SZIP, __pyx_k__FILTER_SZIP, sizeof(__pyx_k__FILTER_SZIP), 0, 0, 1, 1},
+  {&__pyx_n_s__FLAG_DEFMASK, __pyx_k__FLAG_DEFMASK, sizeof(__pyx_k__FLAG_DEFMASK), 0, 0, 1, 1},
+  {&__pyx_n_s__FLAG_INVMASK, __pyx_k__FLAG_INVMASK, sizeof(__pyx_k__FLAG_INVMASK), 0, 0, 1, 1},
+  {&__pyx_n_s__FLAG_MANDATORY, __pyx_k__FLAG_MANDATORY, sizeof(__pyx_k__FLAG_MANDATORY), 0, 0, 1, 1},
+  {&__pyx_n_s__FLAG_OPTIONAL, __pyx_k__FLAG_OPTIONAL, sizeof(__pyx_k__FLAG_OPTIONAL), 0, 0, 1, 1},
+  {&__pyx_n_s__FLAG_REVERSE, __pyx_k__FLAG_REVERSE, sizeof(__pyx_k__FLAG_REVERSE), 0, 0, 1, 1},
+  {&__pyx_n_s__FLAG_SKIP_EDC, __pyx_k__FLAG_SKIP_EDC, sizeof(__pyx_k__FLAG_SKIP_EDC), 0, 0, 1, 1},
+  {&__pyx_n_s__NO_EDC, __pyx_k__NO_EDC, sizeof(__pyx_k__NO_EDC), 0, 0, 1, 1},
+  {&__pyx_n_s__SO_FLOAT_DSCALE, __pyx_k__SO_FLOAT_DSCALE, sizeof(__pyx_k__SO_FLOAT_DSCALE), 0, 0, 1, 1},
+  {&__pyx_n_s__SO_FLOAT_ESCALE, __pyx_k__SO_FLOAT_ESCALE, sizeof(__pyx_k__SO_FLOAT_ESCALE), 0, 0, 1, 1},
+  {&__pyx_n_s__SO_INT, __pyx_k__SO_INT, sizeof(__pyx_k__SO_INT), 0, 0, 1, 1},
+  {&__pyx_n_s__SZIP_EC_OPTION_MASK, __pyx_k__SZIP_EC_OPTION_MASK, sizeof(__pyx_k__SZIP_EC_OPTION_MASK), 0, 0, 1, 1},
+  {&__pyx_n_s__SZIP_NN_OPTION_MASK, __pyx_k__SZIP_NN_OPTION_MASK, sizeof(__pyx_k__SZIP_NN_OPTION_MASK), 0, 0, 1, 1},
+  {&__pyx_n_s____main__, __pyx_k____main__, sizeof(__pyx_k____main__), 0, 0, 1, 1},
+  {&__pyx_n_s____test__, __pyx_k____test__, sizeof(__pyx_k____test__), 0, 0, 1, 1},
+  {&__pyx_n_s___register_lzf, __pyx_k___register_lzf, sizeof(__pyx_k___register_lzf), 0, 0, 1, 1},
+  {&__pyx_n_s__filter_avail, __pyx_k__filter_avail, sizeof(__pyx_k__filter_avail), 0, 0, 1, 1},
+  {&__pyx_n_s__filter_code, __pyx_k__filter_code, sizeof(__pyx_k__filter_code), 0, 0, 1, 1},
+  {&__pyx_n_s__flags, __pyx_k__flags, sizeof(__pyx_k__flags), 0, 0, 1, 1},
+  {&__pyx_n_s__get_filter_info, __pyx_k__get_filter_info, sizeof(__pyx_k__get_filter_info), 0, 0, 1, 1},
+  {0, 0, 0, 0, 0, 0, 0}
+};
+static int __Pyx_InitCachedBuiltins(void) {
+  return 0;
+}
+
+static int __Pyx_InitCachedConstants(void) {
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0);
+
+  /* "h5py/h5z.pyx":60
+ * 
+ * 
+ * def filter_avail(int filter_code):             # <<<<<<<<<<<<<<
+ *     """(INT filter_code) => BOOL
+ * 
+ */
+  __pyx_k_tuple_8 = PyTuple_Pack(2, ((PyObject *)__pyx_n_s__filter_code), ((PyObject *)__pyx_n_s__filter_code)); if (unlikely(!__pyx_k_tuple_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_8);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_8));
+  __pyx_k_codeobj_9 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_8, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_10, __pyx_n_s__filter_avail, 60, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5z.pyx":74
+ * 
+ * 
+ * def get_filter_info(int filter_code):             # <<<<<<<<<<<<<<
+ *     """(INT filter_code) => INT filter_flags
+ * 
+ */
+  __pyx_k_tuple_12 = PyTuple_Pack(3, ((PyObject *)__pyx_n_s__filter_code), ((PyObject *)__pyx_n_s__filter_code), ((PyObject *)__pyx_n_s__flags)); if (unlikely(!__pyx_k_tuple_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_12);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_12));
+  __pyx_k_codeobj_13 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_12, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_10, __pyx_n_s__get_filter_info, 74, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+
+  /* "h5py/h5z.pyx":94
+ *     return flags
+ * 
+ * def _register_lzf():             # <<<<<<<<<<<<<<
+ *     register_lzf()
+ * 
+ */
+  __pyx_k_codeobj_14 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_10, __pyx_n_s___register_lzf, 94, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 94; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_RefNannyFinishContext();
+  return 0;
+  __pyx_L1_error:;
+  __Pyx_RefNannyFinishContext();
+  return -1;
+}
+
+static int __Pyx_InitGlobals(void) {
+  if (__Pyx_InitStrings(__pyx_string_tab) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  return 0;
+  __pyx_L1_error:;
+  return -1;
+}
+
+#if PY_MAJOR_VERSION < 3
+PyMODINIT_FUNC inith5z(void); /*proto*/
+PyMODINIT_FUNC inith5z(void)
+#else
+PyMODINIT_FUNC PyInit_h5z(void); /*proto*/
+PyMODINIT_FUNC PyInit_h5z(void)
+#endif
+{
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  __Pyx_RefNannyDeclarations
+  #if CYTHON_REFNANNY
+  __Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny");
+  if (!__Pyx_RefNanny) {
+      PyErr_Clear();
+      __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny");
+      if (!__Pyx_RefNanny)
+          Py_FatalError("failed to import 'refnanny' module");
+  }
+  #endif
+  __Pyx_RefNannySetupContext("PyMODINIT_FUNC PyInit_h5z(void)", 0);
+  if ( __Pyx_check_binary_version() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #ifdef __Pyx_CyFunction_USED
+  if (__Pyx_CyFunction_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #endif
+  #ifdef __Pyx_FusedFunction_USED
+  if (__pyx_FusedFunction_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #endif
+  #ifdef __Pyx_Generator_USED
+  if (__pyx_Generator_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #endif
+  /*--- Library function declarations ---*/
+  /*--- Threads initialization code ---*/
+  #if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS
+  #ifdef WITH_THREAD /* Python build with threading support? */
+  PyEval_InitThreads();
+  #endif
+  #endif
+  /*--- Module creation code ---*/
+  #if PY_MAJOR_VERSION < 3
+  __pyx_m = Py_InitModule4(__Pyx_NAMESTR("h5z"), __pyx_methods, __Pyx_DOCSTR(__pyx_k_1), 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m);
+  #else
+  __pyx_m = PyModule_Create(&__pyx_moduledef);
+  #endif
+  if (unlikely(!__pyx_m)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #if PY_MAJOR_VERSION >= 3
+  {
+    PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (!PyDict_GetItemString(modules, "h5py.h5z")) {
+      if (unlikely(PyDict_SetItemString(modules, "h5py.h5z", __pyx_m) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    }
+  }
+  #endif
+  __pyx_b = PyImport_AddModule(__Pyx_NAMESTR(__Pyx_BUILTIN_MODULE_NAME)); if (unlikely(!__pyx_b)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #if CYTHON_COMPILING_IN_PYPY
+  Py_INCREF(__pyx_b);
+  #endif
+  if (__Pyx_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  /*--- Initialize various global constants etc. ---*/
+  if (unlikely(__Pyx_InitGlobals() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__pyx_module_is_main_h5py__h5z) {
+    if (__Pyx_SetAttrString(__pyx_m, "__name__", __pyx_n_s____main__) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  }
+  /*--- Builtin init code ---*/
+  if (unlikely(__Pyx_InitCachedBuiltins() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  /*--- Constants init code ---*/
+  if (unlikely(__Pyx_InitCachedConstants() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  /*--- Global init code ---*/
+  /*--- Variable export code ---*/
+  /*--- Function export code ---*/
+  /*--- Type init code ---*/
+  /*--- Type import code ---*/
+  /*--- Variable import code ---*/
+  /*--- Function import code ---*/
+  __pyx_t_1 = __Pyx_ImportModule("h5py.defs"); if (!__pyx_t_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Zfilter_avail", (void (**)(void))&__pyx_f_4h5py_4defs_H5Zfilter_avail, "htri_t (H5Z_filter_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Zget_filter_info", (void (**)(void))&__pyx_f_4h5py_4defs_H5Zget_filter_info, "herr_t (H5Z_filter_t, unsigned int *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  Py_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  /*--- Execution code ---*/
+
+  /* "h5py/h5z.pyx":16
+ * # === Public constants and data structures ====================================
+ * 
+ * FILTER_LZF = H5PY_FILTER_LZF             # <<<<<<<<<<<<<<
+ * 
+ * FILTER_ERROR    = H5Z_FILTER_ERROR
+ */
+  __pyx_t_2 = PyInt_FromLong(H5PY_FILTER_LZF); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__FILTER_LZF, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/h5z.pyx":18
+ * FILTER_LZF = H5PY_FILTER_LZF
+ * 
+ * FILTER_ERROR    = H5Z_FILTER_ERROR             # <<<<<<<<<<<<<<
+ * FILTER_NONE     = H5Z_FILTER_NONE
+ * FILTER_ALL      = H5Z_FILTER_ALL
+ */
+  __pyx_t_2 = PyInt_FromLong(H5Z_FILTER_ERROR); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__FILTER_ERROR, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/h5z.pyx":19
+ * 
+ * FILTER_ERROR    = H5Z_FILTER_ERROR
+ * FILTER_NONE     = H5Z_FILTER_NONE             # <<<<<<<<<<<<<<
+ * FILTER_ALL      = H5Z_FILTER_ALL
+ * FILTER_DEFLATE  = H5Z_FILTER_DEFLATE
+ */
+  __pyx_t_2 = PyInt_FromLong(H5Z_FILTER_NONE); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__FILTER_NONE, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/h5z.pyx":20
+ * FILTER_ERROR    = H5Z_FILTER_ERROR
+ * FILTER_NONE     = H5Z_FILTER_NONE
+ * FILTER_ALL      = H5Z_FILTER_ALL             # <<<<<<<<<<<<<<
+ * FILTER_DEFLATE  = H5Z_FILTER_DEFLATE
+ * FILTER_SHUFFLE  = H5Z_FILTER_SHUFFLE
+ */
+  __pyx_t_2 = PyInt_FromLong(H5Z_FILTER_ALL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__FILTER_ALL, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/h5z.pyx":21
+ * FILTER_NONE     = H5Z_FILTER_NONE
+ * FILTER_ALL      = H5Z_FILTER_ALL
+ * FILTER_DEFLATE  = H5Z_FILTER_DEFLATE             # <<<<<<<<<<<<<<
+ * FILTER_SHUFFLE  = H5Z_FILTER_SHUFFLE
+ * FILTER_FLETCHER32 = H5Z_FILTER_FLETCHER32
+ */
+  __pyx_t_2 = PyInt_FromLong(H5Z_FILTER_DEFLATE); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__FILTER_DEFLATE, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/h5z.pyx":22
+ * FILTER_ALL      = H5Z_FILTER_ALL
+ * FILTER_DEFLATE  = H5Z_FILTER_DEFLATE
+ * FILTER_SHUFFLE  = H5Z_FILTER_SHUFFLE             # <<<<<<<<<<<<<<
+ * FILTER_FLETCHER32 = H5Z_FILTER_FLETCHER32
+ * FILTER_SZIP     = H5Z_FILTER_SZIP
+ */
+  __pyx_t_2 = PyInt_FromLong(H5Z_FILTER_SHUFFLE); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__FILTER_SHUFFLE, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/h5z.pyx":23
+ * FILTER_DEFLATE  = H5Z_FILTER_DEFLATE
+ * FILTER_SHUFFLE  = H5Z_FILTER_SHUFFLE
+ * FILTER_FLETCHER32 = H5Z_FILTER_FLETCHER32             # <<<<<<<<<<<<<<
+ * FILTER_SZIP     = H5Z_FILTER_SZIP
+ * FILTER_NBIT     = H5Z_FILTER_NBIT
+ */
+  __pyx_t_2 = PyInt_FromLong(H5Z_FILTER_FLETCHER32); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__FILTER_FLETCHER32, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/h5z.pyx":24
+ * FILTER_SHUFFLE  = H5Z_FILTER_SHUFFLE
+ * FILTER_FLETCHER32 = H5Z_FILTER_FLETCHER32
+ * FILTER_SZIP     = H5Z_FILTER_SZIP             # <<<<<<<<<<<<<<
+ * FILTER_NBIT     = H5Z_FILTER_NBIT
+ * FILTER_SCALEOFFSET = H5Z_FILTER_SCALEOFFSET
+ */
+  __pyx_t_2 = PyInt_FromLong(H5Z_FILTER_SZIP); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__FILTER_SZIP, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/h5z.pyx":25
+ * FILTER_FLETCHER32 = H5Z_FILTER_FLETCHER32
+ * FILTER_SZIP     = H5Z_FILTER_SZIP
+ * FILTER_NBIT     = H5Z_FILTER_NBIT             # <<<<<<<<<<<<<<
+ * FILTER_SCALEOFFSET = H5Z_FILTER_SCALEOFFSET
+ * FILTER_RESERVED = H5Z_FILTER_RESERVED
+ */
+  __pyx_t_2 = PyInt_FromLong(H5Z_FILTER_NBIT); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__FILTER_NBIT, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/h5z.pyx":26
+ * FILTER_SZIP     = H5Z_FILTER_SZIP
+ * FILTER_NBIT     = H5Z_FILTER_NBIT
+ * FILTER_SCALEOFFSET = H5Z_FILTER_SCALEOFFSET             # <<<<<<<<<<<<<<
+ * FILTER_RESERVED = H5Z_FILTER_RESERVED
+ * FILTER_MAX      = H5Z_FILTER_MAX
+ */
+  __pyx_t_2 = PyInt_FromLong(H5Z_FILTER_SCALEOFFSET); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__FILTER_SCALEOFFSET, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/h5z.pyx":27
+ * FILTER_NBIT     = H5Z_FILTER_NBIT
+ * FILTER_SCALEOFFSET = H5Z_FILTER_SCALEOFFSET
+ * FILTER_RESERVED = H5Z_FILTER_RESERVED             # <<<<<<<<<<<<<<
+ * FILTER_MAX      = H5Z_FILTER_MAX
+ * 
+ */
+  __pyx_t_2 = PyInt_FromLong(H5Z_FILTER_RESERVED); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__FILTER_RESERVED, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/h5z.pyx":28
+ * FILTER_SCALEOFFSET = H5Z_FILTER_SCALEOFFSET
+ * FILTER_RESERVED = H5Z_FILTER_RESERVED
+ * FILTER_MAX      = H5Z_FILTER_MAX             # <<<<<<<<<<<<<<
+ * 
+ * FLAG_DEFMASK    = H5Z_FLAG_DEFMASK
+ */
+  __pyx_t_2 = PyInt_FromLong(H5Z_FILTER_MAX); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__FILTER_MAX, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/h5z.pyx":30
+ * FILTER_MAX      = H5Z_FILTER_MAX
+ * 
+ * FLAG_DEFMASK    = H5Z_FLAG_DEFMASK             # <<<<<<<<<<<<<<
+ * FLAG_MANDATORY  = H5Z_FLAG_MANDATORY
+ * FLAG_OPTIONAL   = H5Z_FLAG_OPTIONAL
+ */
+  __pyx_t_2 = PyInt_FromLong(H5Z_FLAG_DEFMASK); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__FLAG_DEFMASK, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/h5z.pyx":31
+ * 
+ * FLAG_DEFMASK    = H5Z_FLAG_DEFMASK
+ * FLAG_MANDATORY  = H5Z_FLAG_MANDATORY             # <<<<<<<<<<<<<<
+ * FLAG_OPTIONAL   = H5Z_FLAG_OPTIONAL
+ * FLAG_INVMASK    = H5Z_FLAG_INVMASK
+ */
+  __pyx_t_2 = PyInt_FromLong(H5Z_FLAG_MANDATORY); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__FLAG_MANDATORY, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/h5z.pyx":32
+ * FLAG_DEFMASK    = H5Z_FLAG_DEFMASK
+ * FLAG_MANDATORY  = H5Z_FLAG_MANDATORY
+ * FLAG_OPTIONAL   = H5Z_FLAG_OPTIONAL             # <<<<<<<<<<<<<<
+ * FLAG_INVMASK    = H5Z_FLAG_INVMASK
+ * FLAG_REVERSE    = H5Z_FLAG_REVERSE
+ */
+  __pyx_t_2 = PyInt_FromLong(H5Z_FLAG_OPTIONAL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__FLAG_OPTIONAL, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/h5z.pyx":33
+ * FLAG_MANDATORY  = H5Z_FLAG_MANDATORY
+ * FLAG_OPTIONAL   = H5Z_FLAG_OPTIONAL
+ * FLAG_INVMASK    = H5Z_FLAG_INVMASK             # <<<<<<<<<<<<<<
+ * FLAG_REVERSE    = H5Z_FLAG_REVERSE
+ * FLAG_SKIP_EDC   = H5Z_FLAG_SKIP_EDC
+ */
+  __pyx_t_2 = PyInt_FromLong(H5Z_FLAG_INVMASK); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__FLAG_INVMASK, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/h5z.pyx":34
+ * FLAG_OPTIONAL   = H5Z_FLAG_OPTIONAL
+ * FLAG_INVMASK    = H5Z_FLAG_INVMASK
+ * FLAG_REVERSE    = H5Z_FLAG_REVERSE             # <<<<<<<<<<<<<<
+ * FLAG_SKIP_EDC   = H5Z_FLAG_SKIP_EDC
+ * 
+ */
+  __pyx_t_2 = PyInt_FromLong(H5Z_FLAG_REVERSE); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__FLAG_REVERSE, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/h5z.pyx":35
+ * FLAG_INVMASK    = H5Z_FLAG_INVMASK
+ * FLAG_REVERSE    = H5Z_FLAG_REVERSE
+ * FLAG_SKIP_EDC   = H5Z_FLAG_SKIP_EDC             # <<<<<<<<<<<<<<
+ * 
+ * SZIP_ALLOW_K13_OPTION_MASK  = H5_SZIP_ALLOW_K13_OPTION_MASK   #1
+ */
+  __pyx_t_2 = PyInt_FromLong(H5Z_FLAG_SKIP_EDC); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__FLAG_SKIP_EDC, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/h5z.pyx":37
+ * FLAG_SKIP_EDC   = H5Z_FLAG_SKIP_EDC
+ * 
+ * SZIP_ALLOW_K13_OPTION_MASK  = H5_SZIP_ALLOW_K13_OPTION_MASK   #1             # <<<<<<<<<<<<<<
+ * SZIP_CHIP_OPTION_MASK       = H5_SZIP_CHIP_OPTION_MASK        #2
+ * SZIP_EC_OPTION_MASK         = H5_SZIP_EC_OPTION_MASK          #4
+ */
+  __pyx_t_2 = PyInt_FromLong(H5_SZIP_ALLOW_K13_OPTION_MASK); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_2, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/h5z.pyx":38
+ * 
+ * SZIP_ALLOW_K13_OPTION_MASK  = H5_SZIP_ALLOW_K13_OPTION_MASK   #1
+ * SZIP_CHIP_OPTION_MASK       = H5_SZIP_CHIP_OPTION_MASK        #2             # <<<<<<<<<<<<<<
+ * SZIP_EC_OPTION_MASK         = H5_SZIP_EC_OPTION_MASK          #4
+ * SZIP_NN_OPTION_MASK         = H5_SZIP_NN_OPTION_MASK          #32
+ */
+  __pyx_t_2 = PyInt_FromLong(H5_SZIP_CHIP_OPTION_MASK); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_3, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/h5z.pyx":39
+ * SZIP_ALLOW_K13_OPTION_MASK  = H5_SZIP_ALLOW_K13_OPTION_MASK   #1
+ * SZIP_CHIP_OPTION_MASK       = H5_SZIP_CHIP_OPTION_MASK        #2
+ * SZIP_EC_OPTION_MASK         = H5_SZIP_EC_OPTION_MASK          #4             # <<<<<<<<<<<<<<
+ * SZIP_NN_OPTION_MASK         = H5_SZIP_NN_OPTION_MASK          #32
+ * SZIP_MAX_PIXELS_PER_BLOCK   = H5_SZIP_MAX_PIXELS_PER_BLOCK    #32
+ */
+  __pyx_t_2 = PyInt_FromLong(H5_SZIP_EC_OPTION_MASK); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__SZIP_EC_OPTION_MASK, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/h5z.pyx":40
+ * SZIP_CHIP_OPTION_MASK       = H5_SZIP_CHIP_OPTION_MASK        #2
+ * SZIP_EC_OPTION_MASK         = H5_SZIP_EC_OPTION_MASK          #4
+ * SZIP_NN_OPTION_MASK         = H5_SZIP_NN_OPTION_MASK          #32             # <<<<<<<<<<<<<<
+ * SZIP_MAX_PIXELS_PER_BLOCK   = H5_SZIP_MAX_PIXELS_PER_BLOCK    #32
+ * 
+ */
+  __pyx_t_2 = PyInt_FromLong(H5_SZIP_NN_OPTION_MASK); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__SZIP_NN_OPTION_MASK, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/h5z.pyx":41
+ * SZIP_EC_OPTION_MASK         = H5_SZIP_EC_OPTION_MASK          #4
+ * SZIP_NN_OPTION_MASK         = H5_SZIP_NN_OPTION_MASK          #32
+ * SZIP_MAX_PIXELS_PER_BLOCK   = H5_SZIP_MAX_PIXELS_PER_BLOCK    #32             # <<<<<<<<<<<<<<
+ * 
+ * SO_FLOAT_DSCALE = H5Z_SO_FLOAT_DSCALE
+ */
+  __pyx_t_2 = PyInt_FromLong(H5_SZIP_MAX_PIXELS_PER_BLOCK); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_4, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/h5z.pyx":43
+ * SZIP_MAX_PIXELS_PER_BLOCK   = H5_SZIP_MAX_PIXELS_PER_BLOCK    #32
+ * 
+ * SO_FLOAT_DSCALE = H5Z_SO_FLOAT_DSCALE             # <<<<<<<<<<<<<<
+ * SO_FLOAT_ESCALE = H5Z_SO_FLOAT_ESCALE
+ * SO_INT          = H5Z_SO_INT
+ */
+  __pyx_t_2 = PyInt_FromLong(H5Z_SO_FLOAT_DSCALE); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__SO_FLOAT_DSCALE, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/h5z.pyx":44
+ * 
+ * SO_FLOAT_DSCALE = H5Z_SO_FLOAT_DSCALE
+ * SO_FLOAT_ESCALE = H5Z_SO_FLOAT_ESCALE             # <<<<<<<<<<<<<<
+ * SO_INT          = H5Z_SO_INT
+ * SO_INT_MINBITS_DEFAULT = H5Z_SO_INT_MINBITS_DEFAULT
+ */
+  __pyx_t_2 = PyInt_FromLong(H5Z_SO_FLOAT_ESCALE); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__SO_FLOAT_ESCALE, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/h5z.pyx":45
+ * SO_FLOAT_DSCALE = H5Z_SO_FLOAT_DSCALE
+ * SO_FLOAT_ESCALE = H5Z_SO_FLOAT_ESCALE
+ * SO_INT          = H5Z_SO_INT             # <<<<<<<<<<<<<<
+ * SO_INT_MINBITS_DEFAULT = H5Z_SO_INT_MINBITS_DEFAULT
+ * 
+ */
+  __pyx_t_2 = PyInt_FromLong(H5Z_SO_INT); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__SO_INT, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/h5z.pyx":46
+ * SO_FLOAT_ESCALE = H5Z_SO_FLOAT_ESCALE
+ * SO_INT          = H5Z_SO_INT
+ * SO_INT_MINBITS_DEFAULT = H5Z_SO_INT_MINBITS_DEFAULT             # <<<<<<<<<<<<<<
+ * 
+ * FILTER_CONFIG_ENCODE_ENABLED = H5Z_FILTER_CONFIG_ENCODE_ENABLED
+ */
+  __pyx_t_2 = PyInt_FromLong(H5Z_SO_INT_MINBITS_DEFAULT); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_5, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/h5z.pyx":48
+ * SO_INT_MINBITS_DEFAULT = H5Z_SO_INT_MINBITS_DEFAULT
+ * 
+ * FILTER_CONFIG_ENCODE_ENABLED = H5Z_FILTER_CONFIG_ENCODE_ENABLED             # <<<<<<<<<<<<<<
+ * FILTER_CONFIG_DECODE_ENABLED = H5Z_FILTER_CONFIG_DECODE_ENABLED
+ * 
+ */
+  __pyx_t_2 = PyInt_FromLong(H5Z_FILTER_CONFIG_ENCODE_ENABLED); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_6, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/h5z.pyx":49
+ * 
+ * FILTER_CONFIG_ENCODE_ENABLED = H5Z_FILTER_CONFIG_ENCODE_ENABLED
+ * FILTER_CONFIG_DECODE_ENABLED = H5Z_FILTER_CONFIG_DECODE_ENABLED             # <<<<<<<<<<<<<<
+ * 
+ * ERROR_EDC   = H5Z_ERROR_EDC
+ */
+  __pyx_t_2 = PyInt_FromLong(H5Z_FILTER_CONFIG_DECODE_ENABLED); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_7, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/h5z.pyx":51
+ * FILTER_CONFIG_DECODE_ENABLED = H5Z_FILTER_CONFIG_DECODE_ENABLED
+ * 
+ * ERROR_EDC   = H5Z_ERROR_EDC             # <<<<<<<<<<<<<<
+ * DISABLE_EDC = H5Z_DISABLE_EDC
+ * ENABLE_EDC  = H5Z_ENABLE_EDC
+ */
+  __pyx_t_2 = PyInt_FromLong(H5Z_ERROR_EDC); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ERROR_EDC, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/h5z.pyx":52
+ * 
+ * ERROR_EDC   = H5Z_ERROR_EDC
+ * DISABLE_EDC = H5Z_DISABLE_EDC             # <<<<<<<<<<<<<<
+ * ENABLE_EDC  = H5Z_ENABLE_EDC
+ * NO_EDC      = H5Z_NO_EDC
+ */
+  __pyx_t_2 = PyInt_FromLong(H5Z_DISABLE_EDC); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__DISABLE_EDC, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/h5z.pyx":53
+ * ERROR_EDC   = H5Z_ERROR_EDC
+ * DISABLE_EDC = H5Z_DISABLE_EDC
+ * ENABLE_EDC  = H5Z_ENABLE_EDC             # <<<<<<<<<<<<<<
+ * NO_EDC      = H5Z_NO_EDC
+ * 
+ */
+  __pyx_t_2 = PyInt_FromLong(H5Z_ENABLE_EDC); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ENABLE_EDC, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/h5z.pyx":54
+ * DISABLE_EDC = H5Z_DISABLE_EDC
+ * ENABLE_EDC  = H5Z_ENABLE_EDC
+ * NO_EDC      = H5Z_NO_EDC             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_t_2 = PyInt_FromLong(H5Z_NO_EDC); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__NO_EDC, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/h5z.pyx":60
+ * 
+ * 
+ * def filter_avail(int filter_code):             # <<<<<<<<<<<<<<
+ *     """(INT filter_code) => BOOL
+ * 
+ */
+  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_4h5py_3h5z_1filter_avail, NULL, __pyx_n_s_11); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__filter_avail, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/h5z.pyx":74
+ * 
+ * 
+ * def get_filter_info(int filter_code):             # <<<<<<<<<<<<<<
+ *     """(INT filter_code) => INT filter_flags
+ * 
+ */
+  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_4h5py_3h5z_3get_filter_info, NULL, __pyx_n_s_11); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__get_filter_info, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/h5z.pyx":94
+ *     return flags
+ * 
+ * def _register_lzf():             # <<<<<<<<<<<<<<
+ *     register_lzf()
+ * 
+ */
+  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_4h5py_3h5z_5_register_lzf, NULL, __pyx_n_s_11); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 94; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s___register_lzf, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 94; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/h5z.pyx":1
+ * # This file is part of h5py, a Python interface to the HDF5 library.             # <<<<<<<<<<<<<<
+ * #
+ * # http://www.h5py.org
+ */
+  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s____test__, ((PyObject *)__pyx_t_2)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  if (__pyx_m) {
+    __Pyx_AddTraceback("init h5py.h5z", __pyx_clineno, __pyx_lineno, __pyx_filename);
+    Py_DECREF(__pyx_m); __pyx_m = 0;
+  } else if (!PyErr_Occurred()) {
+    PyErr_SetString(PyExc_ImportError, "init h5py.h5z");
+  }
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  #if PY_MAJOR_VERSION < 3
+  return;
+  #else
+  return __pyx_m;
+  #endif
+}
+
+/* Runtime support code */
+#if CYTHON_REFNANNY
+static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) {
+    PyObject *m = NULL, *p = NULL;
+    void *r = NULL;
+    m = PyImport_ImportModule((char *)modname);
+    if (!m) goto end;
+    p = PyObject_GetAttrString(m, (char *)"RefNannyAPI");
+    if (!p) goto end;
+    r = PyLong_AsVoidPtr(p);
+end:
+    Py_XDECREF(p);
+    Py_XDECREF(m);
+    return (__Pyx_RefNannyAPIStruct *)r;
+}
+#endif /* CYTHON_REFNANNY */
+
+static CYTHON_INLINE unsigned char __Pyx_PyInt_AsUnsignedChar(PyObject* x) {
+    const unsigned char neg_one = (unsigned char)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(unsigned char) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(unsigned char)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to unsigned char" :
+                    "value too large to convert to unsigned char");
+            }
+            return (unsigned char)-1;
+        }
+        return (unsigned char)val;
+    }
+    return (unsigned char)__Pyx_PyInt_AsUnsignedLong(x);
+}
+
+static CYTHON_INLINE unsigned short __Pyx_PyInt_AsUnsignedShort(PyObject* x) {
+    const unsigned short neg_one = (unsigned short)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(unsigned short) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(unsigned short)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to unsigned short" :
+                    "value too large to convert to unsigned short");
+            }
+            return (unsigned short)-1;
+        }
+        return (unsigned short)val;
+    }
+    return (unsigned short)__Pyx_PyInt_AsUnsignedLong(x);
+}
+
+static CYTHON_INLINE unsigned int __Pyx_PyInt_AsUnsignedInt(PyObject* x) {
+    const unsigned int neg_one = (unsigned int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(unsigned int) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(unsigned int)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to unsigned int" :
+                    "value too large to convert to unsigned int");
+            }
+            return (unsigned int)-1;
+        }
+        return (unsigned int)val;
+    }
+    return (unsigned int)__Pyx_PyInt_AsUnsignedLong(x);
+}
+
+static CYTHON_INLINE char __Pyx_PyInt_AsChar(PyObject* x) {
+    const char neg_one = (char)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(char) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(char)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to char" :
+                    "value too large to convert to char");
+            }
+            return (char)-1;
+        }
+        return (char)val;
+    }
+    return (char)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE short __Pyx_PyInt_AsShort(PyObject* x) {
+    const short neg_one = (short)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(short) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(short)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to short" :
+                    "value too large to convert to short");
+            }
+            return (short)-1;
+        }
+        return (short)val;
+    }
+    return (short)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE int __Pyx_PyInt_AsInt(PyObject* x) {
+    const int neg_one = (int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(int) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(int)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to int" :
+                    "value too large to convert to int");
+            }
+            return (int)-1;
+        }
+        return (int)val;
+    }
+    return (int)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE signed char __Pyx_PyInt_AsSignedChar(PyObject* x) {
+    const signed char neg_one = (signed char)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(signed char) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(signed char)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to signed char" :
+                    "value too large to convert to signed char");
+            }
+            return (signed char)-1;
+        }
+        return (signed char)val;
+    }
+    return (signed char)__Pyx_PyInt_AsSignedLong(x);
+}
+
+static CYTHON_INLINE signed short __Pyx_PyInt_AsSignedShort(PyObject* x) {
+    const signed short neg_one = (signed short)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(signed short) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(signed short)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to signed short" :
+                    "value too large to convert to signed short");
+            }
+            return (signed short)-1;
+        }
+        return (signed short)val;
+    }
+    return (signed short)__Pyx_PyInt_AsSignedLong(x);
+}
+
+static CYTHON_INLINE signed int __Pyx_PyInt_AsSignedInt(PyObject* x) {
+    const signed int neg_one = (signed int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(signed int) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(signed int)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to signed int" :
+                    "value too large to convert to signed int");
+            }
+            return (signed int)-1;
+        }
+        return (signed int)val;
+    }
+    return (signed int)__Pyx_PyInt_AsSignedLong(x);
+}
+
+static CYTHON_INLINE int __Pyx_PyInt_AsLongDouble(PyObject* x) {
+    const int neg_one = (int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(int) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(int)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to int" :
+                    "value too large to convert to int");
+            }
+            return (int)-1;
+        }
+        return (int)val;
+    }
+    return (int)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE unsigned long __Pyx_PyInt_AsUnsignedLong(PyObject* x) {
+    const unsigned long neg_one = (unsigned long)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to unsigned long");
+            return (unsigned long)-1;
+        }
+        return (unsigned long)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to unsigned long");
+                return (unsigned long)-1;
+            }
+            return (unsigned long)PyLong_AsUnsignedLong(x);
+        } else {
+            return (unsigned long)PyLong_AsLong(x);
+        }
+    } else {
+        unsigned long val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (unsigned long)-1;
+        val = __Pyx_PyInt_AsUnsignedLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE unsigned PY_LONG_LONG __Pyx_PyInt_AsUnsignedLongLong(PyObject* x) {
+    const unsigned PY_LONG_LONG neg_one = (unsigned PY_LONG_LONG)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to unsigned PY_LONG_LONG");
+            return (unsigned PY_LONG_LONG)-1;
+        }
+        return (unsigned PY_LONG_LONG)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to unsigned PY_LONG_LONG");
+                return (unsigned PY_LONG_LONG)-1;
+            }
+            return (unsigned PY_LONG_LONG)PyLong_AsUnsignedLongLong(x);
+        } else {
+            return (unsigned PY_LONG_LONG)PyLong_AsLongLong(x);
+        }
+    } else {
+        unsigned PY_LONG_LONG val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (unsigned PY_LONG_LONG)-1;
+        val = __Pyx_PyInt_AsUnsignedLongLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE long __Pyx_PyInt_AsLong(PyObject* x) {
+    const long neg_one = (long)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to long");
+            return (long)-1;
+        }
+        return (long)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to long");
+                return (long)-1;
+            }
+            return (long)PyLong_AsUnsignedLong(x);
+        } else {
+            return (long)PyLong_AsLong(x);
+        }
+    } else {
+        long val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (long)-1;
+        val = __Pyx_PyInt_AsLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE PY_LONG_LONG __Pyx_PyInt_AsLongLong(PyObject* x) {
+    const PY_LONG_LONG neg_one = (PY_LONG_LONG)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to PY_LONG_LONG");
+            return (PY_LONG_LONG)-1;
+        }
+        return (PY_LONG_LONG)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to PY_LONG_LONG");
+                return (PY_LONG_LONG)-1;
+            }
+            return (PY_LONG_LONG)PyLong_AsUnsignedLongLong(x);
+        } else {
+            return (PY_LONG_LONG)PyLong_AsLongLong(x);
+        }
+    } else {
+        PY_LONG_LONG val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (PY_LONG_LONG)-1;
+        val = __Pyx_PyInt_AsLongLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE signed long __Pyx_PyInt_AsSignedLong(PyObject* x) {
+    const signed long neg_one = (signed long)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to signed long");
+            return (signed long)-1;
+        }
+        return (signed long)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to signed long");
+                return (signed long)-1;
+            }
+            return (signed long)PyLong_AsUnsignedLong(x);
+        } else {
+            return (signed long)PyLong_AsLong(x);
+        }
+    } else {
+        signed long val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (signed long)-1;
+        val = __Pyx_PyInt_AsSignedLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE signed PY_LONG_LONG __Pyx_PyInt_AsSignedLongLong(PyObject* x) {
+    const signed PY_LONG_LONG neg_one = (signed PY_LONG_LONG)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to signed PY_LONG_LONG");
+            return (signed PY_LONG_LONG)-1;
+        }
+        return (signed PY_LONG_LONG)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to signed PY_LONG_LONG");
+                return (signed PY_LONG_LONG)-1;
+            }
+            return (signed PY_LONG_LONG)PyLong_AsUnsignedLongLong(x);
+        } else {
+            return (signed PY_LONG_LONG)PyLong_AsLongLong(x);
+        }
+    } else {
+        signed PY_LONG_LONG val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (signed PY_LONG_LONG)-1;
+        val = __Pyx_PyInt_AsSignedLongLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static int __Pyx_check_binary_version(void) {
+    char ctversion[4], rtversion[4];
+    PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION);
+    PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion());
+    if (ctversion[0] != rtversion[0] || ctversion[2] != rtversion[2]) {
+        char message[200];
+        PyOS_snprintf(message, sizeof(message),
+                      "compiletime version %s of module '%.100s' "
+                      "does not match runtime version %s",
+                      ctversion, __Pyx_MODULE_NAME, rtversion);
+        #if PY_VERSION_HEX < 0x02050000
+        return PyErr_Warn(NULL, message);
+        #else
+        return PyErr_WarnEx(NULL, message, 1);
+        #endif
+    }
+    return 0;
+}
+
+#ifndef __PYX_HAVE_RT_ImportModule
+#define __PYX_HAVE_RT_ImportModule
+static PyObject *__Pyx_ImportModule(const char *name) {
+    PyObject *py_name = 0;
+    PyObject *py_module = 0;
+    py_name = __Pyx_PyIdentifier_FromString(name);
+    if (!py_name)
+        goto bad;
+    py_module = PyImport_Import(py_name);
+    Py_DECREF(py_name);
+    return py_module;
+bad:
+    Py_XDECREF(py_name);
+    return 0;
+}
+#endif
+
+#ifndef __PYX_HAVE_RT_ImportFunction
+#define __PYX_HAVE_RT_ImportFunction
+static int __Pyx_ImportFunction(PyObject *module, const char *funcname, void (**f)(void), const char *sig) {
+    PyObject *d = 0;
+    PyObject *cobj = 0;
+    union {
+        void (*fp)(void);
+        void *p;
+    } tmp;
+    d = PyObject_GetAttrString(module, (char *)"__pyx_capi__");
+    if (!d)
+        goto bad;
+    cobj = PyDict_GetItemString(d, funcname);
+    if (!cobj) {
+        PyErr_Format(PyExc_ImportError,
+            "%s does not export expected C function %s",
+                PyModule_GetName(module), funcname);
+        goto bad;
+    }
+#if PY_VERSION_HEX >= 0x02070000 && !(PY_MAJOR_VERSION==3 && PY_MINOR_VERSION==0)
+    if (!PyCapsule_IsValid(cobj, sig)) {
+        PyErr_Format(PyExc_TypeError,
+            "C function %s.%s has wrong signature (expected %s, got %s)",
+             PyModule_GetName(module), funcname, sig, PyCapsule_GetName(cobj));
+        goto bad;
+    }
+    tmp.p = PyCapsule_GetPointer(cobj, sig);
+#else
+    {const char *desc, *s1, *s2;
+    desc = (const char *)PyCObject_GetDesc(cobj);
+    if (!desc)
+        goto bad;
+    s1 = desc; s2 = sig;
+    while (*s1 != '\0' && *s1 == *s2) { s1++; s2++; }
+    if (*s1 != *s2) {
+        PyErr_Format(PyExc_TypeError,
+            "C function %s.%s has wrong signature (expected %s, got %s)",
+             PyModule_GetName(module), funcname, sig, desc);
+        goto bad;
+    }
+    tmp.p = PyCObject_AsVoidPtr(cobj);}
+#endif
+    *f = tmp.fp;
+    if (!(*f))
+        goto bad;
+    Py_DECREF(d);
+    return 0;
+bad:
+    Py_XDECREF(d);
+    return -1;
+}
+#endif
+
+static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) {
+    int start = 0, mid = 0, end = count - 1;
+    if (end >= 0 && code_line > entries[end].code_line) {
+        return count;
+    }
+    while (start < end) {
+        mid = (start + end) / 2;
+        if (code_line < entries[mid].code_line) {
+            end = mid;
+        } else if (code_line > entries[mid].code_line) {
+             start = mid + 1;
+        } else {
+            return mid;
+        }
+    }
+    if (code_line <= entries[mid].code_line) {
+        return mid;
+    } else {
+        return mid + 1;
+    }
+}
+static PyCodeObject *__pyx_find_code_object(int code_line) {
+    PyCodeObject* code_object;
+    int pos;
+    if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) {
+        return NULL;
+    }
+    pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
+    if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) {
+        return NULL;
+    }
+    code_object = __pyx_code_cache.entries[pos].code_object;
+    Py_INCREF(code_object);
+    return code_object;
+}
+static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) {
+    int pos, i;
+    __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries;
+    if (unlikely(!code_line)) {
+        return;
+    }
+    if (unlikely(!entries)) {
+        entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry));
+        if (likely(entries)) {
+            __pyx_code_cache.entries = entries;
+            __pyx_code_cache.max_count = 64;
+            __pyx_code_cache.count = 1;
+            entries[0].code_line = code_line;
+            entries[0].code_object = code_object;
+            Py_INCREF(code_object);
+        }
+        return;
+    }
+    pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
+    if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) {
+        PyCodeObject* tmp = entries[pos].code_object;
+        entries[pos].code_object = code_object;
+        Py_DECREF(tmp);
+        return;
+    }
+    if (__pyx_code_cache.count == __pyx_code_cache.max_count) {
+        int new_max = __pyx_code_cache.max_count + 64;
+        entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc(
+            __pyx_code_cache.entries, new_max*sizeof(__Pyx_CodeObjectCacheEntry));
+        if (unlikely(!entries)) {
+            return;
+        }
+        __pyx_code_cache.entries = entries;
+        __pyx_code_cache.max_count = new_max;
+    }
+    for (i=__pyx_code_cache.count; i>pos; i--) {
+        entries[i] = entries[i-1];
+    }
+    entries[pos].code_line = code_line;
+    entries[pos].code_object = code_object;
+    __pyx_code_cache.count++;
+    Py_INCREF(code_object);
+}
+
+#include "compile.h"
+#include "frameobject.h"
+#include "traceback.h"
+static PyCodeObject* __Pyx_CreateCodeObjectForTraceback(
+            const char *funcname, int c_line,
+            int py_line, const char *filename) {
+    PyCodeObject *py_code = 0;
+    PyObject *py_srcfile = 0;
+    PyObject *py_funcname = 0;
+    #if PY_MAJOR_VERSION < 3
+    py_srcfile = PyString_FromString(filename);
+    #else
+    py_srcfile = PyUnicode_FromString(filename);
+    #endif
+    if (!py_srcfile) goto bad;
+    if (c_line) {
+        #if PY_MAJOR_VERSION < 3
+        py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
+        #else
+        py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
+        #endif
+    }
+    else {
+        #if PY_MAJOR_VERSION < 3
+        py_funcname = PyString_FromString(funcname);
+        #else
+        py_funcname = PyUnicode_FromString(funcname);
+        #endif
+    }
+    if (!py_funcname) goto bad;
+    py_code = __Pyx_PyCode_New(
+        0,            /*int argcount,*/
+        0,            /*int kwonlyargcount,*/
+        0,            /*int nlocals,*/
+        0,            /*int stacksize,*/
+        0,            /*int flags,*/
+        __pyx_empty_bytes, /*PyObject *code,*/
+        __pyx_empty_tuple, /*PyObject *consts,*/
+        __pyx_empty_tuple, /*PyObject *names,*/
+        __pyx_empty_tuple, /*PyObject *varnames,*/
+        __pyx_empty_tuple, /*PyObject *freevars,*/
+        __pyx_empty_tuple, /*PyObject *cellvars,*/
+        py_srcfile,   /*PyObject *filename,*/
+        py_funcname,  /*PyObject *name,*/
+        py_line,      /*int firstlineno,*/
+        __pyx_empty_bytes  /*PyObject *lnotab*/
+    );
+    Py_DECREF(py_srcfile);
+    Py_DECREF(py_funcname);
+    return py_code;
+bad:
+    Py_XDECREF(py_srcfile);
+    Py_XDECREF(py_funcname);
+    return NULL;
+}
+static void __Pyx_AddTraceback(const char *funcname, int c_line,
+                               int py_line, const char *filename) {
+    PyCodeObject *py_code = 0;
+    PyObject *py_globals = 0;
+    PyFrameObject *py_frame = 0;
+    py_code = __pyx_find_code_object(c_line ? c_line : py_line);
+    if (!py_code) {
+        py_code = __Pyx_CreateCodeObjectForTraceback(
+            funcname, c_line, py_line, filename);
+        if (!py_code) goto bad;
+        __pyx_insert_code_object(c_line ? c_line : py_line, py_code);
+    }
+    py_globals = PyModule_GetDict(__pyx_m);
+    if (!py_globals) goto bad;
+    py_frame = PyFrame_New(
+        PyThreadState_GET(), /*PyThreadState *tstate,*/
+        py_code,             /*PyCodeObject *code,*/
+        py_globals,          /*PyObject *globals,*/
+        0                    /*PyObject *locals*/
+    );
+    if (!py_frame) goto bad;
+    py_frame->f_lineno = py_line;
+    PyTraceBack_Here(py_frame);
+bad:
+    Py_XDECREF(py_code);
+    Py_XDECREF(py_frame);
+}
+
+static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
+    while (t->p) {
+        #if PY_MAJOR_VERSION < 3
+        if (t->is_unicode) {
+            *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL);
+        } else if (t->intern) {
+            *t->p = PyString_InternFromString(t->s);
+        } else {
+            *t->p = PyString_FromStringAndSize(t->s, t->n - 1);
+        }
+        #else  /* Python 3+ has unicode identifiers */
+        if (t->is_unicode | t->is_str) {
+            if (t->intern) {
+                *t->p = PyUnicode_InternFromString(t->s);
+            } else if (t->encoding) {
+                *t->p = PyUnicode_Decode(t->s, t->n - 1, t->encoding, NULL);
+            } else {
+                *t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1);
+            }
+        } else {
+            *t->p = PyBytes_FromStringAndSize(t->s, t->n - 1);
+        }
+        #endif
+        if (!*t->p)
+            return -1;
+        ++t;
+    }
+    return 0;
+}
+
+static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) {
+   int is_true = x == Py_True;
+   if (is_true | (x == Py_False) | (x == Py_None)) return is_true;
+   else return PyObject_IsTrue(x);
+}
+static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x) {
+  PyNumberMethods *m;
+  const char *name = NULL;
+  PyObject *res = NULL;
+#if PY_VERSION_HEX < 0x03000000
+  if (PyInt_Check(x) || PyLong_Check(x))
+#else
+  if (PyLong_Check(x))
+#endif
+    return Py_INCREF(x), x;
+  m = Py_TYPE(x)->tp_as_number;
+#if PY_VERSION_HEX < 0x03000000
+  if (m && m->nb_int) {
+    name = "int";
+    res = PyNumber_Int(x);
+  }
+  else if (m && m->nb_long) {
+    name = "long";
+    res = PyNumber_Long(x);
+  }
+#else
+  if (m && m->nb_int) {
+    name = "int";
+    res = PyNumber_Long(x);
+  }
+#endif
+  if (res) {
+#if PY_VERSION_HEX < 0x03000000
+    if (!PyInt_Check(res) && !PyLong_Check(res)) {
+#else
+    if (!PyLong_Check(res)) {
+#endif
+      PyErr_Format(PyExc_TypeError,
+                   "__%s__ returned non-%s (type %.200s)",
+                   name, name, Py_TYPE(res)->tp_name);
+      Py_DECREF(res);
+      return NULL;
+    }
+  }
+  else if (!PyErr_Occurred()) {
+    PyErr_SetString(PyExc_TypeError,
+                    "an integer is required");
+  }
+  return res;
+}
+static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
+  Py_ssize_t ival;
+  PyObject* x = PyNumber_Index(b);
+  if (!x) return -1;
+  ival = PyInt_AsSsize_t(x);
+  Py_DECREF(x);
+  return ival;
+}
+static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) {
+#if PY_VERSION_HEX < 0x02050000
+   if (ival <= LONG_MAX)
+       return PyInt_FromLong((long)ival);
+   else {
+       unsigned char *bytes = (unsigned char *) &ival;
+       int one = 1; int little = (int)*(unsigned char*)&one;
+       return _PyLong_FromByteArray(bytes, sizeof(size_t), little, 0);
+   }
+#else
+   return PyInt_FromSize_t(ival);
+#endif
+}
+static CYTHON_INLINE size_t __Pyx_PyInt_AsSize_t(PyObject* x) {
+   unsigned PY_LONG_LONG val = __Pyx_PyInt_AsUnsignedLongLong(x);
+   if (unlikely(val == (unsigned PY_LONG_LONG)-1 && PyErr_Occurred())) {
+       return (size_t)-1;
+   } else if (unlikely(val != (unsigned PY_LONG_LONG)(size_t)val)) {
+       PyErr_SetString(PyExc_OverflowError,
+                       "value too large to convert to size_t");
+       return (size_t)-1;
+   }
+   return (size_t)val;
+}
+
+
+#endif /* Py_PYTHON_H */
diff --git a/h5py/h5z.pxd b/h5py/h5z.pxd
new file mode 100644
index 0000000..2e75510
--- /dev/null
+++ b/h5py/h5z.pxd
@@ -0,0 +1,11 @@
+# This file is part of h5py, a Python interface to the HDF5 library.
+#
+# http://www.h5py.org
+#
+# Copyright 2008-2013 Andrew Collette and contributors
+#
+# License:  Standard 3-clause BSD; see "license.txt" for full license terms
+#           and contributor agreement.
+
+from defs cimport *
+
diff --git a/h5py/h5z.pyx b/h5py/h5z.pyx
new file mode 100644
index 0000000..4b82199
--- /dev/null
+++ b/h5py/h5z.pyx
@@ -0,0 +1,104 @@
+# This file is part of h5py, a Python interface to the HDF5 library.
+#
+# http://www.h5py.org
+#
+# Copyright 2008-2013 Andrew Collette and contributors
+#
+# License:  Standard 3-clause BSD; see "license.txt" for full license terms
+#           and contributor agreement.
+
+"""
+    Filter API and constants.
+"""
+
+# === Public constants and data structures ====================================
+
+FILTER_LZF = H5PY_FILTER_LZF
+
+FILTER_ERROR    = H5Z_FILTER_ERROR
+FILTER_NONE     = H5Z_FILTER_NONE
+FILTER_ALL      = H5Z_FILTER_ALL
+FILTER_DEFLATE  = H5Z_FILTER_DEFLATE
+FILTER_SHUFFLE  = H5Z_FILTER_SHUFFLE
+FILTER_FLETCHER32 = H5Z_FILTER_FLETCHER32
+FILTER_SZIP     = H5Z_FILTER_SZIP
+FILTER_NBIT     = H5Z_FILTER_NBIT
+FILTER_SCALEOFFSET = H5Z_FILTER_SCALEOFFSET
+FILTER_RESERVED = H5Z_FILTER_RESERVED
+FILTER_MAX      = H5Z_FILTER_MAX
+
+FLAG_DEFMASK    = H5Z_FLAG_DEFMASK
+FLAG_MANDATORY  = H5Z_FLAG_MANDATORY
+FLAG_OPTIONAL   = H5Z_FLAG_OPTIONAL
+FLAG_INVMASK    = H5Z_FLAG_INVMASK
+FLAG_REVERSE    = H5Z_FLAG_REVERSE
+FLAG_SKIP_EDC   = H5Z_FLAG_SKIP_EDC
+
+SZIP_ALLOW_K13_OPTION_MASK  = H5_SZIP_ALLOW_K13_OPTION_MASK   #1
+SZIP_CHIP_OPTION_MASK       = H5_SZIP_CHIP_OPTION_MASK        #2
+SZIP_EC_OPTION_MASK         = H5_SZIP_EC_OPTION_MASK          #4
+SZIP_NN_OPTION_MASK         = H5_SZIP_NN_OPTION_MASK          #32
+SZIP_MAX_PIXELS_PER_BLOCK   = H5_SZIP_MAX_PIXELS_PER_BLOCK    #32
+
+SO_FLOAT_DSCALE = H5Z_SO_FLOAT_DSCALE
+SO_FLOAT_ESCALE = H5Z_SO_FLOAT_ESCALE
+SO_INT          = H5Z_SO_INT
+SO_INT_MINBITS_DEFAULT = H5Z_SO_INT_MINBITS_DEFAULT
+
+FILTER_CONFIG_ENCODE_ENABLED = H5Z_FILTER_CONFIG_ENCODE_ENABLED
+FILTER_CONFIG_DECODE_ENABLED = H5Z_FILTER_CONFIG_DECODE_ENABLED
+
+ERROR_EDC   = H5Z_ERROR_EDC
+DISABLE_EDC = H5Z_DISABLE_EDC
+ENABLE_EDC  = H5Z_ENABLE_EDC
+NO_EDC      = H5Z_NO_EDC
+
+
+# === Filter API  =============================================================
+
+
+def filter_avail(int filter_code):
+    """(INT filter_code) => BOOL
+
+    Determine if the given filter is available to the library. The
+    filter code should be one of:
+
+    - FILTER_DEFLATE
+    - FILTER_SHUFFLE
+    - FILTER_FLETCHER32
+    - FILTER_SZIP
+    """
+    return <bint>H5Zfilter_avail(<H5Z_filter_t>filter_code)
+
+
+def get_filter_info(int filter_code):
+    """(INT filter_code) => INT filter_flags
+
+    Retrieve a bitfield with information about the given filter. The
+    filter code should be one of:
+
+    - FILTER_DEFLATE
+    - FILTER_SHUFFLE
+    - FILTER_FLETCHER32
+    - FILTER_SZIP
+
+    Valid bitmasks for use with the returned bitfield are:
+
+    - FILTER_CONFIG_ENCODE_ENABLED
+    - FILTER_CONFIG_DECODE_ENABLED
+    """
+    cdef unsigned int flags
+    H5Zget_filter_info(<H5Z_filter_t>filter_code, &flags)
+    return flags
+
+def _register_lzf():
+    register_lzf()
+
+
+
+
+
+
+
+
+
diff --git a/h5py/highlevel.py b/h5py/highlevel.py
new file mode 100644
index 0000000..88e5470
--- /dev/null
+++ b/h5py/highlevel.py
@@ -0,0 +1,18 @@
+# This file is part of h5py, a Python interface to the HDF5 library.
+#
+# http://www.h5py.org
+#
+# Copyright 2008-2013 Andrew Collette and contributors
+#
+# License:  Standard 3-clause BSD; see "license.txt" for full license terms
+#           and contributor agreement.
+
+from _hl import filters
+from _hl.base import is_hdf5, HLObject
+from _hl.files import File
+from _hl.group import Group, SoftLink, ExternalLink, HardLink
+from _hl.dataset import Dataset
+from _hl.datatype import Datatype
+from _hl.attrs import AttributeManager
+
+
diff --git a/h5py/ipy_completer.py b/h5py/ipy_completer.py
new file mode 100644
index 0000000..3de34d3
--- /dev/null
+++ b/h5py/ipy_completer.py
@@ -0,0 +1,166 @@
+#+
+#
+# This file is part of h5py, a low-level Python interface to the HDF5 library.
+#
+# Contributed by Darren Dale
+#
+# Copyright (C) 2009 Darren Dale
+#
+# http://h5py.alfven.org
+# License: BSD  (See LICENSE.txt for full license)
+#
+#-
+
+"""
+h5py completer extension for ipython. This completer is automatically loaded
+when h5py is imported within ipython. It will let you do things like::
+
+  f=File('foo.h5')
+  f['<tab>
+  # or:
+  f['ite<tab>
+
+which will do tab completion based on the subgroups of `f`. Also::
+
+  f['item1'].at<tab>
+
+will perform tab completion for the attributes in the usual way. This should
+also work::
+
+  a = b = f['item1'].attrs.<tab>
+
+as should::
+
+  f['item1/item2/it<tab>
+
+"""
+
+import posixpath
+import re
+
+try:
+    from IPython.utils import generics
+    from IPython.core.error import TryNext
+    from IPython.core.ipapi import get as ipget
+except ImportError:
+    # support <ipython-0.11
+    from IPython import generics
+    from IPython.ipapi import TryNext, get as ipget
+
+import readline
+
+from h5py.highlevel import AttributeManager, HLObject
+
+re_attr_match = re.compile(r"(?:.*\=)?(.+\[.*\].*)\.(\w*)$")
+re_item_match = re.compile(r"""(?:.*\=)?(.*)\[(?P<s>['|"])(?!.*(?P=s))(.*)$""")
+re_object_match = re.compile(r"(?:.*\=)?(.+?)(?:\[)")
+
+
+def _retrieve_obj(name, context):
+    # we don't want to call any functions, but I couldn't find a robust regex
+    # that filtered them without unintended side effects. So keys containing
+    # "(" will not complete.
+    try:
+        assert '(' not in name
+    except AssertionError:
+        raise ValueError()
+
+    try:
+        # older versions of IPython:
+        obj = eval(name, context.shell.user_ns)
+    except AttributeError:
+        # as of IPython-1.0:
+        obj = eval(name, context.user_ns)
+    return obj
+
+
+def h5py_item_completer(context, command):
+    """Compute possible item matches for dict-like objects"""
+
+    base, item = re_item_match.split(command)[1:4:2]
+
+    try:
+        obj = _retrieve_obj(base, context)
+    except:
+        return []
+
+    path, target = posixpath.split(item)
+    if path:
+        items = (posixpath.join(path, name) for name in obj[path].iterkeys())
+    else:
+        items = obj.iterkeys()
+    items = list(items)
+
+    readline.set_completer_delims(' \t\n`!@#$^&*()=+[{]}\\|;:\'",<>?')
+
+    return [i for i in items if i[:len(item)] == item]
+
+
+def h5py_attr_completer(context, command):
+    """Compute possible attr matches for nested dict-like objects"""
+
+    base, attr = re_attr_match.split(command)[1:3]
+    base = base.strip()
+
+    try:
+        obj = _retrieve_obj(base, context)
+    except:
+        return []
+
+    attrs = dir(obj)
+    try:
+        attrs = generics.complete_object(obj, attrs)
+    except TryNext:
+        pass
+
+    omit__names = None
+    try:
+        # support >=ipython-0.12
+        omit__names = ipget().Completer.omit__names
+    except AttributeError:
+        pass
+    if omit__names is None:
+        try:
+            # support ipython-0.11
+            omit__names = ipget().readline_omit__names
+        except AttributeError:
+            pass
+    if omit__names is None:
+        try:
+            # support <ipython-0.11
+            omit__names = ipget().options.readline_omit__names
+        except AttributeError:
+            omit__names = 0
+    if omit__names == 1:
+        attrs = [a for a in attrs if not a.startswith('__')]
+    elif omit__names == 2:
+        attrs = [a for a in attrs if not a.startswith('_')]
+
+    readline.set_completer_delims(' =')
+
+    return ["%s.%s" % (base, a) for a in attrs if a[:len(attr)] == attr]
+
+
+def h5py_completer(self, event):
+    base = re_object_match.split(event.line)[1]
+
+    if not isinstance(self._ofind(base)['obj'], (AttributeManager, HLObject)):
+        raise TryNext
+
+    try:
+        return h5py_attr_completer(self, event.line)
+    except ValueError:
+        pass
+
+    try:
+        return h5py_item_completer(self, event.line)
+    except ValueError:
+        pass
+
+    return []
+
+
+def load_ipython_extension(ip=None):
+    if ip is None:
+        ip = ipget()
+    ip.set_hook('complete_command', h5py_completer, re_key=r"(?:.*\=)?(.+?)\[")
diff --git a/h5py/lowtest/__init__.py b/h5py/lowtest/__init__.py
new file mode 100644
index 0000000..a23327b
--- /dev/null
+++ b/h5py/lowtest/__init__.py
@@ -0,0 +1,8 @@
+# This file is part of h5py, a Python interface to the HDF5 library.
+#
+# http://www.h5py.org
+#
+# Copyright 2008-2013 Andrew Collette and contributors
+#
+# License:  Standard 3-clause BSD; see "license.txt" for full license terms
+#           and contributor agreement.
diff --git a/h5py/lowtest/test_h5.py b/h5py/lowtest/test_h5.py
new file mode 100644
index 0000000..d759653
--- /dev/null
+++ b/h5py/lowtest/test_h5.py
@@ -0,0 +1,48 @@
+# This file is part of h5py, a Python interface to the HDF5 library.
+#
+# http://www.h5py.org
+#
+# Copyright 2008-2013 Andrew Collette and contributors
+#
+# License:  Standard 3-clause BSD; see "license.txt" for full license terms
+#           and contributor agreement.
+
+try:
+    import unittest2 as ut
+except ImportError:
+    import unittest as ut
+
+from h5py import h5
+
+def fixnames():
+    cfg = h5.get_config()
+    cfg.complex_names = ('r','i')
+
+class TestH5(ut.TestCase):
+
+    def test_config(self):
+        cfg = h5.get_config()
+        self.assertIsInstance(cfg, h5.H5PYConfig)
+        cfg2 = h5.get_config()
+        self.assertIs(cfg, cfg2)
+
+    def test_cnames_get(self):
+        cfg = h5.get_config()
+        self.assertEqual(cfg.complex_names, ('r','i'))
+
+    def test_cnames_set(self):
+        self.addCleanup(fixnames)
+        cfg = h5.get_config()
+        cfg.complex_names = ('q','x')
+        self.assertEqual(cfg.complex_names, ('q','x'))
+
+    def test_cnames_set_exc(self):
+        self.addCleanup(fixnames)
+        cfg = h5.get_config()
+        with self.assertRaises(TypeError):
+            cfg.complex_names = ('q','i','v')
+        self.assertEqual(cfg.complex_names, ('r','i'))
+
+    def test_repr(self):
+        cfg = h5.get_config()
+        repr(cfg)
diff --git a/h5py/lowtest/test_h5f.py b/h5py/lowtest/test_h5f.py
new file mode 100644
index 0000000..76ef362
--- /dev/null
+++ b/h5py/lowtest/test_h5f.py
@@ -0,0 +1,72 @@
+# This file is part of h5py, a Python interface to the HDF5 library.
+#
+# http://www.h5py.org
+#
+# Copyright 2008-2013 Andrew Collette and contributors
+#
+# License:  Standard 3-clause BSD; see "license.txt" for full license terms
+#           and contributor agreement.
+
+try:
+    import unittest2 as ut
+except ImportError:
+    import unittest as ut
+
+import tempfile
+import shutil
+import os
+from h5py import File
+
+
+class TestFileID(ut.TestCase):
+    def test_descriptor_core(self):
+        with File('TestFileID.test_descriptor_core', driver='core', backing_store=False) as f:
+            with self.assertRaises(NotImplementedError):
+                f.id.get_vfd_handle()
+
+    def test_descriptor_sec2(self):
+        dn_tmp = tempfile.mkdtemp('h5py.lowtest.test_h5f.TestFileID.test_descriptor_sec2')
+        fn_h5 = os.path.join(dn_tmp, 'test.h5')
+        try:
+            with File(fn_h5, driver='sec2') as f:
+                descriptor = f.id.get_vfd_handle()
+                self.assertNotEqual(descriptor, 0)
+                os.fsync(descriptor)
+        finally:
+            shutil.rmtree(dn_tmp)
+
+
+class TestCacheConfig(ut.TestCase):
+    def test_simple_gets(self):
+        dn_tmp = tempfile.mkdtemp('h5py.lowtest.test_h5f.TestFileID.TestCacheConfig.test_simple_gets')
+        fn_h5 = os.path.join(dn_tmp, 'test.h5')
+        try:
+            with File(fn_h5) as f:
+                hit_rate = f._id.get_mdc_hit_rate()
+                mdc_size = f._id.get_mdc_size()
+
+        finally:
+            shutil.rmtree(dn_tmp)
+
+    def test_hitrate_reset(self):
+        dn_tmp = tempfile.mkdtemp('h5py.lowtest.test_h5f.TestFileID.TestCacheConfig.test_hitrate_reset')
+        fn_h5 = os.path.join(dn_tmp, 'test.h5')
+        try:
+            with File(fn_h5) as f:
+                hit_rate = f._id.get_mdc_hit_rate()
+                f._id.reset_mdc_hit_rate_stats()
+                hit_rate = f._id.get_mdc_hit_rate()
+                assert hit_rate == 0
+
+        finally:
+            shutil.rmtree(dn_tmp)
+
+    def test_mdc_config_get(self):
+        dn_tmp = tempfile.mkdtemp('h5py.lowtest.test_h5f.TestFileID.TestCacheConfig.test_mdc_config_get')
+        fn_h5 = os.path.join(dn_tmp, 'test.h5')
+        try:
+            with File(fn_h5) as f:
+                conf = f._id.get_mdc_config()
+                f._id.set_mdc_config(conf)
+        finally:
+            shutil.rmtree(dn_tmp)
diff --git a/h5py/lowtest/test_h5p.py b/h5py/lowtest/test_h5p.py
new file mode 100644
index 0000000..c7d0baa
--- /dev/null
+++ b/h5py/lowtest/test_h5p.py
@@ -0,0 +1,91 @@
+# This file is part of h5py, a Python interface to the HDF5 library.
+#
+# http://www.h5py.org
+#
+# Copyright 2008-2013 Andrew Collette and contributors
+#
+# License:  Standard 3-clause BSD; see "license.txt" for full license terms
+#           and contributor agreement.
+
+try:
+    import unittest2 as ut
+except ImportError:
+    import unittest as ut
+
+from h5py import h5p, h5f
+
+class TestLibver(ut.TestCase):
+
+    """
+        Feature: Setting/getting lib ver bounds
+    """
+
+    def test_libver(self):
+        """ Test libver bounds set/get """
+        plist = h5p.create(h5p.FILE_ACCESS)
+        plist.set_libver_bounds(h5f.LIBVER_EARLIEST, h5f.LIBVER_LATEST)
+        self.assertEqual((h5f.LIBVER_EARLIEST, h5f.LIBVER_LATEST),
+                         plist.get_libver_bounds())
+
+
+class TestDA(ut.TestCase):
+    '''
+    Feature: setting/getting chunk cache size on a dataset access property list
+    '''
+    def test_chuck_cache(self):
+        '''test get/set chunk cache '''
+        dalist = h5p.create(h5p.DATASET_ACCESS)
+        nslots = 10000 # 40kb hash table
+        nbytes = 1000000 #1MB cache size
+        w0 = .5 # even blend of eviction strategy
+
+        dalist.set_chunk_cache(nslots, nbytes, w0)
+        self.assertEqual((nslots, nbytes, w0),
+                         dalist.get_chunk_cache())
+
+class TestPL(ut.TestCase):
+    def test_obj_track_times(self):
+        """
+        tests if the object track times  set/get
+        """
+        # test for groups
+        gcid = h5p.create(h5p.GROUP_CREATE)
+        gcid.set_obj_track_times(False)
+        self.assertEqual(False,gcid.get_obj_track_times())
+
+        gcid.set_obj_track_times(True)
+        self.assertEqual(True,gcid.get_obj_track_times())
+        # test for datasets
+        dcid = h5p.create(h5p.DATASET_CREATE)
+        dcid.set_obj_track_times(False)
+        self.assertEqual(False,dcid.get_obj_track_times())
+
+        dcid.set_obj_track_times(True)
+        self.assertEqual(True,dcid.get_obj_track_times())
+
+        # test for generic objects
+        ocid = h5p.create(h5p.OBJECT_CREATE)
+        ocid.set_obj_track_times(False)
+        self.assertEqual(False,ocid.get_obj_track_times())
+
+        ocid.set_obj_track_times(True)
+        self.assertEqual(True,ocid.get_obj_track_times())
+
+    def test_link_creation_tracking(self):
+        """
+        tests the link creation order set/get
+        """
+
+        gcid = h5p.create(h5p.GROUP_CREATE)
+        gcid.set_link_creation_order(0)
+        self.assertEqual(0, gcid.get_link_creation_order())
+
+        flags = h5p.CRT_ORDER_TRACKED|h5p.CRT_ORDER_INDEXED
+        gcid.set_link_creation_order(flags)
+        self.assertEqual(flags, gcid.get_link_creation_order())
+
+        # test for file creation
+        fcpl = h5p.create(h5p.FILE_CREATE)
+        fcpl.set_link_creation_order(flags)
+        self.assertEqual(flags, fcpl.get_link_creation_order())
+
diff --git a/h5py/lowtest/test_h5t.py b/h5py/lowtest/test_h5t.py
new file mode 100644
index 0000000..3d81122
--- /dev/null
+++ b/h5py/lowtest/test_h5t.py
@@ -0,0 +1,36 @@
+# This file is part of h5py, a Python interface to the HDF5 library.
+#
+# http://www.h5py.org
+#
+# Copyright 2008-2013 Andrew Collette and contributors
+#
+# License:  Standard 3-clause BSD; see "license.txt" for full license terms
+#           and contributor agreement.
+
+try:
+    import unittest2 as ut
+except ImportError:
+    import unittest as ut
+
+import numpy as np
+import h5py
+from h5py import h5t
+
+class TestCompound(ut.TestCase):
+
+    """
+        Feature: Compound types can be created from Python dtypes
+    """
+
+    def test_ref(self):
+        """ Reference types are correctly stored in compound types (issue 144)
+        """
+        ref = h5py.special_dtype(ref=h5py.Reference)
+        dt = np.dtype([('a',ref),('b','<f4')])
+        tid = h5t.py_create(dt,logical=True)
+        t1, t2 = tid.get_member_type(0), tid.get_member_type(1)
+        self.assertEqual(t1, h5t.STD_REF_OBJ)
+        self.assertEqual(t2, h5t.IEEE_F32LE)
+        self.assertEqual(tid.get_member_offset(0), 0)
+        self.assertEqual(tid.get_member_offset(1), h5t.STD_REF_OBJ.get_size())
+
diff --git a/h5py/lowtest/test_objects.py b/h5py/lowtest/test_objects.py
new file mode 100644
index 0000000..b568884
--- /dev/null
+++ b/h5py/lowtest/test_objects.py
@@ -0,0 +1,40 @@
+# This file is part of h5py, a Python interface to the HDF5 library.
+#
+# http://www.h5py.org
+#
+# Copyright 2008-2013 Andrew Collette and contributors
+#
+# License:  Standard 3-clause BSD; see "license.txt" for full license terms
+#           and contributor agreement.
+
+try:
+    import unittest2 as ut
+except ImportError:
+    import unittest as ut
+
+from h5py import _objects as o
+
+class TestObjects(ut.TestCase):
+
+    def test_invalid(self):
+        # Check for segfault on close
+        oid = o.ObjectID(0)
+        del oid
+        oid = o.ObjectID(1)
+        del oid
+
+    def test_equality(self):
+        # Identifier-based equality
+        oid1 = o.ObjectID(42)
+        oid2 = o.ObjectID(42)
+        oid3 = o.ObjectID(43)
+
+        self.assertEqual(oid1, oid2)
+        self.assertNotEqual(oid1, oid3)
+
+    def test_hash(self):
+        # Default objects are not hashable
+        oid = o.ObjectID(42)
+        with self.assertRaises(TypeError):
+            hash(oid)
+
diff --git a/h5py/numpy.pxd b/h5py/numpy.pxd
new file mode 100644
index 0000000..f17bb4b
--- /dev/null
+++ b/h5py/numpy.pxd
@@ -0,0 +1,112 @@
+# This file is part of h5py, a Python interface to the HDF5 library.
+#
+# http://www.h5py.org
+#
+# Copyright 2008-2013 Andrew Collette and contributors
+#
+# License:  Standard 3-clause BSD; see "license.txt" for full license terms
+#           and contributor agreement.
+
+# This file is based on code from the PyTables project.  The complete PyTables
+# license is available at licenses/pytables.txt, in the distribution root
+# directory.
+
+# API for NumPy objects
+cdef extern from "numpy/arrayobject.h":
+
+  # Platform independent types
+  ctypedef int npy_intp
+  ctypedef signed int npy_int8
+  ctypedef unsigned int npy_uint8
+  ctypedef signed int npy_int16
+  ctypedef unsigned int npy_uint16
+  ctypedef signed int npy_int32
+  ctypedef unsigned int npy_uint32
+  ctypedef signed long long npy_int64
+  ctypedef unsigned long long npy_uint64
+  ctypedef float npy_float32
+  ctypedef double npy_float64
+
+  cdef enum NPY_TYPES:
+    NPY_BOOL
+    NPY_BYTE
+    NPY_UBYTE
+    NPY_SHORT
+    NPY_USHORT
+    NPY_INT
+    NPY_UINT
+    NPY_LONG
+    NPY_ULONG
+    NPY_LONGLONG
+    NPY_ULONGLONG
+    NPY_FLOAT
+    NPY_DOUBLE
+    NPY_LONGDOUBLE
+    NPY_CFLOAT
+    NPY_CDOUBLE
+    NPY_CLONGDOUBLE
+    NPY_OBJECT
+    NPY_STRING
+    NPY_UNICODE
+    NPY_VOID
+    NPY_NTYPES
+    NPY_NOTYPE
+
+  # Platform independent types
+  cdef enum:
+    NPY_INT8, NPY_INT16, NPY_INT32, NPY_INT64,
+    NPY_UINT8, NPY_UINT16, NPY_UINT32, NPY_UINT64,
+    NPY_FLOAT32, NPY_FLOAT64, NPY_COMPLEX64, NPY_COMPLEX128
+
+  cdef enum:
+    NPY_WRITEABLE, NPY_ALIGNED, NPY_C_CONTIGUOUS, NPY_CONTIGUOUS,
+    NPY_FORCECAST, NPY_NOTSWAPPED, NPY_OWNDATA
+
+  # Classes
+  ctypedef extern class numpy.dtype [object PyArray_Descr]:
+    cdef int type_num, elsize, alignment
+    cdef char type, kind, byteorder, hasobject
+    cdef object fields, typeobj
+
+  ctypedef extern class numpy.ndarray [object PyArrayObject]:
+    cdef char *data
+    cdef int nd
+    cdef npy_intp *dimensions
+    cdef npy_intp *strides
+    cdef object base
+    cdef dtype descr
+    cdef int flags
+
+  ctypedef struct npy_cfloat:
+    float real
+    float imag
+
+  ctypedef struct npy_cdouble:
+    double real
+    double imag
+
+  # Functions
+  int PyArray_DIM(ndarray arr, int i)
+  object PyArray_FROM_OF(object arr, int requirements)
+
+  object PyArray_GETITEM(object arr, void *itemptr)
+  int PyArray_SETITEM(object arr, void *itemptr, object obj)
+  dtype PyArray_DescrFromType(int type)
+  object PyArray_Scalar(void *data, dtype descr, object base)
+  long PyArray_NBYTES(object arr)
+
+  int PyArray_CheckScalar(object sclr)
+  void PyArray_ScalarAsCtype(object sclr, void* ptr)
+  object PyArray_SimpleNew(int nd, npy_intp* dims, int typenum)
+  object PyArray_ContiguousFromAny(object arr, int typenum, int min_depth, int max_depth)
+  object PyArray_FROM_OTF(object arr, int typenum, int requirements)
+
+  # The NumPy initialization function
+  void import_array()
+
+  void* PyArray_DATA(ndarray arr)
+
+
+
+
+
diff --git a/h5py/utils.c b/h5py/utils.c
new file mode 100644
index 0000000..7b3ada9
--- /dev/null
+++ b/h5py/utils.c
@@ -0,0 +1,4252 @@
+/* Generated by Cython 0.18 on Mon Dec  9 16:00:33 2013 */
+
+#define PY_SSIZE_T_CLEAN
+#include "Python.h"
+#ifndef Py_PYTHON_H
+    #error Python headers needed to compile C extensions, please install development version of Python.
+#elif PY_VERSION_HEX < 0x02040000
+    #error Cython requires Python 2.4+.
+#else
+#include <stddef.h> /* For offsetof */
+#ifndef offsetof
+#define offsetof(type, member) ( (size_t) & ((type*)0) -> member )
+#endif
+#if !defined(WIN32) && !defined(MS_WINDOWS)
+  #ifndef __stdcall
+    #define __stdcall
+  #endif
+  #ifndef __cdecl
+    #define __cdecl
+  #endif
+  #ifndef __fastcall
+    #define __fastcall
+  #endif
+#endif
+#ifndef DL_IMPORT
+  #define DL_IMPORT(t) t
+#endif
+#ifndef DL_EXPORT
+  #define DL_EXPORT(t) t
+#endif
+#ifndef PY_LONG_LONG
+  #define PY_LONG_LONG LONG_LONG
+#endif
+#ifndef Py_HUGE_VAL
+  #define Py_HUGE_VAL HUGE_VAL
+#endif
+#ifdef PYPY_VERSION
+#define CYTHON_COMPILING_IN_PYPY 1
+#define CYTHON_COMPILING_IN_CPYTHON 0
+#else
+#define CYTHON_COMPILING_IN_PYPY 0
+#define CYTHON_COMPILING_IN_CPYTHON 1
+#endif
+#if PY_VERSION_HEX < 0x02050000
+  typedef int Py_ssize_t;
+  #define PY_SSIZE_T_MAX INT_MAX
+  #define PY_SSIZE_T_MIN INT_MIN
+  #define PY_FORMAT_SIZE_T ""
+  #define CYTHON_FORMAT_SSIZE_T ""
+  #define PyInt_FromSsize_t(z) PyInt_FromLong(z)
+  #define PyInt_AsSsize_t(o)   __Pyx_PyInt_AsInt(o)
+  #define PyNumber_Index(o)    ((PyNumber_Check(o) && !PyFloat_Check(o)) ? PyNumber_Int(o) : \
+                                (PyErr_Format(PyExc_TypeError, \
+                                              "expected index value, got %.200s", Py_TYPE(o)->tp_name), \
+                                 (PyObject*)0))
+  #define __Pyx_PyIndex_Check(o) (PyNumber_Check(o) && !PyFloat_Check(o) && \
+                                  !PyComplex_Check(o))
+  #define PyIndex_Check __Pyx_PyIndex_Check
+  #define PyErr_WarnEx(category, message, stacklevel) PyErr_Warn(category, message)
+  #define __PYX_BUILD_PY_SSIZE_T "i"
+#else
+  #define __PYX_BUILD_PY_SSIZE_T "n"
+  #define CYTHON_FORMAT_SSIZE_T "z"
+  #define __Pyx_PyIndex_Check PyIndex_Check
+#endif
+#if PY_VERSION_HEX < 0x02060000
+  #define Py_REFCNT(ob) (((PyObject*)(ob))->ob_refcnt)
+  #define Py_TYPE(ob)   (((PyObject*)(ob))->ob_type)
+  #define Py_SIZE(ob)   (((PyVarObject*)(ob))->ob_size)
+  #define PyVarObject_HEAD_INIT(type, size) \
+          PyObject_HEAD_INIT(type) size,
+  #define PyType_Modified(t)
+  typedef struct {
+     void *buf;
+     PyObject *obj;
+     Py_ssize_t len;
+     Py_ssize_t itemsize;
+     int readonly;
+     int ndim;
+     char *format;
+     Py_ssize_t *shape;
+     Py_ssize_t *strides;
+     Py_ssize_t *suboffsets;
+     void *internal;
+  } Py_buffer;
+  #define PyBUF_SIMPLE 0
+  #define PyBUF_WRITABLE 0x0001
+  #define PyBUF_FORMAT 0x0004
+  #define PyBUF_ND 0x0008
+  #define PyBUF_STRIDES (0x0010 | PyBUF_ND)
+  #define PyBUF_C_CONTIGUOUS (0x0020 | PyBUF_STRIDES)
+  #define PyBUF_F_CONTIGUOUS (0x0040 | PyBUF_STRIDES)
+  #define PyBUF_ANY_CONTIGUOUS (0x0080 | PyBUF_STRIDES)
+  #define PyBUF_INDIRECT (0x0100 | PyBUF_STRIDES)
+  #define PyBUF_RECORDS (PyBUF_STRIDES | PyBUF_FORMAT | PyBUF_WRITABLE)
+  #define PyBUF_FULL (PyBUF_INDIRECT | PyBUF_FORMAT | PyBUF_WRITABLE)
+  typedef int (*getbufferproc)(PyObject *, Py_buffer *, int);
+  typedef void (*releasebufferproc)(PyObject *, Py_buffer *);
+#endif
+#if PY_MAJOR_VERSION < 3
+  #define __Pyx_BUILTIN_MODULE_NAME "__builtin__"
+  #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) \
+          PyCode_New(a, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
+#else
+  #define __Pyx_BUILTIN_MODULE_NAME "builtins"
+  #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) \
+          PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
+#endif
+#if PY_MAJOR_VERSION < 3 && PY_MINOR_VERSION < 6
+  #define PyUnicode_FromString(s) PyUnicode_Decode(s, strlen(s), "UTF-8", "strict")
+#endif
+#if PY_MAJOR_VERSION >= 3
+  #define Py_TPFLAGS_CHECKTYPES 0
+  #define Py_TPFLAGS_HAVE_INDEX 0
+#endif
+#if (PY_VERSION_HEX < 0x02060000) || (PY_MAJOR_VERSION >= 3)
+  #define Py_TPFLAGS_HAVE_NEWBUFFER 0
+#endif
+#if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND)
+  #define CYTHON_PEP393_ENABLED 1
+  #define __Pyx_PyUnicode_READY(op)       (likely(PyUnicode_IS_READY(op)) ? \
+                                              0 : _PyUnicode_Ready((PyObject *)(op)))
+  #define __Pyx_PyUnicode_GET_LENGTH(u)   PyUnicode_GET_LENGTH(u)
+  #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i)
+  #define __Pyx_PyUnicode_READ(k, d, i)   PyUnicode_READ(k, d, i)
+#else
+  #define CYTHON_PEP393_ENABLED 0
+  #define __Pyx_PyUnicode_READY(op)       (0)
+  #define __Pyx_PyUnicode_GET_LENGTH(u)   PyUnicode_GET_SIZE(u)
+  #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i]))
+  #define __Pyx_PyUnicode_READ(k, d, i)   ((k=k), (Py_UCS4)(((Py_UNICODE*)d)[i]))
+#endif
+#if PY_MAJOR_VERSION >= 3
+  #define PyBaseString_Type            PyUnicode_Type
+  #define PyStringObject               PyUnicodeObject
+  #define PyString_Type                PyUnicode_Type
+  #define PyString_Check               PyUnicode_Check
+  #define PyString_CheckExact          PyUnicode_CheckExact
+#endif
+#if PY_VERSION_HEX < 0x02060000
+  #define PyBytesObject                PyStringObject
+  #define PyBytes_Type                 PyString_Type
+  #define PyBytes_Check                PyString_Check
+  #define PyBytes_CheckExact           PyString_CheckExact
+  #define PyBytes_FromString           PyString_FromString
+  #define PyBytes_FromStringAndSize    PyString_FromStringAndSize
+  #define PyBytes_FromFormat           PyString_FromFormat
+  #define PyBytes_DecodeEscape         PyString_DecodeEscape
+  #define PyBytes_AsString             PyString_AsString
+  #define PyBytes_AsStringAndSize      PyString_AsStringAndSize
+  #define PyBytes_Size                 PyString_Size
+  #define PyBytes_AS_STRING            PyString_AS_STRING
+  #define PyBytes_GET_SIZE             PyString_GET_SIZE
+  #define PyBytes_Repr                 PyString_Repr
+  #define PyBytes_Concat               PyString_Concat
+  #define PyBytes_ConcatAndDel         PyString_ConcatAndDel
+#endif
+#if PY_VERSION_HEX < 0x02060000
+  #define PySet_Check(obj)             PyObject_TypeCheck(obj, &PySet_Type)
+  #define PyFrozenSet_Check(obj)       PyObject_TypeCheck(obj, &PyFrozenSet_Type)
+#endif
+#ifndef PySet_CheckExact
+  #define PySet_CheckExact(obj)        (Py_TYPE(obj) == &PySet_Type)
+#endif
+#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type)
+#if PY_MAJOR_VERSION >= 3
+  #define PyIntObject                  PyLongObject
+  #define PyInt_Type                   PyLong_Type
+  #define PyInt_Check(op)              PyLong_Check(op)
+  #define PyInt_CheckExact(op)         PyLong_CheckExact(op)
+  #define PyInt_FromString             PyLong_FromString
+  #define PyInt_FromUnicode            PyLong_FromUnicode
+  #define PyInt_FromLong               PyLong_FromLong
+  #define PyInt_FromSize_t             PyLong_FromSize_t
+  #define PyInt_FromSsize_t            PyLong_FromSsize_t
+  #define PyInt_AsLong                 PyLong_AsLong
+  #define PyInt_AS_LONG                PyLong_AS_LONG
+  #define PyInt_AsSsize_t              PyLong_AsSsize_t
+  #define PyInt_AsUnsignedLongMask     PyLong_AsUnsignedLongMask
+  #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask
+#endif
+#if PY_MAJOR_VERSION >= 3
+  #define PyBoolObject                 PyLongObject
+#endif
+#if PY_VERSION_HEX < 0x03020000
+  typedef long Py_hash_t;
+  #define __Pyx_PyInt_FromHash_t PyInt_FromLong
+  #define __Pyx_PyInt_AsHash_t   PyInt_AsLong
+#else
+  #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t
+  #define __Pyx_PyInt_AsHash_t   PyInt_AsSsize_t
+#endif
+#if (PY_MAJOR_VERSION < 3) || (PY_VERSION_HEX >= 0x03010300)
+  #define __Pyx_PySequence_GetSlice(obj, a, b) PySequence_GetSlice(obj, a, b)
+  #define __Pyx_PySequence_SetSlice(obj, a, b, value) PySequence_SetSlice(obj, a, b, value)
+  #define __Pyx_PySequence_DelSlice(obj, a, b) PySequence_DelSlice(obj, a, b)
+#else
+  #define __Pyx_PySequence_GetSlice(obj, a, b) (unlikely(!(obj)) ? \
+        (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), (PyObject*)0) : \
+        (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_GetSlice(obj, a, b)) : \
+            (PyErr_Format(PyExc_TypeError, "'%.200s' object is unsliceable", (obj)->ob_type->tp_name), (PyObject*)0)))
+  #define __Pyx_PySequence_SetSlice(obj, a, b, value) (unlikely(!(obj)) ? \
+        (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), -1) : \
+        (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_SetSlice(obj, a, b, value)) : \
+            (PyErr_Format(PyExc_TypeError, "'%.200s' object doesn't support slice assignment", (obj)->ob_type->tp_name), -1)))
+  #define __Pyx_PySequence_DelSlice(obj, a, b) (unlikely(!(obj)) ? \
+        (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), -1) : \
+        (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_DelSlice(obj, a, b)) : \
+            (PyErr_Format(PyExc_TypeError, "'%.200s' object doesn't support slice deletion", (obj)->ob_type->tp_name), -1)))
+#endif
+#if PY_MAJOR_VERSION >= 3
+  #define PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, self) : PyInstanceMethod_New(func))
+#endif
+#if PY_VERSION_HEX < 0x02050000
+  #define __Pyx_GetAttrString(o,n)   PyObject_GetAttrString((o),((char *)(n)))
+  #define __Pyx_SetAttrString(o,n,a) PyObject_SetAttrString((o),((char *)(n)),(a))
+  #define __Pyx_DelAttrString(o,n)   PyObject_DelAttrString((o),((char *)(n)))
+#else
+  #define __Pyx_GetAttrString(o,n)   PyObject_GetAttrString((o),(n))
+  #define __Pyx_SetAttrString(o,n,a) PyObject_SetAttrString((o),(n),(a))
+  #define __Pyx_DelAttrString(o,n)   PyObject_DelAttrString((o),(n))
+#endif
+#if PY_VERSION_HEX < 0x02050000
+  #define __Pyx_NAMESTR(n) ((char *)(n))
+  #define __Pyx_DOCSTR(n)  ((char *)(n))
+#else
+  #define __Pyx_NAMESTR(n) (n)
+  #define __Pyx_DOCSTR(n)  (n)
+#endif
+
+
+#if PY_MAJOR_VERSION >= 3
+  #define __Pyx_PyNumber_Divide(x,y)         PyNumber_TrueDivide(x,y)
+  #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceTrueDivide(x,y)
+#else
+  #define __Pyx_PyNumber_Divide(x,y)         PyNumber_Divide(x,y)
+  #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceDivide(x,y)
+#endif
+
+#ifndef __PYX_EXTERN_C
+  #ifdef __cplusplus
+    #define __PYX_EXTERN_C extern "C"
+  #else
+    #define __PYX_EXTERN_C extern
+  #endif
+#endif
+
+#if defined(WIN32) || defined(MS_WINDOWS)
+#define _USE_MATH_DEFINES
+#endif
+#include <math.h>
+#define __PYX_HAVE__h5py__utils
+#define __PYX_HAVE_API__h5py__utils
+#include "stdlib.h"
+#include "string.h"
+#include "time.h"
+#include "unistd.h"
+#include "stdint.h"
+#include "api_compat.h"
+#include "lzf_filter.h"
+#include "hdf5.h"
+#include "H5Cpublic.h"
+#include "hdf5_hl.h"
+#include "numpy/arrayobject.h"
+#ifdef _OPENMP
+#include <omp.h>
+#endif /* _OPENMP */
+
+#ifdef PYREX_WITHOUT_ASSERTIONS
+#define CYTHON_WITHOUT_ASSERTIONS
+#endif
+
+#ifndef CYTHON_INLINE
+  #if defined(__GNUC__)
+    #define CYTHON_INLINE __inline__
+  #elif defined(_MSC_VER)
+    #define CYTHON_INLINE __inline
+  #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+    #define CYTHON_INLINE inline
+  #else
+    #define CYTHON_INLINE
+  #endif
+#endif
+#ifndef CYTHON_UNUSED
+# if defined(__GNUC__)
+#   if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
+#     define CYTHON_UNUSED __attribute__ ((__unused__))
+#   else
+#     define CYTHON_UNUSED
+#   endif
+# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER))
+#   define CYTHON_UNUSED __attribute__ ((__unused__))
+# else
+#   define CYTHON_UNUSED
+# endif
+#endif
+typedef struct {PyObject **p; char *s; const long n; const char* encoding; const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; /*proto*/
+
+#define __Pyx_PyBytes_FromUString(s) PyBytes_FromString((char*)s)
+#define __Pyx_PyBytes_AsUString(s)   ((unsigned char*) PyBytes_AsString(s))
+#define __Pyx_Owned_Py_None(b) (Py_INCREF(Py_None), Py_None)
+#define __Pyx_PyBool_FromLong(b) ((b) ? (Py_INCREF(Py_True), Py_True) : (Py_INCREF(Py_False), Py_False))
+static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*);
+static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x);
+static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*);
+static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t);
+static CYTHON_INLINE size_t __Pyx_PyInt_AsSize_t(PyObject*);
+#if CYTHON_COMPILING_IN_CPYTHON
+#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x))
+#else
+#define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x)
+#endif
+#define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x))
+
+
+#ifdef __GNUC__
+  /* Test for GCC > 2.95 */
+  #if __GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))
+    #define likely(x)   __builtin_expect(!!(x), 1)
+    #define unlikely(x) __builtin_expect(!!(x), 0)
+  #else /* __GNUC__ > 2 ... */
+    #define likely(x)   (x)
+    #define unlikely(x) (x)
+  #endif /* __GNUC__ > 2 ... */
+#else /* __GNUC__ */
+  #define likely(x)   (x)
+  #define unlikely(x) (x)
+#endif /* __GNUC__ */
+    
+static PyObject *__pyx_m;
+static PyObject *__pyx_b;
+static PyObject *__pyx_empty_tuple;
+static PyObject *__pyx_empty_bytes;
+static int __pyx_lineno;
+static int __pyx_clineno = 0;
+static const char * __pyx_cfilenm= __FILE__;
+static const char *__pyx_filename;
+
+
+static const char *__pyx_f[] = {
+  "utils.pyx",
+  "numpy.pxd",
+};
+
+/*--- Type declarations ---*/
+struct __pyx_opt_args_4h5py_5utils_check_numpy_read;
+struct __pyx_opt_args_4h5py_5utils_check_numpy_write;
+
+/* "h5py/utils.pxd":17
+ * cdef void efree(void* ptr)
+ * 
+ * cpdef int check_numpy_read(ndarray arr, hid_t space_id=*) except -1             # <<<<<<<<<<<<<<
+ * cpdef int check_numpy_write(ndarray arr, hid_t space_id=*) except -1
+ * 
+ */
+struct __pyx_opt_args_4h5py_5utils_check_numpy_read {
+  int __pyx_n;
+  hid_t space_id;
+};
+
+/* "h5py/utils.pxd":18
+ * 
+ * cpdef int check_numpy_read(ndarray arr, hid_t space_id=*) except -1
+ * cpdef int check_numpy_write(ndarray arr, hid_t space_id=*) except -1             # <<<<<<<<<<<<<<
+ * 
+ * cdef int convert_tuple(object tuple, hsize_t *dims, hsize_t rank) except -1
+ */
+struct __pyx_opt_args_4h5py_5utils_check_numpy_write {
+  int __pyx_n;
+  hid_t space_id;
+};
+#ifndef CYTHON_REFNANNY
+  #define CYTHON_REFNANNY 0
+#endif
+#if CYTHON_REFNANNY
+  typedef struct {
+    void (*INCREF)(void*, PyObject*, int);
+    void (*DECREF)(void*, PyObject*, int);
+    void (*GOTREF)(void*, PyObject*, int);
+    void (*GIVEREF)(void*, PyObject*, int);
+    void* (*SetupContext)(const char*, int, const char*);
+    void (*FinishContext)(void**);
+  } __Pyx_RefNannyAPIStruct;
+  static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL;
+  static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); /*proto*/
+  #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL;
+#ifdef WITH_THREAD
+  #define __Pyx_RefNannySetupContext(name, acquire_gil) \
+          if (acquire_gil) { \
+              PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); \
+              __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__); \
+              PyGILState_Release(__pyx_gilstate_save); \
+          } else { \
+              __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__); \
+          }
+#else
+  #define __Pyx_RefNannySetupContext(name, acquire_gil) \
+          __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__)
+#endif
+  #define __Pyx_RefNannyFinishContext() \
+          __Pyx_RefNanny->FinishContext(&__pyx_refnanny)
+  #define __Pyx_INCREF(r)  __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_DECREF(r)  __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_GOTREF(r)  __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
+  #define __Pyx_XINCREF(r)  do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0)
+  #define __Pyx_XDECREF(r)  do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0)
+  #define __Pyx_XGOTREF(r)  do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0)
+  #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0)
+#else
+  #define __Pyx_RefNannyDeclarations
+  #define __Pyx_RefNannySetupContext(name, acquire_gil)
+  #define __Pyx_RefNannyFinishContext()
+  #define __Pyx_INCREF(r) Py_INCREF(r)
+  #define __Pyx_DECREF(r) Py_DECREF(r)
+  #define __Pyx_GOTREF(r)
+  #define __Pyx_GIVEREF(r)
+  #define __Pyx_XINCREF(r) Py_XINCREF(r)
+  #define __Pyx_XDECREF(r) Py_XDECREF(r)
+  #define __Pyx_XGOTREF(r)
+  #define __Pyx_XGIVEREF(r)
+#endif /* CYTHON_REFNANNY */
+#define __Pyx_CLEAR(r)    do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0)
+#define __Pyx_XCLEAR(r)   do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0)
+
+static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name); /*proto*/
+
+static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb); /*proto*/
+static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb); /*proto*/
+
+static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name); /*proto*/
+
+static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[], \
+    PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args, \
+    const char* function_name); /*proto*/
+
+static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact,
+    Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); /*proto*/
+
+static int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, int none_allowed,
+    const char *name, int exact); /*proto*/
+
+static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause); /*proto*/
+
+static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) {
+    PyObject *r;
+    if (!j) return NULL;
+    r = PyObject_GetItem(o, j);
+    Py_DECREF(j);
+    return r;
+}
+#define __Pyx_GetItemInt_List(o, i, size, to_py_func) (((size) <= sizeof(Py_ssize_t)) ? \
+                                                    __Pyx_GetItemInt_List_Fast(o, i) : \
+                                                    __Pyx_GetItemInt_Generic(o, to_py_func(i)))
+static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i) {
+#if CYTHON_COMPILING_IN_CPYTHON
+    if (likely((0 <= i) & (i < PyList_GET_SIZE(o)))) {
+        PyObject *r = PyList_GET_ITEM(o, i);
+        Py_INCREF(r);
+        return r;
+    }
+    else if ((-PyList_GET_SIZE(o) <= i) & (i < 0)) {
+        PyObject *r = PyList_GET_ITEM(o, PyList_GET_SIZE(o) + i);
+        Py_INCREF(r);
+        return r;
+    }
+    return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));
+#else
+    return PySequence_GetItem(o, i);
+#endif
+}
+#define __Pyx_GetItemInt_Tuple(o, i, size, to_py_func) (((size) <= sizeof(Py_ssize_t)) ? \
+                                                    __Pyx_GetItemInt_Tuple_Fast(o, i) : \
+                                                    __Pyx_GetItemInt_Generic(o, to_py_func(i)))
+static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i) {
+#if CYTHON_COMPILING_IN_CPYTHON
+    if (likely((0 <= i) & (i < PyTuple_GET_SIZE(o)))) {
+        PyObject *r = PyTuple_GET_ITEM(o, i);
+        Py_INCREF(r);
+        return r;
+    }
+    else if ((-PyTuple_GET_SIZE(o) <= i) & (i < 0)) {
+        PyObject *r = PyTuple_GET_ITEM(o, PyTuple_GET_SIZE(o) + i);
+        Py_INCREF(r);
+        return r;
+    }
+    return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));
+#else
+    return PySequence_GetItem(o, i);
+#endif
+}
+#define __Pyx_GetItemInt(o, i, size, to_py_func) (((size) <= sizeof(Py_ssize_t)) ? \
+                                                    __Pyx_GetItemInt_Fast(o, i) : \
+                                                    __Pyx_GetItemInt_Generic(o, to_py_func(i)))
+static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i) {
+#if CYTHON_COMPILING_IN_CPYTHON
+    if (PyList_CheckExact(o)) {
+        Py_ssize_t n = (likely(i >= 0)) ? i : i + PyList_GET_SIZE(o);
+        if (likely((n >= 0) & (n < PyList_GET_SIZE(o)))) {
+            PyObject *r = PyList_GET_ITEM(o, n);
+            Py_INCREF(r);
+            return r;
+        }
+    }
+    else if (PyTuple_CheckExact(o)) {
+        Py_ssize_t n = (likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o);
+        if (likely((n >= 0) & (n < PyTuple_GET_SIZE(o)))) {
+            PyObject *r = PyTuple_GET_ITEM(o, n);
+            Py_INCREF(r);
+            return r;
+        }
+    } else {  /* inlined PySequence_GetItem() */
+        PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence;
+        if (likely(m && m->sq_item)) {
+            if (unlikely(i < 0) && likely(m->sq_length)) {
+                Py_ssize_t l = m->sq_length(o);
+                if (unlikely(l < 0)) return NULL;
+                i += l;
+            }
+            return m->sq_item(o, i);
+        }
+    }
+#else
+    if (PySequence_Check(o)) {
+        return PySequence_GetItem(o, i);
+    }
+#endif
+    return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));
+}
+
+static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb); /*proto*/
+
+static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type); /*proto*/
+
+static CYTHON_INLINE void __Pyx_ExceptionSave(PyObject **type, PyObject **value, PyObject **tb); /*proto*/
+static void __Pyx_ExceptionReset(PyObject *type, PyObject *value, PyObject *tb); /*proto*/
+
+static CYTHON_INLINE hid_t __Pyx_PyInt_from_py_hid_t(PyObject *);
+
+static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_hsize_t(hsize_t);
+
+static CYTHON_INLINE hsize_t __Pyx_PyInt_from_py_hsize_t(PyObject *);
+
+static CYTHON_INLINE unsigned char __Pyx_PyInt_AsUnsignedChar(PyObject *);
+
+static CYTHON_INLINE unsigned short __Pyx_PyInt_AsUnsignedShort(PyObject *);
+
+static CYTHON_INLINE unsigned int __Pyx_PyInt_AsUnsignedInt(PyObject *);
+
+static CYTHON_INLINE char __Pyx_PyInt_AsChar(PyObject *);
+
+static CYTHON_INLINE short __Pyx_PyInt_AsShort(PyObject *);
+
+static CYTHON_INLINE int __Pyx_PyInt_AsInt(PyObject *);
+
+static CYTHON_INLINE signed char __Pyx_PyInt_AsSignedChar(PyObject *);
+
+static CYTHON_INLINE signed short __Pyx_PyInt_AsSignedShort(PyObject *);
+
+static CYTHON_INLINE signed int __Pyx_PyInt_AsSignedInt(PyObject *);
+
+static CYTHON_INLINE int __Pyx_PyInt_AsLongDouble(PyObject *);
+
+static CYTHON_INLINE unsigned long __Pyx_PyInt_AsUnsignedLong(PyObject *);
+
+static CYTHON_INLINE unsigned PY_LONG_LONG __Pyx_PyInt_AsUnsignedLongLong(PyObject *);
+
+static CYTHON_INLINE long __Pyx_PyInt_AsLong(PyObject *);
+
+static CYTHON_INLINE PY_LONG_LONG __Pyx_PyInt_AsLongLong(PyObject *);
+
+static CYTHON_INLINE signed long __Pyx_PyInt_AsSignedLong(PyObject *);
+
+static CYTHON_INLINE signed PY_LONG_LONG __Pyx_PyInt_AsSignedLongLong(PyObject *);
+
+static void __Pyx_WriteUnraisable(const char *name, int clineno,
+                                  int lineno, const char *filename); /*proto*/
+
+static int __Pyx_check_binary_version(void);
+
+static int __Pyx_ExportFunction(const char *name, void (*f)(void), const char *sig); /*proto*/
+
+#if !defined(__Pyx_PyIdentifier_FromString)
+#if PY_MAJOR_VERSION < 3
+  #define __Pyx_PyIdentifier_FromString(s) PyString_FromString(s)
+#else
+  #define __Pyx_PyIdentifier_FromString(s) PyUnicode_FromString(s)
+#endif
+#endif
+
+static PyObject *__Pyx_ImportModule(const char *name); /*proto*/
+
+static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name, size_t size, int strict);  /*proto*/
+
+static int __Pyx_ImportFunction(PyObject *module, const char *funcname, void (**f)(void), const char *sig); /*proto*/
+
+typedef struct {
+    int code_line;
+    PyCodeObject* code_object;
+} __Pyx_CodeObjectCacheEntry;
+struct __Pyx_CodeObjectCache {
+    int count;
+    int max_count;
+    __Pyx_CodeObjectCacheEntry* entries;
+};
+static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL};
+static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line);
+static PyCodeObject *__pyx_find_code_object(int code_line);
+static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object);
+
+static void __Pyx_AddTraceback(const char *funcname, int c_line,
+                               int py_line, const char *filename); /*proto*/
+
+static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); /*proto*/
+
+
+/* Module declarations from 'h5py.api_types_ext' */
+
+/* Module declarations from 'h5py.api_types_hdf5' */
+
+/* Module declarations from 'h5py.defs' */
+static int (*__pyx_f_4h5py_4defs_H5Sget_simple_extent_ndims)(hid_t); /*proto*/
+static int (*__pyx_f_4h5py_4defs_H5Sget_simple_extent_dims)(hid_t, hsize_t *, hsize_t *); /*proto*/
+
+/* Module declarations from 'numpy' */
+
+/* Module declarations from 'h5py.numpy' */
+static PyTypeObject *__pyx_ptype_4h5py_5numpy_dtype = 0;
+static PyTypeObject *__pyx_ptype_4h5py_5numpy_ndarray = 0;
+
+/* Module declarations from 'h5py.utils' */
+static void *__pyx_f_4h5py_5utils_emalloc(size_t); /*proto*/
+static void __pyx_f_4h5py_5utils_efree(void *); /*proto*/
+static int __pyx_f_4h5py_5utils_check_numpy_read(PyArrayObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_4h5py_5utils_check_numpy_read *__pyx_optional_args); /*proto*/
+static int __pyx_f_4h5py_5utils_check_numpy_write(PyArrayObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_4h5py_5utils_check_numpy_write *__pyx_optional_args); /*proto*/
+static int __pyx_f_4h5py_5utils_check_numpy(PyArrayObject *, hid_t, int); /*proto*/
+#define __Pyx_MODULE_NAME "h5py.utils"
+int __pyx_module_is_main_h5py__utils = 0;
+
+/* Implementation of 'h5py.utils' */
+static PyObject *__pyx_builtin_MemoryError;
+static PyObject *__pyx_builtin_TypeError;
+static PyObject *__pyx_builtin_ValueError;
+static PyObject *__pyx_builtin_RuntimeError;
+static PyObject *__pyx_pf_4h5py_5utils__test_emalloc(CYTHON_UNUSED PyObject *__pyx_self, size_t __pyx_v_size); /* proto */
+static PyObject *__pyx_pf_4h5py_5utils_2check_numpy_write(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_arr, hid_t __pyx_v_space_id); /* proto */
+static PyObject *__pyx_pf_4h5py_5utils_4check_numpy_read(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_arr, hid_t __pyx_v_space_id); /* proto */
+static char __pyx_k_1[] = "Can't malloc %d bytes";
+static char __pyx_k_2[] = "Array is None";
+static char __pyx_k_3[] = "Array must be C-contiguous and writable";
+static char __pyx_k_4[] = "Array must be C-contiguous";
+static char __pyx_k_5[] = "Numpy array rank %d must match dataspace rank %d.";
+static char __pyx_k_6[] = "Array dimensions are too small for the dataspace.";
+static char __pyx_k_7[] = "Array dimensions are too large for the dataspace.";
+static char __pyx_k_8[] = "Tuple length incompatible with array";
+static char __pyx_k_10[] = "Can't convert element %d (%s) to hsize_t";
+static char __pyx_k_11[] = "Can't map hsize_t %d to Numpy typecode";
+static char __pyx_k_12[] = "";
+static char __pyx_k_13[] = " of size %d";
+static char __pyx_k_14[] = " or None";
+static char __pyx_k_15[] = "%s must be a tuple%s%s.";
+static char __pyx_k_18[] = "/home/computer/h5py/h5py/utils.pyx";
+static char __pyx_k_19[] = "h5py.utils";
+static char __pyx_k__arr[] = "arr";
+static char __pyx_k__mem[] = "mem";
+static char __pyx_k__size[] = "size";
+static char __pyx_k____main__[] = "__main__";
+static char __pyx_k____test__[] = "__test__";
+static char __pyx_k__space_id[] = "space_id";
+static char __pyx_k__TypeError[] = "TypeError";
+static char __pyx_k__ValueError[] = "ValueError";
+static char __pyx_k__MemoryError[] = "MemoryError";
+static char __pyx_k__RuntimeError[] = "RuntimeError";
+static char __pyx_k___test_emalloc[] = "_test_emalloc";
+static PyObject *__pyx_kp_s_1;
+static PyObject *__pyx_kp_s_10;
+static PyObject *__pyx_kp_s_11;
+static PyObject *__pyx_kp_s_12;
+static PyObject *__pyx_kp_s_13;
+static PyObject *__pyx_kp_s_14;
+static PyObject *__pyx_kp_s_15;
+static PyObject *__pyx_kp_s_18;
+static PyObject *__pyx_n_s_19;
+static PyObject *__pyx_kp_s_5;
+static PyObject *__pyx_kp_s_8;
+static PyObject *__pyx_n_s__MemoryError;
+static PyObject *__pyx_n_s__RuntimeError;
+static PyObject *__pyx_n_s__TypeError;
+static PyObject *__pyx_n_s__ValueError;
+static PyObject *__pyx_n_s____main__;
+static PyObject *__pyx_n_s____test__;
+static PyObject *__pyx_n_s___test_emalloc;
+static PyObject *__pyx_n_s__arr;
+static PyObject *__pyx_n_s__mem;
+static PyObject *__pyx_n_s__size;
+static PyObject *__pyx_n_s__space_id;
+static PyObject *__pyx_k_tuple_9;
+static PyObject *__pyx_k_tuple_16;
+static PyObject *__pyx_k_codeobj_17;
+
+/* "h5py/utils.pyx":25
+ * # === Exception-aware memory allocation =======================================
+ * 
+ * cdef void* emalloc(size_t size) except? NULL:             # <<<<<<<<<<<<<<
+ *     # Wrapper for malloc(size) with the following behavior:
+ *     # 1. Always returns NULL for emalloc(0)
+ */
+
+static void *__pyx_f_4h5py_5utils_emalloc(size_t __pyx_v_size) {
+  void *__pyx_v_retval;
+  PyObject *__pyx_v_errmsg = NULL;
+  void *__pyx_r;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  char *__pyx_t_4;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("emalloc", 0);
+
+  /* "h5py/utils.pyx":31
+ *     # 3. Raises RuntimeError if allocation fails and returns NULL
+ * 
+ *     cdef void *retval = NULL             # <<<<<<<<<<<<<<
+ * 
+ *     if size == 0:
+ */
+  __pyx_v_retval = NULL;
+
+  /* "h5py/utils.pyx":33
+ *     cdef void *retval = NULL
+ * 
+ *     if size == 0:             # <<<<<<<<<<<<<<
+ *         return NULL
+ * 
+ */
+  __pyx_t_1 = (__pyx_v_size == 0);
+  if (__pyx_t_1) {
+
+    /* "h5py/utils.pyx":34
+ * 
+ *     if size == 0:
+ *         return NULL             # <<<<<<<<<<<<<<
+ * 
+ *     retval = malloc(size)
+ */
+    __pyx_r = NULL;
+    goto __pyx_L0;
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  /* "h5py/utils.pyx":36
+ *         return NULL
+ * 
+ *     retval = malloc(size)             # <<<<<<<<<<<<<<
+ *     if retval == NULL:
+ *         errmsg = "Can't malloc %d bytes" % size
+ */
+  __pyx_v_retval = malloc(__pyx_v_size);
+
+  /* "h5py/utils.pyx":37
+ * 
+ *     retval = malloc(size)
+ *     if retval == NULL:             # <<<<<<<<<<<<<<
+ *         errmsg = "Can't malloc %d bytes" % size
+ *         PyErr_SetString(MemoryError, errmsg)
+ */
+  __pyx_t_1 = (__pyx_v_retval == NULL);
+  if (__pyx_t_1) {
+
+    /* "h5py/utils.pyx":38
+ *     retval = malloc(size)
+ *     if retval == NULL:
+ *         errmsg = "Can't malloc %d bytes" % size             # <<<<<<<<<<<<<<
+ *         PyErr_SetString(MemoryError, errmsg)
+ *         return NULL
+ */
+    __pyx_t_2 = __Pyx_PyInt_FromSize_t(__pyx_v_size); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_1), __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(((PyObject *)__pyx_t_3));
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __pyx_v_errmsg = ((PyObject *)__pyx_t_3);
+    __pyx_t_3 = 0;
+
+    /* "h5py/utils.pyx":39
+ *     if retval == NULL:
+ *         errmsg = "Can't malloc %d bytes" % size
+ *         PyErr_SetString(MemoryError, errmsg)             # <<<<<<<<<<<<<<
+ *         return NULL
+ * 
+ */
+    __pyx_t_4 = PyBytes_AsString(__pyx_v_errmsg); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    PyErr_SetString(__pyx_builtin_MemoryError, __pyx_t_4);
+
+    /* "h5py/utils.pyx":40
+ *         errmsg = "Can't malloc %d bytes" % size
+ *         PyErr_SetString(MemoryError, errmsg)
+ *         return NULL             # <<<<<<<<<<<<<<
+ * 
+ *     return retval
+ */
+    __pyx_r = NULL;
+    goto __pyx_L0;
+    goto __pyx_L4;
+  }
+  __pyx_L4:;
+
+  /* "h5py/utils.pyx":42
+ *         return NULL
+ * 
+ *     return retval             # <<<<<<<<<<<<<<
+ * 
+ * cdef void efree(void* what):
+ */
+  __pyx_r = __pyx_v_retval;
+  goto __pyx_L0;
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("h5py.utils.emalloc", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_errmsg);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/utils.pyx":44
+ *     return retval
+ * 
+ * cdef void efree(void* what):             # <<<<<<<<<<<<<<
+ *     free(what)
+ * 
+ */
+
+static void __pyx_f_4h5py_5utils_efree(void *__pyx_v_what) {
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("efree", 0);
+
+  /* "h5py/utils.pyx":45
+ * 
+ * cdef void efree(void* what):
+ *     free(what)             # <<<<<<<<<<<<<<
+ * 
+ * def _test_emalloc(size_t size):
+ */
+  free(__pyx_v_what);
+
+  __Pyx_RefNannyFinishContext();
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_5utils_1_test_emalloc(PyObject *__pyx_self, PyObject *__pyx_arg_size); /*proto*/
+static char __pyx_doc_4h5py_5utils__test_emalloc[] = "Stub to simplify unit tests";
+static PyMethodDef __pyx_mdef_4h5py_5utils_1_test_emalloc = {__Pyx_NAMESTR("_test_emalloc"), (PyCFunction)__pyx_pw_4h5py_5utils_1_test_emalloc, METH_O, __Pyx_DOCSTR(__pyx_doc_4h5py_5utils__test_emalloc)};
+static PyObject *__pyx_pw_4h5py_5utils_1_test_emalloc(PyObject *__pyx_self, PyObject *__pyx_arg_size) {
+  size_t __pyx_v_size;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("_test_emalloc (wrapper)", 0);
+  assert(__pyx_arg_size); {
+    __pyx_v_size = __Pyx_PyInt_AsSize_t(__pyx_arg_size); if (unlikely((__pyx_v_size == (size_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.utils._test_emalloc", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_4h5py_5utils__test_emalloc(__pyx_self, ((size_t)__pyx_v_size));
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/utils.pyx":47
+ *     free(what)
+ * 
+ * def _test_emalloc(size_t size):             # <<<<<<<<<<<<<<
+ *     """Stub to simplify unit tests"""
+ *     cdef void* mem
+ */
+
+static PyObject *__pyx_pf_4h5py_5utils__test_emalloc(CYTHON_UNUSED PyObject *__pyx_self, size_t __pyx_v_size) {
+  void *__pyx_v_mem;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  void *__pyx_t_1;
+  int __pyx_t_2;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("_test_emalloc", 0);
+
+  /* "h5py/utils.pyx":50
+ *     """Stub to simplify unit tests"""
+ *     cdef void* mem
+ *     mem = emalloc(size)             # <<<<<<<<<<<<<<
+ *     if size == 0:
+ *         assert mem == NULL
+ */
+  __pyx_t_1 = __pyx_f_4h5py_5utils_emalloc(__pyx_v_size); if (unlikely(__pyx_t_1 == NULL && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v_mem = __pyx_t_1;
+
+  /* "h5py/utils.pyx":51
+ *     cdef void* mem
+ *     mem = emalloc(size)
+ *     if size == 0:             # <<<<<<<<<<<<<<
+ *         assert mem == NULL
+ *     efree(mem)
+ */
+  __pyx_t_2 = (__pyx_v_size == 0);
+  if (__pyx_t_2) {
+
+    /* "h5py/utils.pyx":52
+ *     mem = emalloc(size)
+ *     if size == 0:
+ *         assert mem == NULL             # <<<<<<<<<<<<<<
+ *     efree(mem)
+ * 
+ */
+    #ifndef CYTHON_WITHOUT_ASSERTIONS
+    if (unlikely(!(__pyx_v_mem == NULL))) {
+      PyErr_SetNone(PyExc_AssertionError);
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    }
+    #endif
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  /* "h5py/utils.pyx":53
+ *     if size == 0:
+ *         assert mem == NULL
+ *     efree(mem)             # <<<<<<<<<<<<<<
+ * 
+ * # === Testing of NumPy arrays =================================================
+ */
+  __pyx_f_4h5py_5utils_efree(__pyx_v_mem);
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("h5py.utils._test_emalloc", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/utils.pyx":57
+ * # === Testing of NumPy arrays =================================================
+ * 
+ * cdef int check_numpy(ndarray arr, hid_t space_id, int write):             # <<<<<<<<<<<<<<
+ *     # -1 if exception, NOT AUTOMATICALLY CHECKED
+ * 
+ */
+
+static int __pyx_f_4h5py_5utils_check_numpy(PyArrayObject *__pyx_v_arr, hid_t __pyx_v_space_id, int __pyx_v_write) {
+  hsize_t __pyx_v_arr_rank;
+  hsize_t __pyx_v_space_rank;
+  hsize_t *__pyx_v_space_dims;
+  int __pyx_v_i;
+  PyObject *__pyx_v_err_msg = NULL;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  int __pyx_t_2;
+  int __pyx_t_3;
+  int __pyx_t_4;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  PyObject *__pyx_t_7 = NULL;
+  char *__pyx_t_8;
+  hsize_t __pyx_t_9;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("check_numpy", 0);
+
+  /* "h5py/utils.pyx":63
+ *     cdef hsize_t arr_rank
+ *     cdef hsize_t space_rank
+ *     cdef hsize_t *space_dims = NULL             # <<<<<<<<<<<<<<
+ *     cdef int i
+ * 
+ */
+  __pyx_v_space_dims = NULL;
+
+  /* "h5py/utils.pyx":66
+ *     cdef int i
+ * 
+ *     if arr is None:             # <<<<<<<<<<<<<<
+ *         PyErr_SetString(TypeError, "Array is None")
+ *         return -1
+ */
+  __pyx_t_1 = (((PyObject *)__pyx_v_arr) == Py_None);
+  if (__pyx_t_1) {
+
+    /* "h5py/utils.pyx":67
+ * 
+ *     if arr is None:
+ *         PyErr_SetString(TypeError, "Array is None")             # <<<<<<<<<<<<<<
+ *         return -1
+ * 
+ */
+    PyErr_SetString(__pyx_builtin_TypeError, __pyx_k_2);
+
+    /* "h5py/utils.pyx":68
+ *     if arr is None:
+ *         PyErr_SetString(TypeError, "Array is None")
+ *         return -1             # <<<<<<<<<<<<<<
+ * 
+ *     # Validate array flags
+ */
+    __pyx_r = -1;
+    goto __pyx_L0;
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  /* "h5py/utils.pyx":72
+ *     # Validate array flags
+ * 
+ *     if write:             # <<<<<<<<<<<<<<
+ *         if not (arr.flags & NPY_C_CONTIGUOUS and arr.flags & NPY_WRITEABLE):
+ *             PyErr_SetString(TypeError, "Array must be C-contiguous and writable")
+ */
+  if (__pyx_v_write) {
+
+    /* "h5py/utils.pyx":73
+ * 
+ *     if write:
+ *         if not (arr.flags & NPY_C_CONTIGUOUS and arr.flags & NPY_WRITEABLE):             # <<<<<<<<<<<<<<
+ *             PyErr_SetString(TypeError, "Array must be C-contiguous and writable")
+ *             return -1
+ */
+    __pyx_t_2 = (__pyx_v_arr->flags & NPY_C_CONTIGUOUS);
+    if (__pyx_t_2) {
+      __pyx_t_3 = (__pyx_v_arr->flags & NPY_WRITEABLE);
+      __pyx_t_1 = __pyx_t_3;
+    } else {
+      __pyx_t_1 = __pyx_t_2;
+    }
+    __pyx_t_4 = (!__pyx_t_1);
+    if (__pyx_t_4) {
+
+      /* "h5py/utils.pyx":74
+ *     if write:
+ *         if not (arr.flags & NPY_C_CONTIGUOUS and arr.flags & NPY_WRITEABLE):
+ *             PyErr_SetString(TypeError, "Array must be C-contiguous and writable")             # <<<<<<<<<<<<<<
+ *             return -1
+ *     else:
+ */
+      PyErr_SetString(__pyx_builtin_TypeError, __pyx_k_3);
+
+      /* "h5py/utils.pyx":75
+ *         if not (arr.flags & NPY_C_CONTIGUOUS and arr.flags & NPY_WRITEABLE):
+ *             PyErr_SetString(TypeError, "Array must be C-contiguous and writable")
+ *             return -1             # <<<<<<<<<<<<<<
+ *     else:
+ *         if not (arr.flags & NPY_C_CONTIGUOUS):
+ */
+      __pyx_r = -1;
+      goto __pyx_L0;
+      goto __pyx_L5;
+    }
+    __pyx_L5:;
+    goto __pyx_L4;
+  }
+  /*else*/ {
+
+    /* "h5py/utils.pyx":77
+ *             return -1
+ *     else:
+ *         if not (arr.flags & NPY_C_CONTIGUOUS):             # <<<<<<<<<<<<<<
+ *             PyErr_SetString(TypeError, "Array must be C-contiguous")
+ *             return -1
+ */
+    __pyx_t_4 = (!(__pyx_v_arr->flags & NPY_C_CONTIGUOUS));
+    if (__pyx_t_4) {
+
+      /* "h5py/utils.pyx":78
+ *     else:
+ *         if not (arr.flags & NPY_C_CONTIGUOUS):
+ *             PyErr_SetString(TypeError, "Array must be C-contiguous")             # <<<<<<<<<<<<<<
+ *             return -1
+ * 
+ */
+      PyErr_SetString(__pyx_builtin_TypeError, __pyx_k_4);
+
+      /* "h5py/utils.pyx":79
+ *         if not (arr.flags & NPY_C_CONTIGUOUS):
+ *             PyErr_SetString(TypeError, "Array must be C-contiguous")
+ *             return -1             # <<<<<<<<<<<<<<
+ * 
+ *     # Validate dataspace compatibility, if it's provided
+ */
+      __pyx_r = -1;
+      goto __pyx_L0;
+      goto __pyx_L6;
+    }
+    __pyx_L6:;
+  }
+  __pyx_L4:;
+
+  /* "h5py/utils.pyx":83
+ *     # Validate dataspace compatibility, if it's provided
+ * 
+ *     if space_id > 0:             # <<<<<<<<<<<<<<
+ * 
+ *         arr_rank = arr.nd
+ */
+  __pyx_t_4 = (__pyx_v_space_id > 0);
+  if (__pyx_t_4) {
+
+    /* "h5py/utils.pyx":85
+ *     if space_id > 0:
+ * 
+ *         arr_rank = arr.nd             # <<<<<<<<<<<<<<
+ *         space_rank = H5Sget_simple_extent_ndims(space_id)
+ * 
+ */
+    __pyx_t_2 = __pyx_v_arr->nd;
+    __pyx_v_arr_rank = __pyx_t_2;
+
+    /* "h5py/utils.pyx":86
+ * 
+ *         arr_rank = arr.nd
+ *         space_rank = H5Sget_simple_extent_ndims(space_id)             # <<<<<<<<<<<<<<
+ * 
+ *         if arr_rank != space_rank:
+ */
+    __pyx_t_2 = __pyx_f_4h5py_4defs_H5Sget_simple_extent_ndims(__pyx_v_space_id); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_v_space_rank = __pyx_t_2;
+
+    /* "h5py/utils.pyx":88
+ *         space_rank = H5Sget_simple_extent_ndims(space_id)
+ * 
+ *         if arr_rank != space_rank:             # <<<<<<<<<<<<<<
+ *             err_msg = "Numpy array rank %d must match dataspace rank %d." % (arr_rank, space_rank)
+ *             PyErr_SetString(TypeError, err_msg)
+ */
+    __pyx_t_4 = (__pyx_v_arr_rank != __pyx_v_space_rank);
+    if (__pyx_t_4) {
+
+      /* "h5py/utils.pyx":89
+ * 
+ *         if arr_rank != space_rank:
+ *             err_msg = "Numpy array rank %d must match dataspace rank %d." % (arr_rank, space_rank)             # <<<<<<<<<<<<<<
+ *             PyErr_SetString(TypeError, err_msg)
+ *             return -1
+ */
+      __pyx_t_5 = __Pyx_PyInt_to_py_hsize_t(__pyx_v_arr_rank); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_5);
+      __pyx_t_6 = __Pyx_PyInt_to_py_hsize_t(__pyx_v_space_rank); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_6);
+      __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_7);
+      PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5);
+      __Pyx_GIVEREF(__pyx_t_5);
+      PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_6);
+      __Pyx_GIVEREF(__pyx_t_6);
+      __pyx_t_5 = 0;
+      __pyx_t_6 = 0;
+      __pyx_t_6 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_5), ((PyObject *)__pyx_t_7)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(((PyObject *)__pyx_t_6));
+      __Pyx_DECREF(((PyObject *)__pyx_t_7)); __pyx_t_7 = 0;
+      __pyx_v_err_msg = ((PyObject *)__pyx_t_6);
+      __pyx_t_6 = 0;
+
+      /* "h5py/utils.pyx":90
+ *         if arr_rank != space_rank:
+ *             err_msg = "Numpy array rank %d must match dataspace rank %d." % (arr_rank, space_rank)
+ *             PyErr_SetString(TypeError, err_msg)             # <<<<<<<<<<<<<<
+ *             return -1
+ * 
+ */
+      __pyx_t_8 = PyBytes_AsString(__pyx_v_err_msg); if (unlikely((!__pyx_t_8) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      PyErr_SetString(__pyx_builtin_TypeError, __pyx_t_8);
+
+      /* "h5py/utils.pyx":91
+ *             err_msg = "Numpy array rank %d must match dataspace rank %d." % (arr_rank, space_rank)
+ *             PyErr_SetString(TypeError, err_msg)
+ *             return -1             # <<<<<<<<<<<<<<
+ * 
+ *         space_dims = <hsize_t*>malloc(sizeof(hsize_t)*space_rank)
+ */
+      __pyx_r = -1;
+      goto __pyx_L0;
+      goto __pyx_L8;
+    }
+    __pyx_L8:;
+
+    /* "h5py/utils.pyx":93
+ *             return -1
+ * 
+ *         space_dims = <hsize_t*>malloc(sizeof(hsize_t)*space_rank)             # <<<<<<<<<<<<<<
+ *         try:
+ *             space_rank = H5Sget_simple_extent_dims(space_id, space_dims, NULL)
+ */
+    __pyx_v_space_dims = ((hsize_t *)malloc(((sizeof(hsize_t)) * __pyx_v_space_rank)));
+
+    /* "h5py/utils.pyx":94
+ * 
+ *         space_dims = <hsize_t*>malloc(sizeof(hsize_t)*space_rank)
+ *         try:             # <<<<<<<<<<<<<<
+ *             space_rank = H5Sget_simple_extent_dims(space_id, space_dims, NULL)
+ * 
+ */
+    /*try:*/ {
+
+      /* "h5py/utils.pyx":95
+ *         space_dims = <hsize_t*>malloc(sizeof(hsize_t)*space_rank)
+ *         try:
+ *             space_rank = H5Sget_simple_extent_dims(space_id, space_dims, NULL)             # <<<<<<<<<<<<<<
+ * 
+ *             for i from 0 < i < space_rank:
+ */
+      __pyx_t_2 = __pyx_f_4h5py_4defs_H5Sget_simple_extent_dims(__pyx_v_space_id, __pyx_v_space_dims, NULL); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L10;}
+      __pyx_v_space_rank = __pyx_t_2;
+
+      /* "h5py/utils.pyx":97
+ *             space_rank = H5Sget_simple_extent_dims(space_id, space_dims, NULL)
+ * 
+ *             for i from 0 < i < space_rank:             # <<<<<<<<<<<<<<
+ * 
+ *                 if write:
+ */
+      __pyx_t_9 = __pyx_v_space_rank;
+      for (__pyx_v_i = 0+1; __pyx_v_i < __pyx_t_9; __pyx_v_i++) {
+
+        /* "h5py/utils.pyx":99
+ *             for i from 0 < i < space_rank:
+ * 
+ *                 if write:             # <<<<<<<<<<<<<<
+ *                     if PyArray_DIM(arr,i) < space_dims[i]:
+ *                         PyErr_SetString(TypeError, "Array dimensions are too small for the dataspace.")
+ */
+        if (__pyx_v_write) {
+
+          /* "h5py/utils.pyx":100
+ * 
+ *                 if write:
+ *                     if PyArray_DIM(arr,i) < space_dims[i]:             # <<<<<<<<<<<<<<
+ *                         PyErr_SetString(TypeError, "Array dimensions are too small for the dataspace.")
+ *                         return -1
+ */
+          __pyx_t_4 = (PyArray_DIM(__pyx_v_arr, __pyx_v_i) < (__pyx_v_space_dims[__pyx_v_i]));
+          if (__pyx_t_4) {
+
+            /* "h5py/utils.pyx":101
+ *                 if write:
+ *                     if PyArray_DIM(arr,i) < space_dims[i]:
+ *                         PyErr_SetString(TypeError, "Array dimensions are too small for the dataspace.")             # <<<<<<<<<<<<<<
+ *                         return -1
+ *                 else:
+ */
+            PyErr_SetString(__pyx_builtin_TypeError, __pyx_k_6);
+
+            /* "h5py/utils.pyx":102
+ *                     if PyArray_DIM(arr,i) < space_dims[i]:
+ *                         PyErr_SetString(TypeError, "Array dimensions are too small for the dataspace.")
+ *                         return -1             # <<<<<<<<<<<<<<
+ *                 else:
+ *                     if PyArray_DIM(arr,i) > space_dims[i]:
+ */
+            __pyx_r = -1;
+            goto __pyx_L9;
+            goto __pyx_L15;
+          }
+          __pyx_L15:;
+          goto __pyx_L14;
+        }
+        /*else*/ {
+
+          /* "h5py/utils.pyx":104
+ *                         return -1
+ *                 else:
+ *                     if PyArray_DIM(arr,i) > space_dims[i]:             # <<<<<<<<<<<<<<
+ *                         PyErr_SetString(TypeError, "Array dimensions are too large for the dataspace.")
+ *                         return -1
+ */
+          __pyx_t_4 = (PyArray_DIM(__pyx_v_arr, __pyx_v_i) > (__pyx_v_space_dims[__pyx_v_i]));
+          if (__pyx_t_4) {
+
+            /* "h5py/utils.pyx":105
+ *                 else:
+ *                     if PyArray_DIM(arr,i) > space_dims[i]:
+ *                         PyErr_SetString(TypeError, "Array dimensions are too large for the dataspace.")             # <<<<<<<<<<<<<<
+ *                         return -1
+ *         finally:
+ */
+            PyErr_SetString(__pyx_builtin_TypeError, __pyx_k_7);
+
+            /* "h5py/utils.pyx":106
+ *                     if PyArray_DIM(arr,i) > space_dims[i]:
+ *                         PyErr_SetString(TypeError, "Array dimensions are too large for the dataspace.")
+ *                         return -1             # <<<<<<<<<<<<<<
+ *         finally:
+ *             free(space_dims)
+ */
+            __pyx_r = -1;
+            goto __pyx_L9;
+            goto __pyx_L16;
+          }
+          __pyx_L16:;
+        }
+        __pyx_L14:;
+      }
+    }
+
+    /* "h5py/utils.pyx":108
+ *                         return -1
+ *         finally:
+ *             free(space_dims)             # <<<<<<<<<<<<<<
+ *     return 1
+ * 
+ */
+    /*finally:*/ {
+      int __pyx_why;
+      PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb;
+      int __pyx_exc_lineno;
+      __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
+      __pyx_why = 0; goto __pyx_L11;
+      __pyx_L9: __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
+      __pyx_why = 3; goto __pyx_L11;
+      __pyx_L10: {
+        __pyx_why = 4;
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+        __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb);
+        __pyx_exc_lineno = __pyx_lineno;
+        goto __pyx_L11;
+      }
+      __pyx_L11:;
+      free(__pyx_v_space_dims);
+      switch (__pyx_why) {
+        case 3: goto __pyx_L0;
+        case 4: {
+          __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb);
+          __pyx_lineno = __pyx_exc_lineno;
+          __pyx_exc_type = 0;
+          __pyx_exc_value = 0;
+          __pyx_exc_tb = 0;
+          goto __pyx_L1_error;
+        }
+      }
+    }
+    goto __pyx_L7;
+  }
+  __pyx_L7:;
+
+  /* "h5py/utils.pyx":109
+ *         finally:
+ *             free(space_dims)
+ *     return 1             # <<<<<<<<<<<<<<
+ * 
+ * cpdef int check_numpy_write(ndarray arr, hid_t space_id=-1) except -1:
+ */
+  __pyx_r = 1;
+  goto __pyx_L0;
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_WriteUnraisable("h5py.utils.check_numpy", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_err_msg);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/utils.pyx":111
+ *     return 1
+ * 
+ * cpdef int check_numpy_write(ndarray arr, hid_t space_id=-1) except -1:             # <<<<<<<<<<<<<<
+ *     return check_numpy(arr, space_id, 1)
+ * 
+ */
+
+static PyObject *__pyx_pw_4h5py_5utils_3check_numpy_write(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_f_4h5py_5utils_check_numpy_write(PyArrayObject *__pyx_v_arr, CYTHON_UNUSED int __pyx_skip_dispatch, struct __pyx_opt_args_4h5py_5utils_check_numpy_write *__pyx_optional_args) {
+  hid_t __pyx_v_space_id = ((hid_t)-1);
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("check_numpy_write", 0);
+  if (__pyx_optional_args) {
+    if (__pyx_optional_args->__pyx_n > 0) {
+      __pyx_v_space_id = __pyx_optional_args->space_id;
+    }
+  }
+
+  /* "h5py/utils.pyx":112
+ * 
+ * cpdef int check_numpy_write(ndarray arr, hid_t space_id=-1) except -1:
+ *     return check_numpy(arr, space_id, 1)             # <<<<<<<<<<<<<<
+ * 
+ * cpdef int check_numpy_read(ndarray arr, hid_t space_id=-1) except -1:
+ */
+  __pyx_r = __pyx_f_4h5py_5utils_check_numpy(__pyx_v_arr, __pyx_v_space_id, 1);
+  goto __pyx_L0;
+
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_5utils_3check_numpy_write(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_4h5py_5utils_3check_numpy_write(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyArrayObject *__pyx_v_arr = 0;
+  hid_t __pyx_v_space_id;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("check_numpy_write (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__arr,&__pyx_n_s__space_id,0};
+    PyObject* values[2] = {0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__arr)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__space_id);
+          if (value) { values[1] = value; kw_args--; }
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "check_numpy_write") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else {
+      switch (PyTuple_GET_SIZE(__pyx_args)) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+    }
+    __pyx_v_arr = ((PyArrayObject *)values[0]);
+    if (values[1]) {
+      __pyx_v_space_id = __Pyx_PyInt_from_py_hid_t(values[1]); if (unlikely((__pyx_v_space_id == (hid_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    } else {
+      __pyx_v_space_id = ((hid_t)-1);
+    }
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("check_numpy_write", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.utils.check_numpy_write", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_arr), __pyx_ptype_4h5py_5numpy_ndarray, 1, "arr", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_pf_4h5py_5utils_2check_numpy_write(__pyx_self, __pyx_v_arr, __pyx_v_space_id);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/utils.pyx":111
+ *     return 1
+ * 
+ * cpdef int check_numpy_write(ndarray arr, hid_t space_id=-1) except -1:             # <<<<<<<<<<<<<<
+ *     return check_numpy(arr, space_id, 1)
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_5utils_2check_numpy_write(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_arr, hid_t __pyx_v_space_id) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  struct __pyx_opt_args_4h5py_5utils_check_numpy_write __pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("check_numpy_write", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_2.__pyx_n = 1;
+  __pyx_t_2.space_id = __pyx_v_space_id;
+  __pyx_t_1 = __pyx_f_4h5py_5utils_check_numpy_write(__pyx_v_arr, 0, &__pyx_t_2); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = PyInt_FromLong(__pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_r = __pyx_t_3;
+  __pyx_t_3 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("h5py.utils.check_numpy_write", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/utils.pyx":114
+ *     return check_numpy(arr, space_id, 1)
+ * 
+ * cpdef int check_numpy_read(ndarray arr, hid_t space_id=-1) except -1:             # <<<<<<<<<<<<<<
+ *     return check_numpy(arr, space_id, 0)
+ * 
+ */
+
+static PyObject *__pyx_pw_4h5py_5utils_5check_numpy_read(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_f_4h5py_5utils_check_numpy_read(PyArrayObject *__pyx_v_arr, CYTHON_UNUSED int __pyx_skip_dispatch, struct __pyx_opt_args_4h5py_5utils_check_numpy_read *__pyx_optional_args) {
+  hid_t __pyx_v_space_id = ((hid_t)-1);
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("check_numpy_read", 0);
+  if (__pyx_optional_args) {
+    if (__pyx_optional_args->__pyx_n > 0) {
+      __pyx_v_space_id = __pyx_optional_args->space_id;
+    }
+  }
+
+  /* "h5py/utils.pyx":115
+ * 
+ * cpdef int check_numpy_read(ndarray arr, hid_t space_id=-1) except -1:
+ *     return check_numpy(arr, space_id, 0)             # <<<<<<<<<<<<<<
+ * 
+ * # === Conversion between HDF5 buffers and tuples ==============================
+ */
+  __pyx_r = __pyx_f_4h5py_5utils_check_numpy(__pyx_v_arr, __pyx_v_space_id, 0);
+  goto __pyx_L0;
+
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_4h5py_5utils_5check_numpy_read(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_4h5py_5utils_5check_numpy_read(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyArrayObject *__pyx_v_arr = 0;
+  hid_t __pyx_v_space_id;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("check_numpy_read (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__arr,&__pyx_n_s__space_id,0};
+    PyObject* values[2] = {0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__arr)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        case  1:
+        if (kw_args > 0) {
+          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__space_id);
+          if (value) { values[1] = value; kw_args--; }
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "check_numpy_read") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+      }
+    } else {
+      switch (PyTuple_GET_SIZE(__pyx_args)) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+    }
+    __pyx_v_arr = ((PyArrayObject *)values[0]);
+    if (values[1]) {
+      __pyx_v_space_id = __Pyx_PyInt_from_py_hid_t(values[1]); if (unlikely((__pyx_v_space_id == (hid_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    } else {
+      __pyx_v_space_id = ((hid_t)-1);
+    }
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("check_numpy_read", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("h5py.utils.check_numpy_read", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_arr), __pyx_ptype_4h5py_5numpy_ndarray, 1, "arr", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_r = __pyx_pf_4h5py_5utils_4check_numpy_read(__pyx_self, __pyx_v_arr, __pyx_v_space_id);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/utils.pyx":114
+ *     return check_numpy(arr, space_id, 1)
+ * 
+ * cpdef int check_numpy_read(ndarray arr, hid_t space_id=-1) except -1:             # <<<<<<<<<<<<<<
+ *     return check_numpy(arr, space_id, 0)
+ * 
+ */
+
+static PyObject *__pyx_pf_4h5py_5utils_4check_numpy_read(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_arr, hid_t __pyx_v_space_id) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  struct __pyx_opt_args_4h5py_5utils_check_numpy_read __pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("check_numpy_read", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_2.__pyx_n = 1;
+  __pyx_t_2.space_id = __pyx_v_space_id;
+  __pyx_t_1 = __pyx_f_4h5py_5utils_check_numpy_read(__pyx_v_arr, 0, &__pyx_t_2); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = PyInt_FromLong(__pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_r = __pyx_t_3;
+  __pyx_t_3 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("h5py.utils.check_numpy_read", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/utils.pyx":119
+ * # === Conversion between HDF5 buffers and tuples ==============================
+ * 
+ * cdef int convert_tuple(object tpl, hsize_t *dims, hsize_t rank) except -1:             # <<<<<<<<<<<<<<
+ *     # Convert a Python tuple to an hsize_t array.  You must allocate
+ *     # the array yourself and pass both it and the size to this function.
+ */
+
+static int __pyx_f_4h5py_5utils_convert_tuple(PyObject *__pyx_v_tpl, hsize_t *__pyx_v_dims, hsize_t __pyx_v_rank) {
+  int __pyx_v_i;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  Py_ssize_t __pyx_t_1;
+  int __pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  PyObject *__pyx_t_4 = NULL;
+  PyObject *__pyx_t_5 = NULL;
+  PyObject *__pyx_t_6 = NULL;
+  hsize_t __pyx_t_7;
+  hsize_t __pyx_t_8;
+  int __pyx_t_9;
+  PyObject *__pyx_t_10 = NULL;
+  PyObject *__pyx_t_11 = NULL;
+  PyObject *__pyx_t_12 = NULL;
+  PyObject *__pyx_t_13 = NULL;
+  PyObject *__pyx_t_14 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("convert_tuple", 0);
+
+  /* "h5py/utils.pyx":125
+ *     cdef int i
+ * 
+ *     if len(tpl) != rank:             # <<<<<<<<<<<<<<
+ *         raise ValueError("Tuple length incompatible with array")
+ * 
+ */
+  __pyx_t_1 = PyObject_Length(__pyx_v_tpl); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 125; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = (__pyx_t_1 != __pyx_v_rank);
+  if (__pyx_t_2) {
+
+    /* "h5py/utils.pyx":126
+ * 
+ *     if len(tpl) != rank:
+ *         raise ValueError("Tuple length incompatible with array")             # <<<<<<<<<<<<<<
+ * 
+ *     try:
+ */
+    __pyx_t_3 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_9), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  /* "h5py/utils.pyx":128
+ *         raise ValueError("Tuple length incompatible with array")
+ * 
+ *     try:             # <<<<<<<<<<<<<<
+ *         for i from 0<=i<rank:
+ *             dims[i] = tpl[i]
+ */
+  {
+    __Pyx_ExceptionSave(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6);
+    __Pyx_XGOTREF(__pyx_t_4);
+    __Pyx_XGOTREF(__pyx_t_5);
+    __Pyx_XGOTREF(__pyx_t_6);
+    /*try:*/ {
+
+      /* "h5py/utils.pyx":129
+ * 
+ *     try:
+ *         for i from 0<=i<rank:             # <<<<<<<<<<<<<<
+ *             dims[i] = tpl[i]
+ *     except TypeError:
+ */
+      __pyx_t_7 = __pyx_v_rank;
+      for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_7; __pyx_v_i++) {
+
+        /* "h5py/utils.pyx":130
+ *     try:
+ *         for i from 0<=i<rank:
+ *             dims[i] = tpl[i]             # <<<<<<<<<<<<<<
+ *     except TypeError:
+ *         raise TypeError("Can't convert element %d (%s) to hsize_t" % (i, tpl[i]))
+ */
+        __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_tpl, __pyx_v_i, sizeof(int), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+        __Pyx_GOTREF(__pyx_t_3);
+        __pyx_t_8 = __Pyx_PyInt_from_py_hsize_t(__pyx_t_3); if (unlikely((__pyx_t_8 == (hsize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+        (__pyx_v_dims[__pyx_v_i]) = __pyx_t_8;
+      }
+    }
+    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+    goto __pyx_L11_try_end;
+    __pyx_L4_error:;
+    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+
+    /* "h5py/utils.pyx":131
+ *         for i from 0<=i<rank:
+ *             dims[i] = tpl[i]
+ *     except TypeError:             # <<<<<<<<<<<<<<
+ *         raise TypeError("Can't convert element %d (%s) to hsize_t" % (i, tpl[i]))
+ * 
+ */
+    __pyx_t_9 = PyErr_ExceptionMatches(__pyx_builtin_TypeError);
+    if (__pyx_t_9) {
+      __Pyx_AddTraceback("h5py.utils.convert_tuple", __pyx_clineno, __pyx_lineno, __pyx_filename);
+      if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_10, &__pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
+      __Pyx_GOTREF(__pyx_t_3);
+      __Pyx_GOTREF(__pyx_t_10);
+      __Pyx_GOTREF(__pyx_t_11);
+
+      /* "h5py/utils.pyx":132
+ *             dims[i] = tpl[i]
+ *     except TypeError:
+ *         raise TypeError("Can't convert element %d (%s) to hsize_t" % (i, tpl[i]))             # <<<<<<<<<<<<<<
+ * 
+ *     return 0
+ */
+      __pyx_t_12 = PyInt_FromLong(__pyx_v_i); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
+      __Pyx_GOTREF(__pyx_t_12);
+      __pyx_t_13 = __Pyx_GetItemInt(__pyx_v_tpl, __pyx_v_i, sizeof(int), PyInt_FromLong); if (!__pyx_t_13) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
+      __Pyx_GOTREF(__pyx_t_13);
+      __pyx_t_14 = PyTuple_New(2); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
+      __Pyx_GOTREF(__pyx_t_14);
+      PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_12);
+      __Pyx_GIVEREF(__pyx_t_12);
+      PyTuple_SET_ITEM(__pyx_t_14, 1, __pyx_t_13);
+      __Pyx_GIVEREF(__pyx_t_13);
+      __pyx_t_12 = 0;
+      __pyx_t_13 = 0;
+      __pyx_t_13 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_10), ((PyObject *)__pyx_t_14)); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
+      __Pyx_GOTREF(((PyObject *)__pyx_t_13));
+      __Pyx_DECREF(((PyObject *)__pyx_t_14)); __pyx_t_14 = 0;
+      __pyx_t_14 = PyTuple_New(1); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
+      __Pyx_GOTREF(__pyx_t_14);
+      PyTuple_SET_ITEM(__pyx_t_14, 0, ((PyObject *)__pyx_t_13));
+      __Pyx_GIVEREF(((PyObject *)__pyx_t_13));
+      __pyx_t_13 = 0;
+      __pyx_t_13 = PyObject_Call(__pyx_builtin_TypeError, ((PyObject *)__pyx_t_14), NULL); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
+      __Pyx_GOTREF(__pyx_t_13);
+      __Pyx_DECREF(((PyObject *)__pyx_t_14)); __pyx_t_14 = 0;
+      __Pyx_Raise(__pyx_t_13, 0, 0, 0);
+      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
+      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+      goto __pyx_L5_exception_handled;
+    }
+    __pyx_L6_except_error:;
+    __Pyx_XGIVEREF(__pyx_t_4);
+    __Pyx_XGIVEREF(__pyx_t_5);
+    __Pyx_XGIVEREF(__pyx_t_6);
+    __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6);
+    goto __pyx_L1_error;
+    __pyx_L5_exception_handled:;
+    __Pyx_XGIVEREF(__pyx_t_4);
+    __Pyx_XGIVEREF(__pyx_t_5);
+    __Pyx_XGIVEREF(__pyx_t_6);
+    __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6);
+    __pyx_L11_try_end:;
+  }
+
+  /* "h5py/utils.pyx":134
+ *         raise TypeError("Can't convert element %d (%s) to hsize_t" % (i, tpl[i]))
+ * 
+ *     return 0             # <<<<<<<<<<<<<<
+ * 
+ * cdef object convert_dims(hsize_t* dims, hsize_t rank):
+ */
+  __pyx_r = 0;
+  goto __pyx_L0;
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_10);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_XDECREF(__pyx_t_12);
+  __Pyx_XDECREF(__pyx_t_13);
+  __Pyx_XDECREF(__pyx_t_14);
+  __Pyx_AddTraceback("h5py.utils.convert_tuple", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/utils.pyx":136
+ *     return 0
+ * 
+ * cdef object convert_dims(hsize_t* dims, hsize_t rank):             # <<<<<<<<<<<<<<
+ *     # Convert an hsize_t array to a Python tuple of ints.
+ * 
+ */
+
+static PyObject *__pyx_f_4h5py_5utils_convert_dims(hsize_t *__pyx_v_dims, hsize_t __pyx_v_rank) {
+  PyObject *__pyx_v_dims_list = 0;
+  int __pyx_v_i;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  PyObject *__pyx_t_1 = NULL;
+  hsize_t __pyx_t_2;
+  PyObject *__pyx_t_3 = NULL;
+  int __pyx_t_4;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("convert_dims", 0);
+
+  /* "h5py/utils.pyx":141
+ *     cdef list dims_list
+ *     cdef int i
+ *     dims_list = []             # <<<<<<<<<<<<<<
+ * 
+ *     for i from 0<=i<rank:
+ */
+  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_dims_list = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+  /* "h5py/utils.pyx":143
+ *     dims_list = []
+ * 
+ *     for i from 0<=i<rank:             # <<<<<<<<<<<<<<
+ *         dims_list.append(int(dims[i]))
+ * 
+ */
+  __pyx_t_2 = __pyx_v_rank;
+  for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_2; __pyx_v_i++) {
+
+    /* "h5py/utils.pyx":144
+ * 
+ *     for i from 0<=i<rank:
+ *         dims_list.append(int(dims[i]))             # <<<<<<<<<<<<<<
+ * 
+ *     return tuple(dims_list)
+ */
+    __pyx_t_1 = __Pyx_PyInt_to_py_hsize_t((__pyx_v_dims[__pyx_v_i])); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+    __Pyx_GIVEREF(__pyx_t_1);
+    __pyx_t_1 = 0;
+    __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)(&PyInt_Type))), ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
+    __pyx_t_4 = PyList_Append(__pyx_v_dims_list, __pyx_t_1); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  }
+
+  /* "h5py/utils.pyx":146
+ *         dims_list.append(int(dims[i]))
+ * 
+ *     return tuple(dims_list)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = ((PyObject *)PyList_AsTuple(__pyx_v_dims_list)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
+  __pyx_r = ((PyObject *)__pyx_t_1);
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("h5py.utils.convert_dims", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_dims_list);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/utils.pyx":149
+ * 
+ * 
+ * cdef object create_numpy_hsize(int rank, hsize_t* dims):             # <<<<<<<<<<<<<<
+ *     # Create an empty Numpy array which can hold HDF5 hsize_t entries
+ * 
+ */
+
+static PyObject *__pyx_f_4h5py_5utils_create_numpy_hsize(int __pyx_v_rank, hsize_t *__pyx_v_dims) {
+  int __pyx_v_typecode;
+  npy_intp *__pyx_v_dims_npy;
+  PyArrayObject *__pyx_v_arr = 0;
+  int __pyx_v_i;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  void *__pyx_t_4;
+  int __pyx_t_5;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("create_numpy_hsize", 0);
+
+  /* "h5py/utils.pyx":157
+ *     cdef int i
+ * 
+ *     if sizeof(hsize_t) == 2:             # <<<<<<<<<<<<<<
+ *         typecode = NPY_UINT16
+ *     elif sizeof(hsize_t) == 4:
+ */
+  __pyx_t_1 = ((sizeof(hsize_t)) == 2);
+  if (__pyx_t_1) {
+
+    /* "h5py/utils.pyx":158
+ * 
+ *     if sizeof(hsize_t) == 2:
+ *         typecode = NPY_UINT16             # <<<<<<<<<<<<<<
+ *     elif sizeof(hsize_t) == 4:
+ *         typecode = NPY_UINT32
+ */
+    __pyx_v_typecode = NPY_UINT16;
+    goto __pyx_L3;
+  }
+
+  /* "h5py/utils.pyx":159
+ *     if sizeof(hsize_t) == 2:
+ *         typecode = NPY_UINT16
+ *     elif sizeof(hsize_t) == 4:             # <<<<<<<<<<<<<<
+ *         typecode = NPY_UINT32
+ *     elif sizeof(hsize_t) == 8:
+ */
+  __pyx_t_1 = ((sizeof(hsize_t)) == 4);
+  if (__pyx_t_1) {
+
+    /* "h5py/utils.pyx":160
+ *         typecode = NPY_UINT16
+ *     elif sizeof(hsize_t) == 4:
+ *         typecode = NPY_UINT32             # <<<<<<<<<<<<<<
+ *     elif sizeof(hsize_t) == 8:
+ *         typecode = NPY_UINT64
+ */
+    __pyx_v_typecode = NPY_UINT32;
+    goto __pyx_L3;
+  }
+
+  /* "h5py/utils.pyx":161
+ *     elif sizeof(hsize_t) == 4:
+ *         typecode = NPY_UINT32
+ *     elif sizeof(hsize_t) == 8:             # <<<<<<<<<<<<<<
+ *         typecode = NPY_UINT64
+ *     else:
+ */
+  __pyx_t_1 = ((sizeof(hsize_t)) == 8);
+  if (__pyx_t_1) {
+
+    /* "h5py/utils.pyx":162
+ *         typecode = NPY_UINT32
+ *     elif sizeof(hsize_t) == 8:
+ *         typecode = NPY_UINT64             # <<<<<<<<<<<<<<
+ *     else:
+ *         raise RuntimeError("Can't map hsize_t %d to Numpy typecode" % sizeof(hsize_t))
+ */
+    __pyx_v_typecode = NPY_UINT64;
+    goto __pyx_L3;
+  }
+  /*else*/ {
+
+    /* "h5py/utils.pyx":164
+ *         typecode = NPY_UINT64
+ *     else:
+ *         raise RuntimeError("Can't map hsize_t %d to Numpy typecode" % sizeof(hsize_t))             # <<<<<<<<<<<<<<
+ * 
+ *     dims_npy = <npy_intp*>emalloc(sizeof(npy_intp)*rank)
+ */
+    __pyx_t_2 = __Pyx_PyInt_FromSize_t((sizeof(hsize_t))); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 164; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_11), __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 164; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(((PyObject *)__pyx_t_3));
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 164; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_t_3));
+    __Pyx_GIVEREF(((PyObject *)__pyx_t_3));
+    __pyx_t_3 = 0;
+    __pyx_t_3 = PyObject_Call(__pyx_builtin_RuntimeError, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 164; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
+    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 164; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  }
+  __pyx_L3:;
+
+  /* "h5py/utils.pyx":166
+ *         raise RuntimeError("Can't map hsize_t %d to Numpy typecode" % sizeof(hsize_t))
+ * 
+ *     dims_npy = <npy_intp*>emalloc(sizeof(npy_intp)*rank)             # <<<<<<<<<<<<<<
+ * 
+ *     try:
+ */
+  __pyx_t_4 = __pyx_f_4h5py_5utils_emalloc(((sizeof(npy_intp)) * __pyx_v_rank)); if (unlikely(__pyx_t_4 == NULL && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_v_dims_npy = ((npy_intp *)__pyx_t_4);
+
+  /* "h5py/utils.pyx":168
+ *     dims_npy = <npy_intp*>emalloc(sizeof(npy_intp)*rank)
+ * 
+ *     try:             # <<<<<<<<<<<<<<
+ *         for i from 0<=i<rank:
+ *             dims_npy[i] = dims[i]
+ */
+  /*try:*/ {
+
+    /* "h5py/utils.pyx":169
+ * 
+ *     try:
+ *         for i from 0<=i<rank:             # <<<<<<<<<<<<<<
+ *             dims_npy[i] = dims[i]
+ *         arr = PyArray_SimpleNew(rank, dims_npy, typecode)
+ */
+    __pyx_t_5 = __pyx_v_rank;
+    for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_5; __pyx_v_i++) {
+
+      /* "h5py/utils.pyx":170
+ *     try:
+ *         for i from 0<=i<rank:
+ *             dims_npy[i] = dims[i]             # <<<<<<<<<<<<<<
+ *         arr = PyArray_SimpleNew(rank, dims_npy, typecode)
+ *     finally:
+ */
+      (__pyx_v_dims_npy[__pyx_v_i]) = (__pyx_v_dims[__pyx_v_i]);
+    }
+
+    /* "h5py/utils.pyx":171
+ *         for i from 0<=i<rank:
+ *             dims_npy[i] = dims[i]
+ *         arr = PyArray_SimpleNew(rank, dims_npy, typecode)             # <<<<<<<<<<<<<<
+ *     finally:
+ *         efree(dims_npy)
+ */
+    __pyx_t_3 = PyArray_SimpleNew(__pyx_v_rank, __pyx_v_dims_npy, __pyx_v_typecode); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 171; __pyx_clineno = __LINE__; goto __pyx_L5;}
+    __Pyx_GOTREF(__pyx_t_3);
+    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_4h5py_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 171; __pyx_clineno = __LINE__; goto __pyx_L5;}
+    __pyx_v_arr = ((PyArrayObject *)__pyx_t_3);
+    __pyx_t_3 = 0;
+  }
+
+  /* "h5py/utils.pyx":173
+ *         arr = PyArray_SimpleNew(rank, dims_npy, typecode)
+ *     finally:
+ *         efree(dims_npy)             # <<<<<<<<<<<<<<
+ * 
+ *     return arr
+ */
+  /*finally:*/ {
+    int __pyx_why;
+    PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb;
+    int __pyx_exc_lineno;
+    __pyx_exc_type = 0; __pyx_exc_value = 0; __pyx_exc_tb = 0; __pyx_exc_lineno = 0;
+    __pyx_why = 0; goto __pyx_L6;
+    __pyx_L5: {
+      __pyx_why = 4;
+      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+      __Pyx_ErrFetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb);
+      __pyx_exc_lineno = __pyx_lineno;
+      goto __pyx_L6;
+    }
+    __pyx_L6:;
+    __pyx_f_4h5py_5utils_efree(__pyx_v_dims_npy);
+    switch (__pyx_why) {
+      case 4: {
+        __Pyx_ErrRestore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb);
+        __pyx_lineno = __pyx_exc_lineno;
+        __pyx_exc_type = 0;
+        __pyx_exc_value = 0;
+        __pyx_exc_tb = 0;
+        goto __pyx_L1_error;
+      }
+    }
+  }
+
+  /* "h5py/utils.pyx":175
+ *         efree(dims_npy)
+ * 
+ *     return arr             # <<<<<<<<<<<<<<
+ * 
+ * cdef object create_hsize_array(object arr):
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(((PyObject *)__pyx_v_arr));
+  __pyx_r = ((PyObject *)__pyx_v_arr);
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("h5py.utils.create_numpy_hsize", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_arr);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/utils.pyx":177
+ *     return arr
+ * 
+ * cdef object create_hsize_array(object arr):             # <<<<<<<<<<<<<<
+ *     # Create a NumPy array of hsize_t uints initialized to an existing array
+ * 
+ */
+
+static PyObject *__pyx_f_4h5py_5utils_create_hsize_array(PyObject *__pyx_v_arr) {
+  int __pyx_v_typecode;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  PyObject *__pyx_t_2 = NULL;
+  PyObject *__pyx_t_3 = NULL;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("create_hsize_array", 0);
+
+  /* "h5py/utils.pyx":183
+ *     cdef ndarray outarr
+ * 
+ *     if sizeof(hsize_t) == 2:             # <<<<<<<<<<<<<<
+ *         typecode = NPY_UINT16
+ *     elif sizeof(hsize_t) == 4:
+ */
+  __pyx_t_1 = ((sizeof(hsize_t)) == 2);
+  if (__pyx_t_1) {
+
+    /* "h5py/utils.pyx":184
+ * 
+ *     if sizeof(hsize_t) == 2:
+ *         typecode = NPY_UINT16             # <<<<<<<<<<<<<<
+ *     elif sizeof(hsize_t) == 4:
+ *         typecode = NPY_UINT32
+ */
+    __pyx_v_typecode = NPY_UINT16;
+    goto __pyx_L3;
+  }
+
+  /* "h5py/utils.pyx":185
+ *     if sizeof(hsize_t) == 2:
+ *         typecode = NPY_UINT16
+ *     elif sizeof(hsize_t) == 4:             # <<<<<<<<<<<<<<
+ *         typecode = NPY_UINT32
+ *     elif sizeof(hsize_t) == 8:
+ */
+  __pyx_t_1 = ((sizeof(hsize_t)) == 4);
+  if (__pyx_t_1) {
+
+    /* "h5py/utils.pyx":186
+ *         typecode = NPY_UINT16
+ *     elif sizeof(hsize_t) == 4:
+ *         typecode = NPY_UINT32             # <<<<<<<<<<<<<<
+ *     elif sizeof(hsize_t) == 8:
+ *         typecode = NPY_UINT64
+ */
+    __pyx_v_typecode = NPY_UINT32;
+    goto __pyx_L3;
+  }
+
+  /* "h5py/utils.pyx":187
+ *     elif sizeof(hsize_t) == 4:
+ *         typecode = NPY_UINT32
+ *     elif sizeof(hsize_t) == 8:             # <<<<<<<<<<<<<<
+ *         typecode = NPY_UINT64
+ *     else:
+ */
+  __pyx_t_1 = ((sizeof(hsize_t)) == 8);
+  if (__pyx_t_1) {
+
+    /* "h5py/utils.pyx":188
+ *         typecode = NPY_UINT32
+ *     elif sizeof(hsize_t) == 8:
+ *         typecode = NPY_UINT64             # <<<<<<<<<<<<<<
+ *     else:
+ *         raise RuntimeError("Can't map hsize_t %d to Numpy typecode" % sizeof(hsize_t))
+ */
+    __pyx_v_typecode = NPY_UINT64;
+    goto __pyx_L3;
+  }
+  /*else*/ {
+
+    /* "h5py/utils.pyx":190
+ *         typecode = NPY_UINT64
+ *     else:
+ *         raise RuntimeError("Can't map hsize_t %d to Numpy typecode" % sizeof(hsize_t))             # <<<<<<<<<<<<<<
+ * 
+ *     return PyArray_FROM_OTF(arr, typecode, NPY_CONTIGUOUS | NPY_NOTSWAPPED | NPY_FORCECAST)
+ */
+    __pyx_t_2 = __Pyx_PyInt_FromSize_t((sizeof(hsize_t))); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_11), __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(((PyObject *)__pyx_t_3));
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_2);
+    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_t_3));
+    __Pyx_GIVEREF(((PyObject *)__pyx_t_3));
+    __pyx_t_3 = 0;
+    __pyx_t_3 = PyObject_Call(__pyx_builtin_RuntimeError, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
+    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  }
+  __pyx_L3:;
+
+  /* "h5py/utils.pyx":192
+ *         raise RuntimeError("Can't map hsize_t %d to Numpy typecode" % sizeof(hsize_t))
+ * 
+ *     return PyArray_FROM_OTF(arr, typecode, NPY_CONTIGUOUS | NPY_NOTSWAPPED | NPY_FORCECAST)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_3 = PyArray_FROM_OTF(__pyx_v_arr, __pyx_v_typecode, ((NPY_CONTIGUOUS | NPY_NOTSWAPPED) | NPY_FORCECAST)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_r = __pyx_t_3;
+  __pyx_t_3 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("h5py.utils.create_hsize_array", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* "h5py/utils.pyx":197
+ * # === Argument testing ========================================================
+ * 
+ * cdef int require_tuple(object tpl, int none_allowed, int size, char* name) except -1:             # <<<<<<<<<<<<<<
+ *     # Ensure that tpl is in fact a tuple, or None if none_allowed is nonzero.
+ *     # If size >= 0, also ensure that the length matches.
+ */
+
+static int __pyx_f_4h5py_5utils_require_tuple(PyObject *__pyx_v_tpl, int __pyx_v_none_allowed, int __pyx_v_size, char *__pyx_v_name) {
+  PyObject *__pyx_v_nmsg = NULL;
+  PyObject *__pyx_v_smsg = NULL;
+  PyObject *__pyx_v_msg = NULL;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  int __pyx_t_2;
+  int __pyx_t_3;
+  Py_ssize_t __pyx_t_4;
+  int __pyx_t_5;
+  int __pyx_t_6;
+  PyObject *__pyx_t_7 = NULL;
+  PyObject *__pyx_t_8 = NULL;
+  PyObject *__pyx_t_9 = NULL;
+  char *__pyx_t_10;
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+  __Pyx_RefNannySetupContext("require_tuple", 0);
+
+  /* "h5py/utils.pyx":202
+ *     # Otherwise raises ValueError
+ * 
+ *     if (tpl is None and none_allowed) or \             # <<<<<<<<<<<<<<
+ *       (isinstance(tpl, tuple) and (size < 0 or len(tpl) == size)):
+ *         return 1
+ */
+  __pyx_t_1 = (__pyx_v_tpl == Py_None);
+  if (__pyx_t_1) {
+    __pyx_t_2 = __pyx_v_none_allowed;
+  } else {
+    __pyx_t_2 = __pyx_t_1;
+  }
+  if (!__pyx_t_2) {
+
+    /* "h5py/utils.pyx":203
+ * 
+ *     if (tpl is None and none_allowed) or \
+ *       (isinstance(tpl, tuple) and (size < 0 or len(tpl) == size)):             # <<<<<<<<<<<<<<
+ *         return 1
+ * 
+ */
+    __pyx_t_1 = PyTuple_Check(__pyx_v_tpl); 
+    if (__pyx_t_1) {
+      __pyx_t_3 = (__pyx_v_size < 0);
+      if (!__pyx_t_3) {
+        __pyx_t_4 = PyObject_Length(__pyx_v_tpl); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 203; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_5 = (__pyx_t_4 == __pyx_v_size);
+        __pyx_t_6 = __pyx_t_5;
+      } else {
+        __pyx_t_6 = __pyx_t_3;
+      }
+      __pyx_t_3 = __pyx_t_6;
+    } else {
+      __pyx_t_3 = __pyx_t_1;
+    }
+    __pyx_t_1 = __pyx_t_3;
+  } else {
+    __pyx_t_1 = __pyx_t_2;
+  }
+  if (__pyx_t_1) {
+
+    /* "h5py/utils.pyx":204
+ *     if (tpl is None and none_allowed) or \
+ *       (isinstance(tpl, tuple) and (size < 0 or len(tpl) == size)):
+ *         return 1             # <<<<<<<<<<<<<<
+ * 
+ *     nmsg = "" if size < 0 else " of size %d" % size
+ */
+    __pyx_r = 1;
+    goto __pyx_L0;
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  /* "h5py/utils.pyx":206
+ *         return 1
+ * 
+ *     nmsg = "" if size < 0 else " of size %d" % size             # <<<<<<<<<<<<<<
+ *     smsg = "" if not none_allowed else " or None"
+ * 
+ */
+  if ((__pyx_v_size < 0)) {
+    __Pyx_INCREF(((PyObject *)__pyx_kp_s_12));
+    __pyx_t_7 = __pyx_kp_s_12;
+  } else {
+    __pyx_t_8 = PyInt_FromLong(__pyx_v_size); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 206; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(__pyx_t_8);
+    __pyx_t_9 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_13), __pyx_t_8); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 206; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __Pyx_GOTREF(((PyObject *)__pyx_t_9));
+    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+    __pyx_t_7 = ((PyObject*)__pyx_t_9);
+    __pyx_t_9 = 0;
+  }
+  __pyx_v_nmsg = ((PyObject *)__pyx_t_7);
+  __pyx_t_7 = 0;
+
+  /* "h5py/utils.pyx":207
+ * 
+ *     nmsg = "" if size < 0 else " of size %d" % size
+ *     smsg = "" if not none_allowed else " or None"             # <<<<<<<<<<<<<<
+ * 
+ *     msg = "%s must be a tuple%s%s." % (name, smsg, nmsg)
+ */
+  if ((!__pyx_v_none_allowed)) {
+    __Pyx_INCREF(((PyObject *)__pyx_kp_s_12));
+    __pyx_t_7 = __pyx_kp_s_12;
+  } else {
+    __Pyx_INCREF(((PyObject *)__pyx_kp_s_14));
+    __pyx_t_7 = __pyx_kp_s_14;
+  }
+  __pyx_v_smsg = ((PyObject *)__pyx_t_7);
+  __pyx_t_7 = 0;
+
+  /* "h5py/utils.pyx":209
+ *     smsg = "" if not none_allowed else " or None"
+ * 
+ *     msg = "%s must be a tuple%s%s." % (name, smsg, nmsg)             # <<<<<<<<<<<<<<
+ *     PyErr_SetString(ValueError, msg)
+ *     return -1
+ */
+  __pyx_t_7 = PyBytes_FromString(__pyx_v_name); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(((PyObject *)__pyx_t_7));
+  __pyx_t_9 = PyTuple_New(3); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_9);
+  PyTuple_SET_ITEM(__pyx_t_9, 0, ((PyObject *)__pyx_t_7));
+  __Pyx_GIVEREF(((PyObject *)__pyx_t_7));
+  __Pyx_INCREF(__pyx_v_smsg);
+  PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_v_smsg);
+  __Pyx_GIVEREF(__pyx_v_smsg);
+  __Pyx_INCREF(__pyx_v_nmsg);
+  PyTuple_SET_ITEM(__pyx_t_9, 2, __pyx_v_nmsg);
+  __Pyx_GIVEREF(__pyx_v_nmsg);
+  __pyx_t_7 = 0;
+  __pyx_t_7 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_15), ((PyObject *)__pyx_t_9)); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(((PyObject *)__pyx_t_7));
+  __Pyx_DECREF(((PyObject *)__pyx_t_9)); __pyx_t_9 = 0;
+  __pyx_v_msg = ((PyObject *)__pyx_t_7);
+  __pyx_t_7 = 0;
+
+  /* "h5py/utils.pyx":210
+ * 
+ *     msg = "%s must be a tuple%s%s." % (name, smsg, nmsg)
+ *     PyErr_SetString(ValueError, msg)             # <<<<<<<<<<<<<<
+ *     return -1
+ * 
+ */
+  __pyx_t_10 = PyBytes_AsString(__pyx_v_msg); if (unlikely((!__pyx_t_10) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  PyErr_SetString(__pyx_builtin_ValueError, __pyx_t_10);
+
+  /* "h5py/utils.pyx":211
+ *     msg = "%s must be a tuple%s%s." % (name, smsg, nmsg)
+ *     PyErr_SetString(ValueError, msg)
+ *     return -1             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  __pyx_r = -1;
+  goto __pyx_L0;
+
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_XDECREF(__pyx_t_8);
+  __Pyx_XDECREF(__pyx_t_9);
+  __Pyx_AddTraceback("h5py.utils.require_tuple", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_nmsg);
+  __Pyx_XDECREF(__pyx_v_smsg);
+  __Pyx_XDECREF(__pyx_v_msg);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyMethodDef __pyx_methods[] = {
+  {__Pyx_NAMESTR("check_numpy_write"), (PyCFunction)__pyx_pw_4h5py_5utils_3check_numpy_write, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)},
+  {__Pyx_NAMESTR("check_numpy_read"), (PyCFunction)__pyx_pw_4h5py_5utils_5check_numpy_read, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)},
+  {0, 0, 0, 0}
+};
+
+#if PY_MAJOR_VERSION >= 3
+static struct PyModuleDef __pyx_moduledef = {
+  #if PY_VERSION_HEX < 0x03020000
+    { PyObject_HEAD_INIT(NULL) NULL, 0, NULL },
+  #else
+    PyModuleDef_HEAD_INIT,
+  #endif
+    __Pyx_NAMESTR("utils"),
+    0, /* m_doc */
+    -1, /* m_size */
+    __pyx_methods /* m_methods */,
+    NULL, /* m_reload */
+    NULL, /* m_traverse */
+    NULL, /* m_clear */
+    NULL /* m_free */
+};
+#endif
+
+static __Pyx_StringTabEntry __pyx_string_tab[] = {
+  {&__pyx_kp_s_1, __pyx_k_1, sizeof(__pyx_k_1), 0, 0, 1, 0},
+  {&__pyx_kp_s_10, __pyx_k_10, sizeof(__pyx_k_10), 0, 0, 1, 0},
+  {&__pyx_kp_s_11, __pyx_k_11, sizeof(__pyx_k_11), 0, 0, 1, 0},
+  {&__pyx_kp_s_12, __pyx_k_12, sizeof(__pyx_k_12), 0, 0, 1, 0},
+  {&__pyx_kp_s_13, __pyx_k_13, sizeof(__pyx_k_13), 0, 0, 1, 0},
+  {&__pyx_kp_s_14, __pyx_k_14, sizeof(__pyx_k_14), 0, 0, 1, 0},
+  {&__pyx_kp_s_15, __pyx_k_15, sizeof(__pyx_k_15), 0, 0, 1, 0},
+  {&__pyx_kp_s_18, __pyx_k_18, sizeof(__pyx_k_18), 0, 0, 1, 0},
+  {&__pyx_n_s_19, __pyx_k_19, sizeof(__pyx_k_19), 0, 0, 1, 1},
+  {&__pyx_kp_s_5, __pyx_k_5, sizeof(__pyx_k_5), 0, 0, 1, 0},
+  {&__pyx_kp_s_8, __pyx_k_8, sizeof(__pyx_k_8), 0, 0, 1, 0},
+  {&__pyx_n_s__MemoryError, __pyx_k__MemoryError, sizeof(__pyx_k__MemoryError), 0, 0, 1, 1},
+  {&__pyx_n_s__RuntimeError, __pyx_k__RuntimeError, sizeof(__pyx_k__RuntimeError), 0, 0, 1, 1},
+  {&__pyx_n_s__TypeError, __pyx_k__TypeError, sizeof(__pyx_k__TypeError), 0, 0, 1, 1},
+  {&__pyx_n_s__ValueError, __pyx_k__ValueError, sizeof(__pyx_k__ValueError), 0, 0, 1, 1},
+  {&__pyx_n_s____main__, __pyx_k____main__, sizeof(__pyx_k____main__), 0, 0, 1, 1},
+  {&__pyx_n_s____test__, __pyx_k____test__, sizeof(__pyx_k____test__), 0, 0, 1, 1},
+  {&__pyx_n_s___test_emalloc, __pyx_k___test_emalloc, sizeof(__pyx_k___test_emalloc), 0, 0, 1, 1},
+  {&__pyx_n_s__arr, __pyx_k__arr, sizeof(__pyx_k__arr), 0, 0, 1, 1},
+  {&__pyx_n_s__mem, __pyx_k__mem, sizeof(__pyx_k__mem), 0, 0, 1, 1},
+  {&__pyx_n_s__size, __pyx_k__size, sizeof(__pyx_k__size), 0, 0, 1, 1},
+  {&__pyx_n_s__space_id, __pyx_k__space_id, sizeof(__pyx_k__space_id), 0, 0, 1, 1},
+  {0, 0, 0, 0, 0, 0, 0}
+};
+static int __Pyx_InitCachedBuiltins(void) {
+  __pyx_builtin_MemoryError = __Pyx_GetName(__pyx_b, __pyx_n_s__MemoryError); if (!__pyx_builtin_MemoryError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_builtin_TypeError = __Pyx_GetName(__pyx_b, __pyx_n_s__TypeError); if (!__pyx_builtin_TypeError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_builtin_ValueError = __Pyx_GetName(__pyx_b, __pyx_n_s__ValueError); if (!__pyx_builtin_ValueError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_builtin_RuntimeError = __Pyx_GetName(__pyx_b, __pyx_n_s__RuntimeError); if (!__pyx_builtin_RuntimeError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 164; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  return 0;
+  __pyx_L1_error:;
+  return -1;
+}
+
+static int __Pyx_InitCachedConstants(void) {
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0);
+
+  /* "h5py/utils.pyx":126
+ * 
+ *     if len(tpl) != rank:
+ *         raise ValueError("Tuple length incompatible with array")             # <<<<<<<<<<<<<<
+ * 
+ *     try:
+ */
+  __pyx_k_tuple_9 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_8)); if (unlikely(!__pyx_k_tuple_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_9);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_9));
+
+  /* "h5py/utils.pyx":47
+ *     free(what)
+ * 
+ * def _test_emalloc(size_t size):             # <<<<<<<<<<<<<<
+ *     """Stub to simplify unit tests"""
+ *     cdef void* mem
+ */
+  __pyx_k_tuple_16 = PyTuple_Pack(3, ((PyObject *)__pyx_n_s__size), ((PyObject *)__pyx_n_s__size), ((PyObject *)__pyx_n_s__mem)); if (unlikely(!__pyx_k_tuple_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_k_tuple_16);
+  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_16));
+  __pyx_k_codeobj_17 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_16, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_18, __pyx_n_s___test_emalloc, 47, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_RefNannyFinishContext();
+  return 0;
+  __pyx_L1_error:;
+  __Pyx_RefNannyFinishContext();
+  return -1;
+}
+
+static int __Pyx_InitGlobals(void) {
+  if (__Pyx_InitStrings(__pyx_string_tab) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  return 0;
+  __pyx_L1_error:;
+  return -1;
+}
+
+#if PY_MAJOR_VERSION < 3
+PyMODINIT_FUNC initutils(void); /*proto*/
+PyMODINIT_FUNC initutils(void)
+#else
+PyMODINIT_FUNC PyInit_utils(void); /*proto*/
+PyMODINIT_FUNC PyInit_utils(void)
+#endif
+{
+  PyObject *__pyx_t_1 = NULL;
+  PyObject *__pyx_t_2 = NULL;
+  __Pyx_RefNannyDeclarations
+  #if CYTHON_REFNANNY
+  __Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny");
+  if (!__Pyx_RefNanny) {
+      PyErr_Clear();
+      __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny");
+      if (!__Pyx_RefNanny)
+          Py_FatalError("failed to import 'refnanny' module");
+  }
+  #endif
+  __Pyx_RefNannySetupContext("PyMODINIT_FUNC PyInit_utils(void)", 0);
+  if ( __Pyx_check_binary_version() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #ifdef __Pyx_CyFunction_USED
+  if (__Pyx_CyFunction_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #endif
+  #ifdef __Pyx_FusedFunction_USED
+  if (__pyx_FusedFunction_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #endif
+  #ifdef __Pyx_Generator_USED
+  if (__pyx_Generator_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #endif
+  /*--- Library function declarations ---*/
+  /*--- Threads initialization code ---*/
+  #if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS
+  #ifdef WITH_THREAD /* Python build with threading support? */
+  PyEval_InitThreads();
+  #endif
+  #endif
+  /*--- Module creation code ---*/
+  #if PY_MAJOR_VERSION < 3
+  __pyx_m = Py_InitModule4(__Pyx_NAMESTR("utils"), __pyx_methods, 0, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m);
+  #else
+  __pyx_m = PyModule_Create(&__pyx_moduledef);
+  #endif
+  if (unlikely(!__pyx_m)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #if PY_MAJOR_VERSION >= 3
+  {
+    PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (!PyDict_GetItemString(modules, "h5py.utils")) {
+      if (unlikely(PyDict_SetItemString(modules, "h5py.utils", __pyx_m) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    }
+  }
+  #endif
+  __pyx_b = PyImport_AddModule(__Pyx_NAMESTR(__Pyx_BUILTIN_MODULE_NAME)); if (unlikely(!__pyx_b)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  #if CYTHON_COMPILING_IN_PYPY
+  Py_INCREF(__pyx_b);
+  #endif
+  if (__Pyx_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  /*--- Initialize various global constants etc. ---*/
+  if (unlikely(__Pyx_InitGlobals() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__pyx_module_is_main_h5py__utils) {
+    if (__Pyx_SetAttrString(__pyx_m, "__name__", __pyx_n_s____main__) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+  }
+  /*--- Builtin init code ---*/
+  if (unlikely(__Pyx_InitCachedBuiltins() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  /*--- Constants init code ---*/
+  if (unlikely(__Pyx_InitCachedConstants() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  /*--- Global init code ---*/
+  /*--- Variable export code ---*/
+  /*--- Function export code ---*/
+  if (__Pyx_ExportFunction("emalloc", (void (*)(void))__pyx_f_4h5py_5utils_emalloc, "void *(size_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("efree", (void (*)(void))__pyx_f_4h5py_5utils_efree, "void (void *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("check_numpy_read", (void (*)(void))__pyx_f_4h5py_5utils_check_numpy_read, "int (PyArrayObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_4h5py_5utils_check_numpy_read *__pyx_optional_args)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("check_numpy_write", (void (*)(void))__pyx_f_4h5py_5utils_check_numpy_write, "int (PyArrayObject *, int __pyx_skip_dispatch, struct __pyx_opt_args_4h5py_5utils_check_numpy_write *__pyx_optional_args)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("convert_tuple", (void (*)(void))__pyx_f_4h5py_5utils_convert_tuple, "int (PyObject *, hsize_t *, hsize_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("convert_dims", (void (*)(void))__pyx_f_4h5py_5utils_convert_dims, "PyObject *(hsize_t *, hsize_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("require_tuple", (void (*)(void))__pyx_f_4h5py_5utils_require_tuple, "int (PyObject *, int, int, char *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("create_numpy_hsize", (void (*)(void))__pyx_f_4h5py_5utils_create_numpy_hsize, "PyObject *(int, hsize_t *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ExportFunction("create_hsize_array", (void (*)(void))__pyx_f_4h5py_5utils_create_hsize_array, "PyObject *(PyObject *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  /*--- Type init code ---*/
+  /*--- Type import code ---*/
+  __pyx_ptype_4h5py_5numpy_dtype = __Pyx_ImportType("numpy", "dtype", sizeof(PyArray_Descr), 0); if (unlikely(!__pyx_ptype_4h5py_5numpy_dtype)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_ptype_4h5py_5numpy_ndarray = __Pyx_ImportType("numpy", "ndarray", sizeof(PyArrayObject), 0); if (unlikely(!__pyx_ptype_4h5py_5numpy_ndarray)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  /*--- Variable import code ---*/
+  /*--- Function import code ---*/
+  __pyx_t_1 = __Pyx_ImportModule("h5py.defs"); if (!__pyx_t_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Sget_simple_extent_ndims", (void (**)(void))&__pyx_f_4h5py_4defs_H5Sget_simple_extent_ndims, "int (hid_t)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_ImportFunction(__pyx_t_1, "H5Sget_simple_extent_dims", (void (**)(void))&__pyx_f_4h5py_4defs_H5Sget_simple_extent_dims, "int (hid_t, hsize_t *, hsize_t *)") < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  Py_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  /*--- Execution code ---*/
+
+  /* "h5py/utils.pyx":21
+ * 
+ * # Initialization
+ * import_array()             # <<<<<<<<<<<<<<
+ * 
+ * # === Exception-aware memory allocation =======================================
+ */
+  import_array();
+
+  /* "h5py/utils.pyx":47
+ *     free(what)
+ * 
+ * def _test_emalloc(size_t size):             # <<<<<<<<<<<<<<
+ *     """Stub to simplify unit tests"""
+ *     cdef void* mem
+ */
+  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_4h5py_5utils_1_test_emalloc, NULL, __pyx_n_s_19); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s___test_emalloc, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+  /* "h5py/utils.pyx":1
+ * # cython: profile=False             # <<<<<<<<<<<<<<
+ * 
+ * # This file is part of h5py, a Python interface to the HDF5 library.
+ */
+  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s____test__, ((PyObject *)__pyx_t_2)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  if (__pyx_m) {
+    __Pyx_AddTraceback("init h5py.utils", __pyx_clineno, __pyx_lineno, __pyx_filename);
+    Py_DECREF(__pyx_m); __pyx_m = 0;
+  } else if (!PyErr_Occurred()) {
+    PyErr_SetString(PyExc_ImportError, "init h5py.utils");
+  }
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  #if PY_MAJOR_VERSION < 3
+  return;
+  #else
+  return __pyx_m;
+  #endif
+}
+
+/* Runtime support code */
+#if CYTHON_REFNANNY
+static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) {
+    PyObject *m = NULL, *p = NULL;
+    void *r = NULL;
+    m = PyImport_ImportModule((char *)modname);
+    if (!m) goto end;
+    p = PyObject_GetAttrString(m, (char *)"RefNannyAPI");
+    if (!p) goto end;
+    r = PyLong_AsVoidPtr(p);
+end:
+    Py_XDECREF(p);
+    Py_XDECREF(m);
+    return (__Pyx_RefNannyAPIStruct *)r;
+}
+#endif /* CYTHON_REFNANNY */
+
+static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name) {
+    PyObject *result;
+    result = PyObject_GetAttr(dict, name);
+    if (!result) {
+        if (dict != __pyx_b) {
+            PyErr_Clear();
+            result = PyObject_GetAttr(__pyx_b, name);
+        }
+        if (!result) {
+            PyErr_SetObject(PyExc_NameError, name);
+        }
+    }
+    return result;
+}
+
+static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb) {
+#if CYTHON_COMPILING_IN_CPYTHON
+    PyObject *tmp_type, *tmp_value, *tmp_tb;
+    PyThreadState *tstate = PyThreadState_GET();
+    tmp_type = tstate->curexc_type;
+    tmp_value = tstate->curexc_value;
+    tmp_tb = tstate->curexc_traceback;
+    tstate->curexc_type = type;
+    tstate->curexc_value = value;
+    tstate->curexc_traceback = tb;
+    Py_XDECREF(tmp_type);
+    Py_XDECREF(tmp_value);
+    Py_XDECREF(tmp_tb);
+#else
+    PyErr_Restore(type, value, tb);
+#endif
+}
+static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb) {
+#if CYTHON_COMPILING_IN_CPYTHON
+    PyThreadState *tstate = PyThreadState_GET();
+    *type = tstate->curexc_type;
+    *value = tstate->curexc_value;
+    *tb = tstate->curexc_traceback;
+    tstate->curexc_type = 0;
+    tstate->curexc_value = 0;
+    tstate->curexc_traceback = 0;
+#else
+    PyErr_Fetch(type, value, tb);
+#endif
+}
+
+static void __Pyx_RaiseDoubleKeywordsError(
+    const char* func_name,
+    PyObject* kw_name)
+{
+    PyErr_Format(PyExc_TypeError,
+        #if PY_MAJOR_VERSION >= 3
+        "%s() got multiple values for keyword argument '%U'", func_name, kw_name);
+        #else
+        "%s() got multiple values for keyword argument '%s'", func_name,
+        PyString_AsString(kw_name));
+        #endif
+}
+
+static int __Pyx_ParseOptionalKeywords(
+    PyObject *kwds,
+    PyObject **argnames[],
+    PyObject *kwds2,
+    PyObject *values[],
+    Py_ssize_t num_pos_args,
+    const char* function_name)
+{
+    PyObject *key = 0, *value = 0;
+    Py_ssize_t pos = 0;
+    PyObject*** name;
+    PyObject*** first_kw_arg = argnames + num_pos_args;
+    while (PyDict_Next(kwds, &pos, &key, &value)) {
+        name = first_kw_arg;
+        while (*name && (**name != key)) name++;
+        if (*name) {
+            values[name-argnames] = value;
+            continue;
+        }
+        name = first_kw_arg;
+        #if PY_MAJOR_VERSION < 3
+        if (likely(PyString_CheckExact(key)) || likely(PyString_Check(key))) {
+            while (*name) {
+                if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key))
+                        && _PyString_Eq(**name, key)) {
+                    values[name-argnames] = value;
+                    break;
+                }
+                name++;
+            }
+            if (*name) continue;
+            else {
+                PyObject*** argname = argnames;
+                while (argname != first_kw_arg) {
+                    if ((**argname == key) || (
+                            (CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**argname) == PyString_GET_SIZE(key))
+                             && _PyString_Eq(**argname, key))) {
+                        goto arg_passed_twice;
+                    }
+                    argname++;
+                }
+            }
+        } else
+        #endif
+        if (likely(PyUnicode_Check(key))) {
+            while (*name) {
+                int cmp = (**name == key) ? 0 :
+                #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
+                    (PyUnicode_GET_SIZE(**name) != PyUnicode_GET_SIZE(key)) ? 1 :
+                #endif
+                    PyUnicode_Compare(**name, key);
+                if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
+                if (cmp == 0) {
+                    values[name-argnames] = value;
+                    break;
+                }
+                name++;
+            }
+            if (*name) continue;
+            else {
+                PyObject*** argname = argnames;
+                while (argname != first_kw_arg) {
+                    int cmp = (**argname == key) ? 0 :
+                    #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
+                        (PyUnicode_GET_SIZE(**argname) != PyUnicode_GET_SIZE(key)) ? 1 :
+                    #endif
+                        PyUnicode_Compare(**argname, key);
+                    if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
+                    if (cmp == 0) goto arg_passed_twice;
+                    argname++;
+                }
+            }
+        } else
+            goto invalid_keyword_type;
+        if (kwds2) {
+            if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad;
+        } else {
+            goto invalid_keyword;
+        }
+    }
+    return 0;
+arg_passed_twice:
+    __Pyx_RaiseDoubleKeywordsError(function_name, key);
+    goto bad;
+invalid_keyword_type:
+    PyErr_Format(PyExc_TypeError,
+        "%s() keywords must be strings", function_name);
+    goto bad;
+invalid_keyword:
+    PyErr_Format(PyExc_TypeError,
+    #if PY_MAJOR_VERSION < 3
+        "%s() got an unexpected keyword argument '%s'",
+        function_name, PyString_AsString(key));
+    #else
+        "%s() got an unexpected keyword argument '%U'",
+        function_name, key);
+    #endif
+bad:
+    return -1;
+}
+
+static void __Pyx_RaiseArgtupleInvalid(
+    const char* func_name,
+    int exact,
+    Py_ssize_t num_min,
+    Py_ssize_t num_max,
+    Py_ssize_t num_found)
+{
+    Py_ssize_t num_expected;
+    const char *more_or_less;
+    if (num_found < num_min) {
+        num_expected = num_min;
+        more_or_less = "at least";
+    } else {
+        num_expected = num_max;
+        more_or_less = "at most";
+    }
+    if (exact) {
+        more_or_less = "exactly";
+    }
+    PyErr_Format(PyExc_TypeError,
+                 "%s() takes %s %" CYTHON_FORMAT_SSIZE_T "d positional argument%s (%" CYTHON_FORMAT_SSIZE_T "d given)",
+                 func_name, more_or_less, num_expected,
+                 (num_expected == 1) ? "" : "s", num_found);
+}
+
+static int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, int none_allowed,
+    const char *name, int exact)
+{
+    if (!type) {
+        PyErr_Format(PyExc_SystemError, "Missing type object");
+        return 0;
+    }
+    if (none_allowed && obj == Py_None) return 1;
+    else if (exact) {
+        if (Py_TYPE(obj) == type) return 1;
+    }
+    else {
+        if (PyObject_TypeCheck(obj, type)) return 1;
+    }
+    PyErr_Format(PyExc_TypeError,
+        "Argument '%s' has incorrect type (expected %s, got %s)",
+        name, type->tp_name, Py_TYPE(obj)->tp_name);
+    return 0;
+}
+
+#if PY_MAJOR_VERSION < 3
+static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb,
+                        CYTHON_UNUSED PyObject *cause) {
+    Py_XINCREF(type);
+    if (!value || value == Py_None)
+        value = NULL;
+    else
+        Py_INCREF(value);
+    if (!tb || tb == Py_None)
+        tb = NULL;
+    else {
+        Py_INCREF(tb);
+        if (!PyTraceBack_Check(tb)) {
+            PyErr_SetString(PyExc_TypeError,
+                "raise: arg 3 must be a traceback or None");
+            goto raise_error;
+        }
+    }
+    #if PY_VERSION_HEX < 0x02050000
+    if (PyClass_Check(type)) {
+    #else
+    if (PyType_Check(type)) {
+    #endif
+#if CYTHON_COMPILING_IN_PYPY
+        if (!value) {
+            Py_INCREF(Py_None);
+            value = Py_None;
+        }
+#endif
+        PyErr_NormalizeException(&type, &value, &tb);
+    } else {
+        if (value) {
+            PyErr_SetString(PyExc_TypeError,
+                "instance exception may not have a separate value");
+            goto raise_error;
+        }
+        value = type;
+        #if PY_VERSION_HEX < 0x02050000
+            if (PyInstance_Check(type)) {
+                type = (PyObject*) ((PyInstanceObject*)type)->in_class;
+                Py_INCREF(type);
+            }
+            else {
+                type = 0;
+                PyErr_SetString(PyExc_TypeError,
+                    "raise: exception must be an old-style class or instance");
+                goto raise_error;
+            }
+        #else
+            type = (PyObject*) Py_TYPE(type);
+            Py_INCREF(type);
+            if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) {
+                PyErr_SetString(PyExc_TypeError,
+                    "raise: exception class must be a subclass of BaseException");
+                goto raise_error;
+            }
+        #endif
+    }
+    __Pyx_ErrRestore(type, value, tb);
+    return;
+raise_error:
+    Py_XDECREF(value);
+    Py_XDECREF(type);
+    Py_XDECREF(tb);
+    return;
+}
+#else /* Python 3+ */
+static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) {
+    PyObject* owned_instance = NULL;
+    if (tb == Py_None) {
+        tb = 0;
+    } else if (tb && !PyTraceBack_Check(tb)) {
+        PyErr_SetString(PyExc_TypeError,
+            "raise: arg 3 must be a traceback or None");
+        goto bad;
+    }
+    if (value == Py_None)
+        value = 0;
+    if (PyExceptionInstance_Check(type)) {
+        if (value) {
+            PyErr_SetString(PyExc_TypeError,
+                "instance exception may not have a separate value");
+            goto bad;
+        }
+        value = type;
+        type = (PyObject*) Py_TYPE(value);
+    } else if (PyExceptionClass_Check(type)) {
+        PyObject *args;
+        if (!value)
+            args = PyTuple_New(0);
+        else if (PyTuple_Check(value)) {
+            Py_INCREF(value);
+            args = value;
+        }
+        else
+            args = PyTuple_Pack(1, value);
+        if (!args)
+            goto bad;
+        owned_instance = PyEval_CallObject(type, args);
+        Py_DECREF(args);
+        if (!owned_instance)
+            goto bad;
+        value = owned_instance;
+        if (!PyExceptionInstance_Check(value)) {
+            PyErr_Format(PyExc_TypeError,
+                         "calling %R should have returned an instance of "
+                         "BaseException, not %R",
+                         type, Py_TYPE(value));
+            goto bad;
+        }
+    } else {
+        PyErr_SetString(PyExc_TypeError,
+            "raise: exception class must be a subclass of BaseException");
+        goto bad;
+    }
+    if (cause && cause != Py_None) {
+        PyObject *fixed_cause;
+        if (PyExceptionClass_Check(cause)) {
+            fixed_cause = PyObject_CallObject(cause, NULL);
+            if (fixed_cause == NULL)
+                goto bad;
+        }
+        else if (PyExceptionInstance_Check(cause)) {
+            fixed_cause = cause;
+            Py_INCREF(fixed_cause);
+        }
+        else {
+            PyErr_SetString(PyExc_TypeError,
+                            "exception causes must derive from "
+                            "BaseException");
+            goto bad;
+        }
+        PyException_SetCause(value, fixed_cause);
+    }
+    PyErr_SetObject(type, value);
+    if (tb) {
+        PyThreadState *tstate = PyThreadState_GET();
+        PyObject* tmp_tb = tstate->curexc_traceback;
+        if (tb != tmp_tb) {
+            Py_INCREF(tb);
+            tstate->curexc_traceback = tb;
+            Py_XDECREF(tmp_tb);
+        }
+    }
+bad:
+    Py_XDECREF(owned_instance);
+    return;
+}
+#endif
+
+static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) {
+    PyObject *local_type, *local_value, *local_tb;
+#if CYTHON_COMPILING_IN_CPYTHON
+    PyObject *tmp_type, *tmp_value, *tmp_tb;
+    PyThreadState *tstate = PyThreadState_GET();
+    local_type = tstate->curexc_type;
+    local_value = tstate->curexc_value;
+    local_tb = tstate->curexc_traceback;
+    tstate->curexc_type = 0;
+    tstate->curexc_value = 0;
+    tstate->curexc_traceback = 0;
+#else
+    PyErr_Fetch(&local_type, &local_value, &local_tb);
+#endif
+    PyErr_NormalizeException(&local_type, &local_value, &local_tb);
+#if CYTHON_COMPILING_IN_CPYTHON
+    if (unlikely(tstate->curexc_type))
+#else
+    if (unlikely(PyErr_Occurred()))
+#endif
+        goto bad;
+    #if PY_MAJOR_VERSION >= 3
+    if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0))
+        goto bad;
+    #endif
+    Py_INCREF(local_type);
+    Py_INCREF(local_value);
+    Py_INCREF(local_tb);
+    *type = local_type;
+    *value = local_value;
+    *tb = local_tb;
+#if CYTHON_COMPILING_IN_CPYTHON
+    tmp_type = tstate->exc_type;
+    tmp_value = tstate->exc_value;
+    tmp_tb = tstate->exc_traceback;
+    tstate->exc_type = local_type;
+    tstate->exc_value = local_value;
+    tstate->exc_traceback = local_tb;
+    /* Make sure tstate is in a consistent state when we XDECREF
+       these objects (DECREF may run arbitrary code). */
+    Py_XDECREF(tmp_type);
+    Py_XDECREF(tmp_value);
+    Py_XDECREF(tmp_tb);
+#else
+    PyErr_SetExcInfo(local_type, local_value, local_tb);
+#endif
+    return 0;
+bad:
+    *type = 0;
+    *value = 0;
+    *tb = 0;
+    Py_XDECREF(local_type);
+    Py_XDECREF(local_value);
+    Py_XDECREF(local_tb);
+    return -1;
+}
+
+static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) {
+    if (unlikely(!type)) {
+        PyErr_Format(PyExc_SystemError, "Missing type object");
+        return 0;
+    }
+    if (likely(PyObject_TypeCheck(obj, type)))
+        return 1;
+    PyErr_Format(PyExc_TypeError, "Cannot convert %.200s to %.200s",
+                 Py_TYPE(obj)->tp_name, type->tp_name);
+    return 0;
+}
+
+static CYTHON_INLINE void __Pyx_ExceptionSave(PyObject **type, PyObject **value, PyObject **tb) {
+#if CYTHON_COMPILING_IN_CPYTHON
+    PyThreadState *tstate = PyThreadState_GET();
+    *type = tstate->exc_type;
+    *value = tstate->exc_value;
+    *tb = tstate->exc_traceback;
+    Py_XINCREF(*type);
+    Py_XINCREF(*value);
+    Py_XINCREF(*tb);
+#else
+    PyErr_GetExcInfo(type, value, tb);
+#endif
+}
+static void __Pyx_ExceptionReset(PyObject *type, PyObject *value, PyObject *tb) {
+#if CYTHON_COMPILING_IN_CPYTHON
+    PyObject *tmp_type, *tmp_value, *tmp_tb;
+    PyThreadState *tstate = PyThreadState_GET();
+    tmp_type = tstate->exc_type;
+    tmp_value = tstate->exc_value;
+    tmp_tb = tstate->exc_traceback;
+    tstate->exc_type = type;
+    tstate->exc_value = value;
+    tstate->exc_traceback = tb;
+    Py_XDECREF(tmp_type);
+    Py_XDECREF(tmp_value);
+    Py_XDECREF(tmp_tb);
+#else
+    PyErr_SetExcInfo(type, value, tb);
+#endif
+}
+
+static CYTHON_INLINE hid_t __Pyx_PyInt_from_py_hid_t(PyObject* x) {
+    const hid_t neg_one = (hid_t)-1, const_zero = (hid_t)0;
+    const int is_unsigned = const_zero < neg_one;
+    if (sizeof(hid_t) == sizeof(char)) {
+        if (is_unsigned)
+            return (hid_t)__Pyx_PyInt_AsUnsignedChar(x);
+        else
+            return (hid_t)__Pyx_PyInt_AsSignedChar(x);
+    } else if (sizeof(hid_t) == sizeof(short)) {
+        if (is_unsigned)
+            return (hid_t)__Pyx_PyInt_AsUnsignedShort(x);
+        else
+            return (hid_t)__Pyx_PyInt_AsSignedShort(x);
+    } else if (sizeof(hid_t) == sizeof(int)) {
+        if (is_unsigned)
+            return (hid_t)__Pyx_PyInt_AsUnsignedInt(x);
+        else
+            return (hid_t)__Pyx_PyInt_AsSignedInt(x);
+    } else if (sizeof(hid_t) == sizeof(long)) {
+        if (is_unsigned)
+            return (hid_t)__Pyx_PyInt_AsUnsignedLong(x);
+        else
+            return (hid_t)__Pyx_PyInt_AsSignedLong(x);
+    } else if (sizeof(hid_t) == sizeof(PY_LONG_LONG)) {
+        if (is_unsigned)
+            return (hid_t)__Pyx_PyInt_AsUnsignedLongLong(x);
+        else
+            return (hid_t)__Pyx_PyInt_AsSignedLongLong(x);
+    }  else {
+        #if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
+        PyErr_SetString(PyExc_RuntimeError,
+                        "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
+        #else
+        hid_t val;
+        PyObject *v = __Pyx_PyNumber_Int(x);
+        #if PY_VERSION_HEX < 0x03000000
+        if (likely(v) && !PyLong_Check(v)) {
+            PyObject *tmp = v;
+            v = PyNumber_Long(tmp);
+            Py_DECREF(tmp);
+        }
+        #endif
+        if (likely(v)) {
+            int one = 1; int is_little = (int)*(unsigned char *)&one;
+            unsigned char *bytes = (unsigned char *)&val;
+            int ret = _PyLong_AsByteArray((PyLongObject *)v,
+                                          bytes, sizeof(val),
+                                          is_little, !is_unsigned);
+            Py_DECREF(v);
+            if (likely(!ret))
+                return val;
+        }
+        #endif
+        return (hid_t)-1;
+    }
+}
+
+static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_hsize_t(hsize_t val) {
+    const hsize_t neg_one = (hsize_t)-1, const_zero = (hsize_t)0;
+    const int is_unsigned = const_zero < neg_one;
+    if ((sizeof(hsize_t) == sizeof(char))  ||
+        (sizeof(hsize_t) == sizeof(short))) {
+        return PyInt_FromLong((long)val);
+    } else if ((sizeof(hsize_t) == sizeof(int)) ||
+               (sizeof(hsize_t) == sizeof(long))) {
+        if (is_unsigned)
+            return PyLong_FromUnsignedLong((unsigned long)val);
+        else
+            return PyInt_FromLong((long)val);
+    } else if (sizeof(hsize_t) == sizeof(PY_LONG_LONG)) {
+        if (is_unsigned)
+            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG)val);
+        else
+            return PyLong_FromLongLong((PY_LONG_LONG)val);
+    } else {
+        int one = 1; int little = (int)*(unsigned char *)&one;
+        unsigned char *bytes = (unsigned char *)&val;
+        return _PyLong_FromByteArray(bytes, sizeof(hsize_t),
+                                     little, !is_unsigned);
+    }
+}
+
+static CYTHON_INLINE hsize_t __Pyx_PyInt_from_py_hsize_t(PyObject* x) {
+    const hsize_t neg_one = (hsize_t)-1, const_zero = (hsize_t)0;
+    const int is_unsigned = const_zero < neg_one;
+    if (sizeof(hsize_t) == sizeof(char)) {
+        if (is_unsigned)
+            return (hsize_t)__Pyx_PyInt_AsUnsignedChar(x);
+        else
+            return (hsize_t)__Pyx_PyInt_AsSignedChar(x);
+    } else if (sizeof(hsize_t) == sizeof(short)) {
+        if (is_unsigned)
+            return (hsize_t)__Pyx_PyInt_AsUnsignedShort(x);
+        else
+            return (hsize_t)__Pyx_PyInt_AsSignedShort(x);
+    } else if (sizeof(hsize_t) == sizeof(int)) {
+        if (is_unsigned)
+            return (hsize_t)__Pyx_PyInt_AsUnsignedInt(x);
+        else
+            return (hsize_t)__Pyx_PyInt_AsSignedInt(x);
+    } else if (sizeof(hsize_t) == sizeof(long)) {
+        if (is_unsigned)
+            return (hsize_t)__Pyx_PyInt_AsUnsignedLong(x);
+        else
+            return (hsize_t)__Pyx_PyInt_AsSignedLong(x);
+    } else if (sizeof(hsize_t) == sizeof(PY_LONG_LONG)) {
+        if (is_unsigned)
+            return (hsize_t)__Pyx_PyInt_AsUnsignedLongLong(x);
+        else
+            return (hsize_t)__Pyx_PyInt_AsSignedLongLong(x);
+    }  else {
+        #if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
+        PyErr_SetString(PyExc_RuntimeError,
+                        "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
+        #else
+        hsize_t val;
+        PyObject *v = __Pyx_PyNumber_Int(x);
+        #if PY_VERSION_HEX < 0x03000000
+        if (likely(v) && !PyLong_Check(v)) {
+            PyObject *tmp = v;
+            v = PyNumber_Long(tmp);
+            Py_DECREF(tmp);
+        }
+        #endif
+        if (likely(v)) {
+            int one = 1; int is_little = (int)*(unsigned char *)&one;
+            unsigned char *bytes = (unsigned char *)&val;
+            int ret = _PyLong_AsByteArray((PyLongObject *)v,
+                                          bytes, sizeof(val),
+                                          is_little, !is_unsigned);
+            Py_DECREF(v);
+            if (likely(!ret))
+                return val;
+        }
+        #endif
+        return (hsize_t)-1;
+    }
+}
+
+static CYTHON_INLINE unsigned char __Pyx_PyInt_AsUnsignedChar(PyObject* x) {
+    const unsigned char neg_one = (unsigned char)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(unsigned char) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(unsigned char)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to unsigned char" :
+                    "value too large to convert to unsigned char");
+            }
+            return (unsigned char)-1;
+        }
+        return (unsigned char)val;
+    }
+    return (unsigned char)__Pyx_PyInt_AsUnsignedLong(x);
+}
+
+static CYTHON_INLINE unsigned short __Pyx_PyInt_AsUnsignedShort(PyObject* x) {
+    const unsigned short neg_one = (unsigned short)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(unsigned short) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(unsigned short)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to unsigned short" :
+                    "value too large to convert to unsigned short");
+            }
+            return (unsigned short)-1;
+        }
+        return (unsigned short)val;
+    }
+    return (unsigned short)__Pyx_PyInt_AsUnsignedLong(x);
+}
+
+static CYTHON_INLINE unsigned int __Pyx_PyInt_AsUnsignedInt(PyObject* x) {
+    const unsigned int neg_one = (unsigned int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(unsigned int) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(unsigned int)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to unsigned int" :
+                    "value too large to convert to unsigned int");
+            }
+            return (unsigned int)-1;
+        }
+        return (unsigned int)val;
+    }
+    return (unsigned int)__Pyx_PyInt_AsUnsignedLong(x);
+}
+
+static CYTHON_INLINE char __Pyx_PyInt_AsChar(PyObject* x) {
+    const char neg_one = (char)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(char) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(char)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to char" :
+                    "value too large to convert to char");
+            }
+            return (char)-1;
+        }
+        return (char)val;
+    }
+    return (char)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE short __Pyx_PyInt_AsShort(PyObject* x) {
+    const short neg_one = (short)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(short) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(short)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to short" :
+                    "value too large to convert to short");
+            }
+            return (short)-1;
+        }
+        return (short)val;
+    }
+    return (short)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE int __Pyx_PyInt_AsInt(PyObject* x) {
+    const int neg_one = (int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(int) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(int)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to int" :
+                    "value too large to convert to int");
+            }
+            return (int)-1;
+        }
+        return (int)val;
+    }
+    return (int)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE signed char __Pyx_PyInt_AsSignedChar(PyObject* x) {
+    const signed char neg_one = (signed char)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(signed char) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(signed char)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to signed char" :
+                    "value too large to convert to signed char");
+            }
+            return (signed char)-1;
+        }
+        return (signed char)val;
+    }
+    return (signed char)__Pyx_PyInt_AsSignedLong(x);
+}
+
+static CYTHON_INLINE signed short __Pyx_PyInt_AsSignedShort(PyObject* x) {
+    const signed short neg_one = (signed short)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(signed short) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(signed short)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to signed short" :
+                    "value too large to convert to signed short");
+            }
+            return (signed short)-1;
+        }
+        return (signed short)val;
+    }
+    return (signed short)__Pyx_PyInt_AsSignedLong(x);
+}
+
+static CYTHON_INLINE signed int __Pyx_PyInt_AsSignedInt(PyObject* x) {
+    const signed int neg_one = (signed int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(signed int) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(signed int)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to signed int" :
+                    "value too large to convert to signed int");
+            }
+            return (signed int)-1;
+        }
+        return (signed int)val;
+    }
+    return (signed int)__Pyx_PyInt_AsSignedLong(x);
+}
+
+static CYTHON_INLINE int __Pyx_PyInt_AsLongDouble(PyObject* x) {
+    const int neg_one = (int)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+    if (sizeof(int) < sizeof(long)) {
+        long val = __Pyx_PyInt_AsLong(x);
+        if (unlikely(val != (long)(int)val)) {
+            if (!unlikely(val == -1 && PyErr_Occurred())) {
+                PyErr_SetString(PyExc_OverflowError,
+                    (is_unsigned && unlikely(val < 0)) ?
+                    "can't convert negative value to int" :
+                    "value too large to convert to int");
+            }
+            return (int)-1;
+        }
+        return (int)val;
+    }
+    return (int)__Pyx_PyInt_AsLong(x);
+}
+
+static CYTHON_INLINE unsigned long __Pyx_PyInt_AsUnsignedLong(PyObject* x) {
+    const unsigned long neg_one = (unsigned long)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to unsigned long");
+            return (unsigned long)-1;
+        }
+        return (unsigned long)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to unsigned long");
+                return (unsigned long)-1;
+            }
+            return (unsigned long)PyLong_AsUnsignedLong(x);
+        } else {
+            return (unsigned long)PyLong_AsLong(x);
+        }
+    } else {
+        unsigned long val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (unsigned long)-1;
+        val = __Pyx_PyInt_AsUnsignedLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE unsigned PY_LONG_LONG __Pyx_PyInt_AsUnsignedLongLong(PyObject* x) {
+    const unsigned PY_LONG_LONG neg_one = (unsigned PY_LONG_LONG)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to unsigned PY_LONG_LONG");
+            return (unsigned PY_LONG_LONG)-1;
+        }
+        return (unsigned PY_LONG_LONG)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to unsigned PY_LONG_LONG");
+                return (unsigned PY_LONG_LONG)-1;
+            }
+            return (unsigned PY_LONG_LONG)PyLong_AsUnsignedLongLong(x);
+        } else {
+            return (unsigned PY_LONG_LONG)PyLong_AsLongLong(x);
+        }
+    } else {
+        unsigned PY_LONG_LONG val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (unsigned PY_LONG_LONG)-1;
+        val = __Pyx_PyInt_AsUnsignedLongLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE long __Pyx_PyInt_AsLong(PyObject* x) {
+    const long neg_one = (long)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to long");
+            return (long)-1;
+        }
+        return (long)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to long");
+                return (long)-1;
+            }
+            return (long)PyLong_AsUnsignedLong(x);
+        } else {
+            return (long)PyLong_AsLong(x);
+        }
+    } else {
+        long val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (long)-1;
+        val = __Pyx_PyInt_AsLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE PY_LONG_LONG __Pyx_PyInt_AsLongLong(PyObject* x) {
+    const PY_LONG_LONG neg_one = (PY_LONG_LONG)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to PY_LONG_LONG");
+            return (PY_LONG_LONG)-1;
+        }
+        return (PY_LONG_LONG)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to PY_LONG_LONG");
+                return (PY_LONG_LONG)-1;
+            }
+            return (PY_LONG_LONG)PyLong_AsUnsignedLongLong(x);
+        } else {
+            return (PY_LONG_LONG)PyLong_AsLongLong(x);
+        }
+    } else {
+        PY_LONG_LONG val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (PY_LONG_LONG)-1;
+        val = __Pyx_PyInt_AsLongLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE signed long __Pyx_PyInt_AsSignedLong(PyObject* x) {
+    const signed long neg_one = (signed long)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to signed long");
+            return (signed long)-1;
+        }
+        return (signed long)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to signed long");
+                return (signed long)-1;
+            }
+            return (signed long)PyLong_AsUnsignedLong(x);
+        } else {
+            return (signed long)PyLong_AsLong(x);
+        }
+    } else {
+        signed long val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (signed long)-1;
+        val = __Pyx_PyInt_AsSignedLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static CYTHON_INLINE signed PY_LONG_LONG __Pyx_PyInt_AsSignedLongLong(PyObject* x) {
+    const signed PY_LONG_LONG neg_one = (signed PY_LONG_LONG)-1, const_zero = 0;
+    const int is_unsigned = neg_one > const_zero;
+#if PY_VERSION_HEX < 0x03000000
+    if (likely(PyInt_Check(x))) {
+        long val = PyInt_AS_LONG(x);
+        if (is_unsigned && unlikely(val < 0)) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "can't convert negative value to signed PY_LONG_LONG");
+            return (signed PY_LONG_LONG)-1;
+        }
+        return (signed PY_LONG_LONG)val;
+    } else
+#endif
+    if (likely(PyLong_Check(x))) {
+        if (is_unsigned) {
+            if (unlikely(Py_SIZE(x) < 0)) {
+                PyErr_SetString(PyExc_OverflowError,
+                                "can't convert negative value to signed PY_LONG_LONG");
+                return (signed PY_LONG_LONG)-1;
+            }
+            return (signed PY_LONG_LONG)PyLong_AsUnsignedLongLong(x);
+        } else {
+            return (signed PY_LONG_LONG)PyLong_AsLongLong(x);
+        }
+    } else {
+        signed PY_LONG_LONG val;
+        PyObject *tmp = __Pyx_PyNumber_Int(x);
+        if (!tmp) return (signed PY_LONG_LONG)-1;
+        val = __Pyx_PyInt_AsSignedLongLong(tmp);
+        Py_DECREF(tmp);
+        return val;
+    }
+}
+
+static void __Pyx_WriteUnraisable(const char *name, CYTHON_UNUSED int clineno,
+                                  CYTHON_UNUSED int lineno, CYTHON_UNUSED const char *filename) {
+    PyObject *old_exc, *old_val, *old_tb;
+    PyObject *ctx;
+    __Pyx_ErrFetch(&old_exc, &old_val, &old_tb);
+    #if PY_MAJOR_VERSION < 3
+    ctx = PyString_FromString(name);
+    #else
+    ctx = PyUnicode_FromString(name);
+    #endif
+    __Pyx_ErrRestore(old_exc, old_val, old_tb);
+    if (!ctx) {
+        PyErr_WriteUnraisable(Py_None);
+    } else {
+        PyErr_WriteUnraisable(ctx);
+        Py_DECREF(ctx);
+    }
+}
+
+static int __Pyx_check_binary_version(void) {
+    char ctversion[4], rtversion[4];
+    PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION);
+    PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion());
+    if (ctversion[0] != rtversion[0] || ctversion[2] != rtversion[2]) {
+        char message[200];
+        PyOS_snprintf(message, sizeof(message),
+                      "compiletime version %s of module '%.100s' "
+                      "does not match runtime version %s",
+                      ctversion, __Pyx_MODULE_NAME, rtversion);
+        #if PY_VERSION_HEX < 0x02050000
+        return PyErr_Warn(NULL, message);
+        #else
+        return PyErr_WarnEx(NULL, message, 1);
+        #endif
+    }
+    return 0;
+}
+
+static int __Pyx_ExportFunction(const char *name, void (*f)(void), const char *sig) {
+    PyObject *d = 0;
+    PyObject *cobj = 0;
+    union {
+        void (*fp)(void);
+        void *p;
+    } tmp;
+    d = PyObject_GetAttrString(__pyx_m, (char *)"__pyx_capi__");
+    if (!d) {
+        PyErr_Clear();
+        d = PyDict_New();
+        if (!d)
+            goto bad;
+        Py_INCREF(d);
+        if (PyModule_AddObject(__pyx_m, (char *)"__pyx_capi__", d) < 0)
+            goto bad;
+    }
+    tmp.fp = f;
+#if PY_VERSION_HEX >= 0x02070000 && !(PY_MAJOR_VERSION==3&&PY_MINOR_VERSION==0)
+    cobj = PyCapsule_New(tmp.p, sig, 0);
+#else
+    cobj = PyCObject_FromVoidPtrAndDesc(tmp.p, (void *)sig, 0);
+#endif
+    if (!cobj)
+        goto bad;
+    if (PyDict_SetItemString(d, name, cobj) < 0)
+        goto bad;
+    Py_DECREF(cobj);
+    Py_DECREF(d);
+    return 0;
+bad:
+    Py_XDECREF(cobj);
+    Py_XDECREF(d);
+    return -1;
+}
+
+#ifndef __PYX_HAVE_RT_ImportModule
+#define __PYX_HAVE_RT_ImportModule
+static PyObject *__Pyx_ImportModule(const char *name) {
+    PyObject *py_name = 0;
+    PyObject *py_module = 0;
+    py_name = __Pyx_PyIdentifier_FromString(name);
+    if (!py_name)
+        goto bad;
+    py_module = PyImport_Import(py_name);
+    Py_DECREF(py_name);
+    return py_module;
+bad:
+    Py_XDECREF(py_name);
+    return 0;
+}
+#endif
+
+#ifndef __PYX_HAVE_RT_ImportType
+#define __PYX_HAVE_RT_ImportType
+static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name,
+    size_t size, int strict)
+{
+    PyObject *py_module = 0;
+    PyObject *result = 0;
+    PyObject *py_name = 0;
+    char warning[200];
+    Py_ssize_t basicsize;
+#ifdef Py_LIMITED_API
+    PyObject *py_basicsize;
+#endif
+    py_module = __Pyx_ImportModule(module_name);
+    if (!py_module)
+        goto bad;
+    py_name = __Pyx_PyIdentifier_FromString(class_name);
+    if (!py_name)
+        goto bad;
+    result = PyObject_GetAttr(py_module, py_name);
+    Py_DECREF(py_name);
+    py_name = 0;
+    Py_DECREF(py_module);
+    py_module = 0;
+    if (!result)
+        goto bad;
+    if (!PyType_Check(result)) {
+        PyErr_Format(PyExc_TypeError,
+            "%s.%s is not a type object",
+            module_name, class_name);
+        goto bad;
+    }
+#ifndef Py_LIMITED_API
+    basicsize = ((PyTypeObject *)result)->tp_basicsize;
+#else
+    py_basicsize = PyObject_GetAttrString(result, "__basicsize__");
+    if (!py_basicsize)
+        goto bad;
+    basicsize = PyLong_AsSsize_t(py_basicsize);
+    Py_DECREF(py_basicsize);
+    py_basicsize = 0;
+    if (basicsize == (Py_ssize_t)-1 && PyErr_Occurred())
+        goto bad;
+#endif
+    if (!strict && (size_t)basicsize > size) {
+        PyOS_snprintf(warning, sizeof(warning),
+            "%s.%s size changed, may indicate binary incompatibility",
+            module_name, class_name);
+        #if PY_VERSION_HEX < 0x02050000
+        if (PyErr_Warn(NULL, warning) < 0) goto bad;
+        #else
+        if (PyErr_WarnEx(NULL, warning, 0) < 0) goto bad;
+        #endif
+    }
+    else if ((size_t)basicsize != size) {
+        PyErr_Format(PyExc_ValueError,
+            "%s.%s has the wrong size, try recompiling",
+            module_name, class_name);
+        goto bad;
+    }
+    return (PyTypeObject *)result;
+bad:
+    Py_XDECREF(py_module);
+    Py_XDECREF(result);
+    return NULL;
+}
+#endif
+
+#ifndef __PYX_HAVE_RT_ImportFunction
+#define __PYX_HAVE_RT_ImportFunction
+static int __Pyx_ImportFunction(PyObject *module, const char *funcname, void (**f)(void), const char *sig) {
+    PyObject *d = 0;
+    PyObject *cobj = 0;
+    union {
+        void (*fp)(void);
+        void *p;
+    } tmp;
+    d = PyObject_GetAttrString(module, (char *)"__pyx_capi__");
+    if (!d)
+        goto bad;
+    cobj = PyDict_GetItemString(d, funcname);
+    if (!cobj) {
+        PyErr_Format(PyExc_ImportError,
+            "%s does not export expected C function %s",
+                PyModule_GetName(module), funcname);
+        goto bad;
+    }
+#if PY_VERSION_HEX >= 0x02070000 && !(PY_MAJOR_VERSION==3 && PY_MINOR_VERSION==0)
+    if (!PyCapsule_IsValid(cobj, sig)) {
+        PyErr_Format(PyExc_TypeError,
+            "C function %s.%s has wrong signature (expected %s, got %s)",
+             PyModule_GetName(module), funcname, sig, PyCapsule_GetName(cobj));
+        goto bad;
+    }
+    tmp.p = PyCapsule_GetPointer(cobj, sig);
+#else
+    {const char *desc, *s1, *s2;
+    desc = (const char *)PyCObject_GetDesc(cobj);
+    if (!desc)
+        goto bad;
+    s1 = desc; s2 = sig;
+    while (*s1 != '\0' && *s1 == *s2) { s1++; s2++; }
+    if (*s1 != *s2) {
+        PyErr_Format(PyExc_TypeError,
+            "C function %s.%s has wrong signature (expected %s, got %s)",
+             PyModule_GetName(module), funcname, sig, desc);
+        goto bad;
+    }
+    tmp.p = PyCObject_AsVoidPtr(cobj);}
+#endif
+    *f = tmp.fp;
+    if (!(*f))
+        goto bad;
+    Py_DECREF(d);
+    return 0;
+bad:
+    Py_XDECREF(d);
+    return -1;
+}
+#endif
+
+static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) {
+    int start = 0, mid = 0, end = count - 1;
+    if (end >= 0 && code_line > entries[end].code_line) {
+        return count;
+    }
+    while (start < end) {
+        mid = (start + end) / 2;
+        if (code_line < entries[mid].code_line) {
+            end = mid;
+        } else if (code_line > entries[mid].code_line) {
+             start = mid + 1;
+        } else {
+            return mid;
+        }
+    }
+    if (code_line <= entries[mid].code_line) {
+        return mid;
+    } else {
+        return mid + 1;
+    }
+}
+static PyCodeObject *__pyx_find_code_object(int code_line) {
+    PyCodeObject* code_object;
+    int pos;
+    if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) {
+        return NULL;
+    }
+    pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
+    if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) {
+        return NULL;
+    }
+    code_object = __pyx_code_cache.entries[pos].code_object;
+    Py_INCREF(code_object);
+    return code_object;
+}
+static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) {
+    int pos, i;
+    __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries;
+    if (unlikely(!code_line)) {
+        return;
+    }
+    if (unlikely(!entries)) {
+        entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry));
+        if (likely(entries)) {
+            __pyx_code_cache.entries = entries;
+            __pyx_code_cache.max_count = 64;
+            __pyx_code_cache.count = 1;
+            entries[0].code_line = code_line;
+            entries[0].code_object = code_object;
+            Py_INCREF(code_object);
+        }
+        return;
+    }
+    pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
+    if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) {
+        PyCodeObject* tmp = entries[pos].code_object;
+        entries[pos].code_object = code_object;
+        Py_DECREF(tmp);
+        return;
+    }
+    if (__pyx_code_cache.count == __pyx_code_cache.max_count) {
+        int new_max = __pyx_code_cache.max_count + 64;
+        entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc(
+            __pyx_code_cache.entries, new_max*sizeof(__Pyx_CodeObjectCacheEntry));
+        if (unlikely(!entries)) {
+            return;
+        }
+        __pyx_code_cache.entries = entries;
+        __pyx_code_cache.max_count = new_max;
+    }
+    for (i=__pyx_code_cache.count; i>pos; i--) {
+        entries[i] = entries[i-1];
+    }
+    entries[pos].code_line = code_line;
+    entries[pos].code_object = code_object;
+    __pyx_code_cache.count++;
+    Py_INCREF(code_object);
+}
+
+#include "compile.h"
+#include "frameobject.h"
+#include "traceback.h"
+static PyCodeObject* __Pyx_CreateCodeObjectForTraceback(
+            const char *funcname, int c_line,
+            int py_line, const char *filename) {
+    PyCodeObject *py_code = 0;
+    PyObject *py_srcfile = 0;
+    PyObject *py_funcname = 0;
+    #if PY_MAJOR_VERSION < 3
+    py_srcfile = PyString_FromString(filename);
+    #else
+    py_srcfile = PyUnicode_FromString(filename);
+    #endif
+    if (!py_srcfile) goto bad;
+    if (c_line) {
+        #if PY_MAJOR_VERSION < 3
+        py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
+        #else
+        py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
+        #endif
+    }
+    else {
+        #if PY_MAJOR_VERSION < 3
+        py_funcname = PyString_FromString(funcname);
+        #else
+        py_funcname = PyUnicode_FromString(funcname);
+        #endif
+    }
+    if (!py_funcname) goto bad;
+    py_code = __Pyx_PyCode_New(
+        0,            /*int argcount,*/
+        0,            /*int kwonlyargcount,*/
+        0,            /*int nlocals,*/
+        0,            /*int stacksize,*/
+        0,            /*int flags,*/
+        __pyx_empty_bytes, /*PyObject *code,*/
+        __pyx_empty_tuple, /*PyObject *consts,*/
+        __pyx_empty_tuple, /*PyObject *names,*/
+        __pyx_empty_tuple, /*PyObject *varnames,*/
+        __pyx_empty_tuple, /*PyObject *freevars,*/
+        __pyx_empty_tuple, /*PyObject *cellvars,*/
+        py_srcfile,   /*PyObject *filename,*/
+        py_funcname,  /*PyObject *name,*/
+        py_line,      /*int firstlineno,*/
+        __pyx_empty_bytes  /*PyObject *lnotab*/
+    );
+    Py_DECREF(py_srcfile);
+    Py_DECREF(py_funcname);
+    return py_code;
+bad:
+    Py_XDECREF(py_srcfile);
+    Py_XDECREF(py_funcname);
+    return NULL;
+}
+static void __Pyx_AddTraceback(const char *funcname, int c_line,
+                               int py_line, const char *filename) {
+    PyCodeObject *py_code = 0;
+    PyObject *py_globals = 0;
+    PyFrameObject *py_frame = 0;
+    py_code = __pyx_find_code_object(c_line ? c_line : py_line);
+    if (!py_code) {
+        py_code = __Pyx_CreateCodeObjectForTraceback(
+            funcname, c_line, py_line, filename);
+        if (!py_code) goto bad;
+        __pyx_insert_code_object(c_line ? c_line : py_line, py_code);
+    }
+    py_globals = PyModule_GetDict(__pyx_m);
+    if (!py_globals) goto bad;
+    py_frame = PyFrame_New(
+        PyThreadState_GET(), /*PyThreadState *tstate,*/
+        py_code,             /*PyCodeObject *code,*/
+        py_globals,          /*PyObject *globals,*/
+        0                    /*PyObject *locals*/
+    );
+    if (!py_frame) goto bad;
+    py_frame->f_lineno = py_line;
+    PyTraceBack_Here(py_frame);
+bad:
+    Py_XDECREF(py_code);
+    Py_XDECREF(py_frame);
+}
+
+static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
+    while (t->p) {
+        #if PY_MAJOR_VERSION < 3
+        if (t->is_unicode) {
+            *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL);
+        } else if (t->intern) {
+            *t->p = PyString_InternFromString(t->s);
+        } else {
+            *t->p = PyString_FromStringAndSize(t->s, t->n - 1);
+        }
+        #else  /* Python 3+ has unicode identifiers */
+        if (t->is_unicode | t->is_str) {
+            if (t->intern) {
+                *t->p = PyUnicode_InternFromString(t->s);
+            } else if (t->encoding) {
+                *t->p = PyUnicode_Decode(t->s, t->n - 1, t->encoding, NULL);
+            } else {
+                *t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1);
+            }
+        } else {
+            *t->p = PyBytes_FromStringAndSize(t->s, t->n - 1);
+        }
+        #endif
+        if (!*t->p)
+            return -1;
+        ++t;
+    }
+    return 0;
+}
+
+static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) {
+   int is_true = x == Py_True;
+   if (is_true | (x == Py_False) | (x == Py_None)) return is_true;
+   else return PyObject_IsTrue(x);
+}
+static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x) {
+  PyNumberMethods *m;
+  const char *name = NULL;
+  PyObject *res = NULL;
+#if PY_VERSION_HEX < 0x03000000
+  if (PyInt_Check(x) || PyLong_Check(x))
+#else
+  if (PyLong_Check(x))
+#endif
+    return Py_INCREF(x), x;
+  m = Py_TYPE(x)->tp_as_number;
+#if PY_VERSION_HEX < 0x03000000
+  if (m && m->nb_int) {
+    name = "int";
+    res = PyNumber_Int(x);
+  }
+  else if (m && m->nb_long) {
+    name = "long";
+    res = PyNumber_Long(x);
+  }
+#else
+  if (m && m->nb_int) {
+    name = "int";
+    res = PyNumber_Long(x);
+  }
+#endif
+  if (res) {
+#if PY_VERSION_HEX < 0x03000000
+    if (!PyInt_Check(res) && !PyLong_Check(res)) {
+#else
+    if (!PyLong_Check(res)) {
+#endif
+      PyErr_Format(PyExc_TypeError,
+                   "__%s__ returned non-%s (type %.200s)",
+                   name, name, Py_TYPE(res)->tp_name);
+      Py_DECREF(res);
+      return NULL;
+    }
+  }
+  else if (!PyErr_Occurred()) {
+    PyErr_SetString(PyExc_TypeError,
+                    "an integer is required");
+  }
+  return res;
+}
+static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
+  Py_ssize_t ival;
+  PyObject* x = PyNumber_Index(b);
+  if (!x) return -1;
+  ival = PyInt_AsSsize_t(x);
+  Py_DECREF(x);
+  return ival;
+}
+static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) {
+#if PY_VERSION_HEX < 0x02050000
+   if (ival <= LONG_MAX)
+       return PyInt_FromLong((long)ival);
+   else {
+       unsigned char *bytes = (unsigned char *) &ival;
+       int one = 1; int little = (int)*(unsigned char*)&one;
+       return _PyLong_FromByteArray(bytes, sizeof(size_t), little, 0);
+   }
+#else
+   return PyInt_FromSize_t(ival);
+#endif
+}
+static CYTHON_INLINE size_t __Pyx_PyInt_AsSize_t(PyObject* x) {
+   unsigned PY_LONG_LONG val = __Pyx_PyInt_AsUnsignedLongLong(x);
+   if (unlikely(val == (unsigned PY_LONG_LONG)-1 && PyErr_Occurred())) {
+       return (size_t)-1;
+   } else if (unlikely(val != (unsigned PY_LONG_LONG)(size_t)val)) {
+       PyErr_SetString(PyExc_OverflowError,
+                       "value too large to convert to size_t");
+       return (size_t)-1;
+   }
+   return (size_t)val;
+}
+
+
+#endif /* Py_PYTHON_H */
diff --git a/h5py/utils.pxd b/h5py/utils.pxd
new file mode 100644
index 0000000..620e6da
--- /dev/null
+++ b/h5py/utils.pxd
@@ -0,0 +1,39 @@
+# This file is part of h5py, a Python interface to the HDF5 library.
+#
+# http://www.h5py.org
+#
+# Copyright 2008-2013 Andrew Collette and contributors
+#
+# License:  Standard 3-clause BSD; see "license.txt" for full license terms
+#           and contributor agreement.
+
+from defs cimport *
+
+from numpy cimport ndarray
+
+cdef void* emalloc(size_t size) except? NULL
+cdef void efree(void* ptr)
+
+cpdef int check_numpy_read(ndarray arr, hid_t space_id=*) except -1
+cpdef int check_numpy_write(ndarray arr, hid_t space_id=*) except -1
+
+cdef int convert_tuple(object tuple, hsize_t *dims, hsize_t rank) except -1
+cdef object convert_dims(hsize_t* dims, hsize_t rank)
+
+cdef int require_tuple(object tpl, int none_allowed, int size, char* name) except -1
+
+cdef object create_numpy_hsize(int rank, hsize_t* dims)
+cdef object create_hsize_array(object arr)
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/h5py/utils.pyx b/h5py/utils.pyx
new file mode 100644
index 0000000..6c539b1
--- /dev/null
+++ b/h5py/utils.pyx
@@ -0,0 +1,213 @@
+# cython: profile=False
+
+# This file is part of h5py, a Python interface to the HDF5 library.
+#
+# http://www.h5py.org
+#
+# Copyright 2008-2013 Andrew Collette and contributors
+#
+# License:  Standard 3-clause BSD; see "license.txt" for full license terms
+#           and contributor agreement.
+
+from numpy cimport ndarray, import_array, \
+                    NPY_UINT16, NPY_UINT32, NPY_UINT64,  npy_intp, \
+                    PyArray_SimpleNew, PyArray_ContiguousFromAny, \
+                    PyArray_FROM_OTF, PyArray_DIM, \
+                    NPY_CONTIGUOUS, NPY_NOTSWAPPED, NPY_FORCECAST, \
+                    NPY_C_CONTIGUOUS, NPY_WRITEABLE
+
+
+# Initialization
+import_array()
+
+# === Exception-aware memory allocation =======================================
+
+cdef void* emalloc(size_t size) except? NULL:
+    # Wrapper for malloc(size) with the following behavior:
+    # 1. Always returns NULL for emalloc(0)
+    # 2. Raises RuntimeError for emalloc(size<0) and returns NULL
+    # 3. Raises RuntimeError if allocation fails and returns NULL
+
+    cdef void *retval = NULL
+
+    if size == 0:
+        return NULL
+
+    retval = malloc(size)
+    if retval == NULL:
+        errmsg = "Can't malloc %d bytes" % size
+        PyErr_SetString(MemoryError, errmsg)
+        return NULL
+
+    return retval
+
+cdef void efree(void* what):
+    free(what)
+
+def _test_emalloc(size_t size):
+    """Stub to simplify unit tests"""
+    cdef void* mem
+    mem = emalloc(size)
+    if size == 0:
+        assert mem == NULL
+    efree(mem)
+
+# === Testing of NumPy arrays =================================================
+
+cdef int check_numpy(ndarray arr, hid_t space_id, int write):
+    # -1 if exception, NOT AUTOMATICALLY CHECKED
+
+    cdef int required_flags
+    cdef hsize_t arr_rank
+    cdef hsize_t space_rank
+    cdef hsize_t *space_dims = NULL
+    cdef int i
+
+    if arr is None:
+        PyErr_SetString(TypeError, "Array is None")
+        return -1
+
+    # Validate array flags
+
+    if write:
+        if not (arr.flags & NPY_C_CONTIGUOUS and arr.flags & NPY_WRITEABLE):
+            PyErr_SetString(TypeError, "Array must be C-contiguous and writable")
+            return -1
+    else:
+        if not (arr.flags & NPY_C_CONTIGUOUS):
+            PyErr_SetString(TypeError, "Array must be C-contiguous")
+            return -1
+
+    # Validate dataspace compatibility, if it's provided
+
+    if space_id > 0:
+
+        arr_rank = arr.nd
+        space_rank = H5Sget_simple_extent_ndims(space_id)
+
+        if arr_rank != space_rank:
+            err_msg = "Numpy array rank %d must match dataspace rank %d." % (arr_rank, space_rank)
+            PyErr_SetString(TypeError, err_msg)
+            return -1
+
+        space_dims = <hsize_t*>malloc(sizeof(hsize_t)*space_rank)
+        try:
+            space_rank = H5Sget_simple_extent_dims(space_id, space_dims, NULL)
+
+            for i from 0 < i < space_rank:
+
+                if write:
+                    if PyArray_DIM(arr,i) < space_dims[i]:
+                        PyErr_SetString(TypeError, "Array dimensions are too small for the dataspace.")
+                        return -1
+                else:
+                    if PyArray_DIM(arr,i) > space_dims[i]:
+                        PyErr_SetString(TypeError, "Array dimensions are too large for the dataspace.")
+                        return -1
+        finally:
+            free(space_dims)
+    return 1
+
+cpdef int check_numpy_write(ndarray arr, hid_t space_id=-1) except -1:
+    return check_numpy(arr, space_id, 1)
+
+cpdef int check_numpy_read(ndarray arr, hid_t space_id=-1) except -1:
+    return check_numpy(arr, space_id, 0)
+
+# === Conversion between HDF5 buffers and tuples ==============================
+
+cdef int convert_tuple(object tpl, hsize_t *dims, hsize_t rank) except -1:
+    # Convert a Python tuple to an hsize_t array.  You must allocate
+    # the array yourself and pass both it and the size to this function.
+    # Returns 0 on success, -1 on failure and raises an exception.
+    cdef int i
+
+    if len(tpl) != rank:
+        raise ValueError("Tuple length incompatible with array")
+    
+    try:
+        for i from 0<=i<rank:
+            dims[i] = tpl[i]
+    except TypeError:
+        raise TypeError("Can't convert element %d (%s) to hsize_t" % (i, tpl[i]))
+
+    return 0
+    
+cdef object convert_dims(hsize_t* dims, hsize_t rank):
+    # Convert an hsize_t array to a Python tuple of ints.
+
+    cdef list dims_list
+    cdef int i
+    dims_list = []
+
+    for i from 0<=i<rank:
+        dims_list.append(int(dims[i]))
+
+    return tuple(dims_list)
+    
+
+cdef object create_numpy_hsize(int rank, hsize_t* dims):
+    # Create an empty Numpy array which can hold HDF5 hsize_t entries
+
+    cdef int typecode
+    cdef npy_intp* dims_npy
+    cdef ndarray arr
+    cdef int i
+
+    if sizeof(hsize_t) == 2:
+        typecode = NPY_UINT16
+    elif sizeof(hsize_t) == 4:
+        typecode = NPY_UINT32
+    elif sizeof(hsize_t) == 8:
+        typecode = NPY_UINT64
+    else:
+        raise RuntimeError("Can't map hsize_t %d to Numpy typecode" % sizeof(hsize_t))
+
+    dims_npy = <npy_intp*>emalloc(sizeof(npy_intp)*rank)
+
+    try:
+        for i from 0<=i<rank:
+            dims_npy[i] = dims[i]
+        arr = PyArray_SimpleNew(rank, dims_npy, typecode)
+    finally:
+        efree(dims_npy)
+
+    return arr
+
+cdef object create_hsize_array(object arr):
+    # Create a NumPy array of hsize_t uints initialized to an existing array
+
+    cdef int typecode
+    cdef ndarray outarr
+
+    if sizeof(hsize_t) == 2:
+        typecode = NPY_UINT16
+    elif sizeof(hsize_t) == 4:
+        typecode = NPY_UINT32
+    elif sizeof(hsize_t) == 8:
+        typecode = NPY_UINT64
+    else:
+        raise RuntimeError("Can't map hsize_t %d to Numpy typecode" % sizeof(hsize_t))
+
+    return PyArray_FROM_OTF(arr, typecode, NPY_CONTIGUOUS | NPY_NOTSWAPPED | NPY_FORCECAST)
+
+
+# === Argument testing ========================================================
+
+cdef int require_tuple(object tpl, int none_allowed, int size, char* name) except -1:
+    # Ensure that tpl is in fact a tuple, or None if none_allowed is nonzero.
+    # If size >= 0, also ensure that the length matches.
+    # Otherwise raises ValueError
+
+    if (tpl is None and none_allowed) or \
+      (isinstance(tpl, tuple) and (size < 0 or len(tpl) == size)):
+        return 1
+
+    nmsg = "" if size < 0 else " of size %d" % size
+    smsg = "" if not none_allowed else " or None"
+
+    msg = "%s must be a tuple%s%s." % (name, smsg, nmsg)
+    PyErr_SetString(ValueError, msg)
+    return -1
+
+
diff --git a/h5py/version.py b/h5py/version.py
new file mode 100644
index 0000000..777b7fd
--- /dev/null
+++ b/h5py/version.py
@@ -0,0 +1,49 @@
+# This file is part of h5py, a Python interface to the HDF5 library.
+#
+# http://www.h5py.org
+#
+# Copyright 2008-2013 Andrew Collette and contributors
+#
+# License:  Standard 3-clause BSD; see "license.txt" for full license terms
+#           and contributor agreement.
+
+from . import h5 as _h5
+from distutils.version import StrictVersion as _sv
+import sys
+import numpy
+
+version = "2.2.1"
+_exp = _sv(version)
+
+version_tuple = _exp.version + ((''.join(str(x) for x in _exp.prerelease),) if _exp.prerelease is not None else ('',))
+
+hdf5_version_tuple = _h5.get_libversion()
+hdf5_version = "%d.%d.%d" % hdf5_version_tuple
+
+api_version_tuple = (1,8)
+api_version = "1.8"
+
+__doc__ = """\
+This is h5py **%s**
+
+* HDF5 version: **%s**
+""" % (version, hdf5_version)
+
+info = """\
+Summary of the h5py configuration
+---------------------------------
+
+h5py    %(h5py)s
+HDF5    %(hdf5)s
+Python  %(python)s
+sys.platform    %(platform)s
+sys.maxsize     %(maxsize)s
+numpy   %(numpy)s
+""" % { 'h5py': version,
+        'hdf5': hdf5_version,
+        'python': sys.version,
+        'platform': sys.platform,
+        'maxsize': sys.maxsize,
+        'numpy': numpy.__version__ }
+
+
diff --git a/licenses/hdf5.txt b/licenses/hdf5.txt
new file mode 100644
index 0000000..54126de
--- /dev/null
+++ b/licenses/hdf5.txt
@@ -0,0 +1,69 @@
+HDF5 (Hierarchical Data Format 5) Software Library and Utilities
+Copyright 2006-2007 by The HDF Group (THG).
+
+NCSA HDF5 (Hierarchical Data Format 5) Software Library and Utilities
+Copyright 1998-2006 by the Board of Trustees of the University of Illinois.
+
+All rights reserved.
+
+Contributors: National Center for Supercomputing Applications (NCSA)
+at the University of Illinois, Fortner Software, Unidata Program
+Center (netCDF), The Independent JPEG Group (JPEG), Jean-loup Gailly
+and Mark Adler (gzip), and Digital Equipment Corporation (DEC).
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted for any purpose (including commercial
+purposes) provided that the following conditions are met:
+
+   1. Redistributions of source code must retain the above copyright
+notice, this list of conditions, and the following disclaimer.
+   2. Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions, and the following
+disclaimer in the documentation and/or materials provided with the
+distribution.
+   3. In addition, redistributions of modified forms of the source or
+binary code must carry prominent notices stating that the original
+code was changed and the date of the change.
+   4. All publications or advertising materials mentioning features or
+use of this software are asked, but not required, to acknowledge that
+it was developed by The HDF Group and by the National Center for
+Supercomputing Applications at the University of Illinois at
+Urbana-Champaign and credit the contributors.
+   5. Neither the name of The HDF Group, the name of the University,
+nor the name of any Contributor may be used to endorse or promote
+products derived from this software without specific prior written
+permission from THG, the University, or the Contributor, respectively.
+
+DISCLAIMER: THIS SOFTWARE IS PROVIDED BY THE HDF GROUP (THG) AND THE
+CONTRIBUTORS "AS IS" WITH NO WARRANTY OF ANY KIND, EITHER EXPRESSED OR
+IMPLIED. In no event shall THG or the Contributors be liable for any
+damages suffered by the users arising out of the use of this software,
+even if advised of the possibility of such damage.
+
+Portions of HDF5 were developed with support from the University of
+California, Lawrence Livermore National Laboratory (UC LLNL). The
+following statement applies to those portions of the product and must
+be retained in any redistribution of source code, binaries,
+documentation, and/or accompanying materials:
+
+This work was partially produced at the University of California,
+Lawrence Livermore National Laboratory (UC LLNL) under contract
+no. W-7405-ENG-48 (Contract 48) between the U.S. Department of Energy
+(DOE) and The Regents of the University of California (University) for
+the operation of UC LLNL.
+
+DISCLAIMER: This work was prepared as an account of work sponsored by
+an agency of the United States Government. Neither the United States
+Government nor the University of California nor any of their
+employees, makes any warranty, express or implied, or assumes any
+liability or responsibility for the accuracy, completeness, or
+usefulness of any information, apparatus, product, or process
+disclosed, or represents that its use would not infringe privately-
+owned rights. Reference herein to any specific commercial products,
+process, or service by trade name, trademark, manufacturer, or
+otherwise, does not necessarily constitute or imply its endorsement,
+recommendation, or favoring by the United States Government or the
+University of California. The views and opinions of authors expressed
+herein do not necessarily state or reflect those of the United States
+Government or the University of California, and shall not be used for
+advertising or product endorsement purposes.
diff --git a/licenses/license.txt b/licenses/license.txt
new file mode 100644
index 0000000..26557ef
--- /dev/null
+++ b/licenses/license.txt
@@ -0,0 +1,34 @@
+Copyright Notice and Statement for the h5py Project
+===================================================
+
+    Copyright (c) 2008-2013 Andrew Collette and contributors
+    http://www.h5py.org
+    All rights reserved.
+
+    Redistribution and use in source and binary forms, with or without
+    modification, are permitted provided that the following conditions are
+    met:
+
+    a. Redistributions of source code must retain the above copyright
+       notice, this list of conditions and the following disclaimer.
+
+    b. Redistributions in binary form must reproduce the above copyright
+       notice, this list of conditions and the following disclaimer in the
+       documentation and/or other materials provided with the
+       distribution.
+
+    c. Neither the name of the author nor the names of contributors may 
+       be used to endorse or promote products derived from this software 
+       without specific prior written permission.
+
+    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+    "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+    A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+    OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+    SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+    LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+    DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+    THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+    (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+    OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/licenses/pytables.txt b/licenses/pytables.txt
new file mode 100644
index 0000000..9f2f482
--- /dev/null
+++ b/licenses/pytables.txt
@@ -0,0 +1,33 @@
+Copyright Notice and Statement for PyTables Software Library and Utilities:
+
+Copyright (c) 2002, 2003, 2004  Francesc Altet
+Copyright (c) 2005, 2006, 2007  Carabos Coop. V.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+a. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+
+b. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the
+   distribution.
+
+c. Neither the name of the Carabos Coop. V. nor the names of its
+   contributors may be used to endorse or promote products derived
+   from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/licenses/python.txt b/licenses/python.txt
new file mode 100644
index 0000000..d03c1d1
--- /dev/null
+++ b/licenses/python.txt
@@ -0,0 +1,45 @@
+Python license
+==============
+
+#. This LICENSE AGREEMENT is between the Python Software Foundation ("PSF"), and
+   the Individual or Organization ("Licensee") accessing and otherwise using Python
+   Python 2.7.5 software in source or binary form and its associated documentation.
+
+#. Subject to the terms and conditions of this License Agreement, PSF hereby
+   grants Licensee a nonexclusive, royalty-free, world-wide license to reproduce,
+   analyze, test, perform and/or display publicly, prepare derivative works,
+   distribute, and otherwise use Python Python 2.7.5 alone or in any derivative
+   version, provided, however, that PSF's License Agreement and PSF's notice of
+   copyright, i.e., "Copyright 2001-2013 Python Software Foundation; All Rights
+   Reserved" are retained in Python Python 2.7.5 alone or in any derivative version
+   prepared by Licensee.
+
+#. In the event Licensee prepares a derivative work that is based on or
+   incorporates Python Python 2.7.5 or any part thereof, and wants to make the
+   derivative work available to others as provided herein, then Licensee hereby
+   agrees to include in any such work a brief summary of the changes made to Python
+   Python 2.7.5.
+
+#. PSF is making Python Python 2.7.5 available to Licensee on an "AS IS" basis.
+   PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED.  BY WAY OF
+   EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND DISCLAIMS ANY REPRESENTATION OR
+   WARRANTY OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE
+   USE OF PYTHON Python 2.7.5 WILL NOT INFRINGE ANY THIRD PARTY RIGHTS.
+
+#. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON Python 2.7.5
+   FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS A RESULT OF
+   MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON Python 2.7.5, OR ANY DERIVATIVE
+   THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.
+
+#. This License Agreement will automatically terminate upon a material breach of
+   its terms and conditions.
+
+#. Nothing in this License Agreement shall be deemed to create any relationship
+   of agency, partnership, or joint venture between PSF and Licensee.  This License
+   Agreement does not grant permission to use PSF trademarks or trade name in a
+   trademark sense to endorse or promote products or services of Licensee, or any
+   third party.
+
+#. By copying, installing or otherwise using Python Python 2.7.5, Licensee agrees
+   to be bound by the terms and conditions of this License Agreement.
+
diff --git a/licenses/stdint.txt b/licenses/stdint.txt
new file mode 100644
index 0000000..7e9941a
--- /dev/null
+++ b/licenses/stdint.txt
@@ -0,0 +1,25 @@
+Copyright (c) 2006-2008 Alexander Chemeris
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+  1. Redistributions of source code must retain the above copyright notice,
+     this list of conditions and the following disclaimer.
+
+  2. Redistributions in binary form must reproduce the above copyright
+     notice, this list of conditions and the following disclaimer in the
+     documentation and/or other materials provided with the distribution.
+
+  3. The name of the author may be used to endorse or promote products
+     derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
\ No newline at end of file
diff --git a/lzf/LICENSE.txt b/lzf/LICENSE.txt
new file mode 100644
index 0000000..3787a00
--- /dev/null
+++ b/lzf/LICENSE.txt
@@ -0,0 +1,34 @@
+Copyright Notice and Statement for LZF filter
+
+Copyright (c) 2008-2009 Andrew Collette
+http://h5py.alfven.org
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+a. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+
+b. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the
+   distribution.
+
+c. Neither the name of the author nor the names of contributors may 
+   be used to endorse or promote products derived from this software 
+   without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
diff --git a/lzf/README.txt b/lzf/README.txt
new file mode 100644
index 0000000..c6ad62c
--- /dev/null
+++ b/lzf/README.txt
@@ -0,0 +1,84 @@
+===============================
+LZF filter for HDF5, revision 3
+===============================
+
+The LZF filter provides high-speed compression with acceptable compression
+performance, resulting in much faster performance than DEFLATE, at the
+cost of a slightly lower compression ratio. It's appropriate for large
+datasets of low to moderate complexity, for which some compression is
+much better than none, but for which the speed of DEFLATE is unacceptable.
+
+This filter has been tested against HDF5 versions 1.6.5 through 1.8.3.  It
+is released under the BSD license (see LICENSE.txt for details).
+
+
+Using the filter from HDF5
+--------------------------
+
+There is exactly one new public function declared in lzf_filter.h, with
+the following signature:
+
+    int register_lzf(void)
+
+Calling this will register the filter with the HDF5 library.  A non-negative
+return value indicates success.  If the registration fails, an error is pushed
+onto the current error stack and a negative value is returned.
+
+It's strongly recommended to use the SHUFFLE filter with LZF, as it's
+cheap, supported by all current versions of HDF5, and can significantly
+improve the compression ratio.  An example C program ("example.c") is included
+which demonstrates the proper use of the filter.
+
+
+Compiling
+---------
+
+The filter consists of a single .c file and header, along with an embedded
+version of the LZF compression library.  Since the filter is stateless, it's
+recommended to statically link the entire thing into your program; for
+example:
+
+    $ gcc -O2 -lhdf5 lzf/*.c lzf_filter.c myprog.c -o myprog
+
+It can also be built as a shared library, although you will have to install
+the resulting library somewhere the runtime linker can find it:
+
+    $ gcc -O2 -lhdf5 -fPIC -shared lzf/*.c lzf_filter.c -o liblzf_filter.so
+
+A similar procedure should be used for building C++ code.  As in these
+examples, using option -O1 or higher is strongly recommended for increased
+performance.
+
+
+Contact
+-------
+
+This filter is maintained as part of the HDF5 for Python (h5py) project.  The
+goal of h5py is to provide access to the majority of the HDF5 C API and feature
+set from Python.  The most recent version of h5py (1.1) includes the LZF
+filter by default.
+
+* Downloads and bug tracker:        http://h5py.googlecode.com
+
+* Main web site and documentation:  http://h5py.alfven.org
+
+* Contact email:  h5py at alfven dot org
+
+
+History of changes
+------------------
+
+Revision 3 (6/25/09)
+    Fix issue with changed filter struct definition under HDF5 1.8.3.
+
+Revision 2
+    Minor speed enhancement.
+
+Revision 1
+    Initial release.
+
+
+
+
+
+
diff --git a/lzf/example.c b/lzf/example.c
new file mode 100644
index 0000000..23dd776
--- /dev/null
+++ b/lzf/example.c
@@ -0,0 +1,106 @@
+/*
+    Copyright (C) 2009 Andrew Collette
+    http://h5py.alfven.org
+    License: BSD (see LICENSE.txt)
+
+    Example program demonstrating use of the LZF filter from C code.
+
+    To compile this program:
+
+    h5cc -DH5_USE_16_API lzf/*.c lzf_filter.c example.c -o example
+
+    To run:
+
+    $ ./example
+    Success!
+    $ h5ls -v test_lzf.hdf5 
+    Opened "test_lzf.hdf5" with sec2 driver.
+    dset                     Dataset {100/100, 100/100, 100/100}
+        Location:  0:1:0:976
+        Links:     1
+        Modified:  2009-02-15 16:35:11 PST
+        Chunks:    {1, 100, 100} 40000 bytes
+        Storage:   4000000 logical bytes, 174288 allocated bytes, 2295.05% utilization
+        Filter-0:  shuffle-2 OPT {4}
+        Filter-1:  lzf-32000 OPT {1, 261, 40000}
+        Type:      native float
+*/
+
+#include <stdio.h>
+#include "hdf5.h"
+#include "lzf_filter.h"
+
+#define SIZE 100*100*100
+#define SHAPE {100,100,100}
+#define CHUNKSHAPE {1,100,100}
+
+int main(){
+
+    static float data[SIZE];
+    static float data_out[SIZE];
+    const hsize_t shape[] = SHAPE;
+    const hsize_t chunkshape[] = CHUNKSHAPE;
+    int r, i;
+    int return_code = 1;
+
+    hid_t fid, sid, dset, plist = 0;
+
+    for(i=0; i<SIZE; i++){
+        data[i] = i;
+    }
+
+    /* Register the filter with the library */
+    r = register_lzf();
+    if(r<0) goto failed;
+
+    sid = H5Screate_simple(3, shape, NULL);
+    if(sid<0) goto failed;
+
+    fid = H5Fcreate("test_lzf.hdf5", H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
+    if(fid<0) goto failed;
+
+    plist = H5Pcreate(H5P_DATASET_CREATE);
+    if(plist<0) goto failed;
+
+    /* Chunked layout required for filters */
+    r = H5Pset_chunk(plist, 3, chunkshape);
+    if(r<0) goto failed;
+
+    /* Use of the shuffle filter VASTLY improves performance of this
+       and other block-oriented compression filters.  Be sure to add
+       this before the compression filter!
+    */
+    r = H5Pset_shuffle(plist);
+    if(r<0) goto failed;
+
+    /* Note the "optional" flag is necessary, as with the DEFLATE filter */
+    r = H5Pset_filter(plist, H5PY_FILTER_LZF, H5Z_FLAG_OPTIONAL, 0, NULL);
+    if(r<0) goto failed;
+
+    dset = H5Dcreate(fid, "dset", H5T_NATIVE_FLOAT, sid, plist);
+    if(dset<0) goto failed;
+    
+    r = H5Dwrite(dset, H5T_NATIVE_FLOAT, H5S_ALL, H5S_ALL, H5P_DEFAULT, &data);
+    if(r<0) goto failed;
+
+    r = H5Dread(dset, H5T_NATIVE_FLOAT, H5S_ALL, H5S_ALL, H5P_DEFAULT, &data_out);
+    if(r<0) goto failed;
+
+    for(i=0;i<SIZE;i++){
+        if(data[i] != data_out[i]) goto failed;
+    }
+
+    fprintf(stdout, "Success!\n");
+
+    return_code = 0;
+
+    failed:
+
+    if(dset>0)  H5Dclose(dset);
+    if(sid>0)   H5Sclose(sid);
+    if(plist>0) H5Pclose(plist);
+    if(fid>0)   H5Fclose(fid);
+
+    return return_code;
+}
+
diff --git a/lzf/lzf/lzf.h b/lzf/lzf/lzf.h
new file mode 100644
index 0000000..919b6e6
--- /dev/null
+++ b/lzf/lzf/lzf.h
@@ -0,0 +1,100 @@
+/*
+ * Copyright (c) 2000-2008 Marc Alexander Lehmann <schmorp at schmorp.de>
+ * 
+ * Redistribution and use in source and binary forms, with or without modifica-
+ * tion, are permitted provided that the following conditions are met:
+ * 
+ *   1.  Redistributions of source code must retain the above copyright notice,
+ *       this list of conditions and the following disclaimer.
+ * 
+ *   2.  Redistributions in binary form must reproduce the above copyright
+ *       notice, this list of conditions and the following disclaimer in the
+ *       documentation and/or other materials provided with the distribution.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MER-
+ * CHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO
+ * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPE-
+ * CIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+ * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTH-
+ * ERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * the GNU General Public License ("GPL") version 2 or any later version,
+ * in which case the provisions of the GPL are applicable instead of
+ * the above. If you wish to allow the use of your version of this file
+ * only under the terms of the GPL and not to allow others to use your
+ * version of this file under the BSD license, indicate your decision
+ * by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL. If you do not delete the
+ * provisions above, a recipient may use your version of this file under
+ * either the BSD or the GPL.
+ */
+
+#ifndef LZF_H
+#define LZF_H
+
+/***********************************************************************
+**
+**	lzf -- an extremely fast/free compression/decompression-method
+**	http://liblzf.plan9.de/
+**
+**	This algorithm is believed to be patent-free.
+**
+***********************************************************************/
+
+#define LZF_VERSION 0x0105 /* 1.5, API version */
+
+/*
+ * Compress in_len bytes stored at the memory block starting at
+ * in_data and write the result to out_data, up to a maximum length
+ * of out_len bytes.
+ *
+ * If the output buffer is not large enough or any error occurs return 0,
+ * otherwise return the number of bytes used, which might be considerably
+ * more than in_len (but less than 104% of the original size), so it
+ * makes sense to always use out_len == in_len - 1), to ensure _some_
+ * compression, and store the data uncompressed otherwise (with a flag, of
+ * course.
+ *
+ * lzf_compress might use different algorithms on different systems and
+ * even different runs, thus might result in different compressed strings
+ * depending on the phase of the moon or similar factors. However, all
+ * these strings are architecture-independent and will result in the
+ * original data when decompressed using lzf_decompress.
+ *
+ * The buffers must not be overlapping.
+ *
+ * If the option LZF_STATE_ARG is enabled, an extra argument must be
+ * supplied which is not reflected in this header file. Refer to lzfP.h
+ * and lzf_c.c.
+ *
+ */
+unsigned int 
+lzf_compress (const void *const in_data,  unsigned int in_len,
+              void             *out_data, unsigned int out_len);
+
+/*
+ * Decompress data compressed with some version of the lzf_compress
+ * function and stored at location in_data and length in_len. The result
+ * will be stored at out_data up to a maximum of out_len characters.
+ *
+ * If the output buffer is not large enough to hold the decompressed
+ * data, a 0 is returned and errno is set to E2BIG. Otherwise the number
+ * of decompressed bytes (i.e. the original length of the data) is
+ * returned.
+ *
+ * If an error in the compressed data is detected, a zero is returned and
+ * errno is set to EINVAL.
+ *
+ * This function is very fast, about as fast as a copying loop.
+ */
+unsigned int 
+lzf_decompress (const void *const in_data,  unsigned int in_len,
+                void             *out_data, unsigned int out_len);
+
+#endif
+
diff --git a/lzf/lzf/lzfP.h b/lzf/lzf/lzfP.h
new file mode 100644
index 0000000..8414da4
--- /dev/null
+++ b/lzf/lzf/lzfP.h
@@ -0,0 +1,166 @@
+/*
+ * Copyright (c) 2000-2007 Marc Alexander Lehmann <schmorp at schmorp.de>
+ * 
+ * Redistribution and use in source and binary forms, with or without modifica-
+ * tion, are permitted provided that the following conditions are met:
+ * 
+ *   1.  Redistributions of source code must retain the above copyright notice,
+ *       this list of conditions and the following disclaimer.
+ * 
+ *   2.  Redistributions in binary form must reproduce the above copyright
+ *       notice, this list of conditions and the following disclaimer in the
+ *       documentation and/or other materials provided with the distribution.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MER-
+ * CHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO
+ * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPE-
+ * CIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+ * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTH-
+ * ERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * the GNU General Public License ("GPL") version 2 or any later version,
+ * in which case the provisions of the GPL are applicable instead of
+ * the above. If you wish to allow the use of your version of this file
+ * only under the terms of the GPL and not to allow others to use your
+ * version of this file under the BSD license, indicate your decision
+ * by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL. If you do not delete the
+ * provisions above, a recipient may use your version of this file under
+ * either the BSD or the GPL.
+ */
+
+#ifndef LZFP_h
+#define LZFP_h
+
+#define STANDALONE 1 /* at the moment, this is ok. */
+
+#ifndef STANDALONE
+# include "lzf.h"
+#endif
+
+/*
+ * Size of hashtable is (1 << HLOG) * sizeof (char *)
+ * decompression is independent of the hash table size
+ * the difference between 15 and 14 is very small
+ * for small blocks (and 14 is usually a bit faster).
+ * For a low-memory/faster configuration, use HLOG == 13;
+ * For best compression, use 15 or 16 (or more, up to 23).
+ */
+#ifndef HLOG
+# define HLOG 17  /* Avoid pathological case at HLOG=16   A.C. 2/15/09 */
+#endif
+
+/*
+ * Sacrifice very little compression quality in favour of compression speed.
+ * This gives almost the same compression as the default code, and is
+ * (very roughly) 15% faster. This is the preferred mode of operation.
+ */
+#ifndef VERY_FAST
+# define VERY_FAST 1
+#endif
+
+/*
+ * Sacrifice some more compression quality in favour of compression speed.
+ * (roughly 1-2% worse compression for large blocks and
+ * 9-10% for small, redundant, blocks and >>20% better speed in both cases)
+ * In short: when in need for speed, enable this for binary data,
+ * possibly disable this for text data.
+ */
+#ifndef ULTRA_FAST
+# define ULTRA_FAST 1
+#endif
+
+/*
+ * Unconditionally aligning does not cost very much, so do it if unsure
+ */
+#ifndef STRICT_ALIGN
+# define STRICT_ALIGN !(defined(__i386) || defined (__amd64))
+#endif
+
+/*
+ * You may choose to pre-set the hash table (might be faster on some
+ * modern cpus and large (>>64k) blocks, and also makes compression
+ * deterministic/repeatable when the configuration otherwise is the same).
+ */
+#ifndef INIT_HTAB
+# define INIT_HTAB 0
+#endif
+
+/* =======================================================================
+    Changing things below this line may break the HDF5 LZF filter.
+    A.C. 2/15/09
+   =======================================================================
+*/
+
+/*
+ * Avoid assigning values to errno variable? for some embedding purposes
+ * (linux kernel for example), this is neccessary. NOTE: this breaks
+ * the documentation in lzf.h.
+ */
+#ifndef AVOID_ERRNO
+# define AVOID_ERRNO 0
+#endif
+
+/*
+ * Wether to pass the LZF_STATE variable as argument, or allocate it
+ * on the stack. For small-stack environments, define this to 1.
+ * NOTE: this breaks the prototype in lzf.h.
+ */
+#ifndef LZF_STATE_ARG
+# define LZF_STATE_ARG 0
+#endif
+
+/*
+ * Wether to add extra checks for input validity in lzf_decompress
+ * and return EINVAL if the input stream has been corrupted. This
+ * only shields against overflowing the input buffer and will not
+ * detect most corrupted streams.
+ * This check is not normally noticable on modern hardware
+ * (<1% slowdown), but might slow down older cpus considerably.
+ */
+
+#ifndef CHECK_INPUT
+# define CHECK_INPUT 1
+#endif
+
+/*****************************************************************************/
+/* nothing should be changed below */
+
+typedef unsigned char u8;
+
+typedef const u8 *LZF_STATE[1 << (HLOG)];
+
+#if !STRICT_ALIGN
+/* for unaligned accesses we need a 16 bit datatype. */
+# include <limits.h>
+# if USHRT_MAX == 65535
+    typedef unsigned short u16;
+# elif UINT_MAX == 65535
+    typedef unsigned int u16;
+# else
+#  undef STRICT_ALIGN
+#  define STRICT_ALIGN 1
+# endif
+#endif
+
+#if ULTRA_FAST
+# if defined(VERY_FAST)
+#  undef VERY_FAST
+# endif
+#endif
+
+#if INIT_HTAB
+# ifdef __cplusplus
+#  include <cstring>
+# else
+#  include <string.h>
+# endif
+#endif
+
+#endif
+
diff --git a/lzf/lzf/lzf_c.c b/lzf/lzf/lzf_c.c
new file mode 100644
index 0000000..0b5d816
--- /dev/null
+++ b/lzf/lzf/lzf_c.c
@@ -0,0 +1,296 @@
+/*
+ * Copyright (c) 2000-2008 Marc Alexander Lehmann <schmorp at schmorp.de>
+ * 
+ * Redistribution and use in source and binary forms, with or without modifica-
+ * tion, are permitted provided that the following conditions are met:
+ * 
+ *   1.  Redistributions of source code must retain the above copyright notice,
+ *       this list of conditions and the following disclaimer.
+ * 
+ *   2.  Redistributions in binary form must reproduce the above copyright
+ *       notice, this list of conditions and the following disclaimer in the
+ *       documentation and/or other materials provided with the distribution.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MER-
+ * CHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO
+ * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPE-
+ * CIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+ * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTH-
+ * ERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * the GNU General Public License ("GPL") version 2 or any later version,
+ * in which case the provisions of the GPL are applicable instead of
+ * the above. If you wish to allow the use of your version of this file
+ * only under the terms of the GPL and not to allow others to use your
+ * version of this file under the BSD license, indicate your decision
+ * by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL. If you do not delete the
+ * provisions above, a recipient may use your version of this file under
+ * either the BSD or the GPL.
+ */
+
+#include "lzfP.h"
+
+#define HSIZE (1 << (HLOG))
+
+/*
+ * don't play with this unless you benchmark!
+ * decompression is not dependent on the hash function
+ * the hashing function might seem strange, just believe me
+ * it works ;)
+ */
+#ifndef FRST
+# define FRST(p) (((p[0]) << 8) | p[1])
+# define NEXT(v,p) (((v) << 8) | p[2])
+# if ULTRA_FAST
+#  define IDX(h) ((( h             >> (3*8 - HLOG)) - h  ) & (HSIZE - 1))
+# elif VERY_FAST
+#  define IDX(h) ((( h             >> (3*8 - HLOG)) - h*5) & (HSIZE - 1))
+# else
+#  define IDX(h) ((((h ^ (h << 5)) >> (3*8 - HLOG)) - h*5) & (HSIZE - 1))
+# endif
+#endif
+/*
+ * IDX works because it is very similar to a multiplicative hash, e.g.
+ * ((h * 57321 >> (3*8 - HLOG)) & (HSIZE - 1))
+ * the latter is also quite fast on newer CPUs, and compresses similarly.
+ *
+ * the next one is also quite good, albeit slow ;)
+ * (int)(cos(h & 0xffffff) * 1e6)
+ */
+
+#if 0
+/* original lzv-like hash function, much worse and thus slower */
+# define FRST(p) (p[0] << 5) ^ p[1]
+# define NEXT(v,p) ((v) << 5) ^ p[2]
+# define IDX(h) ((h) & (HSIZE - 1))
+#endif
+
+#define        MAX_LIT        (1 <<  5)
+#define        MAX_OFF        (1 << 13)
+#define        MAX_REF        ((1 << 8) + (1 << 3))
+
+#if __GNUC__ >= 3
+# define expect(expr,value)         __builtin_expect ((expr),(value))
+# define inline                     inline
+#else
+# define expect(expr,value)         (expr)
+# define inline                     static
+#endif
+
+#define expect_false(expr) expect ((expr) != 0, 0)
+#define expect_true(expr)  expect ((expr) != 0, 1)
+
+/*
+ * compressed format
+ *
+ * 000LLLLL <L+1>    ; literal
+ * LLLooooo oooooooo ; backref L
+ * 111ooooo LLLLLLLL oooooooo ; backref L+7
+ *
+ */
+
+unsigned int
+lzf_compress (const void *const in_data, unsigned int in_len,
+	      void *out_data, unsigned int out_len
+#if LZF_STATE_ARG
+              , LZF_STATE htab
+#endif
+              )
+{
+#if !LZF_STATE_ARG
+  LZF_STATE htab;
+#endif
+  const u8 **hslot;
+  const u8 *ip = (const u8 *)in_data;
+        u8 *op = (u8 *)out_data;
+  const u8 *in_end  = ip + in_len;
+        u8 *out_end = op + out_len;
+  const u8 *ref;
+
+  /* off requires a type wide enough to hold a general pointer difference.
+   * ISO C doesn't have that (size_t might not be enough and ptrdiff_t only
+   * works for differences within a single object). We also assume that no
+   * no bit pattern traps. Since the only platform that is both non-POSIX
+   * and fails to support both assumptions is windows 64 bit, we make a
+   * special workaround for it.
+   */
+#if defined (WIN32) && defined (_M_X64)
+  unsigned _int64 off; /* workaround for missing POSIX compliance */
+#else
+  unsigned long off;
+#endif
+  unsigned int hval;
+  int lit;
+
+  if (!in_len || !out_len)
+    return 0;
+
+#if INIT_HTAB
+  memset (htab, 0, sizeof (htab));
+# if 0
+  for (hslot = htab; hslot < htab + HSIZE; hslot++)
+    *hslot++ = ip;
+# endif
+#endif
+
+  lit = 0; op++; /* start run */
+
+  hval = FRST (ip);
+  while (ip < in_end - 2)
+    {
+      hval = NEXT (hval, ip);
+      hslot = htab + IDX (hval);
+      ref = *hslot; *hslot = ip;
+
+      if (1
+#if INIT_HTAB
+          && ref < ip /* the next test will actually take care of this, but this is faster */
+#endif
+          && (off = ip - ref - 1) < MAX_OFF
+          && ip + 4 < in_end
+          && ref > (u8 *)in_data
+#if STRICT_ALIGN
+          && ref[0] == ip[0]
+          && ref[1] == ip[1]
+          && ref[2] == ip[2]
+#else
+          && *(u16 *)ref == *(u16 *)ip
+          && ref[2] == ip[2]
+#endif
+        )
+        {
+          /* match found at *ref++ */
+          unsigned int len = 2;
+          unsigned int maxlen = in_end - ip - len;
+          maxlen = maxlen > MAX_REF ? MAX_REF : maxlen;
+
+          if (expect_false (op + 3 + 1 >= out_end)) /* first a faster conservative test */
+            if (op - !lit + 3 + 1 >= out_end) /* second the exact but rare test */
+              return 0;
+
+          op [- lit - 1] = lit - 1; /* stop run */
+          op -= !lit; /* undo run if length is zero */
+
+          for (;;)
+            {
+              if (expect_true (maxlen > 16))
+                {
+                  len++; if (ref [len] != ip [len]) break;
+                  len++; if (ref [len] != ip [len]) break;
+                  len++; if (ref [len] != ip [len]) break;
+                  len++; if (ref [len] != ip [len]) break;
+
+                  len++; if (ref [len] != ip [len]) break;
+                  len++; if (ref [len] != ip [len]) break;
+                  len++; if (ref [len] != ip [len]) break;
+                  len++; if (ref [len] != ip [len]) break;
+
+                  len++; if (ref [len] != ip [len]) break;
+                  len++; if (ref [len] != ip [len]) break;
+                  len++; if (ref [len] != ip [len]) break;
+                  len++; if (ref [len] != ip [len]) break;
+
+                  len++; if (ref [len] != ip [len]) break;
+                  len++; if (ref [len] != ip [len]) break;
+                  len++; if (ref [len] != ip [len]) break;
+                  len++; if (ref [len] != ip [len]) break;
+                }
+
+              do
+                len++;
+              while (len < maxlen && ref[len] == ip[len]);
+
+              break;
+            }
+
+          len -= 2; /* len is now #octets - 1 */
+          ip++;
+
+          if (len < 7)
+            {
+              *op++ = (off >> 8) + (len << 5);
+            }
+          else
+            {
+              *op++ = (off >> 8) + (  7 << 5);
+              *op++ = len - 7;
+            }
+
+          *op++ = off;
+          lit = 0; op++; /* start run */
+
+          ip += len + 1;
+
+          if (expect_false (ip >= in_end - 2))
+            break;
+
+#if ULTRA_FAST || VERY_FAST
+          --ip;
+# if VERY_FAST && !ULTRA_FAST
+          --ip;
+# endif
+          hval = FRST (ip);
+
+          hval = NEXT (hval, ip);
+          htab[IDX (hval)] = ip;
+          ip++;
+
+# if VERY_FAST && !ULTRA_FAST
+          hval = NEXT (hval, ip);
+          htab[IDX (hval)] = ip;
+          ip++;
+# endif
+#else
+          ip -= len + 1;
+
+          do
+            {
+              hval = NEXT (hval, ip);
+              htab[IDX (hval)] = ip;
+              ip++;
+            }
+          while (len--);
+#endif
+        }
+      else
+        {
+          /* one more literal byte we must copy */
+          if (expect_false (op >= out_end))
+            return 0;
+
+          lit++; *op++ = *ip++;
+
+          if (expect_false (lit == MAX_LIT))
+            {
+              op [- lit - 1] = lit - 1; /* stop run */
+              lit = 0; op++; /* start run */
+            }
+        }
+    }
+
+  if (op + 3 > out_end) /* at most 3 bytes can be missing here */
+    return 0;
+
+  while (ip < in_end)
+    {
+      lit++; *op++ = *ip++;
+
+      if (expect_false (lit == MAX_LIT))
+        {
+          op [- lit - 1] = lit - 1; /* stop run */
+          lit = 0; op++; /* start run */
+        }
+    }
+
+  op [- lit - 1] = lit - 1; /* end run */
+  op -= !lit; /* undo run if length is zero */
+
+  return op - (u8 *)out_data;
+}
+
diff --git a/lzf/lzf/lzf_d.c b/lzf/lzf/lzf_d.c
new file mode 100644
index 0000000..2e2eeda
--- /dev/null
+++ b/lzf/lzf/lzf_d.c
@@ -0,0 +1,154 @@
+/*
+ * Copyright (c) 2000-2007 Marc Alexander Lehmann <schmorp at schmorp.de>
+ * 
+ * Redistribution and use in source and binary forms, with or without modifica-
+ * tion, are permitted provided that the following conditions are met:
+ * 
+ *   1.  Redistributions of source code must retain the above copyright notice,
+ *       this list of conditions and the following disclaimer.
+ * 
+ *   2.  Redistributions in binary form must reproduce the above copyright
+ *       notice, this list of conditions and the following disclaimer in the
+ *       documentation and/or other materials provided with the distribution.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MER-
+ * CHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO
+ * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPE-
+ * CIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+ * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTH-
+ * ERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * the GNU General Public License ("GPL") version 2 or any later version,
+ * in which case the provisions of the GPL are applicable instead of
+ * the above. If you wish to allow the use of your version of this file
+ * only under the terms of the GPL and not to allow others to use your
+ * version of this file under the BSD license, indicate your decision
+ * by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL. If you do not delete the
+ * provisions above, a recipient may use your version of this file under
+ * either the BSD or the GPL.
+ */
+
+#include "lzfP.h"
+
+#if AVOID_ERRNO
+# define SET_ERRNO(n)
+#else
+# include <errno.h>
+# define SET_ERRNO(n) errno = (n)
+#endif
+
+/* ASM is slower than C in HDF5 tests -- A.C. 2/5/09
+#ifndef __STRICT_ANSI__
+#ifndef H5PY_DISABLE_LZF_ASM
+#if (__i386 || __amd64) && __GNUC__ >= 3
+# define lzf_movsb(dst, src, len)                \
+   asm ("rep movsb"                              \
+        : "=D" (dst), "=S" (src), "=c" (len)     \
+        :  "0" (dst),  "1" (src),  "2" (len));
+#endif
+#endif
+#endif
+*/
+
+unsigned int 
+lzf_decompress (const void *const in_data,  unsigned int in_len,
+                void             *out_data, unsigned int out_len)
+{
+  u8 const *ip = (const u8 *)in_data;
+  u8       *op = (u8 *)out_data;
+  u8 const *const in_end  = ip + in_len;
+  u8       *const out_end = op + out_len;
+
+  do
+    {
+      unsigned int ctrl = *ip++;
+
+      if (ctrl < (1 << 5)) /* literal run */
+        {
+          ctrl++;
+
+          if (op + ctrl > out_end)
+            {
+              SET_ERRNO (E2BIG);
+              return 0;
+            }
+
+#if CHECK_INPUT
+          if (ip + ctrl > in_end)
+            {
+              SET_ERRNO (EINVAL);
+              return 0;
+            }
+#endif
+
+#ifdef lzf_movsb
+          lzf_movsb (op, ip, ctrl);
+#else
+          do
+            *op++ = *ip++;
+          while (--ctrl);
+#endif
+        }
+      else /* back reference */
+        {
+          unsigned int len = ctrl >> 5;
+
+          u8 *ref = op - ((ctrl & 0x1f) << 8) - 1;
+
+#if CHECK_INPUT
+          if (ip >= in_end)
+            {
+              SET_ERRNO (EINVAL);
+              return 0;
+            }
+#endif
+          if (len == 7)
+            {
+              len += *ip++;
+#if CHECK_INPUT
+              if (ip >= in_end)
+                {
+                  SET_ERRNO (EINVAL);
+                  return 0;
+                }
+#endif
+            }
+
+          ref -= *ip++;
+
+          if (op + len + 2 > out_end)
+            {
+              SET_ERRNO (E2BIG);
+              return 0;
+            }
+
+          if (ref < (u8 *)out_data)
+            {
+              SET_ERRNO (EINVAL);
+              return 0;
+            }
+
+#ifdef lzf_movsb
+          len += 2;
+          lzf_movsb (op, ref, len);
+#else
+          *op++ = *ref++;
+          *op++ = *ref++;
+
+          do
+            *op++ = *ref++;
+          while (--len);
+#endif
+        }
+    }
+  while (ip < in_end);
+
+  return op - (u8 *)out_data;
+}
+
diff --git a/lzf/lzf_filter.c b/lzf/lzf_filter.c
new file mode 100644
index 0000000..c6dd4b0
--- /dev/null
+++ b/lzf/lzf_filter.c
@@ -0,0 +1,261 @@
+/***** Preamble block *********************************************************
+* 
+* This file is part of h5py, a low-level Python interface to the HDF5 library.
+* 
+* Copyright (C) 2008 Andrew Collette
+* http://h5py.alfven.org
+* License: BSD  (See LICENSE.txt for full license)
+* 
+* $Date$
+* 
+****** End preamble block ****************************************************/
+
+/*
+    Implements an LZF filter module for HDF5, using the BSD-licensed library
+    by Marc Alexander Lehmann (http://www.goof.com/pcg/marc/liblzf.html).
+
+    No Python-specific code is used.  The filter behaves like the DEFLATE
+    filter, in that it is called for every type and space, and returns 0
+    if the data cannot be compressed.
+
+    The only public function is (int) register_lzf(void), which passes on
+    the result from H5Zregister.
+*/
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <errno.h>
+#include "hdf5.h"
+#include "lzf/lzf.h"
+#include "lzf_filter.h"
+
+/* Our own versions of H5Epush_sim, as it changed in 1.8 */
+#if H5_VERS_MAJOR == 1 && H5_VERS_MINOR < 7
+
+#define PUSH_ERR(func, minor, str)  H5Epush(__FILE__, func, __LINE__, H5E_PLINE, minor, str)
+#define H5PY_GET_FILTER H5Pget_filter_by_id
+
+#else
+
+#define PUSH_ERR(func, minor, str)  H5Epush1(__FILE__, func, __LINE__, H5E_PLINE, minor, str)
+#define H5PY_GET_FILTER(a,b,c,d,e,f,g) H5Pget_filter_by_id2(a,b,c,d,e,f,g,NULL)
+
+#endif
+
+/*  Deal with the mutiple definitions for H5Z_class_t.
+    Note: Only HDF5 1.6 and 1.8 are supported.
+
+    (1) The old class should always be used for HDF5 1.6
+    (2) The new class should always be used for HDF5 1.8 < 1.8.3
+    (3) The old class should be used for HDF5 1.8 >= 1.8.3 only if the
+        macro H5_USE_16_API is set
+*/
+
+#if H5_VERS_MAJOR == 1 && H5_VERS_MINOR == 8 && (H5_VERS_RELEASE < 3 || !H5_USE_16_API)
+#define H5PY_H5Z_NEWCLS 1
+#else
+#define H5PY_H5Z_NEWCLS 0   
+#endif
+
+size_t lzf_filter(unsigned flags, size_t cd_nelmts,
+		    const unsigned cd_values[], size_t nbytes,
+		    size_t *buf_size, void **buf);
+
+herr_t lzf_set_local(hid_t dcpl, hid_t type, hid_t space);
+
+
+/* Try to register the filter, passing on the HDF5 return value */
+int register_lzf(void){
+
+    int retval;
+
+#if H5PY_H5Z_NEWCLS
+    H5Z_class_t filter_class = {
+        H5Z_CLASS_T_VERS,
+        (H5Z_filter_t)(H5PY_FILTER_LZF),
+        1, 1,
+        "lzf",
+        NULL,
+        (H5Z_set_local_func_t)(lzf_set_local),
+        (H5Z_func_t)(lzf_filter)
+    };
+#else
+    H5Z_class_t filter_class = {
+        (H5Z_filter_t)(H5PY_FILTER_LZF),
+        "lzf",
+        NULL,
+        (H5Z_set_local_func_t)(lzf_set_local),
+        (H5Z_func_t)(lzf_filter)
+    };
+#endif
+
+    retval = H5Zregister(&filter_class);
+    if(retval<0){
+        PUSH_ERR("register_lzf", H5E_CANTREGISTER, "Can't register LZF filter");
+    }
+    return retval;
+}
+
+/*  Filter setup.  Records the following inside the DCPL:
+
+    1.  If version information is not present, set slots 0 and 1 to the filter
+        revision and LZF API version, respectively.
+
+    2. Compute the chunk size in bytes and store it in slot 2.
+*/
+herr_t lzf_set_local(hid_t dcpl, hid_t type, hid_t space){
+
+    int ndims;
+    int i;
+    herr_t r;
+
+    unsigned int bufsize;
+    hsize_t chunkdims[32];
+
+    unsigned int flags;
+    size_t nelements = 8;
+    unsigned values[] = {0,0,0,0,0,0,0,0};
+
+    r = H5PY_GET_FILTER(dcpl, H5PY_FILTER_LZF, &flags, &nelements, values, 0, NULL);
+    if(r<0) return -1;
+
+    if(nelements < 3) nelements = 3;  /* First 3 slots reserved.  If any higher
+                                      slots are used, preserve the contents. */
+
+    /* It seems the H5Z_FLAG_REVERSE flag doesn't work here, so we have to be
+       careful not to clobber any existing version info */
+    if(values[0]==0) values[0] = H5PY_FILTER_LZF_VERSION;
+    if(values[1]==0) values[1] = LZF_VERSION;
+
+    ndims = H5Pget_chunk(dcpl, 32, chunkdims);
+    if(ndims<0) return -1;
+    if(ndims>32){
+        PUSH_ERR("lzf_set_local", H5E_CALLBACK, "Chunk rank exceeds limit");
+        return -1;
+    }
+
+    bufsize = H5Tget_size(type);
+    if(bufsize==0) return -1;
+
+    for(i=0;i<ndims;i++){
+        bufsize *= chunkdims[i];
+    }
+
+    values[2] = bufsize;
+
+#ifdef H5PY_LZF_DEBUG
+    fprintf(stderr, "LZF: Computed buffer size %d\n", bufsize);
+#endif
+
+    r = H5Pmodify_filter(dcpl, H5PY_FILTER_LZF, flags, nelements, values);
+    if(r<0) return -1;
+
+    return 1;
+}
+
+
+/* The filter function */
+size_t lzf_filter(unsigned flags, size_t cd_nelmts,
+		    const unsigned cd_values[], size_t nbytes,
+		    size_t *buf_size, void **buf){
+
+    void* outbuf = NULL;
+    size_t outbuf_size = 0;
+
+    unsigned int status = 0;        /* Return code from lzf routines */
+
+    /* We're compressing */
+    if(!(flags & H5Z_FLAG_REVERSE)){
+
+        /* Allocate an output buffer exactly as long as the input data; if
+           the result is larger, we simply return 0.  The filter is flagged
+           as optional, so HDF5 marks the chunk as uncompressed and
+           proceeds.
+        */
+
+        outbuf_size = (*buf_size);
+        outbuf = malloc(outbuf_size);
+
+        if(outbuf == NULL){
+            PUSH_ERR("lzf_filter", H5E_CALLBACK, "Can't allocate compression buffer");
+            goto failed;
+        }
+
+        status = lzf_compress(*buf, nbytes, outbuf, outbuf_size);
+
+    /* We're decompressing */
+    } else {
+
+        if((cd_nelmts>=3)&&(cd_values[2]!=0)){
+            outbuf_size = cd_values[2];   /* Precomputed buffer guess */
+        }else{
+            outbuf_size = (*buf_size);
+        }
+
+#ifdef H5PY_LZF_DEBUG
+        fprintf(stderr, "Decompress %d chunk w/buffer %d\n", nbytes, outbuf_size);
+#endif
+
+        while(!status){
+            
+            free(outbuf);
+            outbuf = malloc(outbuf_size);
+
+            if(outbuf == NULL){
+                PUSH_ERR("lzf_filter", H5E_CALLBACK, "Can't allocate decompression buffer");
+                goto failed;
+            }
+
+            status = lzf_decompress(*buf, nbytes, outbuf, outbuf_size);
+
+            if(!status){    /* compression failed */
+
+                if(errno == E2BIG){
+                    outbuf_size += (*buf_size);
+#ifdef H5PY_LZF_DEBUG
+                    fprintf(stderr, "    Too small: %d\n", outbuf_size);
+#endif
+                } else if(errno == EINVAL) {
+
+                    PUSH_ERR("lzf_filter", H5E_CALLBACK, "Invalid data for LZF decompression");
+                    goto failed;
+
+                } else {
+                    PUSH_ERR("lzf_filter", H5E_CALLBACK, "Unknown LZF decompression error");
+                    goto failed;
+                }
+
+            } /* if !status */
+
+        } /* while !status */
+
+    } /* compressing vs decompressing */
+
+    if(status != 0){
+
+        free(*buf);
+        *buf = outbuf;
+        *buf_size = outbuf_size;
+
+        return status;  /* Size of compressed/decompressed data */
+    } 
+
+    failed:
+
+    free(outbuf);
+    return 0;
+
+} /* End filter function */
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/lzf/lzf_filter.h b/lzf/lzf_filter.h
new file mode 100644
index 0000000..27dff83
--- /dev/null
+++ b/lzf/lzf_filter.h
@@ -0,0 +1,38 @@
+/***** Preamble block *********************************************************
+* 
+* This file is part of h5py, a low-level Python interface to the HDF5 library.
+* 
+* Copyright (C) 2008 Andrew Collette
+* http://h5py.alfven.org
+* License: BSD  (See LICENSE.txt for full license)
+* 
+* $Date$
+* 
+****** End preamble block ****************************************************/
+
+
+#ifndef H5PY_LZF_H
+#define H5PY_LZF_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Filter revision number, starting at 1 */
+#define H5PY_FILTER_LZF_VERSION 4
+
+/* Filter ID registered with the HDF Group as of 2/6/09.  For maintenance
+   requests, contact the filter author directly. */
+#define H5PY_FILTER_LZF 32000
+
+/* Register the filter with the library. Returns a negative value on failure, 
+   and a non-negative value on success.
+*/
+int register_lzf(void);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
diff --git a/setup.py b/setup.py
new file mode 100755
index 0000000..e6e1ed7
--- /dev/null
+++ b/setup.py
@@ -0,0 +1,285 @@
+#!/usr/bin/env python
+
+from distutils.core import setup
+from distutils.extension import Extension
+from distutils.cmd import Command
+from distutils.version import LooseVersion
+import warnings
+import sys, os
+import os.path as op
+from functools import reduce
+import numpy
+
+import configure   # Sticky-options configuration and version auto-detect
+
+VERSION = '2.2.1'
+
+
+# --- Autodetect Cython -------------------------------------------------------
+
+HAVE_CYTHON = False
+try:
+    import Cython.Compiler.Version
+    s = LooseVersion(Cython.Compiler.Version.version)
+    if s.version[0:2] < [0, 13]:
+        warnings.warn("Cython version %s too old; not used" % s.vstring)
+        raise ImportError
+    from Cython.Distutils import build_ext
+    SUFFIX = '.pyx'
+    HAVE_CYTHON = True
+except ImportError:
+    from distutils.command.build_ext import build_ext
+    SUFFIX = '.c'
+
+if sys.version_info[0] >= 3:
+    # Shamelessly stolen from Cython 0.14
+    import lib2to3.refactor
+    from distutils.command.build_py \
+         import build_py_2to3 as build_py
+else:
+    from distutils.command.build_py import build_py
+
+
+# --- Support functions and "super-option" configuring ------------------------
+
+def localpath(*args):
+    return op.abspath(reduce(op.join, (op.dirname(__file__),)+args))
+
+def configure_cython(settings, modules):
+    """ Set up the Cython build environment.
+
+    If configuration settings have changed since the last time Cython was
+    run, re-write the file "config.pxi".  Also bump the utime of all the
+    Cython modules to trigger a rebuild.
+    """
+
+    try:
+        f = open(localpath('h5py/config.pxi'),'rb')
+        oldcontents = f.read()
+    except IOError:
+        oldcontents = b""
+    else:
+        f.close()
+    
+    newcontents = """\
+# This file is automatically generated by the h5py setup script.  Don't modify.
+
+DEF MPI = %(mpi)s
+DEF HDF5_VERSION = %(hdf5_version)s
+"""
+    newcontents %= settings
+    newcontents = newcontents.encode('utf-8')
+
+    # Only reconfigure and rebuild if settings have actually changed.
+    if newcontents != oldcontents:
+        with open(localpath('h5py/config.pxi'),'wb') as f:
+            f.write(newcontents)
+        for m in MODULES:
+            os.utime(localpath('h5py',m+'.pyx'),None)
+
+
+# --- Pre-compiling API generation --------------------------------------------
+
+if not op.isfile(localpath('h5py','defs.pyx')):
+    if not HAVE_CYTHON:
+        raise ValueError("A modern version of Cython is required to build from source")
+    import api_gen
+    api_gen.run()
+
+
+# --- Determine configuration settings ----------------------------------------
+
+settings = configure.scrape_eargs()          # lowest priority
+settings.update(configure.scrape_cargs())    # highest priority
+
+HDF5 = settings.get('hdf5')
+HDF5_VERSION = settings.get('hdf5_version')
+
+MPI = settings.setdefault('mpi', False)
+if MPI:
+    if not HAVE_CYTHON:
+        raise ValueError("Cython is required to compile h5py in MPI mode")
+    try:
+        import mpi4py
+    except ImportError:
+        raise ImportError("mpi4py is required to compile h5py in MPI mode")
+
+
+# --- Configure Cython and create extensions ----------------------------------
+
+if sys.platform.startswith('win'):
+    COMPILER_SETTINGS = {
+        'libraries'     : ['hdf5dll18','hdf5_hldll'],
+        'include_dirs'  : [numpy.get_include(),  localpath('lzf'),
+                           localpath('win_include')],
+        'library_dirs'  : [],
+        'define_macros' : [('H5_USE_16_API', None), ('_HDF5USEDLL_', None)]
+    }
+    if HDF5 is not None:
+        COMPILER_SETTINGS['include_dirs'] += [op.join(HDF5, 'include')]
+        COMPILER_SETTINGS['library_dirs'] += [op.join(HDF5, 'dll')]
+else:
+    COMPILER_SETTINGS = {
+       'libraries'      : ['hdf5', 'hdf5_hl'],
+       'include_dirs'   : [numpy.get_include(), localpath('lzf')],
+       'library_dirs'   : [],
+       'define_macros'  : [('H5_USE_16_API', None)]
+    }
+    if HDF5 is not None:
+        COMPILER_SETTINGS['include_dirs'] += [op.join(HDF5, 'include')]
+        COMPILER_SETTINGS['library_dirs'] += [op.join(HDF5, 'lib'), op.join(HDF5, 'lib64')]
+    elif sys.platform == 'darwin':
+        # putting here both macports and homebrew paths will generate
+        # "ld: warning: dir not found" at the linking phase 
+        COMPILER_SETTINGS['include_dirs'] += ['/opt/local/include'] # macports
+        COMPILER_SETTINGS['library_dirs'] += ['/opt/local/lib']     # macports
+        COMPILER_SETTINGS['include_dirs'] += ['/usr/local/include'] # homebrew
+        COMPILER_SETTINGS['library_dirs'] += ['/usr/local/lib']     # homebrew
+    elif sys.platform.startswith('freebsd'):
+        COMPILER_SETTINGS['include_dirs'] += ['/usr/local/include'] # homebrew
+        COMPILER_SETTINGS['library_dirs'] += ['/usr/local/lib']     # homebrew
+    if MPI:
+        COMPILER_SETTINGS['include_dirs'] += [mpi4py.get_include()]
+    COMPILER_SETTINGS['runtime_library_dirs'] = [op.abspath(x) for x in COMPILER_SETTINGS['library_dirs']]
+
+MODULES =  ['defs','_errors','_objects','_proxy', 'h5fd', 'h5z',
+            'h5','h5i','h5r','utils',
+            '_conv', 'h5t','h5s',
+            'h5p',
+            'h5d', 'h5a', 'h5f', 'h5g',
+            'h5l', 'h5o',
+            'h5ds', 'h5ac']
+
+# No Cython, no point in configuring
+if HAVE_CYTHON:     
+
+    # Don't autodetect if version is manually given
+    if HDF5_VERSION is None:    
+        HDF5_VERSION = configure.autodetect(COMPILER_SETTINGS['library_dirs'])
+
+    if HDF5_VERSION is None:
+        HDF5_VERSION = (1, 8, 4)
+        configure.printerr("HDF5 autodetection failed; building for 1.8.4+")
+    
+    settings['hdf5_version'] = HDF5_VERSION
+    configure_cython(settings, MODULES)
+
+else:
+    configure.printerr("Cython not present; building for HDF5 1.8.4+")
+
+EXTRA_SRC = {'h5z': [ localpath("lzf/lzf_filter.c"),
+                      localpath("lzf/lzf/lzf_c.c"),
+                      localpath("lzf/lzf/lzf_d.c")]}
+
+def make_extension(module):
+    sources = [op.join('h5py', module+SUFFIX)] + EXTRA_SRC.get(module, [])
+    return Extension('h5py.'+module, sources, **COMPILER_SETTINGS)
+
+EXTENSIONS = [make_extension(m) for m in MODULES]
+
+
+# --- Custom distutils commands -----------------------------------------------
+
+class test(Command):
+
+    """Run the test suite."""
+
+    description = "Run the test suite"
+
+    user_options = [('verbosity=', 'V', 'set test report verbosity')]
+
+    def initialize_options(self):
+        self.verbosity = 0
+
+    def finalize_options(self):
+        try:
+            self.verbosity = int(self.verbosity)
+        except ValueError:
+            raise ValueError('verbosity must be an integer.')
+
+    def run(self):
+        import sys
+        py_version = sys.version_info[:2]
+        if py_version == (2,7) or py_version >= (3,2):
+            import unittest
+        else:
+            try:
+                import unittest2 as unittest
+            except ImportError:
+                raise ImportError(
+                    "unittest2 is required to run tests with python-%d.%d"
+                    % py_version
+                    )
+        buildobj = self.distribution.get_command_obj('build')
+        buildobj.run()
+        oldpath = sys.path
+        try:
+            sys.path = [op.abspath(buildobj.build_lib)] + oldpath
+            suite = unittest.TestLoader().discover(op.join(buildobj.build_lib,'h5py'))
+            result = unittest.TextTestRunner(verbosity=self.verbosity+1).run(suite)
+            if not result.wasSuccessful():
+                sys.exit(1)
+        finally:
+            sys.path = oldpath
+
+
+
+# --- Distutils setup and metadata --------------------------------------------
+
+cls_txt = \
+"""
+Development Status :: 5 - Production/Stable
+Intended Audience :: Developers
+Intended Audience :: Information Technology
+Intended Audience :: Science/Research
+License :: OSI Approved :: BSD License
+Programming Language :: Python
+Topic :: Scientific/Engineering
+Topic :: Database
+Topic :: Software Development :: Libraries :: Python Modules
+Operating System :: Unix
+Operating System :: POSIX :: Linux
+Operating System :: MacOS :: MacOS X
+Operating System :: Microsoft :: Windows
+"""
+
+short_desc = "Read and write HDF5 files from Python"
+
+long_desc = \
+"""
+The h5py package provides both a high- and low-level interface to the HDF5
+library from Python. The low-level interface is intended to be a complete
+wrapping of the HDF5 API, while the high-level component supports  access to
+HDF5 files, datasets and groups using established Python and NumPy concepts.
+
+A strong emphasis on automatic conversion between Python (Numpy) datatypes and
+data structures and their HDF5 equivalents vastly simplifies the process of
+reading and writing data from Python.
+
+Supports HDF5 versions 1.8.3 and higher.  On Windows, HDF5 is included with
+the installer.
+"""
+
+if os.name == 'nt':
+    package_data = {'h5py': ['*.pyx', '*.dll']}
+else:
+    package_data = {'h5py': ['*.pyx']}
+
+setup(
+  name = 'h5py',
+  version = VERSION,
+  description = short_desc,
+  long_description = long_desc,
+  classifiers = [x for x in cls_txt.split("\n") if x],
+  author = 'Andrew Collette',
+  author_email = 'andrew dot collette at gmail dot com',
+  maintainer = 'Andrew Collette',
+  maintainer_email = 'andrew dot collette at gmail dot com',
+  url = 'http://www.h5py.org',
+  download_url = 'http://code.google.com/p/h5py/downloads/list',
+  packages = ['h5py', 'h5py._hl', 'h5py._hl.tests', 'h5py.lowtest'],
+  package_data = package_data,
+  ext_modules = EXTENSIONS,
+  requires = ['numpy (>=1.0.1)'],
+  cmdclass = {'build_ext': build_ext, 'test': test, 'build_py':build_py}
+)
diff --git a/win_include/stdint.h b/win_include/stdint.h
new file mode 100644
index 0000000..e032ff1
--- /dev/null
+++ b/win_include/stdint.h
@@ -0,0 +1,232 @@
+// ISO C9x  compliant stdint.h for Microsoft Visual Studio
+// Based on ISO/IEC 9899:TC2 Committee draft (May 6, 2005) WG14/N1124 
+// 
+//  Copyright (c) 2006-2008 Alexander Chemeris
+// 
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+// 
+//   1. Redistributions of source code must retain the above copyright notice,
+//      this list of conditions and the following disclaimer.
+// 
+//   2. Redistributions in binary form must reproduce the above copyright
+//      notice, this list of conditions and the following disclaimer in the
+//      documentation and/or other materials provided with the distribution.
+// 
+//   3. The name of the author may be used to endorse or promote products
+//      derived from this software without specific prior written permission.
+// 
+// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+// EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
+// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+// 
+///////////////////////////////////////////////////////////////////////////////
+
+#ifndef _MSC_VER // [
+#error "Use this header only with Microsoft Visual C++ compilers!"
+#endif // _MSC_VER ]
+
+#ifndef _MSC_STDINT_H_ // [
+#define _MSC_STDINT_H_
+
+#if _MSC_VER > 1000
+#pragma once
+#endif
+
+#include <limits.h>
+
+// For Visual Studio 6 in C++ mode wrap <wchar.h> include with 'extern "C++" {}'
+// or compiler give many errors like this:
+//   error C2733: second C linkage of overloaded function 'wmemchr' not allowed
+#if (_MSC_VER < 1300) && defined(__cplusplus)
+   extern "C++" {
+#endif 
+#     include <wchar.h>
+#if (_MSC_VER < 1300) && defined(__cplusplus)
+   }
+#endif
+
+// Define _W64 macros to mark types changing their size, like intptr_t.
+#ifndef _W64
+#  if !defined(__midl) && (defined(_X86_) || defined(_M_IX86)) && _MSC_VER >= 1300
+#     define _W64 __w64
+#  else
+#     define _W64
+#  endif
+#endif
+
+
+// 7.18.1 Integer types
+
+// 7.18.1.1 Exact-width integer types
+typedef __int8            int8_t;
+typedef __int16           int16_t;
+typedef __int32           int32_t;
+typedef __int64           int64_t;
+typedef unsigned __int8   uint8_t;
+typedef unsigned __int16  uint16_t;
+typedef unsigned __int32  uint32_t;
+typedef unsigned __int64  uint64_t;
+
+// 7.18.1.2 Minimum-width integer types
+typedef int8_t    int_least8_t;
+typedef int16_t   int_least16_t;
+typedef int32_t   int_least32_t;
+typedef int64_t   int_least64_t;
+typedef uint8_t   uint_least8_t;
+typedef uint16_t  uint_least16_t;
+typedef uint32_t  uint_least32_t;
+typedef uint64_t  uint_least64_t;
+
+// 7.18.1.3 Fastest minimum-width integer types
+typedef int8_t    int_fast8_t;
+typedef int16_t   int_fast16_t;
+typedef int32_t   int_fast32_t;
+typedef int64_t   int_fast64_t;
+typedef uint8_t   uint_fast8_t;
+typedef uint16_t  uint_fast16_t;
+typedef uint32_t  uint_fast32_t;
+typedef uint64_t  uint_fast64_t;
+
+// 7.18.1.4 Integer types capable of holding object pointers
+#ifdef _WIN64 // [
+   typedef __int64           intptr_t;
+   typedef unsigned __int64  uintptr_t;
+#else // _WIN64 ][
+   typedef _W64 int               intptr_t;
+   typedef _W64 unsigned int      uintptr_t;
+#endif // _WIN64 ]
+
+// 7.18.1.5 Greatest-width integer types
+typedef int64_t   intmax_t;
+typedef uint64_t  uintmax_t;
+
+
+// 7.18.2 Limits of specified-width integer types
+
+#if !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) // [   See footnote 220 at page 257 and footnote 221 at page 259
+
+// 7.18.2.1 Limits of exact-width integer types
+#define INT8_MIN     ((int8_t)_I8_MIN)
+#define INT8_MAX     _I8_MAX
+#define INT16_MIN    ((int16_t)_I16_MIN)
+#define INT16_MAX    _I16_MAX
+#define INT32_MIN    ((int32_t)_I32_MIN)
+#define INT32_MAX    _I32_MAX
+#define INT64_MIN    ((int64_t)_I64_MIN)
+#define INT64_MAX    _I64_MAX
+#define UINT8_MAX    _UI8_MAX
+#define UINT16_MAX   _UI16_MAX
+#define UINT32_MAX   _UI32_MAX
+#define UINT64_MAX   _UI64_MAX
+
+// 7.18.2.2 Limits of minimum-width integer types
+#define INT_LEAST8_MIN    INT8_MIN
+#define INT_LEAST8_MAX    INT8_MAX
+#define INT_LEAST16_MIN   INT16_MIN
+#define INT_LEAST16_MAX   INT16_MAX
+#define INT_LEAST32_MIN   INT32_MIN
+#define INT_LEAST32_MAX   INT32_MAX
+#define INT_LEAST64_MIN   INT64_MIN
+#define INT_LEAST64_MAX   INT64_MAX
+#define UINT_LEAST8_MAX   UINT8_MAX
+#define UINT_LEAST16_MAX  UINT16_MAX
+#define UINT_LEAST32_MAX  UINT32_MAX
+#define UINT_LEAST64_MAX  UINT64_MAX
+
+// 7.18.2.3 Limits of fastest minimum-width integer types
+#define INT_FAST8_MIN    INT8_MIN
+#define INT_FAST8_MAX    INT8_MAX
+#define INT_FAST16_MIN   INT16_MIN
+#define INT_FAST16_MAX   INT16_MAX
+#define INT_FAST32_MIN   INT32_MIN
+#define INT_FAST32_MAX   INT32_MAX
+#define INT_FAST64_MIN   INT64_MIN
+#define INT_FAST64_MAX   INT64_MAX
+#define UINT_FAST8_MAX   UINT8_MAX
+#define UINT_FAST16_MAX  UINT16_MAX
+#define UINT_FAST32_MAX  UINT32_MAX
+#define UINT_FAST64_MAX  UINT64_MAX
+
+// 7.18.2.4 Limits of integer types capable of holding object pointers
+#ifdef _WIN64 // [
+#  define INTPTR_MIN   INT64_MIN
+#  define INTPTR_MAX   INT64_MAX
+#  define UINTPTR_MAX  UINT64_MAX
+#else // _WIN64 ][
+#  define INTPTR_MIN   INT32_MIN
+#  define INTPTR_MAX   INT32_MAX
+#  define UINTPTR_MAX  UINT32_MAX
+#endif // _WIN64 ]
+
+// 7.18.2.5 Limits of greatest-width integer types
+#define INTMAX_MIN   INT64_MIN
+#define INTMAX_MAX   INT64_MAX
+#define UINTMAX_MAX  UINT64_MAX
+
+// 7.18.3 Limits of other integer types
+
+#ifdef _WIN64 // [
+#  define PTRDIFF_MIN  _I64_MIN
+#  define PTRDIFF_MAX  _I64_MAX
+#else  // _WIN64 ][
+#  define PTRDIFF_MIN  _I32_MIN
+#  define PTRDIFF_MAX  _I32_MAX
+#endif  // _WIN64 ]
+
+#define SIG_ATOMIC_MIN  INT_MIN
+#define SIG_ATOMIC_MAX  INT_MAX
+
+#ifndef SIZE_MAX // [
+#  ifdef _WIN64 // [
+#     define SIZE_MAX  _UI64_MAX
+#  else // _WIN64 ][
+#     define SIZE_MAX  _UI32_MAX
+#  endif // _WIN64 ]
+#endif // SIZE_MAX ]
+
+// WCHAR_MIN and WCHAR_MAX are also defined in <wchar.h>
+#ifndef WCHAR_MIN // [
+#  define WCHAR_MIN  0
+#endif  // WCHAR_MIN ]
+#ifndef WCHAR_MAX // [
+#  define WCHAR_MAX  _UI16_MAX
+#endif  // WCHAR_MAX ]
+
+#define WINT_MIN  0
+#define WINT_MAX  _UI16_MAX
+
+#endif // __STDC_LIMIT_MACROS ]
+
+
+// 7.18.4 Limits of other integer types
+
+#if !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) // [   See footnote 224 at page 260
+
+// 7.18.4.1 Macros for minimum-width integer constants
+
+#define INT8_C(val)  val##i8
+#define INT16_C(val) val##i16
+#define INT32_C(val) val##i32
+#define INT64_C(val) val##i64
+
+#define UINT8_C(val)  val##ui8
+#define UINT16_C(val) val##ui16
+#define UINT32_C(val) val##ui32
+#define UINT64_C(val) val##ui64
+
+// 7.18.4.2 Macros for greatest-width integer constants
+#define INTMAX_C   INT64_C
+#define UINTMAX_C  UINT64_C
+
+#endif // __STDC_CONSTANT_MACROS ]
+
+
+#endif // _MSC_STDINT_H_ ]
diff --git a/win_include/unistd.h b/win_include/unistd.h
new file mode 100644
index 0000000..e69de29

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/h5py.git



More information about the debian-science-commits mailing list